# coding: utf-8

"""
    Marketing API

    <p>The <i>Marketing API </i> offers two platforms that sellers can use to promote and advertise their products:</p> <ul><li><b>Promoted Listings</b> is an eBay ad service that lets sellers set up <i>ad campaigns </i> for the products they want to promote. eBay displays the ads in search results and in other marketing modules as <b>SPONSORED</b> listings. If an item in a Promoted Listings campaign sells, the seller is assessed a Promoted Listings fee, which is a seller-specified percentage applied to the sales price. For complete details, refer to the <a href=\"/api-docs/sell/static/marketing/pl-landing.html\">Promoted Listings playbook</a>.</li><li><b>Promotions Manager</b> gives sellers a way to offer discounts on specific items as a way to attract buyers to their inventory. Sellers can set up discounts (such as \"20% off\" and other types of offers) on specific items or on an entire customer order. To further attract buyers, eBay prominently displays promotion <i>teasers</i> throughout buyer flows. For complete details, see <a href=\"/api-docs/sell/static/marketing/promotions-manager.html\">Promotions Manager</a>.</li></ul>  <p><b>Marketing reports</b>, on both the Promoted Listings and Promotions Manager platforms, give sellers information that shows the effectiveness of their marketing strategies. The data gives sellers the ability to review and fine tune their marketing efforts.</p> <p class=\"tablenote\"><b>Important!</b> Sellers must have an active eBay Store subscription, and they must accept the <b>Terms and Conditions</b> before they can make requests to these APIs in the Production environment. There are also site-specific listings requirements and restrictions associated with these marketing tools, as listed in the \"requirements and restrictions\" sections for <a href=\"/api-docs/sell/marketing/static/overview.html#PL-requirements\">Promoted Listings</a> and <a href=\"/api-docs/sell/marketing/static/overview.html#PM-requirements\">Promotions Manager</a>.</p> <p>The table below lists all the Marketing API calls grouped by resource.</p>  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class ListingDetail(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 = {
        'current_price': 'Amount',
        'free_shipping': 'bool',
        'inventory_reference_id': 'str',
        'inventory_reference_type': 'str',
        'listing_category_id': 'str',
        'listing_condition': 'str',
        'listing_condition_id': 'str',
        'listing_id': 'str',
        'listing_promotion_statuses': 'list[ItemMarkdownStatus]',
        'quantity': 'int',
        'store_category_id': 'str',
        'title': 'str'
    }

    attribute_map = {
        'current_price': 'currentPrice',
        'free_shipping': 'freeShipping',
        'inventory_reference_id': 'inventoryReferenceId',
        'inventory_reference_type': 'inventoryReferenceType',
        'listing_category_id': 'listingCategoryId',
        'listing_condition': 'listingCondition',
        'listing_condition_id': 'listingConditionId',
        'listing_id': 'listingId',
        'listing_promotion_statuses': 'listingPromotionStatuses',
        'quantity': 'quantity',
        'store_category_id': 'storeCategoryId',
        'title': 'title'
    }

    def __init__(self, current_price=None, free_shipping=None, inventory_reference_id=None, inventory_reference_type=None, listing_category_id=None, listing_condition=None, listing_condition_id=None, listing_id=None, listing_promotion_statuses=None, quantity=None, store_category_id=None, title=None):  # noqa: E501
        """ListingDetail - a model defined in Swagger"""  # noqa: E501
        self._current_price = None
        self._free_shipping = None
        self._inventory_reference_id = None
        self._inventory_reference_type = None
        self._listing_category_id = None
        self._listing_condition = None
        self._listing_condition_id = None
        self._listing_id = None
        self._listing_promotion_statuses = None
        self._quantity = None
        self._store_category_id = None
        self._title = None
        self.discriminator = None
        if current_price is not None:
            self.current_price = current_price
        if free_shipping is not None:
            self.free_shipping = free_shipping
        if inventory_reference_id is not None:
            self.inventory_reference_id = inventory_reference_id
        if inventory_reference_type is not None:
            self.inventory_reference_type = inventory_reference_type
        if listing_category_id is not None:
            self.listing_category_id = listing_category_id
        if listing_condition is not None:
            self.listing_condition = listing_condition
        if listing_condition_id is not None:
            self.listing_condition_id = listing_condition_id
        if listing_id is not None:
            self.listing_id = listing_id
        if listing_promotion_statuses is not None:
            self.listing_promotion_statuses = listing_promotion_statuses
        if quantity is not None:
            self.quantity = quantity
        if store_category_id is not None:
            self.store_category_id = store_category_id
        if title is not None:
            self.title = title

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


        :return: The current_price of this ListingDetail.  # noqa: E501
        :rtype: Amount
        """
        return self._current_price

    @current_price.setter
    def current_price(self, current_price):
        """Sets the current_price of this ListingDetail.


        :param current_price: The current_price of this ListingDetail.  # noqa: E501
        :type: Amount
        """

        self._current_price = current_price

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

        If set to <code>true</code>, the seller pays for the shipping (or that the item is marked for local pickup only) In this case, the listing does not have an associated shipping cost for the first listed domestic-shipping option (even if the first domestic-shipping option specifies a flat-rate or calculated shipping option). If <code>false</code>, the buyer is required to pay for a flat-rate or calculated cost shipping service.  # noqa: E501

        :return: The free_shipping of this ListingDetail.  # noqa: E501
        :rtype: bool
        """
        return self._free_shipping

    @free_shipping.setter
    def free_shipping(self, free_shipping):
        """Sets the free_shipping of this ListingDetail.

        If set to <code>true</code>, the seller pays for the shipping (or that the item is marked for local pickup only) In this case, the listing does not have an associated shipping cost for the first listed domestic-shipping option (even if the first domestic-shipping option specifies a flat-rate or calculated shipping option). If <code>false</code>, the buyer is required to pay for a flat-rate or calculated cost shipping service.  # noqa: E501

        :param free_shipping: The free_shipping of this ListingDetail.  # noqa: E501
        :type: bool
        """

        self._free_shipping = free_shipping

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

        The seller's inventory reference ID for a listing. Also known as the \"SKU\" or \"custom label,\" an inventory reference ID is either the ID of the listing or, if the listing has variations (such as a shirt that's available in multiple sizes and colors), the ID of the parent listing.  # noqa: E501

        :return: The inventory_reference_id of this ListingDetail.  # noqa: E501
        :rtype: str
        """
        return self._inventory_reference_id

    @inventory_reference_id.setter
    def inventory_reference_id(self, inventory_reference_id):
        """Sets the inventory_reference_id of this ListingDetail.

        The seller's inventory reference ID for a listing. Also known as the \"SKU\" or \"custom label,\" an inventory reference ID is either the ID of the listing or, if the listing has variations (such as a shirt that's available in multiple sizes and colors), the ID of the parent listing.  # noqa: E501

        :param inventory_reference_id: The inventory_reference_id of this ListingDetail.  # noqa: E501
        :type: str
        """

        self._inventory_reference_id = inventory_reference_id

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

        Indicates the type of the <b>inventoryReferenceId</b>, which can be either a single-SKU or a multi-SKU listing (<code>INVENTORY_ITEM</code> and <code>INVENTORY_ITEM_GROUP</code>, respectively).  <br><br><b>Note:</b> This value is not currently returned in the response.  # noqa: E501

        :return: The inventory_reference_type of this ListingDetail.  # noqa: E501
        :rtype: str
        """
        return self._inventory_reference_type

    @inventory_reference_type.setter
    def inventory_reference_type(self, inventory_reference_type):
        """Sets the inventory_reference_type of this ListingDetail.

        Indicates the type of the <b>inventoryReferenceId</b>, which can be either a single-SKU or a multi-SKU listing (<code>INVENTORY_ITEM</code> and <code>INVENTORY_ITEM_GROUP</code>, respectively).  <br><br><b>Note:</b> This value is not currently returned in the response.  # noqa: E501

        :param inventory_reference_type: The inventory_reference_type of this ListingDetail.  # noqa: E501
        :type: str
        """

        self._inventory_reference_type = inventory_reference_type

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

        The ID of the category that listing belongs to. The ID is a numeric and unique identifier for the category that is assigned by eBay.  # noqa: E501

        :return: The listing_category_id of this ListingDetail.  # noqa: E501
        :rtype: str
        """
        return self._listing_category_id

    @listing_category_id.setter
    def listing_category_id(self, listing_category_id):
        """Sets the listing_category_id of this ListingDetail.

        The ID of the category that listing belongs to. The ID is a numeric and unique identifier for the category that is assigned by eBay.  # noqa: E501

        :param listing_category_id: The listing_category_id of this ListingDetail.  # noqa: E501
        :type: str
        """

        self._listing_category_id = listing_category_id

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

        An eBay-assigned value that indicates condition of the associated item. For more information, see <a href=\"/api-docs/sell/static/metadata/condition-id-values.html\">Item condition ID and name values</a>.  # noqa: E501

        :return: The listing_condition of this ListingDetail.  # noqa: E501
        :rtype: str
        """
        return self._listing_condition

    @listing_condition.setter
    def listing_condition(self, listing_condition):
        """Sets the listing_condition of this ListingDetail.

        An eBay-assigned value that indicates condition of the associated item. For more information, see <a href=\"/api-docs/sell/static/metadata/condition-id-values.html\">Item condition ID and name values</a>.  # noqa: E501

        :param listing_condition: The listing_condition of this ListingDetail.  # noqa: E501
        :type: str
        """

        self._listing_condition = listing_condition

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

        The ID of the condition associated with the item. For more information, see <a href=\"/api-docs/sell/static/metadata/condition-id-values.html\">Item condition ID and name values</a>.<br /><br /><span class=\"tablenote\"><b>Note: </b> This value is not currently returned in the response.</span>  # noqa: E501

        :return: The listing_condition_id of this ListingDetail.  # noqa: E501
        :rtype: str
        """
        return self._listing_condition_id

    @listing_condition_id.setter
    def listing_condition_id(self, listing_condition_id):
        """Sets the listing_condition_id of this ListingDetail.

        The ID of the condition associated with the item. For more information, see <a href=\"/api-docs/sell/static/metadata/condition-id-values.html\">Item condition ID and name values</a>.<br /><br /><span class=\"tablenote\"><b>Note: </b> This value is not currently returned in the response.</span>  # noqa: E501

        :param listing_condition_id: The listing_condition_id of this ListingDetail.  # noqa: E501
        :type: str
        """

        self._listing_condition_id = listing_condition_id

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

        A unique eBay-assigned ID that is generated when the item is listed.  # noqa: E501

        :return: The listing_id of this ListingDetail.  # noqa: E501
        :rtype: str
        """
        return self._listing_id

    @listing_id.setter
    def listing_id(self, listing_id):
        """Sets the listing_id of this ListingDetail.

        A unique eBay-assigned ID that is generated when the item is listed.  # noqa: E501

        :param listing_id: The listing_id of this ListingDetail.  # noqa: E501
        :type: str
        """

        self._listing_id = listing_id

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

        A list of the status values assigned to the item and the date that each new status was assigned.  # noqa: E501

        :return: The listing_promotion_statuses of this ListingDetail.  # noqa: E501
        :rtype: list[ItemMarkdownStatus]
        """
        return self._listing_promotion_statuses

    @listing_promotion_statuses.setter
    def listing_promotion_statuses(self, listing_promotion_statuses):
        """Sets the listing_promotion_statuses of this ListingDetail.

        A list of the status values assigned to the item and the date that each new status was assigned.  # noqa: E501

        :param listing_promotion_statuses: The listing_promotion_statuses of this ListingDetail.  # noqa: E501
        :type: list[ItemMarkdownStatus]
        """

        self._listing_promotion_statuses = listing_promotion_statuses

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

        The number of items being sold in the listing.  # noqa: E501

        :return: The quantity of this ListingDetail.  # noqa: E501
        :rtype: int
        """
        return self._quantity

    @quantity.setter
    def quantity(self, quantity):
        """Sets the quantity of this ListingDetail.

        The number of items being sold in the listing.  # noqa: E501

        :param quantity: The quantity of this ListingDetail.  # noqa: E501
        :type: int
        """

        self._quantity = quantity

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

        Store CategoryId (if any) that to which the listing belongs. This field is blank if there is no seller Store category ID.  # noqa: E501

        :return: The store_category_id of this ListingDetail.  # noqa: E501
        :rtype: str
        """
        return self._store_category_id

    @store_category_id.setter
    def store_category_id(self, store_category_id):
        """Sets the store_category_id of this ListingDetail.

        Store CategoryId (if any) that to which the listing belongs. This field is blank if there is no seller Store category ID.  # noqa: E501

        :param store_category_id: The store_category_id of this ListingDetail.  # noqa: E501
        :type: str
        """

        self._store_category_id = store_category_id

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

        The seller-defined title of the listing that a seller can use to identify the item.  This label is not displayed in end-user flows.  # noqa: E501

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

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

        The seller-defined title of the listing that a seller can use to identify the item.  This label is not displayed in end-user flows.  # noqa: E501

        :param title: The title of this ListingDetail.  # 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(ListingDetail, 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, ListingDetail):
            return False

        return self.__dict__ == other.__dict__

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