# 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 PostPagesPageIdIncidentTemplatesTemplate(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 = {
        'name': 'str',
        'title': 'str',
        'body': 'str',
        'group_id': 'str',
        'update_status': 'str',
        'should_tweet': 'bool',
        'should_send_notifications': 'bool',
        'component_ids': 'list[str]'
    }

    attribute_map = {
        'name': 'name',
        'title': 'title',
        'body': 'body',
        'group_id': 'group_id',
        'update_status': 'update_status',
        'should_tweet': 'should_tweet',
        'should_send_notifications': 'should_send_notifications',
        'component_ids': 'component_ids'
    }

    def __init__(self, name=None, title=None, body=None, group_id=None, update_status=None, should_tweet=None, should_send_notifications=None, component_ids=None):  # noqa: E501
        """PostPagesPageIdIncidentTemplatesTemplate - a model defined in Swagger"""  # noqa: E501
        self._name = None
        self._title = None
        self._body = None
        self._group_id = None
        self._update_status = None
        self._should_tweet = None
        self._should_send_notifications = None
        self._component_ids = None
        self.discriminator = None
        self.name = name
        self.title = title
        self.body = body
        if group_id is not None:
            self.group_id = group_id
        if update_status is not None:
            self.update_status = update_status
        if should_tweet is not None:
            self.should_tweet = should_tweet
        if should_send_notifications is not None:
            self.should_send_notifications = should_send_notifications
        if component_ids is not None:
            self.component_ids = component_ids

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

        Name of the template, as shown in the list on the \"Templates\" tab of the \"Incidents\" page  # noqa: E501

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

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

        Name of the template, as shown in the list on the \"Templates\" tab of the \"Incidents\" page  # noqa: E501

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

        self._name = name

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

        Title to be applied to the incident or maintenance when selecting this template  # noqa: E501

        :return: The title of this PostPagesPageIdIncidentTemplatesTemplate.  # noqa: E501
        :rtype: str
        """
        return self._title

    @title.setter
    def title(self, title):
        """Sets the title of this PostPagesPageIdIncidentTemplatesTemplate.

        Title to be applied to the incident or maintenance when selecting this template  # noqa: E501

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

        self._title = title

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

        The initial message, created as the first incident or maintenance update.  # noqa: E501

        :return: The body of this PostPagesPageIdIncidentTemplatesTemplate.  # noqa: E501
        :rtype: str
        """
        return self._body

    @body.setter
    def body(self, body):
        """Sets the body of this PostPagesPageIdIncidentTemplatesTemplate.

        The initial message, created as the first incident or maintenance update.  # noqa: E501

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

        self._body = body

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

        Identifier of Template Group this template belongs to  # noqa: E501

        :return: The group_id of this PostPagesPageIdIncidentTemplatesTemplate.  # noqa: E501
        :rtype: str
        """
        return self._group_id

    @group_id.setter
    def group_id(self, group_id):
        """Sets the group_id of this PostPagesPageIdIncidentTemplatesTemplate.

        Identifier of Template Group this template belongs to  # noqa: E501

        :param group_id: The group_id of this PostPagesPageIdIncidentTemplatesTemplate.  # noqa: E501
        :type: str
        """

        self._group_id = group_id

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

        The status the incident or maintenance should transition to when selecting this template  # noqa: E501

        :return: The update_status of this PostPagesPageIdIncidentTemplatesTemplate.  # noqa: E501
        :rtype: str
        """
        return self._update_status

    @update_status.setter
    def update_status(self, update_status):
        """Sets the update_status of this PostPagesPageIdIncidentTemplatesTemplate.

        The status the incident or maintenance should transition to when selecting this template  # noqa: E501

        :param update_status: The update_status of this PostPagesPageIdIncidentTemplatesTemplate.  # noqa: E501
        :type: str
        """
        allowed_values = ["investigating", "identified", "monitoring", "resolved", "scheduled", "in_progress", "verifying", "completed"]  # noqa: E501
        if update_status not in allowed_values:
            raise ValueError(
                "Invalid value for `update_status` ({0}), must be one of {1}"  # noqa: E501
                .format(update_status, allowed_values)
            )

        self._update_status = update_status

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

        Whether the \"tweet update\" checkbox should be selected when selecting this template  # noqa: E501

        :return: The should_tweet of this PostPagesPageIdIncidentTemplatesTemplate.  # noqa: E501
        :rtype: bool
        """
        return self._should_tweet

    @should_tweet.setter
    def should_tweet(self, should_tweet):
        """Sets the should_tweet of this PostPagesPageIdIncidentTemplatesTemplate.

        Whether the \"tweet update\" checkbox should be selected when selecting this template  # noqa: E501

        :param should_tweet: The should_tweet of this PostPagesPageIdIncidentTemplatesTemplate.  # noqa: E501
        :type: bool
        """

        self._should_tweet = should_tweet

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

        Whether the \"deliver notifications\" checkbox should be selected when selecting this template  # noqa: E501

        :return: The should_send_notifications of this PostPagesPageIdIncidentTemplatesTemplate.  # noqa: E501
        :rtype: bool
        """
        return self._should_send_notifications

    @should_send_notifications.setter
    def should_send_notifications(self, should_send_notifications):
        """Sets the should_send_notifications of this PostPagesPageIdIncidentTemplatesTemplate.

        Whether the \"deliver notifications\" checkbox should be selected when selecting this template  # noqa: E501

        :param should_send_notifications: The should_send_notifications of this PostPagesPageIdIncidentTemplatesTemplate.  # noqa: E501
        :type: bool
        """

        self._should_send_notifications = should_send_notifications

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

        List of component_ids affected by this incident  # noqa: E501

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

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

        List of component_ids affected by this incident  # noqa: E501

        :param component_ids: The component_ids of this PostPagesPageIdIncidentTemplatesTemplate.  # 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(PostPagesPageIdIncidentTemplatesTemplate, 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, PostPagesPageIdIncidentTemplatesTemplate):
            return False

        return self.__dict__ == other.__dict__

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