# 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 ValueModel(Model):
    """Represents a singular point value.
    Point values can be physical values from a sensor or controller, internal
    properties such as a software version, or any other value an implementing
    server decides to expose.

    :param name: Name of the Value.
    :type name: str
    :param description: Optional description of the Value.
    :type description: str
    :param type: Implied type of the Values value property. Possible values
     include: 'DateTime', 'Boolean', 'String', 'Double', 'Long', 'Integer',
     'Duration'
    :type type: str or ~ewsrestgatewayswagger.models.enum
    :param writeable: Set restrictions for the Value. Possible values include:
     'ReadOnly', 'Writeable'
    :type writeable: str or ~ewsrestgatewayswagger.models.enum
    :param forceable: Force restrictions for the Value. Possible values
     include: 'NotForceable', 'Forceable'
    :type forceable: str or ~ewsrestgatewayswagger.models.enum
    :param state: Validity of the Value. Possible values include: 'Good',
     'Uncertain', 'Forced', 'Offline', 'Error'
    :type state: str or ~ewsrestgatewayswagger.models.enum
    :param unit: Unit of the Value.
    :type unit: str
    :param value: Actual value of the Value.  This is always represented as a
     string regardless of Type.
    :type value: str
    :param parent_id: Id of the Container which the Value is found in.
    :type parent_id: str
    :param id: Case sensitive identifier for the entity.
    :type id: str
    """

    _attribute_map = {
        'name': {'key': 'Name', 'type': 'str'},
        'description': {'key': 'Description', 'type': 'str'},
        'type': {'key': 'Type', 'type': 'str'},
        'writeable': {'key': 'Writeable', 'type': 'str'},
        'forceable': {'key': 'Forceable', 'type': 'str'},
        'state': {'key': 'State', 'type': 'str'},
        'unit': {'key': 'Unit', 'type': 'str'},
        'value': {'key': 'Value', 'type': 'str'},
        'parent_id': {'key': 'ParentId', 'type': 'str'},
        'id': {'key': 'Id', 'type': 'str'},
    }

    def __init__(self, *, name: str=None, description: str=None, type=None, writeable=None, forceable=None, state=None, unit: str=None, value: str=None, parent_id: str=None, id: str=None, **kwargs) -> None:
        super(ValueModel, self).__init__(**kwargs)
        self.name = name
        self.description = description
        self.type = type
        self.writeable = writeable
        self.forceable = forceable
        self.state = state
        self.unit = unit
        self.value = value
        self.parent_id = parent_id
        self.id = id
