# coding: utf-8

"""
    Onshape REST API

    The Onshape REST API consumed by all clients.  # noqa: E501

    OpenAPI spec version: 1.96
    Contact: api-support@onshape.zendesk.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six


class BTNotificationParams(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 = {
        'id': 'str',
        'user_id': 'str',
        'acknowledged': 'bool',
        'expanded': 'bool',
        'campaign_id': 'str',
        'message_id': 'str',
        'message_params_array': 'list[object]',
        'notification_level': 'str',
        'deliver_at': 'datetime',
        'event_key': 'str',
        'message_params': 'list[object]'
    }

    attribute_map = {
        'id': 'id',
        'user_id': 'userId',
        'acknowledged': 'acknowledged',
        'expanded': 'expanded',
        'campaign_id': 'campaignId',
        'message_id': 'messageId',
        'message_params_array': 'messageParamsArray',
        'notification_level': 'notificationLevel',
        'deliver_at': 'deliverAt',
        'event_key': 'eventKey',
        'message_params': 'messageParams'
    }

    def __init__(self, id=None, user_id=None, acknowledged=None, expanded=None, campaign_id=None, message_id=None, message_params_array=None, notification_level=None, deliver_at=None, event_key=None, message_params=None):  # noqa: E501
        """BTNotificationParams - a model defined in OpenAPI"""  # noqa: E501

        self._id = None
        self._user_id = None
        self._acknowledged = None
        self._expanded = None
        self._campaign_id = None
        self._message_id = None
        self._message_params_array = None
        self._notification_level = None
        self._deliver_at = None
        self._event_key = None
        self._message_params = None
        self.discriminator = None

        if id is not None:
            self.id = id
        if user_id is not None:
            self.user_id = user_id
        if acknowledged is not None:
            self.acknowledged = acknowledged
        if expanded is not None:
            self.expanded = expanded
        if campaign_id is not None:
            self.campaign_id = campaign_id
        if message_id is not None:
            self.message_id = message_id
        if message_params_array is not None:
            self.message_params_array = message_params_array
        if notification_level is not None:
            self.notification_level = notification_level
        if deliver_at is not None:
            self.deliver_at = deliver_at
        if event_key is not None:
            self.event_key = event_key
        if message_params is not None:
            self.message_params = message_params

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


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

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


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

        self._id = id

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


        :return: The user_id of this BTNotificationParams.  # noqa: E501
        :rtype: str
        """
        return self._user_id

    @user_id.setter
    def user_id(self, user_id):
        """Sets the user_id of this BTNotificationParams.


        :param user_id: The user_id of this BTNotificationParams.  # noqa: E501
        :type: str
        """

        self._user_id = user_id

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


        :return: The acknowledged of this BTNotificationParams.  # noqa: E501
        :rtype: bool
        """
        return self._acknowledged

    @acknowledged.setter
    def acknowledged(self, acknowledged):
        """Sets the acknowledged of this BTNotificationParams.


        :param acknowledged: The acknowledged of this BTNotificationParams.  # noqa: E501
        :type: bool
        """

        self._acknowledged = acknowledged

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


        :return: The expanded of this BTNotificationParams.  # noqa: E501
        :rtype: bool
        """
        return self._expanded

    @expanded.setter
    def expanded(self, expanded):
        """Sets the expanded of this BTNotificationParams.


        :param expanded: The expanded of this BTNotificationParams.  # noqa: E501
        :type: bool
        """

        self._expanded = expanded

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


        :return: The campaign_id of this BTNotificationParams.  # noqa: E501
        :rtype: str
        """
        return self._campaign_id

    @campaign_id.setter
    def campaign_id(self, campaign_id):
        """Sets the campaign_id of this BTNotificationParams.


        :param campaign_id: The campaign_id of this BTNotificationParams.  # noqa: E501
        :type: str
        """

        self._campaign_id = campaign_id

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


        :return: The message_id of this BTNotificationParams.  # noqa: E501
        :rtype: str
        """
        return self._message_id

    @message_id.setter
    def message_id(self, message_id):
        """Sets the message_id of this BTNotificationParams.


        :param message_id: The message_id of this BTNotificationParams.  # noqa: E501
        :type: str
        """

        self._message_id = message_id

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


        :return: The message_params_array of this BTNotificationParams.  # noqa: E501
        :rtype: list[object]
        """
        return self._message_params_array

    @message_params_array.setter
    def message_params_array(self, message_params_array):
        """Sets the message_params_array of this BTNotificationParams.


        :param message_params_array: The message_params_array of this BTNotificationParams.  # noqa: E501
        :type: list[object]
        """

        self._message_params_array = message_params_array

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


        :return: The notification_level of this BTNotificationParams.  # noqa: E501
        :rtype: str
        """
        return self._notification_level

    @notification_level.setter
    def notification_level(self, notification_level):
        """Sets the notification_level of this BTNotificationParams.


        :param notification_level: The notification_level of this BTNotificationParams.  # noqa: E501
        :type: str
        """
        allowed_values = ["INFO", "WARNING", "ERROR", "MARKETING", "PRODUCT", "IMPORTANT", "ACTION"]  # noqa: E501
        if notification_level not in allowed_values:
            raise ValueError(
                "Invalid value for `notification_level` ({0}), must be one of {1}"  # noqa: E501
                .format(notification_level, allowed_values)
            )

        self._notification_level = notification_level

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


        :return: The deliver_at of this BTNotificationParams.  # noqa: E501
        :rtype: datetime
        """
        return self._deliver_at

    @deliver_at.setter
    def deliver_at(self, deliver_at):
        """Sets the deliver_at of this BTNotificationParams.


        :param deliver_at: The deliver_at of this BTNotificationParams.  # noqa: E501
        :type: datetime
        """

        self._deliver_at = deliver_at

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


        :return: The event_key of this BTNotificationParams.  # noqa: E501
        :rtype: str
        """
        return self._event_key

    @event_key.setter
    def event_key(self, event_key):
        """Sets the event_key of this BTNotificationParams.


        :param event_key: The event_key of this BTNotificationParams.  # noqa: E501
        :type: str
        """

        self._event_key = event_key

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


        :return: The message_params of this BTNotificationParams.  # noqa: E501
        :rtype: list[object]
        """
        return self._message_params

    @message_params.setter
    def message_params(self, message_params):
        """Sets the message_params of this BTNotificationParams.


        :param message_params: The message_params of this BTNotificationParams.  # noqa: E501
        :type: list[object]
        """

        self._message_params = message_params

    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, BTNotificationParams):
            return False

        return self.__dict__ == other.__dict__

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