# coding: utf-8

"""
    The Selling Partner API for FBA inbound operations.

    The Selling Partner API for Fulfillment By Amazon (FBA) Inbound. The FBA Inbound API enables building inbound workflows to create, manage, and send shipments into Amazon's fulfillment network. The API has interoperability with the Send-to-Amazon user interface.

    The version of the OpenAPI document: 2024-03-20
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


import pprint
import re  # noqa: F401

import six

from spapi.configuration import Configuration


class DocumentDownload(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 = {
        'download_type': 'str',
        'expiration': 'datetime',
        'uri': 'str',
    }

    attribute_map = {
        'download_type': 'downloadType',
        'expiration': 'expiration',
        'uri': 'uri',
    }

    def __init__(self, download_type=None, expiration=None, uri=None, _configuration=None):  # noqa: E501
        """DocumentDownload - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._download_type = None
        self._expiration = None
        self._uri = None
        self.discriminator = None

        self.download_type = download_type
        if expiration is not None:
            self.expiration = expiration
        self.uri = uri

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

        The type of download. Possible values: `URL`.  # noqa: E501

        :return: The download_type of this DocumentDownload.  # noqa: E501
        :rtype: str
        """
        return self._download_type

    @download_type.setter
    def download_type(self, download_type):
        """Sets the download_type of this DocumentDownload.

        The type of download. Possible values: `URL`.  # noqa: E501

        :param download_type: The download_type of this DocumentDownload.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and download_type is None:
            raise ValueError("Invalid value for `download_type`, must not be `None`")  # noqa: E501

        self._download_type = download_type

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

        The URI's expiration time. In [ISO 8601](https://developer-docs.amazon.com/sp-api/docs/iso-8601) datetime format with pattern `yyyy-MM-ddTHH:mm:ss.sssZ`.  # noqa: E501

        :return: The expiration of this DocumentDownload.  # noqa: E501
        :rtype: datetime
        """
        return self._expiration

    @expiration.setter
    def expiration(self, expiration):
        """Sets the expiration of this DocumentDownload.

        The URI's expiration time. In [ISO 8601](https://developer-docs.amazon.com/sp-api/docs/iso-8601) datetime format with pattern `yyyy-MM-ddTHH:mm:ss.sssZ`.  # noqa: E501

        :param expiration: The expiration of this DocumentDownload.  # noqa: E501
        :type: datetime
        """

        self._expiration = expiration

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

        Uniform resource identifier to identify where the document is located.  # noqa: E501

        :return: The uri of this DocumentDownload.  # noqa: E501
        :rtype: str
        """
        return self._uri

    @uri.setter
    def uri(self, uri):
        """Sets the uri of this DocumentDownload.

        Uniform resource identifier to identify where the document is located.  # noqa: E501

        :param uri: The uri of this DocumentDownload.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and uri is None:
            raise ValueError("Invalid value for `uri`, must not be `None`")  # noqa: E501

        self._uri = uri

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

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
