@salesforce/b2c-tooling-sdk 2.3.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/data/guides/enrichment.json +291 -0
  2. package/data/guides/index.json +426 -37
  3. package/data/schemas/dw.schema.json +590 -0
  4. package/data/tooling/index.json +18 -9
  5. package/dist/esm/cli/base-command.d.ts +20 -1
  6. package/dist/esm/cli/base-command.js +61 -11
  7. package/dist/esm/cli/base-command.js.map +1 -1
  8. package/dist/esm/cli/cartridge-command.js +2 -1
  9. package/dist/esm/cli/cartridge-command.js.map +1 -1
  10. package/dist/esm/cli/command-search.d.ts +85 -0
  11. package/dist/esm/cli/command-search.js +147 -0
  12. package/dist/esm/cli/command-search.js.map +1 -0
  13. package/dist/esm/cli/config.d.ts +10 -1
  14. package/dist/esm/cli/config.js +18 -9
  15. package/dist/esm/cli/config.js.map +1 -1
  16. package/dist/esm/cli/hooks.d.ts +13 -0
  17. package/dist/esm/cli/hooks.js +11 -0
  18. package/dist/esm/cli/hooks.js.map +1 -1
  19. package/dist/esm/cli/index.d.ts +2 -0
  20. package/dist/esm/cli/index.js +2 -0
  21. package/dist/esm/cli/index.js.map +1 -1
  22. package/dist/esm/cli/instance-command.d.ts +1 -0
  23. package/dist/esm/cli/instance-command.js +2 -1
  24. package/dist/esm/cli/instance-command.js.map +1 -1
  25. package/dist/esm/cli/mrt-command.d.ts +3 -2
  26. package/dist/esm/cli/mrt-command.js +4 -4
  27. package/dist/esm/cli/mrt-command.js.map +1 -1
  28. package/dist/esm/cli/oauth-command.d.ts +1 -0
  29. package/dist/esm/cli/ods-command.d.ts +1 -0
  30. package/dist/esm/cli/webdav-command.d.ts +1 -0
  31. package/dist/esm/clients/custom-apis.d.ts +36 -2
  32. package/dist/esm/clients/custom-apis.js +57 -4
  33. package/dist/esm/clients/custom-apis.js.map +1 -1
  34. package/dist/esm/clients/index.d.ts +1 -1
  35. package/dist/esm/clients/index.js +1 -1
  36. package/dist/esm/clients/index.js.map +1 -1
  37. package/dist/esm/clients/scapi-backend-utils.d.ts +15 -0
  38. package/dist/esm/clients/scapi-backend-utils.js +28 -1
  39. package/dist/esm/clients/scapi-backend-utils.js.map +1 -1
  40. package/dist/esm/clients/scapi-fallback-backend.js +2 -2
  41. package/dist/esm/clients/scapi-fallback-backend.js.map +1 -1
  42. package/dist/esm/clients/scapi-schemas.generated.d.ts +2 -2
  43. package/dist/esm/compat/dispatcher.js +2 -2
  44. package/dist/esm/compat/dispatcher.js.map +1 -1
  45. package/dist/esm/config/config-origins.d.ts +19 -0
  46. package/dist/esm/config/config-origins.js +11 -0
  47. package/dist/esm/config/config-origins.js.map +1 -0
  48. package/dist/esm/config/config-write.d.ts +86 -0
  49. package/dist/esm/config/config-write.js +296 -0
  50. package/dist/esm/config/config-write.js.map +1 -0
  51. package/dist/esm/config/dw-json-schema.d.ts +14 -0
  52. package/dist/esm/config/dw-json-schema.js +269 -0
  53. package/dist/esm/config/dw-json-schema.js.map +1 -0
  54. package/dist/esm/config/dw-json.d.ts +2 -0
  55. package/dist/esm/config/dw-json.js +10 -6
  56. package/dist/esm/config/dw-json.js.map +1 -1
  57. package/dist/esm/config/index.d.ts +13 -4
  58. package/dist/esm/config/index.js +8 -3
  59. package/dist/esm/config/index.js.map +1 -1
  60. package/dist/esm/config/instance-manager.d.ts +64 -28
  61. package/dist/esm/config/instance-manager.js +145 -63
  62. package/dist/esm/config/instance-manager.js.map +1 -1
  63. package/dist/esm/config/mapping.d.ts +5 -0
  64. package/dist/esm/config/mapping.js +20 -1
  65. package/dist/esm/config/mapping.js.map +1 -1
  66. package/dist/esm/config/project-environment.d.ts +62 -0
  67. package/dist/esm/config/project-environment.js +113 -0
  68. package/dist/esm/config/project-environment.js.map +1 -1
  69. package/dist/esm/config/resolver.d.ts +22 -0
  70. package/dist/esm/config/resolver.js +106 -37
  71. package/dist/esm/config/resolver.js.map +1 -1
  72. package/dist/esm/config/sources/dw-json-source.d.ts +9 -1
  73. package/dist/esm/config/sources/dw-json-source.js +59 -23
  74. package/dist/esm/config/sources/dw-json-source.js.map +1 -1
  75. package/dist/esm/config/sources/env-source.d.ts +70 -9
  76. package/dist/esm/config/sources/env-source.js +205 -47
  77. package/dist/esm/config/sources/env-source.js.map +1 -1
  78. package/dist/esm/config/sources/index.d.ts +1 -1
  79. package/dist/esm/config/sources/index.js +1 -1
  80. package/dist/esm/config/sources/index.js.map +1 -1
  81. package/dist/esm/config/types.d.ts +53 -3
  82. package/dist/esm/docs/search.js +3 -1
  83. package/dist/esm/docs/search.js.map +1 -1
  84. package/dist/esm/docs/types.d.ts +3 -1
  85. package/dist/esm/guidance/bundle.d.ts +33 -0
  86. package/dist/esm/guidance/bundle.js +268 -0
  87. package/dist/esm/guidance/bundle.js.map +1 -0
  88. package/dist/esm/guidance/catalog.d.ts +8 -1
  89. package/dist/esm/guidance/catalog.js +48 -6
  90. package/dist/esm/guidance/catalog.js.map +1 -1
  91. package/dist/esm/guidance/index.d.ts +1 -0
  92. package/dist/esm/guidance/index.js +1 -0
  93. package/dist/esm/guidance/index.js.map +1 -1
  94. package/dist/esm/guidance/types.d.ts +17 -1
  95. package/dist/esm/guidance/types.js.map +1 -1
  96. package/dist/esm/index.d.ts +1 -1
  97. package/dist/esm/index.js +1 -1
  98. package/dist/esm/index.js.map +1 -1
  99. package/dist/esm/operations/jobs/run-system-job.js +2 -2
  100. package/dist/esm/operations/jobs/run-system-job.js.map +1 -1
  101. package/dist/esm/plugins/discovery.js +2 -1
  102. package/dist/esm/plugins/discovery.js.map +1 -1
  103. package/dist/esm/scapi/catalog.d.ts +5 -2
  104. package/dist/esm/scapi/catalog.js.map +1 -1
  105. package/dist/esm/scapi/index.d.ts +6 -2
  106. package/dist/esm/scapi/index.js +4 -2
  107. package/dist/esm/scapi/index.js.map +1 -1
  108. package/dist/esm/scapi/live.d.ts +14 -3
  109. package/dist/esm/scapi/live.js +33 -5
  110. package/dist/esm/scapi/live.js.map +1 -1
  111. package/dist/esm/scapi/local.d.ts +26 -0
  112. package/dist/esm/scapi/local.js +143 -0
  113. package/dist/esm/scapi/local.js.map +1 -0
  114. package/dist/esm/scapi/request.d.ts +2 -2
  115. package/dist/esm/scapi/request.js +4 -2
  116. package/dist/esm/scapi/request.js.map +1 -1
  117. package/dist/esm/scapi/runtime.d.ts +5 -0
  118. package/dist/esm/scapi/runtime.js.map +1 -1
  119. package/dist/esm/scapi/schema-source.d.ts +90 -0
  120. package/dist/esm/scapi/schema-source.js +146 -0
  121. package/dist/esm/scapi/schema-source.js.map +1 -0
  122. package/dist/esm/scapi/worker-source.js +31 -7
  123. package/dist/esm/scapi/worker-source.js.map +1 -1
  124. package/dist/esm/telemetry/telemetry.d.ts +1 -0
  125. package/dist/esm/telemetry/telemetry.js +18 -1
  126. package/dist/esm/telemetry/telemetry.js.map +1 -1
  127. package/dist/esm/telemetry/types.d.ts +9 -0
  128. package/dist/esm/test-utils/config-isolation.js +21 -15
  129. package/dist/esm/test-utils/config-isolation.js.map +1 -1
  130. package/dist/esm/ux/agent-context.d.ts +69 -0
  131. package/dist/esm/ux/agent-context.js +133 -0
  132. package/dist/esm/ux/agent-context.js.map +1 -0
  133. package/dist/esm/ux/confirm.d.ts +27 -0
  134. package/dist/esm/ux/confirm.js +32 -0
  135. package/dist/esm/ux/confirm.js.map +1 -1
  136. package/dist/esm/ux/index.d.ts +2 -1
  137. package/dist/esm/ux/index.js +2 -1
  138. package/dist/esm/ux/index.js.map +1 -1
  139. package/node_modules/@salesforce/b2c-api-schemas/manifest.json +83 -42
  140. package/node_modules/@salesforce/b2c-api-schemas/package.json +1 -1
  141. package/node_modules/@salesforce/b2c-api-schemas/scapi/cdn/zones/v1.json +6798 -238
  142. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/orders/v1.json +2296 -205
  143. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v1.json +5571 -666
  144. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v2.json +6062 -371
  145. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-orders/v1.json +3426 -360
  146. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-payments/v1.json +351 -99
  147. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/cors/v1.json +172 -12
  148. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/preferences/v1.json +1497 -111
  149. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/shopper-configurations/v1.json +202 -36
  150. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/timeouts/v1.json +79 -10
  151. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/custom-objects/v1.json +785 -49
  152. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/shopper-custom-objects/v1.json +191 -40
  153. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/customers/v1.json +1483 -107
  154. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/shopper-customers/v1.json +4854 -787
  155. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/custom-apis/v1.json +119 -15
  156. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/object-definitions/v1.json +1699 -80
  157. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scapi-schemas/v1.json +252 -18
  158. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scripts/v1.json +329 -23
  159. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/experiences/v1.json +4208 -234
  160. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/shopper-experience/v1.json +1591 -247
  161. package/node_modules/@salesforce/b2c-api-schemas/scapi/intelligence/analytics/v1.json +396 -8
  162. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/availability/v1.json +1242 -69
  163. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/impex/v1.json +2354 -248
  164. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/reservation/v1.json +1550 -45
  165. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/segmentation/v1.json +6615 -0
  166. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/roles/v1.json +1520 -59
  167. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/users/v1.json +397 -17
  168. package/node_modules/@salesforce/b2c-api-schemas/scapi/observability/metrics/v1.json +1241 -27
  169. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/jobs/v1.json +1069 -68
  170. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/replications/v1.json +410 -23
  171. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/assignments/v1.json +502 -102
  172. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/campaigns/v1.json +1112 -94
  173. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/coupons/v1.json +820 -93
  174. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/gift-certificates/v1.json +845 -92
  175. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/promotions/v1.json +2716 -674
  176. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-gift-certificates/v1.json +130 -47
  177. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-promotions/v1.json +233 -63
  178. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/source-code-groups/v1.json +630 -70
  179. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/catalogs/v1.json +2886 -348
  180. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/inventory-lists/v1.json +520 -19
  181. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/price-books/v1.json +3115 -293
  182. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/products/v1.json +3313 -138
  183. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-availability/v1.json +266 -52
  184. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-delivery-estimates/v1.json +256 -48
  185. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-products/v1.json +1744 -306
  186. package/node_modules/@salesforce/b2c-api-schemas/scapi/search/shopper-search/v1.json +1661 -120
  187. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth/v1.json +2174 -118
  188. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth-admin/v1.json +1373 -24
  189. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/consents/v1.json +531 -20
  190. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-agents/v1.json +154 -6
  191. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-consents/v1.json +596 -79
  192. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-context/v1.json +456 -42
  193. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/seo/v1.json +101 -23
  194. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/shopper-seo/v1.json +184 -41
  195. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/sites/v1.json +995 -47
  196. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/shopper-stores/v1.json +370 -67
  197. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/store-redirect-mappings/v1.json +319 -11
  198. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/stores/v1.json +1109 -64
  199. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/deployments/v1.json +1442 -0
  200. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/environments/v1.json +4293 -0
  201. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/storefronts/v1.json +1371 -0
  202. package/package.json +5 -2
  203. package/specs/scapi-schemas-v1.yaml +4 -1
@@ -2,7 +2,8 @@
2
2
  "openapi": "3.0.3",
3
3
  "info": {
4
4
  "title": "Shopper Products",
5
- "version": "1.12.0",
5
+ "description": "[Download API specification](https://developer.salesforce.com/static/commercecloud/commerce-api/shopper-products/shopper-products-oas-v1-public.yaml)\n\n# API Overview\n\nThe Shopper Products API enables you to access product details for products that are online, merchandised to a particular site catalog, and ready to be sold. You can use these product details to merchandise the product on other ecommerce channels. To set up category navigation paths on other commerce apps or storefronts, you can use the Categories API.\n\n## Authentication & Authorization\n\nThe client requesting the product information must have access to the Products resource. The Shopper Products API requires a shopper access token from the Shopper Login and API Access Service (SLAS).\n\nYou must include the relevant scopes in the client ID used to generate the SLAS token. For a full list of required permissions, see the [Authorization Scopes Catalog.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/auth-z-scope-catalog.html)\n\nFor details on how to request a shopper access token from SLAS, see the guest user flows for [public clients](https://developer.salesforce.com/docs/commerce/commerce-api/guide/slas-public-client.html#guest-user) and [private clients](https://developer.salesforce.com/docs/commerce/commerce-api/guide/slas-private-client.html#guest-user) in the SLAS guides.\n\n## Customization\n\n### Custom Properties\n\nThis API supports custom properties (prefixed with `c_`). For details, see [Custom Properties.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/custom-properties.html)\n\n### Hooks\n\nFor details on working with hooks, see [Extensibility with Hooks.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/extensibility_via_hooks.html)\n\n## Request Details\n\n### Property Selection\n\nThis API supports the `select` query parameter for filtering response properties. For details, see [Property Selection.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/scapi-property-selection.html)\n\n### URL Encoding\n\nIf resource identifiers in request parameters contain commas (`,`) or percent signs (`%`), they must be URL encoded. For details, see [Encode URL Special Characters.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/url-encode.html)\n\n## Response Details\n\n### Personalization\n\nResponses from this API can be personalized using the [Shopper Context API.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/shopper-context-api.html) By setting context attributes such as customer group, source code, or store ID, you can retrieve personalized promotions, pricing, and shipping methods. For details on how personalization interacts with caching, see [Personalized Caching.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html#personalized-caching)\n\n### Caching\n\nCaching is provided for this API. For details, see [Server-Side Web-Tier Caching.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html)\n\n### Timeouts\n\nShopper API requests must respond within 10 seconds, including any hook execution. If a response exceeds this threshold, an HTTP 504 status code is returned. For details, see [Timeouts and Limits.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/timeouts-limits.html)\n\n### Error Handling\n\nError responses follow the [RFC 7807](https://datatracker.ietf.org/doc/html/rfc7807) problem detail format. To trace errors, include a `correlation-id` header in your request — the response returns it as `x-correlation-id`. For details, see [HTTP Status Codes and Errors.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/error-response-codes.html)\n\n## Use Cases\n\n### Get a Single Product\n\nRetrieve product details by ID. Replace `{access_token}` with a valid SLAS token.\n\n```sh\ncurl \"https://{shortCode}.api.commercecloud.salesforce.com/product/shopper-products/v1/organizations/{organizationId}/products/25695327M?siteId=RefArch\" \\\n -H \"Authorization: Bearer {access_token}\"\n```\n\n### Get Multiple Products\n\nRetrieve up to 24 products in a single request:\n\n```sh\ncurl \"https://{shortCode}.api.commercecloud.salesforce.com/product/shopper-products/v1/organizations/{organizationId}/products?ids=25695327M,25519318M&siteId=RefArch\" \\\n -H \"Authorization: Bearer {access_token}\"\n```\n\n### Populate Product Listing Pages\n\nUse the Shopper Product API so that a customer, browsing on a commerce shopping app built using Commerce Cloud APIs, can see a list of products. For example, hydrate a list of products (max 24). The API returns product details including images, prices, promotions, and product availability.\n\n![b2c-commerce-shopper-products-screenshot-1.png](https://resources.docs.salesforce.com/rel1/doc/en-us/static/misc/b2c-commerce-shopper-products-screenshot-1.png)\n\n### Get Variation Product Details on an Ecommerce Channel\n\nUse the API so that a customer, browsing on a commerce shopping app built using Commerce Cloud APIs, can switch between different variation products. The API returns product details including images, prices, promotions, and available to sell inventory.\n\n![b2c-commerce-shopper-products-screenshot-2.png](https://resources.docs.salesforce.com/rel1/doc/en-us/static/misc/b2c-commerce-shopper-products-screenshot-2.png)\n\n### Retrieve Promotion Information\n\nPromotions provide discounts to shoppers when they meet certain purchase requirements.\n\nPromotion information is described in detail in [Promotion Details](https://developer.salesforce.com/docs/commerce/commerce-api/guide/promotion-details.html), but the following list provides several key points:\n\n- Pricing discounts for basket and shipping promotions are NEVER returned by the 'getProduct' or 'getProducts' endpoint.\n- Promotional pricing is ONLY returned for products that are included with non-conditional promotions.\n- Callout messages are ALWAYS returned by the 'getProduct' and 'getProducts' endpoints.\n\nBy default, 'getProduct' and 'getProducts' return promotion information for a queried product. Promotion information includes both pricing and callout message information. However, the specific pricing and callout information that is fetched is determined by:\n\n- Promotion Type\n- Product Type\n- Product Purchase Requirements\n\nSome promotions can be displayed on a Product Data Page (PDP) or Product Listing page (PLP), while other promotions are displayed in the context of a basket, such as an order level promotion: \"add the product to your basket to view price information\". It is important to understand what is included in the response when designing a PDP or PLP on top of SCAPI to ensure your design aligns with implementable features.\n\n#### Shopper Personalization\n\nThe SCAPI response can be personalized using the Shopper Context API or hooks. By setting specific values in the Shopper Context API, you can modify the response of the 'getProduct' or 'getProducts' endpoint based on the shopper's context. For instance, you can offer a 5% discount or free shipping to shoppers using mobile devices.\n\n#### JWA Caching\n\nThe response is cached in JWA, which means promotion data contained in the response is also cached based on the TTL (Time to Live) specified in the Business Manager [Feature Switches](https://help.salesforce.com/s/articleView?id=cc.b2c_feature_switches.htm&type=5) configuration.\nWhen the shopper context value is updated, a check is conducted to see if the updated shopper context affects the retrieval of product-promotion data. If it does, then the response is fetched from the source and cached in the JWA.\n\nFor details, see [Server-Side Web-Tier Caching.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html)\n\n## Resources\n\n### Product\n\nA full representation of a product or service that is to merchandise. A ready to merchandise product is one that is online, categorized, and published to a channel. The information associated with a product includes, the product name, description, custom and system attributes, variations, price, availability, and images.\n\n### Category\n\nCategories and subcategories are the structure by which products are organized and grouped in a catalog and on a storefront. Categories can have relationships to other categories. Further, each category can provide context that is inherited by subcategories. For example, a category can have an assigned attribute. A product assigned to that category or any subcategory inherits the categories’s attribute value. Once the product is removed from the category, the attribute value is no longer inherited by the product. You can also use category linking for site hierarchical navigation. For example, inside the Clothing category you may have Men’s, and inside the Men’s category you may have Pants.\n\nCategories are not tags.\n\n## Related APIs\n\n- [Products (Admin)](https://developer.salesforce.com/docs/commerce/commerce-api/references/products?meta=Summary) — Manage product catalogs, variations, and options.",
6
+ "version": "1.13.1",
6
7
  "x-api-type": "Shopper",
7
8
  "x-api-family": "Product"
8
9
  },
@@ -11,6 +12,7 @@
11
12
  "url": "https://{shortCode}.api.commercecloud.salesforce.com/product/shopper-products/v1",
12
13
  "variables": {
13
14
  "shortCode": {
15
+ "description": "An eight-character string assigned to a realm for routing purposes. See [Base URL and Request Formation.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html)",
14
16
  "default": "shortCode"
15
17
  }
16
18
  }
@@ -19,26 +21,35 @@
19
21
  "paths": {
20
22
  "/organizations/{organizationId}/products": {
21
23
  "get": {
24
+ "summary": "Returns product details for multiple products.",
25
+ "description": "Allows access to multiple product details with a single request. Only products that are online and assigned to a site catalog are returned. The maximum number of product IDs that you can request is 24. In addition to product details, the availability, images, price, bundled_products, set_products, recommendations, product options, variations, shipping_methods, and promotions for the products are included, as applicable.",
22
26
  "operationId": "getProducts",
23
27
  "parameters": [
24
28
  {
25
29
  "name": "organizationId",
26
30
  "in": "path",
31
+ "description": "An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f_ecom_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).",
27
32
  "required": true,
28
33
  "style": "simple",
29
34
  "explode": false,
30
35
  "schema": {
31
36
  "$ref": "#/components/schemas/OrganizationId"
32
- }
37
+ },
38
+ "example": "f_ecom_zzxy_prd"
33
39
  },
34
40
  {
35
41
  "name": "ids",
36
42
  "in": "query",
43
+ "description": "The IDs of the requested products (comma-separated, max 24 IDs).",
37
44
  "required": true,
38
45
  "style": "form",
39
46
  "explode": false,
40
47
  "schema": {
41
48
  "type": "array",
49
+ "example": [
50
+ "apple-ipod-shuffle",
51
+ "apple-ipod-nano"
52
+ ],
42
53
  "items": {
43
54
  "allOf": [
44
55
  {
@@ -47,16 +58,25 @@
47
58
  ]
48
59
  },
49
60
  "maxItems": 100
50
- }
61
+ },
62
+ "example": "apple-ipod-shuffle,apple-ipod-nano"
51
63
  },
52
64
  {
53
65
  "name": "inventoryIds",
54
66
  "in": "query",
67
+ "description": "The optional inventory list IDs, for which the availability should be shown (comma-separated, max 5 inventoryListIDs).",
55
68
  "required": false,
56
69
  "style": "form",
57
70
  "explode": false,
58
71
  "schema": {
59
72
  "type": "array",
73
+ "example": [
74
+ "Site1InventoryList",
75
+ "Site2InventoryList",
76
+ "Site3InventoryList",
77
+ "Site4InventoryList",
78
+ "Site5InventoryList"
79
+ ],
60
80
  "items": {
61
81
  "allOf": [
62
82
  {
@@ -65,16 +85,22 @@
65
85
  ]
66
86
  },
67
87
  "maxItems": 5
68
- }
88
+ },
89
+ "example": "Site1InventoryList,Site2InventoryList,Site3InventoryList,Site4InventoryList,Site5InventoryList"
69
90
  },
70
91
  {
71
92
  "name": "expand",
72
93
  "in": "query",
94
+ "description": "All expand parameters except page_meta_tags and slug are used for the request when no expand parameter is provided.\nThe value \"none\" may be used to turn off all expand options.\nThe page_meta_tags expand value is optional and available starting from B2C Commerce version 25.2.\nThe availability expand is deprecated. Use the Shopper Availability API instead for better caching performance.\nThe primary_category expand returns the full breadcrumb path (root to leaf) for each product's primary category.\nThe slug expand populates the slug field on the product. Available starting from B2C Commerce version 26.8.",
73
95
  "required": false,
74
96
  "style": "form",
75
97
  "explode": false,
76
98
  "schema": {
77
99
  "type": "array",
100
+ "example": [
101
+ "prices",
102
+ "promotions"
103
+ ],
78
104
  "items": {
79
105
  "type": "string",
80
106
  "enum": [
@@ -91,50 +117,66 @@
91
117
  "recommendations",
92
118
  "shipping_methods",
93
119
  "page_meta_tags",
94
- "primary_category"
95
- ]
120
+ "primary_category",
121
+ "slug"
122
+ ],
123
+ "example": "promotions"
96
124
  }
97
- }
125
+ },
126
+ "example": "prices,promotions"
98
127
  },
99
128
  {
100
129
  "name": "allImages",
101
130
  "in": "query",
131
+ "description": "The flag that indicates whether to retrieve the whole image model for the requested product.",
102
132
  "required": false,
103
133
  "style": "form",
104
134
  "explode": true,
105
135
  "schema": {
106
- "type": "boolean"
136
+ "type": "boolean",
137
+ "example": true
107
138
  }
108
139
  },
109
140
  {
110
141
  "name": "imgTypes",
111
142
  "in": "query",
143
+ "description": "Filters product images by viewType with optional count limits per type. This parameter requires the images expand parameter.\nWhen used, the response includes the imageGroups property filtered by the specified image types.\nThe format is a comma-separated list of image types with optional counts: <viewType>:<count>,<viewType>:<count>.\nIf the count is omitted, all images of that type are returned. If specified, the count limits the number of images returned for that type.\nFor example, imgTypes=large:2,small:1 returns up to 2 large images and 1 small image per product in the imageGroups.\nIf imgTypes is used without expand=images, it is ignored and imageGroups aren't included in the response.",
112
144
  "required": false,
113
145
  "style": "form",
114
146
  "explode": true,
115
147
  "schema": {
116
148
  "type": "string",
149
+ "example": "large:3,small:1",
117
150
  "maxLength": 50
118
- }
151
+ },
152
+ "example": "large:3,small:1"
119
153
  },
120
154
  {
121
155
  "name": "perPricebook",
122
156
  "in": "query",
157
+ "description": "The flag that indicates whether to retrieve the per PriceBook prices and tiered prices (if available) for requested Products. Available end of June, 2021.",
123
158
  "required": false,
124
159
  "style": "form",
125
160
  "explode": true,
126
161
  "schema": {
127
- "type": "boolean"
162
+ "type": "boolean",
163
+ "example": true
128
164
  }
129
165
  },
130
166
  {
131
167
  "name": "siteId",
132
168
  "in": "query",
169
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
133
170
  "required": true,
134
171
  "style": "form",
135
172
  "explode": true,
136
173
  "schema": {
137
174
  "$ref": "#/components/schemas/SiteId"
175
+ },
176
+ "examples": {
177
+ "SiteId": {
178
+ "value": "RefArch"
179
+ }
138
180
  }
139
181
  },
140
182
  {
@@ -145,56 +187,65 @@
145
187
  "explode": true,
146
188
  "schema": {
147
189
  "$ref": "#/components/schemas/Select"
190
+ },
191
+ "examples": {
192
+ "select": {
193
+ "value": "(**)"
194
+ }
148
195
  }
149
196
  },
150
197
  {
151
198
  "name": "locale",
152
199
  "in": "query",
200
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
153
201
  "required": false,
154
202
  "style": "form",
155
203
  "explode": true,
156
204
  "schema": {
157
205
  "$ref": "#/components/schemas/LocaleCode"
206
+ },
207
+ "examples": {
208
+ "LanguageCountry": {
209
+ "value": "en-US"
210
+ },
211
+ "CountryCode": {
212
+ "value": "US"
213
+ }
158
214
  }
159
215
  },
160
216
  {
161
217
  "name": "currency",
162
218
  "in": "query",
219
+ "description": "A three letter uppercase currency code conforming to the [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) standard, or the string `N/A` indicating that a currency is not applicable.",
163
220
  "required": false,
164
221
  "style": "form",
165
222
  "explode": true,
166
223
  "schema": {
167
224
  "$ref": "#/components/schemas/CurrencyCode"
225
+ },
226
+ "examples": {
227
+ "CurrencyCode": {
228
+ "value": "USD"
229
+ }
168
230
  }
169
231
  },
170
232
  {
171
233
  "name": "sfdc_usid",
172
234
  "in": "header",
235
+ "description": "A unique shopper identifier (USID) for tracking client context.\nUsed with endpoints secured with ShopperClientContextToken.\nThis header is required for all endpoints secured with ShopperClientContextToken.",
173
236
  "required": false,
174
237
  "style": "simple",
175
238
  "explode": false,
176
239
  "schema": {
177
240
  "type": "string",
178
- "format": "uuid"
179
- }
180
- },
181
- {
182
- "name": "sfdc_dw_dnt",
183
- "in": "header",
184
- "required": false,
185
- "style": "simple",
186
- "explode": false,
187
- "schema": {
188
- "type": "string",
189
- "enum": [
190
- "0",
191
- "1"
192
- ]
241
+ "format": "uuid",
242
+ "example": "550e8400-e29b-41d4-a716-446655440000"
193
243
  }
194
244
  },
195
245
  {
196
246
  "name": "personalized",
197
247
  "in": "query",
248
+ "description": "Controls whether personalization is applied to the response. Set to `none` to opt out of personalized response handling so the response is safe to cache at the CDN layer.\n\nWhen set to `none`, the server skips applying personalization to the response.\n\nSetting `personalized=none` is necessary but not sufficient for CDN caching: a response is only cached when the endpoint is also cacheable in the [server-side web-tier cache](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html), subject to its TTLs and invalidation. A call that is uncacheable in the web tier is not cached at the CDN either. See [CDN caching](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-caching.html).",
198
249
  "required": false,
199
250
  "style": "form",
200
251
  "explode": true,
@@ -202,12 +253,14 @@
202
253
  "type": "string",
203
254
  "enum": [
204
255
  "none"
205
- ]
256
+ ],
257
+ "example": "none"
206
258
  }
207
259
  },
208
260
  {
209
261
  "name": "sfdc_shopper_context",
210
262
  "in": "header",
263
+ "description": "Shopper context information (for example clientIP, sourceCode, and customQualifiers)\npassed in from a trusted backend application.",
211
264
  "required": false,
212
265
  "style": "simple",
213
266
  "explode": false,
@@ -233,6 +286,14 @@
233
286
  "application/problem+json": {
234
287
  "schema": {
235
288
  "$ref": "#/components/schemas/ErrorResponse"
289
+ },
290
+ "examples": {
291
+ "GetProductsBadRequestResponseExample": {
292
+ "$ref": "#/components/examples/GetProductsBadRequestResponseExample"
293
+ },
294
+ "MalformedSelectorResponseExample": {
295
+ "$ref": "#/components/examples/MalformedSelectorResponseExample"
296
+ }
236
297
  }
237
298
  }
238
299
  }
@@ -259,21 +320,26 @@
259
320
  },
260
321
  "/organizations/{organizationId}/products/{id}": {
261
322
  "get": {
323
+ "summary": "Returns product details for a single product.",
324
+ "description": "Allows access to product details for a single product ID. Only products that are online and assigned to a site catalog are returned. In addition to product details, the availability, images, price, bundled_products, set_products, recommendations, product options, variations, shipping_methods, and promotions for the products are included, as applicable.",
262
325
  "operationId": "getProduct",
263
326
  "parameters": [
264
327
  {
265
328
  "name": "organizationId",
266
329
  "in": "path",
330
+ "description": "An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f_ecom_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).",
267
331
  "required": true,
268
332
  "style": "simple",
269
333
  "explode": false,
270
334
  "schema": {
271
335
  "$ref": "#/components/schemas/OrganizationId"
272
- }
336
+ },
337
+ "example": "f_ecom_zzxy_prd"
273
338
  },
274
339
  {
275
340
  "name": "id",
276
341
  "in": "path",
342
+ "description": "The ID of the requested product.",
277
343
  "required": true,
278
344
  "style": "simple",
279
345
  "explode": false,
@@ -284,11 +350,19 @@
284
350
  {
285
351
  "name": "inventoryIds",
286
352
  "in": "query",
353
+ "description": "The optional inventory list IDs, for which the availability should be shown (comma-separated, max 5 inventoryListIDs).",
287
354
  "required": false,
288
355
  "style": "form",
289
356
  "explode": false,
290
357
  "schema": {
291
358
  "type": "array",
359
+ "example": [
360
+ "Site1InventoryList",
361
+ "Site2InventoryList",
362
+ "Site3InventoryList",
363
+ "Site4InventoryList",
364
+ "Site5InventoryList"
365
+ ],
292
366
  "items": {
293
367
  "allOf": [
294
368
  {
@@ -297,16 +371,22 @@
297
371
  ]
298
372
  },
299
373
  "maxItems": 5
300
- }
374
+ },
375
+ "example": "Site1InventoryList,Site2InventoryList,Site3InventoryList,Site4InventoryList,Site5InventoryList"
301
376
  },
302
377
  {
303
378
  "name": "expand",
304
379
  "in": "query",
380
+ "description": "All expand parameters except page_meta_tags and slug are used for the request when no expand parameter is provided.\nThe value \"none\" may be used to turn off all expand options.\nThe page_meta_tags expand value is optional and available starting from B2C Commerce version 25.2.\nThe availability expand is deprecated. Use the Shopper Availability API instead for better caching performance.\nThe primary_category expand returns the full breadcrumb path (root to leaf) for the product's primary category.\nThe slug expand populates the slug field on the product. Available starting from B2C Commerce version 26.8.",
305
381
  "required": false,
306
382
  "style": "form",
307
383
  "explode": false,
308
384
  "schema": {
309
385
  "type": "array",
386
+ "example": [
387
+ "prices",
388
+ "promotions"
389
+ ],
310
390
  "items": {
311
391
  "type": "string",
312
392
  "enum": [
@@ -323,40 +403,50 @@
323
403
  "recommendations",
324
404
  "shipping_methods",
325
405
  "page_meta_tags",
326
- "primary_category"
327
- ]
406
+ "primary_category",
407
+ "slug"
408
+ ],
409
+ "example": "links"
328
410
  }
329
- }
411
+ },
412
+ "example": "prices,promotions"
330
413
  },
331
414
  {
332
415
  "name": "allImages",
333
416
  "in": "query",
417
+ "description": "The flag that indicates whether to retrieve the whole image model for the requested product.",
334
418
  "required": false,
335
419
  "style": "form",
336
420
  "explode": true,
337
421
  "schema": {
338
- "type": "boolean"
422
+ "type": "boolean",
423
+ "example": true
339
424
  }
340
425
  },
341
426
  {
342
427
  "name": "imgTypes",
343
428
  "in": "query",
429
+ "description": "Filters product images by viewType with optional count limits per type. This parameter requires the images expand parameter.\nWhen used, the response includes the imageGroups property filtered by the specified image types.\nThe format is a comma-separated list of image types with optional counts: <viewType>:<count>,<viewType>:<count>.\nIf the count is omitted, all images of that type are returned. If specified, the count limits the number of images returned for that type.\nFor example, imgTypes=large:2,small:1 returns up to 2 large images and 1 small image per product in the imageGroups.\nIf imgTypes is used without expand=images, it is ignored and imageGroups aren't included in the response.",
344
430
  "required": false,
345
431
  "style": "form",
346
432
  "explode": true,
347
433
  "schema": {
348
434
  "type": "string",
435
+ "example": "large:3,small:1",
349
436
  "maxLength": 50
350
- }
437
+ },
438
+ "example": "large:3,small:1"
351
439
  },
352
440
  {
353
441
  "name": "perPricebook",
354
442
  "in": "query",
443
+ "description": "The flag that indicates whether to retrieve the per PriceBook prices and tiered prices (if available) for requested Products. Available end of June, 2021.",
355
444
  "required": false,
356
445
  "style": "form",
357
446
  "explode": true,
358
447
  "schema": {
359
- "type": "boolean"
448
+ "type": "boolean",
449
+ "example": true
360
450
  }
361
451
  },
362
452
  {
@@ -367,66 +457,81 @@
367
457
  "explode": true,
368
458
  "schema": {
369
459
  "$ref": "#/components/schemas/Select"
460
+ },
461
+ "examples": {
462
+ "select": {
463
+ "value": "(**)"
464
+ }
370
465
  }
371
466
  },
372
467
  {
373
468
  "name": "currency",
374
469
  "in": "query",
470
+ "description": "A three letter uppercase currency code conforming to the [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) standard, or the string `N/A` indicating that a currency is not applicable.",
375
471
  "required": false,
376
472
  "style": "form",
377
473
  "explode": true,
378
474
  "schema": {
379
475
  "$ref": "#/components/schemas/CurrencyCode"
476
+ },
477
+ "examples": {
478
+ "CurrencyCode": {
479
+ "value": "USD"
480
+ }
380
481
  }
381
482
  },
382
483
  {
383
484
  "name": "locale",
384
485
  "in": "query",
486
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
385
487
  "required": false,
386
488
  "style": "form",
387
489
  "explode": true,
388
490
  "schema": {
389
491
  "$ref": "#/components/schemas/LocaleCode"
492
+ },
493
+ "examples": {
494
+ "LanguageCountry": {
495
+ "value": "en-US"
496
+ },
497
+ "CountryCode": {
498
+ "value": "US"
499
+ }
390
500
  }
391
501
  },
392
502
  {
393
503
  "name": "siteId",
394
504
  "in": "query",
505
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
395
506
  "required": true,
396
507
  "style": "form",
397
508
  "explode": true,
398
509
  "schema": {
399
510
  "$ref": "#/components/schemas/SiteId"
511
+ },
512
+ "examples": {
513
+ "SiteId": {
514
+ "value": "RefArch"
515
+ }
400
516
  }
401
517
  },
402
518
  {
403
519
  "name": "sfdc_usid",
404
520
  "in": "header",
521
+ "description": "A unique shopper identifier (USID) for tracking client context.\nUsed with endpoints secured with ShopperClientContextToken.\nThis header is required for all endpoints secured with ShopperClientContextToken.",
405
522
  "required": false,
406
523
  "style": "simple",
407
524
  "explode": false,
408
525
  "schema": {
409
526
  "type": "string",
410
- "format": "uuid"
411
- }
412
- },
413
- {
414
- "name": "sfdc_dw_dnt",
415
- "in": "header",
416
- "required": false,
417
- "style": "simple",
418
- "explode": false,
419
- "schema": {
420
- "type": "string",
421
- "enum": [
422
- "0",
423
- "1"
424
- ]
527
+ "format": "uuid",
528
+ "example": "550e8400-e29b-41d4-a716-446655440000"
425
529
  }
426
530
  },
427
531
  {
428
532
  "name": "personalized",
429
533
  "in": "query",
534
+ "description": "Controls whether personalization is applied to the response. Set to `none` to opt out of personalized response handling so the response is safe to cache at the CDN layer.\n\nWhen set to `none`, the server skips applying personalization to the response.\n\nSetting `personalized=none` is necessary but not sufficient for CDN caching: a response is only cached when the endpoint is also cacheable in the [server-side web-tier cache](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html), subject to its TTLs and invalidation. A call that is uncacheable in the web tier is not cached at the CDN either. See [CDN caching](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-caching.html).",
430
535
  "required": false,
431
536
  "style": "form",
432
537
  "explode": true,
@@ -434,12 +539,14 @@
434
539
  "type": "string",
435
540
  "enum": [
436
541
  "none"
437
- ]
542
+ ],
543
+ "example": "none"
438
544
  }
439
545
  },
440
546
  {
441
547
  "name": "sfdc_shopper_context",
442
548
  "in": "header",
549
+ "description": "Shopper context information (for example clientIP, sourceCode, and customQualifiers)\npassed in from a trusted backend application.",
443
550
  "required": false,
444
551
  "style": "simple",
445
552
  "explode": false,
@@ -455,6 +562,11 @@
455
562
  "application/json": {
456
563
  "schema": {
457
564
  "$ref": "#/components/schemas/Product"
565
+ },
566
+ "examples": {
567
+ "GetProductResponseExample": {
568
+ "$ref": "#/components/examples/GetProductResponseExample"
569
+ }
458
570
  }
459
571
  }
460
572
  }
@@ -465,6 +577,11 @@
465
577
  "application/problem+json": {
466
578
  "schema": {
467
579
  "$ref": "#/components/schemas/ErrorResponse"
580
+ },
581
+ "examples": {
582
+ "MalformedSelectorResponseExample": {
583
+ "$ref": "#/components/examples/MalformedSelectorResponseExample"
584
+ }
468
585
  }
469
586
  }
470
587
  }
@@ -478,6 +595,11 @@
478
595
  "application/problem+json": {
479
596
  "schema": {
480
597
  "$ref": "#/components/schemas/ErrorResponse"
598
+ },
599
+ "examples": {
600
+ "GetProductNotFoundResponseExample": {
601
+ "$ref": "#/components/examples/GetProductNotFoundResponseExample"
602
+ }
481
603
  }
482
604
  }
483
605
  }
@@ -501,21 +623,26 @@
501
623
  },
502
624
  "/organizations/{organizationId}/products/{productId}/images": {
503
625
  "get": {
626
+ "summary": "Returns product image data for a single product.",
627
+ "description": "Returns a Product document for the specified product ID, focused on imageGroups and related image fields. Only\nonline products assigned to a site catalog are returned.\n\nUse the following parameters to control image output:\nimgTypes — Filters which catalog view types to include, with optional per-type image limits. Defaults to all\nview types with a 200-image cap per type.\n\nallImages — Controls whether the full image model is returned.\n\nvariationAttribute — Narrows image selection by variation context. Applies only when allImages is true.",
504
628
  "operationId": "getProductImages",
505
629
  "parameters": [
506
630
  {
507
631
  "name": "organizationId",
508
632
  "in": "path",
633
+ "description": "An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f_ecom_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).",
509
634
  "required": true,
510
635
  "style": "simple",
511
636
  "explode": false,
512
637
  "schema": {
513
638
  "$ref": "#/components/schemas/OrganizationId"
514
- }
639
+ },
640
+ "example": "f_ecom_zzxy_prd"
515
641
  },
516
642
  {
517
643
  "name": "productId",
518
644
  "in": "path",
645
+ "description": "The ID of the product whose images to retrieve.",
519
646
  "required": true,
520
647
  "style": "simple",
521
648
  "explode": false,
@@ -526,35 +653,45 @@
526
653
  {
527
654
  "name": "imgTypes",
528
655
  "in": "query",
656
+ "description": "Comma-separated list of view types to include in the response, with optional per-type image limits. Each item is\neither viewType or viewType:count. If omitted, all catalog view types are returned, up to 200 images per view\ntype. If present, only the listed view types are included. The image count defaults to 200 per view type when\nno limit is specified.",
529
657
  "required": false,
530
658
  "style": "form",
531
659
  "explode": true,
532
660
  "schema": {
533
661
  "type": "string",
662
+ "example": "large:3,small:1",
534
663
  "maxLength": 50
535
- }
664
+ },
665
+ "example": "large:3,small:1"
536
666
  },
537
667
  {
538
668
  "name": "allImages",
539
669
  "in": "query",
670
+ "description": "When true, returns all variation-specific image groups rather than only the best-matching group\nfor the product's variation attribute values. Default: false.",
540
671
  "required": false,
541
672
  "style": "form",
542
673
  "explode": true,
543
674
  "schema": {
544
675
  "type": "boolean",
545
- "default": false
676
+ "default": false,
677
+ "example": false
546
678
  }
547
679
  },
548
680
  {
549
681
  "name": "variationAttribute",
550
682
  "in": "query",
683
+ "description": "Variation attribute values used to filter image groups when allImages=true.\nFormat: <attributeId>=<value>. This parameter can be repeated for multiple attributes.\nExample: color=red&variationAttribute=size=L",
551
684
  "required": false,
552
685
  "style": "form",
553
686
  "explode": false,
554
687
  "schema": {
555
688
  "type": "array",
689
+ "example": [
690
+ "color=red"
691
+ ],
556
692
  "items": {
557
693
  "type": "string",
694
+ "example": "color=red",
558
695
  "maxLength": 256,
559
696
  "minLength": 1
560
697
  }
@@ -563,51 +700,55 @@
563
700
  {
564
701
  "name": "siteId",
565
702
  "in": "query",
703
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
566
704
  "required": true,
567
705
  "style": "form",
568
706
  "explode": true,
569
707
  "schema": {
570
708
  "$ref": "#/components/schemas/SiteId"
709
+ },
710
+ "examples": {
711
+ "SiteId": {
712
+ "value": "RefArch"
713
+ }
571
714
  }
572
715
  },
573
716
  {
574
717
  "name": "locale",
575
718
  "in": "query",
719
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
576
720
  "required": false,
577
721
  "style": "form",
578
722
  "explode": true,
579
723
  "schema": {
580
724
  "$ref": "#/components/schemas/LocaleCode"
725
+ },
726
+ "examples": {
727
+ "LanguageCountry": {
728
+ "value": "en-US"
729
+ },
730
+ "CountryCode": {
731
+ "value": "US"
732
+ }
581
733
  }
582
734
  },
583
735
  {
584
736
  "name": "sfdc_usid",
585
737
  "in": "header",
738
+ "description": "A unique shopper identifier (USID) for tracking client context.\nUsed with endpoints secured with ShopperClientContextToken.\nThis header is required for all endpoints secured with ShopperClientContextToken.",
586
739
  "required": false,
587
740
  "style": "simple",
588
741
  "explode": false,
589
742
  "schema": {
590
743
  "type": "string",
591
- "format": "uuid"
592
- }
593
- },
594
- {
595
- "name": "sfdc_dw_dnt",
596
- "in": "header",
597
- "required": false,
598
- "style": "simple",
599
- "explode": false,
600
- "schema": {
601
- "type": "string",
602
- "enum": [
603
- "0",
604
- "1"
605
- ]
744
+ "format": "uuid",
745
+ "example": "550e8400-e29b-41d4-a716-446655440000"
606
746
  }
607
747
  },
608
748
  {
609
749
  "name": "personalized",
610
750
  "in": "query",
751
+ "description": "Controls whether personalization is applied to the response. Set to `none` to opt out of personalized response handling so the response is safe to cache at the CDN layer.\n\nWhen set to `none`, the server skips applying personalization to the response.\n\nSetting `personalized=none` is necessary but not sufficient for CDN caching: a response is only cached when the endpoint is also cacheable in the [server-side web-tier cache](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html), subject to its TTLs and invalidation. A call that is uncacheable in the web tier is not cached at the CDN either. See [CDN caching](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-caching.html).",
611
752
  "required": false,
612
753
  "style": "form",
613
754
  "explode": true,
@@ -615,12 +756,14 @@
615
756
  "type": "string",
616
757
  "enum": [
617
758
  "none"
618
- ]
759
+ ],
760
+ "example": "none"
619
761
  }
620
762
  },
621
763
  {
622
764
  "name": "sfdc_shopper_context",
623
765
  "in": "header",
766
+ "description": "Shopper context information (for example clientIP, sourceCode, and customQualifiers)\npassed in from a trusted backend application.",
624
767
  "required": false,
625
768
  "style": "simple",
626
769
  "explode": false,
@@ -636,6 +779,11 @@
636
779
  "application/json": {
637
780
  "schema": {
638
781
  "$ref": "#/components/schemas/ProductImages"
782
+ },
783
+ "examples": {
784
+ "GetProductImagesResponseExample": {
785
+ "$ref": "#/components/examples/GetProductImagesResponseExample"
786
+ }
639
787
  }
640
788
  }
641
789
  }
@@ -646,6 +794,11 @@
646
794
  "application/problem+json": {
647
795
  "schema": {
648
796
  "$ref": "#/components/schemas/ErrorResponse"
797
+ },
798
+ "examples": {
799
+ "GetProductImagesBadRequestResponseExample": {
800
+ "$ref": "#/components/examples/GetProductImagesBadRequestResponseExample"
801
+ }
649
802
  }
650
803
  }
651
804
  }
@@ -659,6 +812,11 @@
659
812
  "application/problem+json": {
660
813
  "schema": {
661
814
  "$ref": "#/components/schemas/ErrorResponse"
815
+ },
816
+ "examples": {
817
+ "GetProductImagesNotFoundResponseExample": {
818
+ "$ref": "#/components/examples/GetProductImagesNotFoundResponseExample"
819
+ }
662
820
  }
663
821
  }
664
822
  }
@@ -711,86 +869,102 @@
711
869
  },
712
870
  "/organizations/{organizationId}/products/{productId}/prices": {
713
871
  "get": {
872
+ "summary": "Returns price details for a single product.",
873
+ "description": "Returns price details for a single product that is online and assigned to a site catalog. Returns the effective sales price, tiered prices, and per-pricebook prices. Prices are personalized by customer group and pricebook. Responses are not CDN-cached but are eligible for JWA caching with a 15-minute TTL.",
714
874
  "operationId": "getProductPrices",
715
875
  "parameters": [
716
876
  {
717
877
  "name": "organizationId",
718
878
  "in": "path",
879
+ "description": "An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f_ecom_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).",
719
880
  "required": true,
720
881
  "style": "simple",
721
882
  "explode": false,
722
883
  "schema": {
723
884
  "$ref": "#/components/schemas/OrganizationId"
724
- }
885
+ },
886
+ "example": "f_ecom_zzxy_prd"
725
887
  },
726
888
  {
727
889
  "name": "productId",
728
890
  "in": "path",
891
+ "description": "The ID of the product whose prices to retrieve.",
729
892
  "required": true,
730
893
  "style": "simple",
731
894
  "explode": false,
732
895
  "schema": {
733
896
  "$ref": "#/components/schemas/ProductId"
734
- }
897
+ },
898
+ "example": "apple-ipod-shuffle"
735
899
  },
736
900
  {
737
901
  "name": "siteId",
738
902
  "in": "query",
903
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
739
904
  "required": true,
740
905
  "style": "form",
741
906
  "explode": true,
742
907
  "schema": {
743
908
  "$ref": "#/components/schemas/SiteId"
909
+ },
910
+ "examples": {
911
+ "SiteId": {
912
+ "value": "RefArch"
913
+ }
744
914
  }
745
915
  },
746
916
  {
747
917
  "name": "locale",
748
918
  "in": "query",
919
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
749
920
  "required": false,
750
921
  "style": "form",
751
922
  "explode": true,
752
923
  "schema": {
753
924
  "$ref": "#/components/schemas/LocaleCode"
925
+ },
926
+ "examples": {
927
+ "LanguageCountry": {
928
+ "value": "en-US"
929
+ },
930
+ "CountryCode": {
931
+ "value": "US"
932
+ }
754
933
  }
755
934
  },
756
935
  {
757
936
  "name": "currency",
758
937
  "in": "query",
938
+ "description": "A three letter uppercase currency code conforming to the [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) standard, or the string `N/A` indicating that a currency is not applicable.",
759
939
  "required": false,
760
940
  "style": "form",
761
941
  "explode": true,
762
942
  "schema": {
763
943
  "$ref": "#/components/schemas/CurrencyCode"
944
+ },
945
+ "examples": {
946
+ "CurrencyCode": {
947
+ "value": "USD"
948
+ }
764
949
  }
765
950
  },
766
951
  {
767
952
  "name": "sfdc_usid",
768
953
  "in": "header",
954
+ "description": "A unique shopper identifier (USID) for tracking client context.\nUsed with endpoints secured with ShopperClientContextToken.\nThis header is required for all endpoints secured with ShopperClientContextToken.",
769
955
  "required": false,
770
956
  "style": "simple",
771
957
  "explode": false,
772
958
  "schema": {
773
959
  "type": "string",
774
- "format": "uuid"
775
- }
776
- },
777
- {
778
- "name": "sfdc_dw_dnt",
779
- "in": "header",
780
- "required": false,
781
- "style": "simple",
782
- "explode": false,
783
- "schema": {
784
- "type": "string",
785
- "enum": [
786
- "0",
787
- "1"
788
- ]
960
+ "format": "uuid",
961
+ "example": "550e8400-e29b-41d4-a716-446655440000"
789
962
  }
790
963
  },
791
964
  {
792
965
  "name": "personalized",
793
966
  "in": "query",
967
+ "description": "Controls whether personalization is applied to the response. Set to `none` to opt out of personalized response handling so the response is safe to cache at the CDN layer.\n\nWhen set to `none`, the server skips applying personalization to the response.\n\nSetting `personalized=none` is necessary but not sufficient for CDN caching: a response is only cached when the endpoint is also cacheable in the [server-side web-tier cache](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html), subject to its TTLs and invalidation. A call that is uncacheable in the web tier is not cached at the CDN either. See [CDN caching](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-caching.html).",
794
968
  "required": false,
795
969
  "style": "form",
796
970
  "explode": true,
@@ -798,12 +972,14 @@
798
972
  "type": "string",
799
973
  "enum": [
800
974
  "none"
801
- ]
975
+ ],
976
+ "example": "none"
802
977
  }
803
978
  },
804
979
  {
805
980
  "name": "sfdc_shopper_context",
806
981
  "in": "header",
982
+ "description": "Shopper context information (for example clientIP, sourceCode, and customQualifiers)\npassed in from a trusted backend application.",
807
983
  "required": false,
808
984
  "style": "simple",
809
985
  "explode": false,
@@ -819,6 +995,11 @@
819
995
  "application/json": {
820
996
  "schema": {
821
997
  "$ref": "#/components/schemas/PricesResult"
998
+ },
999
+ "examples": {
1000
+ "GetProductPricesResponseExample": {
1001
+ "$ref": "#/components/examples/GetProductPricesResponseExample"
1002
+ }
822
1003
  }
823
1004
  }
824
1005
  }
@@ -829,6 +1010,11 @@
829
1010
  "application/problem+json": {
830
1011
  "schema": {
831
1012
  "$ref": "#/components/schemas/ErrorResponse"
1013
+ },
1014
+ "examples": {
1015
+ "GetProductPricesBadRequestResponseExample": {
1016
+ "$ref": "#/components/examples/GetProductPricesBadRequestResponseExample"
1017
+ }
832
1018
  }
833
1019
  }
834
1020
  }
@@ -842,6 +1028,11 @@
842
1028
  "application/problem+json": {
843
1029
  "schema": {
844
1030
  "$ref": "#/components/schemas/ErrorResponse"
1031
+ },
1032
+ "examples": {
1033
+ "GetProductPricesNotFoundResponseExample": {
1034
+ "$ref": "#/components/examples/GetProductPricesNotFoundResponseExample"
1035
+ }
845
1036
  }
846
1037
  }
847
1038
  }
@@ -894,86 +1085,102 @@
894
1085
  },
895
1086
  "/organizations/{organizationId}/products/{productId}/promotions": {
896
1087
  "get": {
1088
+ "summary": "Returns active promotion details for a single product.",
1089
+ "description": "Returns active promotion details for a single product that is online and assigned to a site catalog. Active promotions are filtered by customer group, campaign date range, and time slot. Promotions are personalized. Responses are not CDN-cached but are eligible for JWA caching with a 15-minute TTL.",
897
1090
  "operationId": "getProductPromotions",
898
1091
  "parameters": [
899
1092
  {
900
1093
  "name": "organizationId",
901
1094
  "in": "path",
1095
+ "description": "An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f_ecom_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).",
902
1096
  "required": true,
903
1097
  "style": "simple",
904
1098
  "explode": false,
905
1099
  "schema": {
906
1100
  "$ref": "#/components/schemas/OrganizationId"
907
- }
1101
+ },
1102
+ "example": "f_ecom_zzxy_prd"
908
1103
  },
909
1104
  {
910
1105
  "name": "productId",
911
1106
  "in": "path",
1107
+ "description": "The ID of the product whose promotions to retrieve.",
912
1108
  "required": true,
913
1109
  "style": "simple",
914
1110
  "explode": false,
915
1111
  "schema": {
916
1112
  "$ref": "#/components/schemas/ProductId"
917
- }
1113
+ },
1114
+ "example": "apple-ipod-shuffle"
918
1115
  },
919
1116
  {
920
1117
  "name": "siteId",
921
1118
  "in": "query",
1119
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
922
1120
  "required": true,
923
1121
  "style": "form",
924
1122
  "explode": true,
925
1123
  "schema": {
926
1124
  "$ref": "#/components/schemas/SiteId"
1125
+ },
1126
+ "examples": {
1127
+ "SiteId": {
1128
+ "value": "RefArch"
1129
+ }
927
1130
  }
928
1131
  },
929
1132
  {
930
1133
  "name": "locale",
931
1134
  "in": "query",
1135
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
932
1136
  "required": false,
933
1137
  "style": "form",
934
1138
  "explode": true,
935
1139
  "schema": {
936
1140
  "$ref": "#/components/schemas/LocaleCode"
1141
+ },
1142
+ "examples": {
1143
+ "LanguageCountry": {
1144
+ "value": "en-US"
1145
+ },
1146
+ "CountryCode": {
1147
+ "value": "US"
1148
+ }
937
1149
  }
938
1150
  },
939
1151
  {
940
1152
  "name": "currency",
941
1153
  "in": "query",
1154
+ "description": "A three letter uppercase currency code conforming to the [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) standard, or the string `N/A` indicating that a currency is not applicable.",
942
1155
  "required": false,
943
1156
  "style": "form",
944
1157
  "explode": true,
945
1158
  "schema": {
946
1159
  "$ref": "#/components/schemas/CurrencyCode"
1160
+ },
1161
+ "examples": {
1162
+ "CurrencyCode": {
1163
+ "value": "USD"
1164
+ }
947
1165
  }
948
1166
  },
949
1167
  {
950
1168
  "name": "sfdc_usid",
951
1169
  "in": "header",
1170
+ "description": "A unique shopper identifier (USID) for tracking client context.\nUsed with endpoints secured with ShopperClientContextToken.\nThis header is required for all endpoints secured with ShopperClientContextToken.",
952
1171
  "required": false,
953
1172
  "style": "simple",
954
1173
  "explode": false,
955
1174
  "schema": {
956
1175
  "type": "string",
957
- "format": "uuid"
958
- }
959
- },
960
- {
961
- "name": "sfdc_dw_dnt",
962
- "in": "header",
963
- "required": false,
964
- "style": "simple",
965
- "explode": false,
966
- "schema": {
967
- "type": "string",
968
- "enum": [
969
- "0",
970
- "1"
971
- ]
1176
+ "format": "uuid",
1177
+ "example": "550e8400-e29b-41d4-a716-446655440000"
972
1178
  }
973
1179
  },
974
1180
  {
975
1181
  "name": "personalized",
976
1182
  "in": "query",
1183
+ "description": "Controls whether personalization is applied to the response. Set to `none` to opt out of personalized response handling so the response is safe to cache at the CDN layer.\n\nWhen set to `none`, the server skips applying personalization to the response.\n\nSetting `personalized=none` is necessary but not sufficient for CDN caching: a response is only cached when the endpoint is also cacheable in the [server-side web-tier cache](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html), subject to its TTLs and invalidation. A call that is uncacheable in the web tier is not cached at the CDN either. See [CDN caching](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-caching.html).",
977
1184
  "required": false,
978
1185
  "style": "form",
979
1186
  "explode": true,
@@ -981,12 +1188,14 @@
981
1188
  "type": "string",
982
1189
  "enum": [
983
1190
  "none"
984
- ]
1191
+ ],
1192
+ "example": "none"
985
1193
  }
986
1194
  },
987
1195
  {
988
1196
  "name": "sfdc_shopper_context",
989
1197
  "in": "header",
1198
+ "description": "Shopper context information (for example clientIP, sourceCode, and customQualifiers)\npassed in from a trusted backend application.",
990
1199
  "required": false,
991
1200
  "style": "simple",
992
1201
  "explode": false,
@@ -1002,6 +1211,11 @@
1002
1211
  "application/json": {
1003
1212
  "schema": {
1004
1213
  "$ref": "#/components/schemas/PromotionsResult"
1214
+ },
1215
+ "examples": {
1216
+ "GetProductPromotionsResponseExample": {
1217
+ "$ref": "#/components/examples/GetProductPromotionsResponseExample"
1218
+ }
1005
1219
  }
1006
1220
  }
1007
1221
  }
@@ -1012,6 +1226,11 @@
1012
1226
  "application/problem+json": {
1013
1227
  "schema": {
1014
1228
  "$ref": "#/components/schemas/ErrorResponse"
1229
+ },
1230
+ "examples": {
1231
+ "GetProductPromotionsBadRequestResponseExample": {
1232
+ "$ref": "#/components/examples/GetProductPromotionsBadRequestResponseExample"
1233
+ }
1015
1234
  }
1016
1235
  }
1017
1236
  }
@@ -1025,6 +1244,11 @@
1025
1244
  "application/problem+json": {
1026
1245
  "schema": {
1027
1246
  "$ref": "#/components/schemas/ErrorResponse"
1247
+ },
1248
+ "examples": {
1249
+ "GetProductPromotionsNotFoundResponseExample": {
1250
+ "$ref": "#/components/examples/GetProductPromotionsNotFoundResponseExample"
1251
+ }
1028
1252
  }
1029
1253
  }
1030
1254
  }
@@ -1077,26 +1301,35 @@
1077
1301
  },
1078
1302
  "/organizations/{organizationId}/categories": {
1079
1303
  "get": {
1304
+ "summary": "Returns category and subcategory details for one or more categories.",
1305
+ "description": "When you use the URL template, the server returns multiple categories (a result object of category documents). You can use this template to obtain up to 50 categories in a single request. You must enclose the list of IDs in parentheses. If a category identifier contains parenthesis or the separator sign, you must URL encode the character.",
1080
1306
  "operationId": "getCategories",
1081
1307
  "parameters": [
1082
1308
  {
1083
1309
  "name": "organizationId",
1084
1310
  "in": "path",
1311
+ "description": "An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f_ecom_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).",
1085
1312
  "required": true,
1086
1313
  "style": "simple",
1087
1314
  "explode": false,
1088
1315
  "schema": {
1089
1316
  "$ref": "#/components/schemas/OrganizationId"
1090
- }
1317
+ },
1318
+ "example": "f_ecom_zzxy_prd"
1091
1319
  },
1092
1320
  {
1093
1321
  "name": "ids",
1094
1322
  "in": "query",
1323
+ "description": "The comma separated list of category IDs or slugs (max 50). For each value, if a category exists with that value as its ID, it is returned (ID takes precedence). Otherwise, the value is treated as a slug. If a slug is provided, it must be URL-encoded (for example, `mens%2Fclothing` for the slug `mens/clothing`).",
1095
1324
  "required": true,
1096
1325
  "style": "form",
1097
1326
  "explode": false,
1098
1327
  "schema": {
1099
1328
  "type": "array",
1329
+ "example": [
1330
+ "electronics-digital-cameras",
1331
+ "electronics-televisions"
1332
+ ],
1100
1333
  "items": {
1101
1334
  "allOf": [
1102
1335
  {
@@ -1105,11 +1338,13 @@
1105
1338
  ]
1106
1339
  },
1107
1340
  "maxItems": 50
1108
- }
1341
+ },
1342
+ "example": "electronics-digital-cameras,electronics-televisions"
1109
1343
  },
1110
1344
  {
1111
1345
  "name": "levels",
1112
1346
  "in": "query",
1347
+ "description": "Specifies how many levels of nested subcategories you want the server to return. The default value is 1. Valid values are 0, 1, or 2. Only online subcategories are returned.",
1113
1348
  "required": false,
1114
1349
  "style": "form",
1115
1350
  "explode": true,
@@ -1121,57 +1356,62 @@
1121
1356
  1,
1122
1357
  2
1123
1358
  ],
1359
+ "example": 1,
1124
1360
  "minimum": 0
1125
1361
  }
1126
1362
  },
1127
1363
  {
1128
1364
  "name": "locale",
1129
1365
  "in": "query",
1366
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
1130
1367
  "required": false,
1131
1368
  "style": "form",
1132
1369
  "explode": true,
1133
1370
  "schema": {
1134
1371
  "$ref": "#/components/schemas/LocaleCode"
1372
+ },
1373
+ "examples": {
1374
+ "LanguageCountry": {
1375
+ "value": "en-US"
1376
+ },
1377
+ "CountryCode": {
1378
+ "value": "US"
1379
+ }
1135
1380
  }
1136
1381
  },
1137
1382
  {
1138
1383
  "name": "siteId",
1139
1384
  "in": "query",
1385
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
1140
1386
  "required": true,
1141
1387
  "style": "form",
1142
1388
  "explode": true,
1143
1389
  "schema": {
1144
1390
  "$ref": "#/components/schemas/SiteId"
1391
+ },
1392
+ "examples": {
1393
+ "SiteId": {
1394
+ "value": "RefArch"
1395
+ }
1145
1396
  }
1146
1397
  },
1147
1398
  {
1148
1399
  "name": "sfdc_usid",
1149
1400
  "in": "header",
1401
+ "description": "A unique shopper identifier (USID) for tracking client context.\nUsed with endpoints secured with ShopperClientContextToken.\nThis header is required for all endpoints secured with ShopperClientContextToken.",
1150
1402
  "required": false,
1151
1403
  "style": "simple",
1152
1404
  "explode": false,
1153
1405
  "schema": {
1154
1406
  "type": "string",
1155
- "format": "uuid"
1156
- }
1157
- },
1158
- {
1159
- "name": "sfdc_dw_dnt",
1160
- "in": "header",
1161
- "required": false,
1162
- "style": "simple",
1163
- "explode": false,
1164
- "schema": {
1165
- "type": "string",
1166
- "enum": [
1167
- "0",
1168
- "1"
1169
- ]
1407
+ "format": "uuid",
1408
+ "example": "550e8400-e29b-41d4-a716-446655440000"
1170
1409
  }
1171
1410
  },
1172
1411
  {
1173
1412
  "name": "personalized",
1174
1413
  "in": "query",
1414
+ "description": "Controls whether personalization is applied to the response. Set to `none` to opt out of personalized response handling so the response is safe to cache at the CDN layer.\n\nWhen set to `none`, the server skips applying personalization to the response.\n\nSetting `personalized=none` is necessary but not sufficient for CDN caching: a response is only cached when the endpoint is also cacheable in the [server-side web-tier cache](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html), subject to its TTLs and invalidation. A call that is uncacheable in the web tier is not cached at the CDN either. See [CDN caching](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-caching.html).",
1175
1415
  "required": false,
1176
1416
  "style": "form",
1177
1417
  "explode": true,
@@ -1179,12 +1419,14 @@
1179
1419
  "type": "string",
1180
1420
  "enum": [
1181
1421
  "none"
1182
- ]
1422
+ ],
1423
+ "example": "none"
1183
1424
  }
1184
1425
  },
1185
1426
  {
1186
1427
  "name": "sfdc_shopper_context",
1187
1428
  "in": "header",
1429
+ "description": "Shopper context information (for example clientIP, sourceCode, and customQualifiers)\npassed in from a trusted backend application.",
1188
1430
  "required": false,
1189
1431
  "style": "simple",
1190
1432
  "explode": false,
@@ -1200,6 +1442,11 @@
1200
1442
  "application/json": {
1201
1443
  "schema": {
1202
1444
  "$ref": "#/components/schemas/CategoryResult"
1445
+ },
1446
+ "examples": {
1447
+ "GetCategoriesResponseExample": {
1448
+ "$ref": "#/components/examples/GetCategoriesResponseExample"
1449
+ }
1203
1450
  }
1204
1451
  }
1205
1452
  }
@@ -1210,6 +1457,11 @@
1210
1457
  "application/problem+json": {
1211
1458
  "schema": {
1212
1459
  "$ref": "#/components/schemas/ErrorResponse"
1460
+ },
1461
+ "examples": {
1462
+ "GetCategoriesBadRequestResponseExample": {
1463
+ "$ref": "#/components/examples/GetCategoriesBadRequestResponseExample"
1464
+ }
1213
1465
  }
1214
1466
  }
1215
1467
  }
@@ -1236,11 +1488,14 @@
1236
1488
  },
1237
1489
  "/organizations/{organizationId}/categories/{id}": {
1238
1490
  "get": {
1491
+ "summary": "Returns category and subcategory details for a single category.",
1492
+ "description": "When you use the URL template, the server returns a category identified by the ID. By default, the server\nalso returns the first level of subcategories, but you can specify an additional level using the levels\nparameter.\n\nThis endpoint fetches both online and offline categories. For offline categories, only the top-level \ncategory is returned, not offline subcategories.\n\nUsing a large value for levels can cause performance issues when there is a large and deep category tree.",
1239
1493
  "operationId": "getCategory",
1240
1494
  "parameters": [
1241
1495
  {
1242
1496
  "name": "id",
1243
1497
  "in": "path",
1498
+ "description": "The ID or slug of the requested category. If a category exists with the given value as its ID, it is returned (ID takes precedence). Otherwise, the value is treated as a slug. If a slug is provided, it must be URL-encoded (for example, `mens%2Fclothing` for the slug `mens/clothing`).",
1244
1499
  "required": true,
1245
1500
  "style": "simple",
1246
1501
  "explode": false,
@@ -1251,16 +1506,19 @@
1251
1506
  {
1252
1507
  "name": "organizationId",
1253
1508
  "in": "path",
1509
+ "description": "An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f_ecom_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).",
1254
1510
  "required": true,
1255
1511
  "style": "simple",
1256
1512
  "explode": false,
1257
1513
  "schema": {
1258
1514
  "$ref": "#/components/schemas/OrganizationId"
1259
- }
1515
+ },
1516
+ "example": "f_ecom_zzxy_prd"
1260
1517
  },
1261
1518
  {
1262
1519
  "name": "levels",
1263
1520
  "in": "query",
1521
+ "description": "Specifies how many levels of nested subcategories you want the server to return. The default value is 1. Valid values are 0, 1, or 2. Only online subcategories are returned.",
1264
1522
  "required": false,
1265
1523
  "style": "form",
1266
1524
  "explode": true,
@@ -1272,57 +1530,62 @@
1272
1530
  1,
1273
1531
  2
1274
1532
  ],
1533
+ "example": 1,
1275
1534
  "minimum": 0
1276
1535
  }
1277
1536
  },
1278
1537
  {
1279
1538
  "name": "locale",
1280
1539
  "in": "query",
1540
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
1281
1541
  "required": false,
1282
1542
  "style": "form",
1283
1543
  "explode": true,
1284
1544
  "schema": {
1285
1545
  "$ref": "#/components/schemas/LocaleCode"
1546
+ },
1547
+ "examples": {
1548
+ "LanguageCountry": {
1549
+ "value": "en-US"
1550
+ },
1551
+ "CountryCode": {
1552
+ "value": "US"
1553
+ }
1286
1554
  }
1287
1555
  },
1288
1556
  {
1289
1557
  "name": "siteId",
1290
1558
  "in": "query",
1559
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
1291
1560
  "required": true,
1292
1561
  "style": "form",
1293
1562
  "explode": true,
1294
1563
  "schema": {
1295
1564
  "$ref": "#/components/schemas/SiteId"
1565
+ },
1566
+ "examples": {
1567
+ "SiteId": {
1568
+ "value": "RefArch"
1569
+ }
1296
1570
  }
1297
1571
  },
1298
1572
  {
1299
1573
  "name": "sfdc_usid",
1300
1574
  "in": "header",
1575
+ "description": "A unique shopper identifier (USID) for tracking client context.\nUsed with endpoints secured with ShopperClientContextToken.\nThis header is required for all endpoints secured with ShopperClientContextToken.",
1301
1576
  "required": false,
1302
1577
  "style": "simple",
1303
1578
  "explode": false,
1304
1579
  "schema": {
1305
1580
  "type": "string",
1306
- "format": "uuid"
1307
- }
1308
- },
1309
- {
1310
- "name": "sfdc_dw_dnt",
1311
- "in": "header",
1312
- "required": false,
1313
- "style": "simple",
1314
- "explode": false,
1315
- "schema": {
1316
- "type": "string",
1317
- "enum": [
1318
- "0",
1319
- "1"
1320
- ]
1581
+ "format": "uuid",
1582
+ "example": "550e8400-e29b-41d4-a716-446655440000"
1321
1583
  }
1322
1584
  },
1323
1585
  {
1324
1586
  "name": "personalized",
1325
1587
  "in": "query",
1588
+ "description": "Controls whether personalization is applied to the response. Set to `none` to opt out of personalized response handling so the response is safe to cache at the CDN layer.\n\nWhen set to `none`, the server skips applying personalization to the response.\n\nSetting `personalized=none` is necessary but not sufficient for CDN caching: a response is only cached when the endpoint is also cacheable in the [server-side web-tier cache](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html), subject to its TTLs and invalidation. A call that is uncacheable in the web tier is not cached at the CDN either. See [CDN caching](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-caching.html).",
1326
1589
  "required": false,
1327
1590
  "style": "form",
1328
1591
  "explode": true,
@@ -1330,12 +1593,14 @@
1330
1593
  "type": "string",
1331
1594
  "enum": [
1332
1595
  "none"
1333
- ]
1596
+ ],
1597
+ "example": "none"
1334
1598
  }
1335
1599
  },
1336
1600
  {
1337
1601
  "name": "sfdc_shopper_context",
1338
1602
  "in": "header",
1603
+ "description": "Shopper context information (for example clientIP, sourceCode, and customQualifiers)\npassed in from a trusted backend application.",
1339
1604
  "required": false,
1340
1605
  "style": "simple",
1341
1606
  "explode": false,
@@ -1351,6 +1616,11 @@
1351
1616
  "application/json": {
1352
1617
  "schema": {
1353
1618
  "$ref": "#/components/schemas/Category"
1619
+ },
1620
+ "examples": {
1621
+ "GetCategoryResponseExample": {
1622
+ "$ref": "#/components/examples/GetCategoryResponseExample"
1623
+ }
1354
1624
  }
1355
1625
  }
1356
1626
  }
@@ -1361,6 +1631,11 @@
1361
1631
  "application/problem+json": {
1362
1632
  "schema": {
1363
1633
  "$ref": "#/components/schemas/ErrorResponse"
1634
+ },
1635
+ "examples": {
1636
+ "GetCategoryBadRequestResponseExample": {
1637
+ "$ref": "#/components/examples/GetCategoryBadRequestResponseExample"
1638
+ }
1364
1639
  }
1365
1640
  }
1366
1641
  }
@@ -1374,6 +1649,11 @@
1374
1649
  "application/problem+json": {
1375
1650
  "schema": {
1376
1651
  "$ref": "#/components/schemas/ErrorResponse"
1652
+ },
1653
+ "examples": {
1654
+ "GetCategoryNotFoundResponseExample": {
1655
+ "$ref": "#/components/examples/GetCategoryNotFoundResponseExample"
1656
+ }
1377
1657
  }
1378
1658
  }
1379
1659
  }
@@ -1400,42 +1680,59 @@
1400
1680
  "schemas": {
1401
1681
  "OrganizationId": {
1402
1682
  "type": "string",
1683
+ "description": "An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f_ecom_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).",
1684
+ "example": "f_ecom_zzxy_prd",
1403
1685
  "pattern": "^f_ecom_[a-z]{4}_(prd|stg|dev|s[0-9]{2}|[0-9]{3})$"
1404
1686
  },
1405
1687
  "ProductId": {
1406
1688
  "type": "string",
1689
+ "description": "The id (SKU) of the product.",
1690
+ "example": "apple-ipod-classic",
1407
1691
  "maxLength": 100,
1408
1692
  "minLength": 1
1409
1693
  },
1410
1694
  "InventoryId": {
1411
1695
  "type": "string",
1696
+ "description": "The inventory ID.",
1697
+ "example": "Site1InventoryList",
1412
1698
  "maxLength": 256,
1413
1699
  "minLength": 1
1414
1700
  },
1415
1701
  "SiteId": {
1416
1702
  "type": "string",
1703
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites",
1704
+ "example": "RefArch",
1417
1705
  "maxLength": 32,
1418
1706
  "minLength": 1
1419
1707
  },
1420
1708
  "Select": {
1421
1709
  "type": "string",
1710
+ "description": "The property selector declaring which fields are included into the response payload. You can specify a single field name, a comma-separated list of names or work with wildcards. You can also specify array operations and filter expressions. The actual selector value must be enclosed within parentheses. For more information, please read the documentation about property selectors [here](https://developer.salesforce.com/docs/commerce/commerce-api/guide/scapi-property-selection.html).",
1711
+ "example": "(name,id,variationAttributes.(**))",
1422
1712
  "minLength": 1,
1423
1713
  "pattern": "^[(].*[)]$"
1424
1714
  },
1425
1715
  "LanguageCountry": {
1426
1716
  "type": "string",
1717
+ "description": "A concatenated version of the standard Language and Country codes, combined with a hyphen '`-`'.",
1718
+ "example": "en-US",
1427
1719
  "pattern": "^[a-z][a-z]-[A-Z][A-Z]$"
1428
1720
  },
1429
1721
  "LanguageCode": {
1430
1722
  "type": "string",
1723
+ "description": "A two letter lowercase language code conforming to the [ISO 639-1](https://www.iso.org/iso-639-language-codes.html) standard. Additionally, this may be used to submit requests with the header parameter `Accept-Language`, following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766).",
1724
+ "example": "en",
1431
1725
  "pattern": "^[a-z][a-z]$"
1432
1726
  },
1433
1727
  "DefaultFallback": {
1434
1728
  "type": "string",
1435
1729
  "default": "default",
1730
+ "description": "A specialized value indicating the system default values for locales.",
1731
+ "example": "default",
1436
1732
  "pattern": "^default$"
1437
1733
  },
1438
1734
  "LocaleCode": {
1735
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
1439
1736
  "oneOf": [
1440
1737
  {
1441
1738
  "$ref": "#/components/schemas/LanguageCountry"
@@ -1450,17 +1747,27 @@
1450
1747
  },
1451
1748
  "CurrencyCode": {
1452
1749
  "type": "string",
1750
+ "description": "A three letter uppercase currency code conforming to the [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) standard, or the string `N/A` indicating that a currency is not applicable.",
1751
+ "example": "USD",
1453
1752
  "pattern": "^([A-Z][A-Z][A-Z]|N/A)$"
1454
1753
  },
1455
1754
  "Product": {
1456
1755
  "type": "object",
1457
- "additionalProperties": {},
1756
+ "additionalProperties": {
1757
+ "description": "This type supports additional properties passed along with the defined properties of this API.\nTo indicate that the properties were defined and expected to be handled as additional properties, they are expected to be prefixed with a `c_`.\nThe type will reject any property that does not fit this pattern, only allowing additional properties beginning with the known prefix.",
1758
+ "example": "c_trackingId",
1759
+ "title": "Additional Property Support"
1760
+ },
1761
+ "description": "Any product that is sold, shown alone, and does not have variations such as different sizes or colors. A product has no reliance on any other product for inheritance. *A product has a SKU and can have a product option, which has a different SKU*.",
1458
1762
  "properties": {
1459
1763
  "brand": {
1460
- "type": "string"
1764
+ "type": "string",
1765
+ "description": "The product's brand.",
1766
+ "example": "Apple"
1461
1767
  },
1462
1768
  "bundledProducts": {
1463
1769
  "type": "array",
1770
+ "description": "The array of all bundled products of this product.",
1464
1771
  "items": {
1465
1772
  "$ref": "#/components/schemas/BundledProduct"
1466
1773
  }
@@ -1469,23 +1776,28 @@
1469
1776
  "$ref": "#/components/schemas/CurrencyCode"
1470
1777
  },
1471
1778
  "ean": {
1472
- "type": "string"
1779
+ "type": "string",
1780
+ "description": "The European Article Number of the product.",
1781
+ "example": "8essdf9w3"
1473
1782
  },
1474
1783
  "fetchDate": {
1475
1784
  "type": "integer",
1476
- "format": "int32"
1785
+ "format": "int32",
1786
+ "example": 5
1477
1787
  },
1478
1788
  "id": {
1479
1789
  "$ref": "#/components/schemas/ProductId"
1480
1790
  },
1481
1791
  "imageGroups": {
1482
1792
  "type": "array",
1793
+ "description": "The array of product image groups.",
1483
1794
  "items": {
1484
1795
  "$ref": "#/components/schemas/ImageGroup"
1485
1796
  }
1486
1797
  },
1487
1798
  "inventories": {
1488
1799
  "type": "array",
1800
+ "description": "The array of product inventories explicitly requested via the 'inventory_ids' query parameter. This property\n is only returned in context of the 'availability' expansion.",
1489
1801
  "items": {
1490
1802
  "$ref": "#/components/schemas/Inventory"
1491
1803
  }
@@ -1495,70 +1807,99 @@
1495
1807
  {
1496
1808
  "$ref": "#/components/schemas/Inventory"
1497
1809
  }
1498
- ]
1810
+ ],
1811
+ "description": "The site default inventory information. This property is only\n returned in context of the 'availability' expansion."
1499
1812
  },
1500
1813
  "longDescription": {
1501
- "type": "string"
1814
+ "type": "string",
1815
+ "description": "The localized product's long description.",
1816
+ "example": "Awesome long description of product"
1502
1817
  },
1503
1818
  "manufacturerName": {
1504
- "type": "string"
1819
+ "type": "string",
1820
+ "description": "The product's manufacturer name.",
1821
+ "example": "Apple"
1505
1822
  },
1506
1823
  "manufacturerSku": {
1507
- "type": "string"
1824
+ "type": "string",
1825
+ "description": "The product's manufacturer SKU.",
1826
+ "example": "2ND8834"
1508
1827
  },
1509
1828
  "master": {
1510
1829
  "allOf": [
1511
1830
  {
1512
1831
  "$ref": "#/components/schemas/Master"
1513
1832
  }
1514
- ]
1833
+ ],
1834
+ "description": "The master product information, only for types: master, variation group, and variant."
1515
1835
  },
1516
1836
  "minOrderQuantity": {
1517
1837
  "type": "number",
1518
- "format": "double"
1838
+ "format": "double",
1839
+ "description": "The minimum order quantity for this product.",
1840
+ "example": 2
1519
1841
  },
1520
1842
  "name": {
1521
- "type": "string"
1843
+ "type": "string",
1844
+ "description": "The localized product name.",
1845
+ "example": "Apple IPod Classic"
1522
1846
  },
1523
1847
  "options": {
1524
1848
  "type": "array",
1849
+ "description": "The array of product options, only for type option. This array can be empty.",
1525
1850
  "items": {
1526
1851
  "$ref": "#/components/schemas/Option"
1527
1852
  }
1528
1853
  },
1529
1854
  "pageDescription": {
1530
- "type": "string"
1855
+ "type": "string",
1856
+ "description": "The localized product's page description.",
1857
+ "example": "Really good Product"
1531
1858
  },
1532
1859
  "pageKeywords": {
1533
- "type": "string"
1860
+ "type": "string",
1861
+ "description": "The localized product's page description.",
1862
+ "example": "Ipod, Music Player"
1534
1863
  },
1535
1864
  "pageTitle": {
1536
- "type": "string"
1865
+ "type": "string",
1866
+ "description": "The localized product's page title.",
1867
+ "example": "Apple IPod Classic"
1537
1868
  },
1538
1869
  "pageMetaTags": {
1539
1870
  "type": "array",
1871
+ "description": "Page Meta tags associated with the given product.",
1540
1872
  "items": {
1541
1873
  "$ref": "#/components/schemas/PageMetaTag"
1542
1874
  }
1543
1875
  },
1544
1876
  "price": {
1545
1877
  "type": "number",
1546
- "format": "double"
1878
+ "format": "double",
1879
+ "description": "The sales price of the product. In case of complex products, like master or set, this is the minimum price of\n related child products.",
1880
+ "example": 59.99
1547
1881
  },
1548
1882
  "pricePerUnit": {
1549
1883
  "type": "number",
1550
- "format": "double"
1884
+ "format": "double",
1885
+ "description": "The price per unit if defined for the product",
1886
+ "example": 19.99
1551
1887
  },
1552
1888
  "pricePerUnitMax": {
1553
1889
  "type": "number",
1554
- "format": "double"
1890
+ "format": "double",
1891
+ "description": "The max price per unit typically for a master product's variant.",
1892
+ "example": 29.99
1555
1893
  },
1556
1894
  "priceMax": {
1557
1895
  "type": "number",
1558
- "format": "double"
1896
+ "format": "double",
1897
+ "description": "The maximum sales of related child products in complex products like master or set.",
1898
+ "example": 69.99
1559
1899
  },
1560
1900
  "priceRanges": {
1561
1901
  "type": "array",
1902
+ "description": "Array of one or more price range objects representing one or more Pricebooks in context for the site.",
1562
1903
  "items": {
1563
1904
  "$ref": "#/components/schemas/PriceRange"
1564
1905
  }
@@ -1568,36 +1909,63 @@
1568
1909
  "additionalProperties": {
1569
1910
  "type": "number",
1570
1911
  "format": "double"
1571
- }
1912
+ },
1913
+ "description": "The prices map with pricebook IDs and their values."
1572
1914
  },
1573
1915
  "primaryCategoryId": {
1574
- "type": "string"
1916
+ "type": "string",
1917
+ "description": "The ID of the products primary category.",
1918
+ "example": "electronics"
1575
1919
  },
1576
1920
  "primaryCategory": {
1577
1921
  "type": "object",
1922
+ "description": "The primary category of the product, including its full ancestor breadcrumb path (root to leaf,\nroot category node excluded). Only present when the primary_category expand is requested.",
1578
1923
  "properties": {
1579
1924
  "id": {
1580
1925
  "type": "string",
1926
+ "description": "The ID of the primary category.",
1927
+ "example": "electronics-digital-media-players",
1581
1928
  "maxLength": 256,
1582
1929
  "minLength": 1
1583
1930
  },
1584
1931
  "name": {
1585
1932
  "type": "string",
1933
+ "description": "The localized name of the primary category.",
1934
+ "example": "iPod & MP3 Players",
1935
+ "maxLength": 256,
1936
+ "minLength": 1
1937
+ },
1938
+ "slug": {
1939
+ "type": "string",
1940
+ "description": "SEO path persisted for the primary category. This property is omitted when no category URL mapping exists for the requested locale.",
1941
+ "example": "electronics/ipod-mp3-players",
1586
1942
  "maxLength": 256,
1587
1943
  "minLength": 1
1588
1944
  },
1589
1945
  "parentCategoryTree": {
1590
1946
  "type": "array",
1947
+ "description": "The list of ancestor categories from root to the primary category (root category node excluded).",
1591
1948
  "items": {
1592
1949
  "type": "object",
1593
1950
  "properties": {
1594
1951
  "id": {
1595
1952
  "type": "string",
1953
+ "description": "The ID of the ancestor category.",
1954
+ "example": "electronics",
1596
1955
  "maxLength": 256,
1597
1956
  "minLength": 1
1598
1957
  },
1599
1958
  "name": {
1600
1959
  "type": "string",
1960
+ "description": "The name of the ancestor category.",
1961
+ "example": "Electronics",
1962
+ "maxLength": 256,
1963
+ "minLength": 1
1964
+ },
1965
+ "slug": {
1966
+ "type": "string",
1967
+ "description": "SEO path persisted for the primary category. This property is omitted when no category URL mapping exists for the requested locale.",
1968
+ "example": "electronics/ipod-mp3-players",
1601
1969
  "maxLength": 256,
1602
1970
  "minLength": 1
1603
1971
  }
@@ -1608,40 +1976,57 @@
1608
1976
  },
1609
1977
  "productLinks": {
1610
1978
  "type": "array",
1979
+ "description": "The array of source and target product links information.",
1611
1980
  "items": {
1612
1981
  "$ref": "#/components/schemas/ProductLink"
1613
1982
  }
1614
1983
  },
1615
1984
  "productPromotions": {
1616
1985
  "type": "array",
1986
+ "description": "An array of active customer product promotions for this product, sorted by promotion priority\nusing SORT_BY_EXCLUSIVITY ordering (exclusivity → rank → promotion class → discount type →\nbest discount → ID). This array can be empty. Coupon promotions are not returned in this array.\nSee [PromotionPlan.SORT_BY_EXCLUSIVITY](https://salesforcecommercecloud.github.io/b2c-dev-doc/docs/current/scriptapi/html/index.html?target=class_dw_campaign_PromotionPlan.html) for more details.",
1617
1987
  "items": {
1618
1988
  "$ref": "#/components/schemas/ProductPromotion"
1619
1989
  }
1620
1990
  },
1621
1991
  "recommendations": {
1622
1992
  "type": "array",
1993
+ "description": "Returns a list of recommendations.",
1623
1994
  "items": {
1624
1995
  "$ref": "#/components/schemas/Recommendation"
1625
1996
  }
1626
1997
  },
1627
1998
  "setProducts": {
1628
1999
  "type": "array",
2000
+ "description": "The array of set products of this product.",
1629
2001
  "items": {
1630
2002
  "$ref": "#/components/schemas/Product"
1631
2003
  }
1632
2004
  },
1633
2005
  "shortDescription": {
1634
- "type": "string"
2006
+ "type": "string",
2007
+ "description": "The localized product short description.",
2008
+ "example": "Awesome Product"
2009
+ },
2010
+ "slug": {
2011
+ "type": "string",
2012
+ "description": "The SEO URL slug for the product. Only present when the slug expand is requested and the slug feature is enabled.",
2013
+ "example": "modern-dress-shirt/74974310M.html",
2014
+ "maxLength": 256
1635
2015
  },
1636
2016
  "slugUrl": {
1637
- "type": "string"
2017
+ "type": "string",
2018
+ "description": "The complete link to this product's storefront page.",
2019
+ "example": "https://www.example.com/on/store/Sites-MySite/default/Product-Show?pid=MyProduct"
1638
2020
  },
1639
2021
  "stepQuantity": {
1640
2022
  "type": "number",
1641
- "format": "double"
2023
+ "format": "double",
2024
+ "description": "The steps in which the order amount of the product can be\n increased.",
2025
+ "example": 2
1642
2026
  },
1643
2027
  "tieredPrices": {
1644
2028
  "type": "array",
2029
+ "description": "The document represents list of tiered prices if the product is a variant",
1645
2030
  "items": {
1646
2031
  "$ref": "#/components/schemas/ProductPriceTable"
1647
2032
  }
@@ -1651,36 +2036,48 @@
1651
2036
  {
1652
2037
  "$ref": "#/components/schemas/ProductType"
1653
2038
  }
1654
- ]
2039
+ ],
2040
+ "description": "The product type information. Can be one or more of the following values: item, master, variation_group, variant, bundle, and set."
1655
2041
  },
1656
2042
  "unit": {
1657
- "type": "string"
2043
+ "type": "string",
2044
+ "description": "The sales unit of the product.",
2045
+ "example": "lbs"
1658
2046
  },
1659
2047
  "upc": {
1660
- "type": "string"
2048
+ "type": "string",
2049
+ "description": "The Universal Product Code (UPC).",
2050
+ "example": "JSDU876"
1661
2051
  },
1662
2052
  "validFrom": {
1663
2053
  "type": "string",
1664
- "format": "date-time"
2054
+ "format": "date-time",
2055
+ "description": "The time a product is valid from.",
2056
+ "example": "9999-12-31T00:00:00Z"
1665
2057
  },
1666
2058
  "validTo": {
1667
2059
  "type": "string",
1668
- "format": "date-time"
2060
+ "format": "date-time",
2061
+ "description": "The time a product is valid to.",
2062
+ "example": "9999-12-31T23:59:59Z"
1669
2063
  },
1670
2064
  "variants": {
1671
2065
  "type": "array",
2066
+ "description": "The array of actual variants. Only for master, variation group, and variant types. This array can be empty.",
1672
2067
  "items": {
1673
2068
  "$ref": "#/components/schemas/Variant"
1674
2069
  }
1675
2070
  },
1676
2071
  "variationAttributes": {
1677
2072
  "type": "array",
2073
+ "description": "Sorted array of variation attributes information. Only for master,\n variation group, and variant types. This array can be empty.",
1678
2074
  "items": {
1679
2075
  "$ref": "#/components/schemas/VariationAttribute"
1680
2076
  }
1681
2077
  },
1682
2078
  "variationGroups": {
1683
2079
  "type": "array",
2080
+ "description": "The array of actual variation groups. Only for master, variation group, and variant types. This array can be empty.",
1684
2081
  "items": {
1685
2082
  "$ref": "#/components/schemas/VariationGroup"
1686
2083
  }
@@ -1689,10 +2086,12 @@
1689
2086
  "type": "object",
1690
2087
  "additionalProperties": {
1691
2088
  "type": "string"
1692
- }
2089
+ },
2090
+ "description": "The actual variation attribute ID - value pairs. Only for variant and\n variation group types."
1693
2091
  },
1694
2092
  "shippingMethods": {
1695
2093
  "type": "array",
2094
+ "description": "The array of applicable shipping methods for this product. This array can be empty.\nThis property is only returned in context of the 'shipping_methods' expansion.",
1696
2095
  "items": {
1697
2096
  "$ref": "#/components/schemas/ShippingMethod"
1698
2097
  }
@@ -1704,20 +2103,25 @@
1704
2103
  },
1705
2104
  "BundledProduct": {
1706
2105
  "type": "object",
2106
+ "description": "A bundle of products that can be bought together (all or nothing). Each product in the bundle can itself be bought independently, but this is outside of the context of the bundle. A bundle is a purchasing convenience. *Product bundle has a SKU and price.*",
1707
2107
  "properties": {
1708
2108
  "id": {
1709
- "type": "string"
2109
+ "type": "string",
2110
+ "example": "823476"
1710
2111
  },
1711
2112
  "product": {
1712
2113
  "allOf": [
1713
2114
  {
1714
2115
  "$ref": "#/components/schemas/Product"
1715
2116
  }
1716
- ]
2117
+ ],
2118
+ "description": "The product being bundled."
1717
2119
  },
1718
2120
  "quantity": {
1719
2121
  "type": "number",
1720
- "format": "double"
2122
+ "format": "double",
2123
+ "description": "For the product being bundled, the quantity added to the bundle.",
2124
+ "example": 5
1721
2125
  }
1722
2126
  },
1723
2127
  "required": [
@@ -1728,19 +2132,28 @@
1728
2132
  },
1729
2133
  "Image": {
1730
2134
  "type": "object",
2135
+ "description": "Product image",
1731
2136
  "properties": {
1732
2137
  "alt": {
1733
- "type": "string"
2138
+ "type": "string",
2139
+ "description": "The localized alternative text of the image.",
2140
+ "example": "Apple iPod Shuffle, large"
1734
2141
  },
1735
2142
  "disBaseLink": {
1736
- "type": "string"
2143
+ "type": "string",
2144
+ "description": "Base URL for the Dynamic Image Service (DIS) address. This is only shown if the image is stored on the server and DIS is enabled.",
2145
+ "example": "https://example.com/images/large/ipod-shuffle-silver.jpg"
1737
2146
  },
1738
2147
  "link": {
1739
2148
  "type": "string",
2149
+ "description": "The URL of the actual image.",
2150
+ "example": "https://example.com/on/demandware.static/-/Sites-electronics-catalog/default/dwc2/images/large/ipod-shuffle.jpg",
1740
2151
  "minLength": 1
1741
2152
  },
1742
2153
  "title": {
1743
- "type": "string"
2154
+ "type": "string",
2155
+ "description": "The localized title of the image.",
2156
+ "example": "Apple iPod Shuffle"
1744
2157
  }
1745
2158
  },
1746
2159
  "required": [
@@ -1749,32 +2162,43 @@
1749
2162
  },
1750
2163
  "VariationAttributeValue": {
1751
2164
  "type": "object",
2165
+ "description": "Document representing a variation attribute value.",
1752
2166
  "properties": {
1753
2167
  "description": {
1754
- "type": "string"
2168
+ "type": "string",
2169
+ "description": "The localized description of the variation value.",
2170
+ "example": "Color of the product"
1755
2171
  },
1756
2172
  "image": {
1757
2173
  "allOf": [
1758
2174
  {
1759
2175
  "$ref": "#/components/schemas/Image"
1760
2176
  }
1761
- ]
2177
+ ],
2178
+ "description": "The first product image for the configured viewtype and this variation value."
1762
2179
  },
1763
2180
  "imageSwatch": {
1764
2181
  "allOf": [
1765
2182
  {
1766
2183
  "$ref": "#/components/schemas/Image"
1767
2184
  }
1768
- ]
2185
+ ],
2186
+ "description": "The first product image for the configured viewtype and this variation value (typically the swatch image)."
1769
2187
  },
1770
2188
  "name": {
1771
- "type": "string"
2189
+ "type": "string",
2190
+ "description": "The localized display name of the variation value.",
2191
+ "example": "Red"
1772
2192
  },
1773
2193
  "orderable": {
1774
- "type": "boolean"
2194
+ "type": "boolean",
2195
+ "description": "A flag indicating whether at least one variant with this variation attribute value is available to sell.",
2196
+ "example": true
1775
2197
  },
1776
2198
  "value": {
1777
2199
  "type": "string",
2200
+ "description": "The actual variation value.",
2201
+ "example": "red",
1778
2202
  "minLength": 1
1779
2203
  }
1780
2204
  },
@@ -1784,16 +2208,22 @@
1784
2208
  },
1785
2209
  "VariationAttribute": {
1786
2210
  "type": "object",
2211
+ "description": "Document representing a variation attribute.",
1787
2212
  "properties": {
1788
2213
  "id": {
1789
2214
  "type": "string",
2215
+ "description": "The ID of the variation attribute.",
2216
+ "example": "color",
1790
2217
  "minLength": 1
1791
2218
  },
1792
2219
  "name": {
1793
- "type": "string"
2220
+ "type": "string",
2221
+ "description": "The localized display name of the variation attribute.",
2222
+ "example": "Color"
1794
2223
  },
1795
2224
  "values": {
1796
2225
  "type": "array",
2226
+ "description": "The sorted array of variation values. This array can be empty.",
1797
2227
  "items": {
1798
2228
  "$ref": "#/components/schemas/VariationAttributeValue"
1799
2229
  }
@@ -1805,21 +2235,26 @@
1805
2235
  },
1806
2236
  "ImageGroup": {
1807
2237
  "type": "object",
2238
+ "description": "Document representing an image group containing a list of images for a particular view type and an optional variation value.",
1808
2239
  "properties": {
1809
2240
  "images": {
1810
2241
  "type": "array",
2242
+ "description": "The images of the image group.",
1811
2243
  "items": {
1812
2244
  "$ref": "#/components/schemas/Image"
1813
2245
  }
1814
2246
  },
1815
2247
  "variationAttributes": {
1816
2248
  "type": "array",
2249
+ "description": "Returns a list of variation attributes applying to this image group.",
1817
2250
  "items": {
1818
2251
  "$ref": "#/components/schemas/VariationAttribute"
1819
2252
  }
1820
2253
  },
1821
2254
  "viewType": {
1822
- "type": "string"
2255
+ "type": "string",
2256
+ "description": "The image view type.",
2257
+ "example": "hi-res"
1823
2258
  }
1824
2259
  },
1825
2260
  "required": [
@@ -1829,30 +2264,43 @@
1829
2264
  },
1830
2265
  "Inventory": {
1831
2266
  "type": "object",
2267
+ "description": "Document representing inventory information of the current product for a particular inventory list.",
1832
2268
  "properties": {
1833
2269
  "ats": {
1834
2270
  "type": "number",
1835
- "format": "double"
2271
+ "format": "double",
2272
+ "description": "The Available To Sell (ATS) of the product. If it is infinity, the return value is 999999. The value can be overwritten by the\n OCAPI setting 'product.inventory.ats.max_threshold'.",
2273
+ "example": 15
1836
2274
  },
1837
2275
  "backorderable": {
1838
- "type": "boolean"
2276
+ "type": "boolean",
2277
+ "description": "A flag indicating whether the product is backorderable.",
2278
+ "example": true
1839
2279
  },
1840
2280
  "id": {
1841
2281
  "$ref": "#/components/schemas/InventoryId"
1842
2282
  },
1843
2283
  "inStockDate": {
1844
2284
  "type": "string",
1845
- "format": "date-time"
2285
+ "format": "date-time",
2286
+ "description": "A flag indicating the date when the product will be in stock.",
2287
+ "example": "9999-12-31T00:00:00Z"
1846
2288
  },
1847
2289
  "orderable": {
1848
- "type": "boolean"
2290
+ "type": "boolean",
2291
+ "description": "A flag indicating whether at least one of the products is available to sell.",
2292
+ "example": true
1849
2293
  },
1850
2294
  "preorderable": {
1851
- "type": "boolean"
2295
+ "type": "boolean",
2296
+ "description": "A flag indicating whether the product is preorderable.",
2297
+ "example": false
1852
2298
  },
1853
2299
  "stockLevel": {
1854
2300
  "type": "number",
1855
- "format": "double"
2301
+ "format": "double",
2302
+ "description": "The stock level of the product. If it is infinity, the return value is 999999. The value can be overwritten by the\n OCAPI setting 'product.inventory.stock_level.max_threshold'.",
2303
+ "example": 10
1856
2304
  }
1857
2305
  },
1858
2306
  "required": [
@@ -1861,41 +2309,50 @@
1861
2309
  },
1862
2310
  "Price": {
1863
2311
  "type": "number",
1864
- "format": "double"
2312
+ "format": "double",
2313
+ "description": "Document representing a price for a product",
2314
+ "example": 12.99
1865
2315
  },
1866
2316
  "Master": {
1867
2317
  "type": "object",
2318
+ "description": "The master product is a representation of a group of variant products. This is a non-buyable entity, provides inheritable attributes for its product variants, and is used for navigation. *Doesn't have a SKU.*",
1868
2319
  "properties": {
1869
2320
  "masterId": {
1870
2321
  "allOf": [
1871
2322
  {
1872
2323
  "$ref": "#/components/schemas/ProductId"
1873
2324
  }
1874
- ]
2325
+ ],
2326
+ "description": "The ID (SKU) of the master product."
1875
2327
  },
1876
2328
  "orderable": {
1877
- "type": "boolean"
2329
+ "type": "boolean",
2330
+ "description": "A flag indicating whether at least one of the variants can be ordered.",
2331
+ "example": true
1878
2332
  },
1879
2333
  "price": {
1880
2334
  "allOf": [
1881
2335
  {
1882
2336
  "$ref": "#/components/schemas/Price"
1883
2337
  }
1884
- ]
2338
+ ],
2339
+ "description": "The minimum sales price of the related variants."
1885
2340
  },
1886
2341
  "priceMax": {
1887
2342
  "allOf": [
1888
2343
  {
1889
2344
  "$ref": "#/components/schemas/Price"
1890
2345
  }
1891
- ]
2346
+ ],
2347
+ "description": "The maximum sales price of the related variants."
1892
2348
  },
1893
2349
  "prices": {
1894
2350
  "type": "object",
1895
2351
  "additionalProperties": {
1896
2352
  "type": "number",
1897
2353
  "format": "double"
1898
- }
2354
+ },
2355
+ "description": "List of sale prices."
1899
2356
  }
1900
2357
  },
1901
2358
  "required": [
@@ -1904,26 +2361,34 @@
1904
2361
  },
1905
2362
  "OptionValue": {
1906
2363
  "type": "object",
2364
+ "description": "Document representing an option value.",
1907
2365
  "properties": {
1908
2366
  "default": {
1909
- "type": "boolean"
2367
+ "type": "boolean",
2368
+ "description": "A flag indicating whether this option value is the default one.",
2369
+ "example": true
1910
2370
  },
1911
2371
  "id": {
1912
2372
  "allOf": [
1913
2373
  {
1914
2374
  "$ref": "#/components/schemas/ProductId"
1915
2375
  }
1916
- ]
2376
+ ],
2377
+ "description": "The ID of the option value.",
2378
+ "example": "5YR"
1917
2379
  },
1918
2380
  "name": {
1919
- "type": "string"
2381
+ "type": "string",
2382
+ "description": "The localized name of the option value.",
2383
+ "example": "5 Year Warranty"
1920
2384
  },
1921
2385
  "price": {
1922
2386
  "allOf": [
1923
2387
  {
1924
2388
  "$ref": "#/components/schemas/Price"
1925
2389
  }
1926
- ]
2390
+ ],
2391
+ "description": "The effective price of the option value."
1927
2392
  }
1928
2393
  },
1929
2394
  "required": [
@@ -1932,25 +2397,35 @@
1932
2397
  },
1933
2398
  "Option": {
1934
2399
  "type": "object",
2400
+ "description": "Product options enable you to sell configurable products that have optional accessories, upgrades, or additional services. Options are always purchased with a product and can't be purchased separately. *Product Option has a SKU and a price associated with it.*",
1935
2401
  "properties": {
1936
2402
  "description": {
1937
- "type": "string"
2403
+ "type": "string",
2404
+ "description": "The localized description of the option.",
2405
+ "example": "Get this Option"
1938
2406
  },
1939
2407
  "id": {
1940
2408
  "allOf": [
1941
2409
  {
1942
2410
  "$ref": "#/components/schemas/ProductId"
1943
2411
  }
1944
- ]
2412
+ ],
2413
+ "description": "The ID of the option.",
2414
+ "example": "Warranty"
1945
2415
  },
1946
2416
  "image": {
1947
- "type": "string"
2417
+ "type": "string",
2418
+ "description": "The URL to the option image.",
2419
+ "example": "https://www.exampleimage.com/images/optionImage.jpg"
1948
2420
  },
1949
2421
  "name": {
1950
- "type": "string"
2422
+ "type": "string",
2423
+ "description": "The localized name of the option.",
2424
+ "example": "Warranty"
1951
2425
  },
1952
2426
  "values": {
1953
2427
  "type": "array",
2428
+ "description": "The array of option values. This array can be empty.",
1954
2429
  "items": {
1955
2430
  "$ref": "#/components/schemas/OptionValue"
1956
2431
  }
@@ -1961,66 +2436,90 @@
1961
2436
  ]
1962
2437
  },
1963
2438
  "PageMetaTag": {
2439
+ "type": "object",
2440
+ "description": "Document representing a Page Meta Tag object.",
1964
2441
  "properties": {
1965
2442
  "id": {
1966
- "type": "string"
2443
+ "type": "string",
2444
+ "description": "The ID of the Page Meta Tag.",
2445
+ "example": "title",
2446
+ "maxLength": 100
1967
2447
  },
1968
2448
  "value": {
1969
- "type": "string"
2449
+ "type": "string",
2450
+ "description": "Locale-specific value of the Page Meta Tag, evaluated by resolving the rule set for the given Business Manager ID.",
2451
+ "example": "Buy the Long Sleeve Covered Placket Blouse for USD 61.99."
1970
2452
  },
1971
2453
  "type": {
1972
2454
  "type": "string",
2455
+ "description": "The kind of Page Meta Tag, indicating how the storefront should render the value.\nDocumented values are `name`, `property`, `title`, and `jsonld`:\n * `name` — render as `<meta name=\"...\">`.\n * `property` — render as `<meta property=\"...\">` (e.g. Open Graph tags).\n * `title` — render as the HTML `<title>` element.\n * `jsonld` — JSON-LD structured data, intended for rendering inside `<script type=\"application/ld+json\">`.\nThe field may be absent when the kind cannot be determined. Clients should treat unknown values as opaque so additional kinds can be introduced without breaking the contract.",
2456
+ "example": "name",
1973
2457
  "maxLength": 64
1974
2458
  }
1975
2459
  }
1976
2460
  },
1977
2461
  "PriceRange": {
1978
2462
  "type": "object",
2463
+ "description": "Document representing price ranges for a product which happens to be a master product (per Pricebook)",
1979
2464
  "properties": {
1980
2465
  "maxPrice": {
1981
2466
  "allOf": [
1982
2467
  {
1983
2468
  "$ref": "#/components/schemas/Price"
1984
2469
  }
1985
- ]
2470
+ ],
2471
+ "description": "Maximum price for the given pricebook (usually for a master Product would be the price for the Variant which has the highest price out of all Variants in that pricebook)"
1986
2472
  },
1987
2473
  "minPrice": {
1988
2474
  "allOf": [
1989
2475
  {
1990
2476
  "$ref": "#/components/schemas/Price"
1991
2477
  }
1992
- ]
2478
+ ],
2479
+ "description": "Minimum price for the given pricebook (usually for a master Product would be the price for the Variant which has the least price out of all Variants in that pricebook)"
1993
2480
  },
1994
2481
  "pricebook": {
1995
- "type": "string"
2482
+ "type": "string",
2483
+ "description": "The active pricebook from which the min and the max prices are calculated. The pricebook is based on the site context of the request as defined in ECOM.",
2484
+ "example": "usd-list-pricebook"
1996
2485
  }
1997
2486
  }
1998
2487
  },
1999
2488
  "ProductLink": {
2000
2489
  "type": "object",
2490
+ "description": "Document representing a link between two products. It contains the ID of the source and target products, the type of\n product link, and the URLs to retrieve product data.",
2001
2491
  "properties": {
2002
2492
  "sourceProductId": {
2003
2493
  "allOf": [
2004
2494
  {
2005
2495
  "$ref": "#/components/schemas/ProductId"
2006
2496
  }
2007
- ]
2497
+ ],
2498
+ "description": "The semantic ID of the product this product link is coming from.",
2499
+ "example": "824756924"
2008
2500
  },
2009
2501
  "sourceProductLink": {
2010
- "type": "string"
2502
+ "type": "string",
2503
+ "description": "The URL addressing the product this product link is coming from.",
2504
+ "example": "Link"
2011
2505
  },
2012
2506
  "targetProductId": {
2013
2507
  "allOf": [
2014
2508
  {
2015
2509
  "$ref": "#/components/schemas/ProductId"
2016
2510
  }
2017
- ]
2511
+ ],
2512
+ "description": "The semantic ID of the product this product link is pointing to.",
2513
+ "example": "2TR93459"
2018
2514
  },
2019
2515
  "targetProductLink": {
2020
- "type": "string"
2516
+ "type": "string",
2517
+ "description": "The URL addressing the product this product link is pointing to.",
2518
+ "example": "Link"
2021
2519
  },
2022
2520
  "type": {
2023
2521
  "type": "string",
2522
+ "description": "The type of product link.",
2024
2523
  "enum": [
2025
2524
  "cross_sell",
2026
2525
  "replacement",
@@ -2030,7 +2529,8 @@
2030
2529
  "alt_orderunit",
2031
2530
  "spare_part",
2032
2531
  "other"
2033
- ]
2532
+ ],
2533
+ "example": "up_sell"
2034
2534
  }
2035
2535
  },
2036
2536
  "required": [
@@ -2043,19 +2543,25 @@
2043
2543
  },
2044
2544
  "ProductPromotion": {
2045
2545
  "type": "object",
2546
+ "description": "Document representing a product promotion.",
2046
2547
  "properties": {
2047
2548
  "calloutMsg": {
2048
- "type": "string"
2549
+ "type": "string",
2550
+ "description": "The localized call-out message of the promotion.",
2551
+ "example": "Fantastic promotion"
2049
2552
  },
2050
2553
  "promotionId": {
2051
- "type": "string"
2554
+ "type": "string",
2555
+ "description": "The unique ID of the promotion.",
2556
+ "example": "summerSale"
2052
2557
  },
2053
2558
  "promotionalPrice": {
2054
2559
  "allOf": [
2055
2560
  {
2056
2561
  "$ref": "#/components/schemas/Price"
2057
2562
  }
2058
- ]
2563
+ ],
2564
+ "description": "The promotional price for this product."
2059
2565
  }
2060
2566
  },
2061
2567
  "required": [
@@ -2066,13 +2572,18 @@
2066
2572
  },
2067
2573
  "RecommendationType": {
2068
2574
  "type": "object",
2575
+ "description": "Document representing a recommendation type.",
2069
2576
  "properties": {
2070
2577
  "displayValue": {
2071
- "type": "string"
2578
+ "type": "string",
2579
+ "description": "The localized display value of the recommendation type.",
2580
+ "example": "UpSell"
2072
2581
  },
2073
2582
  "value": {
2074
2583
  "type": "integer",
2075
- "format": "int32"
2584
+ "format": "int32",
2585
+ "description": "The value of the recommendation type.",
2586
+ "example": 2
2076
2587
  }
2077
2588
  },
2078
2589
  "required": [
@@ -2082,27 +2593,38 @@
2082
2593
  },
2083
2594
  "Recommendation": {
2084
2595
  "type": "object",
2596
+ "description": "Document representing a product recommendation.",
2085
2597
  "properties": {
2086
2598
  "calloutMsg": {
2087
- "type": "string"
2599
+ "type": "string",
2600
+ "description": "The localized callout message of the recommendation.",
2601
+ "example": "Absolutely recommended"
2088
2602
  },
2089
2603
  "image": {
2090
2604
  "$ref": "#/components/schemas/Image"
2091
2605
  },
2092
2606
  "longDescription": {
2093
- "type": "string"
2607
+ "type": "string",
2608
+ "description": "The localized long description of the recommendation.",
2609
+ "example": "Really good detailed product description"
2094
2610
  },
2095
2611
  "name": {
2096
- "type": "string"
2612
+ "type": "string",
2613
+ "description": "The localized name of the recommendation.",
2614
+ "example": "Apple Ipod Shuffle"
2097
2615
  },
2098
2616
  "recommendationType": {
2099
2617
  "$ref": "#/components/schemas/RecommendationType"
2100
2618
  },
2101
2619
  "recommendedItemId": {
2102
- "type": "string"
2620
+ "type": "string",
2621
+ "description": "The recommended item ID of the recommendation.",
2622
+ "example": "apple-ipod-shuffle"
2103
2623
  },
2104
2624
  "shortDescription": {
2105
- "type": "string"
2625
+ "type": "string",
2626
+ "description": "The localized short description of the recommendation.",
2627
+ "example": "Product description"
2106
2628
  }
2107
2629
  },
2108
2630
  "required": [
@@ -2111,71 +2633,99 @@
2111
2633
  },
2112
2634
  "ProductPriceTable": {
2113
2635
  "type": "object",
2636
+ "description": "Tiered Price Level Object",
2114
2637
  "properties": {
2115
2638
  "price": {
2116
2639
  "allOf": [
2117
2640
  {
2118
2641
  "$ref": "#/components/schemas/Price"
2119
2642
  }
2120
- ]
2643
+ ],
2644
+ "description": "Price for the product for the specified tier for the specified pricebook"
2121
2645
  },
2122
2646
  "pricebook": {
2123
- "type": "string"
2647
+ "type": "string",
2648
+ "description": "The active pricebook for which this price is defined",
2649
+ "example": "usd-list-pricebook"
2124
2650
  },
2125
2651
  "quantity": {
2126
2652
  "type": "number",
2127
- "format": "double"
2653
+ "format": "double",
2654
+ "description": "Quantity tier for which the price is defined.",
2655
+ "example": 1
2128
2656
  }
2129
2657
  }
2130
2658
  },
2131
2659
  "ProductType": {
2132
2660
  "type": "object",
2661
+ "description": "Document representing a product type.",
2133
2662
  "properties": {
2134
2663
  "bundle": {
2135
- "type": "boolean"
2664
+ "type": "boolean",
2665
+ "description": "A flag indicating whether the product is a bundle.",
2666
+ "example": true
2136
2667
  },
2137
2668
  "item": {
2138
- "type": "boolean"
2669
+ "type": "boolean",
2670
+ "description": "A flag indicating whether the product is a standard item.",
2671
+ "example": false
2139
2672
  },
2140
2673
  "master": {
2141
- "type": "boolean"
2674
+ "type": "boolean",
2675
+ "description": "A flag indicating whether the product is a master.",
2676
+ "example": true
2142
2677
  },
2143
2678
  "option": {
2144
- "type": "boolean"
2679
+ "type": "boolean",
2680
+ "description": "A flag indicating whether the product is an option.",
2681
+ "example": false
2145
2682
  },
2146
2683
  "set": {
2147
- "type": "boolean"
2684
+ "type": "boolean",
2685
+ "description": "A flag indicating whether the product is a set.",
2686
+ "example": true
2148
2687
  },
2149
2688
  "variant": {
2150
- "type": "boolean"
2689
+ "type": "boolean",
2690
+ "description": "A flag indicating whether the product is a variant.",
2691
+ "example": false
2151
2692
  },
2152
2693
  "variationGroup": {
2153
- "type": "boolean"
2694
+ "type": "boolean",
2695
+ "description": "A flag indicating whether the product is a variation group.",
2696
+ "example": false
2154
2697
  }
2155
2698
  }
2156
2699
  },
2157
2700
  "Variant": {
2158
2701
  "type": "object",
2702
+ "description": "A product which is a variation within a master product that describes different colors, sizes, or other variation attributes. *Has a SKU.*",
2159
2703
  "properties": {
2160
2704
  "orderable": {
2161
- "type": "boolean"
2705
+ "type": "boolean",
2706
+ "description": "A flag indicating whether the variant is orderable.",
2707
+ "example": true
2162
2708
  },
2163
2709
  "price": {
2164
2710
  "allOf": [
2165
2711
  {
2166
2712
  "$ref": "#/components/schemas/Price"
2167
2713
  }
2168
- ]
2714
+ ],
2715
+ "description": "The sales price of the variant."
2169
2716
  },
2170
2717
  "productId": {
2171
2718
  "allOf": [
2172
2719
  {
2173
2720
  "$ref": "#/components/schemas/ProductId"
2174
2721
  }
2175
- ]
2722
+ ],
2723
+ "description": "The ID (SKU) of the variant.",
2724
+ "example": "8W4756834"
2176
2725
  },
2177
2726
  "tieredPrices": {
2178
2727
  "type": "array",
2728
+ "description": "List of tiered prices if the product is a variant",
2179
2729
  "items": {
2180
2730
  "$ref": "#/components/schemas/ProductPriceTable"
2181
2731
  }
@@ -2184,7 +2734,8 @@
2184
2734
  "type": "object",
2185
2735
  "additionalProperties": {
2186
2736
  "type": "string"
2187
- }
2737
+ },
2738
+ "description": "The actual variation attribute ID - value pairs."
2188
2739
  }
2189
2740
  },
2190
2741
  "required": [
@@ -2193,29 +2744,36 @@
2193
2744
  },
2194
2745
  "VariationGroup": {
2195
2746
  "type": "object",
2747
+ "description": "Representation of a group of variant products by an attribute. This is a non-buyable entity, provides inheritable attributes for its product variants, and is used for navigation. *Doesn't have a SKU.*",
2196
2748
  "properties": {
2197
2749
  "orderable": {
2198
- "type": "boolean"
2750
+ "type": "boolean",
2751
+ "description": "A flag indicating whether the variation group is orderable.",
2752
+ "example": false
2199
2753
  },
2200
2754
  "price": {
2201
2755
  "allOf": [
2202
2756
  {
2203
2757
  "$ref": "#/components/schemas/Price"
2204
2758
  }
2205
- ]
2759
+ ],
2760
+ "description": "The sales price of the variation group."
2206
2761
  },
2207
2762
  "productId": {
2208
2763
  "allOf": [
2209
2764
  {
2210
2765
  "$ref": "#/components/schemas/ProductId"
2211
2766
  }
2212
- ]
2767
+ ],
2768
+ "description": "The ID (SKU) of the variation group.",
2769
+ "example": "49345VG"
2213
2770
  },
2214
2771
  "variationValues": {
2215
2772
  "type": "object",
2216
2773
  "additionalProperties": {
2217
2774
  "type": "string"
2218
- }
2775
+ },
2776
+ "description": "The actual variation attribute ID - value pairs."
2219
2777
  }
2220
2778
  },
2221
2779
  "required": [
@@ -2227,42 +2785,68 @@
2227
2785
  },
2228
2786
  "ShippingPromotion": {
2229
2787
  "type": "object",
2230
- "additionalProperties": {},
2788
+ "additionalProperties": {
2789
+ "description": "This type supports additional properties passed along with the defined properties of this API.\nTo indicate that the properties were defined and expected to be handled as additional properties, they are expected to be prefixed with a `c_`.\nThe type will reject any property that does not fit this pattern, only allowing additional properties beginning with the known prefix.",
2790
+ "example": "c_trackingId",
2791
+ "title": "Additional Property Support"
2792
+ },
2793
+ "description": "Document representing a shipping promotion.",
2231
2794
  "properties": {
2232
2795
  "calloutMsg": {
2233
- "type": "string"
2796
+ "type": "string",
2797
+ "description": "The localized callout message of the promotion.",
2798
+ "example": "$30 Fixed Shipping Amount Above 150"
2234
2799
  },
2235
2800
  "promotionId": {
2236
- "type": "string"
2801
+ "type": "string",
2802
+ "description": "The unique ID of the promotion.",
2803
+ "example": "$30FixedShippingAmountAbove150"
2237
2804
  },
2238
2805
  "promotionName": {
2239
- "type": "string"
2806
+ "type": "string",
2807
+ "description": "The localized promotion name.",
2808
+ "example": "$30 Fixed Shipping Amount Above 150"
2240
2809
  }
2241
2810
  }
2242
2811
  },
2243
2812
  "ShippingMethod": {
2244
2813
  "type": "object",
2245
- "additionalProperties": {},
2814
+ "additionalProperties": {
2815
+ "description": "This type supports additional properties passed along with the defined properties of this API.\nTo indicate that the properties were defined and expected to be handled as additional properties, they are expected to be prefixed with a `c_`.\nThe type will reject any property that does not fit this pattern, only allowing additional properties beginning with the known prefix.",
2816
+ "example": "c_trackingId",
2817
+ "title": "Additional Property Support"
2818
+ },
2819
+ "description": "Document representing a shipping method.",
2246
2820
  "properties": {
2247
2821
  "description": {
2248
- "type": "string"
2822
+ "type": "string",
2823
+ "description": "The localized description of the shipping method.",
2824
+ "example": "Order received within 7-10 business days"
2249
2825
  },
2250
2826
  "externalShippingMethod": {
2251
- "type": "string"
2827
+ "type": "string",
2828
+ "description": "The external shipping method."
2252
2829
  },
2253
2830
  "id": {
2254
2831
  "type": "string",
2832
+ "description": "The shipping method ID.",
2833
+ "example": "001",
2255
2834
  "maxLength": 256
2256
2835
  },
2257
2836
  "name": {
2258
- "type": "string"
2837
+ "type": "string",
2838
+ "description": "The localized name of the shipping method.",
2839
+ "example": "Ground"
2259
2840
  },
2260
2841
  "price": {
2261
2842
  "type": "number",
2262
- "format": "double"
2843
+ "format": "double",
2844
+ "description": "The shipping cost total, including shipment level costs,\nproduct level fix, and surcharge costs. It is read only.",
2845
+ "example": 15
2263
2846
  },
2264
2847
  "shippingPromotions": {
2265
2848
  "type": "array",
2849
+ "description": "The array of active customer shipping promotions for this shipping\nmethod. This array can be empty.",
2266
2850
  "items": {
2267
2851
  "$ref": "#/components/schemas/ShippingPromotion"
2268
2852
  }
@@ -2274,20 +2858,26 @@
2274
2858
  },
2275
2859
  "ProductResult": {
2276
2860
  "type": "object",
2861
+ "description": "Result document containing an array of products.",
2277
2862
  "properties": {
2278
2863
  "limit": {
2279
2864
  "type": "integer",
2280
- "format": "int32"
2865
+ "format": "int32",
2866
+ "description": "The number of returned documents.",
2867
+ "example": 12
2281
2868
  },
2282
2869
  "data": {
2283
2870
  "type": "array",
2871
+ "description": "The array of product documents.",
2284
2872
  "items": {
2285
2873
  "$ref": "#/components/schemas/Product"
2286
2874
  }
2287
2875
  },
2288
2876
  "total": {
2289
2877
  "type": "integer",
2290
- "format": "int32"
2878
+ "format": "int32",
2879
+ "description": "The total number of documents.",
2880
+ "example": 12
2291
2881
  }
2292
2882
  },
2293
2883
  "required": [
@@ -2302,17 +2892,25 @@
2302
2892
  "properties": {
2303
2893
  "title": {
2304
2894
  "type": "string",
2895
+ "description": "A short, human-readable summary of the problem\ntype. It will not change from occurrence to occurrence of the \nproblem, except for purposes of localization\n",
2896
+ "example": "You do not have enough credit",
2305
2897
  "maxLength": 256
2306
2898
  },
2307
2899
  "type": {
2308
2900
  "type": "string",
2901
+ "description": "A URI reference [RFC3986] that identifies the\nproblem type. This specification encourages that, when\ndereferenced, it provide human-readable documentation for the\nproblem type (e.g., using HTML [W3C.REC-html5-20141028]). When\nthis member is not present, its value is assumed to be\n\"about:blank\". It accepts relative URIs; this means\nthat they must be resolved relative to the document's base URI, as\nper [RFC3986], Section 5.\n",
2902
+ "example": "NotEnoughMoney",
2309
2903
  "maxLength": 2048
2310
2904
  },
2311
2905
  "detail": {
2312
- "type": "string"
2906
+ "type": "string",
2907
+ "description": "A human-readable explanation specific to this occurrence of the problem.",
2908
+ "example": "Your current balance is 30, but that costs 50"
2313
2909
  },
2314
2910
  "instance": {
2315
2911
  "type": "string",
2912
+ "description": "A URI reference that identifies the specific\noccurrence of the problem. It may or may not yield further\ninformation if dereferenced. It accepts relative URIs; this means\nthat they must be resolved relative to the document's base URI, as\nper [RFC3986], Section 5.\n",
2913
+ "example": "/account/12345/msgs/abc",
2316
2914
  "maxLength": 2048
2317
2915
  }
2318
2916
  },
@@ -2324,12 +2922,14 @@
2324
2922
  },
2325
2923
  "ProductImages": {
2326
2924
  "type": "object",
2925
+ "description": "Document containing only the image groups for a product. Contains no price, availability, or other non-image data.",
2327
2926
  "properties": {
2328
2927
  "id": {
2329
2928
  "$ref": "#/components/schemas/ProductId"
2330
2929
  },
2331
2930
  "imageGroups": {
2332
2931
  "type": "array",
2932
+ "description": "Array of image groups for this product. Each group corresponds to a view type and optionally to specific variation attribute values.",
2333
2933
  "items": {
2334
2934
  "$ref": "#/components/schemas/ImageGroup"
2335
2935
  }
@@ -2341,53 +2941,74 @@
2341
2941
  },
2342
2942
  "ProductPriceRange": {
2343
2943
  "type": "object",
2944
+ "description": "Document representing the min/max price range for a single pricebook. Only present for complex products (master, variation group, product set).",
2344
2945
  "properties": {
2345
2946
  "pricebook": {
2346
2947
  "type": "string",
2948
+ "description": "The ID of the pricebook.",
2949
+ "example": "usd-sale-pricebook",
2347
2950
  "maxLength": 256,
2348
2951
  "minLength": 1
2349
2952
  },
2350
2953
  "minPrice": {
2351
2954
  "type": "number",
2352
- "format": "double"
2955
+ "format": "double",
2956
+ "description": "The minimum price across all variants for this pricebook.",
2957
+ "example": 19.99
2353
2958
  },
2354
2959
  "maxPrice": {
2355
2960
  "type": "number",
2356
- "format": "double"
2961
+ "format": "double",
2962
+ "description": "The maximum price across all variants for this pricebook.",
2963
+ "example": 99.99
2357
2964
  }
2358
2965
  }
2359
2966
  },
2360
2967
  "PricesResult": {
2361
2968
  "type": "object",
2969
+ "description": "Document representing the price details for a single product. Contains only price-related fields; no images, availability, variations, or other product data are included. Price fields are absent when no pricebook is configured for the requested site and locale context — only `productId` is guaranteed in the response.",
2362
2970
  "properties": {
2363
2971
  "productId": {
2364
2972
  "type": "string",
2973
+ "description": "The ID of the product.",
2974
+ "example": "apple-ipod-shuffle",
2365
2975
  "maxLength": 100,
2366
2976
  "minLength": 1
2367
2977
  },
2368
2978
  "price": {
2369
2979
  "type": "number",
2370
- "format": "double"
2980
+ "format": "double",
2981
+ "description": "The effective sales price of the product. For complex products (master, set), this is the minimum\nprice of the related child products.",
2982
+ "example": 89.99
2371
2983
  },
2372
2984
  "priceMax": {
2373
2985
  "type": "number",
2374
- "format": "double"
2986
+ "format": "double",
2987
+ "description": "The maximum sales price. For complex products (master, set), this is the maximum price of the related child products.",
2988
+ "example": 99.99
2375
2989
  },
2376
2990
  "pricePerUnit": {
2377
2991
  "type": "number",
2378
- "format": "double"
2992
+ "format": "double",
2993
+ "description": "The price per unit if defined for the product.",
2994
+ "example": 8.99
2379
2995
  },
2380
2996
  "pricePerUnitMax": {
2381
2997
  "type": "number",
2382
- "format": "double"
2998
+ "format": "double",
2999
+ "description": "The maximum price per unit, typically for a master product's variant.",
3000
+ "example": 9.99
2383
3001
  },
2384
3002
  "pricePerUnitUnit": {
2385
3003
  "type": "string",
3004
+ "description": "The unit of measure for the per-unit price (e.g. \"kg\", \"lb\").",
3005
+ "example": "kg",
2386
3006
  "maxLength": 256,
2387
3007
  "minLength": 1
2388
3008
  },
2389
3009
  "tieredPrices": {
2390
3010
  "type": "array",
3011
+ "description": "The list of tiered prices for the product. Each entry represents a price for a given pricebook and minimum order quantity threshold. Uses the effective (lowest) winning price from the merged applicable pricebooks for each quantity tier — matching the SCAPI product endpoint's tieredPrices field.",
2391
3012
  "items": {
2392
3013
  "$ref": "#/components/schemas/ProductPriceTable"
2393
3014
  }
@@ -2396,7 +3017,13 @@
2396
3017
  "type": "object",
2397
3018
  "additionalProperties": {
2398
3019
  "type": "number",
2399
- "format": "double"
3020
+ "format": "double",
3021
+ "example": 89.99
3022
+ },
3023
+ "description": "A map of pricebook IDs to their corresponding prices for this product.",
3024
+ "example": {
3025
+ "usd-sale-pricebook": 89.99,
3026
+ "usd-list-pricebook": 99.99
2400
3027
  }
2401
3028
  },
2402
3029
  "currency": {
@@ -2404,6 +3031,7 @@
2404
3031
  },
2405
3032
  "priceRanges": {
2406
3033
  "type": "array",
3034
+ "description": "Per-pricebook min/max price ranges. Only present for complex products (master, variation group, product set) that have variants with differing prices.",
2407
3035
  "items": {
2408
3036
  "$ref": "#/components/schemas/ProductPriceRange"
2409
3037
  }
@@ -2415,20 +3043,27 @@
2415
3043
  },
2416
3044
  "schemas-ProductPromotion": {
2417
3045
  "type": "object",
3046
+ "description": "Document representing an active promotion applicable to a product.",
2418
3047
  "properties": {
2419
3048
  "promotionId": {
2420
3049
  "type": "string",
3050
+ "description": "The unique ID of the promotion.",
3051
+ "example": "20off-electronics",
2421
3052
  "maxLength": 256,
2422
3053
  "minLength": 1
2423
3054
  },
2424
3055
  "calloutMsg": {
2425
3056
  "type": "string",
3057
+ "description": "The localized call-out message of the promotion.",
3058
+ "example": "Save 20%!",
2426
3059
  "maxLength": 4000,
2427
3060
  "minLength": 1
2428
3061
  },
2429
3062
  "promotionalPrice": {
2430
3063
  "type": "number",
2431
- "format": "double"
3064
+ "format": "double",
3065
+ "description": "The promotional price for this product. Only present for PRODUCT class promotions.",
3066
+ "example": 71.99
2432
3067
  }
2433
3068
  },
2434
3069
  "required": [
@@ -2438,14 +3073,18 @@
2438
3073
  },
2439
3074
  "PromotionsResult": {
2440
3075
  "type": "object",
3076
+ "description": "Document representing the active promotion details for a single product. Contains only promotion-related fields; no price, images, availability, variations, or other product data are included. Active promotions are filtered by customer group, campaign date range, and time slot.",
2441
3077
  "properties": {
2442
3078
  "productId": {
2443
3079
  "type": "string",
3080
+ "description": "The ID of the product.",
3081
+ "example": "apple-ipod-shuffle",
2444
3082
  "maxLength": 100,
2445
3083
  "minLength": 1
2446
3084
  },
2447
3085
  "productPromotions": {
2448
3086
  "type": "array",
3087
+ "description": "An array of active customer promotions applicable to this product, sorted by promotion priority\nusing SORT_BY_EXCLUSIVITY ordering (exclusivity → rank → promotion class → discount type →\nbest discount → ID). This array can be empty. Coupon promotions are not returned in this array.",
2449
3088
  "items": {
2450
3089
  "$ref": "#/components/schemas/schemas-ProductPromotion"
2451
3090
  }
@@ -2457,6 +3096,8 @@
2457
3096
  },
2458
3097
  "CategoryId": {
2459
3098
  "type": "string",
3099
+ "description": "The ID of the category.",
3100
+ "example": "mens",
2460
3101
  "maxLength": 256,
2461
3102
  "minLength": 1
2462
3103
  },
@@ -2464,14 +3105,19 @@
2464
3105
  "type": "integer",
2465
3106
  "format": "int32",
2466
3107
  "default": 0,
3108
+ "description": "The total number of hits that match the search's criteria. This can be greater than the number of results returned as search results are pagenated.",
3109
+ "example": 10,
2467
3110
  "minimum": 0
2468
3111
  },
2469
3112
  "ResultBase": {
2470
3113
  "type": "object",
3114
+ "description": "Schema defining generic list result. Each response schema of a resource requiring a list response should extend this schema. \nAdditionally it needs to be defined what data is returned.",
2471
3115
  "properties": {
2472
3116
  "limit": {
2473
3117
  "type": "integer",
2474
- "format": "int32"
3118
+ "format": "int32",
3119
+ "description": "Maximum records to retrieve per request. The limit with its constraints (minimum, maximum, default) is defined by the request parameter `limit` of the endpoint returning this schema.",
3120
+ "example": 10
2475
3121
  },
2476
3122
  "total": {
2477
3123
  "$ref": "#/components/schemas/Total"
@@ -2484,50 +3130,82 @@
2484
3130
  },
2485
3131
  "Category": {
2486
3132
  "type": "object",
2487
- "additionalProperties": {},
3133
+ "additionalProperties": {
3134
+ "description": "This type supports additional properties passed along with the defined properties of this API.\nTo indicate that the properties were defined and expected to be handled as additional properties, they are expected to be prefixed with a `c_`.\nThe type will reject any property that does not fit this pattern, only allowing additional properties beginning with the known prefix.",
3135
+ "example": "c_trackingId",
3136
+ "title": "Additional Property Support"
3137
+ },
3138
+ "description": "Categories allow products to be organized into hierarchical structures. Categories can have relationships to other parent categories. Each category can also provide a context inherited by subcategories. For example, a category may have an attribute value assigned to it, and any product assigned to the category or a subcategory would inherit the attribute value as long as the product is assigned. Once the product is removed from the category those attribute values would no longer be in the context of the product. Linking of categories is also used for Site hierarchical navigation. For example, inside 'Clothing' you may have 'Mens', and inside 'Mens' you may have 'Pants'. Categories are not *Tags.*",
2488
3139
  "properties": {
2489
3140
  "categories": {
2490
3141
  "type": "array",
3142
+ "description": "Array of subcategories. Can be empty.",
2491
3143
  "items": {
2492
3144
  "$ref": "#/components/schemas/Category"
2493
3145
  }
2494
3146
  },
2495
3147
  "description": {
2496
- "type": "string"
3148
+ "type": "string",
3149
+ "description": "The localized description of the category.",
3150
+ "example": "Category description for Men's Category"
2497
3151
  },
2498
3152
  "id": {
2499
3153
  "$ref": "#/components/schemas/CategoryId"
2500
3154
  },
2501
3155
  "image": {
2502
- "type": "string"
3156
+ "type": "string",
3157
+ "description": "The URL of the category image.",
3158
+ "example": "https://example.com/images/large/mens-category.jpg"
2503
3159
  },
2504
3160
  "name": {
2505
- "type": "string"
3161
+ "type": "string",
3162
+ "description": "The localized name of the category.",
3163
+ "example": "Mens"
2506
3164
  },
2507
3165
  "onlineSubCategoriesCount": {
2508
3166
  "type": "integer",
2509
- "format": "int64"
3167
+ "format": "int64",
3168
+ "description": "The total number of online sub-categories. This information will be available from B2C Commerce version 24.5.",
3169
+ "example": 20
2510
3170
  },
2511
3171
  "pageDescription": {
2512
- "type": "string"
3172
+ "type": "string",
3173
+ "description": "The localized page description of the category.",
3174
+ "example": "This category ahs all men's clothing"
2513
3175
  },
2514
3176
  "pageKeywords": {
2515
- "type": "string"
3177
+ "type": "string",
3178
+ "description": "The localized page keywords of the category.",
3179
+ "example": "Mens, shirts"
2516
3180
  },
2517
3181
  "pageTitle": {
2518
- "type": "string"
3182
+ "type": "string",
3183
+ "description": "The localized page title of the category.",
3184
+ "example": "Men's Category"
2519
3185
  },
2520
3186
  "parentCategoryId": {
2521
- "type": "string"
3187
+ "type": "string",
3188
+ "description": "The ID of the parent category.",
3189
+ "example": "apparel"
2522
3190
  },
2523
3191
  "parentCategoryTree": {
2524
3192
  "type": "array",
3193
+ "description": "The List of the parent categories.",
2525
3194
  "items": {
2526
3195
  "$ref": "#/components/schemas/PathRecord"
2527
3196
  }
2528
3197
  },
3198
+ "slug": {
3199
+ "type": "string",
3200
+ "description": "SEO path persisted for the category. This property is omitted when no category URL mapping exists for the requested locale.",
3201
+ "example": "mens/cloting",
3202
+ "maxLength": 256,
3203
+ "minLength": 1
3204
+ },
2529
3205
  "thumbnail": {
2530
- "type": "string"
3206
+ "type": "string",
3207
+ "description": "The URL of the category thumbnail.",
3208
+ "example": "https://www.exampleimage.com/images/categoryImage.jpg"
2531
3209
  }
2532
3210
  },
2533
3211
  "required": [
@@ -2536,12 +3214,24 @@
2536
3214
  },
2537
3215
  "PathRecord": {
2538
3216
  "type": "object",
3217
+ "description": "Document representing most basic info (id and name) of a category or catalog.",
2539
3218
  "properties": {
2540
3219
  "id": {
2541
- "type": "string"
3220
+ "type": "string",
3221
+ "description": "The id of the category path.",
3222
+ "example": "mens"
2542
3223
  },
2543
3224
  "name": {
2544
- "type": "string"
3225
+ "type": "string",
3226
+ "description": "The name of the category path.",
3227
+ "example": "mens"
3228
+ },
3229
+ "slug": {
3230
+ "type": "string",
3231
+ "description": "SEO path persisted for the category. This property is omitted when no category URL mapping exists for the requested locale.",
3232
+ "example": "mens/cloting",
3233
+ "maxLength": 256,
3234
+ "minLength": 1
2545
3235
  }
2546
3236
  }
2547
3237
  },
@@ -2551,9 +3241,11 @@
2551
3241
  "$ref": "#/components/schemas/ResultBase"
2552
3242
  }
2553
3243
  ],
3244
+ "description": "Result document containing an array of categories.",
2554
3245
  "properties": {
2555
3246
  "data": {
2556
3247
  "type": "array",
3248
+ "description": "The array of category documents.",
2557
3249
  "items": {
2558
3250
  "$ref": "#/components/schemas/Category"
2559
3251
  }
@@ -2571,6 +3263,11 @@
2571
3263
  "application/problem+json": {
2572
3264
  "schema": {
2573
3265
  "$ref": "#/components/schemas/ErrorResponse"
3266
+ },
3267
+ "examples": {
3268
+ "UnauthorizedExample": {
3269
+ "$ref": "#/components/examples/UnauthorizedExample"
3270
+ }
2574
3271
  }
2575
3272
  }
2576
3273
  }
@@ -2580,21 +3277,28 @@
2580
3277
  "organizationId": {
2581
3278
  "name": "organizationId",
2582
3279
  "in": "path",
3280
+ "description": "An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f_ecom_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).",
2583
3281
  "required": true,
2584
3282
  "style": "simple",
2585
3283
  "explode": false,
2586
3284
  "schema": {
2587
3285
  "$ref": "#/components/schemas/OrganizationId"
2588
- }
3286
+ },
3287
+ "example": "f_ecom_zzxy_prd"
2589
3288
  },
2590
3289
  "ids": {
2591
3290
  "name": "ids",
2592
3291
  "in": "query",
3292
+ "description": "The IDs of the requested products (comma-separated, max 24 IDs).",
2593
3293
  "required": true,
2594
3294
  "style": "form",
2595
3295
  "explode": false,
2596
3296
  "schema": {
2597
3297
  "type": "array",
3298
+ "example": [
3299
+ "apple-ipod-shuffle",
3300
+ "apple-ipod-nano"
3301
+ ],
2598
3302
  "items": {
2599
3303
  "allOf": [
2600
3304
  {
@@ -2603,16 +3307,25 @@
2603
3307
  ]
2604
3308
  },
2605
3309
  "maxItems": 100
2606
- }
3310
+ },
3311
+ "example": "apple-ipod-shuffle,apple-ipod-nano"
2607
3312
  },
2608
3313
  "inventoryIds": {
2609
3314
  "name": "inventoryIds",
2610
3315
  "in": "query",
3316
+ "description": "The optional inventory list IDs, for which the availability should be shown (comma-separated, max 5 inventoryListIDs).",
2611
3317
  "required": false,
2612
3318
  "style": "form",
2613
3319
  "explode": false,
2614
3320
  "schema": {
2615
3321
  "type": "array",
3322
+ "example": [
3323
+ "Site1InventoryList",
3324
+ "Site2InventoryList",
3325
+ "Site3InventoryList",
3326
+ "Site4InventoryList",
3327
+ "Site5InventoryList"
3328
+ ],
2616
3329
  "items": {
2617
3330
  "allOf": [
2618
3331
  {
@@ -2621,16 +3334,22 @@
2621
3334
  ]
2622
3335
  },
2623
3336
  "maxItems": 5
2624
- }
3337
+ },
3338
+ "example": "Site1InventoryList,Site2InventoryList,Site3InventoryList,Site4InventoryList,Site5InventoryList"
2625
3339
  },
2626
3340
  "expand_multiId": {
2627
3341
  "name": "expand",
2628
3342
  "in": "query",
3343
+ "description": "All expand parameters except page_meta_tags and slug are used for the request when no expand parameter is provided.\nThe value \"none\" may be used to turn off all expand options.\nThe page_meta_tags expand value is optional and available starting from B2C Commerce version 25.2.\nThe availability expand is deprecated. Use the Shopper Availability API instead for better caching performance.\nThe primary_category expand returns the full breadcrumb path (root to leaf) for each product's primary category.\nThe slug expand populates the slug field on the product. Available starting from B2C Commerce version 26.8.",
2629
3344
  "required": false,
2630
3345
  "style": "form",
2631
3346
  "explode": false,
2632
3347
  "schema": {
2633
3348
  "type": "array",
3349
+ "example": [
3350
+ "prices",
3351
+ "promotions"
3352
+ ],
2634
3353
  "items": {
2635
3354
  "type": "string",
2636
3355
  "enum": [
@@ -2647,50 +3366,66 @@
2647
3366
  "recommendations",
2648
3367
  "shipping_methods",
2649
3368
  "page_meta_tags",
2650
- "primary_category"
2651
- ]
3369
+ "primary_category",
3370
+ "slug"
3371
+ ],
3372
+ "example": "promotions"
2652
3373
  }
2653
- }
3374
+ },
3375
+ "example": "prices,promotions"
2654
3376
  },
2655
3377
  "allImages": {
2656
3378
  "name": "allImages",
2657
3379
  "in": "query",
3380
+ "description": "The flag that indicates whether to retrieve the whole image model for the requested product.",
2658
3381
  "required": false,
2659
3382
  "style": "form",
2660
3383
  "explode": true,
2661
3384
  "schema": {
2662
- "type": "boolean"
3385
+ "type": "boolean",
3386
+ "example": true
2663
3387
  }
2664
3388
  },
2665
3389
  "imgTypes": {
2666
3390
  "name": "imgTypes",
2667
3391
  "in": "query",
3392
+ "description": "Filters product images by viewType with optional count limits per type. This parameter requires the images expand parameter.\nWhen used, the response includes the imageGroups property filtered by the specified image types.\nThe format is a comma-separated list of image types with optional counts: <viewType>:<count>,<viewType>:<count>.\nIf the count is omitted, all images of that type are returned. If specified, the count limits the number of images returned for that type.\nFor example, imgTypes=large:2,small:1 returns up to 2 large images and 1 small image per product in the imageGroups.\nIf imgTypes is used without expand=images, it is ignored and imageGroups aren't included in the response.",
2668
3393
  "required": false,
2669
3394
  "style": "form",
2670
3395
  "explode": true,
2671
3396
  "schema": {
2672
3397
  "type": "string",
3398
+ "example": "large:3,small:1",
2673
3399
  "maxLength": 50
2674
- }
3400
+ },
3401
+ "example": "large:3,small:1"
2675
3402
  },
2676
3403
  "perPricebook": {
2677
3404
  "name": "perPricebook",
2678
3405
  "in": "query",
3406
+ "description": "The flag that indicates whether to retrieve the per PriceBook prices and tiered prices (if available) for requested Products. Available end of June, 2021.",
2679
3407
  "required": false,
2680
3408
  "style": "form",
2681
3409
  "explode": true,
2682
3410
  "schema": {
2683
- "type": "boolean"
3411
+ "type": "boolean",
3412
+ "example": true
2684
3413
  }
2685
3414
  },
2686
3415
  "siteId": {
2687
3416
  "name": "siteId",
2688
3417
  "in": "query",
3418
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
2689
3419
  "required": true,
2690
3420
  "style": "form",
2691
3421
  "explode": true,
2692
3422
  "schema": {
2693
3423
  "$ref": "#/components/schemas/SiteId"
3424
+ },
3425
+ "examples": {
3426
+ "SiteId": {
3427
+ "value": "RefArch"
3428
+ }
2694
3429
  }
2695
3430
  },
2696
3431
  "select": {
@@ -2701,31 +3436,52 @@
2701
3436
  "explode": true,
2702
3437
  "schema": {
2703
3438
  "$ref": "#/components/schemas/Select"
3439
+ },
3440
+ "examples": {
3441
+ "select": {
3442
+ "value": "(**)"
3443
+ }
2704
3444
  }
2705
3445
  },
2706
3446
  "locale": {
2707
3447
  "name": "locale",
2708
3448
  "in": "query",
3449
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
2709
3450
  "required": false,
2710
3451
  "style": "form",
2711
3452
  "explode": true,
2712
3453
  "schema": {
2713
3454
  "$ref": "#/components/schemas/LocaleCode"
3455
+ },
3456
+ "examples": {
3457
+ "LanguageCountry": {
3458
+ "value": "en-US"
3459
+ },
3460
+ "CountryCode": {
3461
+ "value": "US"
3462
+ }
2714
3463
  }
2715
3464
  },
2716
3465
  "currency": {
2717
3466
  "name": "currency",
2718
3467
  "in": "query",
3468
+ "description": "A three letter uppercase currency code conforming to the [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) standard, or the string `N/A` indicating that a currency is not applicable.",
2719
3469
  "required": false,
2720
3470
  "style": "form",
2721
3471
  "explode": true,
2722
3472
  "schema": {
2723
3473
  "$ref": "#/components/schemas/CurrencyCode"
3474
+ },
3475
+ "examples": {
3476
+ "CurrencyCode": {
3477
+ "value": "USD"
3478
+ }
2724
3479
  }
2725
3480
  },
2726
3481
  "id": {
2727
3482
  "name": "id",
2728
3483
  "in": "path",
3484
+ "description": "The ID of the requested product.",
2729
3485
  "required": true,
2730
3486
  "style": "simple",
2731
3487
  "explode": false,
@@ -2736,11 +3492,16 @@
2736
3492
  "expand_singleId": {
2737
3493
  "name": "expand",
2738
3494
  "in": "query",
3495
+ "description": "All expand parameters except page_meta_tags and slug are used for the request when no expand parameter is provided.\nThe value \"none\" may be used to turn off all expand options.\nThe page_meta_tags expand value is optional and available starting from B2C Commerce version 25.2.\nThe availability expand is deprecated. Use the Shopper Availability API instead for better caching performance.\nThe primary_category expand returns the full breadcrumb path (root to leaf) for the product's primary category.\nThe slug expand populates the slug field on the product. Available starting from B2C Commerce version 26.8.",
2739
3496
  "required": false,
2740
3497
  "style": "form",
2741
3498
  "explode": false,
2742
3499
  "schema": {
2743
3500
  "type": "array",
3501
+ "example": [
3502
+ "prices",
3503
+ "promotions"
3504
+ ],
2744
3505
  "items": {
2745
3506
  "type": "string",
2746
3507
  "enum": [
@@ -2757,14 +3518,18 @@
2757
3518
  "recommendations",
2758
3519
  "shipping_methods",
2759
3520
  "page_meta_tags",
2760
- "primary_category"
2761
- ]
3521
+ "primary_category",
3522
+ "slug"
3523
+ ],
3524
+ "example": "links"
2762
3525
  }
2763
- }
3526
+ },
3527
+ "example": "prices,promotions"
2764
3528
  },
2765
3529
  "productId": {
2766
3530
  "name": "productId",
2767
3531
  "in": "path",
3532
+ "description": "The ID of the product whose images to retrieve.",
2768
3533
  "required": true,
2769
3534
  "style": "simple",
2770
3535
  "explode": false,
@@ -2775,35 +3540,45 @@
2775
3540
  "parameters-imgTypes": {
2776
3541
  "name": "imgTypes",
2777
3542
  "in": "query",
3543
+ "description": "Comma-separated list of view types to include in the response, with optional per-type image limits. Each item is\neither viewType or viewType:count. If omitted, all catalog view types are returned, up to 200 images per view\ntype. If present, only the listed view types are included. The image count defaults to 200 per view type when\nno limit is specified.",
2778
3544
  "required": false,
2779
3545
  "style": "form",
2780
3546
  "explode": true,
2781
3547
  "schema": {
2782
3548
  "type": "string",
3549
+ "example": "large:3,small:1",
2783
3550
  "maxLength": 50
2784
- }
3551
+ },
3552
+ "example": "large:3,small:1"
2785
3553
  },
2786
3554
  "parameters-allImages": {
2787
3555
  "name": "allImages",
2788
3556
  "in": "query",
3557
+ "description": "When true, returns all variation-specific image groups rather than only the best-matching group\nfor the product's variation attribute values. Default: false.",
2789
3558
  "required": false,
2790
3559
  "style": "form",
2791
3560
  "explode": true,
2792
3561
  "schema": {
2793
3562
  "type": "boolean",
2794
- "default": false
3563
+ "default": false,
3564
+ "example": false
2795
3565
  }
2796
3566
  },
2797
3567
  "variationAttribute": {
2798
3568
  "name": "variationAttribute",
2799
3569
  "in": "query",
3570
+ "description": "Variation attribute values used to filter image groups when allImages=true.\nFormat: <attributeId>=<value>. This parameter can be repeated for multiple attributes.\nExample: color=red&variationAttribute=size=L",
2800
3571
  "required": false,
2801
3572
  "style": "form",
2802
3573
  "explode": false,
2803
3574
  "schema": {
2804
3575
  "type": "array",
3576
+ "example": [
3577
+ "color=red"
3578
+ ],
2805
3579
  "items": {
2806
3580
  "type": "string",
3581
+ "example": "color=red",
2807
3582
  "maxLength": 256,
2808
3583
  "minLength": 1
2809
3584
  }
@@ -2812,31 +3587,40 @@
2812
3587
  "parameters-productId": {
2813
3588
  "name": "productId",
2814
3589
  "in": "path",
3590
+ "description": "The ID of the product whose prices to retrieve.",
2815
3591
  "required": true,
2816
3592
  "style": "simple",
2817
3593
  "explode": false,
2818
3594
  "schema": {
2819
3595
  "$ref": "#/components/schemas/ProductId"
2820
- }
3596
+ },
3597
+ "example": "apple-ipod-shuffle"
2821
3598
  },
2822
3599
  "components-parameters-productId": {
2823
3600
  "name": "productId",
2824
3601
  "in": "path",
3602
+ "description": "The ID of the product whose promotions to retrieve.",
2825
3603
  "required": true,
2826
3604
  "style": "simple",
2827
3605
  "explode": false,
2828
3606
  "schema": {
2829
3607
  "$ref": "#/components/schemas/ProductId"
2830
- }
3608
+ },
3609
+ "example": "apple-ipod-shuffle"
2831
3610
  },
2832
3611
  "parameters-ids": {
2833
3612
  "name": "ids",
2834
3613
  "in": "query",
3614
+ "description": "The comma separated list of category IDs or slugs (max 50). For each value, if a category exists with that value as its ID, it is returned (ID takes precedence). Otherwise, the value is treated as a slug. If a slug is provided, it must be URL-encoded (for example, `mens%2Fclothing` for the slug `mens/clothing`).",
2835
3615
  "required": true,
2836
3616
  "style": "form",
2837
3617
  "explode": false,
2838
3618
  "schema": {
2839
3619
  "type": "array",
3620
+ "example": [
3621
+ "electronics-digital-cameras",
3622
+ "electronics-televisions"
3623
+ ],
2840
3624
  "items": {
2841
3625
  "allOf": [
2842
3626
  {
@@ -2845,11 +3629,13 @@
2845
3629
  ]
2846
3630
  },
2847
3631
  "maxItems": 50
2848
- }
3632
+ },
3633
+ "example": "electronics-digital-cameras,electronics-televisions"
2849
3634
  },
2850
3635
  "levels": {
2851
3636
  "name": "levels",
2852
3637
  "in": "query",
3638
+ "description": "Specifies how many levels of nested subcategories you want the server to return. The default value is 1. Valid values are 0, 1, or 2. Only online subcategories are returned.",
2853
3639
  "required": false,
2854
3640
  "style": "form",
2855
3641
  "explode": true,
@@ -2861,12 +3647,14 @@
2861
3647
  1,
2862
3648
  2
2863
3649
  ],
3650
+ "example": 1,
2864
3651
  "minimum": 0
2865
3652
  }
2866
3653
  },
2867
3654
  "parameters-id": {
2868
3655
  "name": "id",
2869
3656
  "in": "path",
3657
+ "description": "The ID or slug of the requested category. If a category exists with the given value as its ID, it is returned (ID takes precedence). Otherwise, the value is treated as a slug. If a slug is provided, it must be URL-encoded (for example, `mens%2Fclothing` for the slug `mens/clothing`).",
2870
3658
  "required": true,
2871
3659
  "style": "simple",
2872
3660
  "explode": false,
@@ -2877,31 +3665,20 @@
2877
3665
  "sfdcUsid": {
2878
3666
  "name": "sfdc_usid",
2879
3667
  "in": "header",
3668
+ "description": "A unique shopper identifier (USID) for tracking client context.\nUsed with endpoints secured with ShopperClientContextToken.\nThis header is required for all endpoints secured with ShopperClientContextToken.",
2880
3669
  "required": false,
2881
3670
  "style": "simple",
2882
3671
  "explode": false,
2883
3672
  "schema": {
2884
3673
  "type": "string",
2885
- "format": "uuid"
2886
- }
2887
- },
2888
- "sfdcDwDnt": {
2889
- "name": "sfdc_dw_dnt",
2890
- "in": "header",
2891
- "required": false,
2892
- "style": "simple",
2893
- "explode": false,
2894
- "schema": {
2895
- "type": "string",
2896
- "enum": [
2897
- "0",
2898
- "1"
2899
- ]
3674
+ "format": "uuid",
3675
+ "example": "550e8400-e29b-41d4-a716-446655440000"
2900
3676
  }
2901
3677
  },
2902
3678
  "personalized": {
2903
3679
  "name": "personalized",
2904
3680
  "in": "query",
3681
+ "description": "Controls whether personalization is applied to the response. Set to `none` to opt out of personalized response handling so the response is safe to cache at the CDN layer.\n\nWhen set to `none`, the server skips applying personalization to the response.\n\nSetting `personalized=none` is necessary but not sufficient for CDN caching: a response is only cached when the endpoint is also cacheable in the [server-side web-tier cache](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html), subject to its TTLs and invalidation. A call that is uncacheable in the web tier is not cached at the CDN either. See [CDN caching](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-caching.html).",
2905
3682
  "required": false,
2906
3683
  "style": "form",
2907
3684
  "explode": true,
@@ -2909,12 +3686,14 @@
2909
3686
  "type": "string",
2910
3687
  "enum": [
2911
3688
  "none"
2912
- ]
3689
+ ],
3690
+ "example": "none"
2913
3691
  }
2914
3692
  },
2915
3693
  "sfdcShopperContext": {
2916
3694
  "name": "sfdc_shopper_context",
2917
3695
  "in": "header",
3696
+ "description": "Shopper context information (for example clientIP, sourceCode, and customQualifiers)\npassed in from a trusted backend application.",
2918
3697
  "required": false,
2919
3698
  "style": "simple",
2920
3699
  "explode": false,
@@ -2923,9 +3702,667 @@
2923
3702
  }
2924
3703
  }
2925
3704
  },
3705
+ "examples": {
3706
+ "GetProductsBadRequestResponseExample": {
3707
+ "value": {
3708
+ "title": "Bad Request",
3709
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/validation",
3710
+ "detail": "Maximum number of products you can request in one call is 25."
3711
+ }
3712
+ },
3713
+ "MalformedSelectorResponseExample": {
3714
+ "value": {
3715
+ "title": "Malformed Selector",
3716
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/malformed-selector",
3717
+ "detail": "The property selector '(data.(name, imageGroups.(**))' is malformed.",
3718
+ "selector": "(data.(name, imageGroups.(**))"
3719
+ }
3720
+ },
3721
+ "UnauthorizedExample": {
3722
+ "value": {
3723
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
3724
+ "title": "Unauthorized",
3725
+ "detail": "Unauthorized request"
3726
+ }
3727
+ },
3728
+ "GetProductResponseExample": {
3729
+ "value": {
3730
+ "brand": "Apple",
3731
+ "currency": "USD",
3732
+ "id": "apple-ipod-shuffle",
3733
+ "imageGroups": [
3734
+ {
3735
+ "images": [
3736
+ {
3737
+ "alt": "Apple iPod Shuffle, , large",
3738
+ "link": "https://example.com/on/demandware.static/-/Sites-electronics-catalog/default/dwc2cc65b0/images/large/ipod-shuffle-silver.jpg",
3739
+ "title": "Apple iPod Shuffle, "
3740
+ }
3741
+ ],
3742
+ "viewType": "large"
3743
+ },
3744
+ {
3745
+ "images": [
3746
+ {
3747
+ "alt": "Apple iPod Shuffle, , medium",
3748
+ "link": "https://example.com/on/demandware.static/-/Sites-electronics-catalog/default/dw5f36aab1/images/medium/ipod-shuffle-silver.jpg",
3749
+ "title": "Apple iPod Shuffle, "
3750
+ }
3751
+ ],
3752
+ "viewType": "medium"
3753
+ },
3754
+ {
3755
+ "images": [
3756
+ {
3757
+ "alt": "Apple iPod Shuffle, , small",
3758
+ "link": "https://example.com/on/demandware.static/-/Sites-electronics-catalog/default/dw2b078e02/images/small/ipod-shuffle-silver.jpg",
3759
+ "title": "Apple iPod Shuffle, "
3760
+ }
3761
+ ],
3762
+ "viewType": "small"
3763
+ }
3764
+ ],
3765
+ "inventory": {
3766
+ "ats": 0,
3767
+ "backorderable": false,
3768
+ "id": "SiteGenesisList",
3769
+ "orderable": true,
3770
+ "preorderable": false,
3771
+ "stockLevel": 999999
3772
+ },
3773
+ "longDescription": "Supports AAC, protected AAC, MP3, MP3 VBR, Audible, WAV and AIFF for immediate playback of multiple formats.",
3774
+ "master": {
3775
+ "masterId": "apple-ipod-shuffle",
3776
+ "orderable": false,
3777
+ "price": 45.99
3778
+ },
3779
+ "minOrderQuantity": 1,
3780
+ "name": "Apple iPod Shuffle",
3781
+ "pageDescription": "With the same size circular control pad as the previous model on a much more compact case with a built-in clip, the updated shuffle is ready to rock and easily tags along when you're on the go.",
3782
+ "pageKeywords": "Apple, iPod, Shuffle, MP3, Music Player",
3783
+ "pageMetaTags": [
3784
+ {
3785
+ "id": "description",
3786
+ "value": "The updated Shuffle features the same-sized circular control pad in a more compact, clip-on case, making it perfect for on-the-go use.",
3787
+ "type": "name"
3788
+ },
3789
+ {
3790
+ "id": "robots",
3791
+ "value": "index, follow",
3792
+ "type": "name"
3793
+ },
3794
+ {
3795
+ "id": "title",
3796
+ "value": "Buy the Apple iPod Shuffle for USD 45.99-69.00.",
3797
+ "type": "title"
3798
+ },
3799
+ {
3800
+ "id": "og:title",
3801
+ "value": "Apple iPod Shuffle",
3802
+ "type": "property"
3803
+ },
3804
+ {
3805
+ "id": "product",
3806
+ "value": "{\"@context\":\"https://schema.org/\",\"@type\":\"Product\",\"name\":\"Apple iPod Shuffle\",\"sku\":\"apple-ipod-shuffle\",\"offers\":{\"@type\":\"AggregateOffer\",\"priceCurrency\":\"USD\",\"lowPrice\":\"45.99\",\"highPrice\":\"69.00\"}}",
3807
+ "type": "jsonld"
3808
+ }
3809
+ ],
3810
+ "pageTitle": "Apple iPod Shuffle",
3811
+ "price": 45.99,
3812
+ "priceMax": 69,
3813
+ "primaryCategoryId": "electronics-digital-media-players",
3814
+ "primaryCategory": {
3815
+ "id": "electronics-digital-media-players",
3816
+ "name": "iPod & MP3 Players",
3817
+ "slug": "ipod-mp3-players",
3818
+ "parentCategoryTree": [
3819
+ {
3820
+ "id": "electronics",
3821
+ "name": "Electronics",
3822
+ "slug": "electronics"
3823
+ }
3824
+ ]
3825
+ },
3826
+ "shortDescription": "With the same size circular control pad as the previous model on a much more compact case with a built-in clip, the updated shuffle is ready to rock and easily tags along when you're on the go.",
3827
+ "stepQuantity": 1,
3828
+ "type": {
3829
+ "master": true
3830
+ },
3831
+ "variants": [
3832
+ {
3833
+ "orderable": true,
3834
+ "price": 45.99,
3835
+ "productId": "apple-ipod-shuffle-silver-1g",
3836
+ "variationValues": {
3837
+ "color": "Silver",
3838
+ "memorySize": "1 GB"
3839
+ }
3840
+ },
3841
+ {
3842
+ "orderable": true,
3843
+ "price": 49,
3844
+ "productId": "apple-ipod-shuffle-blue-1g",
3845
+ "variationValues": {
3846
+ "color": "Blue",
3847
+ "memorySize": "1 GB"
3848
+ }
3849
+ },
3850
+ {
3851
+ "orderable": true,
3852
+ "price": 49,
3853
+ "productId": "apple-ipod-shuffle-green-1g",
3854
+ "variationValues": {
3855
+ "color": "Green",
3856
+ "memorySize": "1 GB"
3857
+ }
3858
+ },
3859
+ {
3860
+ "orderable": true,
3861
+ "price": 49,
3862
+ "productId": "apple-ipod-shuffle-red-1g",
3863
+ "variationValues": {
3864
+ "color": "Red",
3865
+ "memorySize": "1 GB"
3866
+ }
3867
+ },
3868
+ {
3869
+ "orderable": true,
3870
+ "price": 49,
3871
+ "productId": "apple-ipod-shuffle-fuscia-1g",
3872
+ "variationValues": {
3873
+ "color": "Fuscia",
3874
+ "memorySize": "1 GB"
3875
+ }
3876
+ },
3877
+ {
3878
+ "orderable": true,
3879
+ "price": 60,
3880
+ "productId": "apple-ipod-shuffle-silver-2g",
3881
+ "variationValues": {
3882
+ "color": "Silver",
3883
+ "memorySize": "2 GB"
3884
+ }
3885
+ },
3886
+ {
3887
+ "orderable": true,
3888
+ "price": 69,
3889
+ "productId": "apple-ipod-shuffle-green-2g",
3890
+ "variationValues": {
3891
+ "color": "Green",
3892
+ "memorySize": "2 GB"
3893
+ }
3894
+ },
3895
+ {
3896
+ "orderable": true,
3897
+ "price": 60,
3898
+ "productId": "apple-ipod-shuffle-red-2g",
3899
+ "variationValues": {
3900
+ "color": "Red",
3901
+ "memorySize": "2 GB"
3902
+ }
3903
+ },
3904
+ {
3905
+ "orderable": true,
3906
+ "price": 69,
3907
+ "productId": "apple-ipod-shuffle-fuscia-2g",
3908
+ "variationValues": {
3909
+ "color": "Fuscia",
3910
+ "memorySize": "2 GB"
3911
+ }
3912
+ }
3913
+ ],
3914
+ "variationAttributes": [
3915
+ {
3916
+ "id": "color",
3917
+ "name": "Color",
3918
+ "values": [
3919
+ {
3920
+ "name": "Silver",
3921
+ "orderable": false,
3922
+ "value": "Silver"
3923
+ },
3924
+ {
3925
+ "name": "Blue",
3926
+ "orderable": false,
3927
+ "value": "Blue"
3928
+ },
3929
+ {
3930
+ "name": "Green",
3931
+ "orderable": false,
3932
+ "value": "Green"
3933
+ },
3934
+ {
3935
+ "name": "Red",
3936
+ "orderable": false,
3937
+ "value": "Red"
3938
+ },
3939
+ {
3940
+ "name": "Fuscia",
3941
+ "orderable": false,
3942
+ "value": "Fuscia"
3943
+ }
3944
+ ]
3945
+ },
3946
+ {
3947
+ "id": "memorySize",
3948
+ "name": "Memory Size",
3949
+ "values": [
3950
+ {
3951
+ "name": "1 GB",
3952
+ "orderable": true,
3953
+ "value": "1 GB"
3954
+ },
3955
+ {
3956
+ "name": "2 GB",
3957
+ "orderable": true,
3958
+ "value": "2 GB"
3959
+ }
3960
+ ]
3961
+ }
3962
+ ]
3963
+ }
3964
+ },
3965
+ "GetProductNotFoundResponseExample": {
3966
+ "value": {
3967
+ "title": "Product Not Found",
3968
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/product-not-found",
3969
+ "detail": "No product with ID 'pple-ipod-shuffle' for site 'SiteGenesis' could be found.",
3970
+ "productId": "pple-ipod-shuffle",
3971
+ "siteId": "SiteGenesis"
3972
+ }
3973
+ },
3974
+ "GetProductImagesResponseExample": {
3975
+ "value": {
3976
+ "id": "apple-ipod-shuffle",
3977
+ "imageGroups": [
3978
+ {
3979
+ "images": [
3980
+ {
3981
+ "alt": "Apple iPod Shuffle, large",
3982
+ "disBaseLink": "https://example.com/on/demandware.static/-/Sites-electronics-catalog/default/dwc2cc65b0/images/large/ipod-shuffle-silver.jpg",
3983
+ "link": "https://example.com/on/demandware.static/-/Sites-electronics-catalog/default/dwc2cc65b0/images/large/ipod-shuffle-silver.jpg",
3984
+ "title": "Apple iPod Shuffle"
3985
+ },
3986
+ {
3987
+ "alt": "Apple iPod Shuffle Blue, large",
3988
+ "disBaseLink": "https://example.com/on/demandware.static/-/Sites-electronics-catalog/default/dw1a2b3c4d/images/large/ipod-shuffle-blue.jpg",
3989
+ "link": "https://example.com/on/demandware.static/-/Sites-electronics-catalog/default/dw1a2b3c4d/images/large/ipod-shuffle-blue.jpg",
3990
+ "title": "Apple iPod Shuffle Blue"
3991
+ }
3992
+ ],
3993
+ "variationAttributes": [
3994
+ {
3995
+ "id": "color",
3996
+ "values": [
3997
+ {
3998
+ "value": "Blue"
3999
+ }
4000
+ ]
4001
+ }
4002
+ ],
4003
+ "viewType": "large"
4004
+ },
4005
+ {
4006
+ "images": [
4007
+ {
4008
+ "alt": "Apple iPod Shuffle, small",
4009
+ "link": "https://example.com/on/demandware.static/-/Sites-electronics-catalog/default/dw2b078e02/images/small/ipod-shuffle-silver.jpg",
4010
+ "title": "Apple iPod Shuffle"
4011
+ }
4012
+ ],
4013
+ "viewType": "small"
4014
+ },
4015
+ {
4016
+ "images": [
4017
+ {
4018
+ "alt": "Apple iPod Shuffle Silver Swatch",
4019
+ "link": "https://example.com/on/demandware.static/-/Sites-electronics-catalog/default/dw3c089f13/images/swatch/ipod-shuffle-silver-swatch.jpg",
4020
+ "title": "Silver"
4021
+ },
4022
+ {
4023
+ "alt": "Apple iPod Shuffle Blue Swatch",
4024
+ "link": "https://example.com/on/demandware.static/-/Sites-electronics-catalog/default/dw4d090g24/images/swatch/ipod-shuffle-blue-swatch.jpg",
4025
+ "title": "Blue"
4026
+ }
4027
+ ],
4028
+ "viewType": "swatch"
4029
+ }
4030
+ ]
4031
+ }
4032
+ },
4033
+ "GetProductImagesBadRequestResponseExample": {
4034
+ "value": {
4035
+ "title": "Bad Request",
4036
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/validation",
4037
+ "detail": "The 'imgTypes' parameter value 'large:abc' is invalid. Counts must be positive integers."
4038
+ }
4039
+ },
4040
+ "GetProductImagesNotFoundResponseExample": {
4041
+ "value": {
4042
+ "title": "Product Not Found",
4043
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/product-not-found",
4044
+ "detail": "No product with ID 'unknown-product-id' for site 'SiteGenesis' could be found.",
4045
+ "productId": "unknown-product-id",
4046
+ "siteId": "SiteGenesis"
4047
+ }
4048
+ },
4049
+ "GetProductPricesResponseExample": {
4050
+ "value": {
4051
+ "productId": "apple-ipod-shuffle",
4052
+ "price": 89.99,
4053
+ "priceMax": 99.99,
4054
+ "pricePerUnit": 8.99,
4055
+ "pricePerUnitMax": 9.99,
4056
+ "pricePerUnitUnit": "kg",
4057
+ "tieredPrices": [
4058
+ {
4059
+ "price": 89.99,
4060
+ "pricebook": "usd-sale-pricebook",
4061
+ "quantity": 1
4062
+ },
4063
+ {
4064
+ "price": 79.99,
4065
+ "pricebook": "usd-sale-pricebook",
4066
+ "quantity": 10
4067
+ },
4068
+ {
4069
+ "price": 69.99,
4070
+ "pricebook": "usd-sale-pricebook",
4071
+ "quantity": 50
4072
+ }
4073
+ ],
4074
+ "prices": {
4075
+ "usd-sale-pricebook": 89.99,
4076
+ "usd-list-pricebook": 99.99
4077
+ }
4078
+ }
4079
+ },
4080
+ "GetProductPricesBadRequestResponseExample": {
4081
+ "value": {
4082
+ "title": "Bad Request",
4083
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/validation",
4084
+ "detail": "The locale 'xx-INVALID' is not valid."
4085
+ }
4086
+ },
4087
+ "GetProductPricesNotFoundResponseExample": {
4088
+ "value": {
4089
+ "title": "Product Not Found",
4090
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/product-not-found",
4091
+ "detail": "No product with ID 'unknown-product' for site 'SiteGenesis' could be found.",
4092
+ "productId": "unknown-product",
4093
+ "siteId": "SiteGenesis"
4094
+ }
4095
+ },
4096
+ "GetProductPromotionsResponseExample": {
4097
+ "value": {
4098
+ "productId": "apple-ipod-shuffle",
4099
+ "productPromotions": [
4100
+ {
4101
+ "promotionId": "20off-electronics",
4102
+ "calloutMsg": "Save 20%!",
4103
+ "promotionalPrice": 71.99
4104
+ },
4105
+ {
4106
+ "promotionId": "free-shipping-50",
4107
+ "calloutMsg": "Free Shipping"
4108
+ }
4109
+ ]
4110
+ }
4111
+ },
4112
+ "GetProductPromotionsBadRequestResponseExample": {
4113
+ "value": {
4114
+ "title": "Bad Request",
4115
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/validation",
4116
+ "detail": "The locale 'xx-INVALID' is not valid."
4117
+ }
4118
+ },
4119
+ "GetProductPromotionsNotFoundResponseExample": {
4120
+ "value": {
4121
+ "title": "Product Not Found",
4122
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/product-not-found",
4123
+ "detail": "No product with ID 'unknown-product' for site 'SiteGenesis' could be found.",
4124
+ "productId": "unknown-product",
4125
+ "siteId": "SiteGenesis"
4126
+ }
4127
+ },
4128
+ "GetCategoriesResponseExample": {
4129
+ "value": {
4130
+ "limit": 2,
4131
+ "data": [
4132
+ {
4133
+ "id": "electronics-digital-cameras",
4134
+ "image": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dw3535377d/images/slot/sub_banners/cat-banner-electronics-camera.jpg",
4135
+ "name": "Digital Cameras",
4136
+ "slug": "digital-cameras",
4137
+ "onlineSubCategoriesCount": 0,
4138
+ "pageDescription": "Shop the latest digital cameras from all the top brands, makes and models at Salesforce Commerce Cloud.",
4139
+ "pageKeywords": "cameras, digital camerasm point and shoot, slr",
4140
+ "pageTitle": "Digital Cameras",
4141
+ "parentCategoryId": "electronics",
4142
+ "parent_category_tree": [
4143
+ {
4144
+ "id": "electronics",
4145
+ "name": "electronics",
4146
+ "slug": "electronics"
4147
+ }
4148
+ ]
4149
+ },
4150
+ {
4151
+ "categories": [
4152
+ {
4153
+ "id": "electronics-televisions-flat-screen",
4154
+ "image": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dwc3940e75/images/slot/sub_banners/cat-banner-electronics-tv.jpg",
4155
+ "name": "Flat Screen",
4156
+ "slug": "flat-screen",
4157
+ "pageDescription": "Shop all Flat Screen Televisions including the latest in LCD and Plasma technology from all the latest brands, makes and models at Salesforce Commerce Cloud.",
4158
+ "pageKeywords": "flat screen, flat screen television, LCD, plasma, HDTV",
4159
+ "pageTitle": "LCD & Plasma High Definition Flat Screen Televisions",
4160
+ "parentCategoryId": "electronics-televisions",
4161
+ "parent_category_tree": [
4162
+ {
4163
+ "id": "electronics",
4164
+ "name": "electronics",
4165
+ "slug": "electronics"
4166
+ }
4167
+ ]
4168
+ },
4169
+ {
4170
+ "id": "electronics-televisions-projection",
4171
+ "image": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dwc3940e75/images/slot/sub_banners/cat-banner-electronics-tv.jpg",
4172
+ "name": "Projection",
4173
+ "slug": "projection",
4174
+ "onlineSubCategoriesCount": 0,
4175
+ "pageDescription": "Shop all Projection Televisions from all the latest brands, makes and models at Salesforce Commerce Cloud.",
4176
+ "pageKeywords": "projection, projection televisions, HDTV",
4177
+ "pageTitle": "Projection High Definition Televisions",
4178
+ "parentCategoryId": "electronics-televisions",
4179
+ "parent_category_tree": [
4180
+ {
4181
+ "id": "electronics",
4182
+ "name": "electronics",
4183
+ "slug": "electronics"
4184
+ }
4185
+ ]
4186
+ }
4187
+ ],
4188
+ "id": "electronics-televisions",
4189
+ "image": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dwc3940e75/images/slot/sub_banners/cat-banner-electronics-tv.jpg",
4190
+ "name": "Televisions",
4191
+ "slug": "televisions",
4192
+ "onlineSubCategoriesCount": 2,
4193
+ "pageDescription": "Shop the latest Televisions including LCD, Plasma, Flat Screens, Projection including all the top brands, makes and models at Salesforce Commerce Cloud.",
4194
+ "pageKeywords": "televisions, tvs, LCD, plasma, flat screen, high definition, HDTV, projection",
4195
+ "pageTitle": "Televisions Including LCD, Plasma & More in High Definition",
4196
+ "parentCategoryId": "electronics",
4197
+ "parent_category_tree": [
4198
+ {
4199
+ "id": "electronics",
4200
+ "name": "electronics",
4201
+ "slug": "electronics"
4202
+ }
4203
+ ]
4204
+ }
4205
+ ],
4206
+ "total": 2
4207
+ }
4208
+ },
4209
+ "GetCategoriesBadRequestResponseExample": {
4210
+ "value": {
4211
+ "title": "Bad Request",
4212
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/validation",
4213
+ "detail": "Maximum number of categories you can request in one call is 50."
4214
+ }
4215
+ },
4216
+ "GetCategoryResponseExample": {
4217
+ "value": {
4218
+ "categories": [
4219
+ {
4220
+ "id": "electronics-televisions",
4221
+ "image": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dwc3940e75/images/slot/sub_banners/cat-banner-electronics-tv.jpg",
4222
+ "name": "Televisions",
4223
+ "slug": "televisions",
4224
+ "onlineSubCategoriesCount": 2,
4225
+ "pageDescription": "Shop the latest Televisions including LCD, Plasma, Flat Screens, Projection including all the top brands, makes and models at Salesforce Commerce Cloud.",
4226
+ "pageKeywords": "televisions, tvs, LCD, plasma, flat screen, high definition, HDTV, projection",
4227
+ "pageTitle": "Televisions Including LCD, Plasma & More in High Definition",
4228
+ "parentCategoryId": "electronics",
4229
+ "parent_category_tree": [
4230
+ {
4231
+ "id": "electronics",
4232
+ "name": "electronics",
4233
+ "slug": "electronics"
4234
+ }
4235
+ ],
4236
+ "c_enableCompare": true,
4237
+ "c_showInMenu": true,
4238
+ "c_slotBannerImage": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dw1d6f6411/images/slot/landing/cat-landing-tv.jpg"
4239
+ },
4240
+ {
4241
+ "id": "electronics-digital-cameras",
4242
+ "image": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dw3535377d/images/slot/sub_banners/cat-banner-electronics-camera.jpg",
4243
+ "name": "Digital Cameras",
4244
+ "slug": "digital-cameras",
4245
+ "onlineSubCategoriesCount": 0,
4246
+ "pageDescription": "Shop the latest digital cameras from all the top brands, makes and models at Salesforce Commerce Cloud.",
4247
+ "pageKeywords": "cameras, digital camerasm point and shoot, slr",
4248
+ "pageTitle": "Digital Cameras",
4249
+ "parentCategoryId": "electronics",
4250
+ "parent_category_tree": [
4251
+ {
4252
+ "id": "electronics",
4253
+ "name": "electronics",
4254
+ "slug": "electronics"
4255
+ }
4256
+ ],
4257
+ "c_enableCompare": true,
4258
+ "c_showInMenu": true,
4259
+ "c_slotBannerImage": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dw1a543dc7/images/slot/landing/cat-landing-camera.jpg"
4260
+ },
4261
+ {
4262
+ "id": "electronics-digital-media-players",
4263
+ "image": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dw7e9353db/images/slot/sub_banners/cat-banner-electronics-mp3.jpg",
4264
+ "name": "iPod & MP3 Players",
4265
+ "slug": "ipod-mp3-players",
4266
+ "onlineSubCategoriesCount": 0,
4267
+ "pageDescription": "Shop Digital Media Players including iPods, Creative Zen, Sony & the latest from all the top brands, makes and models at Salesforce Commerce Cloud.",
4268
+ "pageKeywords": "mp3, iPods, mp3 players",
4269
+ "pageTitle": "iPod & MP3 Digital Media Players",
4270
+ "parentCategoryId": "electronics",
4271
+ "parent_category_tree": [
4272
+ {
4273
+ "id": "electronics",
4274
+ "name": "electronics",
4275
+ "slug": "electronics"
4276
+ }
4277
+ ],
4278
+ "c_enableCompare": true,
4279
+ "c_showInMenu": true,
4280
+ "c_slotBannerImage": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dw9f3d289a/images/slot/landing/cat-landing-mp3.jpg"
4281
+ },
4282
+ {
4283
+ "id": "electronics-gps-units",
4284
+ "image": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dw6ea864f2/images/slot/sub_banners/cat-banner-electronics-gps.jpg",
4285
+ "name": "GPS Navigation",
4286
+ "slug": "gps-navigation",
4287
+ "onlineSubCategoriesCount": 0,
4288
+ "pageDescription": "Shop the latest in GPS units from Garmin and Tom Tom along with other brands, makes and models at Salesforce Commerce Cloud.",
4289
+ "pageKeywords": "gps, gps units, garmin, tom tom",
4290
+ "pageTitle": "GPS Units",
4291
+ "parentCategoryId": "electronics",
4292
+ "parent_category_tree": [
4293
+ {
4294
+ "id": "electronics",
4295
+ "name": "electronics",
4296
+ "slug": "electronics"
4297
+ }
4298
+ ],
4299
+ "c_enableCompare": true,
4300
+ "c_showInMenu": true,
4301
+ "c_slotBannerImage": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dwad4e06f8/images/slot/landing/cat-landing-gps.jpg"
4302
+ },
4303
+ {
4304
+ "id": "electronics-gaming",
4305
+ "image": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/default/dw9da58d91/images/slot/sub_banners/cat-banner-electronics.jpg",
4306
+ "name": "Gaming",
4307
+ "slug": "gaming",
4308
+ "onlineSubCategoriesCount": 2,
4309
+ "pageDescription": "Shop games and game consoles from Xbox, Xbox360, Playstation 2, Playstation 3, Game Cube, Wii, Playstation Portable and Nintento DS at Salesforce Commerce Cloud.",
4310
+ "pageKeywords": "gaming, xbox, xbox360, ps3, ps2, playstaion 3, psp, game cube, wii, nintendo, nintendo ds",
4311
+ "pageTitle": "Gaming",
4312
+ "parentCategoryId": "electronics",
4313
+ "parent_category_tree": [
4314
+ {
4315
+ "id": "electronics",
4316
+ "name": "electronics",
4317
+ "slug": "electronics"
4318
+ }
4319
+ ],
4320
+ "c_enableCompare": true,
4321
+ "c_showInMenu": true,
4322
+ "c_slotBannerImage": "https://example.com/on/demandware.static/-/Sites-storefront-catalog-en/en_US/v1551233475301/images/slot/landing/cat-landing-gaming.jpg"
4323
+ }
4324
+ ],
4325
+ "id": "electronics",
4326
+ "name": "Electronics",
4327
+ "slug": "electronics",
4328
+ "onlineSubCategoriesCount": 5,
4329
+ "pageDescription": "Shop Electronics including the latest in televisions, digital cameras, camcorders, mp3, ipod, mobil phones, GPS & gaming at Salesforce Commerce Cloud",
4330
+ "pageKeywords": "televisions, digital cameras, camcorders, mp3, ipod, mobil phones, GPS, gaming",
4331
+ "pageTitle": "Shop Electronics Including Televisions, Digital Cameras, iPods & More",
4332
+ "parentCategoryId": "root",
4333
+ "parent_category_tree": [
4334
+ {
4335
+ "id": "root",
4336
+ "name": "root",
4337
+ "slug": "root"
4338
+ }
4339
+ ],
4340
+ "c_enableCompare": true,
4341
+ "c_headerMenuOrientation": "Vertical",
4342
+ "c_showInMenu": true
4343
+ }
4344
+ },
4345
+ "GetCategoryBadRequestResponseExample": {
4346
+ "value": {
4347
+ "title": "Bad Request",
4348
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/validation",
4349
+ "detail": "Maximum number of categories you can request in one call is 50."
4350
+ }
4351
+ },
4352
+ "GetCategoryNotFoundResponseExample": {
4353
+ "value": {
4354
+ "title": "Category Not Found",
4355
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/product-not-found",
4356
+ "detail": "No category with ID 'electronics-televi' for site 'SiteGenesis' could be found.",
4357
+ "productId": "electronics-televi",
4358
+ "siteId": "SiteGenesis"
4359
+ }
4360
+ }
4361
+ },
2926
4362
  "securitySchemes": {
2927
4363
  "ShopperToken": {
2928
4364
  "type": "oauth2",
4365
+ "description": "ShopperToken authentication follows the authorization code grant flow, as defined by the OAuth 2.1 standard. Depending on the type of OAuth client (public or private), this authorization flow has further requirements. \nFor a detailed description of the authorization flow, see the [SLAS overview](https://developer.salesforce.com/docs/commerce/commerce-api/references?meta=shopper-login:Summary).\nA shopper token allows you to access the Shopper API endpoints of both the Open Commerce API (OCAPI) and the B2C Commerce API. These endpoints can be used to build headless storefronts and other applications.\nThe `ShopperToken` security scheme is a parent of other security schemes, such as `ShopperTokenTsob`. A Shopper API endpoint can require a specific child scheme (`ShopperTokenTsob`, for example) that cannot be accessed with a regular shopper token.\n",
2929
4366
  "flows": {
2930
4367
  "clientCredentials": {
2931
4368
  "tokenUrl": "https://{shortCode}.api.commercecloud.salesforce.com/shopper/auth/v1/organizations/{organizationId}/oauth2/token",
@@ -2946,6 +4383,7 @@
2946
4383
  },
2947
4384
  "ShopperClientContextToken": {
2948
4385
  "type": "oauth2",
4386
+ "description": "ShopperClientContextToken is a separate security scheme used to track and validate client context information.\nIt is valid for Guest shoppers flows only using SLAS private clients. For registered shoppers, use existing ShopperToken flows.\nFor authentication details, see the [SLAS overview](https://developer.salesforce.com/docs/commerce/commerce-api/references?meta=shopper-login:Summary).\nThis token allows access to Shopper API endpoints for guest shoppers only.\n",
2949
4387
  "flows": {
2950
4388
  "clientCredentials": {
2951
4389
  "tokenUrl": "https://{shortCode}.api.commercecloud.salesforce.com/shopper/auth/v1/organizations/{organizationId}/oauth2/token?hint=client_context",