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

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

    :param id: Required.
    :type id: long
    :param serial_number: Required.
    :type serial_number: str
    :param nickname:
    :type nickname: str
    :param location:
    :type location: ~smartdiagnostics_sdk.models.LocationChild
    :param corporation:
    :type corporation: ~smartdiagnostics_sdk.models.CorporationChild
    :param last_status_update:
    :type last_status_update: datetime
    :param push_to_stage:
    :type push_to_stage: bool
    :param release_ring:
    :type release_ring: ~smartdiagnostics_sdk.models.ReleaseRingChild
    :param targeted_software_release:
    :type targeted_software_release:
     ~smartdiagnostics_sdk.models.TargetedSoftwareReleaseChild
    :param current_software_release:
    :type current_software_release:
     ~smartdiagnostics_sdk.models.CurrentSoftwareReleaseChild
    :param hardware_revision:
    :type hardware_revision:
     ~smartdiagnostics_sdk.models.HardwareRevisionChild
    :param receiver:
    :type receiver: ~smartdiagnostics_sdk.models.ReceiverChild
    :param last_data_update:
    :type last_data_update: datetime
    :param is_online:
    :type is_online: bool
    """

    _validation = {
        'id': {'required': True},
        'serial_number': {'required': True},
    }

    _attribute_map = {
        'id': {'key': 'Id', 'type': 'long'},
        'serial_number': {'key': 'SerialNumber', 'type': 'str'},
        'nickname': {'key': 'Nickname', 'type': 'str'},
        'location': {'key': 'Location', 'type': 'LocationChild'},
        'corporation': {'key': 'Corporation', 'type': 'CorporationChild'},
        'last_status_update': {'key': 'LastStatusUpdate', 'type': 'iso-8601'},
        'push_to_stage': {'key': 'PushToStage', 'type': 'bool'},
        'release_ring': {'key': 'ReleaseRing', 'type': 'ReleaseRingChild'},
        'targeted_software_release': {'key': 'TargetedSoftwareRelease', 'type': 'TargetedSoftwareReleaseChild'},
        'current_software_release': {'key': 'CurrentSoftwareRelease', 'type': 'CurrentSoftwareReleaseChild'},
        'hardware_revision': {'key': 'HardwareRevision', 'type': 'HardwareRevisionChild'},
        'receiver': {'key': 'Receiver', 'type': 'ReceiverChild'},
        'last_data_update': {'key': 'LastDataUpdate', 'type': 'iso-8601'},
        'is_online': {'key': 'IsOnline', 'type': 'bool'},
    }

    def __init__(self, *, id: int, serial_number: str, nickname: str=None, location=None, corporation=None, last_status_update=None, push_to_stage: bool=None, release_ring=None, targeted_software_release=None, current_software_release=None, hardware_revision=None, receiver=None, last_data_update=None, is_online: bool=None, **kwargs) -> None:
        super(BaseStationResponse, self).__init__(**kwargs)
        self.id = id
        self.serial_number = serial_number
        self.nickname = nickname
        self.location = location
        self.corporation = corporation
        self.last_status_update = last_status_update
        self.push_to_stage = push_to_stage
        self.release_ring = release_ring
        self.targeted_software_release = targeted_software_release
        self.current_software_release = current_software_release
        self.hardware_revision = hardware_revision
        self.receiver = receiver
        self.last_data_update = last_data_update
        self.is_online = is_online
