# coding: utf-8

"""
    Statuspage API

    # Code of Conduct Please don't abuse the API, and please report all feature requests and issues to https://support.atlassian.com/contact  # Rate Limiting Each API token is limited to 1 request / second as measured on a 60 second rolling window. To get this limit increased, please contact us at https://support.atlassian.com/contact  Error codes 420 or 429 indicate that you have exceeded the rate limit and the request has been rejected.  # Basics  ## HTTPS It's required  ## URL Prefix In order to maintain version integrity into the future, the API is versioned. All calls currently begin with the following prefix:    https://api.statuspage.io/v1/  ## RESTful Interface Wherever possible, the API seeks to implement repeatable patterns with logical, representative URLs and descriptive HTTP verbs. Below are some examples and conventions you will see throughout the documentation.  * Collections are buckets: https://api.statuspage.io/v1/pages/asdf123/incidents.json * Elements have unique IDs: https://api.statuspage.io/v1/pages/asdf123/incidents/jklm456.json * GET will retrieve information about a collection/element * POST will create an element in a collection * PATCH will update a single element * PUT will replace a single element in a collection (rarely used) * DELETE will destroy a single element  ## Sending Data Information can be sent in the body as form urlencoded or JSON, but make sure the Content-Type header matches the body structure or the server gremlins will be angry.  All examples are provided in JSON format, however they can easily be converted to form encoding if required.  Some examples of how to convert things are below:      // JSON     {       \"incident\": {         \"name\": \"test incident\",         \"components\": [\"8kbf7d35c070\", \"vtnh60py4yd7\"]       }     }      // Form Encoded (using curl as an example):     curl -X POST https://api.statuspage.io/v1/example \\       -d \"incident[name]=test incident\" \\       -d \"incident[components][]=8kbf7d35c070\" \\       -d \"incident[components][]=vtnh60py4yd7\"  # Authentication  <!-- ReDoc-Inject: <security-definitions> -->  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class PostPagesPageIdSubscribersSubscriber(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 = {
        'email': 'str',
        'endpoint': 'str',
        'phone_country': 'str',
        'phone_number': 'str',
        'skip_confirmation_notification': 'bool',
        'page_access_user': 'str',
        'component_ids': 'list[str]'
    }

    attribute_map = {
        'email': 'email',
        'endpoint': 'endpoint',
        'phone_country': 'phone_country',
        'phone_number': 'phone_number',
        'skip_confirmation_notification': 'skip_confirmation_notification',
        'page_access_user': 'page_access_user',
        'component_ids': 'component_ids'
    }

    def __init__(self, email=None, endpoint=None, phone_country=None, phone_number=None, skip_confirmation_notification=None, page_access_user=None, component_ids=None):  # noqa: E501
        """PostPagesPageIdSubscribersSubscriber - a model defined in Swagger"""  # noqa: E501
        self._email = None
        self._endpoint = None
        self._phone_country = None
        self._phone_number = None
        self._skip_confirmation_notification = None
        self._page_access_user = None
        self._component_ids = None
        self.discriminator = None
        if email is not None:
            self.email = email
        if endpoint is not None:
            self.endpoint = endpoint
        if phone_country is not None:
            self.phone_country = phone_country
        if phone_number is not None:
            self.phone_number = phone_number
        if skip_confirmation_notification is not None:
            self.skip_confirmation_notification = skip_confirmation_notification
        if page_access_user is not None:
            self.page_access_user = page_access_user
        if component_ids is not None:
            self.component_ids = component_ids

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

        The email address for creating Email and Webhook subscribers.  # noqa: E501

        :return: The email of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :rtype: str
        """
        return self._email

    @email.setter
    def email(self, email):
        """Sets the email of this PostPagesPageIdSubscribersSubscriber.

        The email address for creating Email and Webhook subscribers.  # noqa: E501

        :param email: The email of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :type: str
        """

        self._email = email

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

        The endpoint URI for creating Webhook subscribers.  # noqa: E501

        :return: The endpoint of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :rtype: str
        """
        return self._endpoint

    @endpoint.setter
    def endpoint(self, endpoint):
        """Sets the endpoint of this PostPagesPageIdSubscribersSubscriber.

        The endpoint URI for creating Webhook subscribers.  # noqa: E501

        :param endpoint: The endpoint of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :type: str
        """

        self._endpoint = endpoint

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

        The two-character country where the phone number is located to use for the new SMS subscriber.  # noqa: E501

        :return: The phone_country of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :rtype: str
        """
        return self._phone_country

    @phone_country.setter
    def phone_country(self, phone_country):
        """Sets the phone_country of this PostPagesPageIdSubscribersSubscriber.

        The two-character country where the phone number is located to use for the new SMS subscriber.  # noqa: E501

        :param phone_country: The phone_country of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :type: str
        """

        self._phone_country = phone_country

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

        The phone number (as you would dial from the phone_country) to use for the new SMS subscriber.  # noqa: E501

        :return: The phone_number of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :rtype: str
        """
        return self._phone_number

    @phone_number.setter
    def phone_number(self, phone_number):
        """Sets the phone_number of this PostPagesPageIdSubscribersSubscriber.

        The phone number (as you would dial from the phone_country) to use for the new SMS subscriber.  # noqa: E501

        :param phone_number: The phone_number of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :type: str
        """

        self._phone_number = phone_number

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

        If skip_confirmation_notification is true, the subscriber does not receive any notifications when their subscription changes.  Email subscribers will be automatically opted in. This option is only available for paid pages. This option has no effect for trial customers.  # noqa: E501

        :return: The skip_confirmation_notification of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :rtype: bool
        """
        return self._skip_confirmation_notification

    @skip_confirmation_notification.setter
    def skip_confirmation_notification(self, skip_confirmation_notification):
        """Sets the skip_confirmation_notification of this PostPagesPageIdSubscribersSubscriber.

        If skip_confirmation_notification is true, the subscriber does not receive any notifications when their subscription changes.  Email subscribers will be automatically opted in. This option is only available for paid pages. This option has no effect for trial customers.  # noqa: E501

        :param skip_confirmation_notification: The skip_confirmation_notification of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :type: bool
        """

        self._skip_confirmation_notification = skip_confirmation_notification

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

        The code of the page access user to which the subscriber belongs.  # noqa: E501

        :return: The page_access_user of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :rtype: str
        """
        return self._page_access_user

    @page_access_user.setter
    def page_access_user(self, page_access_user):
        """Sets the page_access_user of this PostPagesPageIdSubscribersSubscriber.

        The code of the page access user to which the subscriber belongs.  # noqa: E501

        :param page_access_user: The page_access_user of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :type: str
        """

        self._page_access_user = page_access_user

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

        A list of component ids for which the subscriber should recieve updates for. Components must be an array with at least one element if it is passed at all. Each component must belong to the page indicated in the path.  # noqa: E501

        :return: The component_ids of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :rtype: list[str]
        """
        return self._component_ids

    @component_ids.setter
    def component_ids(self, component_ids):
        """Sets the component_ids of this PostPagesPageIdSubscribersSubscriber.

        A list of component ids for which the subscriber should recieve updates for. Components must be an array with at least one element if it is passed at all. Each component must belong to the page indicated in the path.  # noqa: E501

        :param component_ids: The component_ids of this PostPagesPageIdSubscribersSubscriber.  # noqa: E501
        :type: list[str]
        """

        self._component_ids = component_ids

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

        return self.__dict__ == other.__dict__

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