---
schema_version: "1"
id: aa4def7d1b2f2dd95b2338edbf21823f1da196fe6411064735b1d5e894d5d232
title: Shop Products (deprecated)
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/commerce-cloud/b2c-commerce/references/generated-api-specs/ocapi-shop-products.md
canonical_url: https://developer.salesforce.com/docs/commerce/b2c-commerce/references/ocapi-shop-products
source_site: developer.salesforce.com
content_type: documentation
content_hash: ec49c6b8d5bdeda0f8a402ca72f3d133210ea1908b98dc381dac037a1ec67069
products:
  - B2C Commerce
  - Salesforce APIs
---
Shop Products (deprecated)

# Shop Products (deprecated)

The Shop API endpoints enable developers to build full shopper-experience applications such as storefronts. They are designed for high-scale usage, and include a number of areas such as Baskets & Orders, Customers, Products and Pricing. Shop API endpoints are typically read-only APIs, with the exception of baskets and orders.

**Version:** 25.6

## Servers

*   `https://{host}/s/{siteId}/dw/shop/v25_6`

Protocols: https.

## Security

*   `customers_auth` (basic) User authentication either for a registered or a guest customer (selectable in request body). Access via Base64 encoded customer:password string as 'Authorization: Basic' header.
*   `oauth2_application` (oauth2) Authentication flow with client ID and password with account manager.
    *   OAuth flow application (tokenUrl: https://account.demandware.com:443/dwsso/oauth2/access\_token)
    *   Scope x-info: Scopes are NOT supported. This is just a dummy, because the 'scopes' field is required.
*   `client_id` (apiKey) Add client ID for application identification. Alternative as 'client\_id' query parameter.
    *   API key in header: x-dw-client-id

## Operations

### GET Get multiple products

`GET /products/({ids})`

Operation ID: `Get multiple products`. Tags: products. Security: client\_id; customers\_auth.

Allows to access multiple products by a single request. This convenience resource should be used instead making separated requests. This saves bandwidth and CPU time on the server. The URI is the same like requesting a single Product by id, but multiple ids wrapped by parentheses and separated can be provided. If a parenthesis or the separator is part of the identifier itself it has to be URL encoded. Instead of a single Product document a result object of Product documents is returned. Note: Only products that are online and assigned to site catalog are returned. The maximum number of ids is 24. If none of the products requested are found, the cache-control header will be defaulted to 60 seconds.

#### Parameters

*   `ids` (path, array of string, required) The ids of the requested products.  
    Maximum length: 100.
*   `expand` (query, array of string) The expand parameter. A comma separated list with the allowed values (availability, bundled\_products, links, promotions, options, images, prices, variations, set\_products, recommendations)
*   `inventory_ids` (query, array of string) the optional inventory list ids, for which the availability should be shown.
*   `currency` (query, string) The currency mnemonic specified for price.
*   `locale` (query, string) The locale context.
*   `all_images` (query, boolean) The flag that indicates whether to retrieve the whole image model for the requested product.

#### Responses

*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product_result`.
    

### GET Get single product

`GET /products/{id}`

Operation ID: `Get single product`. Tags: products. Security: client\_id; customers\_auth.

To access single products resource, you construct a URL using the template shown below. This template requires you to specify an Id (typically a SKU) for a product. In response, the server returns a corresponding Product document, provided the product is online and assigned to site catalog. The document contains variation attributes (including values) and the variant matrix; this data is provided for both the master and for the variant.

This endpoint may return the following faults:

*   400 - InvalidExpandParameterException - Thrown in case a specified expand parameter value is unknown.

#### Parameters

*   `id` (path, string, required) The id of the requested product.  
    Maximum length: 100.
*   `expand` (query, array of string) The expand parameter. A comma separated list with the allowed values (availability, bundled\_products, links, promotions, options, images, prices, variations, set\_products, recommendations)
*   `inventory_ids` (query, array of string) the optional inventory list ids, for which the availability should be shown.
*   `currency` (query, string) The currency mnemonic specified for price.
*   `locale` (query, string) The locale context.
*   `all_images` (query, boolean) The flag that indicates whether to retrieve the whole image model for the requested product.

#### Responses

*   **400** `InvalidExpandParameterException` - Thrown in case a specified expand parameter value is unknown.
    
    Media type: `application/json, text/xml`. Schema: `fault`.
    
*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product`.
    

### GET Get product availability

`GET /products/{id}/availability`

Operation ID: `Get product availability`. Tags: products. Security: client\_id; customers\_auth.

Access product availability information of products that are online and assigned to site catalog.

#### Parameters

*   `id` (path, string, required) The requested product id.  
    Maximum length: 100.
*   `inventory_ids` (query, array of string) the optional inventory list ids, for which the availability should be shown.
*   `locale` (query, string) The locale context.

#### Responses

*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product`.
    

### GET Get bundled products

`GET /products/{id}/bundled_products`

Operation ID: `Get bundled products`. Tags: products. Security: client\_id; customers\_auth.

Access bundled product information of products that are online and assigned to site catalog.

#### Parameters

*   `id` (path, string, required) The requested product id.  
    Maximum length: 100.
*   `locale` (query, string) The locale context.

#### Responses

*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product`.
    

### GET Get product images

`GET /products/{id}/images`

Operation ID: `Get product images`. Tags: products. Security: client\_id; customers\_auth.

Access product image information of products that are online and assigned to site catalog. Filter the result by view type and variation values.

#### Parameters

*   `id` (path, string, required) The requested product id.  
    Maximum length: 100.
*   `view_type` (query, array of string) The view types.  
    Maximum length: 256.
*   `all_images` (query, boolean) If set to true, all images according to the requested product, view type and attribute value filter are returned. If set to false (or omitted), the best matching image for the requested product is returned. The attribute value filter is ignored in such case.
*   `variation_attribute` (query, string) the variation values context  
    Maximum length: 256.
*   `locale` (query, string) The locale context.

#### Responses

*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product`.
    

### GET Get product links

`GET /products/{id}/links`

Operation ID: `Get product links`. Tags: products. Security: client\_id; customers\_auth.

Access product link information of products that are online and assigned to site catalog. Filter the result by link type and link direction.

This endpoint may return the following faults:

*   400 - MalformedLinkDirectionParameterException - 400 indicates unknown link direction
*   400 - MalformedLinkTypeCodeParameterException - 400 indicates unknown product link type code
*   404 - ProductNotFoundException - 404 No product with given id found

#### Parameters

*   `id` (path, string, required) The requested product id.  
    Maximum length: 100.
*   `type` (query, string) The type of the product link. (Enum {accessory, alt\_orderunit, cross\_sell, newer\_version, other, replacement, spare\_part, up\_sell} )
*   `direction` (query, string) The product link direction Enum {in, out}
*   `locale` (query, string) The locale context.

#### Responses

*   **400** `MalformedLinkDirectionParameterException` - 400 indicates unknown link direction or `MalformedLinkTypeCodeParameterException` - 400 indicates unknown product link type code
    
    Media type: `application/json, text/xml`. Schema: `fault`.
    
*   **404** `ProductNotFoundException` - 404 No product with given id found
    
    Media type: `application/json, text/xml`. Schema: `fault`.
    
*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product`.
    

### GET Get product options

`GET /products/{id}/options`

Operation ID: `Get product options`. Tags: products. Security: client\_id; customers\_auth.

Access product option information of products that are online and assigned to site catalog.

#### Parameters

*   `id` (path, string, required) The requested product id.  
    Maximum length: 100.
*   `locale` (query, string) The locale context.

#### Responses

*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product`.
    

### GET Get product prices

`GET /products/{id}/prices`

Operation ID: `Get product prices`. Tags: products. Security: client\_id; customers\_auth.

Access product price information of products that are online and assigned to site catalog.

#### Parameters

*   `id` (path, string, required) The requested product id.  
    Maximum length: 100.
*   `locale` (query, string) The locale context.

#### Responses

*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product`.
    

### GET Get product promotions

`GET /products/{id}/promotions`

Operation ID: `Get product promotions`. Tags: products. Security: client\_id; customers\_auth.

Access product promotion information of products that are online and assigned to site catalog.

#### Parameters

*   `id` (path, string, required) The requested product id.  
    Maximum length: 100.
*   `currency` (query, string) The currency mnemonic specified for price
*   `locale` (query, string) The locale context.

#### Responses

*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product`.
    

### GET Get product recommendations

`GET /products/{id}/recommendations`

Operation ID: `Get product recommendations`. Tags: products. Security: client\_id; customers\_auth.

Access product recommendation information of products that are online and assigned to site catalog.

#### Parameters

*   `id` (path, string, required) The requested product id.  
    Maximum length: 100.
*   `recommendation_type` (query, integer (int32)) The optional recommendation type.
*   `locale` (query, string) The locale context.

#### Responses

*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product`.
    

### GET Get set products

`GET /products/{id}/set_products`

Operation ID: `Get set products`. Tags: products. Security: client\_id; customers\_auth.

Access product set information of products that are online and assigned to site catalog.

#### Parameters

*   `id` (path, string, required) The requested product id.  
    Maximum length: 100.
*   `locale` (query, string) The locale context.

#### Responses

*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product`.
    

### GET Get applicable shipping methods for certain product

`GET /products/{id}/shipping_methods`

Operation ID: `Get applicable shipping methods for certain product`. Tags: products. Security: customers\_auth; oauth2\_application; client\_id.

Retrieves the applicable shipping methods for a certain product.

This endpoint may return the following faults:

*   404 - ProductNotFoundException - Indicates that the product with the given id is unknown.

#### Parameters

*   `id` (path, string, required) the requested product id  
    Minimum length: 1.

#### Responses

*   **404** `ProductNotFoundException` - Indicates that the product with the given id is unknown.
    
    Media type: `application/json, text/xml`. Schema: `fault`.
    
*   **default**
    
    Media type: `application/json, text/xml`. Schema: `shipping_method_result`.
    

### GET Get product variations

`GET /products/{id}/variations`

Operation ID: `Get product variations`. Tags: products. Security: client\_id; customers\_auth.

Access product variation information of products that are online and assigned to site catalog.

#### Parameters

*   `id` (path, string, required) The requested product id.  
    Maximum length: 100.
*   `locale` (query, string) The locale context.

#### Responses

*   **default**
    
    Media type: `application/json, text/xml`. Schema: `product`.
    

## Schemas

### product\_result

Result document containing an array of products.

*   `count` (_integer (int32)_) The number of returned documents.
*   `data` (_array of product_) The array of product documents.
*   `total` (_integer (int32)_) The total number of documents.

_Example_

```
{
  "count": 2,
  "data": [
    {
      "brand": "Creative",
      "id": "creative-zen-v",
      "min_order_quantity": 1,
      "name": "Creative ZEN V Digital Media Player",
      "page_description": "The ZEN V player was designed for people like you—those who walk a step or two ahead of the pack. So don't be surprised when people take notice of your cool, colorful music and photo player.",
      "page_keywords": "Creative",
      "page_title": "Creative ZEN V Digital Media Player",
      "primary_category_id": "electronics-digital-media-players",
      "short_description": "The ZEN V player was designed for people like you—those who walk a step or two ahead of the pack. So don't be surprised when people take notice of your cool, colorful music and photo player.",
      "step_quantity": 1,
      "type": {
        "item": true
      },
      "unit_measure": "each",
      "unit_quantity": 1,
      "c_mediaFormat": [
        "0010",
        "0020",
        "0030",
        "0040"
      ],
      "c_memorySize": "1GB",
      "c_tabDescription": "The ZEN V player was designed for people like you—those who walk a step or two ahead of the pack. So don't be surprised when people take notice of your cool, colorful music and photo player."
    },
    {
      "brand": "Namco",
      "id": "namco-we-ski-wii",
      "min_order_quantity": 1,
      "name": "We Ski (for Wii)",
      "page_description": "Welcome to the Happy Ski Resort, where fresh powder, groomed runs, multiple trails, and state of the art facilities await!  We Ski™ takes you down the slopes in the most exciting skiing game to hit the Wii™!  Grab your Wii Remote™ and Nunchuk™ or step onto your Wii Balance Board™ to execute perfect wedge stops, shred the slaloms, and negotiate moguls with ease. With an in-depth Ski School and over a dozen lengthy runs packed with jumps, races, and more, you and your friends won’t want to leave the slopes again!",
      "page_keywords": "Namco",
      "page_title": "We Ski (for Wii)",
      "primary_category_id": "electronic-games",
      "short_description": "Welcome to the Happy Ski Resort, where fresh powder, groomed runs, multiple trails, and state of the art facilities await!  We Ski™ takes you down the slopes in the most exciting skiing game to hit the Wii™!  Grab your Wii Remote™ and Nunchuk™ or step onto your Wii Balance Board™ to execute perfect wedge stops, shred the slaloms, and negotiate moguls with ease. With an in-depth Ski School and over a dozen lengthy runs packed with jumps, races, and more, you and your friends won’t want to leave the slopes again!",
      "step_quantity": 1,
      "type": {
        "item": true
      },
      "unit_measure": "each",
      "unit_quantity": 1,
      "c_gameSystemType": "Wii™",
      "c_tabDescription": "Welcome to the Happy Ski Resort, where fresh powder, groomed runs, multiple trails, and state of the art facilities await!  We Ski™ takes you down the slopes in the most exciting skiing game to hit the Wii™!  Grab your Wii Remote™ and Nunchuk™ or step onto your Wii Balance Board™ to execute perfect wedge stops, shred the slaloms, and negotiate moguls with ease. With an in-depth Ski School and over a dozen lengthy runs packed with jumps, races, and more, you and your friends won’t want to leave the slopes again!"
    }
  ],
  "total": 2
}
```

### fault

Document representing a fault message that is returned whenever the HTTP status code is greater than or equal to 400 (which indicates an error).

*   `arguments` (_object_)
    
    A map that provides fault arguments.
    
    Data can be used to provide error messages on the client side.
    
    Additional properties: `object`.
    
*   `cause` (_cause_)
*   `display_message_pattern` (_string_) The localized display message pattern, if the request parameter display\_locale was given
*   `message` (_string_) The message text of the java exception.
*   `stack_trace` (_string_)
*   `type` (_string_) The name of the java exception.

### product

Document representing a product.

*   `brand` (_string_) The product's brand.
*   `bundled_products` (_array of bundled\_product_) The array of all bundled products of this product.
*   `currency` (_string_) The ISO 4217 mnemonic code of the currency.
*   `ean` (_string_) The European Article Number.
*   `fetch_date` (_integer (int32)_)
*   `id` (_string_, required) The id (SKU) of the product.  
    Minimum length: 1. Maximum length: 100.
*   `image_groups` (_array of image\_group_) The array of product image groups.
*   `inventories` (_array of inventory_) The array of product inventories explicitly requested via 'inventory\_ids' query parameter. This property is only returned in context of the 'availability' expansion.
*   `inventory` (_inventory_) The site default inventory information. This property is only returned in context of the 'availability' expansion.
*   `long_description` (_string (html)_) The localized product long description.
*   `manufacturer_name` (_string_) The products manufacturer name.
*   `manufacturer_sku` (_string_) The products manufacturer sku.
*   `master` (_master_) The master product information. Only for types master, variation group and variant.
*   `min_order_quantity` (_number (double)_) The minimum order quantity for this product.
*   `name` (_string_) The localized product name.
*   `options` (_array of option_) The array of product options. This array can be empty. Only for type option.
*   `page_description` (_string_) The localized products page description.
*   `page_keywords` (_string_) The localized products page description.
*   `page_title` (_string_) The localized products page title.
*   `price` (_number (double)_) The sales price of the product. In case of complex products like master or set this is the minimum price of related child products.
*   `price_max` (_number (double)_) The maximum sales of related child products in case of complex products like master or set.
*   `price_per_unit` (_number (double)_) The sales price per unit of the product. In case of complex products like master or set this is the minimum price per unit of related child products.
*   `price_per_unit_max` (_number (double)_) The maximum sales price per unit of related child products in case of complex products like master or set.
*   `prices` (_object_) The prices map with price book ids and their values.
    
    Additional properties: `number (double)`.
    
*   `primary_category_id` (_string_) The id of the products primary category.
*   `product_links` (_array of product\_link_) The array of source and target products links information.
*   `product_promotions` (_array of product\_promotion_) An array of active customer product promotions for this product, sorted by promotion priority using SORT\_BY\_EXCLUSIVITY ordering (exclusivity -> rank -> promotion class -> discount type -> best discount -> ID). This array can be empty. Coupon promotions are not returned in this array. See PromotionPlan.SORT\_BY\_EXCLUSIVITY for more details.
*   `recommendations` (_array of recommendation_) Returns a list of recommendations.
*   `set_products` (_array of product_) The array of set products of this product.
*   `short_description` (_string (html)_) The localized product short description.
*   `step_quantity` (_number (double)_) The steps in which the order amount of the product can be increased.
*   `type` (_product\_type_) The product type information. Can be one or multiple of the following values: item,master,variation\_group,variant,bundle,set.
*   `unit` (_string_) The sales unit of the product.
*   `unit_measure` (_string_) The unitMeasure of the product.
*   `unit_quantity` (_number (double)_)
*   `upc` (_string_) The Universal Product Code.
*   `valid_from` (_string (date-time)_) The time when product is valid from.
*   `valid_to` (_string (date-time)_) The time when product is valid to.
*   `variants` (_array of variant_) The array of actual variants. This array can be empty. Only for types master, variation group and variant.
*   `variation_attributes` (_array of variation\_attribute_) Sorted array of variation attributes information. This array can be empty. Only for types master, variation group and variant.
*   `variation_groups` (_array of variation\_group_) The array of actual variation groups. This array can be empty. Only for types master, variation group and variant.
*   `variation_values` (_object_)
    
    The actual variation attribute id - value pairs. Only for type variant and variation group.
    
    ```
         Only for type variant and variation group.
    ```
    
    Additional properties: `string`.
    

_Example_

```
{
  "_type": "product",
  "_v": "24.5",
  "brand": "Creative",
  "id": "creative-zen-v",
  "min_order_quantity": 1,
  "name": "Creative ZEN V Digital Media Player",
  "page_description": "The ZEN V player was designed for people like you—those who walk a step or two ahead of the pack. So don't be surprised when people take notice of your cool, colorful music and photo player.",
  "page_keywords": "Creative",
  "page_title": "Creative ZEN V Digital Media Player",
  "primary_category_id": "electronics-digital-media-players",
  "short_description": "The ZEN V player was designed for people like you—those who walk a step or two ahead of the pack. So don't be surprised when people take notice of your cool, colorful music and photo player.",
  "step_quantity": 1,
  "type": {
    "item": true
  },
  "c_mediaFormat": [
    "0010",
    "0020",
    "0030",
    "0040"
  ],
  "c_memorySize": "1GB",
  "c_tabDescription": "The ZEN V player was designed for people like you—those who walk a step or two ahead of the pack. So don't be surprised when people take notice of your cool, colorful music and photo player."
}
```

### shipping\_method\_result

Result document containing shipping methods.

*   `applicable_shipping_methods` (_array of shipping\_method_) The applicable shipping method documents.
*   `default_shipping_method_id` (_string_) The default shipping method.

_Example_

```
{
  "applicable_shipping_methods": [
    {
      "description": "The default shipping method.",
      "id": "DefaultShippingMethod",
      "name": "Default Shipping Method",
      "price": 5.55
    },
    {
      "description": "The base shipping method.",
      "id": "BaseShippingMethod",
      "name": "Base Shipping Method",
      "price": 0.99
    },
    {
      "description": "A shipping method that contains product level shipping costs.",
      "id": "ProductLevelShippingCostsShippingMethod",
      "name": "Product Level Shipping Costs Shipping Method",
      "price": 0.1
    }
  ],
  "default_shipping_method_id": "DefaultShippingMethod"
}
```

### cause

*   `cause` (_cause_)
*   `message` (_string_)
*   `type` (_string_)

### bundled\_product

Document representing a bundled product within a product bundle.

*   `id` (_string_)
*   `product` (_product_) The product being bundled.
*   `quantity` (_number (double)_) For the product being bundled, the quantity added to the bundle.

_Example_

```
{
  "product": {
    "brand": "Sony",
    "id": "sony-ps3-console",
    "name": "Sony Playstation 3 Game Console",
    "page_description": "ncludes PLAYSTATION 3 80GB system, DUALSHOCK 3 wireless controller, free PLAYSTATION Network membership, internet ready Wi-Fi, and 80GB of hard disk storage for all your games, music, videos, and photos. Every PS3 comes with a built-in Blu-ray player to give you the best high-definition viewing experience and pristine picture quality. Plus, the PS3 can play your entire catalog of CDs and DVDs.",
    "page_keywords": "Sony",
    "page_title": "Sony Playstation 3 Game Console",
    "primary_category_id": "electronics-game-consoles",
    "short_description": "ncludes PLAYSTATION 3 80GB system, DUALSHOCK 3 wireless controller, free PLAYSTATION Network membership, internet ready Wi-Fi, and 80GB of hard disk storage for all your games, music, videos, and photos. Every PS3 comes with a built-in Blu-ray player to give you the best high-definition viewing experience and pristine picture quality. Plus, the PS3 can play your entire catalog of CDs and DVDs.",
    "type": {
      "item": true,
      "option": true
    }
  },
  "quantity": 1
}
```

### image\_group

Document representing an image group containing a list of images for a particular view type and an optional variation value.

*   `images` (_array of image_) The images of the image group.
*   `variation_attributes` (_array of variation\_attribute_) Returns a list of variation attributes applying to this image group.
*   `view_type` (_string_) The image view type.

_Example_

```
{
  "images": [
    {
      "alt": "ALT master detail",
      "link": "https://example.com/foo/bar/master_detail.jpg",
      "title": "TITLE master detail"
    }
  ],
  "view_type": "detail"
}
```

### inventory

Document representing inventory information of the current product for a particular inventory list.

*   `ats` (_number (double)_) The ats of the product. If it is infinity, the return value is 999999. The value can be overwritten by the OCAPI setting 'product.inventory.ats.max\_threshold'.
*   `backorderable` (_boolean_) A flag indicating whether the product is back orderable.
*   `id` (_string_, required) The inventory id.
*   `in_stock_date` (_string (date-time)_) A flag indicating the date when the product will be in stock.
*   `orderable` (_boolean_) A flag indicating whether at least one of products is available to sell.
*   `preorderable` (_boolean_) A flag indicating whether the product is pre orderable.
*   `stock_level` (_number (double)_) The stock level of the product. If it is infinity, the return value is 999999. The value can be overwritten by the OCAPI setting 'product.inventory.stock\_level.max\_threshold'.

_Example_

```
{
  "ats": 0,
  "backorderable": false,
  "id": "BlueJeansInventory",
  "orderable": false,
  "preorderable": false,
  "stock_level": 0
}
```

### master

Document representing a variation master.

*   `link` (_string_) The URL addressing the master product.
*   `master_id` (_string_, required) The id (SKU) of the master product.  
    Minimum length: 1. Maximum length: 100.
*   `orderable` (_boolean_) A flag indicating whether at least one of the variants is orderable.
*   `price` (_number (double)_) The minimum sales price of the related variants.
*   `price_max` (_number (double)_) The maximum sales of related variants.
*   `price_per_unit` (_number (double)_) The minimum sales price per unit of the related variants.
*   `price_per_unit_max` (_number (double)_) The maximum sales price per unit of the related variants.
*   `prices` (_object_)
    
    Additional properties: `number (double)`.
    

### option

Document representing a product option.

*   `description` (_string_) The localized description of the option.
*   `id` (_string_, required) The id of the option.  
    Minimum length: 1. Maximum length: 100.
*   `image` (_string_) The URL to the option image.
*   `name` (_string_) The localized name of the option.
*   `values` (_array of option\_value_) The array of option values. This array can be empty.

### product\_link

Document representing a link between two products. It contains the id of the source and target products, the type of product link, and URLs to retrieve product data.

*   `source_product_id` (_string_) The semantic id of the product from which this product link is coming.
*   `source_product_link` (_string_) The URL addressing the product from which this product link is coming.
*   `target_product_id` (_string_) The semantic id of the product to which this product link is pointing.
*   `target_product_link` (_string_) The URL addressing the product to which this product link is pointing.
*   `type` (_string_) The type of this product link.  
    Allowed values: `cross_sell`, `replacement`, `up_sell`, `accessory`, `newer_version`, `alt_orderunit`, `spare_part`, `other`.

_Example_

```
{
  "source_product_id": "namco-we-ski-wii",
  "source_product_link": "http://example.com/dw/shop/{version}/products/namco-we-ski-wii?pretty_print=true",
  "target_product_id": "midway-cruisn-wii",
  "target_product_link": "http://example.com/dw/shop/{version}/products/midway-cruisn-wii?pretty_print=true",
  "type": "cross_sell"
}
```

### product\_promotion

Document representing a product promotion.

*   `callout_msg` (_string_) The localized call-out message of the promotion.
*   `link` (_string_) The URL addressing the promotion.
*   `promotion_id` (_string_) The unique id of the promotion.
*   `promotional_price` (_number (double)_) The promotional price for this product.

_Example_

```
{
  "callout_msg": "Save 15% Off iPod Nano",
  "link": "http://example.com/dw/shop/{version}/promotions/15off-nano",
  "promotion_id": "15off-nano"
}
```

### recommendation

Document representing a product recommendation.

*   `callout_msg` (_string (html)_) The localized callout message of the recommendation.
*   `image` (_image_) The image of the recommendation.
*   `long_description` (_string (html)_) The localized long description of the recommendation.
*   `name` (_string_) The localized name of the recommendation.
*   `recommendation_type` (_recommendation\_type_) The recommendation type of the recommendation.
*   `recommended_item_id` (_string_) The recommended item id of the recommendation.
*   `recommended_item_link` (_string_) The recommended item link of the recommendation.
*   `short_description` (_string (html)_) The localized short description of the recommendation.

### product\_type

Document representing a product type.

*   `bundle` (_boolean_) A flag indicating whether the product is a bundle.
*   `item` (_boolean_) A flag indicating whether the product is a standard item.
*   `master` (_boolean_) A flag indicating whether the product is a master.
*   `option` (_boolean_) A flag indicating whether the product is an option.
*   `set` (_boolean_) A flag indicating whether the product is a set.
*   `variant` (_boolean_) A flag indicating whether the product is a variant.
*   `variation_group` (_boolean_) A flag indicating whether the product is a variation group.

_Example_

```
{
  "item": true
}
```

### variant

Document representing a product variation.

*   `link` (_string_) The URL addressing the product.
*   `orderable` (_boolean_) A flag indicating whether the variant is orderable.
*   `price` (_number (double)_) The sales price of the variant.
*   `price_per_unit` (_number (double)_) The sales price of the variant.
*   `product_id` (_string_, required) The id (SKU) of the variant.  
    Minimum length: 1. Maximum length: 100.
*   `variation_values` (_object_) The actual variation attribute id - value pairs.
    
    Additional properties: `string`.
    

_Example_

```
{
  "link": "http://example.com/dw/shop/{version}/products/apple-ipod-touch-8gb?pretty_print=true",
  "product_id": "apple-ipod-touch-8gb",
  "variation_values": {
    "memorySize": "8 GB"
  }
}
```

### variation\_attribute

Document representing a variation attribute.

*   `id` (_string_, required) The id of the variation attribute.  
    Minimum length: 1.
*   `name` (_string_) The localized display name of the variation attribute.
*   `values` (_array of variation\_attribute\_value_) The sorted array of variation values. This array can be empty.

_Example_

```
{
  "id": "memorySize",
  "name": "Memory Size",
  "values": [
    {
      "name": "1 GB",
      "value": "1 GB"
    },
    {
      "name": "2 GB",
      "value": "2 GB"
    },
    {
      "name": "8 GB",
      "value": "8 GB"
    },
    {
      "name": "16 GB",
      "value": "16 GB"
    },
    {
      "name": "32 GB",
      "value": "32 GB"
    },
    {
      "name": "120 GB",
      "value": "120 GB"
    }
  ]
}
```

### variation\_group

Document representing a variation group.

*   `link` (_string_) The URL addressing the product.
*   `orderable` (_boolean_) A flag indicating whether the variation group is orderable.
*   `price` (_number (double)_) The sales price of the variation group.
*   `price_per_unit` (_number (double)_) The sales price per unit of the variation group.
*   `product_id` (_string_) The id (SKU) of the variation group.  
    Minimum length: 1. Maximum length: 100.
*   `variation_values` (_object_) The actual variation attribute id - value pairs.
    
    Additional properties: `string`.
    

### shipping\_method

Document representing a shipping method.

*   `description` (_string_) The localized description of the shipping method.
*   `external_shipping_method` (_string_) The external shipping method.
*   `id` (_string_, required) The shipping method id.  
    Maximum length: 256.
*   `name` (_string_) The localized name of the shipping method.
*   `price` (_number (double)_) The shipping cost total, including shipment level costs and product level fix and surcharge costs.
*   `shipping_promotions` (_array of shipping\_promotion_) The array of active customer shipping promotions for this shipping method. This array can be empty.

_Example_

```
{
  "id": "BaseShippingMethod"
}
```

### image

Document representing a product image.

*   `alt` (_string_) The localized alternative text of the image.
*   `dis_base_link` (_string_) Base URL for dynamic image service address. This is only shown, if the image is stored on the server and DIS is enabled.
*   `link` (_string_, required) The URL of the actual image.  
    Minimum length: 1.
*   `title` (_string_) The localized title of the image.

_Example_

```
{
  "alt": "ALT main swatch",
  "link": "https://example.com/foo/bar/main_swatch.jpg",
  "title": "TITLE main swatch"
}
```

### option\_value

Document representing an option value.

*   `default` (_boolean_) A flag indicating whether this option value is the default one.
*   `id` (_string_, required) The id of the option value.  
    Minimum length: 1. Maximum length: 100.
*   `name` (_string_) The localized name of the option value.
*   `price` (_number (double)_) The effective price of this option value.

### recommendation\_type

Document representing a recommendation type.

*   `display_value` (_string_) The localized display value of the recommendation type.
*   `value` (_integer (int32)_) The value of the recommendation type.

_Example_

```
{
  "display_value": "Cross-Sell",
  "value": 1
}
```

### variation\_attribute\_value

Document representing a variation attribute value.

*   `description` (_string_) The localized description of the variation value.
*   `image` (_image_) The first product image for the configured viewtype and this variation value.
*   `image_swatch` (_image_) The first product image for the configured viewtype and this variation value. (typically the swatch image)
*   `name` (_string_) The localized display name of the variation value.
*   `orderable` (_boolean_) A flag indicating whether at least one variant with this variation attribute value is available to sell.
*   `value` (_string_, required) The actual variation value.  
    Minimum length: 1.

### shipping\_promotion

Document representing a shipping promotion.

*   `callout_msg` (_string_) The localized call-out message of the promotion.
*   `link` (_string_) The URL addressing the promotion.
*   `promotion_id` (_string_) The unique id of the promotion.
*   `promotion_name` (_string_) The localized promotion name.