# coding: utf-8

"""
    Selling Partner API for Pricing

    The Selling Partner API for Pricing helps you programmatically retrieve product pricing and offer pricing information for Amazon Marketplace products.  For more information, refer to the [Product Pricing v2022-05-01 Use Case Guide](https://developer-docs.amazon.com/sp-api/docs/product-pricing-api-v2022-05-01-use-case-guide).

    The version of the OpenAPI document: 2022-05-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 CompetitiveSummaryResponseBody(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 = {
        'asin': 'str',
        'marketplace_id': 'str',
        'featured_buying_options': 'List[FeaturedBuyingOption]',
        'lowest_priced_offers': 'List[LowestPricedOffer]',
        'reference_prices': 'List[ReferencePrice]',
        'errors': 'List[Error]',
    }

    attribute_map = {
        'asin': 'asin',
        'marketplace_id': 'marketplaceId',
        'featured_buying_options': 'featuredBuyingOptions',
        'lowest_priced_offers': 'lowestPricedOffers',
        'reference_prices': 'referencePrices',
        'errors': 'errors',
    }

    def __init__(self, asin=None, marketplace_id=None, featured_buying_options=None, lowest_priced_offers=None, reference_prices=None, errors=None, _configuration=None):  # noqa: E501
        """CompetitiveSummaryResponseBody - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._asin = None
        self._marketplace_id = None
        self._featured_buying_options = None
        self._lowest_priced_offers = None
        self._reference_prices = None
        self._errors = None
        self.discriminator = None

        self.asin = asin
        self.marketplace_id = marketplace_id
        if featured_buying_options is not None:
            self.featured_buying_options = featured_buying_options
        if lowest_priced_offers is not None:
            self.lowest_priced_offers = lowest_priced_offers
        if reference_prices is not None:
            self.reference_prices = reference_prices
        if errors is not None:
            self.errors = errors

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

        The ASIN of the item.  # noqa: E501

        :return: The asin of this CompetitiveSummaryResponseBody.  # noqa: E501
        :rtype: str
        """
        return self._asin

    @asin.setter
    def asin(self, asin):
        """Sets the asin of this CompetitiveSummaryResponseBody.

        The ASIN of the item.  # noqa: E501

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

        self._asin = asin

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

        The marketplace ID is the globally unique identifier of a marketplace. 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 CompetitiveSummaryResponseBody.  # noqa: E501
        :rtype: str
        """
        return self._marketplace_id

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

        The marketplace ID is the globally unique identifier of a marketplace. 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 CompetitiveSummaryResponseBody.  # 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 featured_buying_options(self):
        """Gets the featured_buying_options of this CompetitiveSummaryResponseBody.  # noqa: E501

        A list of featured buying options for the specified ASIN `marketplaceId` combination.  # noqa: E501

        :return: The featured_buying_options of this CompetitiveSummaryResponseBody.  # noqa: E501
        :rtype: List[FeaturedBuyingOption]
        """
        return self._featured_buying_options

    @featured_buying_options.setter
    def featured_buying_options(self, featured_buying_options):
        """Sets the featured_buying_options of this CompetitiveSummaryResponseBody.

        A list of featured buying options for the specified ASIN `marketplaceId` combination.  # noqa: E501

        :param featured_buying_options: The featured_buying_options of this CompetitiveSummaryResponseBody.  # noqa: E501
        :type: List[FeaturedBuyingOption]
        """

        self._featured_buying_options = featured_buying_options

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

        A list of lowest priced offers for the specified ASIN `marketplaceId` combination.  # noqa: E501

        :return: The lowest_priced_offers of this CompetitiveSummaryResponseBody.  # noqa: E501
        :rtype: List[LowestPricedOffer]
        """
        return self._lowest_priced_offers

    @lowest_priced_offers.setter
    def lowest_priced_offers(self, lowest_priced_offers):
        """Sets the lowest_priced_offers of this CompetitiveSummaryResponseBody.

        A list of lowest priced offers for the specified ASIN `marketplaceId` combination.  # noqa: E501

        :param lowest_priced_offers: The lowest_priced_offers of this CompetitiveSummaryResponseBody.  # noqa: E501
        :type: List[LowestPricedOffer]
        """

        self._lowest_priced_offers = lowest_priced_offers

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

        A list of reference prices for the specified ASIN `marketplaceId` combination.  # noqa: E501

        :return: The reference_prices of this CompetitiveSummaryResponseBody.  # noqa: E501
        :rtype: List[ReferencePrice]
        """
        return self._reference_prices

    @reference_prices.setter
    def reference_prices(self, reference_prices):
        """Sets the reference_prices of this CompetitiveSummaryResponseBody.

        A list of reference prices for the specified ASIN `marketplaceId` combination.  # noqa: E501

        :param reference_prices: The reference_prices of this CompetitiveSummaryResponseBody.  # noqa: E501
        :type: List[ReferencePrice]
        """

        self._reference_prices = reference_prices

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

        A list of error responses that are returned when a request is unsuccessful.  # noqa: E501

        :return: The errors of this CompetitiveSummaryResponseBody.  # noqa: E501
        :rtype: List[Error]
        """
        return self._errors

    @errors.setter
    def errors(self, errors):
        """Sets the errors of this CompetitiveSummaryResponseBody.

        A list of error responses that are returned when a request is unsuccessful.  # noqa: E501

        :param errors: The errors of this CompetitiveSummaryResponseBody.  # noqa: E501
        :type: List[Error]
        """

        self._errors = errors

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

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