# coding: utf-8

"""
    CRM Calling Extensions

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

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


try:
    from inspect import getfullargspec
except ImportError:
    from inspect import getargspec as getfullargspec
import pprint
import re  # noqa: F401
import six

from hubspot.crm.extensions.calling.configuration import Configuration


class SettingsResponse(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 = {
        "created_at": "datetime",
        "supports_custom_objects": "bool",
        "uses_remote": "bool",
        "is_ready": "bool",
        "name": "str",
        "width": "int",
        "uses_calling_window": "bool",
        "supports_inbound_calling": "bool",
        "url": "str",
        "height": "int",
        "updated_at": "datetime",
    }

    attribute_map = {
        "created_at": "createdAt",
        "supports_custom_objects": "supportsCustomObjects",
        "uses_remote": "usesRemote",
        "is_ready": "isReady",
        "name": "name",
        "width": "width",
        "uses_calling_window": "usesCallingWindow",
        "supports_inbound_calling": "supportsInboundCalling",
        "url": "url",
        "height": "height",
        "updated_at": "updatedAt",
    }

    def __init__(
        self,
        created_at=None,
        supports_custom_objects=None,
        uses_remote=None,
        is_ready=None,
        name=None,
        width=None,
        uses_calling_window=None,
        supports_inbound_calling=None,
        url=None,
        height=None,
        updated_at=None,
        local_vars_configuration=None,
    ):  # noqa: E501
        """SettingsResponse - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration.get_default_copy()
        self.local_vars_configuration = local_vars_configuration

        self._created_at = None
        self._supports_custom_objects = None
        self._uses_remote = None
        self._is_ready = None
        self._name = None
        self._width = None
        self._uses_calling_window = None
        self._supports_inbound_calling = None
        self._url = None
        self._height = None
        self._updated_at = None
        self.discriminator = None

        self.created_at = created_at
        self.supports_custom_objects = supports_custom_objects
        self.uses_remote = uses_remote
        self.is_ready = is_ready
        self.name = name
        self.width = width
        self.uses_calling_window = uses_calling_window
        self.supports_inbound_calling = supports_inbound_calling
        self.url = url
        self.height = height
        self.updated_at = updated_at

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

        When this calling extension was created.  # noqa: E501

        :return: The created_at of this SettingsResponse.  # noqa: E501
        :rtype: datetime
        """
        return self._created_at

    @created_at.setter
    def created_at(self, created_at):
        """Sets the created_at of this SettingsResponse.

        When this calling extension was created.  # noqa: E501

        :param created_at: The created_at of this SettingsResponse.  # noqa: E501
        :type created_at: datetime
        """
        if self.local_vars_configuration.client_side_validation and created_at is None:  # noqa: E501
            raise ValueError("Invalid value for `created_at`, must not be `None`")  # noqa: E501

        self._created_at = created_at

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

        When true, users will be able to click to dial from custom objects.  # noqa: E501

        :return: The supports_custom_objects of this SettingsResponse.  # noqa: E501
        :rtype: bool
        """
        return self._supports_custom_objects

    @supports_custom_objects.setter
    def supports_custom_objects(self, supports_custom_objects):
        """Sets the supports_custom_objects of this SettingsResponse.

        When true, users will be able to click to dial from custom objects.  # noqa: E501

        :param supports_custom_objects: The supports_custom_objects of this SettingsResponse.  # noqa: E501
        :type supports_custom_objects: bool
        """
        if self.local_vars_configuration.client_side_validation and supports_custom_objects is None:  # noqa: E501
            raise ValueError("Invalid value for `supports_custom_objects`, must not be `None`")  # noqa: E501

        self._supports_custom_objects = supports_custom_objects

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

        When false, this indicates that your calling app does not use the anchored calling remote within the HubSpot app.   # noqa: E501

        :return: The uses_remote of this SettingsResponse.  # noqa: E501
        :rtype: bool
        """
        return self._uses_remote

    @uses_remote.setter
    def uses_remote(self, uses_remote):
        """Sets the uses_remote of this SettingsResponse.

        When false, this indicates that your calling app does not use the anchored calling remote within the HubSpot app.   # noqa: E501

        :param uses_remote: The uses_remote of this SettingsResponse.  # noqa: E501
        :type uses_remote: bool
        """
        if self.local_vars_configuration.client_side_validation and uses_remote is None:  # noqa: E501
            raise ValueError("Invalid value for `uses_remote`, must not be `None`")  # noqa: E501

        self._uses_remote = uses_remote

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

        When true, this indicates that your calling app is ready for production. Users will be able to select your calling app as their provider and can then click to dial within HubSpot.  # noqa: E501

        :return: The is_ready of this SettingsResponse.  # noqa: E501
        :rtype: bool
        """
        return self._is_ready

    @is_ready.setter
    def is_ready(self, is_ready):
        """Sets the is_ready of this SettingsResponse.

        When true, this indicates that your calling app is ready for production. Users will be able to select your calling app as their provider and can then click to dial within HubSpot.  # noqa: E501

        :param is_ready: The is_ready of this SettingsResponse.  # noqa: E501
        :type is_ready: bool
        """
        if self.local_vars_configuration.client_side_validation and is_ready is None:  # noqa: E501
            raise ValueError("Invalid value for `is_ready`, must not be `None`")  # noqa: E501

        self._is_ready = is_ready

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

        The name of your calling service to display to users.  # noqa: E501

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

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

        The name of your calling service to display to users.  # noqa: E501

        :param name: The name of this SettingsResponse.  # noqa: E501
        :type name: str
        """
        if self.local_vars_configuration.client_side_validation and name is None:  # noqa: E501
            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501

        self._name = name

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

        The target width of the iframe that will contain your phone/calling UI.  # noqa: E501

        :return: The width of this SettingsResponse.  # noqa: E501
        :rtype: int
        """
        return self._width

    @width.setter
    def width(self, width):
        """Sets the width of this SettingsResponse.

        The target width of the iframe that will contain your phone/calling UI.  # noqa: E501

        :param width: The width of this SettingsResponse.  # noqa: E501
        :type width: int
        """
        if self.local_vars_configuration.client_side_validation and width is None:  # noqa: E501
            raise ValueError("Invalid value for `width`, must not be `None`")  # noqa: E501

        self._width = width

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

        When false, this indicates that your calling app does not require the use of the separate calling window to hold the call connection.   # noqa: E501

        :return: The uses_calling_window of this SettingsResponse.  # noqa: E501
        :rtype: bool
        """
        return self._uses_calling_window

    @uses_calling_window.setter
    def uses_calling_window(self, uses_calling_window):
        """Sets the uses_calling_window of this SettingsResponse.

        When false, this indicates that your calling app does not require the use of the separate calling window to hold the call connection.   # noqa: E501

        :param uses_calling_window: The uses_calling_window of this SettingsResponse.  # noqa: E501
        :type uses_calling_window: bool
        """
        if self.local_vars_configuration.client_side_validation and uses_calling_window is None:  # noqa: E501
            raise ValueError("Invalid value for `uses_calling_window`, must not be `None`")  # noqa: E501

        self._uses_calling_window = uses_calling_window

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

        When true, this indicates that your calling app supports inbound calling within HubSpot.   # noqa: E501

        :return: The supports_inbound_calling of this SettingsResponse.  # noqa: E501
        :rtype: bool
        """
        return self._supports_inbound_calling

    @supports_inbound_calling.setter
    def supports_inbound_calling(self, supports_inbound_calling):
        """Sets the supports_inbound_calling of this SettingsResponse.

        When true, this indicates that your calling app supports inbound calling within HubSpot.   # noqa: E501

        :param supports_inbound_calling: The supports_inbound_calling of this SettingsResponse.  # noqa: E501
        :type supports_inbound_calling: bool
        """
        if self.local_vars_configuration.client_side_validation and supports_inbound_calling is None:  # noqa: E501
            raise ValueError("Invalid value for `supports_inbound_calling`, must not be `None`")  # noqa: E501

        self._supports_inbound_calling = supports_inbound_calling

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

        The URL to your phone/calling UI, built with the [Calling SDK](#).  # noqa: E501

        :return: The url of this SettingsResponse.  # noqa: E501
        :rtype: str
        """
        return self._url

    @url.setter
    def url(self, url):
        """Sets the url of this SettingsResponse.

        The URL to your phone/calling UI, built with the [Calling SDK](#).  # noqa: E501

        :param url: The url of this SettingsResponse.  # noqa: E501
        :type url: str
        """
        if self.local_vars_configuration.client_side_validation and url is None:  # noqa: E501
            raise ValueError("Invalid value for `url`, must not be `None`")  # noqa: E501

        self._url = url

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

        The target height of the iframe that will contain your phone/calling UI.  # noqa: E501

        :return: The height of this SettingsResponse.  # noqa: E501
        :rtype: int
        """
        return self._height

    @height.setter
    def height(self, height):
        """Sets the height of this SettingsResponse.

        The target height of the iframe that will contain your phone/calling UI.  # noqa: E501

        :param height: The height of this SettingsResponse.  # noqa: E501
        :type height: int
        """
        if self.local_vars_configuration.client_side_validation and height is None:  # noqa: E501
            raise ValueError("Invalid value for `height`, must not be `None`")  # noqa: E501

        self._height = height

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

        The last time the settings for this calling extension were modified.  # noqa: E501

        :return: The updated_at of this SettingsResponse.  # noqa: E501
        :rtype: datetime
        """
        return self._updated_at

    @updated_at.setter
    def updated_at(self, updated_at):
        """Sets the updated_at of this SettingsResponse.

        The last time the settings for this calling extension were modified.  # noqa: E501

        :param updated_at: The updated_at of this SettingsResponse.  # noqa: E501
        :type updated_at: datetime
        """
        if self.local_vars_configuration.client_side_validation and updated_at is None:  # noqa: E501
            raise ValueError("Invalid value for `updated_at`, must not be `None`")  # noqa: E501

        self._updated_at = updated_at

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

        def convert(x):
            if hasattr(x, "to_dict"):
                args = getfullargspec(x.to_dict).args
                if len(args) == 1:
                    return x.to_dict()
                else:
                    return x.to_dict(serialize)
            else:
                return x

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            attr = self.attribute_map.get(attr, attr) if serialize else attr
            if isinstance(value, list):
                result[attr] = list(map(lambda x: convert(x), value))
            elif isinstance(value, dict):
                result[attr] = dict(map(lambda item: (item[0], convert(item[1])), value.items()))
            else:
                result[attr] = convert(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, SettingsResponse):
            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, SettingsResponse):
            return True

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