# 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 AssetResponse(Model):
    """AssetResponse.

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

    :param supplier:
    :type supplier: str
    :param manufacturer:
    :type manufacturer: str
    :param model_name:
    :type model_name: str
    :param location_notes:
    :type location_notes: str
    :param notes:
    :type notes: str
    :param generic_input:
    :type generic_input: str
    :param is_operator_view:
    :type is_operator_view: bool
    :param type:
    :type type: ~smartdiagnostics_sdk.models.AssetTypeChild
    :param category:
    :type category: ~smartdiagnostics_sdk.models.AssetCategoryChild
    :param size:
    :type size: ~smartdiagnostics_sdk.models.AssetSizeChild
    :param economics:
    :type economics: ~smartdiagnostics_sdk.models.AssetEconomicsChild
    :param running_speed:
    :type running_speed: ~smartdiagnostics_sdk.models.AssetRunningSpeedChild
    :param criticality:
    :type criticality: ~smartdiagnostics_sdk.models.AssetCriticalityChild
    :param drum_roll:
    :type drum_roll: ~smartdiagnostics_sdk.models.AssetDrumRollChild
    :param hierarchy:
    :type hierarchy: list[~smartdiagnostics_sdk.models.HierarchyChild]
    :param parent:
    :type parent: ~smartdiagnostics_sdk.models.ParentChild
    :param children:
    :type children: list[~smartdiagnostics_sdk.models.DescendantChild]
    :param tags:
    :type tags: list[~smartdiagnostics_sdk.models.TagChild]
    :param analytics_models:
    :type analytics_models:
     list[~smartdiagnostics_sdk.models.AnalyticsModelChild]
    :param id: Required.
    :type id: str
    :param name: Required.
    :type name: str
    :param abbreviation:
    :type abbreviation: str
    :param active: Required.
    :type active: bool
    :param is_paused: Required.
    :type is_paused: bool
    :param is_snoozed: Required.
    :type is_snoozed: bool
    :param created: Required.
    :type created: datetime
    :param corporation: Required.
    :type corporation: ~smartdiagnostics_sdk.models.CorporationChild
    :param location: Required.
    :type location: ~smartdiagnostics_sdk.models.LocationChild
    """

    _validation = {
        'id': {'required': True},
        'name': {'required': True},
        'active': {'required': True},
        'is_paused': {'required': True},
        'is_snoozed': {'required': True},
        'created': {'required': True},
        'corporation': {'required': True},
        'location': {'required': True},
    }

    _attribute_map = {
        'supplier': {'key': 'Supplier', 'type': 'str'},
        'manufacturer': {'key': 'Manufacturer', 'type': 'str'},
        'model_name': {'key': 'ModelName', 'type': 'str'},
        'location_notes': {'key': 'LocationNotes', 'type': 'str'},
        'notes': {'key': 'Notes', 'type': 'str'},
        'generic_input': {'key': 'GenericInput', 'type': 'str'},
        'is_operator_view': {'key': 'IsOperatorView', 'type': 'bool'},
        'type': {'key': 'Type', 'type': 'AssetTypeChild'},
        'category': {'key': 'Category', 'type': 'AssetCategoryChild'},
        'size': {'key': 'Size', 'type': 'AssetSizeChild'},
        'economics': {'key': 'Economics', 'type': 'AssetEconomicsChild'},
        'running_speed': {'key': 'RunningSpeed', 'type': 'AssetRunningSpeedChild'},
        'criticality': {'key': 'Criticality', 'type': 'AssetCriticalityChild'},
        'drum_roll': {'key': 'DrumRoll', 'type': 'AssetDrumRollChild'},
        'hierarchy': {'key': 'Hierarchy', 'type': '[HierarchyChild]'},
        'parent': {'key': 'Parent', 'type': 'ParentChild'},
        'children': {'key': 'Children', 'type': '[DescendantChild]'},
        'tags': {'key': 'Tags', 'type': '[TagChild]'},
        'analytics_models': {'key': 'AnalyticsModels', 'type': '[AnalyticsModelChild]'},
        'id': {'key': 'Id', 'type': 'str'},
        'name': {'key': 'Name', 'type': 'str'},
        'abbreviation': {'key': 'Abbreviation', 'type': 'str'},
        'active': {'key': 'Active', 'type': 'bool'},
        'is_paused': {'key': 'IsPaused', 'type': 'bool'},
        'is_snoozed': {'key': 'IsSnoozed', 'type': 'bool'},
        'created': {'key': 'Created', 'type': 'iso-8601'},
        'corporation': {'key': 'Corporation', 'type': 'CorporationChild'},
        'location': {'key': 'Location', 'type': 'LocationChild'},
    }

    def __init__(self, *, id: str, name: str, active: bool, is_paused: bool, is_snoozed: bool, created, corporation, location, supplier: str=None, manufacturer: str=None, model_name: str=None, location_notes: str=None, notes: str=None, generic_input: str=None, is_operator_view: bool=None, type=None, category=None, size=None, economics=None, running_speed=None, criticality=None, drum_roll=None, hierarchy=None, parent=None, children=None, tags=None, analytics_models=None, abbreviation: str=None, **kwargs) -> None:
        super(AssetResponse, self).__init__(**kwargs)
        self.supplier = supplier
        self.manufacturer = manufacturer
        self.model_name = model_name
        self.location_notes = location_notes
        self.notes = notes
        self.generic_input = generic_input
        self.is_operator_view = is_operator_view
        self.type = type
        self.category = category
        self.size = size
        self.economics = economics
        self.running_speed = running_speed
        self.criticality = criticality
        self.drum_roll = drum_roll
        self.hierarchy = hierarchy
        self.parent = parent
        self.children = children
        self.tags = tags
        self.analytics_models = analytics_models
        self.id = id
        self.name = name
        self.abbreviation = abbreviation
        self.active = active
        self.is_paused = is_paused
        self.is_snoozed = is_snoozed
        self.created = created
        self.corporation = corporation
        self.location = location
