# coding: utf-8

"""
    Ketra Lighting API

    Control your Ketra lights  # noqa: E501

    The version of the OpenAPI document: 1.4.0
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from aioketraapi.configuration import Configuration


class InlineResponse2004Content(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    openapi_types = {
        'api_schema': 'int',
        'cpu_version': 'str',
        'radio_version': 'str',
        'serial_number': 'str',
        'model_name': 'str',
        'id': 'str',
        'installation_id': 'str',
        'installation_name': 'str',
        'network_id': 'str',
        'name': 'str',
        'ethernet_mac': 'str',
        'i_pv4_address': 'str',
        'ethernet_link_status': 'list[bool]',
        'up_time_seconds': 'int',
        'local_time': 'str',
        'utc_time': 'str',
        'last_reboot_reason': 'str',
        'has_internet_connectivity': 'bool',
        'last_time_update_was_successful': 'bool',
        'remote_connection_enabled': 'bool',
        'remote_connection_established': 'bool',
        'supports_zone_keypads': 'bool'
    }

    attribute_map = {
        'api_schema': 'APISchema',
        'cpu_version': 'CPUVersion',
        'radio_version': 'RadioVersion',
        'serial_number': 'SerialNumber',
        'model_name': 'ModelName',
        'id': 'Id',
        'installation_id': 'InstallationId',
        'installation_name': 'InstallationName',
        'network_id': 'NetworkId',
        'name': 'Name',
        'ethernet_mac': 'EthernetMAC',
        'i_pv4_address': 'IPv4Address',
        'ethernet_link_status': 'EthernetLinkStatus',
        'up_time_seconds': 'UpTimeSeconds',
        'local_time': 'LocalTime',
        'utc_time': 'UTCTime',
        'last_reboot_reason': 'LastRebootReason',
        'has_internet_connectivity': 'HasInternetConnectivity',
        'last_time_update_was_successful': 'LastTimeUpdateWasSuccessful',
        'remote_connection_enabled': 'RemoteConnectionEnabled',
        'remote_connection_established': 'RemoteConnectionEstablished',
        'supports_zone_keypads': 'SupportsZoneKeypads'
    }

    def __init__(self, api_schema=None, cpu_version=None, radio_version=None, serial_number=None, model_name=None, id=None, installation_id=None, installation_name=None, network_id=None, name=None, ethernet_mac=None, i_pv4_address=None, ethernet_link_status=None, up_time_seconds=None, local_time=None, utc_time=None, last_reboot_reason=None, has_internet_connectivity=None, last_time_update_was_successful=None, remote_connection_enabled=None, remote_connection_established=None, supports_zone_keypads=None, local_vars_configuration=None):  # noqa: E501
        """InlineResponse2004Content - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._api_schema = None
        self._cpu_version = None
        self._radio_version = None
        self._serial_number = None
        self._model_name = None
        self._id = None
        self._installation_id = None
        self._installation_name = None
        self._network_id = None
        self._name = None
        self._ethernet_mac = None
        self._i_pv4_address = None
        self._ethernet_link_status = None
        self._up_time_seconds = None
        self._local_time = None
        self._utc_time = None
        self._last_reboot_reason = None
        self._has_internet_connectivity = None
        self._last_time_update_was_successful = None
        self._remote_connection_enabled = None
        self._remote_connection_established = None
        self._supports_zone_keypads = None
        self.discriminator = None

        if api_schema is not None:
            self.api_schema = api_schema
        if cpu_version is not None:
            self.cpu_version = cpu_version
        if radio_version is not None:
            self.radio_version = radio_version
        if serial_number is not None:
            self.serial_number = serial_number
        if model_name is not None:
            self.model_name = model_name
        if id is not None:
            self.id = id
        if installation_id is not None:
            self.installation_id = installation_id
        if installation_name is not None:
            self.installation_name = installation_name
        if network_id is not None:
            self.network_id = network_id
        if name is not None:
            self.name = name
        if ethernet_mac is not None:
            self.ethernet_mac = ethernet_mac
        if i_pv4_address is not None:
            self.i_pv4_address = i_pv4_address
        if ethernet_link_status is not None:
            self.ethernet_link_status = ethernet_link_status
        if up_time_seconds is not None:
            self.up_time_seconds = up_time_seconds
        if local_time is not None:
            self.local_time = local_time
        if utc_time is not None:
            self.utc_time = utc_time
        if last_reboot_reason is not None:
            self.last_reboot_reason = last_reboot_reason
        if has_internet_connectivity is not None:
            self.has_internet_connectivity = has_internet_connectivity
        if last_time_update_was_successful is not None:
            self.last_time_update_was_successful = last_time_update_was_successful
        if remote_connection_enabled is not None:
            self.remote_connection_enabled = remote_connection_enabled
        if remote_connection_established is not None:
            self.remote_connection_established = remote_connection_established
        if supports_zone_keypads is not None:
            self.supports_zone_keypads = supports_zone_keypads

    @property
    def api_schema(self):
        """Gets the api_schema of this InlineResponse2004Content.  # noqa: E501

        API schema version supported by the hub's firmware  # noqa: E501

        :return: The api_schema of this InlineResponse2004Content.  # noqa: E501
        :rtype: int
        """
        return self._api_schema

    @api_schema.setter
    def api_schema(self, api_schema):
        """Sets the api_schema of this InlineResponse2004Content.

        API schema version supported by the hub's firmware  # noqa: E501

        :param api_schema: The api_schema of this InlineResponse2004Content.  # noqa: E501
        :type api_schema: int
        """

        self._api_schema = api_schema

    @property
    def cpu_version(self):
        """Gets the cpu_version of this InlineResponse2004Content.  # noqa: E501

        the version of the hub's CPU firmware  # noqa: E501

        :return: The cpu_version of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._cpu_version

    @cpu_version.setter
    def cpu_version(self, cpu_version):
        """Sets the cpu_version of this InlineResponse2004Content.

        the version of the hub's CPU firmware  # noqa: E501

        :param cpu_version: The cpu_version of this InlineResponse2004Content.  # noqa: E501
        :type cpu_version: str
        """

        self._cpu_version = cpu_version

    @property
    def radio_version(self):
        """Gets the radio_version of this InlineResponse2004Content.  # noqa: E501

        the version of the hub's radio firmware  # noqa: E501

        :return: The radio_version of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._radio_version

    @radio_version.setter
    def radio_version(self, radio_version):
        """Sets the radio_version of this InlineResponse2004Content.

        the version of the hub's radio firmware  # noqa: E501

        :param radio_version: The radio_version of this InlineResponse2004Content.  # noqa: E501
        :type radio_version: str
        """

        self._radio_version = radio_version

    @property
    def serial_number(self):
        """Gets the serial_number of this InlineResponse2004Content.  # noqa: E501

        the hub's serial number  # noqa: E501

        :return: The serial_number of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._serial_number

    @serial_number.setter
    def serial_number(self, serial_number):
        """Sets the serial_number of this InlineResponse2004Content.

        the hub's serial number  # noqa: E501

        :param serial_number: The serial_number of this InlineResponse2004Content.  # noqa: E501
        :type serial_number: str
        """

        self._serial_number = serial_number

    @property
    def model_name(self):
        """Gets the model_name of this InlineResponse2004Content.  # noqa: E501

        the model name of the hub  # noqa: E501

        :return: The model_name of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._model_name

    @model_name.setter
    def model_name(self, model_name):
        """Sets the model_name of this InlineResponse2004Content.

        the model name of the hub  # noqa: E501

        :param model_name: The model_name of this InlineResponse2004Content.  # noqa: E501
        :type model_name: str
        """

        self._model_name = model_name

    @property
    def id(self):
        """Gets the id of this InlineResponse2004Content.  # noqa: E501

        the unique identifier of the hub  # noqa: E501

        :return: The id of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this InlineResponse2004Content.

        the unique identifier of the hub  # noqa: E501

        :param id: The id of this InlineResponse2004Content.  # noqa: E501
        :type id: str
        """

        self._id = id

    @property
    def installation_id(self):
        """Gets the installation_id of this InlineResponse2004Content.  # noqa: E501

        the unique identifier of the hub's installation  # noqa: E501

        :return: The installation_id of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._installation_id

    @installation_id.setter
    def installation_id(self, installation_id):
        """Sets the installation_id of this InlineResponse2004Content.

        the unique identifier of the hub's installation  # noqa: E501

        :param installation_id: The installation_id of this InlineResponse2004Content.  # noqa: E501
        :type installation_id: str
        """

        self._installation_id = installation_id

    @property
    def installation_name(self):
        """Gets the installation_name of this InlineResponse2004Content.  # noqa: E501

        the name of the hub's installation  # noqa: E501

        :return: The installation_name of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._installation_name

    @installation_name.setter
    def installation_name(self, installation_name):
        """Sets the installation_name of this InlineResponse2004Content.

        the name of the hub's installation  # noqa: E501

        :param installation_name: The installation_name of this InlineResponse2004Content.  # noqa: E501
        :type installation_name: str
        """

        self._installation_name = installation_name

    @property
    def network_id(self):
        """Gets the network_id of this InlineResponse2004Content.  # noqa: E501

        the unique identifier of the hub's network  # noqa: E501

        :return: The network_id of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._network_id

    @network_id.setter
    def network_id(self, network_id):
        """Sets the network_id of this InlineResponse2004Content.

        the unique identifier of the hub's network  # noqa: E501

        :param network_id: The network_id of this InlineResponse2004Content.  # noqa: E501
        :type network_id: str
        """

        self._network_id = network_id

    @property
    def name(self):
        """Gets the name of this InlineResponse2004Content.  # noqa: E501

        the user-assigned name of the hub  # noqa: E501

        :return: The name of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this InlineResponse2004Content.

        the user-assigned name of the hub  # noqa: E501

        :param name: The name of this InlineResponse2004Content.  # noqa: E501
        :type name: str
        """

        self._name = name

    @property
    def ethernet_mac(self):
        """Gets the ethernet_mac of this InlineResponse2004Content.  # noqa: E501

        the hub's ethernet MAC address  # noqa: E501

        :return: The ethernet_mac of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._ethernet_mac

    @ethernet_mac.setter
    def ethernet_mac(self, ethernet_mac):
        """Sets the ethernet_mac of this InlineResponse2004Content.

        the hub's ethernet MAC address  # noqa: E501

        :param ethernet_mac: The ethernet_mac of this InlineResponse2004Content.  # noqa: E501
        :type ethernet_mac: str
        """

        self._ethernet_mac = ethernet_mac

    @property
    def i_pv4_address(self):
        """Gets the i_pv4_address of this InlineResponse2004Content.  # noqa: E501

        the hub's IPv4 address  # noqa: E501

        :return: The i_pv4_address of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._i_pv4_address

    @i_pv4_address.setter
    def i_pv4_address(self, i_pv4_address):
        """Sets the i_pv4_address of this InlineResponse2004Content.

        the hub's IPv4 address  # noqa: E501

        :param i_pv4_address: The i_pv4_address of this InlineResponse2004Content.  # noqa: E501
        :type i_pv4_address: str
        """

        self._i_pv4_address = i_pv4_address

    @property
    def ethernet_link_status(self):
        """Gets the ethernet_link_status of this InlineResponse2004Content.  # noqa: E501

        the link status of the hub's ethernet ports. This is an array of length equal to the number of ethernet ports on the hub.  Each element will be true or false depending on whether a link was detected on the port or not.  # noqa: E501

        :return: The ethernet_link_status of this InlineResponse2004Content.  # noqa: E501
        :rtype: list[bool]
        """
        return self._ethernet_link_status

    @ethernet_link_status.setter
    def ethernet_link_status(self, ethernet_link_status):
        """Sets the ethernet_link_status of this InlineResponse2004Content.

        the link status of the hub's ethernet ports. This is an array of length equal to the number of ethernet ports on the hub.  Each element will be true or false depending on whether a link was detected on the port or not.  # noqa: E501

        :param ethernet_link_status: The ethernet_link_status of this InlineResponse2004Content.  # noqa: E501
        :type ethernet_link_status: list[bool]
        """

        self._ethernet_link_status = ethernet_link_status

    @property
    def up_time_seconds(self):
        """Gets the up_time_seconds of this InlineResponse2004Content.  # noqa: E501

        the number of seconds since last power cycle or reboot  # noqa: E501

        :return: The up_time_seconds of this InlineResponse2004Content.  # noqa: E501
        :rtype: int
        """
        return self._up_time_seconds

    @up_time_seconds.setter
    def up_time_seconds(self, up_time_seconds):
        """Sets the up_time_seconds of this InlineResponse2004Content.

        the number of seconds since last power cycle or reboot  # noqa: E501

        :param up_time_seconds: The up_time_seconds of this InlineResponse2004Content.  # noqa: E501
        :type up_time_seconds: int
        """

        self._up_time_seconds = up_time_seconds

    @property
    def local_time(self):
        """Gets the local_time of this InlineResponse2004Content.  # noqa: E501

        the local time  # noqa: E501

        :return: The local_time of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._local_time

    @local_time.setter
    def local_time(self, local_time):
        """Sets the local_time of this InlineResponse2004Content.

        the local time  # noqa: E501

        :param local_time: The local_time of this InlineResponse2004Content.  # noqa: E501
        :type local_time: str
        """

        self._local_time = local_time

    @property
    def utc_time(self):
        """Gets the utc_time of this InlineResponse2004Content.  # noqa: E501

        the time in UTC  # noqa: E501

        :return: The utc_time of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._utc_time

    @utc_time.setter
    def utc_time(self, utc_time):
        """Sets the utc_time of this InlineResponse2004Content.

        the time in UTC  # noqa: E501

        :param utc_time: The utc_time of this InlineResponse2004Content.  # noqa: E501
        :type utc_time: str
        """

        self._utc_time = utc_time

    @property
    def last_reboot_reason(self):
        """Gets the last_reboot_reason of this InlineResponse2004Content.  # noqa: E501

        the reason for the last reboot  # noqa: E501

        :return: The last_reboot_reason of this InlineResponse2004Content.  # noqa: E501
        :rtype: str
        """
        return self._last_reboot_reason

    @last_reboot_reason.setter
    def last_reboot_reason(self, last_reboot_reason):
        """Sets the last_reboot_reason of this InlineResponse2004Content.

        the reason for the last reboot  # noqa: E501

        :param last_reboot_reason: The last_reboot_reason of this InlineResponse2004Content.  # noqa: E501
        :type last_reboot_reason: str
        """

        self._last_reboot_reason = last_reboot_reason

    @property
    def has_internet_connectivity(self):
        """Gets the has_internet_connectivity of this InlineResponse2004Content.  # noqa: E501

        does the hub have internet access?  # noqa: E501

        :return: The has_internet_connectivity of this InlineResponse2004Content.  # noqa: E501
        :rtype: bool
        """
        return self._has_internet_connectivity

    @has_internet_connectivity.setter
    def has_internet_connectivity(self, has_internet_connectivity):
        """Sets the has_internet_connectivity of this InlineResponse2004Content.

        does the hub have internet access?  # noqa: E501

        :param has_internet_connectivity: The has_internet_connectivity of this InlineResponse2004Content.  # noqa: E501
        :type has_internet_connectivity: bool
        """

        self._has_internet_connectivity = has_internet_connectivity

    @property
    def last_time_update_was_successful(self):
        """Gets the last_time_update_was_successful of this InlineResponse2004Content.  # noqa: E501

        was the last time update successful?  # noqa: E501

        :return: The last_time_update_was_successful of this InlineResponse2004Content.  # noqa: E501
        :rtype: bool
        """
        return self._last_time_update_was_successful

    @last_time_update_was_successful.setter
    def last_time_update_was_successful(self, last_time_update_was_successful):
        """Sets the last_time_update_was_successful of this InlineResponse2004Content.

        was the last time update successful?  # noqa: E501

        :param last_time_update_was_successful: The last_time_update_was_successful of this InlineResponse2004Content.  # noqa: E501
        :type last_time_update_was_successful: bool
        """

        self._last_time_update_was_successful = last_time_update_was_successful

    @property
    def remote_connection_enabled(self):
        """Gets the remote_connection_enabled of this InlineResponse2004Content.  # noqa: E501

        is remote connectivity enabled?  # noqa: E501

        :return: The remote_connection_enabled of this InlineResponse2004Content.  # noqa: E501
        :rtype: bool
        """
        return self._remote_connection_enabled

    @remote_connection_enabled.setter
    def remote_connection_enabled(self, remote_connection_enabled):
        """Sets the remote_connection_enabled of this InlineResponse2004Content.

        is remote connectivity enabled?  # noqa: E501

        :param remote_connection_enabled: The remote_connection_enabled of this InlineResponse2004Content.  # noqa: E501
        :type remote_connection_enabled: bool
        """

        self._remote_connection_enabled = remote_connection_enabled

    @property
    def remote_connection_established(self):
        """Gets the remote_connection_established of this InlineResponse2004Content.  # noqa: E501

        is the remote connection established?  # noqa: E501

        :return: The remote_connection_established of this InlineResponse2004Content.  # noqa: E501
        :rtype: bool
        """
        return self._remote_connection_established

    @remote_connection_established.setter
    def remote_connection_established(self, remote_connection_established):
        """Sets the remote_connection_established of this InlineResponse2004Content.

        is the remote connection established?  # noqa: E501

        :param remote_connection_established: The remote_connection_established of this InlineResponse2004Content.  # noqa: E501
        :type remote_connection_established: bool
        """

        self._remote_connection_established = remote_connection_established

    @property
    def supports_zone_keypads(self):
        """Gets the supports_zone_keypads of this InlineResponse2004Content.  # noqa: E501

        This property will be true if the hub was published in Design Studio 2.0 in an installation containing devices that all have 1.15 firmware.  This signifies that a keypad's buttons can be configured to control independent zones and are not restricted to controlling the same set of groups.  # noqa: E501

        :return: The supports_zone_keypads of this InlineResponse2004Content.  # noqa: E501
        :rtype: bool
        """
        return self._supports_zone_keypads

    @supports_zone_keypads.setter
    def supports_zone_keypads(self, supports_zone_keypads):
        """Sets the supports_zone_keypads of this InlineResponse2004Content.

        This property will be true if the hub was published in Design Studio 2.0 in an installation containing devices that all have 1.15 firmware.  This signifies that a keypad's buttons can be configured to control independent zones and are not restricted to controlling the same set of groups.  # noqa: E501

        :param supports_zone_keypads: The supports_zone_keypads of this InlineResponse2004Content.  # noqa: E501
        :type supports_zone_keypads: bool
        """

        self._supports_zone_keypads = supports_zone_keypads

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, InlineResponse2004Content):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, InlineResponse2004Content):
            return True

        return self.to_dict() != other.to_dict()
