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