# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.serialization import Model


class AdiEmsWebApiV2DtoProfileGlossaryItem(Model):
    """Represents a single entry for an item in a profile glossary.

    All required parameters must be populated in order to send to Azure.

    :param record_type: Required. A value representing a profile glossary
     entries record type. Possible values include: 'measurement', 'timepoint',
     'event', 'interval'
    :type record_type: str or ~emsapi.models.enum
    :param scope: Required. A value representing the scope of the item.
     Possible values include: 'default', 'eventSpecific', 'eventGlobal'
    :type scope: str or ~emsapi.models.enum
    :param item_id: Required. A unique integer ID for the item
    :type item_id: int
    :param event_type_id: The event type ID of the item - this is only
     available for valid event types
    :type event_type_id: int
    :param data_type: A value representing the data type of the entry.
     Possible values include: 'floatingPoint'
    :type data_type: str or ~emsapi.models.enum
    :param logical_id: Required. A unique ID defining the item's logical ID
    :type logical_id: str
    :param name: Required. The display name of the item
    :type name: str
    :param units: An optional unit describing how the type of data represented
     by the item
    :type units: str
    :param first_associated_item_type: The item type of the first associated
     item. Possible values include: 'measurement', 'timepoint', 'event',
     'interval'
    :type first_associated_item_type: str or ~emsapi.models.enum
    :param first_associated_item_scope: The scope of the first associated
     item. Possible values include: 'default', 'eventSpecific', 'eventGlobal'
    :type first_associated_item_scope: str or ~emsapi.models.enum
    :param first_associated_item_id: The item id of the first associated item
    :type first_associated_item_id: int
    :param second_associated_item_type: The item type of the second associated
     item. Possible values include: 'measurement', 'timepoint', 'event',
     'interval'
    :type second_associated_item_type: str or ~emsapi.models.enum
    :param second_associated_item_scope: The scope of the second associated
     item. Possible values include: 'default', 'eventSpecific', 'eventGlobal'
    :type second_associated_item_scope: str or ~emsapi.models.enum
    :param second_associated_item_id: The item id of the second associated
     item
    :type second_associated_item_id: int
    """

    _validation = {
        'record_type': {'required': True},
        'scope': {'required': True},
        'item_id': {'required': True},
        'logical_id': {'required': True},
        'name': {'required': True},
    }

    _attribute_map = {
        'record_type': {'key': 'recordType', 'type': 'str'},
        'scope': {'key': 'scope', 'type': 'str'},
        'item_id': {'key': 'itemId', 'type': 'int'},
        'event_type_id': {'key': 'eventTypeId', 'type': 'int'},
        'data_type': {'key': 'dataType', 'type': 'str'},
        'logical_id': {'key': 'logicalId', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'units': {'key': 'units', 'type': 'str'},
        'first_associated_item_type': {'key': 'firstAssociatedItemType', 'type': 'str'},
        'first_associated_item_scope': {'key': 'firstAssociatedItemScope', 'type': 'str'},
        'first_associated_item_id': {'key': 'firstAssociatedItemId', 'type': 'int'},
        'second_associated_item_type': {'key': 'secondAssociatedItemType', 'type': 'str'},
        'second_associated_item_scope': {'key': 'secondAssociatedItemScope', 'type': 'str'},
        'second_associated_item_id': {'key': 'secondAssociatedItemId', 'type': 'int'},
    }

    def __init__(self, *, record_type, scope, item_id: int, logical_id: str, name: str, event_type_id: int=None, data_type=None, units: str=None, first_associated_item_type=None, first_associated_item_scope=None, first_associated_item_id: int=None, second_associated_item_type=None, second_associated_item_scope=None, second_associated_item_id: int=None, **kwargs) -> None:
        super(AdiEmsWebApiV2DtoProfileGlossaryItem, self).__init__(**kwargs)
        self.record_type = record_type
        self.scope = scope
        self.item_id = item_id
        self.event_type_id = event_type_id
        self.data_type = data_type
        self.logical_id = logical_id
        self.name = name
        self.units = units
        self.first_associated_item_type = first_associated_item_type
        self.first_associated_item_scope = first_associated_item_scope
        self.first_associated_item_id = first_associated_item_id
        self.second_associated_item_type = second_associated_item_type
        self.second_associated_item_scope = second_associated_item_scope
        self.second_associated_item_id = second_associated_item_id
