# coding: utf-8

"""
    Selling Partner API for Catalog Items

    Use the Selling Partner API for Catalog Items to retrieve information about items in the Amazon catalog.  For more information, refer to the [Catalog Items API Use Case Guide](https://developer-docs.amazon.com/sp-api/docs/:catalog-items-api-v2022-04-01-use-case-guide).

    The version of the OpenAPI document: 2022-04-01
    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 ItemSummaryByMarketplace(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 = {
        'marketplace_id': 'str',
        'adult_product': 'bool',
        'autographed': 'bool',
        'brand': 'str',
        'browse_classification': 'ItemBrowseClassification',
        'color': 'str',
        'contributors': 'List[ItemContributor]',
        'item_classification': 'str',
        'item_name': 'str',
        'manufacturer': 'str',
        'memorabilia': 'bool',
        'model_number': 'str',
        'package_quantity': 'int',
        'part_number': 'str',
        'release_date': 'date',
        'size': 'str',
        'style': 'str',
        'trade_in_eligible': 'bool',
        'website_display_group': 'str',
        'website_display_group_name': 'str',
    }

    attribute_map = {
        'marketplace_id': 'marketplaceId',
        'adult_product': 'adultProduct',
        'autographed': 'autographed',
        'brand': 'brand',
        'browse_classification': 'browseClassification',
        'color': 'color',
        'contributors': 'contributors',
        'item_classification': 'itemClassification',
        'item_name': 'itemName',
        'manufacturer': 'manufacturer',
        'memorabilia': 'memorabilia',
        'model_number': 'modelNumber',
        'package_quantity': 'packageQuantity',
        'part_number': 'partNumber',
        'release_date': 'releaseDate',
        'size': 'size',
        'style': 'style',
        'trade_in_eligible': 'tradeInEligible',
        'website_display_group': 'websiteDisplayGroup',
        'website_display_group_name': 'websiteDisplayGroupName',
    }

    def __init__(self, marketplace_id=None, adult_product=None, autographed=None, brand=None, browse_classification=None, color=None, contributors=None, item_classification=None, item_name=None, manufacturer=None, memorabilia=None, model_number=None, package_quantity=None, part_number=None, release_date=None, size=None, style=None, trade_in_eligible=None, website_display_group=None, website_display_group_name=None, _configuration=None):  # noqa: E501
        """ItemSummaryByMarketplace - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._marketplace_id = None
        self._adult_product = None
        self._autographed = None
        self._brand = None
        self._browse_classification = None
        self._color = None
        self._contributors = None
        self._item_classification = None
        self._item_name = None
        self._manufacturer = None
        self._memorabilia = None
        self._model_number = None
        self._package_quantity = None
        self._part_number = None
        self._release_date = None
        self._size = None
        self._style = None
        self._trade_in_eligible = None
        self._website_display_group = None
        self._website_display_group_name = None
        self.discriminator = None

        self.marketplace_id = marketplace_id
        if adult_product is not None:
            self.adult_product = adult_product
        if autographed is not None:
            self.autographed = autographed
        if brand is not None:
            self.brand = brand
        if browse_classification is not None:
            self.browse_classification = browse_classification
        if color is not None:
            self.color = color
        if contributors is not None:
            self.contributors = contributors
        if item_classification is not None:
            self.item_classification = item_classification
        if item_name is not None:
            self.item_name = item_name
        if manufacturer is not None:
            self.manufacturer = manufacturer
        if memorabilia is not None:
            self.memorabilia = memorabilia
        if model_number is not None:
            self.model_number = model_number
        if package_quantity is not None:
            self.package_quantity = package_quantity
        if part_number is not None:
            self.part_number = part_number
        if release_date is not None:
            self.release_date = release_date
        if size is not None:
            self.size = size
        if style is not None:
            self.style = style
        if trade_in_eligible is not None:
            self.trade_in_eligible = trade_in_eligible
        if website_display_group is not None:
            self.website_display_group = website_display_group
        if website_display_group_name is not None:
            self.website_display_group_name = website_display_group_name

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

        Amazon marketplace identifier. To find the ID for your marketplace, refer to [Marketplace IDs](https://developer-docs.amazon.com/sp-api/docs/marketplace-ids).  # noqa: E501

        :return: The marketplace_id of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._marketplace_id

    @marketplace_id.setter
    def marketplace_id(self, marketplace_id):
        """Sets the marketplace_id of this ItemSummaryByMarketplace.

        Amazon marketplace identifier. To find the ID for your marketplace, refer to [Marketplace IDs](https://developer-docs.amazon.com/sp-api/docs/marketplace-ids).  # noqa: E501

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

        self._marketplace_id = marketplace_id

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

        When `true`, the Amazon catalog item is intended for an adult audience or is sexual in nature.  # noqa: E501

        :return: The adult_product of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: bool
        """
        return self._adult_product

    @adult_product.setter
    def adult_product(self, adult_product):
        """Sets the adult_product of this ItemSummaryByMarketplace.

        When `true`, the Amazon catalog item is intended for an adult audience or is sexual in nature.  # noqa: E501

        :param adult_product: The adult_product of this ItemSummaryByMarketplace.  # noqa: E501
        :type: bool
        """

        self._adult_product = adult_product

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

        When `true`, the Amazon catalog item is autographed.  # noqa: E501

        :return: The autographed of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: bool
        """
        return self._autographed

    @autographed.setter
    def autographed(self, autographed):
        """Sets the autographed of this ItemSummaryByMarketplace.

        When `true`, the Amazon catalog item is autographed.  # noqa: E501

        :param autographed: The autographed of this ItemSummaryByMarketplace.  # noqa: E501
        :type: bool
        """

        self._autographed = autographed

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

        Name of the brand that is associated with the Amazon catalog item.  # noqa: E501

        :return: The brand of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._brand

    @brand.setter
    def brand(self, brand):
        """Sets the brand of this ItemSummaryByMarketplace.

        Name of the brand that is associated with the Amazon catalog item.  # noqa: E501

        :param brand: The brand of this ItemSummaryByMarketplace.  # noqa: E501
        :type: str
        """

        self._brand = brand

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


        :return: The browse_classification of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: ItemBrowseClassification
        """
        return self._browse_classification

    @browse_classification.setter
    def browse_classification(self, browse_classification):
        """Sets the browse_classification of this ItemSummaryByMarketplace.


        :param browse_classification: The browse_classification of this ItemSummaryByMarketplace.  # noqa: E501
        :type: ItemBrowseClassification
        """

        self._browse_classification = browse_classification

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

        The color that is associated with the Amazon catalog item.  # noqa: E501

        :return: The color of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._color

    @color.setter
    def color(self, color):
        """Sets the color of this ItemSummaryByMarketplace.

        The color that is associated with the Amazon catalog item.  # noqa: E501

        :param color: The color of this ItemSummaryByMarketplace.  # noqa: E501
        :type: str
        """

        self._color = color

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

        Individual contributors to the creation of the item, such as the authors or actors.  # noqa: E501

        :return: The contributors of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: List[ItemContributor]
        """
        return self._contributors

    @contributors.setter
    def contributors(self, contributors):
        """Sets the contributors of this ItemSummaryByMarketplace.

        Individual contributors to the creation of the item, such as the authors or actors.  # noqa: E501

        :param contributors: The contributors of this ItemSummaryByMarketplace.  # noqa: E501
        :type: List[ItemContributor]
        """

        self._contributors = contributors

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

        Classification type that is associated with the Amazon catalog item.  # noqa: E501

        :return: The item_classification of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._item_classification

    @item_classification.setter
    def item_classification(self, item_classification):
        """Sets the item_classification of this ItemSummaryByMarketplace.

        Classification type that is associated with the Amazon catalog item.  # noqa: E501

        :param item_classification: The item_classification of this ItemSummaryByMarketplace.  # noqa: E501
        :type: str
        """
        allowed_values = ["BASE_PRODUCT", "OTHER", "PRODUCT_BUNDLE", "VARIATION_PARENT"]  # noqa: E501
        if (self._configuration.client_side_validation and
                item_classification not in allowed_values):
            raise ValueError(
                "Invalid value for `item_classification` ({0}), must be one of {1}"  # noqa: E501
                .format(item_classification, allowed_values)
            )

        self._item_classification = item_classification

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

        The name that is associated with the Amazon catalog item.  # noqa: E501

        :return: The item_name of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._item_name

    @item_name.setter
    def item_name(self, item_name):
        """Sets the item_name of this ItemSummaryByMarketplace.

        The name that is associated with the Amazon catalog item.  # noqa: E501

        :param item_name: The item_name of this ItemSummaryByMarketplace.  # noqa: E501
        :type: str
        """

        self._item_name = item_name

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

        The name of the manufacturer that is associated with the Amazon catalog item.  # noqa: E501

        :return: The manufacturer of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._manufacturer

    @manufacturer.setter
    def manufacturer(self, manufacturer):
        """Sets the manufacturer of this ItemSummaryByMarketplace.

        The name of the manufacturer that is associated with the Amazon catalog item.  # noqa: E501

        :param manufacturer: The manufacturer of this ItemSummaryByMarketplace.  # noqa: E501
        :type: str
        """

        self._manufacturer = manufacturer

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

        When true, the item is classified as memorabilia.  # noqa: E501

        :return: The memorabilia of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: bool
        """
        return self._memorabilia

    @memorabilia.setter
    def memorabilia(self, memorabilia):
        """Sets the memorabilia of this ItemSummaryByMarketplace.

        When true, the item is classified as memorabilia.  # noqa: E501

        :param memorabilia: The memorabilia of this ItemSummaryByMarketplace.  # noqa: E501
        :type: bool
        """

        self._memorabilia = memorabilia

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

        The model number that is associated with the Amazon catalog item.  # noqa: E501

        :return: The model_number of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._model_number

    @model_number.setter
    def model_number(self, model_number):
        """Sets the model_number of this ItemSummaryByMarketplace.

        The model number that is associated with the Amazon catalog item.  # noqa: E501

        :param model_number: The model_number of this ItemSummaryByMarketplace.  # noqa: E501
        :type: str
        """

        self._model_number = model_number

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

        The quantity of the Amazon catalog item within one package.  # noqa: E501

        :return: The package_quantity of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: int
        """
        return self._package_quantity

    @package_quantity.setter
    def package_quantity(self, package_quantity):
        """Sets the package_quantity of this ItemSummaryByMarketplace.

        The quantity of the Amazon catalog item within one package.  # noqa: E501

        :param package_quantity: The package_quantity of this ItemSummaryByMarketplace.  # noqa: E501
        :type: int
        """

        self._package_quantity = package_quantity

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

        The part number that is associated with the Amazon catalog item.  # noqa: E501

        :return: The part_number of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._part_number

    @part_number.setter
    def part_number(self, part_number):
        """Sets the part_number of this ItemSummaryByMarketplace.

        The part number that is associated with the Amazon catalog item.  # noqa: E501

        :param part_number: The part_number of this ItemSummaryByMarketplace.  # noqa: E501
        :type: str
        """

        self._part_number = part_number

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

        The earliest date on which the Amazon catalog item can be shipped to customers.  # noqa: E501

        :return: The release_date of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: date
        """
        return self._release_date

    @release_date.setter
    def release_date(self, release_date):
        """Sets the release_date of this ItemSummaryByMarketplace.

        The earliest date on which the Amazon catalog item can be shipped to customers.  # noqa: E501

        :param release_date: The release_date of this ItemSummaryByMarketplace.  # noqa: E501
        :type: date
        """

        self._release_date = release_date

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

        The name of the size of the Amazon catalog item.  # noqa: E501

        :return: The size of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._size

    @size.setter
    def size(self, size):
        """Sets the size of this ItemSummaryByMarketplace.

        The name of the size of the Amazon catalog item.  # noqa: E501

        :param size: The size of this ItemSummaryByMarketplace.  # noqa: E501
        :type: str
        """

        self._size = size

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

        The name of the style that is associated with the Amazon catalog item.  # noqa: E501

        :return: The style of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._style

    @style.setter
    def style(self, style):
        """Sets the style of this ItemSummaryByMarketplace.

        The name of the style that is associated with the Amazon catalog item.  # noqa: E501

        :param style: The style of this ItemSummaryByMarketplace.  # noqa: E501
        :type: str
        """

        self._style = style

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

        When true, the Amazon catalog item is eligible for trade-in.  # noqa: E501

        :return: The trade_in_eligible of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: bool
        """
        return self._trade_in_eligible

    @trade_in_eligible.setter
    def trade_in_eligible(self, trade_in_eligible):
        """Sets the trade_in_eligible of this ItemSummaryByMarketplace.

        When true, the Amazon catalog item is eligible for trade-in.  # noqa: E501

        :param trade_in_eligible: The trade_in_eligible of this ItemSummaryByMarketplace.  # noqa: E501
        :type: bool
        """

        self._trade_in_eligible = trade_in_eligible

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

        The identifier of the website display group that is associated with the Amazon catalog item.  # noqa: E501

        :return: The website_display_group of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._website_display_group

    @website_display_group.setter
    def website_display_group(self, website_display_group):
        """Sets the website_display_group of this ItemSummaryByMarketplace.

        The identifier of the website display group that is associated with the Amazon catalog item.  # noqa: E501

        :param website_display_group: The website_display_group of this ItemSummaryByMarketplace.  # noqa: E501
        :type: str
        """

        self._website_display_group = website_display_group

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

        The display name of the website display group that is associated with the Amazon catalog item.  # noqa: E501

        :return: The website_display_group_name of this ItemSummaryByMarketplace.  # noqa: E501
        :rtype: str
        """
        return self._website_display_group_name

    @website_display_group_name.setter
    def website_display_group_name(self, website_display_group_name):
        """Sets the website_display_group_name of this ItemSummaryByMarketplace.

        The display name of the website display group that is associated with the Amazon catalog item.  # noqa: E501

        :param website_display_group_name: The website_display_group_name of this ItemSummaryByMarketplace.  # noqa: E501
        :type: str
        """

        self._website_display_group_name = website_display_group_name

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

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