# coding: utf-8

"""
    Buy Marketing Api

    The Marketing API retrieves eBay products based on a metric, such as Best Selling, as well as products that were also bought and also viewed.  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class SimilarItem(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 = {
        'bid_count': 'int',
        'current_bid_price': 'Amount',
        'gallery_image_url': 'str',
        'item_end_date': 'str',
        'item_id': 'str',
        'item_location': 'ItemLocation',
        'item_web_url': 'str',
        'listing_marketplace_id': 'str',
        'price': 'Amount',
        'primary_category': 'Category',
        'shipping_cost': 'Amount',
        'shipping_cost_type': 'str',
        'subtitle': 'str',
        'title': 'str'
    }

    attribute_map = {
        'bid_count': 'bidCount',
        'current_bid_price': 'currentBidPrice',
        'gallery_image_url': 'galleryImageUrl',
        'item_end_date': 'itemEndDate',
        'item_id': 'itemId',
        'item_location': 'itemLocation',
        'item_web_url': 'itemWebUrl',
        'listing_marketplace_id': 'listingMarketplaceId',
        'price': 'price',
        'primary_category': 'primaryCategory',
        'shipping_cost': 'shippingCost',
        'shipping_cost_type': 'shippingCostType',
        'subtitle': 'subtitle',
        'title': 'title'
    }

    def __init__(self, bid_count=None, current_bid_price=None, gallery_image_url=None, item_end_date=None, item_id=None, item_location=None, item_web_url=None, listing_marketplace_id=None, price=None, primary_category=None, shipping_cost=None, shipping_cost_type=None, subtitle=None, title=None):  # noqa: E501
        """SimilarItem - a model defined in Swagger"""  # noqa: E501
        self._bid_count = None
        self._current_bid_price = None
        self._gallery_image_url = None
        self._item_end_date = None
        self._item_id = None
        self._item_location = None
        self._item_web_url = None
        self._listing_marketplace_id = None
        self._price = None
        self._primary_category = None
        self._shipping_cost = None
        self._shipping_cost_type = None
        self._subtitle = None
        self._title = None
        self.discriminator = None
        if bid_count is not None:
            self.bid_count = bid_count
        if current_bid_price is not None:
            self.current_bid_price = current_bid_price
        if gallery_image_url is not None:
            self.gallery_image_url = gallery_image_url
        if item_end_date is not None:
            self.item_end_date = item_end_date
        if item_id is not None:
            self.item_id = item_id
        if item_location is not None:
            self.item_location = item_location
        if item_web_url is not None:
            self.item_web_url = item_web_url
        if listing_marketplace_id is not None:
            self.listing_marketplace_id = listing_marketplace_id
        if price is not None:
            self.price = price
        if primary_category is not None:
            self.primary_category = primary_category
        if shipping_cost is not None:
            self.shipping_cost = shipping_cost
        if shipping_cost_type is not None:
            self.shipping_cost_type = shipping_cost_type
        if subtitle is not None:
            self.subtitle = subtitle
        if title is not None:
            self.title = title

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


        :return: The bid_count of this SimilarItem.  # noqa: E501
        :rtype: int
        """
        return self._bid_count

    @bid_count.setter
    def bid_count(self, bid_count):
        """Sets the bid_count of this SimilarItem.


        :param bid_count: The bid_count of this SimilarItem.  # noqa: E501
        :type: int
        """

        self._bid_count = bid_count

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


        :return: The current_bid_price of this SimilarItem.  # noqa: E501
        :rtype: Amount
        """
        return self._current_bid_price

    @current_bid_price.setter
    def current_bid_price(self, current_bid_price):
        """Sets the current_bid_price of this SimilarItem.


        :param current_bid_price: The current_bid_price of this SimilarItem.  # noqa: E501
        :type: Amount
        """

        self._current_bid_price = current_bid_price

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

        The container that returns the current highest bid for an auction item.<br><br>The <b>value</b> field shows the dollar value of the current highest bid, and the <b>currency</b> (3-digit ISO code) field denotes the currency associated with that bid value.<br><br>This container will only be returned for auction items.  # noqa: E501

        :return: The gallery_image_url of this SimilarItem.  # noqa: E501
        :rtype: str
        """
        return self._gallery_image_url

    @gallery_image_url.setter
    def gallery_image_url(self, gallery_image_url):
        """Sets the gallery_image_url of this SimilarItem.

        The container that returns the current highest bid for an auction item.<br><br>The <b>value</b> field shows the dollar value of the current highest bid, and the <b>currency</b> (3-digit ISO code) field denotes the currency associated with that bid value.<br><br>This container will only be returned for auction items.  # noqa: E501

        :param gallery_image_url: The gallery_image_url of this SimilarItem.  # noqa: E501
        :type: str
        """

        self._gallery_image_url = gallery_image_url

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

        A timestamp that indicates the date and time a listing is scheduled to end.<br><br>This value is returned in UTC format (<code>yyyy-MM-ddThh:mm:ss.sssZ</code>), which can be converted into the local time of the buyer.  # noqa: E501

        :return: The item_end_date of this SimilarItem.  # noqa: E501
        :rtype: str
        """
        return self._item_end_date

    @item_end_date.setter
    def item_end_date(self, item_end_date):
        """Sets the item_end_date of this SimilarItem.

        A timestamp that indicates the date and time a listing is scheduled to end.<br><br>This value is returned in UTC format (<code>yyyy-MM-ddThh:mm:ss.sssZ</code>), which can be converted into the local time of the buyer.  # noqa: E501

        :param item_end_date: The item_end_date of this SimilarItem.  # noqa: E501
        :type: str
        """

        self._item_end_date = item_end_date

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

        The unique RESTful identifier of the item.  # noqa: E501

        :return: The item_id of this SimilarItem.  # noqa: E501
        :rtype: str
        """
        return self._item_id

    @item_id.setter
    def item_id(self, item_id):
        """Sets the item_id of this SimilarItem.

        The unique RESTful identifier of the item.  # noqa: E501

        :param item_id: The item_id of this SimilarItem.  # noqa: E501
        :type: str
        """

        self._item_id = item_id

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


        :return: The item_location of this SimilarItem.  # noqa: E501
        :rtype: ItemLocation
        """
        return self._item_location

    @item_location.setter
    def item_location(self, item_location):
        """Sets the item_location of this SimilarItem.


        :param item_location: The item_location of this SimilarItem.  # noqa: E501
        :type: ItemLocation
        """

        self._item_location = item_location

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

        The URL to the View Item page of the listing.  # noqa: E501

        :return: The item_web_url of this SimilarItem.  # noqa: E501
        :rtype: str
        """
        return self._item_web_url

    @item_web_url.setter
    def item_web_url(self, item_web_url):
        """Sets the item_web_url of this SimilarItem.

        The URL to the View Item page of the listing.  # noqa: E501

        :param item_web_url: The item_web_url of this SimilarItem.  # noqa: E501
        :type: str
        """

        self._item_web_url = item_web_url

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

        The unique identifier of the eBay marketplace of the listing. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/buy/marketing/types/ba:MarketplaceIdEnum'>eBay API documentation</a>  # noqa: E501

        :return: The listing_marketplace_id of this SimilarItem.  # noqa: E501
        :rtype: str
        """
        return self._listing_marketplace_id

    @listing_marketplace_id.setter
    def listing_marketplace_id(self, listing_marketplace_id):
        """Sets the listing_marketplace_id of this SimilarItem.

        The unique identifier of the eBay marketplace of the listing. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/buy/marketing/types/ba:MarketplaceIdEnum'>eBay API documentation</a>  # noqa: E501

        :param listing_marketplace_id: The listing_marketplace_id of this SimilarItem.  # noqa: E501
        :type: str
        """

        self._listing_marketplace_id = listing_marketplace_id

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


        :return: The price of this SimilarItem.  # noqa: E501
        :rtype: Amount
        """
        return self._price

    @price.setter
    def price(self, price):
        """Sets the price of this SimilarItem.


        :param price: The price of this SimilarItem.  # noqa: E501
        :type: Amount
        """

        self._price = price

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


        :return: The primary_category of this SimilarItem.  # noqa: E501
        :rtype: Category
        """
        return self._primary_category

    @primary_category.setter
    def primary_category(self, primary_category):
        """Sets the primary_category of this SimilarItem.


        :param primary_category: The primary_category of this SimilarItem.  # noqa: E501
        :type: Category
        """

        self._primary_category = primary_category

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


        :return: The shipping_cost of this SimilarItem.  # noqa: E501
        :rtype: Amount
        """
        return self._shipping_cost

    @shipping_cost.setter
    def shipping_cost(self, shipping_cost):
        """Sets the shipping_cost of this SimilarItem.


        :param shipping_cost: The shipping_cost of this SimilarItem.  # noqa: E501
        :type: Amount
        """

        self._shipping_cost = shipping_cost

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

        Indicates the type of shipping used to ship the item. Possible values are <code>FIXED</code> (flat-rate shipping) and <code>CALCULATED</code> (shipping cost calculated based on item and buyer location).  # noqa: E501

        :return: The shipping_cost_type of this SimilarItem.  # noqa: E501
        :rtype: str
        """
        return self._shipping_cost_type

    @shipping_cost_type.setter
    def shipping_cost_type(self, shipping_cost_type):
        """Sets the shipping_cost_type of this SimilarItem.

        Indicates the type of shipping used to ship the item. Possible values are <code>FIXED</code> (flat-rate shipping) and <code>CALCULATED</code> (shipping cost calculated based on item and buyer location).  # noqa: E501

        :param shipping_cost_type: The shipping_cost_type of this SimilarItem.  # noqa: E501
        :type: str
        """

        self._shipping_cost_type = shipping_cost_type

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

        A subtitle is optional and allows the seller to provide more information about the item, possibly including keywords that may assist with search results.  # noqa: E501

        :return: The subtitle of this SimilarItem.  # noqa: E501
        :rtype: str
        """
        return self._subtitle

    @subtitle.setter
    def subtitle(self, subtitle):
        """Sets the subtitle of this SimilarItem.

        A subtitle is optional and allows the seller to provide more information about the item, possibly including keywords that may assist with search results.  # noqa: E501

        :param subtitle: The subtitle of this SimilarItem.  # noqa: E501
        :type: str
        """

        self._subtitle = subtitle

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

        The title of the item as its appears on the listing.   # noqa: E501

        :return: The title of this SimilarItem.  # noqa: E501
        :rtype: str
        """
        return self._title

    @title.setter
    def title(self, title):
        """Sets the title of this SimilarItem.

        The title of the item as its appears on the listing.   # noqa: E501

        :param title: The title of this SimilarItem.  # noqa: E501
        :type: str
        """

        self._title = title

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

        return self.__dict__ == other.__dict__

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