# coding: utf-8

"""
    OriginStamp Documentation

    <br/>The following documentation describes the API v3 for OriginStamp. With this documentation you are able to try out the different requests and see the responses. For the authorization, add your API key to the Authorization header of your request.<br/><h2>Invoice</h2><p>The invoice is based on your individual usage. The following table illustrates the request types, that are billed in credits.</p><table><tr><th>Request Type</th><th>Condition</th><th>Credits</th><tr><td style='border-bottom-style:solid; border-color: #c0c0c0;'></td><tr><th>Submission</th><th>create timestamp</th><th>1 Credit</th><tr><th>Submission</th><th>timestamp already exists</th><th>0.3 Credits</th><tr><th>Status</th><th>no timestamp information available</th><th>0.1 Credit</th><tr><th>Status</th><th>timestamp information</th><th>0.3 Credits</th><tr><th>Proof</th><th>no proof available</th><th>0.1 Credits</th><tr><th>Proof</th><th>merkle tree as proof</th><th>3 Credits</th><tr><th>Proof</th><th>seed as proof</th><th>3 Credits</th><tr><th>Proof</th><th>PDF Certificate</th><th>5 Credits</th><tr><th>Notification</th><th>webhook notification</th><th>1.5 Credits</th><tr><th>Notification</th><th>mail notification</th><th>5 Credits</th><tr><th>Notification</th><th>trigger webhook</th><th>5 0.3</th></table><br/><h2>Common Problems</h2><ul><li>Make sure you set the Authorization with your API key</li><li>If a cloudflare error occurs, please set a custom UserAgent header.</li><li>Please have a look at the models below to find out what each field means.</li></ul>  # noqa: E501

    OpenAPI spec version: 3.0
    Contact: mail@originstamp.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from originstamp_client.models.timestamp_data import TimestampData  # noqa: F401,E501


class TimestampResponse(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 = {
        'comment': 'str',
        'created': 'bool',
        'date_created': 'int',
        'hash_string': 'str',
        'timestamps': 'list[TimestampData]'
    }

    attribute_map = {
        'comment': 'comment',
        'created': 'created',
        'date_created': 'date_created',
        'hash_string': 'hash_string',
        'timestamps': 'timestamps'
    }

    def __init__(self, comment=None, created=None, date_created=None, hash_string=None, timestamps=None):  # noqa: E501
        """TimestampResponse - a model defined in Swagger"""  # noqa: E501

        self._comment = None
        self._created = None
        self._date_created = None
        self._hash_string = None
        self._timestamps = None
        self.discriminator = None

        if comment is not None:
            self.comment = comment
        if created is not None:
            self.created = created
        if date_created is not None:
            self.date_created = date_created
        if hash_string is not None:
            self.hash_string = hash_string
        if timestamps is not None:
            self.timestamps = timestamps

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

        The comment which was added in the submission of the hash.  # noqa: E501

        :return: The comment of this TimestampResponse.  # noqa: E501
        :rtype: str
        """
        return self._comment

    @comment.setter
    def comment(self, comment):
        """Sets the comment of this TimestampResponse.

        The comment which was added in the submission of the hash.  # noqa: E501

        :param comment: The comment of this TimestampResponse.  # noqa: E501
        :type: str
        """

        self._comment = comment

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

        Field is set to true if it is a novel hash. If the flag is false, the hash was already submitted before.  # noqa: E501

        :return: The created of this TimestampResponse.  # noqa: E501
        :rtype: bool
        """
        return self._created

    @created.setter
    def created(self, created):
        """Sets the created of this TimestampResponse.

        Field is set to true if it is a novel hash. If the flag is false, the hash was already submitted before.  # noqa: E501

        :param created: The created of this TimestampResponse.  # noqa: E501
        :type: bool
        """

        self._created = created

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

        The time when your hash was submitted to OriginStamp. The date is returned in the following format: [ms] since 1.1.1970 (unix epoch), timezone: UTC. This is not considered as a true timestamp.  # noqa: E501

        :return: The date_created of this TimestampResponse.  # noqa: E501
        :rtype: int
        """
        return self._date_created

    @date_created.setter
    def date_created(self, date_created):
        """Sets the date_created of this TimestampResponse.

        The time when your hash was submitted to OriginStamp. The date is returned in the following format: [ms] since 1.1.1970 (unix epoch), timezone: UTC. This is not considered as a true timestamp.  # noqa: E501

        :param date_created: The date_created of this TimestampResponse.  # noqa: E501
        :type: int
        """

        self._date_created = date_created

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

        The submitted hash in hex representation.  # noqa: E501

        :return: The hash_string of this TimestampResponse.  # noqa: E501
        :rtype: str
        """
        return self._hash_string

    @hash_string.setter
    def hash_string(self, hash_string):
        """Sets the hash_string of this TimestampResponse.

        The submitted hash in hex representation.  # noqa: E501

        :param hash_string: The hash_string of this TimestampResponse.  # noqa: E501
        :type: str
        """

        self._hash_string = hash_string

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

        Contains all the timestamp data of your hash until now.  # noqa: E501

        :return: The timestamps of this TimestampResponse.  # noqa: E501
        :rtype: list[TimestampData]
        """
        return self._timestamps

    @timestamps.setter
    def timestamps(self, timestamps):
        """Sets the timestamps of this TimestampResponse.

        Contains all the timestamp data of your hash until now.  # noqa: E501

        :param timestamps: The timestamps of this TimestampResponse.  # noqa: E501
        :type: list[TimestampData]
        """

        self._timestamps = timestamps

    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

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

        return self.__dict__ == other.__dict__

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