# coding: utf-8

"""
    The Selling Partner API for Amazon External Fulfillment Shipments Processing

    You can use the External Fulfillment Shipments API to retrieve, manage, and track shipments processed through Amazon's external fulfillment network. Use this API to get shipment details, monitor status changes, and access fulfillment requirements.

    The version of the OpenAPI document: 2024-09-11
    Contact: marketplaceapitest@amazon.com
    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 PackageShipLabel(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 = {
        'package_id': 'str',
        'ship_label_metadata': 'ShipLabelMetadata',
        'file_data': 'DocumentV2',
        'status': 'Status',
        'error_details': 'Error',
    }

    attribute_map = {
        'package_id': 'packageId',
        'ship_label_metadata': 'shipLabelMetadata',
        'file_data': 'fileData',
        'status': 'status',
        'error_details': 'errorDetails',
    }

    def __init__(self, package_id=None, ship_label_metadata=None, file_data=None, status=None, error_details=None, _configuration=None):  # noqa: E501
        """PackageShipLabel - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._package_id = None
        self._ship_label_metadata = None
        self._file_data = None
        self._status = None
        self._error_details = None
        self.discriminator = None

        if package_id is not None:
            self.package_id = package_id
        if ship_label_metadata is not None:
            self.ship_label_metadata = ship_label_metadata
        if file_data is not None:
            self.file_data = file_data
        if status is not None:
            self.status = status
        if error_details is not None:
            self.error_details = error_details

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

        The package ID of the package.  # noqa: E501

        :return: The package_id of this PackageShipLabel.  # noqa: E501
        :rtype: str
        """
        return self._package_id

    @package_id.setter
    def package_id(self, package_id):
        """Sets the package_id of this PackageShipLabel.

        The package ID of the package.  # noqa: E501

        :param package_id: The package_id of this PackageShipLabel.  # noqa: E501
        :type: str
        """

        self._package_id = package_id

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


        :return: The ship_label_metadata of this PackageShipLabel.  # noqa: E501
        :rtype: ShipLabelMetadata
        """
        return self._ship_label_metadata

    @ship_label_metadata.setter
    def ship_label_metadata(self, ship_label_metadata):
        """Sets the ship_label_metadata of this PackageShipLabel.


        :param ship_label_metadata: The ship_label_metadata of this PackageShipLabel.  # noqa: E501
        :type: ShipLabelMetadata
        """

        self._ship_label_metadata = ship_label_metadata

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


        :return: The file_data of this PackageShipLabel.  # noqa: E501
        :rtype: DocumentV2
        """
        return self._file_data

    @file_data.setter
    def file_data(self, file_data):
        """Sets the file_data of this PackageShipLabel.


        :param file_data: The file_data of this PackageShipLabel.  # noqa: E501
        :type: DocumentV2
        """

        self._file_data = file_data

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


        :return: The status of this PackageShipLabel.  # noqa: E501
        :rtype: Status
        """
        return self._status

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


        :param status: The status of this PackageShipLabel.  # noqa: E501
        :type: Status
        """

        self._status = status

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


        :return: The error_details of this PackageShipLabel.  # noqa: E501
        :rtype: Error
        """
        return self._error_details

    @error_details.setter
    def error_details(self, error_details):
        """Sets the error_details of this PackageShipLabel.


        :param error_details: The error_details of this PackageShipLabel.  # noqa: E501
        :type: Error
        """

        self._error_details = error_details

    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(PackageShipLabel, 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, PackageShipLabel):
            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, PackageShipLabel):
            return True

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