# coding: utf-8

"""
    Prompt.io APIs

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: 1.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class SendToCustomerMessageModel(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_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.
    """
    swagger_types = {
        'message': 'str',
        'instant_app_parameters': 'dict(str, str)',
        'instant_app_schema_api_id': 'str',
        'org_channel_api_id': 'str',
        'customer_channel_key': 'str',
        'customer_channel_id': 'int',
        'ignore_delivery_restrictions': 'bool'
    }

    attribute_map = {
        'message': 'message',
        'instant_app_parameters': 'instantAppParameters',
        'instant_app_schema_api_id': 'instantAppSchemaApiId',
        'org_channel_api_id': 'orgChannelApiId',
        'customer_channel_key': 'customerChannelKey',
        'customer_channel_id': 'customerChannelId',
        'ignore_delivery_restrictions': 'ignoreDeliveryRestrictions'
    }

    def __init__(self, message=None, instant_app_parameters=None, instant_app_schema_api_id=None, org_channel_api_id=None, customer_channel_key=None, customer_channel_id=None, ignore_delivery_restrictions=None):  # noqa: E501
        """SendToCustomerMessageModel - a model defined in Swagger"""  # noqa: E501
        self._message = None
        self._instant_app_parameters = None
        self._instant_app_schema_api_id = None
        self._org_channel_api_id = None
        self._customer_channel_key = None
        self._customer_channel_id = None
        self._ignore_delivery_restrictions = None
        self.discriminator = None
        self.message = message
        if instant_app_parameters is not None:
            self.instant_app_parameters = instant_app_parameters
        if instant_app_schema_api_id is not None:
            self.instant_app_schema_api_id = instant_app_schema_api_id
        self.org_channel_api_id = org_channel_api_id
        if customer_channel_key is not None:
            self.customer_channel_key = customer_channel_key
        if customer_channel_id is not None:
            self.customer_channel_id = customer_channel_id
        if ignore_delivery_restrictions is not None:
            self.ignore_delivery_restrictions = ignore_delivery_restrictions

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

        The message to send to the user.  If you specify an instant app schema apiId, {link} will be replaced with the instant app customer url link.  # noqa: E501

        :return: The message of this SendToCustomerMessageModel.  # noqa: E501
        :rtype: str
        """
        return self._message

    @message.setter
    def message(self, message):
        """Sets the message of this SendToCustomerMessageModel.

        The message to send to the user.  If you specify an instant app schema apiId, {link} will be replaced with the instant app customer url link.  # noqa: E501

        :param message: The message of this SendToCustomerMessageModel.  # noqa: E501
        :type: str
        """
        if message is None:
            raise ValueError("Invalid value for `message`, must not be `None`")  # noqa: E501

        self._message = message

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

        Optional Instant App parameters passed into the instant app  # noqa: E501

        :return: The instant_app_parameters of this SendToCustomerMessageModel.  # noqa: E501
        :rtype: dict(str, str)
        """
        return self._instant_app_parameters

    @instant_app_parameters.setter
    def instant_app_parameters(self, instant_app_parameters):
        """Sets the instant_app_parameters of this SendToCustomerMessageModel.

        Optional Instant App parameters passed into the instant app  # noqa: E501

        :param instant_app_parameters: The instant_app_parameters of this SendToCustomerMessageModel.  # noqa: E501
        :type: dict(str, str)
        """

        self._instant_app_parameters = instant_app_parameters

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

        Optional schema apiId (or internal id) used to create an instance of an instant app.  If provided, an instant app an instant app instance will be created and the customer link will replace the {link} token or will be placed at the end of the message  # noqa: E501

        :return: The instant_app_schema_api_id of this SendToCustomerMessageModel.  # noqa: E501
        :rtype: str
        """
        return self._instant_app_schema_api_id

    @instant_app_schema_api_id.setter
    def instant_app_schema_api_id(self, instant_app_schema_api_id):
        """Sets the instant_app_schema_api_id of this SendToCustomerMessageModel.

        Optional schema apiId (or internal id) used to create an instance of an instant app.  If provided, an instant app an instant app instance will be created and the customer link will replace the {link} token or will be placed at the end of the message  # noqa: E501

        :param instant_app_schema_api_id: The instant_app_schema_api_id of this SendToCustomerMessageModel.  # noqa: E501
        :type: str
        """

        self._instant_app_schema_api_id = instant_app_schema_api_id

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

        The org channel apiId (or internal id) of the sending channel  # noqa: E501

        :return: The org_channel_api_id of this SendToCustomerMessageModel.  # noqa: E501
        :rtype: str
        """
        return self._org_channel_api_id

    @org_channel_api_id.setter
    def org_channel_api_id(self, org_channel_api_id):
        """Sets the org_channel_api_id of this SendToCustomerMessageModel.

        The org channel apiId (or internal id) of the sending channel  # noqa: E501

        :param org_channel_api_id: The org_channel_api_id of this SendToCustomerMessageModel.  # noqa: E501
        :type: str
        """
        if org_channel_api_id is None:
            raise ValueError("Invalid value for `org_channel_api_id`, must not be `None`")  # noqa: E501

        self._org_channel_api_id = org_channel_api_id

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

        The key of the customer channel, for instance, the customer phone number to SMS to.  Must supply this or customerChannelId  # noqa: E501

        :return: The customer_channel_key of this SendToCustomerMessageModel.  # noqa: E501
        :rtype: str
        """
        return self._customer_channel_key

    @customer_channel_key.setter
    def customer_channel_key(self, customer_channel_key):
        """Sets the customer_channel_key of this SendToCustomerMessageModel.

        The key of the customer channel, for instance, the customer phone number to SMS to.  Must supply this or customerChannelId  # noqa: E501

        :param customer_channel_key: The customer_channel_key of this SendToCustomerMessageModel.  # noqa: E501
        :type: str
        """

        self._customer_channel_key = customer_channel_key

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

        The internal id of the customer channel key. Must supply this or the customerChannelKey  # noqa: E501

        :return: The customer_channel_id of this SendToCustomerMessageModel.  # noqa: E501
        :rtype: int
        """
        return self._customer_channel_id

    @customer_channel_id.setter
    def customer_channel_id(self, customer_channel_id):
        """Sets the customer_channel_id of this SendToCustomerMessageModel.

        The internal id of the customer channel key. Must supply this or the customerChannelKey  # noqa: E501

        :param customer_channel_id: The customer_channel_id of this SendToCustomerMessageModel.  # noqa: E501
        :type: int
        """

        self._customer_channel_id = customer_channel_id

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

        Whether the message should be sent immediately, ignoring any message delivery time restrictions that have been configured. Default is false.  # noqa: E501

        :return: The ignore_delivery_restrictions of this SendToCustomerMessageModel.  # noqa: E501
        :rtype: bool
        """
        return self._ignore_delivery_restrictions

    @ignore_delivery_restrictions.setter
    def ignore_delivery_restrictions(self, ignore_delivery_restrictions):
        """Sets the ignore_delivery_restrictions of this SendToCustomerMessageModel.

        Whether the message should be sent immediately, ignoring any message delivery time restrictions that have been configured. Default is false.  # noqa: E501

        :param ignore_delivery_restrictions: The ignore_delivery_restrictions of this SendToCustomerMessageModel.  # noqa: E501
        :type: bool
        """

        self._ignore_delivery_restrictions = ignore_delivery_restrictions

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

        for attr, _ in six.iteritems(self.swagger_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
        if issubclass(SendToCustomerMessageModel, dict):
            for key, value in self.items():
                result[key] = 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, SendToCustomerMessageModel):
            return False

        return self.__dict__ == other.__dict__

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