# 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 Incident(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 = {
        'id': 'str',
        'components': 'list[Component]',
        'created_at': 'datetime',
        'impact': 'str',
        'impact_override': 'str',
        'incident_updates': 'list[IncidentUpdate]',
        'metadata': 'object',
        'monitoring_at': 'datetime',
        'name': 'str',
        'page_id': 'str',
        'postmortem_body': 'str',
        'postmortem_body_last_updated_at': 'datetime',
        'postmortem_ignored': 'bool',
        'postmortem_notified_subscribers': 'bool',
        'postmortem_notified_twitter': 'bool',
        'postmortem_published_at': 'bool',
        'resolved_at': 'datetime',
        'scheduled_auto_completed': 'bool',
        'scheduled_auto_in_progress': 'bool',
        'scheduled_for': 'datetime',
        'auto_transition_deliver_notifications_at_end': 'bool',
        'auto_transition_deliver_notifications_at_start': 'bool',
        'auto_transition_to_maintenance_state': 'bool',
        'auto_transition_to_operational_state': 'bool',
        'scheduled_remind_prior': 'bool',
        'scheduled_reminded_at': 'datetime',
        'scheduled_until': 'datetime',
        'shortlink': 'str',
        'status': 'str',
        'updated_at': 'datetime'
    }

    attribute_map = {
        'id': 'id',
        'components': 'components',
        'created_at': 'created_at',
        'impact': 'impact',
        'impact_override': 'impact_override',
        'incident_updates': 'incident_updates',
        'metadata': 'metadata',
        'monitoring_at': 'monitoring_at',
        'name': 'name',
        'page_id': 'page_id',
        'postmortem_body': 'postmortem_body',
        'postmortem_body_last_updated_at': 'postmortem_body_last_updated_at',
        'postmortem_ignored': 'postmortem_ignored',
        'postmortem_notified_subscribers': 'postmortem_notified_subscribers',
        'postmortem_notified_twitter': 'postmortem_notified_twitter',
        'postmortem_published_at': 'postmortem_published_at',
        'resolved_at': 'resolved_at',
        'scheduled_auto_completed': 'scheduled_auto_completed',
        'scheduled_auto_in_progress': 'scheduled_auto_in_progress',
        'scheduled_for': 'scheduled_for',
        'auto_transition_deliver_notifications_at_end': 'auto_transition_deliver_notifications_at_end',
        'auto_transition_deliver_notifications_at_start': 'auto_transition_deliver_notifications_at_start',
        'auto_transition_to_maintenance_state': 'auto_transition_to_maintenance_state',
        'auto_transition_to_operational_state': 'auto_transition_to_operational_state',
        'scheduled_remind_prior': 'scheduled_remind_prior',
        'scheduled_reminded_at': 'scheduled_reminded_at',
        'scheduled_until': 'scheduled_until',
        'shortlink': 'shortlink',
        'status': 'status',
        'updated_at': 'updated_at'
    }

    def __init__(self, id=None, components=None, created_at=None, impact=None, impact_override=None, incident_updates=None, metadata=None, monitoring_at=None, name=None, page_id=None, postmortem_body=None, postmortem_body_last_updated_at=None, postmortem_ignored=None, postmortem_notified_subscribers=None, postmortem_notified_twitter=None, postmortem_published_at=None, resolved_at=None, scheduled_auto_completed=None, scheduled_auto_in_progress=None, scheduled_for=None, auto_transition_deliver_notifications_at_end=None, auto_transition_deliver_notifications_at_start=None, auto_transition_to_maintenance_state=None, auto_transition_to_operational_state=None, scheduled_remind_prior=None, scheduled_reminded_at=None, scheduled_until=None, shortlink=None, status=None, updated_at=None):  # noqa: E501
        """Incident - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._components = None
        self._created_at = None
        self._impact = None
        self._impact_override = None
        self._incident_updates = None
        self._metadata = None
        self._monitoring_at = None
        self._name = None
        self._page_id = None
        self._postmortem_body = None
        self._postmortem_body_last_updated_at = None
        self._postmortem_ignored = None
        self._postmortem_notified_subscribers = None
        self._postmortem_notified_twitter = None
        self._postmortem_published_at = None
        self._resolved_at = None
        self._scheduled_auto_completed = None
        self._scheduled_auto_in_progress = None
        self._scheduled_for = None
        self._auto_transition_deliver_notifications_at_end = None
        self._auto_transition_deliver_notifications_at_start = None
        self._auto_transition_to_maintenance_state = None
        self._auto_transition_to_operational_state = None
        self._scheduled_remind_prior = None
        self._scheduled_reminded_at = None
        self._scheduled_until = None
        self._shortlink = None
        self._status = None
        self._updated_at = None
        self.discriminator = None
        if id is not None:
            self.id = id
        if components is not None:
            self.components = components
        if created_at is not None:
            self.created_at = created_at
        if impact is not None:
            self.impact = impact
        if impact_override is not None:
            self.impact_override = impact_override
        if incident_updates is not None:
            self.incident_updates = incident_updates
        if metadata is not None:
            self.metadata = metadata
        if monitoring_at is not None:
            self.monitoring_at = monitoring_at
        if name is not None:
            self.name = name
        if page_id is not None:
            self.page_id = page_id
        if postmortem_body is not None:
            self.postmortem_body = postmortem_body
        if postmortem_body_last_updated_at is not None:
            self.postmortem_body_last_updated_at = postmortem_body_last_updated_at
        if postmortem_ignored is not None:
            self.postmortem_ignored = postmortem_ignored
        if postmortem_notified_subscribers is not None:
            self.postmortem_notified_subscribers = postmortem_notified_subscribers
        if postmortem_notified_twitter is not None:
            self.postmortem_notified_twitter = postmortem_notified_twitter
        if postmortem_published_at is not None:
            self.postmortem_published_at = postmortem_published_at
        if resolved_at is not None:
            self.resolved_at = resolved_at
        if scheduled_auto_completed is not None:
            self.scheduled_auto_completed = scheduled_auto_completed
        if scheduled_auto_in_progress is not None:
            self.scheduled_auto_in_progress = scheduled_auto_in_progress
        if scheduled_for is not None:
            self.scheduled_for = scheduled_for
        if auto_transition_deliver_notifications_at_end is not None:
            self.auto_transition_deliver_notifications_at_end = auto_transition_deliver_notifications_at_end
        if auto_transition_deliver_notifications_at_start is not None:
            self.auto_transition_deliver_notifications_at_start = auto_transition_deliver_notifications_at_start
        if auto_transition_to_maintenance_state is not None:
            self.auto_transition_to_maintenance_state = auto_transition_to_maintenance_state
        if auto_transition_to_operational_state is not None:
            self.auto_transition_to_operational_state = auto_transition_to_operational_state
        if scheduled_remind_prior is not None:
            self.scheduled_remind_prior = scheduled_remind_prior
        if scheduled_reminded_at is not None:
            self.scheduled_reminded_at = scheduled_reminded_at
        if scheduled_until is not None:
            self.scheduled_until = scheduled_until
        if shortlink is not None:
            self.shortlink = shortlink
        if status is not None:
            self.status = status
        if updated_at is not None:
            self.updated_at = updated_at

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

        Incident Identifier  # noqa: E501

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

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

        Incident Identifier  # noqa: E501

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

        self._id = id

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

        Incident components  # noqa: E501

        :return: The components of this Incident.  # noqa: E501
        :rtype: list[Component]
        """
        return self._components

    @components.setter
    def components(self, components):
        """Sets the components of this Incident.

        Incident components  # noqa: E501

        :param components: The components of this Incident.  # noqa: E501
        :type: list[Component]
        """

        self._components = components

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

        The timestamp when the incident was created at.  # noqa: E501

        :return: The created_at of this Incident.  # noqa: E501
        :rtype: datetime
        """
        return self._created_at

    @created_at.setter
    def created_at(self, created_at):
        """Sets the created_at of this Incident.

        The timestamp when the incident was created at.  # noqa: E501

        :param created_at: The created_at of this Incident.  # noqa: E501
        :type: datetime
        """

        self._created_at = created_at

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

        The impact of the incident.  # noqa: E501

        :return: The impact of this Incident.  # noqa: E501
        :rtype: str
        """
        return self._impact

    @impact.setter
    def impact(self, impact):
        """Sets the impact of this Incident.

        The impact of the incident.  # noqa: E501

        :param impact: The impact of this Incident.  # noqa: E501
        :type: str
        """
        allowed_values = ["none", "maintenance", "minor", "major", "critical"]  # noqa: E501
        if impact not in allowed_values:
            raise ValueError(
                "Invalid value for `impact` ({0}), must be one of {1}"  # noqa: E501
                .format(impact, allowed_values)
            )

        self._impact = impact

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

        value to override calculated impact value  # noqa: E501

        :return: The impact_override of this Incident.  # noqa: E501
        :rtype: str
        """
        return self._impact_override

    @impact_override.setter
    def impact_override(self, impact_override):
        """Sets the impact_override of this Incident.

        value to override calculated impact value  # noqa: E501

        :param impact_override: The impact_override of this Incident.  # noqa: E501
        :type: str
        """
        allowed_values = ["none", "maintenance", "minor", "major", "critical"]  # noqa: E501
        if impact_override not in allowed_values:
            raise ValueError(
                "Invalid value for `impact_override` ({0}), must be one of {1}"  # noqa: E501
                .format(impact_override, allowed_values)
            )

        self._impact_override = impact_override

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

        The incident updates for incident.  # noqa: E501

        :return: The incident_updates of this Incident.  # noqa: E501
        :rtype: list[IncidentUpdate]
        """
        return self._incident_updates

    @incident_updates.setter
    def incident_updates(self, incident_updates):
        """Sets the incident_updates of this Incident.

        The incident updates for incident.  # noqa: E501

        :param incident_updates: The incident_updates of this Incident.  # noqa: E501
        :type: list[IncidentUpdate]
        """

        self._incident_updates = incident_updates

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

        Metadata attached to the incident. Top level values must be objects.  # noqa: E501

        :return: The metadata of this Incident.  # noqa: E501
        :rtype: Object
        """
        return self._metadata

    @metadata.setter
    def metadata(self, metadata):
        """Sets the metadata of this Incident.

        Metadata attached to the incident. Top level values must be objects.  # noqa: E501

        :param metadata: The metadata of this Incident.  # noqa: E501
        :type: Object
        """

        self._metadata = metadata

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

        The timestamp when incident entered monitoring state.  # noqa: E501

        :return: The monitoring_at of this Incident.  # noqa: E501
        :rtype: datetime
        """
        return self._monitoring_at

    @monitoring_at.setter
    def monitoring_at(self, monitoring_at):
        """Sets the monitoring_at of this Incident.

        The timestamp when incident entered monitoring state.  # noqa: E501

        :param monitoring_at: The monitoring_at of this Incident.  # noqa: E501
        :type: datetime
        """

        self._monitoring_at = monitoring_at

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

        Incident Name. There is a maximum limit of 255 characters.  # noqa: E501

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

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

        Incident Name. There is a maximum limit of 255 characters.  # noqa: E501

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

        self._name = name

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

        Incident Page Identifier  # noqa: E501

        :return: The page_id of this Incident.  # noqa: E501
        :rtype: str
        """
        return self._page_id

    @page_id.setter
    def page_id(self, page_id):
        """Sets the page_id of this Incident.

        Incident Page Identifier  # noqa: E501

        :param page_id: The page_id of this Incident.  # noqa: E501
        :type: str
        """

        self._page_id = page_id

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

        Body of the Postmortem.  # noqa: E501

        :return: The postmortem_body of this Incident.  # noqa: E501
        :rtype: str
        """
        return self._postmortem_body

    @postmortem_body.setter
    def postmortem_body(self, postmortem_body):
        """Sets the postmortem_body of this Incident.

        Body of the Postmortem.  # noqa: E501

        :param postmortem_body: The postmortem_body of this Incident.  # noqa: E501
        :type: str
        """

        self._postmortem_body = postmortem_body

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

        The timestamp when the incident postmortem body was last updated at.  # noqa: E501

        :return: The postmortem_body_last_updated_at of this Incident.  # noqa: E501
        :rtype: datetime
        """
        return self._postmortem_body_last_updated_at

    @postmortem_body_last_updated_at.setter
    def postmortem_body_last_updated_at(self, postmortem_body_last_updated_at):
        """Sets the postmortem_body_last_updated_at of this Incident.

        The timestamp when the incident postmortem body was last updated at.  # noqa: E501

        :param postmortem_body_last_updated_at: The postmortem_body_last_updated_at of this Incident.  # noqa: E501
        :type: datetime
        """

        self._postmortem_body_last_updated_at = postmortem_body_last_updated_at

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

        Controls whether the incident will have postmortem.  # noqa: E501

        :return: The postmortem_ignored of this Incident.  # noqa: E501
        :rtype: bool
        """
        return self._postmortem_ignored

    @postmortem_ignored.setter
    def postmortem_ignored(self, postmortem_ignored):
        """Sets the postmortem_ignored of this Incident.

        Controls whether the incident will have postmortem.  # noqa: E501

        :param postmortem_ignored: The postmortem_ignored of this Incident.  # noqa: E501
        :type: bool
        """

        self._postmortem_ignored = postmortem_ignored

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

        Indicates whether subscribers are already notificed about postmortem.  # noqa: E501

        :return: The postmortem_notified_subscribers of this Incident.  # noqa: E501
        :rtype: bool
        """
        return self._postmortem_notified_subscribers

    @postmortem_notified_subscribers.setter
    def postmortem_notified_subscribers(self, postmortem_notified_subscribers):
        """Sets the postmortem_notified_subscribers of this Incident.

        Indicates whether subscribers are already notificed about postmortem.  # noqa: E501

        :param postmortem_notified_subscribers: The postmortem_notified_subscribers of this Incident.  # noqa: E501
        :type: bool
        """

        self._postmortem_notified_subscribers = postmortem_notified_subscribers

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

        Controls whether to decide if notify postmortem on twitter.  # noqa: E501

        :return: The postmortem_notified_twitter of this Incident.  # noqa: E501
        :rtype: bool
        """
        return self._postmortem_notified_twitter

    @postmortem_notified_twitter.setter
    def postmortem_notified_twitter(self, postmortem_notified_twitter):
        """Sets the postmortem_notified_twitter of this Incident.

        Controls whether to decide if notify postmortem on twitter.  # noqa: E501

        :param postmortem_notified_twitter: The postmortem_notified_twitter of this Incident.  # noqa: E501
        :type: bool
        """

        self._postmortem_notified_twitter = postmortem_notified_twitter

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

        The timestamp when the postmortem was published.  # noqa: E501

        :return: The postmortem_published_at of this Incident.  # noqa: E501
        :rtype: bool
        """
        return self._postmortem_published_at

    @postmortem_published_at.setter
    def postmortem_published_at(self, postmortem_published_at):
        """Sets the postmortem_published_at of this Incident.

        The timestamp when the postmortem was published.  # noqa: E501

        :param postmortem_published_at: The postmortem_published_at of this Incident.  # noqa: E501
        :type: bool
        """

        self._postmortem_published_at = postmortem_published_at

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

        The timestamp when incident was resolved.  # noqa: E501

        :return: The resolved_at of this Incident.  # noqa: E501
        :rtype: datetime
        """
        return self._resolved_at

    @resolved_at.setter
    def resolved_at(self, resolved_at):
        """Sets the resolved_at of this Incident.

        The timestamp when incident was resolved.  # noqa: E501

        :param resolved_at: The resolved_at of this Incident.  # noqa: E501
        :type: datetime
        """

        self._resolved_at = resolved_at

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

        Controls whether the incident is scheduled to automatically change to complete.  # noqa: E501

        :return: The scheduled_auto_completed of this Incident.  # noqa: E501
        :rtype: bool
        """
        return self._scheduled_auto_completed

    @scheduled_auto_completed.setter
    def scheduled_auto_completed(self, scheduled_auto_completed):
        """Sets the scheduled_auto_completed of this Incident.

        Controls whether the incident is scheduled to automatically change to complete.  # noqa: E501

        :param scheduled_auto_completed: The scheduled_auto_completed of this Incident.  # noqa: E501
        :type: bool
        """

        self._scheduled_auto_completed = scheduled_auto_completed

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

        Controls whether the incident is scheduled to automatically change to in progress.  # noqa: E501

        :return: The scheduled_auto_in_progress of this Incident.  # noqa: E501
        :rtype: bool
        """
        return self._scheduled_auto_in_progress

    @scheduled_auto_in_progress.setter
    def scheduled_auto_in_progress(self, scheduled_auto_in_progress):
        """Sets the scheduled_auto_in_progress of this Incident.

        Controls whether the incident is scheduled to automatically change to in progress.  # noqa: E501

        :param scheduled_auto_in_progress: The scheduled_auto_in_progress of this Incident.  # noqa: E501
        :type: bool
        """

        self._scheduled_auto_in_progress = scheduled_auto_in_progress

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

        The timestamp the incident is scheduled for.  # noqa: E501

        :return: The scheduled_for of this Incident.  # noqa: E501
        :rtype: datetime
        """
        return self._scheduled_for

    @scheduled_for.setter
    def scheduled_for(self, scheduled_for):
        """Sets the scheduled_for of this Incident.

        The timestamp the incident is scheduled for.  # noqa: E501

        :param scheduled_for: The scheduled_for of this Incident.  # noqa: E501
        :type: datetime
        """

        self._scheduled_for = scheduled_for

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

        Controls whether send notification when scheduled maintenances auto transition to completed.  # noqa: E501

        :return: The auto_transition_deliver_notifications_at_end of this Incident.  # noqa: E501
        :rtype: bool
        """
        return self._auto_transition_deliver_notifications_at_end

    @auto_transition_deliver_notifications_at_end.setter
    def auto_transition_deliver_notifications_at_end(self, auto_transition_deliver_notifications_at_end):
        """Sets the auto_transition_deliver_notifications_at_end of this Incident.

        Controls whether send notification when scheduled maintenances auto transition to completed.  # noqa: E501

        :param auto_transition_deliver_notifications_at_end: The auto_transition_deliver_notifications_at_end of this Incident.  # noqa: E501
        :type: bool
        """

        self._auto_transition_deliver_notifications_at_end = auto_transition_deliver_notifications_at_end

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

        Controls whether send notification when scheduled maintenances auto transition to started.  # noqa: E501

        :return: The auto_transition_deliver_notifications_at_start of this Incident.  # noqa: E501
        :rtype: bool
        """
        return self._auto_transition_deliver_notifications_at_start

    @auto_transition_deliver_notifications_at_start.setter
    def auto_transition_deliver_notifications_at_start(self, auto_transition_deliver_notifications_at_start):
        """Sets the auto_transition_deliver_notifications_at_start of this Incident.

        Controls whether send notification when scheduled maintenances auto transition to started.  # noqa: E501

        :param auto_transition_deliver_notifications_at_start: The auto_transition_deliver_notifications_at_start of this Incident.  # noqa: E501
        :type: bool
        """

        self._auto_transition_deliver_notifications_at_start = auto_transition_deliver_notifications_at_start

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

        Controls whether change components status to under_maintenance once scheduled maintenance is in progress.  # noqa: E501

        :return: The auto_transition_to_maintenance_state of this Incident.  # noqa: E501
        :rtype: bool
        """
        return self._auto_transition_to_maintenance_state

    @auto_transition_to_maintenance_state.setter
    def auto_transition_to_maintenance_state(self, auto_transition_to_maintenance_state):
        """Sets the auto_transition_to_maintenance_state of this Incident.

        Controls whether change components status to under_maintenance once scheduled maintenance is in progress.  # noqa: E501

        :param auto_transition_to_maintenance_state: The auto_transition_to_maintenance_state of this Incident.  # noqa: E501
        :type: bool
        """

        self._auto_transition_to_maintenance_state = auto_transition_to_maintenance_state

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

        Controls whether change components status to operational once scheduled maintenance completes.  # noqa: E501

        :return: The auto_transition_to_operational_state of this Incident.  # noqa: E501
        :rtype: bool
        """
        return self._auto_transition_to_operational_state

    @auto_transition_to_operational_state.setter
    def auto_transition_to_operational_state(self, auto_transition_to_operational_state):
        """Sets the auto_transition_to_operational_state of this Incident.

        Controls whether change components status to operational once scheduled maintenance completes.  # noqa: E501

        :param auto_transition_to_operational_state: The auto_transition_to_operational_state of this Incident.  # noqa: E501
        :type: bool
        """

        self._auto_transition_to_operational_state = auto_transition_to_operational_state

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

        Controls whether to remind subscribers prior to scheduled incidents.  # noqa: E501

        :return: The scheduled_remind_prior of this Incident.  # noqa: E501
        :rtype: bool
        """
        return self._scheduled_remind_prior

    @scheduled_remind_prior.setter
    def scheduled_remind_prior(self, scheduled_remind_prior):
        """Sets the scheduled_remind_prior of this Incident.

        Controls whether to remind subscribers prior to scheduled incidents.  # noqa: E501

        :param scheduled_remind_prior: The scheduled_remind_prior of this Incident.  # noqa: E501
        :type: bool
        """

        self._scheduled_remind_prior = scheduled_remind_prior

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

        The timestamp when the scheduled incident reminder was sent at.  # noqa: E501

        :return: The scheduled_reminded_at of this Incident.  # noqa: E501
        :rtype: datetime
        """
        return self._scheduled_reminded_at

    @scheduled_reminded_at.setter
    def scheduled_reminded_at(self, scheduled_reminded_at):
        """Sets the scheduled_reminded_at of this Incident.

        The timestamp when the scheduled incident reminder was sent at.  # noqa: E501

        :param scheduled_reminded_at: The scheduled_reminded_at of this Incident.  # noqa: E501
        :type: datetime
        """

        self._scheduled_reminded_at = scheduled_reminded_at

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

        The timestamp the incident is scheduled until.  # noqa: E501

        :return: The scheduled_until of this Incident.  # noqa: E501
        :rtype: datetime
        """
        return self._scheduled_until

    @scheduled_until.setter
    def scheduled_until(self, scheduled_until):
        """Sets the scheduled_until of this Incident.

        The timestamp the incident is scheduled until.  # noqa: E501

        :param scheduled_until: The scheduled_until of this Incident.  # noqa: E501
        :type: datetime
        """

        self._scheduled_until = scheduled_until

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

        Incident Shortlink.  # noqa: E501

        :return: The shortlink of this Incident.  # noqa: E501
        :rtype: str
        """
        return self._shortlink

    @shortlink.setter
    def shortlink(self, shortlink):
        """Sets the shortlink of this Incident.

        Incident Shortlink.  # noqa: E501

        :param shortlink: The shortlink of this Incident.  # noqa: E501
        :type: str
        """

        self._shortlink = shortlink

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

        The incident status. For realtime incidents, valid values are investigating, identified, monitoring, and resolved. For scheduled incidents, valid values are scheduled, in_progress, verifying, and completed.  # noqa: E501

        :return: The status of this Incident.  # noqa: E501
        :rtype: str
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this Incident.

        The incident status. For realtime incidents, valid values are investigating, identified, monitoring, and resolved. For scheduled incidents, valid values are scheduled, in_progress, verifying, and completed.  # noqa: E501

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

        self._status = status

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

        The timestamp when the incident was updated at.  # noqa: E501

        :return: The updated_at of this Incident.  # noqa: E501
        :rtype: datetime
        """
        return self._updated_at

    @updated_at.setter
    def updated_at(self, updated_at):
        """Sets the updated_at of this Incident.

        The timestamp when the incident was updated at.  # noqa: E501

        :param updated_at: The updated_at of this Incident.  # noqa: E501
        :type: datetime
        """

        self._updated_at = updated_at

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

        return self.__dict__ == other.__dict__

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