openapi: 3.1.0
info:
version: 25.1126.6886238
x-version-timestamp: 2025-11-26 19:10:23+00:00
title: Addresses Introduction Account Addresses Variations API
description: 'The Addresses API allows you to organize account addresses. Addresses are a sub-resource of `account` resources, an account can have multiple addresses, such as home, work, and neighbour.
You can use an account address with either [client_credentials access token](/docs/api/authentication/create-an-access-token) or a combination of [implicit access token](/docs/api/authentication/create-an-access-token) and [Account Management authentication](/docs/api/accounts/post-v-2-account-members-tokens) token.
'
contact:
name: Elastic Path
url: https://www.elasticpath.com
email: support@elasticpath.com
license:
url: https://elasticpath.dev
name: MIT
servers:
- url: https://useast.api.elasticpath.com
description: US East
- url: https://euwest.api.elasticpath.com
description: EU West
security:
- BearerToken: []
tags:
- name: Variations
description: '```mdx-code-block
import VariationsOverview from ''/docs/partials/pxm/variations/variationsoverview.mdx'';
import VariationsReusability from ''/docs/partials/pxm/variations/variationsreusability.mdx'';
import ChildProducts from ''/docs/partials/pxm/variations/childproducts.mdx'';
import BuildChildren from ''/docs/partials/pxm/variations/buildchildproducts.mdx'';
import ProductModifiers from ''/docs/partials/pxm/variations/productmodifiers.mdx'';
import PriceModifiers from "/docs/partials/pxm/variations/pricemodifiers.mdx";
### Reusability
### Child Products
### Building Child Products
### Sorting the Order of Variations and Options
The `variation_matrix` object lists the variation IDs and variation option IDs and their corresponding product IDs that are generated when the variation and variation options are built with a product. The `variation_matrix` can then be added to your catalogs.
The order of the variations in the `variation_matrix` is the order of the variations in the array when the variations were linked to the product. For example, the first variation in the `variation_matrix` corresponds to the first variation in the array, and so on. You can use the `sort_order`attribute to sort the order of your variation and variation options in the `variation_matrix` object. The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variations and variation options in the order that you want.
Add the `sort_order` attribute to the body of your request and specify a `sort_order` value. A `sort_order` value must be a number. You can specify any numbers that you want.
- 1, 2, 3, or 100, 90, 80, and so on.
- Zero or negative numbers.
You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.
:::caution
- Commerce does not sort variations and variation options. You must program your storefront to sort the variations and variation options in the order that you want.
- You must rebuild your products for the sort order changes to take effect. See [**Build Child Products**](#build-child-products).
:::
### Product Modifiers
### Price Modifiers
```
'
paths:
/pcm/products/{productID}/build:
post:
summary: Build child products
description: "With product variations in Product Experience Manager, you can create product variations and different options for each variation and use both to create child products for a product. Each child product is a unique combination of options associated with the product. \n\nChild products inherit attributes from their parent products. When you make changes to the attributes of the parent products, you can rebuild your child products, ensuring that changes to the parent products are propagated to the child products.\n\nAlternatively, you can modify a child product independently, without impacting its parent product. For example, you may prefer the status of your child product to be `live`, while keeping the parent product's status as `draft`. When you directly update a child product, it becomes independent of its parent product. In other words, any subsequent changes made to the parent product are not automatically reflected in the child product when you rebuild the parent product and its child products. Once a child product is independent of its parent, you cannot recreate the association between the child product and its parent. You must delete the child product and rebuild the parent to recreate the child product.\n\nFollowing on from that, if you add the same flow to both a parent and child product, the child flow values are not affected by changes to the parent flow values in a rebuild.\n\n### Using Build Rules\n\nWhen building your child products, you can build all products related to a product. \n\nAlternatively, you can build a combination of child products associated with a product, based on build rules that you specify. This is useful, for example, if you have a variation option that you do not sell. This makes managing and building your child products quick and easy. You can do this using `build_rules`. `build_rules` are combinations of variation option IDs that you wish to include or exclude when building your child products.\n\n:::note\n\nYou do not need to configure any `build_rules` in the following scenarios:\n\n- Child products must be built with all variation options. Simply, use the `Create a product` or `Update a product` endpoints with no `build_rules` specified.\n- Child products must be built apart from all options for a specific variation. In this case, you must remove the variation and use the `Create a product` or `Update a product` endpoints with no `build_rules` specified. In other words, using our example, if none of the `size` options should be included, then remove the `size` variation.\n\n:::\n\nThe `build_rules` contain:\n\n- (Required) `default`: specifies the default behavior.\n- (Optional) `include`: specifies the option IDs to include when the child products are built. Each combination consists of a nested array of option IDs from one or more variations. Combinations of option IDs in the nested arrays must come from different variations. See [**Invalid Build Rules**](#invalid-build-rules).\n- (Optional) `exclude`: specifies the option IDs to exclude when the child products are built. Each combination consists of a nested array of option IDs from one or more variations. Combinations of option IDs in the nested arrays must come from different variations. See [**Invalid build rules**](#invalid-build-rules).\n\nWhen building child products, Commerce compares each combination of option IDs to these rules to determine how your child products should be built, depending on how you have configured the `build_rules`. It depends on your requirements how you configure your `build_rules`.\n\n#### Invalid Build Rules\n\nThe `build_rules` are invalid if both the option IDs come from the same variation. Combinations of option IDs in the nested arrays must come from different variations.\n\nIf Commerce cannot resolve the `build_rules` a `could not determine whether to include or exclude a child product due to ambiguous rules` error is returned. This error can occur, for example, if you have the same number of variation option IDs in both the `include` and `exclude` arrays and the variation option IDs match.\n\n### Building Child Products\n\nBuilding child products is an asynchronous operation. When you build child products, a job is created. The jobId of the job is displayed in the response. When the job is complete, the build child products operation is also complete. You can use the jobId to see the status of your job using the `Get a Job` endpoint.\n\nJobs are processed one at a time. You can continue to send build child product requests, but those jobs are queued. In other words, Commerce looks for any jobs that have a status of PENDING and starts the job with the earliest created date. This process is repeated until all jobs are processed. See Jobs.\n\nRe-building child products after adding or removing a new variation changes the total number of child products that you can generate from a parent product. When you rebuild the child products after updating variations associated with the parent product, all existing child products that belong to a parent product are deleted. New child products are created with new product IDs.\n\nIf you have any bundles that reference child products directly, then you must update the bundles with the new child product IDs.\n\nHowever, re-building child products after adding or removing an option does not change the existing product IDs.\n"
operationId: buildChildProducts
tags:
- Variations
requestBody:
content:
application/json:
schema:
type: object
responses:
'201':
description: Successfully started building child products
content:
application/json:
schema:
$ref: '#/components/schemas/single'
examples:
build-child-products:
$ref: '#/components/examples/build-child-products_created'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
parameters:
- $ref: '#/components/parameters/product_id'
/pcm/products/{productID}/children:
get:
summary: Get child products
operationId: getChildProducts
tags:
- Variations
responses:
'200':
description: Returns a list of child products for the specified parent product ID.
content:
application/json:
schema:
$ref: '#/components/schemas/multi_product_response'
examples:
list-products:
$ref: '#/components/examples/multi_get_child_response'
'400':
$ref: '#/components/responses/bad_request'
'500':
$ref: '#/components/responses/internal'
parameters:
- $ref: '#/components/parameters/product_id'
/pcm/products/{productID}/relationships/variations:
post:
summary: Create a product variation relationship
operationId: createProductVariationRelationships
tags:
- Variations
parameters:
- $ref: '#/components/parameters/product_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/product_variations_request'
examples:
create-product-variation-relationship:
$ref: '#/components/examples/product_variations_relationship_request'
responses:
'204':
description: No Content
'400':
$ref: '#/components/responses/bad_request'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'409':
$ref: '#/components/responses/write_conflict'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
get:
summary: Get all product variation relationships
operationId: getProductVariationRelationships
tags:
- Variations
parameters:
- $ref: '#/components/parameters/product_id'
responses:
'200':
description: Returns all product variation relationships.
content:
application/json:
schema:
$ref: '#/components/schemas/variations_response'
examples:
product-variation-relationships:
$ref: '#/components/examples/variations_response'
'400':
$ref: '#/components/responses/bad_request'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'409':
$ref: '#/components/responses/write_conflict'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
put:
summary: Replace a product variation relationship
operationId: updateProductVariationRelationships
tags:
- Variations
parameters:
- $ref: '#/components/parameters/product_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/product_variations_request'
examples:
replace-product-variation-relationship:
$ref: '#/components/examples/product_variations_relationship_request'
responses:
'204':
description: No Content
'400':
$ref: '#/components/responses/bad_request'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'409':
$ref: '#/components/responses/write_conflict'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
delete:
summary: Delete a product variation relationships
operationId: deleteProductVariationRelationships
tags:
- Variations
parameters:
- $ref: '#/components/parameters/product_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/product_variations_request'
examples:
delete-product-variation-relationships:
$ref: '#/components/examples/product_variations_relationship_request'
responses:
'204':
description: No Content
'400':
$ref: '#/components/responses/bad_request'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'409':
$ref: '#/components/responses/write_conflict'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
/pcm/variations:
post:
summary: Create a variation
operationId: createVariation
tags:
- Variations
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/create_variation'
examples:
create-variation:
summary: Create a variation
$ref: '#/components/examples/create_variation'
responses:
'201':
description: Returns a created variation with the following attributes.
content:
application/json:
schema:
$ref: '#/components/schemas/created_variation'
examples:
created-variation:
$ref: '#/components/examples/created_variation'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
get:
summary: Get all variations
operationId: getAllVariations
parameters:
- $ref: '#/components/parameters/page_offset'
- $ref: '#/components/parameters/page_limit'
tags:
- Variations
responses:
'200':
description: Returns all variations.
content:
application/json:
schema:
$ref: '#/components/schemas/multi_variations'
examples:
list-variations:
$ref: '#/components/examples/multi_variations'
'400':
$ref: '#/components/responses/bad_request'
'500':
$ref: '#/components/responses/internal'
/pcm/variations/{variationID}:
get:
summary: Get a variation
operationId: getVariation
parameters:
- $ref: '#/components/parameters/variation_id'
tags:
- Variations
responses:
'200':
description: Returns the specified variation.
content:
application/json:
schema:
$ref: '#/components/schemas/single_variation'
examples:
get-variation:
$ref: '#/components/examples/single_variation'
'400':
$ref: '#/components/responses/bad_request'
'404':
$ref: '#/components/responses/not_found'
'500':
$ref: '#/components/responses/internal'
put:
summary: Update a variation
description: Specify whichever attributes you want to change. The values of the other attributes remain the same. If the attributes section is empty, the variation is not updated.
operationId: updateVariation
parameters:
- $ref: '#/components/parameters/variation_id'
tags:
- Variations
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/update_variation'
examples:
update-variation:
$ref: '#/components/examples/update_variation'
responses:
'200':
description: Returns an updated variation with the following attributes.
content:
application/json:
schema:
$ref: '#/components/schemas/single_variation'
examples:
update-variation:
$ref: '#/components/examples/single_variation'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'409':
$ref: '#/components/responses/write_conflict'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
delete:
summary: Delete a variation and all it's associated options.
operationId: deleteVariation
parameters:
- $ref: '#/components/parameters/variation_id'
tags:
- Variations
responses:
'204':
description: No Content
'403':
$ref: '#/components/responses/forbidden'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
/pcm/variations/{variationID}/options:
post:
summary: Create a variation option
operationId: createVariationOption
parameters:
- $ref: '#/components/parameters/variation_id'
tags:
- Variations
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/create_option'
examples:
create-variation-option:
$ref: '#/components/examples/create_option'
responses:
'201':
description: Successfully returns the created variation option.
content:
application/json:
schema:
$ref: '#/components/schemas/created_option'
examples:
created-variation-option:
$ref: '#/components/examples/created_option'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
get:
summary: Get all variation options
operationId: getAllVariationOptions
parameters:
- $ref: '#/components/parameters/variation_id'
- $ref: '#/components/parameters/page_offset'
- $ref: '#/components/parameters/page_limit'
tags:
- Variations
responses:
'200':
description: Successfully returns all variation options.
content:
application/json:
schema:
$ref: '#/components/schemas/multi_options'
examples:
list-variations:
$ref: '#/components/examples/multi_options'
'400':
$ref: '#/components/responses/bad_request'
'500':
$ref: '#/components/responses/internal'
/pcm/variations/{variationID}/options/{optionID}:
get:
summary: Get a variation option
operationId: getVariationOption
parameters:
- $ref: '#/components/parameters/variation_id'
- $ref: '#/components/parameters/option_id'
tags:
- Variations
responses:
'200':
description: Successfully returns the variation option.
content:
application/json:
schema:
$ref: '#/components/schemas/single_option'
examples:
get-variation-option:
$ref: '#/components/examples/single_option'
'400':
$ref: '#/components/responses/bad_request'
'404':
$ref: '#/components/responses/not_found'
'500':
$ref: '#/components/responses/internal'
put:
summary: Update a variation option
operationId: updateVariationOption
parameters:
- $ref: '#/components/parameters/variation_id'
- $ref: '#/components/parameters/option_id'
tags:
- Variations
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/update_option'
examples:
update-variation-option:
$ref: '#/components/examples/update_option'
responses:
'200':
description: Successfully returns the updated variation option
content:
application/json:
schema:
$ref: '#/components/schemas/single_option'
examples:
updated-variation-option:
$ref: '#/components/examples/single_option'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'409':
$ref: '#/components/responses/write_conflict'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
delete:
summary: Delete a variation option
operationId: deleteVariationOption
parameters:
- $ref: '#/components/parameters/variation_id'
- $ref: '#/components/parameters/option_id'
tags:
- Variations
responses:
'204':
description: No Content
'403':
$ref: '#/components/responses/forbidden'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
/pcm/variations/{variationID}/options/{optionID}/modifiers:
post:
summary: Create a modifier
description: "You can specify different modifiers for different options in a variation. When you build child products using options in variations, the properties of a child products depends on the modifier set for the options that are applied to the child product.\n \nThe table below describes the different types of modifiers.\n\n| Modifier | Data Type | Effect |\n| :--- | :--- | :--- |\n| `name_equals` | `string` | Overrides the name of the child product with the name specified by the modifier. |\n| `name_append` | `string` | Appends the string specified in the modifier to the name of the child product. |\n| `name_prepend` | `string` | Prepends the string specified in the modifier to the name of the child product. |\n| `description_equals` | `string` | Overrides the description of the child product. |\n| `description_append` | `string` | Appends the string specified in the modifier to the description of the child product. |\n| `description_prepend` | `string` | Prepends the string specified in the modifier to the product description of the child product. |\n| `commodity_type` | `string` | Sets the commodity type of the child product, such as `physical` or `digital`. |\n| `price` | `string` | Allows application of price modifiers (`price_increment`, `price_decrement`, and `price_equals`) to the child products. |\n| `price_increment` | `string` | Increases the price of the child product. |\n| `price_decrement` | `string` | Decreases the price of the child product. |\n| `price_equals` | `string` | Sets the price of a child product to the amount you specify. |\n| `slug_append` | `string` | Appends the string specified in the modifier to the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `\"seek\": :{COLOR}\"`. |\n| `slug_prepend` | `string` | Prepends the string specified in the modifier to the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `\"seek\": :{COLOR}\"`. |\n| `slug_builder` | `string`| Sets a part of the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `\"seek\": :{COLOR}\"`. |\n| `sku_equals` | `string` | Sets the SKU of the child product. |\n| `sku_append` | `string` | Appends the string specified in the modifier to the SKU of the child product. |\n| `sku_prepend` | `string` | Prepends the string specified in the modifier to the SKU of the child product. |\n| `sku_builder` | `string` | Sets a part of the SKU of the child product. |\n| `status` | `string` | Sets the status of the child product, such as `draft` or `live`. |\n"
operationId: createModifier
parameters:
- $ref: '#/components/parameters/variation_id'
- $ref: '#/components/parameters/option_id'
tags:
- Variations
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/create_modifier'
examples:
create-variation-modifier:
$ref: '#/components/examples/create_modifier'
responses:
'201':
description: Successfully returns the created modifier
content:
application/json:
schema:
$ref: '#/components/schemas/created_modifier'
examples:
created-variation-modifier:
$ref: '#/components/examples/created_modifier'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
get:
summary: Get all modifiers
operationId: getAllModifiers
tags:
- Variations
parameters:
- $ref: '#/components/parameters/variation_id'
- $ref: '#/components/parameters/option_id'
- $ref: '#/components/parameters/page_offset'
- $ref: '#/components/parameters/page_limit'
responses:
'200':
description: Successfully returns all variation modifiers.
content:
application/json:
schema:
$ref: '#/components/schemas/multi_modifiers'
examples:
list-variations:
$ref: '#/components/examples/multi_modifiers'
'400':
$ref: '#/components/responses/bad_request'
'500':
$ref: '#/components/responses/internal'
/pcm/variations/{variationID}/options/{optionID}/modifiers/{modifierID}:
get:
summary: Get a modifier
operationId: getModifier
parameters:
- $ref: '#/components/parameters/variation_id'
- $ref: '#/components/parameters/option_id'
- $ref: '#/components/parameters/modifier_id'
tags:
- Variations
responses:
'200':
description: Returns the specified modifier.
content:
application/json:
schema:
$ref: '#/components/schemas/single_modifier'
examples:
get-variation-modifier:
$ref: '#/components/examples/single_modifier'
'400':
$ref: '#/components/responses/bad_request'
'404':
$ref: '#/components/responses/not_found'
'500':
$ref: '#/components/responses/internal'
put:
summary: Update a modifier
description: Specify whichever attributes you want to change. The values of the other attributes remain the same. If the attributes section is empty, the modifier is not updated.
operationId: updateModifier
parameters:
- $ref: '#/components/parameters/variation_id'
- $ref: '#/components/parameters/option_id'
- $ref: '#/components/parameters/modifier_id'
tags:
- Variations
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/update_modifier'
examples:
update-variation-modifier:
$ref: '#/components/examples/update_modifier'
responses:
'200':
description: Successfully returns the updated modifier.
content:
application/json:
schema:
$ref: '#/components/schemas/single_modifier'
examples:
updated-variation-modifier:
$ref: '#/components/examples/single_modifier'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'409':
$ref: '#/components/responses/write_conflict'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
delete:
summary: Delete a modifier
description: You cannot delete a modifier if it is in use. Deleting a modifier in us returns a `422 Failed Validation` error.
operationId: deleteModifier
parameters:
- $ref: '#/components/parameters/variation_id'
- $ref: '#/components/parameters/option_id'
- $ref: '#/components/parameters/modifier_id'
tags:
- Variations
responses:
'204':
description: No Content
'403':
$ref: '#/components/responses/forbidden'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
components:
examples:
create_variation:
value:
data:
type: product-variation
attributes:
name: Paint Color
sort_order: 10
created_modifier:
value:
data:
type: product-variation-modifier
id: a510cddc-e946-4c22-9541-54626a7cf0ec
attributes:
seek: '{color}'
set: red
type: slug_builder
meta:
owner: store
variations_response:
value:
data:
- id: 43903bfa-5352-4a3d-9496-c9ab1229a175
type: product-variation
- id: 50f56ce9-9381-43f6-8a52-5369a8b42e52
type: product-variation
multi_get_child_response:
value:
data:
- type: product
id: 4d32b816-4397-4a71-b875-4e4ea3ce6745
attributes:
commodity_type: physical
name: Jeans
sku: jeansRed
slug: jeansRed
status: live
relationships:
base_product:
data:
type: product
id: 571e366f-17e6-4e51-8239-b3cc8ee1144d
children:
data: []
component_products:
data: []
links:
self: /products/4d32b816-4397-4a71-b875-4e4ea3ce6745/relationships/component_products
files:
data: []
links:
self: /products/4d32b816-4397-4a71-b875-4e4ea3ce6745/relationships/files
main_image:
data: null
templates:
data: []
links:
self: /products/4d32b816-4397-4a71-b875-4e4ea3ce6745/relationships/templates
variations:
data: []
links:
self: /products/4d32b816-4397-4a71-b875-4e4ea3ce6745/relationships/variations
meta:
created_at: '2024-01-05T10:29:44.603Z'
owner: store
product_types:
- child
updated_at: '2024-01-05T10:29:45.155Z'
variation_matrix: {}
child_variations:
- id: 119b2b76-0014-4077-826e-ae80ff207393
name: Size
options: null
option:
id: fad253ad-4485-4b35-8e3b-b475ad28e78d
name: Medium
description: Medium
- id: 10ceafef-7ac9-4352-9797-4825a1671482
name: Colour
options: null
option:
id: b8128e51-1b0a-4b16-9eda-bb783b17026b
name: Red
description: '#EE2238'
single_modifier:
value:
data:
type: product-variation-modifier
id: 68ec4892-9e4c-4154-a9fd-f5a9fb1f6878
attributes:
type: sku_equals
value: newSku
meta:
owner: store
create_modifier:
value:
data:
type: product-variation-modifier
attributes:
seek: '{color}'
set: red
type: slug_builder
multi_modifiers:
value:
data:
- type: product-variation-modifier
id: 68ec4892-9e4c-4154-a9fd-f5a9fb1f6878
attributes:
type: sku_equals
value: newSku
meta:
owner: store
- type: product-variation-modifier
id: a510cddc-e946-4c22-9541-54626a7cf0ec
attributes:
seek: '{color}'
set: red
type: slug_builder
meta:
owner: store
- type: product-variation-modifier
id: 2f0cbb06-8880-4a75-bfc6-a20f0f73a997
attributes:
reference_name: PriceEqual
type: price
meta:
owner: store
meta:
results:
total: 3
update_option:
value:
data:
type: product-variation-option
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
attributes:
description: Our most popular color
name: Blue
sort_order: 0
created_option:
value:
data:
type: product-variation-option
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
attributes:
description: Our most popular color
name: Blue
sort_order: 0
meta:
owner: store
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
update_variation:
value:
data:
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
type: product-variation
attributes:
name: Paint Color
sort_order: 0
create_option:
value:
data:
type: product-variation-option
attributes:
name: Blue
sort_order: 0
description: Our most popular color
single_variation:
value:
data:
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
type: product-variation
attributes:
name: Paint Color
sort_order: 1
meta:
options:
- id: 3de2c96c-2a99-4ded-bcf8-eeba32c0c5be
name: Red
description: Red color
sort_order: 2
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
- id: 31f2d09b-8a10-447a-b3ad-3358d07f818a
name: Blue
description: Blue color
sort_order: 1
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
owner: store
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
multi_variations:
value:
data:
- type: product-variation
id: c1ccccba-53e4-46b5-aed8-94f32823148a
attributes:
name: Size
sort_order: 1
meta:
options:
- id: 057a50ba-1afb-4944-9637-bd9b568a9f39
name: Large
description: Large size
sort_order: 3
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
- id: fa191e68-9bba-49f9-8e12-056c4e8f50e2
name: Medium
description: Medium size
sort_order: 2
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
- id: 112d1c5c-d149-453e-b208-89470968bacf
name: Small
description: Small size
sort_order: 1
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
owner: store
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
- type: product-variation
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
attributes:
name: Paint Color
meta:
owner: store
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
meta:
results:
total: 2
single_option:
value:
data:
type: product-variation-option
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
attributes:
description: Our most popular color
name: Blue
sort_order: 0
meta:
owner: store
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
update_modifier:
value:
data:
type: product-variation-modifier
id: 68ec4892-9e4c-4154-a9fd-f5a9fb1f6878
attributes:
type: sku_equals
value: anotherSku
created_variation:
value:
data:
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
type: product-variation
attributes:
name: Paint Color
sort_order: 10
meta:
owner: store
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
build-child-products_created:
value:
data:
type: pim-job
id: dcc9e0bb-526b-4207-9e52-081589cdb50e
attributes:
completed_at: null
created_at: '2024-11-01T14:11:00.917Z'
started_at: null
status: pending
type: child-products
updated_at: '2024-11-01T14:11:00.917Z'
meta:
x_request_id: 85609bc9-6f19-4831-919a-a5b43e662061
product_variations_relationship_request:
value:
data:
- id: 43903bfa-5352-4a3d-9496-c9ab1229a175
type: product-variation
multi_options:
value:
data:
- type: product-variation-option
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
attributes:
description: Our most popular color
name: Blue
sort_order: 0
meta:
owner: store
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
- type: product-variation-option
id: fbe73839-58a2-41b4-aca6-cb0724668c97
attributes:
description: Our second most popular color
name: Red
meta:
owner: store
created_at: '2024-01-25T11:25:38.001Z'
updated_at: '2024-01-25T11:25:38.001Z'
meta:
results:
total: 2
schemas:
product_build_rules:
type: object
description: You can build a combination of child products associated with a product, based on build rules that you specify. This is useful, for example, if you have a variation option that you do not sell. This makes managing and building your child products quick and easy. See [Using Build Rules](/docs/api/pxm/products/build-child-products#using-build-rules).
properties:
default:
description: Specifies the default behaviour, either `include` or `exclude`.
type: string
enum:
- include
- exclude
include:
description: An array of option IDs to include when child products are built. Each combination consists of a nested array of option IDs from one or more variations. Combinations of option IDs in the nested arrays must come from different variations.
type: array
items:
type: array
items:
type: string
exclude:
description: An array of option IDs to exclude when child products are built. Each combination consists of a nested array of option IDs from one or more variations. Combinations of option IDs in the nested arrays must come from different variations.
type: array
items:
type: array
items:
type: string
single:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/job'
created_variation:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- type
- attributes
- meta
properties:
id:
description: A unique identifier generated when a variation is created.
type: string
type:
description: This represents the type of resource object being returned. Always `product-variation`.
type: string
enum:
- product-variation
attributes:
type: object
additionalProperties: false
properties:
name:
description: A human-recognizable identifier for a variation.
type: string
sort_order:
description: The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. The variation with the highest value of `sort_order` is displayed first. For example, a variation with a `sort_order` value of 3 appears before a variation with a `sort_order` value of 2. You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, including, zero or negative numbers. You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.
type: integer
meta:
type: object
properties:
owner:
description: The owner of the resource, either `organization` or `store`.
type: string
enum:
- organization
- store
created_at:
type: string
description: The date and time a variation is created.
example: '2020-09-22T09:00:00.000Z'
format: date-time
updated_at:
type: string
description: The date and time a variation is updated.
example: '2020-09-22T09:00:00.000Z'
format: date-time
error:
required:
- errors
properties:
errors:
type: array
items:
required:
- status
- title
properties:
status:
type: string
description: The HTTP response code of the error.
example: '500'
title:
type: string
description: A brief summary of the error.
example: Internal server error
detail:
type: string
description: Optional additional detail about the error.
example: An internal error has occurred.
request_id:
type: string
description: Internal request ID.
example: 00000000-0000-0000-0000-000000000000
meta:
type: object
description: Additional supporting meta data for the error.
example:
missing_ids:
- e7d50bd5-1833-43c0-9848-f9d325b08be8
create_variation:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
properties:
type:
description: This represents the type of resource object being returned. Always `product-variation`.
type: string
enum:
- product-variation
attributes:
type: object
additionalProperties: false
properties:
name:
description: The variation name.
type: string
sort_order:
description: "The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. \n \n The variation with the highest value of `sort_order` is displayed first. For example, a variation with a `sort_order` value of 3 appears before a variation with a `sort_order` value of 2. \n \n You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, including, zero or negative numbers. You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.\n \n You must rebuild your products for the sort order changes to take effect.\n"
type: integer
product_custom_inputs:
type: object
description: You use the `custom_inputs` attribute to allow your shoppers to add custom text to a product when adding product items to their carts. This is useful, for example, if you have a product like a T-shirt that can be personalized or you sell greetings cards that can be printed with your shoppers personalized messages. See [Personalizing Products](/docs/api/pxm/products/create-product#personalizing-products).
additionalProperties:
description: A name for the custom text field. You can rename this to something more representative of the input that shoppers are adding, for example, `message` or `front`.
type: object
properties:
name:
type: string
description: A name for the custom text field.
validation_rules:
type: array
description: The validation rules for the custom text.
items:
type: object
properties:
type:
type: string
description: The type of validation rule. For example, `string`.
options:
type: object
description: The options for the validation rule.
properties:
max_length:
type: integer
description: The number of characters the custom text field can be. You can specify a maximum length up to 255 characters, as the limit is 255 characters.
required:
type: boolean
description: '`true` or `false` depending on whether the custom text is required.'
admin_attributes:
type: object
description: "`admin_attributes` are not displayed in catalogs. This means `admin_attributes` can only be viewed by administrators. If you want a custom attribute to be displayed in a catalog, you must add it to `shopper_attributes`. \n\n`admin_attributes` are structured as key-value pairs. Both the keys and values are `strings`. You can have up to 100 keys.\n"
example:
cost_of_goods: '42.0'
charge_type: credit card
additionalProperties:
nullable: true
type: string
elastic_path_file:
type: object
title: ElasticPathFile
properties:
id:
type: string
description: The unique identifier for this file.
format: uuid
type:
description: The type represents the object being returned.
type: string
example: file
file_name:
description: The name of the file.
type: string
example: file_name.jpg
mime_type:
description: The mime type of the file.
type: string
example: image/jpeg
file_size:
description: The size of the file. Required when uploading files.
type: integer
example: 36000
public:
description: DEPRECATED Whether the file public or not. Required when uploading files.
type: boolean
example: true
meta:
properties:
timestamps:
type: object
description: The date and time the file was created.
properties:
created_at:
description: The date and time the file was created.
type: string
example: '2023-10-11T13:02:25.293Z'
dimensions:
description: The file dimensions.
type: object
properties:
width:
description: The width of the file.
type: integer
example: 1800
height:
description: The height of the file.
type: integer
example: 1000
links:
description: Links are used to allow you to move between requests.
type: object
properties:
self:
description: Single entities use a self parameter with a link to that specific resource.
type: string
example: https://useast.api.elasticpath.com/v2/files/ddc28c74-a7df-46be-b262-8fa69a6e7d52
link:
type: object
description: The publicly available URL for this file.
properties:
href:
description: The publicly available URL for this file.
type: string
example: https://files-eu.epusercontent.com/e8c53cb0-120d-4ea5-8941-ce74dec06038/f8cf26b3-6d38-4275-937a-624a83994702.png
meta:
type: object
properties:
results:
description: Contains the results for the entire collection.
type: object
properties:
total:
description: Total number of results for the entire collection.
type: integer
example: 2
created_modifier:
type: object
properties:
data:
type: object
properties:
id:
description: A unique identifier for a modifier that is generated automatically when a modifier is created.
type: string
type:
description: This represents the type of resource object being returned. Always `product-variation-modifier`.
type: string
enum:
- product-variation-modifier
attributes:
type: object
additionalProperties: false
properties:
type:
description: 'You can specify different modifiers for different options in a variation. When you build child products using options in variations, the properties of a child products depends on the modifier set for the options that are applied to the child product. The table below describes the different types of modifiers.
| Modifier | Data Type | Effect |
| :--- | :--- | :--- |
| `name_equals` | `string` | Overrides the name of the child product with the name specified by the modifier. |
| `name_append` | `string` | Appends the string specified in the modifier to the name of the child product. |
| `name_prepend` | `string` | Prepends the string specified in the modifier to the name of the child product. |
| `description_equals` | `string` | Overrides the description of the child product. |
| `description_append` | `string` | Appends the string specified in the modifier to the description of the child product. |
| `description_prepend` | `string` | Prepends the string specified in the modifier to the product description of the child product. |
| `commodity_type` | `string` | Sets the commodity type of the child product, such as `physical` or `digital`. |
| `price` | `string` | Allows application of price modifiers (`price_increment`, `price_decrement`, and `price_equals`) to the child products. |
| `price_increment` | `string` | Increases the price of the child product. |
| `price_decrement` | `string` | Decreases the price of the child product. |
| `price_equals` | `string` | Sets the price of a child product to the amount you specify. |
| `slug_append` | `string` | Appends the string specified in the modifier to the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `slug_prepend` | `string` | Prepends the string specified in the modifier to the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `slug_builder` | `string`| Sets a part of the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `sku_equals` | `string` | Sets the SKU of the child product. |
| `sku_append` | `string` | Appends the string specified in the modifier to the SKU of the child product. |
| `sku_prepend` | `string` | Prepends the string specified in the modifier to the SKU of the child product. |
| `sku_builder` | `string` | Sets a part of the SKU of the child product. |
| `status` | `string` | Sets the status of the child product, such as `draft` or `live`. |
'
type: string
enum:
- commodity_type
- status
- price
- name_append
- name_prepend
- name_equals
- sku_append
- sku_prepend
- sku_equals
- sku_builder
- slug_append
- slug_prepend
- slug_equals
- slug_builder
- description_append
- description_prepend
- description_equals
- custom_inputs_equals
- build_rules_equals
- locales_equals
- upc_ean_equals
- mpn_equals
- external_ref_equals
value:
description: Required for non-builder modifiers. The value of the modifier type.
type: string
seek:
description: Required for builder modifiers. The sub-string to find and replace enclosed in curly brackets for `slug_builder` and `sku_builder`.
type: string
set:
description: Required for builder modifiers. The value to replace matches the `seek` string for `slug_builder` and `sku_builder`.
type: string
reference_name:
description: The name of the modifier.
type: string
meta:
type: object
properties:
owner:
description: The owner of the resource, either `organization` or `store`.
type: string
enum:
- organization
- store
multi_links:
type: object
description: 'Links allow you to navigate between pages of results.
:::caution Planned pagination changes — on or after 1 September 2026
The pagination behaviour of PIM list endpoints (for example, `GET /pcm/products` and `GET /pcm/hierarchies`) currently differs from the rest of the Elastic Path Commerce Cloud platform. We plan to align PIM pagination with the platform standard on or after **1 September 2026**. Please review the details below and check that your integration code will handle the new behaviour correctly.
:::
#### Current behaviour
The current pagination link behaviour in PIM has the following known issues:
- The `current` link is **not returned**.
- The `first` and `last` links are **not always returned**.
- The `prev` link is omitted on both the first **and** second pages. It should only be omitted on the first page.
- The `next` link is omitted on both the last **and** second-to-last pages. It should only be omitted on the last page.
#### Planned behaviour (on or after 1 September 2026)
On or after 1 September 2026, PIM list endpoints will adopt the following pagination link behaviour, aligning with the rest of the platform:
- `current` — always present, pointing to the current page.
- `first` — always present.
- `last` — present on all pages **except the final page**. Omitting `last` on the final page is intentional, to avoid triggering infinite‑loop bugs in integration code that uses the presence of `last` to detect whether more pages remain.
- `next` — present on all pages except the last page.
- `prev` — present on all pages except the first page.
'
properties:
current:
description: 'A link to the current page of results. **Note:** this link is not currently returned by PIM endpoints. It will be introduced on or after 1 September 2026.
'
type: string
example: /pcm/hierarchies?page[offset]=10&page[limit]=10
first:
description: 'A link to the first page of results. Currently this may not always be present. After the planned changes it will always be present.
'
type: string
example: /pcm/hierarchies?page[offset]=0&page[limit]=10
last:
description: 'A link to the last page of results. Currently this may not always be present. After the planned changes it will be present on all pages except the final page (where it is intentionally omitted).
'
type: string
example: /pcm/hierarchies?page[offset]=20&page[limit]=10
next:
description: 'A link to the next page of results. Should be absent on the last page. Currently this is incorrectly absent on the second-to-last page as well; this will be fixed on or after 1 September 2026.
'
type: string
example: /pcm/hierarchies?page[offset]=10&page[limit]=10
prev:
description: 'A link to the previous page of results. Should be absent on the first page. Currently this is incorrectly absent on the second page as well; this will be fixed on or after 1 September 2026.
'
type: string
example: /pcm/hierarchies?page[offset]=8&page[limit]=10
update_option:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
- id
properties:
type:
description: This represents the type of resource object being returned. Always `product-variation-option`.
type: string
enum:
- product-variation-option
attributes:
type: object
additionalProperties: false
required:
- name
- description
properties:
name:
description: A human recognizable identifier for the option, also used in the SLUG for child products. Option names can only contain A to Z, a to z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed.
type: string
description:
description: The description of the option.
type: string
sort_order:
description: "By default, variations and variation options are sorted alphabetically. You can use the `sort_order` attribute to sort the order of your variation and variation options in the `variation_matrix`. The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. \n\nThe variation option with the highest value of `sort_order` is displayed first. For example, a variation option with a `sort_order` value of `3` appears before a variation option with a `sort_order` value of `2`. \n\nYou can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, and so on, zero or negative numbers. \n\nYou can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.\n\nYou must rebuild your products for the sort order changes to take effect.\n"
type: integer
id:
type: string
description: The unique identifier of the option. Must match the option ID specified in the request path.
example: 00000000-0000-0000-0000-000000000000
multi_product_response:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/product_response'
included:
$ref: '#/components/schemas/included_response'
links:
$ref: '#/components/schemas/multi_links'
meta:
type: object
properties:
results:
description: Contains the results for the entire collection.
type: object
properties:
total:
description: Total number of results for the entire collection.
type: integer
example: 2
shopper_attributes:
type: object
description: "`shopper_attributes` are displayed in catalogs. This means `shopper_attributes` can be viewed by both shoppers and administrators. If you do not want a custom attribute to be displayed in a catalog, you must add it to `admin_attributes`. \n\n`shopper_attributes` are structured as key-value pairs. Both the keys and values are `strings`. You can have up to 100 keys.\n"
example:
cost_of_goods: '42.0'
charge_type: credit card
additionalProperties:
nullable: true
type: string
included_response:
type: object
description: Included is an array of resources that are included in the response.
properties:
main_images:
description: The main images associated with a product.
type: array
items:
$ref: '#/components/schemas/elastic_path_file'
component_products:
description: Returns a list of component products in a product bundle. If a bundle has no component products (in other words, is not a product bundle), an empty array is returned.
type: array
items:
$ref: '#/components/schemas/product_response'
files:
description: The files associated with a product.
type: array
items:
$ref: '#/components/schemas/elastic_path_file'
create_modifier:
type: object
description: Use modifiers to change the properties of child products that are inherited from a parent product. With modifiers, you only need to have one parent product with a variation attached to the product.
required:
- data
properties:
data:
type: object
required:
- type
- attributes
properties:
type:
description: This represents the type of resource object being returned. Always `product-variation-modifier`.
type: string
enum:
- product-variation-modifier
attributes:
type: object
required:
- type
additionalProperties: false
properties:
type:
type: string
description: 'You can specify different modifiers for different options in a variation. When you build child products using options in variations, the properties of a child products depends on the modifier set for the options that are applied to the child product. See [Create a Modifier](/docs/api/pxm/products/create-modifier).
'
enum:
- commodity_type
- status
- price
- name_append
- name_prepend
- name_equals
- sku_append
- sku_prepend
- sku_equals
- sku_builder
- slug_append
- slug_prepend
- slug_equals
- slug_builder
- description_append
- description_prepend
- description_equals
- custom_inputs_equals
- build_rules_equals
- locales_equals
- upc_ean_equals
- mpn_equals
- external_ref_equals
value:
description: Required for non-builder modifiers. The value of the modifier type.
type: string
seek:
description: Required for builder modifiers. The sub-string to find and replace enclosed in curly brackets for `slug_builder` and `sku_builder`.
type: string
set:
description: Required for builder modifiers. The value to replace matches the `seek` string for `slug_builder` and `sku_builder`.
type: string
reference_name:
description: A name for the modifier.
type: string
single_variation:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- type
- attributes
- meta
properties:
id:
description: A unique identifier for a variation.
type: string
type:
description: This represents the type of resource object being returned. Always `product-variation`.
type: string
enum:
- product-variation
attributes:
type: object
additionalProperties: false
properties:
name:
description: The name for a variation.
type: string
sort_order:
description: The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. The variation with the highest value of `sort_order` is displayed first. For example, a variation with a `sort_order` value of 3 appears before a variation with a `sort_order` value of 2. You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, including, zero or negative numbers. You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.
type: integer
meta:
type: object
properties:
options:
description: A variation option represents an option for selection for a single product-variation. For example, if your variation is `color`, you might have three possible options; red, green, and blue.
type: array
items:
type: object
description: The options available for this variation
properties:
id:
type: string
description: A unique ID that is generated an option is created.
name:
type: string
description: A human-recognizable identifier for the option, also used in the SLUG for child products. Option names can only contain A to Z, a to z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed.
description:
type: string
description: A description for an option.
created_at:
type: string
description: The date and time an option is created.
example: '2020-09-22T09:00:00.000Z'
format: date-time
updated_at:
type: string
description: The date and time an option is updated.
example: '2020-09-22T09:00:00.000Z'
format: date-time
sort_order:
description: The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. The variation with the highest value of `sort_order` is displayed first. For example, a variation with a `sort_order` value of 3 appears before a variation with a `sort_order` value of 2. You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, including, zero or negative numbers. You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.
type: integer
modifiers:
type: array
description: The modifiers associated with this option.
items:
type: object
properties:
id:
type: string
description: A unique identifier generated when a modifier is created.
type:
type: string
description: The type of modifier.
enum:
- commodity_type
- status
- price
- name_append
- name_prepend
- name_equals
- sku_append
- sku_prepend
- sku_equals
- sku_builder
- slug_append
- slug_prepend
- slug_equals
- slug_builder
- description_append
- description_prepend
- description_equals
- custom_inputs_equals
- build_rules_equals
- locales_equals
- upc_ean_equals
- mpn_equals
- external_ref_equals
value:
type: string
nullable: true
description: Required for non-builder modifiers. The value of the modifier type.
seek:
type: string
nullable: true
description: Required for builder modifiers. The sub-string to find and replace.
set:
type: string
nullable: true
description: Required for builder modifiers. The value to replace matches of the seek string.
owner:
type: string
nullable: true
description: The owner of the modifier, either `organization` or `store`.
enum:
- organization
- store
owner:
description: The owner of the resource, either `organization` or `store`.
type: string
enum:
- organization
- store
created_at:
type: string
description: The date and time a variation is created.
updated_at:
type: string
description: The date and time a variation is updated.
product_locales:
type: object
description: Product Experience Manager supports localization of products and hierarchies. If your store supports multiple languages, you can localize product names and descriptions. You can have as many locales as you want.
additionalProperties:
description: A [three-letter language code](https://www.iso.org/iso-639-language-code) that represents the name of language you have used.
type: object
required:
- name
properties:
name:
type: string
description: A localized name for the product.
description:
type: string
description: A localized description for the product.
multi_options:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
description: A unique identifier generated when an option is created.
type: string
type:
description: This represents the type of resource object being returned. Always `product-variation-option`.
type: string
enum:
- product-variation-option
attributes:
type: object
additionalProperties: false
properties:
name:
description: A human-recognizable identifier for the option, also used in the SLUG for child products. Option names can only contain A to Z, a to z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed.
type: string
description:
description: A human-recognizable description for the option.
type: string
sort_order:
description: The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. The variation with the highest value of `sort_order` is displayed first. For example, a variation with a `sort_order` value of 3 appears before a variation with a `sort_order` value of 2. You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, including, zero or negative numbers. You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.
type: integer
meta:
type: object
properties:
owner:
description: The owner of a resource, either `organization` or `store`.
type: string
enum:
- organization
- store
created_at:
type: string
description: The date and time an option is created.
example: '2020-09-22T09:00:00.000Z'
format: date-time
updated_at:
type: string
description: The date and time an option is updated.
example: '2020-09-22T09:00:00.000Z'
format: date-time
links:
$ref: '#/components/schemas/multi_links'
meta:
type: object
properties:
results:
description: Contains the results for the entire collection.
type: object
properties:
total:
description: Total number of results for the entire collection.
type: integer
example: 3
single_option:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- type
- attributes
- meta
properties:
id:
description: The unique identifier generated when an option is created.
type: string
type:
description: This represents the type of resource object being returned. Always `product-variation-option`.
type: string
enum:
- product-variation-option
attributes:
type: object
description: A variation option represents an option for selection for a single product-variation. For example, if your variation is `color`, you might have three possible options; red, green, and blue.
additionalProperties: false
properties:
name:
description: A human-recognizable identifier for the option, also used in the SLUG for child products. Option names can only contain A to Z, a to z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed.
type: string
description:
description: A human-recognizable description for the option.
type: string
sort_order:
description: The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. The variation with the highest value of `sort_order` is displayed first. For example, a variation with a `sort_order` value of 3 appears before a variation with a `sort_order` value of 2. You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, including, zero or negative numbers. You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.
type: integer
meta:
type: object
properties:
owner:
description: The owner of a resource, either `organization` or `store`.
type: string
enum:
- organization
- store
created_at:
type: string
description: The date and time an option is created.
example: '2020-09-22T09:00:00.000Z'
format: date-time
updated_at:
type: string
description: The date and time an option is updated.
example: '2020-09-22T09:00:00.000Z'
format: date-time
modifiers:
type: array
description: The modifiers associated with this option.
items:
type: object
properties:
id:
type: string
description: A unique identifier generated when a modifier is created.
type:
type: string
description: The type of modifier.
enum:
- commodity_type
- status
- price
- name_append
- name_prepend
- name_equals
- sku_append
- sku_prepend
- sku_equals
- sku_builder
- slug_append
- slug_prepend
- slug_equals
- slug_builder
- description_append
- description_prepend
- description_equals
- custom_inputs_equals
- build_rules_equals
- locales_equals
- upc_ean_equals
- mpn_equals
- external_ref_equals
value:
type: string
nullable: true
description: Required for non-builder modifiers. The value of the modifier type.
seek:
type: string
nullable: true
description: Required for builder modifiers. The sub-string to find and replace.
set:
type: string
nullable: true
description: Required for builder modifiers. The value to replace matches of the seek string.
owner:
type: string
nullable: true
description: The owner of the modifier, either `organization` or `store`.
enum:
- organization
- store
multi_modifiers:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
description: A unique identifier for a modifier that is generated automatically when a modifier is created.
type: string
type:
description: This represents the type of resource object being returned. Always `product-variation-modifier`.
type: string
enum:
- product-variation-modifier
attributes:
type: object
additionalProperties: false
properties:
type:
description: 'You can specify different modifiers for different options in a variation. When you build child products using options in variations, the properties of a child products depends on the modifier set for the options that are applied to the child product. The table below describes the different types of modifiers.
| Modifier | Data Type | Effect |
| :--- | :--- | :--- |
| `name_equals` | `string` | Overrides the name of the child product with the name specified by the modifier. |
| `name_append` | `string` | Appends the string specified in the modifier to the name of the child product. |
| `name_prepend` | `string` | Prepends the string specified in the modifier to the name of the child product. |
| `description_equals` | `string` | Overrides the description of the child product. |
| `description_append` | `string` | Appends the string specified in the modifier to the description of the child product. |
| `description_prepend` | `string` | Prepends the string specified in the modifier to the product description of the child product. |
| `commodity_type` | `string` | Sets the commodity type of the child product, such as `physical` or `digital`. |
| `price` | `string` | Allows application of price modifiers (`price_increment`, `price_decrement`, and `price_equals`) to the child products. |
| `price_increment` | `string` | Increases the price of the child product. |
| `price_decrement` | `string` | Decreases the price of the child product. |
| `price_equals` | `string` | Sets the price of a child product to the amount you specify. |
| `slug_append` | `string` | Appends the string specified in the modifier to the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `slug_prepend` | `string` | Prepends the string specified in the modifier to the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `slug_builder` | `string`| Sets a part of the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `sku_equals` | `string` | Sets the SKU of the child product. |
| `sku_append` | `string` | Appends the string specified in the modifier to the SKU of the child product. |
| `sku_prepend` | `string` | Prepends the string specified in the modifier to the SKU of the child product. |
| `sku_builder` | `string` | Sets a part of the SKU of the child product. |
| `status` | `string` | Sets the status of the child product, such as `draft` or `live`. |
'
type: string
enum:
- commodity_type
- status
- price
- name_append
- name_prepend
- name_equals
- sku_append
- sku_prepend
- sku_equals
- sku_builder
- slug_append
- slug_prepend
- slug_equals
- slug_builder
- description_append
- description_prepend
- description_equals
- custom_inputs_equals
- build_rules_equals
- locales_equals
- upc_ean_equals
- mpn_equals
- external_ref_equals
value:
description: Required for non-builder modifiers. The value of the modifier type.
type: string
seek:
description: Required for builder modifiers. The sub-string to find and replace enclosed in curly brackets for `slug_builder` and `sku_builder`.
type: string
set:
description: Required for builder modifiers. The value to replace matches the `seek` string for `slug_builder` and `sku_builder`.
type: string
reference_name:
description: The name of the modifier.
type: string
meta:
type: object
properties:
owner:
description: The owner of a resource, either `organization` or `store`.
type: string
enum:
- store
- organization
links:
$ref: '#/components/schemas/multi_links'
meta:
type: object
properties:
results:
type: object
description: Contains the results for the entire collection.
properties:
total:
description: Total number of results for the entire collection.
type: integer
example: 3
single_modifier:
type: object
properties:
data:
type: object
properties:
id:
description: A unique identifier for a modifier that is generated automatically when a modifier is created.
type: string
type:
description: This represents the type of resource object being returned. Always `product-variation-modifier`.
type: string
enum:
- product-variation-modifier
attributes:
type: object
additionalProperties: false
properties:
type:
description: 'You can specify different modifiers for different options in a variation. When you build child products using options in variations, the properties of a child products depends on the modifier set for the options that are applied to the child product. The table below describes the different types of modifiers.
| Modifier | Data Type | Effect |
| :--- | :--- | :--- |
| `name_equals` | `string` | Overrides the name of the child product with the name specified by the modifier. |
| `name_append` | `string` | Appends the string specified in the modifier to the name of the child product. |
| `name_prepend` | `string` | Prepends the string specified in the modifier to the name of the child product. |
| `description_equals` | `string` | Overrides the description of the child product. |
| `description_append` | `string` | Appends the string specified in the modifier to the description of the child product. |
| `description_prepend` | `string` | Prepends the string specified in the modifier to the product description of the child product. |
| `commodity_type` | `string` | Sets the commodity type of the child product, such as `physical` or `digital`. |
| `price` | `string` | Allows application of price modifiers (`price_increment`, `price_decrement`, and `price_equals`) to the child products. |
| `price_increment` | `string` | Increases the price of the child product. |
| `price_decrement` | `string` | Decreases the price of the child product. |
| `price_equals` | `string` | Sets the price of a child product to the amount you specify. |
| `slug_append` | `string` | Appends the string specified in the modifier to the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `slug_prepend` | `string` | Prepends the string specified in the modifier to the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `slug_builder` | `string`| Sets a part of the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `sku_equals` | `string` | Sets the SKU of the child product. |
| `sku_append` | `string` | Appends the string specified in the modifier to the SKU of the child product. |
| `sku_prepend` | `string` | Prepends the string specified in the modifier to the SKU of the child product. |
| `sku_builder` | `string` | Sets a part of the SKU of the child product. |
| `status` | `string` | Sets the status of the child product, such as `draft` or `live`. |
'
type: string
enum:
- commodity_type
- status
- price
- name_append
- name_prepend
- name_equals
- sku_append
- sku_prepend
- sku_equals
- sku_builder
- slug_append
- slug_prepend
- slug_equals
- slug_builder
- description_append
- description_prepend
- description_equals
- custom_inputs_equals
- build_rules_equals
- locales_equals
- upc_ean_equals
- mpn_equals
- external_ref_equals
value:
description: Required for non-builder modifiers. The value of the modifier type.
type: string
seek:
description: Required for builder modifiers. The sub-string to find and replace enclosed in curly brackets for `slug_builder` and `sku_builder`.
type: string
set:
description: Required for builder modifiers. The value to replace matches the `seek` string for `slug_builder` and `sku_builder`.
type: string
reference_name:
description: The name of the modifier.
type: string
meta:
type: object
description: The owner of the resource, either `organization` or `store`.
properties:
owner:
type: string
enum:
- organization
- store
variations_response:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
description: A unique identifier generated when a variation is created.
type: string
type:
description: This represents the type of resource object being returned. Always `product-variation`.
type: string
enum:
- product-variation
meta:
type: object
properties:
created_at:
description: The date and time a resource is created.
type: string
example: '2020-09-22T09:00:00.000Z'
format: date-time
create_option:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
properties:
type:
description: This represents the type of resource object being returned. Always `product-variation-option`.
type: string
enum:
- product-variation-option
attributes:
type: object
additionalProperties: false
required:
- name
- description
properties:
name:
description: A human recognizable identifier for the option, also used in the SLUG for child products. Option names can only contain A to Z, a to z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed.
type: string
sort_order:
description: "By default, variations and variation options are sorted alphabetically. You can use the `sort_order` attribute to sort the order of your variation and variation options in the `variation_matrix`. \n \n The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. \n \n The variation option with the highest value of `sort_order` is displayed first. For example, a variation option with a `sort_order` value of `3` appears before a variation option with a `sort_order` value of `2`. You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, and so on, zero or negative numbers. \n \n You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.\n \n You must rebuild your products for the sort order changes to take effect.\n"
type: integer
description:
description: A description of a product variation option.
type: string
job:
type: object
required:
- id
- type
- attributes
- meta
properties:
id:
description: A unique identifier generated when a job is created.
type: string
type:
description: This represents the type of resource object being returned. Always `pim-job`.
type: string
enum:
- pim-job
attributes:
type: object
required:
- started_at
- completed_at
- created_at
- updated_at
- type
- status
properties:
started_at:
description: The date and time a job is started.
type: string
example: '2020-09-22T09:00:00.000Z'
format: date-time
nullable: true
completed_at:
type: string
example: '2020-09-22T09:00:00.000Z'
format: date-time
nullable: true
description: The date and time a job is completed.
created_at:
type: string
description: The date and time a job is created.
example: '2020-09-22T09:00:00.000Z'
format: date-time
updated_at:
type: string
description: The date and time a job is updated.
example: '2020-09-22T09:00:00.000Z'
format: date-time
type:
type: string
description: 'The status of a job.
* `pending` - Commerce has received the request but is currently busy processing other requests.
* `started` - Commerce has started processing the job.
* `success` - The job has successfully completed.
* `failed` - The job has failed.
'
enum:
- child-products
- product-import
- product-export
- hierarchy-duplicate
- pricebook-import
- pricebook-delete
- hierarchy-delete
- indexing-job
status:
type: string
enum:
- pending
- cancelled
- cancelling
- started
- success
- failed
meta:
type: object
required:
- x_request_id
properties:
x_request_id:
type: string
description: Applies to all job types. A unique request ID is generated when a job is created.
copied_from:
type: string
description: Applies to `hierarchy-duplicate` job types. The ID of the original hierarchy that you duplicated.
hierarchy_id:
type: string
description: Applies to `hierarchy-duplicate` job types. The duplicated hierarchy ID.
file_locations:
type: array
nullable: true
description: If the job type is `product_export`, a link to the file is created when running a job.
items:
type: string
filter:
type: string
nullable: true
description: The entities included in the job. For example, if the job type is `product-export`, the PXM products included in the export.
multi_variations:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
description: A unique identifier for a variation.
type: string
type:
description: This represents the type of resource object being returned. Always `product-variation`.
type: string
enum:
- product-variation
attributes:
type: object
additionalProperties: false
properties:
name:
description: The name of a variation.
type: string
sort_order:
description: The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. The variation with the highest value of `sort_order` is displayed first. For example, a variation with a `sort_order` value of 3 appears before a variation with a `sort_order` value of 2. You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, including, zero or negative numbers. You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.
type: integer
meta:
type: object
properties:
options:
type: array
items:
type: object
description: The options available for this variation.
properties:
id:
type: string
description: A unique ID that is generated when an option is created.
name:
type: string
description: A human recognizable identifier for the option, also used in the SLUG for child products. Option names can only contain A to Z, a to z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed.
description:
type: string
description: A human recognizable description of the option.
created_at:
type: string
description: The date and time an option is created.
example: '2020-09-22T09:00:00.000Z'
format: date-time
updated_at:
type: string
description: The date and time an option is updated.
example: '2020-09-22T09:00:00.000Z'
format: date-time
sort_order:
description: The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. The variation with the highest value of `sort_order` is displayed first. For example, a variation with a `sort_order` value of 3 appears before a variation with a `sort_order` value of 2. You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, including, zero or negative numbers. You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.
type: integer
modifiers:
type: array
description: The modifiers associated with this option.
items:
type: object
properties:
id:
type: string
description: A unique identifier generated when a modifier is created.
type:
type: string
description: The type of modifier.
enum:
- commodity_type
- status
- price
- name_append
- name_prepend
- name_equals
- sku_append
- sku_prepend
- sku_equals
- sku_builder
- slug_append
- slug_prepend
- slug_equals
- slug_builder
- description_append
- description_prepend
- description_equals
- custom_inputs_equals
- build_rules_equals
- locales_equals
- upc_ean_equals
- mpn_equals
- external_ref_equals
value:
type: string
nullable: true
description: Required for non-builder modifiers. The value of the modifier type.
seek:
type: string
nullable: true
description: Required for builder modifiers. The sub-string to find and replace.
set:
type: string
nullable: true
description: Required for builder modifiers. The value to replace matches of the seek string.
owner:
type: string
nullable: true
description: The owner of the modifier, either `organization` or `store`.
enum:
- organization
- store
owner:
type: string
description: The owner of the resource, either `organization` or `store`.
enum:
- organization
- store
created_at:
type: string
description: The date and time a variation is created.
example: '2020-09-22T09:00:00.000Z'
format: date-time
updated_at:
type: string
description: The date and time a variation is updated.
example: '2020-09-22T09:00:00.000Z'
format: date-time
links:
$ref: '#/components/schemas/multi_links'
meta:
type: object
properties:
results:
description: Contains the results for the entire collection.
type: object
properties:
total:
description: Total number of results for the entire collection.
type: integer
example: 3
product_variations_request:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
description: The ID of the product variation.
type:
type: string
enum:
- product-variation
description: This represents the type of resource being returned. Always `product-variation`.
created_option:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
properties:
id:
description: A unique identifier that is generated when an option is created.
type: string
type:
description: This represents the type of resource object being returned. Always `product-variation-option`.
type: string
enum:
- product-variation-option
attributes:
type: object
additionalProperties: false
properties:
name:
description: A human-recognizable identifier for the option, also used in the SLUG for child products. Option names can only contain A to Z, a to z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed.
type: string
description:
description: A human-recognizable description for the option.
type: string
sort_order:
description: The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. The variation with the highest value of `sort_order` is displayed first. For example, a variation with a `sort_order` value of 3 appears before a variation with a `sort_order` value of 2. You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, including, zero or negative numbers. You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.
type: integer
meta:
type: object
properties:
owner:
description: The owner of a resource, either `organization` or `store`.
type: string
enum:
- organization
- store
created_at:
type: string
description: The date and time an option is created.
example: '2020-09-22T09:00:00.000Z'
format: date-time
updated_at:
type: string
description: The date and time an option is updated.
example: '2020-09-22T09:00:00.000Z'
format: date-time
product_response:
type: object
properties:
id:
description: A unique product ID that is generated when you create the product.
type: string
type:
description: This represents the type of resource object being returned. Always `product`.
type: string
enum:
- product
attributes:
type: object
additionalProperties: false
properties:
name:
description: A name for the product.
type: string
description:
description: A description for the product.
type: string
slug:
description: A label for the product that is used in the URL paths. A slug can contain A to Z, a to z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. By default, the product name is used as the slug.
type: string
sku:
description: The unique stock keeping unit of the product.
type: string
status:
description: The status for the product, either `draft` or `live`.
type: string
enum:
- live
- draft
commodity_type:
description: The commodity type, either `physical` or `digital`.
type: string
enum:
- physical
- digital
upc_ean:
description: The universal product code or european article number of the product.
type: string
mpn:
description: The manufacturer part number of the product.
type: string
external_ref:
description: The unique attribute associated with the product. This could be an external reference from a separate company system, for example. The maximum length is 2048 characters.
type: string
locales:
$ref: '#/components/schemas/product_locales'
tags:
description: You can use product tags to store or assign a key word against a product. The product tag can then be used to describe or label that product. Using product tags means that you can group your products together, for example, by brand, category, subcategory, colors, types, industries, and so on. A product can have up to 20 tags. A product tag can be up to 255 characters. Product tags must not contain any spaces or commas.
type: array
items:
type: string
shopper_attributes:
$ref: '#/components/schemas/shopper_attributes'
admin_attributes:
$ref: '#/components/schemas/admin_attributes'
extensions:
type: object
additionalProperties:
type: object
additionalProperties:
oneOf:
- type: string
nullable: true
- type: number
- type: boolean
custom_inputs:
$ref: '#/components/schemas/product_custom_inputs'
build_rules:
$ref: '#/components/schemas/product_build_rules'
components:
$ref: '#/components/schemas/product_bundle_components'
meta:
type: object
properties:
created_at:
description: The date and time a product is created.
type: string
example: '2020-09-22T09:00:00.000Z'
format: date-time
updated_at:
description: The date and time a product is updated.
type: string
example: '2020-09-22T09:00:00.000Z'
format: date-time
owner:
description: The resource owner, either `organization` or `store`.
type: string
enum:
- organization
- store
variations:
description: A product's variations and the options defined for each variation. If you have specified `build_rules`, only the child products included in the `build_rules` are specified.
type: array
items:
type: object
properties:
id:
type: string
description: A unique ID generated when a variation is created.
name:
type: string
description: The name of a variation.
sort_order:
type: integer
description: The sort order of the variation.
options:
type: array
items:
type: object
description: The options available for this variation.
properties:
id:
type: string
description: A unique ID that is generated an option is created.
name:
type: string
description: The name of an option.
description:
type: string
description: A description of an option.
sort_order:
type: integer
description: The sort order of the option.
custom_relationships:
description: Custom relationship slugs that are attached to the product.
type: array
child_variations:
description: A child product's variations and the option defined for each variation. This details the variation and options specific to a child product.
type: array
nullable: true
items:
type: object
properties:
id:
type: string
description: A unique ID generated when a variation is created.
name:
type: string
description: The name of a variation.
sort_order:
description: The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. The variation with the highest value of `sort_order` is displayed first. For example, a variation with a `sort_order` value of 3 appears before a variation with a `sort_order` value of 2. You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, including, zero or negative numbers. You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.
type: integer
options:
type: array
nullable: true
description: This will be unset for child product variations.
items:
type: object
description: The options available for this variation.
properties:
id:
type: string
description: A unique ID that is generated an option is created.
name:
type: string
description: The name of an option.
description:
type: string
description: A description of an option.
sort_order:
type: integer
description: The sort order of the option.
option:
type: object
description: The options available for this variation.
properties:
id:
type: string
description: A unique ID that is generated an option is created.
name:
type: string
description: The name of an option.
description:
type: string
description: A description of an option.
sort_order:
type: integer
description: The sort order of the option.
product_types:
description: "One of the following product types: \n\n- `standard` - A `standard` product is a standalone product.\n- `parent` - A `parent` product is a product that has child products that have been built using the `Build Child Products` endpoint. \n- `child` - When you configure product variations and variation options for `parent` products, the `child` products derived from the `parent` products are automatically created in Commerce.\n- `bundle` - A `bundle` is a purchasable product, comprising one or more standalone products (in other words, components) to be sold together.\n"
type: array
items:
type: string
enum:
- parent
- child
- bundle
- standard
variation_matrix:
description: The child products defined for a product. The order of the variations in the `variation_matrix` is the order of the variations in the array when the variations were linked to the product. For example, the first variation in the `variation_matrix` corresponds to the first variation in the array, and so on. You can use the `sort_order`attribute to sort the order of your variation and variation options in the `variation_matrix` object. See [Sorting the Order of Variations and Options](/docs/api/pxm/products/variations#sorting-the-order-of-variations-and-options) If no variations are defined for a product, the `variation_matrix` is empty.
type: object
additionalProperties: true
relationships:
description: Relationships are established between different product entities. For example, a `bundle` product and a `child` product are related to a `parent` product, as both are associated with it.
type: object
additionalProperties:
type: object
properties:
data:
oneOf:
- type: array
items:
type: object
properties:
id:
description: A unique identifier for a resource.
type: string
type:
description: This represents the type of resource object being returned.
type: string
- type: object
nullable: true
properties:
id:
description: A unique identifier for a resource.
type: string
type:
description: This represents the type of resource object being returned.
type: string
links:
description: "Links are used to allow you to move between requests. Single entities use a `self` parameter with a link to that specific resource. Sometimes, there are not enough entities for a project to fill multiple pages. In this situation, we return some defaults.\n\n | Property | Description |\n | :--- | :--- |\n | `current` | Always the current page. |\n | `first` | Always the first page. |\n | `last` | `null` if there is only one page. |\n | `prev` | `null` if the user is on the first page. |\n | `next` | `null` if there is only one page. |\n"
type: object
additionalProperties:
type: string
product_bundle_components:
type: object
description: With Product Experience Manager, you can create and manage bundles. A bundle is a purchasable product, consisting of one or more products that you want to sell together. You can create multiple components within a bundle. Each component must have at least one or more options. Each option is a product and a quantity. See [Bundles](/docs/api/pxm/products/products#bundles).
additionalProperties:
description: The name of the component, such as `games`. The `bundle_configuration` uses the component name to reference a component. A component name should be relatively short and must not contain any special characters.
type: object
properties:
name:
type: string
description: The component name. The component name is the name that is displayed in your storefront.
options:
type: array
description: The product options included in a component. This can be the ID of another bundle.
items:
type: object
properties:
id:
type: string
description: The unique ID of the product you want to add to a component.
type:
type: string
description: This represents the type of object being returned. Always `product`.
quantity:
type: integer
minimum: 1
description: The number of this product option that a shopper must purchase.
min:
type: integer
minimum: 1
description: The minimum quantity of this product option that a shopper can select. Must be 1 or greater. If specified, max must also be specified.
max:
type: integer
minimum: 1
description: The maximum quantity of this product option that a shopper can select. Must be 1 or greater and greater than or equal to min. If specified, min must also be specified.
sort_order:
type: integer
description: The sort order of the options. The `create a bundle` and `update a bundle` endpoints do not sort the options. You can use the `sort_order` attribute when programming your storefront to display the options in the order that you want.
default:
description: Whether the product option is a default option in a bundle. Shoppers can select a bundle that specifies a default list of product options. See [Dynamic Bundles](/docs/api/pxm/products/products#dynamic-bundles).
type: boolean
product_should_be_substituted_with_child:
description: Whether the product option should be substituted with a child product.
type: boolean
excluded_children:
description: The IDs of child products that are excluded from the bundle option.
type: array
items:
type: string
min:
type: integer
description: The minimum number of product options a shopper can select from this component.
max:
type: integer
description: The maximum number of product options a shopper can select from this component.
sort_order:
type: integer
description: The sort order of the components. The `create a bundle` and `update a bundle` endpoints do not sort the components. You can use the `sort_order` attribute when programming your storefront to display the components in the order that you want.
update_modifier:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
- id
properties:
type:
description: This represents the type of resource object being returned. Always `product-variation-modifier`.
type: string
enum:
- product-variation-modifier
attributes:
type: object
required:
- type
additionalProperties: false
properties:
type:
description: 'You can specify different modifiers for different options in a variation. When you build child products using options in variations, the properties of a child products depends on the modifier set for the options that are applied to the child product. The table below describes the different types of modifiers.
| Modifier | Data Type | Effect |
| :--- | :--- | :--- |
| `name_equals` | `string` | Overrides the name of the child product with the name specified by the modifier. |
| `name_append` | `string` | Appends the string specified in the modifier to the name of the child product. |
| `name_prepend` | `string` | Prepends the string specified in the modifier to the name of the child product. |
| `description_equals` | `string` | Overrides the description of the child product. |
| `description_append` | `string` | Appends the string specified in the modifier to the description of the child product. |
| `description_prepend` | `string` | Prepends the string specified in the modifier to the product description of the child product. |
| `commodity_type` | `string` | Sets the commodity type of the child product, such as `physical` or `digital`. |
| `price` | `string` | Allows application of price modifiers (`price_increment`, `price_decrement`, and `price_equals`) to the child products. |
| `price_increment` | `string` | Increases the price of the child product. |
| `price_decrement` | `string` | Decreases the price of the child product. |
| `price_equals` | `string` | Sets the price of a child product to the amount you specify. |
| `slug_append` | `string` | Appends the string specified in the modifier to the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `slug_prepend` | `string` | Prepends the string specified in the modifier to the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `slug_builder` | `string`| Sets a part of the slug of the child product. Can only contain A-Z, a-z, 0 to 9, hyphen, underscore, and period. Spaces or other special characters like ^, [], *, and $ are not allowed. However, for the `slug-builder` modifier, you can use `{}` in the `seek` field, for example, `"seek": :{COLOR}"`. |
| `sku_equals` | `string` | Sets the SKU of the child product. |
| `sku_append` | `string` | Appends the string specified in the modifier to the SKU of the child product. |
| `sku_prepend` | `string` | Prepends the string specified in the modifier to the SKU of the child product. |
| `sku_builder` | `string` | Sets a part of the SKU of the child product. |
| `status` | `string` | Sets the status of the child product, such as `draft` or `live`. |
'
type: string
enum:
- commodity_type
- status
- price
- name_append
- name_prepend
- name_equals
- sku_append
- sku_prepend
- sku_equals
- sku_builder
- slug_append
- slug_prepend
- slug_equals
- slug_builder
- description_append
- description_prepend
- description_equals
- custom_inputs_equals
- build_rules_equals
- locales_equals
- upc_ean_equals
- mpn_equals
- external_ref_equals
value:
description: Required for non-builder modifiers. The value of the modifier type.
type: string
seek:
description: Required for builder modifiers. The sub-string to find and replace enclosed in curly brackets for `slug_builder` and `sku_builder`.
type: string
set:
description: Required for builder modifiers. The value to replace matches the `seek` string for `slug_builder` and `sku_builder`.
type: string
reference_name:
description: The name of the modifier.
type: string
id:
type: string
description: The unique identifier of the modifier. Must match the modifier ID specified in the request path.
example: 00000000-0000-0000-0000-000000000000
update_variation:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
- id
properties:
type:
description: This represents the type of resource object being returned. Always `product-variation`.
type: string
enum:
- product-variation
attributes:
type: object
additionalProperties: false
properties:
name:
description: The variation name.
type: string
sort_order:
description: "The sort order value is visible when you add the variations and variation options to your catalogs. You can then use the `sort_order` value to program your storefront to display the variation options in the order that you want. \n \n The variation with the highest value of `sort_order` is displayed first. For example, a variation with a `sort_order` value of 3 appears before a variation with a `sort_order` value of 2. \n \n You can specify any numbers that you want. You can use 1, 2, 3, or 100, 90, 80, including, zero or negative numbers. You can set `sort_order` to either `null` or omit it entirely from the request if you wish to remove an existing `sort_order` attribute.\n \n You must rebuild your products for the sort order changes to take effect.\n"
type: integer
id:
type: string
description: The unique identifier of the variation. Must match the variation ID specified in the request path.
example: 00000000-0000-0000-0000-000000000000
parameters:
variation_id:
name: variationID
in: path
schema:
type: string
example: 00000000-0000-0000-0000-000000000000
x-postman-example: '{{variationID}}'
required: true
description: A unique identifier for the variation.
modifier_id:
name: modifierID
in: path
schema:
type: string
example: 00000000-0000-0000-0000-000000000000
required: true
description: A unique identifier for the modifier.
option_id:
name: optionID
in: path
schema:
type: string
example: 00000000-0000-0000-0000-000000000000
required: true
description: A unique identifier for the option.
product_id:
name: productID
in: path
schema:
type: string
example: 00000000-0000-0000-0000-000000000000
x-postman-example: '{{productID}}'
required: true
description: A unique identifier for the product.
page_limit:
name: page[limit]
in: query
description: The number of records per page. The maximum limit is 100.
schema:
type: integer
minimum: 0
maximum: 10000
format: int64
example: 10
page_offset:
name: page[offset]
in: query
description: The number of records to offset the results by.
schema:
type: integer
minimum: 0
maximum: 10000
format: int64
example: 0
responses:
write_conflict:
description: Write conflict detected
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
internal-server-error:
value:
errors:
- title: Conflict
status: '409'
detail: write conflict detected
bad_request:
description: Bad request. The request failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
bad-request:
value:
errors:
- title: Bad Request
detail: Could not parse the supplied filter
status: '400'
internal:
description: Internal server error. There was a system failure in the platform.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
internal-server-error:
value:
errors:
- status: '500'
title: Internal Server Error
detail: There was an internal server error, you can report with your request id.
request_id: 635da56d-75a1-43cd-b696-7ab119756b3a
forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
internal-server-error:
value:
errors:
- title: Forbidden
status: '403'
detail: entity owned by organization
not_found:
description: Bad Request. Not Found.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
internal-server-error:
value:
errors:
- title: Not Found
status: '404'
unprocessable_entity:
description: Bad request. The request failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
failed-validation:
value:
errors:
- title: Failed Validation
status: '422'
detail: can not be empty
securitySchemes:
BearerToken:
type: http
scheme: bearer