# coding: utf-8

"""
    Metadata API

    The Metadata API has operations that retrieve configuration details pertaining to the different eBay marketplaces. In addition to marketplace information, the API also has operations that get information that helps sellers list items on eBay.  # noqa: E501

    OpenAPI spec version: v1.9.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class ProductIdentifier(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 = {
        'ean': 'str',
        'epid': 'str',
        'isbn': 'str',
        'product_id': 'str',
        'upc': 'str'
    }

    attribute_map = {
        'ean': 'ean',
        'epid': 'epid',
        'isbn': 'isbn',
        'product_id': 'productId',
        'upc': 'upc'
    }

    def __init__(self, ean=None, epid=None, isbn=None, product_id=None, upc=None):  # noqa: E501
        """ProductIdentifier - a model defined in Swagger"""  # noqa: E501
        self._ean = None
        self._epid = None
        self._isbn = None
        self._product_id = None
        self._upc = None
        self.discriminator = None
        if ean is not None:
            self.ean = ean
        if epid is not None:
            self.epid = epid
        if isbn is not None:
            self.isbn = isbn
        if product_id is not None:
            self.product_id = product_id
        if upc is not None:
            self.upc = upc

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

        The EAN of the item, if applicable. EAN is the European Article Number, a barcode standard for retail product labeling primarily used outside of North America.  # noqa: E501

        :return: The ean of this ProductIdentifier.  # noqa: E501
        :rtype: str
        """
        return self._ean

    @ean.setter
    def ean(self, ean):
        """Sets the ean of this ProductIdentifier.

        The EAN of the item, if applicable. EAN is the European Article Number, a barcode standard for retail product labeling primarily used outside of North America.  # noqa: E501

        :param ean: The ean of this ProductIdentifier.  # noqa: E501
        :type: str
        """

        self._ean = ean

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

        The ePID (eBay Product Identifier) of the item, if applicable. ePID is a unique identifier used by eBay to track products in its catalog.<br><br>Use the <a href=\"/api-docs/commerce/catalog/resources/product/methods/getProduct\" target=\"_blank \">getProduct</a> method of the Catalog API to retrieve the ePID of an item.  # noqa: E501

        :return: The epid of this ProductIdentifier.  # noqa: E501
        :rtype: str
        """
        return self._epid

    @epid.setter
    def epid(self, epid):
        """Sets the epid of this ProductIdentifier.

        The ePID (eBay Product Identifier) of the item, if applicable. ePID is a unique identifier used by eBay to track products in its catalog.<br><br>Use the <a href=\"/api-docs/commerce/catalog/resources/product/methods/getProduct\" target=\"_blank \">getProduct</a> method of the Catalog API to retrieve the ePID of an item.  # noqa: E501

        :param epid: The epid of this ProductIdentifier.  # noqa: E501
        :type: str
        """

        self._epid = epid

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

        The ISBN of the item, if applicable. ISBN is the International Standard Book Number, a unique identifier for books.  # noqa: E501

        :return: The isbn of this ProductIdentifier.  # noqa: E501
        :rtype: str
        """
        return self._isbn

    @isbn.setter
    def isbn(self, isbn):
        """Sets the isbn of this ProductIdentifier.

        The ISBN of the item, if applicable. ISBN is the International Standard Book Number, a unique identifier for books.  # noqa: E501

        :param isbn: The isbn of this ProductIdentifier.  # noqa: E501
        :type: str
        """

        self._isbn = isbn

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

        The product ID of the item, if applicable. The product ID is a general term for a unique identifier assigned to a product.  # noqa: E501

        :return: The product_id of this ProductIdentifier.  # noqa: E501
        :rtype: str
        """
        return self._product_id

    @product_id.setter
    def product_id(self, product_id):
        """Sets the product_id of this ProductIdentifier.

        The product ID of the item, if applicable. The product ID is a general term for a unique identifier assigned to a product.  # noqa: E501

        :param product_id: The product_id of this ProductIdentifier.  # noqa: E501
        :type: str
        """

        self._product_id = product_id

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

        The UPC of the item, if applicable. UPC stands for Universal Product Code, a unique identifier for products, primarily in North America.  # noqa: E501

        :return: The upc of this ProductIdentifier.  # noqa: E501
        :rtype: str
        """
        return self._upc

    @upc.setter
    def upc(self, upc):
        """Sets the upc of this ProductIdentifier.

        The UPC of the item, if applicable. UPC stands for Universal Product Code, a unique identifier for products, primarily in North America.  # noqa: E501

        :param upc: The upc of this ProductIdentifier.  # noqa: E501
        :type: str
        """

        self._upc = upc

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

        return self.__dict__ == other.__dict__

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