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 Hierarchies 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: Hierarchies
description: "```mdx-code-block\nimport HierarchyOverview from '/docs/partials/pxm/hierarchies/hierarchies.mdx';\nimport HierarchyCatalog from '/docs/partials/pxm/hierarchies/hierarchycatalogs.mdx';\n\n\n\n## Creating Hierarchies and Nodes\n\nYou can create the **Major Appliances** hierarchy by performing the following steps.\n\n1. Using [**Create a Hierarchy**](/docs/api/pxm/products/create-hierarchy), create a hierarchy whose name is **Major Appliances**. Each hierarchy has a hierarchy ID. In other words, the hierarchy ID is the ID of the root node.\n1. Using [**Create a Node in a hierarchy**](/docs/api/pxm/products/create-node), create the following child nodes. When you create a node in a hierarchy, by default, the node is a child of the root node. Specify `sort_order` to configure the order of the nodes.\n - **Ranges**\n - **Refrigerators**\n - **Dishwashers**\n1. Using [**Create a Node in a hierarchy**](/docs/api/pxm/products/create-node), create the **Electric Ranges** node, specifying **Ranges** as the parent node.\n1. Using [**Create a Node in a hierarchy**](/docs/api/pxm/products/create-node), create the following nodes, specifying **Electric Ranges** as the parent node.\n - **Electric Ranges 24ˮ**\n - **Electric Ranges 30ˮ**\n - **Double Oven**\n1. Using [**Create a Node in a hierarchy**](/docs/api/pxm/products/create-node), create the **Gas Ranges** node, specifying **Ranges** as the parent node.\n1. Using [**Create a Node in a hierarchy**](/docs/api/pxm/products/create-node), create the following nodes, specifying **Gas Ranges** as the parent node.\n - **Gas Ranges 24ˮ**\n - **Gas Ranges 30ˮ**\n - **Gas Ranges 32\"**\n - **Double Oven**\n1. Using [**Create a Node in a hierarchy**](/docs/api/pxm/products/create-node), create the following nodes, specifying **Dishwashers** as the parent node.\n - **Built-in**\n - **Standalone**\n\n## Hierarchies and Catalogs\n\n\n\n```\n"
paths:
/pcm/hierarchies:
post:
summary: Create a hierarchy
description: '```mdx-code-block
import CASummary from ''/docs/partials/pxm/custom-attributes/custom-attribute-spec-summary.mdx'';
Creates a hierarchy with a name, description, and slug to organize products in your catalog.
```
'
operationId: createHierarchy
tags:
- Hierarchies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/create_hierarchy'
examples:
create-hierarchy:
$ref: '#/components/examples/create_hierarchy'
required: true
responses:
'201':
description: Returns a created hierarchy with the following attributes.
content:
application/json:
schema:
$ref: '#/components/schemas/single_hierarchy'
examples:
created-hierarchy:
$ref: '#/components/examples/hierarchy_created'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
get:
operationId: getHierarchy
parameters:
- $ref: '#/components/parameters/page_offset'
- $ref: '#/components/parameters/page_limit'
- $ref: '#/components/parameters/filter_nodes'
summary: Get all hierarchies
description: "Get all hierarchies\n\n#### Pagination\n\nThis endpoint supports offset-based pagination using `page[offset]` and `page[limit]` query parameters.\n\n:::caution Planned pagination changes — on or after 1 September 2026\n\nThe pagination links returned by this endpoint currently differ from the Elastic Path Commerce Cloud platform standard. Specifically, the `current` link is not returned, `first`/`last` are not always present, `prev` is incorrectly omitted on the second page, and `next` is incorrectly omitted on the second-to-last page.\n\nOn or after **1 September 2026**, this endpoint will be updated so that `current` and `first` are always present, `last` is present on every page except the final page, `next` is present on every page except the last, and `prev` is present on every page except the first. See the [links](#links) schema for full details.\n\nIf your integration iterates through pages using these links, please verify that it will handle the updated behaviour correctly before this date.\n\n:::\n\n#### Filtering\n \nMany Commerce API endpoints support filtering. The general syntax is described in [**Filtering**](/guides/Getting-Started/filtering).\n\nThe following attributes and operators are supported.\n\n| Operator | Attribute | Description | Example |\n|----------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|------------------------------------------|\n| `eq` | `id`, `hierarchy_id`, `owner`, `parent_id`, `name`, `slug`, `description`, `has_children`, `created_at`, `updated_at`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.id`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Equals. Checks if the value of the attribute matches the specified value. | `filter=eq(name,some-name)`, `filter=eq(locales.fr-FR.name,Nom-du-produit)` |\n| `in` | `id`, `hierarchy_id`, `parent_id`, `breadcrumbs.id` | Checks if the value of the attribute is included in the specified list. | `filter=in(id,1,2,3,4)` |\n| `lt`, `le`, `gt`, `ge` | `id`, `hierarchy_id`, `parent_id`, `created_at`, `updated_at` | Comparison operators. `lt`: Less than, `le`: Less than or equal to, `gt`: Greater than, `ge`: Greater than or equal to. | `filter=lt(id,100)`, `filter=ge(created_at,2022-01-01)` |\n| `like` | `name`, `slug`, `description`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Like. Checks if the attribute contains the specified string (wildcards supported). | `filter=like(name,*some-name*)`, `filter=like(locales.es-ES.description,*descripción*)` |\n"
tags:
- Hierarchies
responses:
'200':
description: Returns a list of all hierarchies.
content:
application/json:
schema:
$ref: '#/components/schemas/multi_hierarchy'
examples:
list-hierarchies:
$ref: '#/components/examples/resp_multi_hierarchy'
'400':
$ref: '#/components/responses/bad_request'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/nodes:
get:
parameters:
- $ref: '#/components/parameters/page_offset'
- $ref: '#/components/parameters/filter_nodes'
- $ref: '#/components/parameters/page_limit'
- $ref: '#/components/parameters/include_hierarchies'
summary: List all nodes
operationId: getAllNodes
description: 'A fully paginated view of all nodes in all hierarchies regardless of depth.
#### Filtering
Many Commerce API endpoints support filtering. The general syntax is described in [**Filtering**](/guides/Getting-Started/filtering).
The following attributes and operators are supported.
| Operator | Attribute | Description | Example |
|----------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|------------------------------------------|
| `eq` | `id`, `hierarchy_id`, `owner`, `parent_id`, `name`, `slug`, `description`, `has_children`, `created_at`, `updated_at`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.id`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Equals. Checks if the value of the attribute matches the specified value. | `filter=eq(name,some-name)`, `filter=eq(locales.fr-FR.name,Nom-du-produit)` |
| `in` | `id`, `hierarchy_id`, `parent_id`, `breadcrumbs.id` | Checks if the value of the attribute is included in the specified list. | `filter=in(id,1,2,3,4)` |
| `lt`, `le`, `gt`, `ge` | `id`, `hierarchy_id`, `parent_id`, `created_at`, `updated_at` | Comparison operators. `lt`: Less than, `le`: Less than or equal to, `gt`: Greater than, `ge`: Greater than or equal to. | `filter=lt(id,100)`, `filter=ge(created_at,2022-01-01)` |
| `like` | `name`, `slug`, `description`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Like. Checks if the attribute contains the specified string (wildcards supported). | `filter=like(name,*some-name*)`, `filter=like(locales.es-ES.description,*descripción*)` |
| `ilike` | `name`, `slug`, `description`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Case-insensitive like. Same as `like` but ignores case when matching. | `filter=ilike(name,*some-name*)` |
'
tags:
- Hierarchies
responses:
'200':
description: Returns a list of nodes
content:
application/json:
schema:
$ref: '#/components/schemas/nodes_or_hierarchies'
examples:
get-all-nodes:
$ref: '#/components/examples/resp_multi_nodes_or_hierarchies'
'400':
$ref: '#/components/responses/bad_request'
'404':
$ref: '#/components/responses/not_found'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/{hierarchyID}:
get:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
summary: Get a hierarchy
description: Retrieves the specified hierarchy.
operationId: getHierarchyChild
tags:
- Hierarchies
responses:
'200':
description: Returns a hierarchy with the following attributes.
content:
application/json:
schema:
$ref: '#/components/schemas/single_hierarchy'
examples:
get-hierarchy:
$ref: '#/components/examples/hierarchy_created'
'400':
$ref: '#/components/responses/bad_request'
'404':
$ref: '#/components/responses/not_found'
'500':
$ref: '#/components/responses/internal'
put:
operationId: updateHierarchy
parameters:
- $ref: '#/components/parameters/hierarchy_id'
summary: Update a hierarchy
description: '```mdx-code-block
import CASummary from ''/docs/partials/pxm/custom-attributes/custom-attribute-spec-summary.mdx'';
Updates a hierarchy. You can do a partial update, where you specify only the field value to change.
```
'
tags:
- Hierarchies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/update_hierarchy'
examples:
update-hierarchy:
$ref: '#/components/examples/update_hierarchy'
required: true
responses:
'200':
description: Successfully returns the updated hierarchy
content:
application/json:
schema:
$ref: '#/components/schemas/single_hierarchy'
examples:
updated-hierarchy:
$ref: '#/components/examples/hierarchy_updated'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
delete:
operationId: deleteHierarchy
parameters:
- $ref: '#/components/parameters/hierarchy_id'
summary: Delete a hierarchy
description: Deletes the specified hierarchy and all its children.
tags:
- Hierarchies
responses:
'204':
description: No Content
'403':
$ref: '#/components/responses/forbidden'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/{hierarchyID}/nodes:
post:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
summary: Create a node
description: "```mdx-code-block\nimport CASummary from '/docs/partials/pxm/custom-attributes/custom-attribute-spec-summary.mdx';\n\nCreates a node in the specified hierarchy.\n\n \n```\n\n ### Sorting Nodes in a Hierarchy\n \n You can sort the order of your nodes, regardless of where the nodes are in the hierarchy.\n\n You can do this by adding a `meta` object to the body of your request and specifying a `sort_order` value.\n \n The node with the highest value of `sort_order` is displayed first. For example, a node with a `sort_order` value of `3` appears before a node with a `sort_order` value of `2`.\n\n - If you don’t provide `sort_order` when creating nodes, all child nodes in the response for Get a Node’s Children request are ordered by the `updated_at` time in descending order, with the most recently updated child node first.\n - If you set `sort_order` for only a few child nodes, the child nodes with a `sort_order` value appear first and then other child nodes appear in the order of `updated_at` time.\n\n You can also specify a `sort_order` when creating a node relationship.\n\n - If you create a node (**Node A**) with a `sort_order` and then you create a relationship for **Node A** with another node (**Node B**), the `sort_order` you specified when creating **Node A** is overwritten.\n - If you create **Node A** and then you create a relationship with **Node B** but do not configure a `sort_order`, the `sort_order` you specified when you created **Node A** is not overwritten.\n \n ### Curating Products in a Node\n \n You can curate the products in a node. Product curation allows you to promote specific products within each node of your hierarchies, enabling you to create unique product collections in your storefront. For example, you may find you have an abundance of cotton T-Shirts and you want to promote these products to the top of the product list. When a shopper navigates to T-shirts, the cotton T-Shirts are displayed first.\n \n You can do this by adding a `curated_products` attribute to the body of your request and adding an array of product IDs to the attribute. You should add the products IDs in the order you want them to be displayed in your node. The first product ID is displayed first in the product list.\n \n You can only curate 20 products or less. You cannot have more than 20 curated products.\n \n - The product IDs you provide must exist in the specified node.\n - If a curated product is removed from a node, the product is also removed from the curated_products list.\n - Once you have curated the products in a node, you can use the get node products endpoint to retrieve a list of curated products.\n \n You can then display your curated products in your catalogs using the following catalog endpoints.\n \n - Get a node in your latest catalog release.\n - Get a node in a catalog.\n - Get all nodes in your latest catalog release.\n - Get all nodes in a catalog.\n - Get node children in your latest catalog release.\n - Get node children in a catalog.\n"
operationId: createNode
tags:
- Hierarchies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/create_node'
examples:
create-node:
$ref: '#/components/examples/create_node'
responses:
'201':
description: Successfully returns the created node
content:
application/json:
schema:
$ref: '#/components/schemas/single_node'
examples:
created-node:
$ref: '#/components/examples/node_created'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
get:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/filter_nodes'
- $ref: '#/components/parameters/page_offset'
- $ref: '#/components/parameters/page_limit'
summary: Get all nodes in a hierarchy
description: 'A fully paginated view of all nodes in a hierarchy regardless of depth.
#### Filtering
Many Commerce API endpoints support filtering. The general syntax is described in [**Filtering**](/guides/Getting-Started/filtering).
The following attributes and operators are supported.
| Operator | Attribute | Description | Example |
|----------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|------------------------------------------|
| `eq` | `id`, `hierarchy_id`, `owner`, `parent_id`, `name`, `slug`, `description`, `has_children`, `created_at`, `updated_at`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.id`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Equals. Checks if the value of the attribute matches the specified value. | `filter=eq(name,some-name)`, `filter=eq(locales.fr-FR.name,Nom-du-produit)` |
| `in` | `id`, `hierarchy_id`, `parent_id`, `breadcrumbs.id` | Checks if the value of the attribute is included in the specified list. | `filter=in(id,1,2,3,4)` |
| `lt`, `le`, `gt`, `ge` | `id`, `hierarchy_id`, `parent_id`, `created_at`, `updated_at` | Comparison operators. `lt`: Less than, `le`: Less than or equal to, `gt`: Greater than, `ge`: Greater than or equal to. | `filter=lt(id,100)`, `filter=ge(created_at,2022-01-01)` |
| `like` | `name`, `slug`, `description`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Like. Checks if the attribute contains the specified string (wildcards supported). | `filter=like(name,*some-name*)`, `filter=like(locales.es-ES.description,*descripción*)` |
| `ilike` | `name`, `slug`, `description`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Case-insensitive like. Same as `like` but ignores case when matching. | `filter=ilike(name,*some-name*)` |
'
operationId: getAllNodesInHierarchy
tags:
- Hierarchies
responses:
'200':
description: Successfully returns the node's children
content:
application/json:
schema:
$ref: '#/components/schemas/multi_nodes'
examples:
get-all-nodes:
$ref: '#/components/examples/resp_multi_nodes'
'400':
$ref: '#/components/responses/bad_request'
'404':
$ref: '#/components/responses/not_found'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/{hierarchyID}/nodes/{nodeID}:
get:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/node_id'
summary: Get a node
description: Retrieves a node from a hierarchy.
operationId: getHierarchyNode
tags:
- Hierarchies
responses:
'200':
description: Returns a node with the following attributes.
content:
application/json:
schema:
$ref: '#/components/schemas/single_node'
examples:
get-node:
$ref: '#/components/examples/node_created'
'400':
$ref: '#/components/responses/bad_request'
'404':
$ref: '#/components/responses/not_found'
'500':
$ref: '#/components/responses/internal'
put:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/node_id'
summary: Update a node
description: "```mdx-code-block\nimport CASummary from '/docs/partials/pxm/custom-attributes/custom-attribute-spec-summary.mdx';\n\nUpdates the specified node in a hierarchy. You can do a partial update, where you specify only the field value to change.\n\n \n```\n\n### Sorting Nodes in a Hierarchy\n\nYou can sort the order of your nodes, regardless of where the nodes are in the hierarchy.\n \n The node with the highest value of sort_order is displayed first. For example, a node with a `sort_order` value of `3` appears before a node with a `sort_order` value of `2`.\n \n - If you don’t provide `sort_order` when creating nodes, all child nodes in the response for Get a Node’s Children request are ordered by the `updated_at` time in descending order, with the most recently updated child node first.\n - If you set `sort_order` for only a few child nodes or not all, the child nodes with a `sort_order` value appear first and then other child nodes appear in the order of `updated_at` time.\n \n You can also specify a sort_order when creating a node relationship.\n\n - If you update a node (**Node A**) with a `sort_order` and then you create a relationship for **Node A** with another node (**Node B**), the `sort_order` you specified when updating **Node A** is overwritten.\n - If you have updated **Node A** and then you create a relationship with **Node B** but do not configure a `sort_order`, the `sort_order` you specified when you updated **Node A** is not overwritten.\n \n ### Curating Products in a Node\n\n You can curate the products in a node. Product curation allows you to promote specific products within each node of your hierarchies, enabling you to create unique product collections in your storefront. For example, you may find you have an abundance of cotton T-Shirts and you want to promote these products to the top of the product list. When a shopper navigates to T-shirts, the cotton T-Shirts are displayed first.\n\n You can do this by adding a `curated_products` attribute to the body of your request and adding an array of product IDs to the attribute. You should add the products IDs in the order you want them to be displayed in your node. The first product ID is displayed first in the product list.\n\n You can only curate 20 products or less. You cannot have more than 20 curated products.\n \n - The product IDs you provide must exist in the specified node.\n - If a curated product is removed from a node, the product is also removed from the curated_products list.\n - Once you have curated the products in a node, you can use the get node products endpoint to retrieve a list of curated products.\n \n You can then display your curated products in your catalogs using the following catalog endpoints.\n \n - [Get a node in your latest catalog release](/docs/api/pxm/catalog/get-node)\n - [Get a node in a catalog](/docs/api/pxm/catalog/get-by-context-node)\n - [Get all nodes in your latest catalog release](/docs/api/pxm/catalog/get-all-nodes)\n - [Get all nodes in a catalog](/docs/api/pxm/catalog/get-by-context-all-nodes)\n - [Get node children in your latest catalog release](/docs/api/pxm/catalog/get-child-nodes)\n - [Get node children in a catalog](/docs/api/pxm/catalog/get-by-context-child-nodes)\n"
operationId: updateNode
tags:
- Hierarchies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/update_node'
examples:
update-node:
$ref: '#/components/examples/update_node'
responses:
'200':
description: Successfully returns the updated node
content:
application/json:
schema:
$ref: '#/components/schemas/single_node'
examples:
updated-node:
$ref: '#/components/examples/node_updated'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
delete:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/node_id'
summary: Deletes a node
description: Deletes a node by the node ID
operationId: deleteNode
tags:
- Hierarchies
responses:
'204':
description: No Content
'403':
$ref: '#/components/responses/forbidden'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/{hierarchyID}/children:
get:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/filter_nodes'
- $ref: '#/components/parameters/page_offset'
- $ref: '#/components/parameters/page_limit'
summary: Get a hierarchy's children
description: 'Get a hierarchy''s children
#### Filtering
Many Commerce API endpoints support filtering. The general syntax is described in [**Filtering**](/guides/Getting-Started/filtering).
The following attributes and operators are supported.
| Operator | Attribute | Description | Example |
|----------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|------------------------------------------|
| `eq` | `id`, `hierarchy_id`, `owner`, `parent_id`, `name`, `slug`, `description`, `has_children`, `created_at`, `updated_at`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.id`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Equals. Checks if the value of the attribute matches the specified value. | `filter=eq(name,some-name)`, `filter=eq(locales.fr-FR.name,Nom-du-produit)` |
| `in` | `id`, `hierarchy_id`, `parent_id`, `breadcrumbs.id` | Checks if the value of the attribute is included in the specified list. | `filter=in(id,1,2,3,4)` |
| `lt`, `le`, `gt`, `ge` | `id`, `hierarchy_id`, `parent_id`, `created_at`, `updated_at` | Comparison operators. `lt`: Less than, `le`: Less than or equal to, `gt`: Greater than, `ge`: Greater than or equal to. | `filter=lt(id,100)`, `filter=ge(created_at,2022-01-01)` |
| `like` | `name`, `slug`, `description`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Like. Checks if the attribute contains the specified string (wildcards supported). | `filter=like(name,*some-name*)`, `filter=like(locales.es-ES.description,*descripción*)` |
| `ilike` | `name`, `slug`, `description`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Case-insensitive like. Same as `like` but ignores case when matching. | `filter=ilike(name,*some-name*)` |
'
operationId: getAllChildren
tags:
- Hierarchies
responses:
'200':
description: Returns the hierarchy's children.
content:
application/json:
schema:
$ref: '#/components/schemas/multi_nodes'
examples:
get-hierarchy-children:
$ref: '#/components/examples/resp_multi_nodes'
'400':
$ref: '#/components/responses/bad_request'
'404':
$ref: '#/components/responses/not_found'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/{hierarchyID}/relationships/children:
post:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
summary: Create relationships between a hierarchy and child nodes
description: 'Use this endpoint to create relationships between a hierarchy and one or more child nodes. You can create a relationship only if:
- All child nodes already exist.
- Every child node in the request body must belong to this hierarchy.
- All siblings in a hierarchy must have a unique `name` and `slug`. Siblings are the child nodes that are related to the same parent.
### Sort Order
You can also provide `sort_order` information when you create a relationship by adding a `meta` object to the array of node reference objects for each child node that requires sorting.
The node with the highest value of `sort_order` appears at the top of the response. For example, a node with a `sort_order` value of `3` appears before a node with a `sort_order` value of `2`.
- If you don’t provide `sort_order` when creating relationships, all child nodes in the response for Get a Hierarchy’s Children request are ordered by the `updated_at` time in descending order. The most recently updated child node appears at the top of the response.
- If you set `sort_order` for only a few child nodes or not all, the child nodes with `sort_order` value appear first in the response and then other child nodes appear in the order of `updated_at` time.
You can also specify a `sort_order` when creating and updating a node.
- If you create or update a node (**Node A**) with a `sort_order` and then you create a relationship for **Node A** with hierarchy (**Hierarchy A**) with a new `sort_order`, the `sort_order` you specified when creating\updating **Node A** is overwritten.
- If you create\update **Node A** and then you create a relationship with **Hierarchy A** but do not configure a `sort_order`, the `sort_order` you specified when you created\updated **Node A** is not overwritten.
'
operationId: createHierarchyChildRelationships
tags:
- Hierarchies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/node_children'
examples:
set-node-children:
$ref: '#/components/examples/node_children'
responses:
'200':
description: Successfully returns the hierarchy
content:
application/json:
schema:
$ref: '#/components/schemas/single_hierarchy'
examples:
set-node-children:
$ref: '#/components/examples/hierarchy_updated'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/{hierarchyID}/nodes/{nodeID}/relationships/children:
post:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/node_id'
summary: Create relationships between a node and child nodes
description: 'Use this endpoint to create relationships between a single parent node and one or more child nodes. You can create a relationship only if:
- The parent node already exists.
- All child nodes already exist.
- Every child node in the body of the request exists in the same hierarchy as the parent node.
- A node is not a parent of itself. An array of child nodes request body must not contain the ID of the parent node in the path.
- All siblings in a hierarchy must have a unique `slug`. Siblings are the child nodes that are related to the same parent.
### Sort Order
You can also provide `sort_order` information when you create a relationship by adding a `meta` object to the array of node reference objects for each child node that requires sorting.
The node with the highest value of `sort_order` appears at the top of the response. For example, a node with a `sort_order` value of `3` appears before a node with a `sort_order` value of `2`.
- If you don’t provide `sort_order` when creating relationships, all child nodes in the response for Get a Node’s Children request are ordered by the `updated_at` time in descending order. The most recently updated child node appears at the top of the response.
- If you set `sort_order` for only a few child nodes or not all, the child nodes with `sort_order` value appear first in the response and then other child nodes appear in the order of `updated_at` time.
You can also specify a `sort_order` when creating and updating a node.
- If you create or update a node (**Node A**) with a `sort_order` and then you create a relationship for **Node A** with another node (**Node B**) with a new `sort_order`, the `sort_order` you specified when creating\updating **Node A** is overwritten.
- If you create\update **Node A** and then you create a relationship with **Node B** but do not configure a `sort_order`, the `sort_order` you specified when you created\updated **Node A** is not overwritten.
'
operationId: createNodeChildRelationships
tags:
- Hierarchies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/node_children'
examples:
set-node-children:
$ref: '#/components/examples/node_children'
responses:
'200':
description: Successfully returns the parent node
content:
application/json:
schema:
$ref: '#/components/schemas/single_node'
examples:
set-node-children:
$ref: '#/components/examples/node_updated'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/{hierarchyID}/nodes/{nodeID}/children:
get:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/filter_nodes'
- $ref: '#/components/parameters/node_id'
- $ref: '#/components/parameters/page_offset'
- $ref: '#/components/parameters/page_limit'
summary: Get a node's children
description: 'Retrieves the child nodes for a specified node.
#### Filtering
Many Commerce API endpoints support filtering. The general syntax is described in [**Filtering**](/guides/Getting-Started/filtering).
The following attributes and operators are supported.
| Operator | Attribute | Description | Example |
|----------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|------------------------------------------|
| `eq` | `id`, `hierarchy_id`, `owner`, `parent_id`, `name`, `slug`, `description`, `has_children`, `created_at`, `updated_at`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.id`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Equals. Checks if the value of the attribute matches the specified value. | `filter=eq(name,some-name)`, `filter=eq(locales.fr-FR.name,Nom-du-produit)` |
| `in` | `id`, `hierarchy_id`, `parent_id`, `breadcrumbs.id` | Checks if the value of the attribute is included in the specified list. | `filter=in(id,1,2,3,4)` |
| `lt`, `le`, `gt`, `ge` | `id`, `hierarchy_id`, `parent_id`, `created_at`, `updated_at` | Comparison operators. `lt`: Less than, `le`: Less than or equal to, `gt`: Greater than, `ge`: Greater than or equal to. | `filter=lt(id,100)`, `filter=ge(created_at,2022-01-01)` |
| `like` | `name`, `slug`, `description`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Like. Checks if the attribute contains the specified string (wildcards supported). | `filter=like(name,*some-name*)`, `filter=like(locales.es-ES.description,*descripción*)` |
| `ilike` | `name`, `slug`, `description`, `locales.[locale].name`, `locales.[locale].description`, `breadcrumbs.name`, `breadcrumbs.slug`, `breadcrumbs.locales.[locale].name` | Case-insensitive like. Same as `like` but ignores case when matching. | `filter=ilike(name,*some-name*)` |
'
operationId: getAllNodeChildren
tags:
- Hierarchies
responses:
'200':
description: Successfully returns the node's children
content:
application/json:
schema:
$ref: '#/components/schemas/multi_nodes'
examples:
get-node-children:
$ref: '#/components/examples/resp_multi_nodes'
'400':
$ref: '#/components/responses/bad_request'
'404':
$ref: '#/components/responses/not_found'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/{hierarchyID}/nodes/{nodeID}/relationships/parent:
put:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/node_id'
summary: Update a node's parent
description: 'Changes the parent of the specified node. The new parent node must be located within the same hierarchy as the specified node.
You cannot move a node to another hierarchy. If you want to put the specified node into another hierarchy, create the node in the target hierarchy and delete it from the current hierarchy.
'
operationId: updateNodeParent
tags:
- Hierarchies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/node_parent'
examples:
update-node-parent:
$ref: '#/components/examples/node_parent'
responses:
'204':
description: No Content
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
delete:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/node_id'
summary: Delete a node's parent
operationId: deleteNodeParent
tags:
- Hierarchies
responses:
'204':
description: No Content
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/{hierarchyID}/nodes/{nodeID}/relationships/products:
post:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/node_id'
summary: Create a node's product relationships
description: Creates relationships between the specified node and one or more products in a specified hierarchy.
operationId: createNodeProductRelationship
tags:
- Hierarchies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/node_products'
examples:
create-node-product-relationships:
$ref: '#/components/examples/node_products'
responses:
'201':
description: Successfully returns the updated node
content:
application/json:
schema:
$ref: '#/components/schemas/single_node'
examples:
created-node-product-relationships:
$ref: '#/components/examples/node_updated'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
delete:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/node_id'
summary: Deletes a node's product relationships
operationId: deleteNodeProductRelationships
tags:
- Hierarchies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/node_products'
examples:
delete-node-product-relationships:
$ref: '#/components/examples/node_products'
responses:
'200':
description: Successfully returns the updated node
content:
application/json:
schema:
$ref: '#/components/schemas/single_node'
examples:
created-node-product-relationships:
$ref: '#/components/examples/node_updated'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/{hierarchyID}/nodes/{nodeID}/products:
get:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
- $ref: '#/components/parameters/node_id'
- $ref: '#/components/parameters/page_offset'
- $ref: '#/components/parameters/page_limit'
summary: Get a node's products
description: 'Returns the products associated with the specified hierarchy node from a published catalog. Products must be in a live status. If the products have been curated using the update a hierarchy node endpoint, then the products are returned in the order specified in the `curated_products` attribute in the body of the update a hierarchy node request. A product that is curated has the "curated_product": true attribute displayed.
'
operationId: getNodeProducts
tags:
- Hierarchies
responses:
'200':
description: Successfully returns the node's products
content:
application/json:
schema:
$ref: '#/components/schemas/multi_product_response'
examples:
get-node-products:
$ref: '#/components/examples/multi_product_response'
'400':
$ref: '#/components/responses/bad_request'
'404':
$ref: '#/components/responses/not_found'
'500':
$ref: '#/components/responses/internal'
/pcm/hierarchies/{hierarchyID}/duplicate_job:
post:
parameters:
- $ref: '#/components/parameters/hierarchy_id'
summary: Duplicate a hierarchy
description: "Using this option, you can duplicate an existing hierarchy. This is useful because it enables you to quickly and easily create multiple hierarchies with the same node structure.\n\nWhen you duplicate a hierarchy, you can specify a new name and/or a new description and/or a new slug for the duplicated hierarchy. All other attributes will stay the same.\n\nAny nodes in the existing hierarchy are also replicated in the duplicated hierarchy. In addition, you can optionally use the `include_products` attribute to specify whether you want products associated with the nodes in an existing hierarchy to be associated with the nodes in the duplicated hierarchy. By default, product relationships in an existing hierarchy are not duplicated in a duplicate hierarchy.\n\nDuplicating a hierarchy is an asynchronous operation. When you duplicate a hierarchy, a job is created. The jobId of the job is displayed in the response. When the job is complete, the duplicate hierarchy operation is also complete. You can use the jobId to see the status of your job using Get a Job.\n\nJobs are processed one at a time. You can continue to send duplicate hierarchy 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. \n\nOnce the job is complete, run:\n\n- Get all hierarchies to retrieve the HierarchyId of your duplicated hierarchy.\n- Get a hierarchy to retrieve the nodes and (if applicable) products associated with the duplicated hierarchy.\n"
operationId: duplicateHierarchy
tags:
- Hierarchies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/duplicate_job'
examples:
duplicate-hierarchy:
$ref: '#/components/examples/duplicate_job'
required: true
responses:
'201':
description: Successfully returns the duplicate hierarchy job ID
content:
application/json:
schema:
$ref: '#/components/schemas/single'
examples:
duplicated-hierarchy:
$ref: '#/components/examples/duplicate_hierarchy_job_created'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/unprocessable_entity'
'500':
$ref: '#/components/responses/internal'
components:
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'
node_parent:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- type
properties:
id:
type: string
description: The unique identifier of the new parent node. Must not match the node ID specified in the request path.
example: 00000000-0000-0000-0000-000000000000
type:
description: This represents the type of resource object being returned. Always `node`.
type: string
enum:
- node
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
update_node:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
description: The unique identifier of the node. Must match the node ID specified in the request path.
example: 00000000-0000-0000-0000-000000000000
type:
description: This represents the type of resource object being returned. Always `node`.
type: string
enum:
- node
attributes:
$ref: '#/components/schemas/attributes_nodes'
meta:
type: object
additionalProperties: false
properties:
sort_order:
description: "You can sort the order of your nodes, regardless of where the nodes are in the hierarchy. The `sort_order` for each node. This value determines the order of nodes in the response for the `Get a Node’s Children` request. The node with the highest value of sort_order is displayed first. For example, a node with a sort_order value of 3 appears before a node with a sort_order value of 2.\n \n- If you don’t provide `sort_order` when creating nodes, all child nodes in the response for `Get a Node’s Children` request are ordered by the `updated_at` time in descending order, with the most recently updated child node first.\n- If you set `sort_order` for only a few child nodes or not all, the child nodes with a `sort_order` value appear first and then other child nodes appear in the order of `updated_at` time.\n"
type: integer
create_node:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
properties:
type:
description: This represents the type of resource object being returned. Always `node`.
type: string
enum:
- node
attributes:
$ref: '#/components/schemas/attributes_nodes'
meta:
type: object
additionalProperties: false
properties:
sort_order:
description: 'You can sort the order of your nodes, regardless of where the nodes are in the hierarchy. The `sort_order` for each node. This value determines the order of nodes in the response for the `Get a Node’s Children` request. The node with the highest value of sort_order is displayed first. For example, a node with a sort_order value of 3 appears before a node with a sort_order value of 2.
- If you don’t provide `sort_order` when creating nodes, all child nodes in the response for `Get a Node’s Children` request are ordered by the `updated_at` time in descending order, with the most recently updated child node first.
- If you set `sort_order` for only a few child nodes or not all, the child nodes with a `sort_order` value appear first and then other child nodes appear in the order of `updated_at` time. See [Sorting Nodes in a hierarchy]().
'
type: integer
node:
type: object
required:
- id
- type
- attributes
- relationships
- meta
properties:
id:
description: The unique identifier of a node.
type: string
type:
description: This represents the type of resource object being returned. Always `node`.
type: string
enum:
- node
attributes:
$ref: '#/components/schemas/attributes'
relationships:
$ref: '#/components/schemas/relationships'
meta:
type: object
properties:
sort_order:
description: The sort order value. The node with the highest value of `sort_order` is displayed first. For example, a node with a `sort_order` value of `3` appears before a node with a `sort_order` value of `2`. See [Sorting Nodes in a hierarchy](/docs/api/pxm/products/create-node#sorting-nodes-in-a-hierarchy).
type: integer
created_at:
description: The date and time a node is created.
type: string
example: '2020-09-22T09:00:00.000Z'
format: date-time
updated_at:
description: The date and time a node was updated.
type: string
example: '2020-09-22T09:00:00.000Z'
format: date-time
parent_name:
description: The name of the parent of the node if one exists.
type: string
owner:
description: The node owner, either `organization` or `store`.
type: string
enum:
- store
- organization
has_children:
description: Whether the node has child nodes.
type: boolean
hierarchy_id:
description: The unique identifier of hierarchy
type: string
breadcrumbs:
type: array
description: Breadcrumbs
items:
type: object
properties:
id:
description: The unique identifier of a hierarchy/node.
type: string
name:
description: The name of the hierarchy/node.
type: string
slug:
description: A slug for the hierarchy/node.
type: string
locales:
description: Product Experience Manager supports localization of hierarchies and nodes. If you store supports multiple languages, you can localize hierarchy and node names and descriptions.
type: object
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
additionalProperties: false
properties:
name:
description: A localized hierarchy or node name.
type: string
multi_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: 30
minimum: 0
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
single_node:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/node'
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_hierarchy:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
description: The unique identifier of the hierarchy. Must match the hierarchy ID specified in the request path.
example: 00000000-0000-0000-0000-000000000000
type:
description: This represents the type of resource object being returned. Always `hierarchy`.
type: string
enum:
- hierarchy
example: hierarchy
attributes:
$ref: '#/components/schemas/req_attributes_hierarchy'
create_hierarchy:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
properties:
type:
description: This represents the type of resource object being returned. Always `hierarchy`.
type: string
enum:
- hierarchy
attributes:
$ref: '#/components/schemas/req_attributes_hierarchy'
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
multi_nodes:
type: object
required:
- data
properties:
data:
description: An array of nodes.
type: array
items:
$ref: '#/components/schemas/node'
meta:
$ref: '#/components/schemas/multi_meta'
links:
$ref: '#/components/schemas/multi_links'
node_products:
type: object
required:
- data
properties:
data:
type: array
items:
type: object
required:
- id
- type
properties:
id:
type: string
description: The unique identifier of the product to be attached to the node.
example: 00000000-0000-0000-0000-000000000000
type:
description: This represents the type of resource object being returned. Always `product`.
type: string
enum:
- product
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
req_attributes_hierarchy:
type: object
additionalProperties: false
properties:
name:
description: The name of the hierarchy, such as `Major Appliances`.
type: string
description:
description: A description of the hierarchy.
type: string
slug:
description: A unique slug for the hierarchy.
type: string
admin_attributes:
$ref: '#/components/schemas/admin_attributes'
shopper_attributes:
$ref: '#/components/schemas/shopper_attributes'
locales:
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.
type: object
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
additionalProperties: false
properties:
name:
description: A localized name for the hierarchy.
type: string
description:
description: A localized description for the hierarchy.
type: string
nodes_or_hierarchies:
type: object
required:
- data
properties:
data:
description: An array of nodes or hierarchies.
type: array
items:
oneOf:
- $ref: '#/components/schemas/node'
- $ref: '#/components/schemas/hierarchy'
discriminator:
propertyName: type
meta:
$ref: '#/components/schemas/multi_meta'
links:
$ref: '#/components/schemas/multi_links'
relationships_hierarchy:
type: object
properties:
children:
description: The child nodes related to the hierarchy.
type: object
properties:
data:
description: An array of child nodes.
type: array
items: {}
links:
description: Links allow you to move between requests.
type: object
properties:
related:
description: A link to a related resource.
type: string
relationships:
type: object
description: Relationships allow you to move between requests. Includes links to the child nodes and products associated with a hierarchy or node.
properties:
children:
description: The child nodes related to the resource.
type: object
properties:
data:
description: An array of child nodes.
type: array
items: {}
links:
description: Links allow you to move between requests.
type: object
properties:
related:
description: A link to a related resource.
type: string
parent:
description: The parent node related to the resource
type: object
properties:
data:
description: The parent node
type: object
required:
- id
- type
properties:
type:
description: This represents the type of resource object being returned. Always `node`.
type: string
enum:
- node
id:
description: The unique identifier of a node.
type: string
products:
type: object
description: The products related to the resource.
properties:
data:
description: An array of products.
type: array
items: {}
links:
type: object
description: Links allow you to move between requests.
properties:
related:
description: A link to a related resource.
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'
hierarchy:
type: object
required:
- id
- type
- meta
- relationships
- attributes
properties:
id:
description: A unique identifier generated when a hierarchy is created.
type: string
type:
description: This represents the type of resource object being returned. Always `hierarchy`.
type: string
enum:
- hierarchy
attributes:
$ref: '#/components/schemas/attributes_hierarchy'
relationships:
$ref: '#/components/schemas/relationships_hierarchy'
meta:
type: object
properties:
created_at:
description: The date and time a hierarchy is created.
type: string
example: '2020-09-22T09:00:00.000Z'
format: date-time
updated_at:
description: The date and time a hierarchy is updated.
type: string
example: '2020-09-22T09:00:00.000Z'
format: date-time
owner:
description: The owner of a resource, either `organization` or `store`.
type: string
enum:
- store
- organization
has_children:
description: Whether the hierarchy has child nodes.
type: boolean
breadcrumbs:
type: array
description: Breadcrumbs
items:
type: object
properties:
id:
description: A unique identifier generated when a hierarchy is created.
type: string
name:
description: The name of a hierarchy, such as `Major Appliances`.
type: string
slug:
description: A unique slug for a hierarchy.
type: string
locales:
description: Product Experience Manager supports localization of hierarchies and nodes. If you store supports multiple languages, you can localize hierarchy and node names and descriptions.
type: object
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
additionalProperties: false
properties:
name:
description: A localized hierarchy or node name.
type: string
duplicate_job:
type: object
required:
- data
properties:
data:
type: object
properties:
type:
description: This represents the type of resource object being returned. Always `hierarchy`.
type: string
enum:
- hierarchy
attributes:
type: object
additionalProperties: false
properties:
name:
description: The name of the duplicate hierarchy. The maximum length is 1000 characters.
type: string
description:
description: A description of the duplicate hierarchy.
type: string
slug:
description: The slug of the duplicate hierarchy. Must be lower case and use dashes instead of spaces.
type: string
include_products:
description: Specify `true` if you want the product relationships in the existing nodes associated in your duplicated hierarchy. If not, specify `false`.
type: boolean
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.
attributes:
type: object
properties:
name:
description: The name of the node, such as `Ranges` or `Refrigerators`. Names must be unique among sibling nodes in the hierarchy. Otherwise, a name can be non-unique within the hierarchy and across multiple hierarchies.
type: string
description:
description: A description for a node.
type: string
slug:
description: A slug for the node. Slugs must be unique among sibling nodes in the hierarchy. Otherwise, a slug can be non-unique within the hierarchy and across multiple hierarchies.
type: string
curated_products:
description: You can curate your products in your nodes product lists. Product curation allows you to promote specific products within each node in a hierarchy, enabling you to create unique product collections in your storefront.
type: array
items:
description: A list of product IDs whose products you want to curate.
type: string
admin_attributes:
$ref: '#/components/schemas/admin_attributes'
shopper_attributes:
$ref: '#/components/schemas/shopper_attributes'
locales:
description: Product Experience Manager supports localization of hierarchies and nodes. If you store supports multiple languages, you can localize hierarchy and node names and descriptions.
type: object
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
additionalProperties: false
properties:
name:
description: A localized hierarchy or node name.
type: string
description:
description: A localized hierarchy or node description.
type: string
attributes_nodes:
type: object
additionalProperties: false
properties:
name:
description: The name of the node, such as `Ranges` or `Refrigerators`. Names must be unique among sibling nodes in the hierarchy. Otherwise, a name can be non-unique within the hierarchy and across multiple hierarchies.
type: string
description:
description: A description of the node.
type: string
slug:
description: A slug for the node. Slugs must be unique among sibling nodes in the hierarchy. Otherwise, a slug can be non-unique within the hierarchy and across multiple hierarchies.
type: string
curated_products:
description: You can curate your products in your nodes product lists. Product curation allows you to promote specific products within each node in a hierarchy, enabling you to create unique product collections in your storefront. See [Curating Products in a Node](/docs/api/pxm/products/create-node#curating-products-in-a-node).
type: array
items:
description: A list of product IDs for the products that you want to curate in a node.
type: string
admin_attributes:
$ref: '#/components/schemas/admin_attributes'
shopper_attributes:
$ref: '#/components/schemas/shopper_attributes'
locales:
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.
type: object
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
additionalProperties: false
properties:
name:
description: A localized name for the node.
type: string
description:
description: A localized description for the node.
type: string
single_hierarchy:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/hierarchy'
attributes_hierarchy:
type: object
properties:
name:
description: The name of a hierarchy, such as `Major Appliances`.
type: string
description:
description: A description for a hierarchy.
type: string
slug:
description: A unique slug for a hierarchy.
type: string
admin_attributes:
$ref: '#/components/schemas/admin_attributes'
shopper_attributes:
$ref: '#/components/schemas/shopper_attributes'
locales:
description: Product Experience Manager supports localization of hierarchies and nodes. If you store supports multiple languages, you can localize hierarchy and node names and descriptions.
type: object
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
additionalProperties: false
properties:
name:
description: A localized hierarchy or node name.
type: string
description:
description: A localized hierarchy or node description.
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_hierarchy:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/hierarchy'
links:
$ref: '#/components/schemas/multi_links'
meta:
$ref: '#/components/schemas/multi_meta'
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.
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.'
node_children:
type: object
required:
- data
properties:
data:
type: array
items:
type: object
required:
- id
- type
properties:
id:
type: string
description: The unique identifier of the child node. Must not match the node ID specified in the request path.
example: 00000000-0000-0000-0000-000000000000
type:
description: This represents the type of resource object being returned. Always `node`.
type: string
enum:
- node
examples:
update_node:
value:
data:
type: node
id: 9ea0de15-3347-43dd-8faa-cd32f44a04c7
attributes:
name: Ballet Shoes
description: Latest Ballet Shoes
slug: ballet-shoes
admin_attributes:
cost_of_goods: '42.0'
charge_type: null
shopper_attributes:
cost_of_goods: null
charge_type: credit card
locales:
fr-FR:
name: Chaussons de ballet
description: Dernières chaussures de ballet
meta:
sort_order: 5
hierarchy_updated:
value:
data:
type: hierarchy
id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
attributes:
description: Shoes Category Updated
locales:
fr-FR:
name: Chaussures mises à jour
description: Catégorie de chaussures mise à jour
admin_attributes:
cost_of_goods: '42.0'
shopper_attributes:
charge_type: credit card
name: Shoes Updated
slug: shoes
relationships:
children:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/children
meta:
created_at: '2024-01-10T20:16:35.343Z'
owner: store
updated_at: '2024-01-10T20:30:50.867Z'
breadcrumbs:
- id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
name: Shoes Updated
slug: shoes
locales:
fr-FR:
name: hierarchy 1 in French
duplicate_hierarchy_job_created:
value:
data:
type: pim-job
id: 1d9b101e-a40a-4e53-9f54-08a9ede65019
attributes:
completed_at: null
created_at: '2024-01-11T22:49:10.338Z'
started_at: null
status: pending
type: hierarchy-duplicate
updated_at: '2024-01-11T22:49:10.338Z'
meta:
x_request_id: 40995a1d-c0c1-4d52-a178-bfb5399ab0ec
node_products:
value:
data:
- type: product
id: 9c85b276-09b4-488e-a59c-c561bae14c9e
node_created:
value:
data:
type: node
id: 9ea0de15-3347-43dd-8faa-cd32f44a04c7
attributes:
description: All Ballet Shoes
locales:
fr-FR:
name: Chaussons de ballet
description: Toutes les chaussures de ballet
admin_attributes:
cost_of_goods: '42.0'
charge_type: credit card
shopper_attributes:
cost_of_goods: '42.0'
charge_type: credit card
name: Ballet Shoes
slug: ballet-shoes
relationships:
children:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/9ea0de15-3347-43dd-8faa-cd32f44a04c7/children
parent:
data:
type: node
id: 14e8e15a-7214-435d-bccb-6ae9b570d683
products:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/9ea0de15-3347-43dd-8faa-cd32f44a04c7/products
meta:
created_at: '2024-01-11T19:19:50.087Z'
owner: store
parent_name: Shoes
sort_order: 2
updated_at: '2024-01-11T19:19:50.087Z'
hierarchy_id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
breadcrumbs:
- id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
name: Shoes
slug: shoes
locales:
fr-FR:
name: hierarchy 1 in French
- id: 9ea0de15-3347-43dd-8faa-cd32f44a04c7
name: Ballet Shoes
slug: ballet-shoes
locales:
fr-FR:
name: Node 1 in French
create_hierarchy:
value:
data:
type: hierarchy
attributes:
name: Shoes
description: Shoes Category
slug: shoes
admin_attributes:
cost_of_goods: '42.0'
charge_type: credit card
shopper_attributes:
cost_of_goods: '42.0'
charge_type: credit card
locales:
fr-FR:
name: Chaussures
description: Catégorie de chaussures
node_updated:
value:
data:
type: node
id: 9ea0de15-3347-43dd-8faa-cd32f44a04c7
attributes:
description: Latest Ballet Shoes
locales:
fr-FR:
name: Chaussons de ballet
description: Dernières chaussures de ballet
admin_attributes:
cost_of_goods: '42.0'
shopper_attributes:
charge_type: credit card
name: Ballet Shoes
slug: ballet-shoes
relationships:
children:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/9ea0de15-3347-43dd-8faa-cd32f44a04c7/children
products:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/9ea0de15-3347-43dd-8faa-cd32f44a04c7/products
meta:
created_at: '2024-01-11T19:19:50.087Z'
owner: store
sort_order: 5
updated_at: '2024-01-11T19:56:53.695Z'
hierarchy_id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
breadcrumbs:
- id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
name: Shoes
slug: shoes
locales:
fr-FR:
name: hierarchy 1 in French
- id: 9ea0de15-3347-43dd-8faa-cd32f44a04c7
name: Ballet Shoes
slug: ballet-shoes
locales:
fr-FR:
name: Node 1 in French
resp_multi_hierarchy:
value:
data:
- type: hierarchy
id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
attributes:
description: Shoes Category
locales:
fr-FR:
name: Chaussures
description: Catégorie de chaussures
name: Shoes
slug: shoes
relationships:
children:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/children
meta:
created_at: '2024-01-10T20:16:35.343Z'
owner: store
updated_at: '2024-01-10T20:30:50.867Z'
breadcrumbs:
- id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
name: Shoes
slug: shoes
locales:
fr-FR:
name: hierarchy 1 in French
links:
last: /pcm/hierarchies?page[offset]=29&page[limit]=1
next: /pcm/hierarchies?page[offset]=1&page[limit]=1
meta:
results:
total: 30
hierarchy_created:
value:
data:
type: hierarchy
id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
attributes:
description: Shoes Category
locales:
fr-FR:
name: Chaussures
description: Catégorie de chaussures
admin_attributes:
cost_of_goods: '42.0'
charge_type: credit card
shopper_attributes:
cost_of_goods: '42.0'
charge_type: credit card
name: Shoes
slug: shoes
relationships:
children:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/children
meta:
created_at: '2024-01-10T20:16:35.343Z'
owner: store
updated_at: '2024-01-10T20:16:35.343Z'
breadcrumbs:
- id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
name: Shoes
slug: shoes
locales:
fr-FR:
name: hierarchy 1 in French
create_node:
value:
data:
type: node
attributes:
name: Ballet Shoes
description: All Ballet Shoes
slug: ballet-shoes
admin_attributes:
cost_of_goods: '42.0'
charge_type: credit card
shopper_attributes:
cost_of_goods: '42.0'
charge_type: credit card
locales:
fr-FR:
name: Chaussons de ballet
description: Toutes les ballerines
meta:
sort_order: 2
node_children:
value:
data:
- type: node
id: b2f5e53e-de3c-4548-98da-120f8b185d34
multi_product_response:
value:
data:
- type: product
id: 9c85b276-09b4-488e-a59c-c561bae14c9e
attributes:
commodity_type: physical
custom_inputs:
back:
name: T-Shirt Back
validation_rules:
- type: string
options:
max_length: 50
required: false
front:
name: T-Shirt Front
validation_rules:
- type: string
options:
max_length: 50
required: false
description: T-shirt.
mpn: 1234-5678-TTTT
name: T-Shirt
sku: '97805'
slug: '97805'
status: live
upc_ean: '12345656'
tags:
- tag1
- tag2
extensions:
products(size):
widthMM: 600
fuelType: electric
hasUKPlug: true
online: null
relationships:
children:
data: []
links:
self: /products/9c85b276-09b4-488e-a59c-c561bae14c9e/children
component_products:
data: []
links:
self: /products/9c85b276-09b4-488e-a59c-c561bae14c9e/relationships/component_products
files:
data: []
links:
self: /products/9c85b276-09b4-488e-a59c-c561bae14c9e/relationships/files
main_image:
data: null
templates:
data: []
links:
self: /products/9c85b276-09b4-488e-a59c-c561bae14c9e/relationships/templates
variations:
data: []
links:
self: /products/9c85b276-09b4-488e-a59c-c561bae14c9e/relationships/variations
meta:
created_at: '2022-08-18T14:25:57.391Z'
owner: store
product_types:
- standard
updated_at: '2022-08-18T14:25:57.391Z'
meta:
results:
total: 1
node_parent:
value:
data:
type: node
id: 60dc3982-ab34-47e8-9173-c920c63dc382
update_hierarchy:
value:
data:
type: hierarchy
id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
attributes:
description: Shoes Category Updated
admin_attributes:
cost_of_goods: '42.0'
charge_type: null
shopper_attributes:
cost_of_goods: null
charge_type: credit card
locales:
fr-FR:
name: Chaussures mises à jour
description: Catégorie de chaussures mise à jour
name: Shoes Updated
slug: shoes
duplicate_job:
value:
data:
type: hierarchy
attributes:
name: New Shoes
description: New Shoes Category
include_products: true
resp_multi_nodes:
value:
data:
- id: 9ea0de15-3347-43dd-8faa-cd32f44a04c7
type: node
attributes:
description: Latest Ballet Shoes
locales:
fr-FR:
name: Chaussons de ballet
description: Dernières chaussures de ballet
name: Ballet Shoes
slug: ballet-shoes
relationships:
children:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/9ea0de15-3347-43dd-8faa-cd32f44a04c7/children
products:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/9ea0de15-3347-43dd-8faa-cd32f44a04c7/products
meta:
created_at: '2024-01-11T19:19:50.087Z'
owner: store
sort_order: 5
updated_at: '2024-01-11T19:56:53.695Z'
hierarchy_id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
breadcrumbs:
- id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
name: Shoes
slug: shoes
locales:
fr-FR:
name: hierarchy 1 in French
- id: 9ea0de15-3347-43dd-8faa-cd32f44a04c7
name: Ballet Shoes
slug: ballet-shoes
locales:
fr-FR:
name: Node 1 in French
- type: node
id: b2f5e53e-de3c-4548-98da-120f8b185d34
attributes:
description: All Dress Shoes
locales:
fr-FR:
name: Chaussures habillées
description: Toutes les chaussures habillées
name: Dress Shoes
slug: dress-shoes
relationships:
children:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/b2f5e53e-de3c-4548-98da-120f8b185d34/children
products:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/b2f5e53e-de3c-4548-98da-120f8b185d34/products
meta:
created_at: '2024-01-11T19:50:21.729Z'
owner: store
sort_order: 3
updated_at: '2024-01-11T19:50:21.729Z'
hierarchy_id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
breadcrumbs:
- id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
name: Shoes
slug: shoes
locales:
fr-FR:
name: hierarchy 1 in French
- id: b2f5e53e-de3c-4548-98da-120f8b185d34
name: Dress Shoes
slug: dress-shoes
locales:
fr-FR:
name: Node 2 in French
meta:
results:
total: 2
resp_multi_nodes_or_hierarchies:
value:
data:
- id: 9ea0de15-3347-43dd-8faa-cd32f44a04c7
type: node
attributes:
description: Latest Ballet Shoes
locales:
fr-FR:
name: Chaussons de ballet
description: Dernières chaussures de ballet
name: Ballet Shoes
slug: ballet-shoes
relationships:
children:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/9ea0de15-3347-43dd-8faa-cd32f44a04c7/children
products:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/9ea0de15-3347-43dd-8faa-cd32f44a04c7/products
meta:
created_at: '2024-01-11T19:19:50.087Z'
owner: store
sort_order: 5
updated_at: '2024-01-11T19:56:53.695Z'
hierarchy_id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
breadcrumbs:
- id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
name: Shoes
slug: shoes
locales:
fr-FR:
name: hierarchy 1 in French
- id: 9ea0de15-3347-43dd-8faa-cd32f44a04c7
name: Ballet Shoes
slug: ballet-shoes
locales:
fr-FR:
name: Node 1 in French
- type: node
id: b2f5e53e-de3c-4548-98da-120f8b185d34
attributes:
description: All Dress Shoes
locales:
fr-FR:
name: Chaussures habillées
description: Toutes les chaussures habillées
name: Dress Shoes
slug: dress-shoes
relationships:
children:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/b2f5e53e-de3c-4548-98da-120f8b185d34/children
products:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/nodes/b2f5e53e-de3c-4548-98da-120f8b185d34/products
meta:
created_at: '2024-01-11T19:50:21.729Z'
owner: store
sort_order: 3
updated_at: '2024-01-11T19:50:21.729Z'
hierarchy_id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
breadcrumbs:
- id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
name: Shoes
slug: shoes
locales:
fr-FR:
name: hierarchy 1 in French
- id: b2f5e53e-de3c-4548-98da-120f8b185d34
name: Dress Shoes
slug: dress-shoes
locales:
fr-FR:
name: Node 2 in French
- type: hierarchy
id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
attributes:
description: Shoes Category
locales:
fr-FR:
name: Chaussures
description: Catégorie de chaussures
name: Shoes
slug: shoes
relationships:
children:
data: []
links:
related: /hierarchies/6183d10c-94b5-4caa-9f12-2f14cb738d41/children
meta:
created_at: '2024-01-10T20:16:35.343Z'
owner: store
updated_at: '2024-01-10T20:30:50.867Z'
breadcrumbs:
- id: 6183d10c-94b5-4caa-9f12-2f14cb738d41
name: Shoes
slug: shoes
locales:
fr-FR:
name: hierarchy 1 in French
meta:
results:
total: 3
parameters:
include_hierarchies:
name: include_hierarchies
in: query
description: When true, includes hierarchy objects in the response alongside nodes
required: false
schema:
type: boolean
default: false
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
node_id:
name: nodeID
in: path
schema:
type: string
example: 00000000-0000-0000-0000-000000000000
required: true
description: A unique identifier for the node.
hierarchy_id:
name: hierarchyID
in: path
schema:
type: string
example: 00000000-0000-0000-0000-000000000000
required: true
description: A unique identifier for the hierarchy.
filter_nodes:
name: filter
in: query
description: 'Many Commerce API endpoints support filtering. The general syntax is described [**here**](/guides/Getting-Started/filtering).
'
style: form
explode: true
schema:
type: string
examples:
eq:
value: eq(name,some-name)
like:
value: like(name,*some-name*)
in:
value: in(id,some-id)
lt:
value: lt(id,100)
le:
value: le(created_at,2023-01-01)
gt:
value: gt(updated_at,2023-01-01)
ge:
value: ge(parent_id,500)
eq-owner:
value: eq(owner,store)
eq-locale:
value: eq(locales.fr-FR.name,Nom-du-produit)
like-locale:
value: like(locales.es-ES.description,*descripción*)
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
responses:
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