# 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 SettingsPatchRequest(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 = {
        "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",
    }

    attribute_map = {
        "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",
    }

    def __init__(
        self,
        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,
        local_vars_configuration=None,
    ):  # noqa: E501
        """SettingsPatchRequest - 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._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.discriminator = None

        if supports_custom_objects is not None:
            self.supports_custom_objects = supports_custom_objects
        if uses_remote is not None:
            self.uses_remote = uses_remote
        if is_ready is not None:
            self.is_ready = is_ready
        if name is not None:
            self.name = name
        if width is not None:
            self.width = width
        if uses_calling_window is not None:
            self.uses_calling_window = uses_calling_window
        if supports_inbound_calling is not None:
            self.supports_inbound_calling = supports_inbound_calling
        if url is not None:
            self.url = url
        if height is not None:
            self.height = height

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

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

        :return: The supports_custom_objects of this SettingsPatchRequest.  # 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 SettingsPatchRequest.

        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 SettingsPatchRequest.  # noqa: E501
        :type supports_custom_objects: bool
        """

        self._supports_custom_objects = supports_custom_objects

    @property
    def uses_remote(self):
        """Gets the uses_remote of this SettingsPatchRequest.  # 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 SettingsPatchRequest.  # noqa: E501
        :rtype: bool
        """
        return self._uses_remote

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

        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 SettingsPatchRequest.  # noqa: E501
        :type uses_remote: bool
        """

        self._uses_remote = uses_remote

    @property
    def is_ready(self):
        """Gets the is_ready of this SettingsPatchRequest.  # 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 SettingsPatchRequest.  # noqa: E501
        :rtype: bool
        """
        return self._is_ready

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

        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 SettingsPatchRequest.  # noqa: E501
        :type is_ready: bool
        """

        self._is_ready = is_ready

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

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

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

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

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

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

        self._name = name

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

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

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

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

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

        :param width: The width of this SettingsPatchRequest.  # noqa: E501
        :type width: int
        """

        self._width = width

    @property
    def uses_calling_window(self):
        """Gets the uses_calling_window of this SettingsPatchRequest.  # 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 SettingsPatchRequest.  # 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 SettingsPatchRequest.

        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 SettingsPatchRequest.  # noqa: E501
        :type uses_calling_window: bool
        """

        self._uses_calling_window = uses_calling_window

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

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

        :return: The supports_inbound_calling of this SettingsPatchRequest.  # 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 SettingsPatchRequest.

        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 SettingsPatchRequest.  # noqa: E501
        :type supports_inbound_calling: bool
        """

        self._supports_inbound_calling = supports_inbound_calling

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

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

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

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

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

        :param url: The url of this SettingsPatchRequest.  # noqa: E501
        :type url: str
        """

        self._url = url

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

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

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

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

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

        :param height: The height of this SettingsPatchRequest.  # noqa: E501
        :type height: int
        """

        self._height = height

    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, SettingsPatchRequest):
            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, SettingsPatchRequest):
            return True

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