# 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.notification import Notification  # noqa: F401,E501


class TimestampRequest(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',
        'hash': 'str',
        'notifications': 'list[Notification]',
        'url': 'str'
    }

    attribute_map = {
        'comment': 'comment',
        'hash': 'hash',
        'notifications': 'notifications',
        'url': 'url'
    }

    def __init__(self, comment=None, hash=None, notifications=None, url=None):  # noqa: E501
        """TimestampRequest - a model defined in Swagger"""  # noqa: E501

        self._comment = None
        self._hash = None
        self._notifications = None
        self._url = None
        self.discriminator = None

        if comment is not None:
            self.comment = comment
        self.hash = hash
        if notifications is not None:
            self.notifications = notifications
        if url is not None:
            self.url = url

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

        You can add a short comment (max. 256 characters) which can be used for indexing and searching (public).  # noqa: E501

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

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

        You can add a short comment (max. 256 characters) which can be used for indexing and searching (public).  # noqa: E501

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

        self._comment = comment

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

        Hash in HEX representation. We suggest to use SHA-256. This hash will be aggregated and included into the blockchain.  # noqa: E501

        :return: The hash of this TimestampRequest.  # noqa: E501
        :rtype: str
        """
        return self._hash

    @hash.setter
    def hash(self, hash):
        """Sets the hash of this TimestampRequest.

        Hash in HEX representation. We suggest to use SHA-256. This hash will be aggregated and included into the blockchain.  # noqa: E501

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

        self._hash = hash

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

        Add a notification/notification list to your submission. Our system will notify the specified target with the timestamp information.  # noqa: E501

        :return: The notifications of this TimestampRequest.  # noqa: E501
        :rtype: list[Notification]
        """
        return self._notifications

    @notifications.setter
    def notifications(self, notifications):
        """Sets the notifications of this TimestampRequest.

        Add a notification/notification list to your submission. Our system will notify the specified target with the timestamp information.  # noqa: E501

        :param notifications: The notifications of this TimestampRequest.  # noqa: E501
        :type: list[Notification]
        """

        self._notifications = notifications

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

        Preprint URL. Insert the generated UUID here. You can generate an UUID-4 and include it into your document: https://originstamp.org/u/uuid4. When submitting the your file, the url is part of the hash, which finally means it the link to the timestamp is part of the timestamp.  # noqa: E501

        :return: The url of this TimestampRequest.  # noqa: E501
        :rtype: str
        """
        return self._url

    @url.setter
    def url(self, url):
        """Sets the url of this TimestampRequest.

        Preprint URL. Insert the generated UUID here. You can generate an UUID-4 and include it into your document: https://originstamp.org/u/uuid4. When submitting the your file, the url is part of the hash, which finally means it the link to the timestamp is part of the timestamp.  # noqa: E501

        :param url: The url of this TimestampRequest.  # noqa: E501
        :type: str
        """

        self._url = url

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

        return self.__dict__ == other.__dict__

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