# coding: utf-8

"""
    The Selling Partner API for Amazon Warehousing and Distribution

    The Selling Partner API for Amazon Warehousing and Distribution (AWD) provides programmatic access to information about AWD shipments and inventory.

    The version of the OpenAPI document: 2024-05-09
    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 InboundShipmentSummary(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 = {
        'created_at': 'datetime',
        'external_reference_id': 'str',
        'order_id': 'str',
        'shipment_id': 'str',
        'shipment_status': 'InboundShipmentStatus',
        'updated_at': 'datetime',
    }

    attribute_map = {
        'created_at': 'createdAt',
        'external_reference_id': 'externalReferenceId',
        'order_id': 'orderId',
        'shipment_id': 'shipmentId',
        'shipment_status': 'shipmentStatus',
        'updated_at': 'updatedAt',
    }

    def __init__(self, created_at=None, external_reference_id=None, order_id=None, shipment_id=None, shipment_status=None, updated_at=None, _configuration=None):  # noqa: E501
        """InboundShipmentSummary - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._created_at = None
        self._external_reference_id = None
        self._order_id = None
        self._shipment_id = None
        self._shipment_status = None
        self._updated_at = None
        self.discriminator = None

        if created_at is not None:
            self.created_at = created_at
        if external_reference_id is not None:
            self.external_reference_id = external_reference_id
        self.order_id = order_id
        self.shipment_id = shipment_id
        self.shipment_status = shipment_status
        if updated_at is not None:
            self.updated_at = updated_at

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

        Timestamp when the shipment was created.  # noqa: E501

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

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

        Timestamp when the shipment was created.  # noqa: E501

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

        self._created_at = created_at

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

        Optional client-provided reference ID that can be used to correlate this shipment with client resources. For example, to map this shipment to an internal bookkeeping order record.  # noqa: E501

        :return: The external_reference_id of this InboundShipmentSummary.  # noqa: E501
        :rtype: str
        """
        return self._external_reference_id

    @external_reference_id.setter
    def external_reference_id(self, external_reference_id):
        """Sets the external_reference_id of this InboundShipmentSummary.

        Optional client-provided reference ID that can be used to correlate this shipment with client resources. For example, to map this shipment to an internal bookkeeping order record.  # noqa: E501

        :param external_reference_id: The external_reference_id of this InboundShipmentSummary.  # noqa: E501
        :type: str
        """

        self._external_reference_id = external_reference_id

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

        The AWD inbound order ID that this inbound shipment belongs to.  # noqa: E501

        :return: The order_id of this InboundShipmentSummary.  # noqa: E501
        :rtype: str
        """
        return self._order_id

    @order_id.setter
    def order_id(self, order_id):
        """Sets the order_id of this InboundShipmentSummary.

        The AWD inbound order ID that this inbound shipment belongs to.  # noqa: E501

        :param order_id: The order_id of this InboundShipmentSummary.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and order_id is None:
            raise ValueError("Invalid value for `order_id`, must not be `None`")  # noqa: E501
        if (self._configuration.client_side_validation and
                order_id is not None and len(order_id) < 1):
            raise ValueError("Invalid value for `order_id`, length must be greater than or equal to `1`")  # noqa: E501

        self._order_id = order_id

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

        A unique shipment ID.  # noqa: E501

        :return: The shipment_id of this InboundShipmentSummary.  # noqa: E501
        :rtype: str
        """
        return self._shipment_id

    @shipment_id.setter
    def shipment_id(self, shipment_id):
        """Sets the shipment_id of this InboundShipmentSummary.

        A unique shipment ID.  # noqa: E501

        :param shipment_id: The shipment_id of this InboundShipmentSummary.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and shipment_id is None:
            raise ValueError("Invalid value for `shipment_id`, must not be `None`")  # noqa: E501
        if (self._configuration.client_side_validation and
                shipment_id is not None and len(shipment_id) < 1):
            raise ValueError("Invalid value for `shipment_id`, length must be greater than or equal to `1`")  # noqa: E501

        self._shipment_id = shipment_id

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


        :return: The shipment_status of this InboundShipmentSummary.  # noqa: E501
        :rtype: InboundShipmentStatus
        """
        return self._shipment_status

    @shipment_status.setter
    def shipment_status(self, shipment_status):
        """Sets the shipment_status of this InboundShipmentSummary.


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

        self._shipment_status = shipment_status

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

        Timestamp when the shipment was updated.  # noqa: E501

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

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

        Timestamp when the shipment was updated.  # noqa: E501

        :param updated_at: The updated_at of this InboundShipmentSummary.  # 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(InboundShipmentSummary, 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, InboundShipmentSummary):
            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, InboundShipmentSummary):
            return True

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