# Retrieve a product

Only available to Buyer Users.

Endpoint: GET /me/products/{productID}
Version: 1.0.457.36910
Security: OAuth2

## Security:

  - `OAuth2` (unknown)
    oauth2 scopes: FullAccess, OrderContributor, Shopper

## Path parameters:

  - `productID` (string, required)
    ID of the product.

## Query parameters:

  - `sellerID` (string)
    ID of the seller.

## Response 200:

  - `200` (unknown)
    Only available to Buyer Users.

## Response 200 fields (application/json):

  - `PriceSchedule` (object)
    Example: {"PriceBreaks":[{"Discounted":{"Price":0,"SalePrice":0,"SubscriptionPrice":0,"BundlePrice":0,"Percent":0},"Quantity":0,"Price":0,"SalePrice":0,"SubscriptionPrice":0,"BundlePrice":0}],"Discount":{"ID":…

  - `PriceSchedule.PriceBreaks` (array)

  - `PriceSchedule.PriceBreaks.Discounted` (object)
    Calculated discounted prices. Only populated when a discount applies to this price break.
    Example: {"Price":0,"SalePrice":0,"SubscriptionPrice":0,"BundlePrice":0,"Percent":0}

  - `PriceSchedule.PriceBreaks.Discounted.Price` (number)
    Discounted price per unit.

  - `PriceSchedule.PriceBreaks.Discounted.SalePrice` (number)
    Discounted sale price per unit.

  - `PriceSchedule.PriceBreaks.Discounted.SubscriptionPrice` (number)
    Discounted subscription price per unit.

  - `PriceSchedule.PriceBreaks.Discounted.BundlePrice` (number)
    Discounted bundle price per unit.

  - `PriceSchedule.PriceBreaks.Discounted.Percent` (number)
    The discount percentage applied (e.g., 10 for 10% off).

  - `PriceSchedule.PriceBreaks.Quantity` (integer)
    Most commonly 1, except when offering tiered/bulk pricing.

  - `PriceSchedule.PriceBreaks.Price` (number)
    Price per unit.

  - `PriceSchedule.PriceBreaks.SalePrice` (number)
    Sale Price per unit. If the current date/time is within the PriceSchedule SaleStart and SaleEnd, this SalePrice will be used.

  - `PriceSchedule.PriceBreaks.SubscriptionPrice` (number)
    Subscription Price per unit. If set, this price is used when a subscription order is created.

  - `PriceSchedule.PriceBreaks.BundlePrice` (number)
    Bundle Price per unit. If set, this price is used when an item being added to an order is part of a bundle.

  - `PriceSchedule.Discount` (object)
    The best applicable discount for this buyer. Only populated when a discount applies.
    Example: {"ID":"","Description":""}

  - `PriceSchedule.Discount.ID` (string)
    ID of the discount.

  - `PriceSchedule.Discount.Description` (string)
    Description of the discount.

  - `PriceSchedule.OwnerID` (string)
    ID of the organization that owns the PriceSchedule. Only the marketplace owner can override the OwnerID on create.

  - `PriceSchedule.ID` (string)

  - `PriceSchedule.Name` (string)

  - `PriceSchedule.ApplyTax` (boolean)
    For reference only for calculating tax, does not influence any OrderCloud behavior.

  - `PriceSchedule.ApplyShipping` (boolean)
    For reference only for calculating shipping cost, does not influence any OrderCloud behavior.

  - `PriceSchedule.MinQuantity` (integer)
    The minimum line item Quantity when UseCumulativeQuantity is false.

  - `PriceSchedule.MaxQuantity` (integer)
    The maximum line item Quantity when UseCumulativeQuantity is false.

  - `PriceSchedule.UseCumulativeQuantity` (boolean)
    If true, line item quantities will be aggregated by productID when determining which price break applies, and when Min/Max quantities are met. Else, each line item is treated separately.

  - `PriceSchedule.RestrictedQuantity` (boolean)
    If true, this product can only be ordered in quantities that exactly match one of the price breaks on this schedule.

  - `PriceSchedule.Currency` (string)
    We recommend using ISO-4217 currency codes for compatibility with tax and payment processors.

  - `PriceSchedule.SaleStart` (string)
    Starting date/time for PriceBreak.SalePrice to be used as the price for the LineItem. Requires that the PriceBreak.SalePrice value is set.

  - `PriceSchedule.SaleEnd` (string)
    Ending date/time for PriceBreak.SalePrice to be used as the price for the LineItem. Requires that the PriceBreak.SalePrice value is set.

  - `PriceSchedule.IsOnSale` (boolean)
    True when at least one PriceBreak has a SalePrice defined, and the current time is between the SaleStart and SaleEnd date.

  - `PriceSchedule.xp` (object)

  - `ID` (string)

  - `ParentID` (string)
    ID of the parent product. If not null, IsParent should be false

  - `IsParent` (boolean)
    If true, ParentID must be null, as a parent product cannot have a parent itself.

  - `IsBundle` (boolean)
    If true, IsParent must be false, as a parent product cannot be a bundle.

  - `Name` (string)

  - `Description` (string)

  - `QuantityMultiplier` (integer)
    For reference only, does not influence any OrderCloud behavior. Used to indicate an amount per Quantity.

  - `ShipWeight` (number)

  - `ShipHeight` (number)

  - `ShipWidth` (number)

  - `ShipLength` (number)

  - `Active` (boolean)
    If false, product is not visible or purchasable from a buyer's perspective.

  - `SpecCount` (integer)
    Count of specs assigned to the product.

  - `VariantCount` (integer)
    Count of variants generated from the product/spec combinations.

  - `ShipFromAddressID` (string)
    Marketplace owner or supplier AddressID where the product will be shipped from. Can be used to calculate shipping costs.

  - `Inventory` (object)
    Example: {"Enabled":false,"NotificationPoint":0,"VariantLevelTracking":false,"OrderCanExceed":false,"QuantityAvailable":0,"LastUpdated":"2018-01-01T00:00:00-06:00"}

  - `Inventory.Enabled` (boolean)
    If true, inventory will be tracked and enforced.

  - `Inventory.NotificationPoint` (integer)

  - `Inventory.VariantLevelTracking` (boolean)
    If true, QuantityAvailable will be determined at the variant level.

  - `Inventory.OrderCanExceed` (boolean)
    If true, a user can create line items and place orders for the product even if there is insufficient QuantityAvailable.

  - `Inventory.QuantityAvailable` (integer)
    Automatically decrements on order submit. If you utilize inventory records either at the product or variant level, this property becomes readonly, and is derived from the sum of all QuantityAvailable of each InventoryRecord. If VariantLevelTracking is enabled, this is the sum of all variant quantities.

  - `Inventory.LastUpdated` (string)

  - `DefaultSupplierID` (string)
    Used for forwarding orders to suppliers.

  - `AllSuppliersCanSell` (boolean)
    If true, all suppliers are eligible to opt into selling this product.

  - `Returnable` (boolean)

  - `DateCreated` (string)

  - `xp` (object)

## Response 4XX:

  - `4XX` (unknown)
    Expected errors range from 400-409. Anything in the 5XX range indicates a server issue and should be reported to support.

## Response 4XX fields (application/json):

  - `StatusCode` (integer)
    Example: 404

  - `ErrorCode` (string)
    Example: NotFoundError

  - `Message` (string)
    Example: Object not found

  - `Data` (object)
    Example: {"ObjectType":"","ObjectID":""}

