# GENERATED FILE - DO NOT EDIT 
openapi: 3.0.0
info:
  title: Catalogs Introduction
  description: |
    Use the catalog-view Service API to create your catalogs.

    You also have the flexibility to create catalogs for different scenarios by combining hierarchies of products with a price book. Scenarios might include:

    - Multiple geographical regions. Display different catalogs in different regions with suitable pricing or combine product hierarchies from two different regions to display in a third region.
    - Multiple channels. Display different catalogs based on how a shopper accesses your store, such as through a mobile app or a web storefront.
    - Direct to business versus direct to customers. Offer different products and prices for business customers versus retail customers.
    - Preferred customers. Offer special pricing to preferred customers while displaying a standard price catalog to all other shoppers.
    - Reward programs. Enable reward programs where catalog prices drop after a certain spending level is reached.
    - Product sales. Offer sale items for a limited time.

    Scenarios are created by defining the context within which a catalog is displays. Contexts can be a customer ID, a channel, or any other user-defined tag that can be passed to the APIs from the front-end shopper experiences.
  version: 26.0508.7574130
  x-version-timestamp: 2026-05-08T11:06:53Z
servers:
  - url: https://euwest.api.elasticpath.com
    description: EU West Production Server
  - url: https://useast.api.elasticpath.com
    description: US East Production Server
security:
  - bearerAuth: []
tags:
  - name: Catalogs
    description: |
      A catalog contains the products available for sale either in your organization or store. A catalog also contains information about how to organize those products for navigation menus and search facets in a shopper experience.

      Before you create a catalog you must define the following resources:

      - Hierarchies: hierarchies and nodes to categorize the products. See [**Hierarchies**](/docs/api/pxm/products/hierarchies).
      - Products: product information, associated assets, and links to hierarchy nodes. See [**Products**](/docs/api/pxm/products/products).
      - Price Books: prices for the products associated with the hierarchies. See [**Price Books**](/docs/api/pxm/pricebooks).

      A catalog is a combination of hierarchies and a price book.

      ### Products

      Commerce automatically assigns types to the products you create. Product types can be used in catalogs. For example, in your catalog, you can filter on `parent` so that only your parent products are displayed in your storefront.

      You can use product tags to store or assign a key word against a product or service that you sell in your store. The product tag can then be used to describe or label that product. Product tags represent similarities between products who do not share the same attributes. Using product tags means that you can group your products together, for example, by brand, category, subcategory, colors, types, industries, and so on. Product tags can be used in catalogs. For example, you can categorize your products based on color. Your shoppers can then search your products by color, enabling shoppers to quickly find what they are looking for, increasing the likelihood of a purchase, and boosting conversion rates.

      ### Hierarchies

      The hierarchies determine which products appear in the catalog, that is, only the products that are associated with the selected hierarchies are included in the catalog. You can also specify the order you want your hierarchies to display in a published catalog. You can order your hierarchies on a catalog-by-catalog basis.

      ![Hierarchy_sorting](/assets/hierarchy_sorting.png)

      For more information, see [**create a Catalog**](/docs/api/pxm/catalog/create-catalog).

      #### Understanding How Products And Nodes Are Associated

      You can use `breadcrumb` metadata to understand how products and nodes are associated. it explains how products are associated with parent nodes and the relationship among the array of nodes. This is useful if you want to improve how your shoppers search within your store.

      The `breadcrumb` information that you get in an endpoint response depends on whether the endpoint is retrieving product or node details.

      |  Object |  Product/Node |  Description |
      | --- | --- | --- |
      | `breadcrumb` | Node | A list of nodes that a product is associated with. Up to 10 levels of nodes are displayed, depending on the number of levels of nodes you have. |
      | `bread_crumbs` | Product | The relationship among the array of nodes a product is associated with, demonstrating the linking of the children nodes with the parent nodes. Up to 10 levels of nodes are displayed, depending on the number of levels of nodes you have. |
      | `bread_crumb_nodes` | Product | An array of parent node IDs that a product is associated with. The `bread_crumb_node` metadata lists up to 10 levels of parent nodes, depending on the number of levels of parent nodes you have. |

      #### Understanding `bread_crumbs` Metadata

      The following diagram illustrates a parent and child nodes.

      ![Breadcrumbs](/assets/breadcrumbs.PNG)

      1. The product is in **Node 2**. The ID for **Node 2** is shown first in the first set of breadcrumbs.
      1. **Node 2** is part of **Hierarchy 1**. The ID for **Hierarchy 1** is shown second.
      1. **Node 1** is the parent node of **Node 2**. The ID for **Node 1** is shown last.
      1. The product is also in **Node 3**. The ID for **Node 3** is shown first in the second set of breadcrumbs.
      1. **Node 3** is in the root of **Hierarchy 1**. The ID for **Hierarchy 1** is shown last.

      In the `bread_crumb_nodes` metadata, you can see a list of parent nodes a product is associated with.

      If you subsequently add a product to a new node, then the `bread_crumb_nodes` metadata appends the new node to the top of the list. Using the example above, if we add the product to **Node 1**:

      1. The `bread_crumb_nodes` metadata is generated to show the new node appended to the top of the list.
      1. The `bread_crumbs` metadata is updated with the new node.

      #### Understanding Breadcrumb Metadata for Child Products

      When a catalog is published, the breadcrumb information for a child product includes the metadata mentioned for the parent product, in addition to the information specific to the child product. For example, **Product A** is the parent product, associated with **Node 1** and **Node 2**. The metadata for child **Product B** includes **Node 1** and **Node 2**, in addition to its own metadata information.

      ### Nodes

      The nodes determine which products appear under this in the catalog, that is, only the products that are associated with the selected node are shown under this node.

      ### Price books

      A price book contains the prices for each of the products in the catalog. You can create multiple price books for different scenarios, such as seasonal sales, business versus retail customer pricing, and reward programs. When creating a catalog, you can specify up to five price books. You must set a priority for your price books. Product prices are displayed in the catalog according to the priority of the price books. See [Create a catalog](/docs/api/pxm/catalog/create-catalog).
  - name: Releases
    description: |
      When a catalog is published, a catalog release is created. A catalog release provides a snapshot of the product information taken at the time of publication. You can have one or more catalog releases available in your organization or in your store. If you publish a catalog for your organization, the catalog is available when the store is launched.

      If you have more than one catalog published for your store, use catalog rules to specify when to display each catalog. For example, you can use [**catalog rules**](/docs/api/pxm/catalog/rules) to schedule a catalog to appear during a particular date and time, such as a seasonal catalog. The catalog may have different pricing than the other catalogs.

      When a catalog is ready to be used in a store, you publish it. You can create and publish catalogs for different contexts and channels.

      Here are some pointers to understand a catalogs' lifecycle.

      - The default catalog is always the oldest published catalog and must have have at least one release.
      - At any time, the most recent three catalog releases are maintained. Hence, if there is a fourth catalog release, the first catalog release is automatically removed.
      - Until the catalog is published again, the previously created three catalog releases stay permanently.
      - If you want any other catalog to become the default catalog, you must create a catalog rule.
      - If you want the oldest published catalog to become the default catalog, you must remove the catalog rule.
      - Use the `sort_order` value in the `variations` to program your storefront to display the variation options in the order that you want.

      Here is a diagram that describes a catalogs' lifecycle:

      ![Catalogs' Lifecycle](/assets/catalog-lifecycle.png)

      ### Publishing catalogs

      When you publish a catalog, the `live` products in the hierarchies appear in a catalog release. A catalog release provides a snapshot of product information taken at the time of publication. You can have one or more catalog releases available in your organization or in your store. If you publish a catalog for your organization, the catalog is available when the store is launched.

      If you have more than one catalog published for your store, use catalog rules to specify when to display each catalog. For example, you can use [catalog rules](/docs/api/pxm/catalog/rules) to schedule a catalog to appear during a particular date and time, such as a seasonal catalog. The catalog may have different pricing than the other catalogs. You can have multiple published catalogs.

      When a catalog is ready to be used in a store, you publish it. You can create and publish catalogs for different contexts and channels. You can see the differences between the last two consecutive catalog releases. See [Publish a catalog](/docs/api/pxm/catalog/publish-release).

      You retrieve catalogs for your shopper experience by using the [Catalog View API](/docs/api/pxm/catalog/releases).
  - name: Rules
    description: |
      If your store requires multiple catalogs, add catalog rules to control when a catalog is displayed. A catalog rule contains a catalog plus the criteria under which to display the catalog.

      :::caution

      You cannot create catalog rules for organization catalogs.

      :::

      You can use catalog rules to schedule a catalog to appear during a particular period, such as on a specific date or during summer. The catalog might offer different pricing during this period. The pricing depends on the associated price book.

      The following scenarios provides a few examples for using catalog rules.

      - **Multiple geographical regions**. Display different catalogs in different regions with suitable pricing or combine product hierarchies from two different regions to display in a third region.
      - **Multiple channels**. Display different catalogs based on how a shopper accesses your store, such as through a mobile app or a web storefront.
      - **Direct to business versus direct to customers**. Offer different products and prices for business customers versus retail customers.
      - **Preferred accounts**. Offer special pricing to a group of users while displaying a standard price catalog to other users.
      - **Preferred customers**. Offer special pricing to preferred customers while displaying a standard price catalog to all other shoppers.
      - **Reward programs**. Enable reward programs where catalog prices drop after a certain spending level is reached.
      - **Product sales**. Offer sale items for a limited time.
      - **Standard pricing**. Display a default catalog to the shoppers who do not meet the criteria of the other catalog rules.

      You can define a catalog rule with any of the following criteria.

      - **Accounts**. List the accounts that should see a catalog. When a user has logged in with the account, they see the configured catalog.
      - **Customers**. List the customers that should see a catalog. When the customer is logged in, they see the configured catalog.
      - **Channel**. Specify a shopper experience, such as web storefront or mobile app. Set up the channel to retrieve the catalog from the catalog rule that matches that channel.
      - **Other tags**. Create your own user-defined tags. For example, you might want to tag by regions or you might want to distinguish between business and consumer customers.

      If a catalog rule has no criteria defined, it is the default catalog rule.

      ### Resolving catalog rules

      When there is a request for a catalog, the store displays the catalog with the rule that matches the most attributes of the shoppers context.

      The request triggers the following steps:

      1. Compares the shoppers context against the defined catalog rules.
      1. Determines the best match.
      1. Retrieves the catalog associated with the matching catalog rule.

      The follow examples show how the best match might be resolved:

      - A shopper matches one of the `customer_ids` in one catalog rule only. The catalog for that catalog rule is displayed.
      - A shopper matches one of the `customer_ids` in one catalog rule only, but doesnʼt match any of the `tags` specified in that catalog rule. Because there are no other catalog rules for this `customer_id`, the catalog for the catalog rule is displayed because it is the best match.
      - A shopper is browsing a store using the stores mobile app, which matches `channel=mobile` in two catalog rules. The catalog displayed depends on matches with the `tags` or `customer_ids` attributes. If there is no other matching attribute, the first catalog rule found by the store is used. The best practice is to create catalog rules that cover all cases so that you avoid this situation.
      - An unknown shopper is browsing the only channel offered by the seller. The store displays the base catalog.
  - name: Administrator Latest Releases Catalog API
    description: |
      Use the Administrator Latest Releases Catalog View API to retrieve product, hierarchy and node information.

      :::danger

      The Administrator Latest Releases Catalog View API is for Administrator use only. Do not use these endpoints on your customer-facing frontends.

      :::

      Publishing a catalog creates a release of that catalog that you can use in an organization or in a specific store or other shopper experience. You can retrieve the hierarchies, nodes, and the `live` products associated with a catalog release. You can see which parent nodes a product is associated with. This is useful if want to improve how your shoppers search your store, for example.

      Currently, published catalogs are limited to the current release and two releases prior to the current release.
  - name: Shopper Catalog API
    description: |
      Use the Shopper Catalog View API to retrieve hierarchy, node and product information for a catalog release. When you publish a catalog for a store, you can define catalog rules so that you can show catalogs with different pricing or different products to preferred customers or channels. These endpoints can be used in your customer-facing frontends.

      A catalog is a combination of one or more hierarchies, products, and a price book. Use the Products API and Hierarchies API to create a hierarchy of products that can be included in a catalog. Use the Price Book API to associate prices with products.

      ### Characteristics of Shopper Catalogs

      Shopper catalogs can have the following characteristics.

      - Use catalog rules to schedule a catalog to appear during a particular date and time, such as a seasonal catalog. The catalog may have different pricing than the other catalogs. You can have multiple published catalogs.
      - If you have defined catalog rules and you want to retrieve a published catalog for a particular channel or a user-defined tag, you must set the appropriate headers in the request:
        - `EP-Channel` - The channel, such as website or mobile app. See [**Create a Catalog Rule**](/docs/api/pxm/catalog/create-rule).
        - `EP-Context-Tag` - A tag defined in the store, such as `clearance`. See [**Create a Catalog Rule**](/docs/api/pxm/catalog/create-rule).
      * When a catalog is ready to be used in a store, you publish it. See [**Publish a Catalog**](/docs/api/pxm/catalog/publish-release).
      * You can create and publish catalogs for different contexts and channels. You can see the differences between the last 2 consecutive catalog releases. See [**Publish a Catalog**](/docs/api/pxm/catalog/publish-release).
      * You retrieve catalogs for your shopper experience by using the Shopper Catalog View API. For more information on how you can retrieve a catalog as a shopper using the Catalog API.
      * When a catalog is published for a store, the corresponding events contain `store_id` and `org_id`. 
      * When a catalog is published for an organization, the corresponding events contain `org_id`. 
      * Use the `sort_order` value in `variations` to program your storefront to display the variation options in the order that you want.

      ### Shopper Catalog Caching

      When conducting a `GET` on `catalog` endpoints, all data returned, including catalog releases, products, nodes and hierarchies, are cached for 5 minutes. This means, if you call the same endpoint again, the catalog data is retrieved from the cached objects pool, optimizing the performance and efficiency of your store front.

      If you use any of the `catalog` endpoints with a `filter` or `include` query parameter, these are cached separately. 

      The cached entries disappear from the cached objects pool after 5 minutes.
paths:
  /catalog:
    get:
      tags:
        - Releases
      summary: Get the catalog release as shoppers
      description: Returns a list of all published releases of the specified catalog.
      operationId: getByContextRelease
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
      responses:
        '200':
          description: The catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/release-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/hierarchies:
    get:
      tags:
        - Shopper Catalog API
      summary: Get all Hierarchies
      description: |
        Returns all hierarchies from a catalog.

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. For information about how rules are matched, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        ### Filtering

        This endpoint supports filtering. For general syntax, see [Filtering](/guides/Getting-Started/filtering).

        | Operator | Description | Supported Attributes | Example |
        |:--- |:--- |:--- |:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. | `name`, `slug`| `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. | `id` | `filter=in(id,some-id)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getByContextAllHierarchies
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/filter-hierarchy'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The hierarchies of the catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/hierarchy-list-data'
        default:
          description: An unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/hierarchies/{hierarchy_id}:
    get:
      tags:
        - Shopper Catalog API
      summary: Get a Hierarchy
      description: |
        Returns a hierarchy from the catalog.

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog to retrieve. For information about how catalog rules are matched, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules).
      operationId: getByContextHierarchy
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - description: The catalog hierarchy ID.
          name: hierarchy_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The catalog hierarchy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/hierarchy-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/hierarchies/{hierarchy_id}/nodes:
    get:
      tags:
        - Shopper Catalog API
      summary: Get a Hierarchy's Nodes
      description: |
        Returns all the nodes for the specified hierarchy.

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. For information about how rules are matched, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        In the `breadcrumbs` metadata, you can identify the parent nodes that a node is associated with. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        ### Filtering

        This endpoint supports filtering. For general syntax, see [Filtering](/guides/Getting-Started/filtering).

        | Operator | Description | Supported Attributes | Example |
        |:--- |:--- |:--- |:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. | `name`, `slug`| `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. | `id` | `filter=in(id,some-id)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getByContextHierarchyNodes
      parameters:
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-node'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
        - description: The catalog hierarchy ID.
          name: hierarchy_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The child nodes of a catalog hierarchy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/node-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/hierarchies/{hierarchy_id}/children:
    get:
      tags:
        - Shopper Catalog API
      summary: Get a Hierarchy's Children
      description: |
        Returns the parent nodes for the specified hierarchy.

        ![Parent Nodes](/assets/rootnodes.PNG)

        If you have multiple catalog rules defined, the rule that best matches the shopperʼs context is used to determine which catalog is retrieved. For information about how rules are matched, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        In the `breadcrumbs` metadata, you can identify the parent nodes that a node is associated with. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        ### Filtering

        The following operators and attributes are available when filtering on this endpoint.

        | Operator | Description | Supported Attributes | Example |
        |:--- |:--- |:--- |:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. | `name`, `slug`| `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. | `id` | `filter=in(id,some-id)` |

        For more information, see [Filtering](/guides/Getting-Started/filtering).

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getByContextHierarchyChildNodes
      parameters:
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-node'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
        - description: The catalog hierarchy ID.
          name: hierarchy_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The child nodes of a catalog hierarchy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/node-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/nodes:
    get:
      tags:
        - Shopper Catalog API
      summary: Get all Nodes
      description: |
        Returns all nodes in the catalog.

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. For information about how rules are matched, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        You can see the parent nodes a node is associated with in the `breadcrumbs` metadata for each node. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        In a catalog, you can use a filter to return a list of nodes in a hierarchy structure that a product belongs to. You can use this to build breadcrumbs in your storefront. For more information, see [Building breadcrumbs in a storefront](#building-breadcrumbs-in-a-storefront).

        The response lists the products associated with the nodes. If products are [curated](/guides/How-To/Products/curating-products), they are displayed in `curated_products`. Product curation allows you to promote specific products within each of your hierarchies, enabling you to create unique product collections in your storefront.

        - You can only curate 20 products or less. You cannot have more than 20 curated products.
        - If a curated product is removed from a node, the product is also removed from the `curated_products` list.

        ### Filtering

        This endpoint supports filtering. For general syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available.

        | Operator  | Description | Attributes | Example |
        | --- | --- | --- | --- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. | `name`, `slug` | `filter=eq(name,some-name)` |
        | `in`      | Checks if the values are included in the specified string. If they are, the condition is true.
        | `Id` |  `filter=in(id,9214719b-17fe-4ea7-896c-d61e60fc0d05,e104d541-2c52-47fa-8a9a-c4382480d97c,65daaf68-ff2e-4632-8944-370de835967d)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getByContextAllNodes
      parameters:
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-node'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The nodes of the catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/node-list-data'
        default:
          description: An unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/nodes/{node_id}:
    get:
      tags:
        - Shopper Catalog API
      summary: Get a Node
      description: |
        Returns a node from the catalog.

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. For information about how rules are matched, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        You can see the parent nodes a node is associated with in the `breadcrumbs` metadata for each node. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        The response lists the products associated with a node. If products are [curated](/guides/How-To/Products/curating-products), they are displayed in `curated_products`. Product curation allows you to promote specific products within each of your nodes, enabling you to create unique product collections in your storefront.

        - If you don't provide any `curated_products`, products are listed by their `updated_at` time in descending order, with the most recently updated product first.
        - If you configure `curated_products` for only a few products, the curated products are displayed first and the other products are displayed in the order of `updated_at` time.
        - You can only curate 20 products or less. You cannot have more than 20 curated products.
        - A product that is curated has the `"curated_product": true` attribute displayed.
        - If a curated product is removed from a node, the product is also removed from the `curated_products` list.
      operationId: getByContextNode
      parameters:
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/accept-language'
        - description: The catalog node ID.
          name: node_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The catalog node.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/node-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/nodes/{node_id}/relationships/children:
    get:
      tags:
        - Shopper Catalog API
      summary: Get a Node's Children
      description: |
        Returns the child nodes for a node in the catalog.

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. For information about how rules are matched, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        You can see which parent nodes a node is associated with in the `breadcrumbs` metadata for each node. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        The response lists the products associated with the nodes. If products are [curated](/guides/How-To/Products/curating-products), they are displayed in `curated_products`. Product curation allows you to promote specific products within each of your hierarchies, enabling you to create unique product collections in your storefront.

        - If you don't provide any curated_products, products are listed by their updated_at time in descending order, with the most recently updated product first.
        - If you configure curated_products for only a few products, the curated products are displayed first and the other products are displayed in the order of updated_at time.
        - You can only curate 20 products or less. You cannot have more than 20 curated products.
        - A product that is curated has the "curated_product": true attribute displayed.
        - If a curated product is removed from a node, the product is also removed from the curated_products list.

        ### Filtering

        This endpoint supports filtering. For general syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available.

        | Operator  | Description | Attributes | Example |
        | --- | --- | --- | --- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. | `name`, `slug` | `filter=eq(name,some-name)` |
        | `in`      | Checks if the values are included in the specified string. If they are, the condition is true.
        | `Id` |  `filter=in(id,9214719b-17fe-4ea7-896c-d61e60fc0d05,e104d541-2c52-47fa-8a9a-c4382480d97c,65daaf68-ff2e-4632-8944-370de835967d)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getByContextChildNodes
      parameters:
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-node'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
        - description: The catalog node ID.
          name: node_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The child nodes of a catalog node.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/node-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/products:
    get:
      tags:
        - Shopper Catalog API
      summary: Get all Products
      description: |
        Retrieves the list of products from the catalog. Only the products in a live status are retrieved.

        ### Catalog Rules

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. If no catalog rules are configured, the first catalog found is returned. For information about how rules are matched, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        ### Product and Node Associations

         You can see the parent nodes a product is associated within the `bread_crumbs` and `bread_crumb_nodes` metadata for each product. For example, this is useful if you want to improve how your shoppers search your store. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        ### Including Resources

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug. 

        | Parameter | Required | Description                                                                                                                                                                                                    |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product. |
        | `files`              | Optional | Any files associated with a product. |

        See [**Including Resources**](/guides/Getting-Started/includes).

        ### Filtering

        This endpoint supports filtering. For general filtering syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available when filtering on this endpoint.

        | Operator | Description                                                                                     | Supported Attributes                                     | Example |
        |:---|:------------------------------------------------------------------------------------------------|:---------------------------------------------------------|:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. For `product_types` and `tags`, you can only specify one. For example, `filter=eq(product_types,child)`.            | `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags` | `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. For `product_types` and `tags`, you can specify more than one. For example, `filter=in(product_types,child,bundle)`. | `id`, `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags`          | `filter=in(id,some-id)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getByContextAllProducts
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/include'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/filter-product'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The products of a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/products/{product_id}:
    get:
      tags:
        - Shopper Catalog API
      summary: Get a Product
      description: |
        Returns the specified product from the catalog. The product must be in the `live` status.

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. For information about how rules are matched, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        You can see the parent nodes a product is associated with in the `bread_crumbs` and `bread_crumb_nodes` metadata for each product. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug. 

        | Parameter | Required | Description                                                                                                                                                                                                       |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product. |
        | `files`              | Optional | Any files associated with a product. |

        See [**Including Resources**](/guides/Getting-Started/includes).
      operationId: getByContextProduct
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/include'
        - description: The product ID.
          name: product_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The product of a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/products/{product_id}/relationships/{custom_relationship_slug}/products:
    get:
      tags:
        - Shopper Catalog API
      summary: Get all Related Products of a Product
      description: |
        Returns related products of the provided product ID from a catalog.
      operationId: getByContextAllRelatedProducts
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/filter-product'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
        - description: The product ID.
          name: product_id
          in: path
          required: true
          schema:
            type: string
        - description: The custom relationship slug.
          name: custom_relationship_slug
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The related products of a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/products/{product_id}/relationships/component_products:
    get:
      tags:
        - Shopper Catalog API
      summary: Get a Bundle's Component Products
      description: |
        With Product Experience Manager, you can [create](/docs/api/pxm/products/create-product) and manage bundles. A bundle is a purchasable product, comprising 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.

        This endpoint returns a list of component product IDs for the specified bundle.
      operationId: getByContextComponentProductIDs
      parameters:
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - description: The product ID.
          name: product_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The list of component product IDs of a bundle product from a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-reference-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/products/{product_id}/relationships/children:
    get:
      tags:
        - Shopper Catalog API
      summary: Get a Parent Product's Child Products
      description: |
        For a specified product and catalog release, retrieves a list of child products from a parent product. Any product other than a base product results in a `422 Unprocessable Entity` response. Only the products in a `live` status are retrieved.

        If you have multiple catalog rules defined, the rule that best matches the shopperʼs context is used to determine which catalog is retrieved. If no catalog rules are configured, the first catalog found is returned. For information about how rules are matched, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        You can see the parent nodes a product is associated within the `breadcrumbs` metadata for each product. For example, this is useful if you want to improve how your shoppers search your store. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        ### Filtering

        This endpoint supports filtering. For general filtering syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available when filtering on this endpoint.

        | Operator | Description                                                                                     | Supported Attributes                                     | Example |
        |:---|:------------------------------------------------------------------------------------------------|:---------------------------------------------------------|:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. For `product_types` and `tags`, you can only specify one. For example, `filter=eq(product_types,child)`.            | `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags` | `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. For `product_types` and `tags`, you can specify more than one. For example, `filter=in(product_types,child,bundle)`. | `id`, `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags`          | `filter=in(id,some-id)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.

        ### Including Resources

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug. 

        | Parameter | Required | Description                                                                                                                                                                                                    |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product. |
        | `files`              | Optional | Any files associated with a product. |

        See [**Including Resources**](/guides/Getting-Started/includes).
      operationId: getByContextChildProducts
      parameters:
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/include'
        - description: The product ID.
          name: product_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-product'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The list of child products of a parent product from a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/hierarchies/{hierarchy_id}/products:
    get:
      tags:
        - Shopper Catalog API
      summary: Get a Hierarchy's Products
      description: |
        Returns the products associated with the specified hierarchy in the catalog. The products must be in the live status.

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. See [Resolving catalog rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        You can see the parent nodes a product is associated with in the `bread_crumbs` and `bread_crumb_nodes` metadata for each product. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        ### Filtering

        This endpoint supports filtering. For general filtering syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available when filtering on this endpoint.

        | Operator | Description                                                                                     | Supported Attributes                                     | Example |
        |:---|:------------------------------------------------------------------------------------------------|:---------------------------------------------------------|:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. For `product_types` and `tags`, you can only specify one. For example, `filter=eq(product_types,child)`.            | `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags` | `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. For `product_types` and `tags`, you can specify more than one. For example, `filter=in(product_types,child,bundle)`. | `id`, `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags`          | `filter=in(id,some-id)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.

        ### Including Resources

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug. 

        | Parameter | Required | Description                                                                                                                                                                                                    |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product. |
           `files`              | Optional | Any files associated with a product. |

        See [**Including Resources**](/guides/Getting-Started/includes).
      operationId: getByContextProductsForHierarchy
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/include'
        - $ref: '#/components/parameters/filter-product'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
        - description: The catalog hierarchy ID.
          name: hierarchy_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The products of a catalog hierarchy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/nodes/{node_id}/relationships/products:
    get:
      tags:
        - Shopper Catalog API
      summary: Get a Node's Products
      description: |
        Returns the products associated with the specified hierarchy node in the catalog. The products must be in the `live` status. If the products have been curated then the products are returned in the order specified in the `curated_products` attribute. A product that is curated has the `"curated_product": true` attribute displayed.

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. See [Resolving catalog rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        You can see the parent nodes a product is associated with in the `bread_crumbs` and `bread_crumb_nodes` metadata for each product. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        ### Filtering

        This endpoint supports filtering. For general filtering syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available when filtering on this endpoint.

        | Operator | Description                                                                                     | Supported Attributes                                     | Example |
        |:---|:------------------------------------------------------------------------------------------------|:---------------------------------------------------------|:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. For `product_types` and `tags`, you can only specify one. For example, `filter=eq(product_types,child)`.            | `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags` | `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. For `product_types` and `tags`, you can specify more than one. For example, `filter=in(product_types,child,bundle)`. | `id`, `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags`          | `filter=in(id,some-id)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.

        ### Including Resources

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug.

        | Parameter | Required | Description                                                                                                                                                                                                    |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product. |
        | `files`              | Optional | Any files associated with a product. |

        See [**Including Resources**](/guides/Getting-Started/includes).
      operationId: getByContextProductsForNode
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/include'
        - $ref: '#/components/parameters/filter-product'
        - description: The catalog node ID.
          name: node_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The products of a catalog node.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalog/products/{product_id}/configure:
    post:
      tags:
        - Shopper Catalog API
      summary: Configure a Shopper Bundle
      description: |
        Once you have configured your product bundles, you can display them in your storefront in your published catalog. Depending on how you have configured the minimum and maximum values for the product options in your components, you can allow your shoppers to choose which products they want to select. For example, you can enable a shopper to select 1 or more product options from a list of 10, giving your shoppers greater flexibility when selecting products in your store front.

        - Products must be in a `live` status.
        - If you have not specified any minimum or maximum values for the product options in your components, your shoppers can select any combination of product options.

        If you have configured minimum and maximum values using [Create a Bundle](/docs/api/pxm/products/create-product), this becomes part of the `bundle_configuration`. You can check how your bundle is configured using [Get a product in a catalog release](/docs/api/pxm/catalog/get-product) in `bundle_configuration` under `meta`. The `bundle_configuration` forms the body of the request.

        The response updates the `bundle_configuration` with the product options the shopper selects. The `meta` data is updated with the `meta` data of the selected product options. In your storefront, you could display this as a summary of the product options a shopper has selected.

        ### Including Resources

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug. 

        | Parameter | Required | Description                                                                                                                                                                                                    |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product. |
        | `files`              | Optional | Any files associated with a product. |

        See [**Including Resources**](/guides/Getting-Started/includes).
      operationId: configureByContextProduct
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/channel'
        - $ref: '#/components/parameters/tag'
        - $ref: '#/components/parameters/include'
        - description: The product ID.
          name: product_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/bundle-configuration-data'
      responses:
        '200':
          description: The configured product of a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs:
    post:
      tags:
        - Catalogs
      summary: Creates a new catalog
      description: |
        Before you create a catalog, you must define the following resources:

        - Hierarchies - hierarchies and nodes to categorize the products.
        - Products - product information, associated assets, and links to hierarchy nodes.
        - Price Books - prices for the products associated with the hierarchies. You can create multiple price books for different scenarios, such as seasonal sales, business versus retail customer pricing, and reward programs. When creating a catalog, you can specify up to five price books. You must configure a priority for your price books. Product prices are displayed in the catalog according to the priority of the price books. Priority is a number and the price book with the highest number has the highest priority.
      operationId: createCatalog
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/catalog-create-data'
        description: Creates a catalog with the following attributes.
        required: true
      responses:
        '201':
          description: The created catalog
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/catalog-data'
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
    get:
      tags:
        - Catalogs
      summary: Gets all authorized catalogs
      description: |
        Retrieves a list of all the catalogs that you are authorized to view. Currently, published catalogs are limited to the current release and two releases prior to the current release. You can see the differences between the last 2 consecutive catalog releases using the delta link returned in the response of a [publish a catalog](/docs/api/pxm/catalog/publish-release) endpoint.

        You can use the `is_full_delta` attribute returned from the `get a release of a catalog` endpoint to determine if you need to refresh the data in your company system before publishing a catalog release and injecting fresh data in a delta link. The `is_full_delta` attribute tells you if this is a full publish of a catalog release. Using a search service as an example, if the `is_full_delta` attribute is `true`, you should remove all data about that catalog from the search service before publishing a catalog release and injecting fresh data from the delta file. See [Publish a catalog](/docs/api/pxm/catalog/publish-release).

        If the `is_full_publish` attribute returned in the response is `false`, data from the previous catalog release overlaid the existing data in the delta file. The `is_full_publish` attribute is always `true` the first time a catalog is published. When determining whether delta data needs to be refreshed, ignore this attribute and always use the `is_full_delta` attribute.

        ### Filtering

        This endpoint supports filtering. For general filtering syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available when filtering on this endpoint.

        | Operator | Description                                                                                     | Supported Attributes                                     | Example |
        |:---|:------------------------------------------------------------------------------------------------|:---------------------------------------------------------|:--- |
        | `eq` | Checks if the values of two operands are equal. If they are, the condition is true.       | `name`, | `filter=eq(name,some-name)` |
        | `in` | Checks if the values are included in the specified list. If they are, the condition is true. | `name`   | `filter=in(name,some-name,some-name2)` |
        | `like` | Checks if the operand contains the specified string. Wildcards are supported | `name`          | `filter=like(name,*some-name*)` |
      operationId: getCatalogs
      parameters:
        - $ref: '#/components/parameters/filter-catalog'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The list of catalogs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/catalog-list-data'
        default:
          description: An unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}:
    get:
      tags:
        - Catalogs
      summary: Get a catalog by ID
      description: Retrieves the specified catalog.
      operationId: getCatalogByID
      parameters:
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/catalog-data'
        default:
          description: An unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
    put:
      tags:
        - Catalogs
      summary: Updates a catalog
      description: Specify whichever attributes you want to change. The values of the other attributes remain the same. If the attributes section is empty, the catalog is not updated.
      operationId: updateCatalog
      parameters:
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/catalog-update-data'
        description: Updated catalog.
        required: true
      responses:
        '200':
          description: An updated catalog with the following attributes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/catalog-data'
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
    delete:
      tags:
        - Catalogs
      summary: Deletes a catalog
      description: Deletes an unpublished catalog. Use [**Delete a Release**](/docs/api/pxm/catalog/delete-release-by-id) and [**Delete All Releases**](/docs/api/pxm/catalog/delete-releases) to delete releases of a catalog. If the catalog is associated with any catalog rules, you must first update the catalog rules to remove the catalog.
      operationId: deleteCatalogByID
      parameters:
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: A 204 response indicates that the catalog has been deleted.
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases:
    post:
      tags:
        - Releases
      summary: Publishes a catalog
      description: |

        Publishes a catalog. You must publish a catalog before you can retrieve that catalog in an organization or store. The hierarchies, live products, and prices associated with a published catalog are in read-only mode. If you make a change to these resources, for example, a change to your price book or hierarchies, you need to republish the catalog.

        You can get [a catalog release](/docs/api/pxm/catalog/get-release-by-id) to retrieve a published catalog. Currently, published catalogs are limited to the current release and two releases prior to the current release.

        You can see the differences between the last 2 consecutive catalog releases. This is useful if want to understand how your products have changed in your catalog, ensuring your site search integration is kept up-to-date.

        Once a catalog release has completed publishing, the delta relationship links to the delta document.

        The `delta` links are signed and only valid for 1 hour. Re-reading a catalog release, for example, using [Getting a release of a catalog](/docs/api/pxm/catalog/get-release-by-id) returns a fresh a link.

        You can use the `is_full_delta` attribute returned from the `get a release of a catalog` endpoint to determine if you need to refresh the data in your company system before injecting fresh data in a `delta` link. The `is_full_delta` attribute tells you if this is a full publish of the catalog. Using a search service as an example, if the `is_full_delta` attribute is `true`, you should remove all data about that catalog from the search service before injecting fresh data from the `delta` file. If the `is_full_delta` attribute is `false`, then data from the previous catalog overlays the existing data in the `delta` file. To publish a catalog and inject fresh data in a `delta` link, set `export_full_delta` to `true`.

        If a previous catalog publish date is greater than 90 days, then a full catalog publish is automatically performed. If you publish your catalogs infrequently, Commerce may perform a full publish when you are expecting a delta publish.

        :::caution

        Generating a full delta is resource intensive and slows down the publishing process and so should only be performed in certain circumstances, for example, when initializing an integration with a service like Algolia.

        :::

        The `is_full_delta` attribute is always `true` the first time a catalog is published. The information is stored in a collection of `json` documents in a compressed file. You can either manually check the file or, for example, use them to automatically update another company system you may have.

        - Delta files are only available for 30 days.
        - Delta files are removed when a catalog release is deleted.

        Each document has a `delta_type` with one of the following values, depending on whether a product has been deleted, updated or created in a catalog release.

        - `delete` describes products deleted from this release of a catalog.
        - `createupdate` describes products updated in this release of a catalog.

        ### Multi-Store Management Solutions

        In a multi-store management solution.

        - You can create organization catalogs. Your organization catalogs are available for your stores to use.
        - Your stores can create their own catalogs.
        - Your stores can create catalogs that have a combination of organization products and store products.

        If you are publishing a catalog in a store that contains resources from an organization, in Commerce Manager, you must enable the **Include Organization Resources in Catalog Publishes** checkbox.

        1. Go to **SYSTEM** > **Store Settings**.
        2. Click **General Settings**.
        3. Select **PXM** from the list.
        4. Select the **Include Organization Resources in Catalog Publishes** checkbox.
      operationId: publishRelease
      parameters:
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/catalog-release-create-data'
        description: Options for catalog release publishing
      responses:
        '201':
          description: Publishes a catalog release with the following attributes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/release-data'
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
    get:
      tags:
        - Releases
      summary: Gets all authorized catalog releases
      description: |
        Returns a list of all published releases of the specified catalog. Currently, published catalogs are limited to the current release and two releases prior to the current release. You can see the differences between the last 2 consecutive catalog releases using the `delta` link returned in the response of a `publish a catalog` endpoint.

        You can use the `is_full_delta` attribute returned from the `get a release of a catalog` endpoint to determine if you need to refresh the data in your company system before publishing a catalog release and injecting fresh data in a delta link. The `is_full_delta` attribute tells you if this is a full publish of a catalog release. Using a search service as an example, if the `is_full_delta` attribute is `true`, you should remove all data about that catalog from the search service before publishing a catalog release and injecting fresh data from the delta file. 

        If the `is_full_publish` attribute returned in the response is `false`, data from the previous catalog release overlaid the existing data in the delta file. The `is_full_publish` attribute is always `true` the first time a catalog is published. When determining whether delta data needs to be refreshed, ignore this attribute and always use the `is_full_delta` attribute.
      operationId: getReleases
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The list of catalogs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/release-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
    delete:
      tags:
        - Releases
      summary: Deletes all releases
      description: Deletes all releases of the specified published catalog.
      operationId: deleteReleases
      parameters:
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: A 204 response indicates that the releases have been deleted.
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}:
    get:
      tags:
        - Releases
      summary: Get a catalog release by ID
      description: Retrieves the specified catalog release.
      operationId: getReleaseByID
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/release-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
    delete:
      tags:
        - Releases
      summary: Deletes a release
      description: Deletes the specified published catalog release.
      operationId: deleteReleaseByID
      parameters:
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: A 204 response indicates that the release has been deleted.
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/rules:
    post:
      tags:
        - Rules
      summary: Creates a new catalog rule
      description: |
        If you have multiple catalogs, create catalog rule resources. With catalog rules, you can display different catalogs to different shoppers. For example, you can display a preferred pricing catalog to a few special customers. Or you can display one catalog to shoppers using your website and a different catalog to shoppers using your mobile app. Finally, you can define custom criteria by creating tags.

        :::note

        - If you have one catalog for all customers and channels, you can omit creating this resource.
        - Due to the way catalogs are cached in Commerce, using catalog rules to display catalogs sometimes causes a 5-minute time delay before the catalogs are displayed.
        - You cannot create catalog rules for organization catalogs.

        :::

        For ideas about the kinds of business scenarios you can achieve with catalog rules, see [Catalog Rules](/docs/api/pxm/catalog/rules). To understand how catalogs are matched to shoppers by using rules, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).
      operationId: createRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/rule-create-data'
        description: Creates a catalog rule with the following attributes.
        required: true
      responses:
        '201':
          description: The created catalog rule
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rule-data'
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
    get:
      tags:
        - Rules
      summary: Gets all authorized catalog rules
      description: |
        Retrieves all authorized catalog rules.

        ### Filtering

        This endpoint supports filtering. For general filtering syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are supported.

        | Operator | Description | Supported Attributes | Example |
        |:--- |:--- |:--- |:--- |
        | `eq` | Equals. Checks if the values of two operands are equal. If they are, the condition is true. | `id`,`catalog_id`,`account_ids`,`customer_ids`,`channels`,`tags`,`pricebook_ids` | `filter=eq(id,some-id)` | 
        | `in` | Checks if the values are included in the specified string. If they are, the condition is true. | `id`,`account_ids`,`customer_ids`,`channels`,`tags`,`pricebook_ids` | `filter=in(account_ids,some-id,another-id)` | 
      operationId: getRules
      parameters:
        - $ref: '#/components/parameters/filter-rule'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The list of catalog rules.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rule-list-data'
        default:
          description: An unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/rules/{catalog_rule_id}:
    get:
      tags:
        - Rules
      summary: Get a catalog rule by ID
      operationId: getRuleByID
      parameters:
        - description: The catalog rule ID.
          name: catalog_rule_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The catalog rile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rule-data'
        default:
          description: An unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
    put:
      tags:
        - Rules
      summary: Updates a catalog rule
      description: Specify whichever attributes you want to change. The values of the other attributes remain the same. If the attributes section is empty, the catalog rule is not updated.
      operationId: updateRule
      parameters:
        - description: The catalog rule ID.
          name: catalog_rule_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/rule-update-data'
        description: An updated catalog rule with the following attributes.
        required: true
      responses:
        '200':
          description: An Updated catalog rule with the following attributes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rule-data'
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
    delete:
      tags:
        - Rules
      summary: Deletes a catalog rule
      operationId: deleteRuleByID
      parameters:
        - description: The catalog rule ID.
          name: catalog_rule_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: A 204 response indicates that the catalog rule has been deleted.
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/rules/validate:
    post:
      tags:
        - Rules
      summary: Validate catalog rules for a given context
      description: |
        Validates catalog rules for a given context and returns a list of matching catalog rules.
      operationId: validateCatalogRules
      parameters:
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/catalog-rule-validator-request'
        required: true
      responses:
        '200':
          description: List of matching catalog rules
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rule-list-data'
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/hierarchies:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get all Hierarchies
      description: |
        Returns the hierarchies from a published catalog.

        :::note

        Currently, published catalogs are limited to the current release and two releases prior to the current release.

        :::

        ### Filtering

        This endpoint supports filtering. For general syntax, see [Filtering](/guides/Getting-Started/filtering).

        | Operator | Description | Supported Attributes | Example |
        |:--- |:--- |:--- |:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. | `name`, `slug`| `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. | `id` | `filter=in(id,some-id)` | 

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getAllHierarchies
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/filter-hierarchy'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The hierarchies of a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/hierarchy-list-data'
        default:
          description: An unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get a Hierarchy
      description: |
        Returns the specified hierarchy from a published catalog.

        :::note

        Currently, published catalogs are limited to the current release and two releases prior to the current release.

        :::
      operationId: getHierarchy
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - description: The catalog hierarchy ID.
          name: hierarchy_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The catalog hierarchy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/hierarchy-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}/nodes:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get a Hierarchy's Nodes
      description: |
        Returns all nodes for the specified hierarchy from a published catalog.

        :::note

        Currently, published catalogs are limited to the current release and two releases prior to the current release.

        :::

        In the `breadcrumbs` metadata, you can identify the parent nodes that a node is associated with. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        ### Filtering

        This endpoint supports filtering. For general syntax, see [Filtering](/guides/Getting-Started/filtering).

        | Operator | Description | Supported Attributes | Example |
        |:--- |:--- |:--- |:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. | `name`, `slug`| `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. | `id` | `filter=in(id,some-id)` | 

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getHierarchyNodes
      parameters:
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - description: The catalog hierarchy ID.
          name: hierarchy_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-node'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The child nodes of a catalog hierarchy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/node-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}/children:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get a Hierarchy's Children
      description: |
        Returns the parent nodes for the specified hierarchy from a published catalog.

        ![Parent Nodes](/assets/rootnodes.PNG)

        :::note

        Currently, published catalogs are limited to the current release and two releases prior to the current release.

        :::

        In the `breadcrumbs` metadata, you can identify the parent nodes that a node is associated with. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        ### Filtering

        This endpoint supports filtering. For general syntax, see [Filtering](/guides/Getting-Started/filtering).

        | Operator | Description | Supported Attributes | Example |
        |:--- |:--- |:--- |:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. | `name`, `slug`| `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. | `id` | `filter=in(id,some-id)` | 

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getHierarchyChildNodes
      parameters:
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - description: The catalog hierarchy ID.
          name: hierarchy_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-node'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The child nodes of a catalog hierarchy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/node-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/nodes:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get all Nodes
      description: |
        Returns the child nodes from a published catalog.

        :::note

        Currently, published catalogs are limited to the current release and two releases prior to the current release.

        :::

        You can see the parent nodes a node is associated with in the `breadcrumbs` metadata for each node. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        In a catalog, you can use a filter to return a list of nodes in a hierarchy structure that a product belongs to. You can use this to build breadcrumbs in your storefront. See [Building breadcrumbs in a storefront](#building-breadcrumbs-in-a-storefront).

        The response lists the products associated with the nodes. If products are [curated](/guides/How-To/Products/curating-products), they are displayed in `curated_products`. Product curation allows you to promote specific products within each of your hierarchies, enabling you to create unique product collections in your storefront.

        - If you don't provide any `curated_products`, products are listed by their `updated_at` time in descending order, with the most recently updated product first.
        - If you configure `curated_products` for only a few products, the curated products are displayed first and the other products are displayed in the order of `updated_at` time.
        - You can only curate 20 products or less. You cannot have more than 20 curated products.
        - If a curated product is removed from a node, the product is also removed from the `curated_products` list.
        - A product that is curated has the `"curated_product": true` attribute displayed.

        ### Filtering

        This endpoint supports filtering. For general syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available.

        | Operator  | Description | Attributes | Example |
        | --- | --- | --- | --- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. | `name`, `slug` | `filter=eq(name,some-name)` |
        | `in`      | Checks if the values are included in the specified string. If they are, the condition is true.
        | `Id` |  `filter=in(id,9214719b-17fe-4ea7-896c-d61e60fc0d05,e104d541-2c52-47fa-8a9a-c4382480d97c,65daaf68-ff2e-4632-8944-370de835967d)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getAllNodes
      parameters:
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-node'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The nodes of a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/node-list-data'
        default:
          description: An unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/nodes/{node_id}:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get a Node
      description: |
        Returns a node from a published catalog.

        :::note

        Currently, published catalogs are limited to the current release and two releases prior to the current release.

        :::

        You can see the parent nodes a node is associated with in the `breadcrumbs` metadata for each node. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        The response lists the products associated with the nodes. If products are [curated](/guides/How-To/Products/curating-products), they are displayed in `curated_products`. Product curation allows you to promote specific products within each of your hierarchies, enabling you to create unique product collections in your storefront.

        - If you don't provide any `curated_products`, products are listed by their `updated_at` time in descending order, with the most recently updated product first.
        - If you configure `curated_products` for only a few products, the curated products are displayed first and the other products are displayed in the order of `updated_at` time.
        - You can only curate 20 products or less. You cannot have more than 20 curated products.
        - If a curated product is removed from a node, the product is also removed from the `curated_products` list.
        - A product that is curated has the `"curated_product": true` attribute displayed.
      operationId: getNode
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - description: The catalog node ID.
          name: node_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The catalog node.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/node-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/nodes/{node_id}/relationships/children:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get a Node's Children
      description: |
        Returns the child nodes for a node from a published catalog.

        :::note

        Currently, published catalogs are limited to the current release and two releases prior to the current release.

        :::

        You can see the parent nodes a node is associated with in the `breadcrumbs` metadata for each node. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        In a catalog, you can use a filter to return a list of nodes in a hierarchy structure that a product belongs to. You can use this to build breadcrumbs in your storefront. For more information, see [Building breadcrumbs in a storefront](#building-breadcrumbs-in-a-storefront).

        The response lists the products associated with the nodes. If products are [curated](/guides/How-To/Products/curating-products), they are displayed in `curated_products`. Product curation allows you to promote specific products within each of your hierarchies, enabling you to create unique product collections in your storefront.

        - If you don't provide any `curated_products`, products are listed by their `updated_at` time in descending order, with the most recently updated product first.
        - If you configure `curated_products` for only a few products, the curated products are displayed first and the other products are displayed in the order of `updated_at` time.
        - You can only curate 20 products or less. You cannot have more than 20 curated products.
        - If a curated product is removed from a node, the product is also removed from the `curated_products` list.
        - A product that is curated has the `"curated_product": true` attribute displayed.

        ### Filtering

        This endpoint supports filtering. For general syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available.

        | Operator  | Description | Attributes | Example |
        | --- | --- | --- | --- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. | `name`, `slug` | `filter=eq(name,some-name)` |
        | `in`      | Checks if the values are included in the specified string. If they are, the condition is true.
        | `Id` |  `filter=in(id,9214719b-17fe-4ea7-896c-d61e60fc0d05,e104d541-2c52-47fa-8a9a-c4382480d97c,65daaf68-ff2e-4632-8944-370de835967d)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getChildNodes
      parameters:
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - description: The catalog node ID.
          name: node_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-node'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The child nodes of a catalog node.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/node-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/products:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get all Products
      description: |
        Returns the products from a published catalog. Only the products in a `live` status are retrieved. Currently, published catalogs are limited to the current release and two releases prior to the current release.

        You can see the parent nodes a product is associated with in the `bread_crumbs` and `bread_crumb_nodes` metadata for each product. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        The `variations` object lists the variation IDs and variation option IDs and their corresponding product IDs that are generated when the variation and variation options are built with a product. The `variations` object can then be added to your catalogs. By default, variations and variation options are sorted randomly. You can use the `sort_order` attribute to sort the order of your variation and variation options in `variations`. Once a parent product is published in a catalog, the [Get a List of products in a catalog release](/docs/api/pxm/catalog/get-all-products) response displays the sorted variations and variation options. Variations and variation options are displayed in descending order according to their `sort_order` values.

        ### Including Resources

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug. 

        | Parameter           | Required | Description                                                                                                                                                                                                           |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product.                                                                                                           |
        | `files`              | Optional | Any files associated with a product. 

        See [**Including Resources**](/guides/Getting-Started/includes).

        ### Filtering

        This endpoint supports filtering. For general filtering syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available when filtering on this endpoint.

        | Operator | Description                                                                                     | Supported Attributes                                     | Example |
        |:---|:------------------------------------------------------------------------------------------------|:---------------------------------------------------------|:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. For `product_types`, you can only specify one product type. For example, `filter=eq(product_types,child)`.            | `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags` | `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. For `product_types`, you can specify more than one product type. For example, `filter=in(product_types,child,bundle)`. | `id`, `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags`          | `filter=in(id,some-id)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.
      operationId: getAllProducts
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/include'
        - $ref: '#/components/parameters/filter-product'
        - $ref: '#/components/parameters/pricebook-ids-for-price-segmentation-preview'
        - $ref: '#/components/parameters/pricebook-ids-of-available-prices-to-show'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The products of a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/products/{product_id}:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get a Product
      description: |
        Returns a product from a published catalog. The product must be in `live` status. Currently, published catalogs are limited to the current release and two releases prior to the current release.

        ### Product and Node Associations in Breadcrumb Metadata

        You can see the parent nodes a product is associated with in the `bread_crumbs` and `bread_crumb_nodes` metadata for each product. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        ### Product Variations

        The `variations` object lists the variation IDs and variation option IDs and their corresponding product IDs that are generated when the variation and variation options are built with a product. The `variations` object can then be added to your catalogs. By default, variations and variation options are sorted randomly. You can use the `sort_order`attribute to sort the order of your variation and variation options in `variations`. Once a parent product is published in a catalog, the get a product in a catalog release response displays the sorted variations and variation options. Variations and variation options are displayed in descending order according to their `sort_order` values.

        ### Including Resources

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug. 

        | Parameter          | Required | Description                                                                                                                                                                                                           |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product.                                                                                                           |
        | `files`              | Optional | Any files associated with a product. 

        See [**Including Resources**](/guides/Getting-Started/includes).
      operationId: getProduct
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/include'
        - $ref: '#/components/parameters/pricebook-ids-for-price-segmentation-preview'
        - $ref: '#/components/parameters/pricebook-ids-of-available-prices-to-show'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - description: The product ID.
          name: product_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The product of a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/products/{product_id}/relationships/{custom_relationship_slug}/products:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get all Related Products of a Product
      description: |
        Returns related products of the provided product ID from a published catalog.
      operationId: getAllRelatedProducts
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-product'
        - $ref: '#/components/parameters/pricebook-ids-for-price-segmentation-preview'
        - $ref: '#/components/parameters/pricebook-ids-of-available-prices-to-show'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - description: The product ID.
          name: product_id
          in: path
          required: true
          schema:
            type: string
        - description: The custom relationship slug.
          name: custom_relationship_slug
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The related products of a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/products/{product_id}/relationships/component_products:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get a Bundle's Component Products
      description: |
        With Product Experience Manager, you can [create](/docs/api/pxm/products/create-product) and manage bundles. A bundle is a purchasable product, comprising 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.

        This endpoint returns a list of component product IDs for the specified bundle.

        ### Including Resources

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug. 

        | Parameter | Required | Description                                                                                                                                                                                                    |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product. |
        | `files`              | Optional | Any files associated with a product. |

        See [**Including Resources**](/guides/Getting-Started/includes).
      operationId: getComponentProductIDs
      parameters:
        - $ref: '#/components/parameters/include'
        - $ref: '#/components/parameters/pricebook-ids-for-price-segmentation-preview'
        - $ref: '#/components/parameters/pricebook-ids-of-available-prices-to-show'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - description: The product ID.
          name: product_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The list of component product IDs of a specific bundle product from a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-reference-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/products/{product_id}/relationships/children:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get a Parent Product's Child Products
      description: |
        For a specified product and catalog release, retrieves a list of child products from a parent product. Any product other than a base product results in a `422 Unprocessable Entity` response. Only the products in a `live` status are retrieved.

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. If no catalog rules are configured, the first catalog found is returned. For information about how rules are matched, see [Resolving Catalog Rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        You can see the parent nodes a product is associated within the breadcrumbs metadata for each product. For example, this is useful if you want to improve how your shoppers search your store. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        ### Filtering

        This endpoint supports filtering. For general filtering syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available when filtering on this endpoint.

        | Operator | Description                                                                                     | Supported Attributes                                     | Example |
        |:---|:------------------------------------------------------------------------------------------------|:---------------------------------------------------------|:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. For `product_types`, you can only specify one product type. For example, `filter=eq(product_types,child)`.            | `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags` | `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. For `product_types`, you can specify more than one product type. For example, `filter=in(product_types,child,bundle)`. | `id`, `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags`          | `filter=in(id,some-id)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.

        ### Including Resources

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug. 

        | Parameter | Required | Description                                                                                                                                                                                                    |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product. |
        | `files`              | Optional | Any files associated with a product. |

        See [**Including Resources**](/guides/Getting-Started/includes).
      operationId: getChildProducts
      parameters:
        - $ref: '#/components/parameters/include'
        - $ref: '#/components/parameters/pricebook-ids-for-price-segmentation-preview'
        - $ref: '#/components/parameters/pricebook-ids-of-available-prices-to-show'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - description: The product ID.
          name: product_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-product'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The list of child products of a specific base product from a catalog.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/hierarchies/{hierarchy_id}/products:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get a Hierarchy's Products
      description: |
        Returns the products associated with the specified hierarchy in the catalog. The products must be in the `live` status.

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. See [Resolving catalog rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        You can see the parent nodes a product is associated with in the `bread_crumbs` and `bread_crumb_nodes` metadata for each product. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        The `variations` object lists the variation IDs and variation option IDs and their corresponding product IDs that are generated when the variation and variation options are built with a product. The variations object can then be added to your catalogs. By default, variations and variation options are sorted randomly. You can use the `sort_order` attribute to sort the order of your variation and variation options in variations. Once a parent product is published in a catalog, the [Get a List of products in a catalog](/docs/api/pxm/catalog/get-all-products) release response displays the sorted variations and variation options. Variations and variation options are displayed in descending order according to their `sort_order` values.

        ### Filtering

        This endpoint supports filtering. For general filtering syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available when filtering on this endpoint.

        | Operator | Description                                                                                     | Supported Attributes                                     | Example |
        |:---|:------------------------------------------------------------------------------------------------|:---------------------------------------------------------|:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. For `product_types`, you can only specify one product type. For example, `filter=eq(product_types,child)`.          | `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags` | `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. For `product_types`, you can specify more than one product type. For example, `filter=in(product_types,child,bundle)`. | `id`, `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags`          | `filter=in(id,some-id)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.

        ### Including Resources

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug. 

        | Parameter | Required | Description                                                                                                                                                                                                    |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product. |
        | `files`              | Optional | Any files associated with a product. |

        See [**Including Resources**](/guides/Getting-Started/includes).
      operationId: getProductsForHierarchy
      parameters:
        - $ref: '#/components/parameters/include'
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/pricebook-ids-for-price-segmentation-preview'
        - $ref: '#/components/parameters/pricebook-ids-of-available-prices-to-show'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - description: The catalog hierarchy ID.
          name: hierarchy_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/filter-product'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The products of a catalog hierarchy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
  /catalogs/{catalog_id}/releases/{release_id}/nodes/{node_id}/relationships/products:
    get:
      tags:
        - Administrator Latest Releases Catalog API
      summary: Get a Node's Products
      description: |
        Returns the products associated with the specified hierarchy node in the catalog. The products must be in the `live` status. If the products have been curated, then the products are returned in the order specified in the `curated_products` attribute. A product that is curated has the `"curated_product": true` attribute displayed.

        :::note

        Currently, published catalogs are limited to the current release and two releases prior to the current release.

        :::

        If you have multiple catalog rules defined, the rule that best matches the shoppers context is used to determine which catalog is retrieved. See [Resolving catalog rules](/docs/api/pxm/catalog/rules#resolving-catalog-rules).

        You can see the parent nodes a product is associated with in the `bread_crumbs` and `bread_crumb_nodes` metadata for each product. This is useful if you want to improve how your shoppers search your store, for example. See [Product and Node Associations in Breadcrumb Metadata](/guides/How-To/Catalogs/breadcrumbs).

        The `variations` object lists the variation IDs and variation option IDs and their corresponding product IDs that are generated when the variation and variation options are built with a product. The `variations` object can then be added to your catalogs. By default, variations and variation options are sorted randomly. You can use the `sort_order` attribute to sort the order of your variation and variation options in `variations`. Once a parent product is published in a catalog, the [Get a List of products in a catalog release](/docs/api/pxm/catalog/get-all-products) response displays the sorted variations and variation options. Variations and variation options are displayed in descending order according to their `sort_order` values.

        ### Filtering

        This endpoint supports filtering. For general filtering syntax, see [Filtering](/guides/Getting-Started/filtering). The following operators and attributes are available when filtering on this endpoint.

        | Operator | Description                                                                                     | Supported Attributes                                     | Example |
        |:---|:------------------------------------------------------------------------------------------------|:---------------------------------------------------------|:--- |
        | `Eq` | Checks if the values of two operands are equal. If they are, the condition is true. For `product_types` and `tags`, you can only specify one. For example, `filter=eq(product_types,child)`.          | `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags` | `filter=eq(name,some-name)` |
        | `In` | Checks if the values are included in the specified string. If they are, the condition is true. For `product_types` and `tags`, you can specify more than one. For example, `filter=in(product_types,child,bundle)`. | `id`, `name`, `sku`, `slug`, `manufacturer_part_num`, `upc_ean`, `product_types`, `tags`          | `filter=in(id,some-id)` |

        ### Building breadcrumbs in a storefront

        In a catalog, you can use the nodes directly attached to a product to build breadcrumbs in your storefront. This eliminates the need for additional queries to fetch hierarchy or parent node details. Each node contains all the necessary information in `breadcrumbs` metadata, such as its own details and the details of its parent hierarchy/node(s), to construct the complete breadcrumb path without requiring additional queries.

        An example is shown below:

        `filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`

        - Specify the node IDs directly attached to the product in the filter expression.
        - You can include as many node IDs as required.
        - It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.

        ### Including Resources

        Using the `include` parameter, you can retrieve top-level resources, such as, files or main image, bundle component products and product attributes, such as SKU or slug. 

        | Parameter | Required | Description                                                                                                                                                                                                    |
        |  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
        | `component_products` | Optional | The  component product data and key attribute data, such as SKU or slug, to return for component products in a product bundle.  |
        | `main_image`         | Optional | The main images associated with a product. |
        | `files`              | Optional | Any files associated with a product. |

        See [**Including Resources**](/guides/Getting-Started/includes).
      operationId: getProductsForNode
      parameters:
        - $ref: '#/components/parameters/accept-language'
        - $ref: '#/components/parameters/filter-product'
        - $ref: '#/components/parameters/include'
        - $ref: '#/components/parameters/pricebook-ids-for-price-segmentation-preview'
        - $ref: '#/components/parameters/pricebook-ids-of-available-prices-to-show'
        - description: The catalog ID.
          name: catalog_id
          in: path
          required: true
          schema:
            type: string
        - description: The unique identifier of a published release of the catalog or `latestPublished` for the most recently published version.
          name: release_id
          in: path
          required: true
          schema:
            type: string
        - description: The catalog node ID.
          name: node_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The products of a catalog node.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product-list-data'
        default:
          description: The unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response'
components:
  parameters:
    pricebook-ids-for-price-segmentation-preview:
      in: header
      name: EP-Pricebook-IDs-For-Price-Segmentation-Preview
      description: Supply a comma delimited list of pricebook ids to be used to lookup product prices from when the catalog supports price segmentation. The first pricebook will be highest priority (if more than one is supplied) and the rest in descending priority order. Used only for admin endpoints that dont support shopper context lookup.
      style: simple
      schema:
        type: array
        items:
          type: string
        maxItems: 5
    pricebook-ids-of-available-prices-to-show:
      in: header
      name: EP-Pricebook-IDs-Of-Available-Prices-To-Show
      description: Supply a comma delimited list of pricebook ids to be listed in meta sections available prices . 'all' is a permitted value and will ensure all available prices for a product are shown. 'all' is not recommended if there are lots(10+) of available prices due the large response size.
      style: simple
      schema:
        type: array
        items:
          type: string
    channel:
      description: The list of channels in which this catalog can be displayed. A channel is the shopping experience, such as a mobile app or web storefront. If empty, the catalog rule matches all channels. The channel will eventually be included in the bearer token that is used for authorization, but currently, you must set the `EP-Channel` header in your requests.
      in: header
      name: EP-Channel
      required: false
      schema:
        type: string
    accept-language:
      description: The language and locale your storefront prefers. See [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language).
      in: header
      name: accept-language
      required: false
      schema:
        type: string
    include:
      name: include
      in: query
      description: |
        Using the include parameter, you can retrieve top-level resources.

        - Files or main image. For example, `include=files,main_image`.
        - Component product data. For example, `include=component_products`.
        - Key attribute data, such as SKU or slug.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
          enum:
            - files
            - main_image
            - component_products
    tag:
      description: Tags are used to refine the eligibility criteria for a rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.
      in: header
      name: EP-Context-Tag
      required: false
      schema:
        type: string
    limit:
      description: The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/api/settings/settings-introduction#page-length) store setting is used.
      name: page[limit]
      in: query
      required: false
      schema:
        type: integer
        format: int64
        minimum: 1
    offset:
      description: The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. You would normally increment the page offset by multiples of the page limit to paginate through the results.
      name: page[offset]
      in: query
      required: false
      schema:
        type: integer
        format: int64
        minimum: 0
        maximum: 10000
    filter-rule:
      name: filter
      in: query
      description: |
        This endpoint supports filtering. See [Filtering](#filtering).
      required: false
      schema:
        type: string
    filter-hierarchy:
      name: filter
      in: query
      description: |

        This endpoints supports filtering. See [Filtering](#filtering).
      required: false
      schema:
        type: string
    filter-node:
      name: filter
      in: query
      description: |
        This endpoint supports filtering, see [Filtering](#filtering).
      required: false
      schema:
        type: string
    filter-catalog:
      name: filter
      in: query
      description: |
        This endpoint supports filtering, see [Filtering](#filtering).
      required: false
      schema:
        type: string
    filter-product:
      name: filter
      in: query
      description: |
        This endpoints support filtering. See [Filtering](#filtering).
      required: false
      schema:
        type: string
  requestBodies:
    bundle-configuration-data:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/bundle-configuration-data'
      description: The bundle configuration.
      required: true
    products-for-cart-configuration:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/products-for-cart-configuration'
      description: A list of product id or sku and bundle configuration for cart.
      required: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
  schemas:
    amount:
      type: object
      description: The three-letter ISO code for the currency associated with this price.
      title: Amount
      properties:
        amount:
          description: The price in the lowest denomination for the specified currency. This is a product's list price.
          type: integer
          example: 100
          format: int64
          x-omitempty: false
          x-go-name: Amount
        includes_tax:
          description: Whether this price includes tax.
          type: boolean
          example: false
          default: false
          x-go-name: IncludesTax
      x-go-name: PriceAmount
    available-prices:
      description: If pricebook segmentation is enabled, this will show all the available prices for the product in the CV delta file and will show selected available prices via the admin api
      type: array
      items:
        type: object
        x-go-name: AvailablePrice
        properties:
          pricebook_id:
            description: A unique identifier of a price book.
            type: string
          shopper_attributes:
            $ref: '#/components/schemas/shopper_attributes'
          sales:
            type: object
            title: Sales
            description: A set of sale specifications
            additionalProperties:
              $ref: '#/components/schemas/sale'
          price:
            $ref: '#/components/schemas/currencies'
          tiers:
            $ref: '#/components/schemas/tiers'
    alternative-prices:
      description: If pricebook segmentation is enabled, this will show all the alternative prices for the product. Will just include 'List Price' initially
      type: array
      items:
        type: object
        x-go-name: alternativePrice
        properties:
          name:
            description: A name to signify what the alternative price means to the shopper... i.e. 'List Price'
            type: string
          pricebook_id:
            description: A unique identifier of a price book.
            type: string
          shopper_attributes:
            $ref: '#/components/schemas/shopper_attributes'
          sale_id:
            description: The unique identifier of a sale.
            type: string
            x-go-name: SaleID
          sale_expires:
            description: The expiration date and time of the sale, provided in UTC.
            type: string
            format: date-time
            example: '2025-07-07T14:30:00Z'
            x-go-name: SaleExpires
            nullable: true
          price:
            $ref: '#/components/schemas/currencies'
          display_price:
            $ref: '#/components/schemas/display-price'
          original_display_price:
            $ref: '#/components/schemas/display-price'
          original_price:
            $ref: '#/components/schemas/currencies'
          tiers:
            description: You can use tiers to allow your store to offer different pricing for minimum quantities of items that your shoppers purchase.
            type: object
            additionalProperties:
              description: The name of the tier, such as `Pencils`.
              type: object
              properties:
                original_price:
                  $ref: '#/components/schemas/currencies'
                price:
                  $ref: '#/components/schemas/currencies'
                display_price:
                  $ref: '#/components/schemas/display-price'
                original_display_price:
                  $ref: '#/components/schemas/display-price'
              x-go-name: AlternativePriceTier
            x-go-name: AlternativePriceTiers
    prioritized-pricebooks:
      description: If you want multiple price books for different scenarios, such as seasonal sales, business versus retail pricing, and reward programs, when creating a catalog, you can specify up to five price books. You must configure a priority for your price books. Product prices are displayed in the catalog according to the priority of the price books.
      type: array
      maxItems: 5
      items:
        type: object
        properties:
          id:
            description: A unique identifier of a price book.
            type: string
            format: uuid
          priority:
            description: Priority is a number and the price book with the highest number has the highest priority.
            type: integer
        required:
          - priority
          - id
        x-go-name: PrioritizedPricebook
    catalog:
      type: object
      title: Catalog
      description: Creates a catalog with the following attributes.
      properties:
        id:
          type: string
          description: A unique identifier of a catalog.
          example: 8dbb35b2-ef04-477e-974d-e5f3abe6faae
        attributes:
          type: object
          properties:
            name:
              description: The name of a catalog.
              type: string
              example: catalog-123
            description:
              description: A brief description of the catalog, such as the purpose of the catalog.
              type: string
              example: Catalog for Store 123
              default: ''
            hierarchy_ids:
              description: The unique identifiers of the hierarchies associated with a catalog.
              type: array
              items:
                type: string
            pricebook_id:
              description: The unique identifier of a price book associated with a catalog. If no price book is selected, the catalog is displayed without prices.
              type: string
            pricebook_ids:
              $ref: '#/components/schemas/prioritized-pricebooks'
            locales:
              description: Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product 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:
                  description: A [three-letter language code](https://www.iso.org/iso-639-language-code) that represents the name of language you have used.
                  type: string
            created_at:
              description: The date and time a catalog is created.
              type: string
              example: '2020-09-22T09:00:00'
              format: date-time
            updated_at:
              description: The date and time a catalog was updated.
              type: string
              example: '2020-09-22T09:00:00'
              format: date-time
            owner:
              description: The owner of this resource, can be either `organization` or `store`.
              type: string
              enum:
                - store
                - organization
              x-go-name: Owner
              default: store
              nullable: true
            enable_price_segmentation:
              description: This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing
              type: boolean
              example: true
              default: false
              x-go-name: EnablePriceSegmentation
            include_draft_products:
              description: When `true`, publishing this catalog includes products in `draft` status in the catalog release. When `false` or omitted, only `live` products are included in the release (default).
              type: boolean
              example: false
              default: false
              x-go-name: IncludeDraftProducts
          required:
            - name
            - hierarchy_ids
            - created_at
            - updated_at
        relationships:
          description: Relationships are established between different catalog entities. For example, a catalog rule and a price book are related to a catalog, as both are associated with it.
          type: object
          title: CatalogRelationships
          properties:
            rules:
              description: The catalog rules related to a catalog.
              type: object
              properties:
                links:
                  $ref: '#/components/schemas/related-link'
            releases:
              description: When a catalog is published, a catalog release is created. This is a URL to all catalog published releases available for this catalog.
              type: object
              properties:
                links:
                  $ref: '#/components/schemas/related-link'
                meta:
                  type: object
                  properties:
                    count:
                      description: The number releases available for a catalog.
                      type: integer
        type:
          type: string
          example: catalog
          enum:
            - catalog
      required:
        - id
        - type
        - attributes
    catalog-create-data:
      type: object
      title: CatalogCreateData
      description: Creates a catalog with the following attributes.
      properties:
        data:
          type: object
          properties:
            attributes:
              type: object
              properties:
                name:
                  description: The name of the catalog.
                  type: string
                  minLength: 1
                  example: catalog-123
                description:
                  description: A brief description of the catalog.
                  type: string
                  example: Catalog for Store 123
                  nullable: true
                hierarchy_ids:
                  description: The unique identifiers of the hierarchies to associate with a catalog.
                  type: array
                  items:
                    type: string
                pricebook_id:
                  description: |
                    The unique identifier of the price book to associate with this catalog. You can specify either a `pricebook_id` or `pricebook_ids` but not both. If you specify both a `pricebook_id` and `pricebook_ids`, a `422 Unprocessable Entity` error is displayed.
                  type: string
                pricebook_ids:
                  $ref: '#/components/schemas/prioritized-pricebooks'
                locales:
                  description: Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product 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:
                      description: A [three-letter language code](https://www.iso.org/iso-639-language-code) that represents the name of language you have used.
                      type: string
                enable_price_segmentation:
                  description: This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing
                  type: boolean
                  example: true
                  default: false
                  x-go-name: EnablePriceSegmentation
                include_draft_products:
                  description: When `true`, publishing this catalog includes products in `draft` status in the catalog release. When `false` or omitted, only `live` products are included in the release (default).
                  type: boolean
                  example: false
                  default: false
                  x-go-name: IncludeDraftProducts
              required:
                - name
                - hierarchy_ids
            type:
              description: Represents the type of object being returned. Always `Catalog`.
              type: string
              example: catalog
              enum:
                - catalog
          required:
            - type
            - attributes
      required:
        - data
    catalog-data:
      type: object
      title: CatalogData
      description: Container for a single catalog.
      properties:
        data:
          $ref: '#/components/schemas/catalog'
        links:
          $ref: '#/components/schemas/links'
      required:
        - data
    catalog-list-data:
      type: object
      title: CatalogListData
      description: Container for a list of catalogs.
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/catalog'
        meta:
          $ref: '#/components/schemas/page-meta'
        links:
          $ref: '#/components/schemas/links'
      required:
        - data
    catalog-update-data:
      type: object
      title: CatalogUpdateData
      description: A catalog combines price books, product lists, and hierarchies.
      properties:
        data:
          type: object
          properties:
            attributes:
              type: object
              properties:
                name:
                  description: The name of the catalog.
                  type: string
                  minLength: 1
                  example: catalog-123
                  nullable: true
                description:
                  description: A brief description of the catalog.
                  type: string
                  example: Catalog for Store 123
                  nullable: true
                hierarchy_ids:
                  description: The unique identifiers of the hierarchies to associate with a catalog.
                  type: array
                  items:
                    type: string
                  nullable: true
                pricebook_id:
                  description: The unique identifier of a price book to associate with a catalog. You can specify a `pricebook_id` or a `pricebook_ids` but not both. If you specify both, a `422 unprocessable entity` error is displayed.
                  type: string
                  nullable: true
                pricebook_ids:
                  $ref: '#/components/schemas/prioritized-pricebooks'
                locales:
                  description: Product Experience Manager supports localization of products and hierarchies. If you store supports multiple languages, you can localize product names and descriptions.
                  type: object
                  additionalProperties:
                    description: A [three-letter language code](https://www.loc.gov/standards/iso639-2/) that represents the name of language you have used.
                    type: object
                    additionalProperties:
                      description: A [three-letter language code](https://www.loc.gov/standards/iso639-2/) that represents the name of language you have used.
                      type: string
                enable_price_segmentation:
                  description: This indicates whether the catalog will support price segmentation using catalog rules to define which pricebook(s) to use for pricing
                  type: boolean
                  example: true
                  default: false
                  x-go-name: EnablePriceSegmentation
                include_draft_products:
                  description: When `true`, publishing this catalog includes products in `draft` status in the catalog release. When `false` or omitted, only `live` products are included in the release (default).
                  type: boolean
                  example: false
                  default: false
                  x-go-name: IncludeDraftProducts
            id:
              description: The unique identifier of the catalog to be updated.
              type: string
              x-go-name: ID
              example: 8dbb35b2-ef04-477e-974d-e5f3abe6faae
            type:
              description: This represents the type of object being returned. Always `catalog`.
              type: string
              example: catalog
              enum:
                - catalog
          required:
            - type
            - id
            - attributes
      required:
        - data
    component-product:
      type: object
      title: Component Product
      description: The unique identifier of the component, for example, `games`.
      properties:
        name:
          description: The component name is the name that is displayed in your storefront.
          type: string
          x-go-name: Name
        min:
          description: The minimum number of product options a shopper can select from this component.
          type: integer
          x-go-name: Min
          nullable: true
        max:
          description: The maximum number of product options a shopper can select from this component.
          type: integer
          x-go-name: Max
          nullable: true
        sort_order:
          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.
          type: integer
          x-go-name: Sort Order
          nullable: true
        options:
          description: The product options included in a component. This can be the ID of another bundle.
          type: array
          items:
            $ref: '#/components/schemas/component-product-option'
          x-go-name: Options
    component-product-option:
      type: object
      title: Component Product Option
      description: The product options included in a component. This can be the ID of another bundle.
      properties:
        id:
          description: A unique identifier of the product you want to add to a component.
          type: string
          format: uuid
          x-go-name: ID
        type:
          description: This represents the type of object being returned. Always `product`.
          type: string
          x-go-name: Type
          default: product
          example: product
          enum:
            - product
        quantity:
          description: The number of this product option that a shopper must purchase.
          type: integer
          example: 2
          x-go-name: Quantity
        min:
          description: The minimum quantity of this product option that a shopper can select.
          type: integer
          x-go-name: Min
          nullable: true
        max:
          description: The maximum quantity of this product option that a shopper can select.
          type: integer
          x-go-name: Max
          nullable: true
        sort_order:
          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.
          type: integer
          example: 15
          x-go-name: Sort Order
          nullable: true
        default:
          description: The boolean indicates whether the current option is a default option for the component.
          type: boolean
          example: true
          default: false
          x-go-name: Default
          nullable: true
        product_should_be_substituted_with_child:
          description: Indicates that the parent product added to a bundle is not directly purchasable. When set to true, the child products of the parent product should be displayed as options for selection in the bundle.
          type: boolean
          example: true
          x-go-name: Is Parent Product
          nullable: true
        excluded_children:
          description: Merchants can exclude specific child products from a parent product when configuring a bundle.
          type: array
          items:
            type: string
          example:
            - 2d491d1c-729d-43d7-a2d2-e0a56edab43d
          x-go-name: Excluded Children
          x-omitempty: true
    components:
      type: object
      title: Components
      description: A bundle is a purchasable product, comprising 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.
      additionalProperties:
        $ref: '#/components/schemas/component-product'
    custom-input-validation-rule-options:
      type: object
      description: The length of the custom input text field.
      x-go-name: CustomInputValidationRuleOptions
      properties:
        max_length:
          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.
          type: integer
          x-go-name: MaxLength
          example: 255
    custom-input-validation-rule:
      type: object
      title: Custom Input Validation Rule
      description: The validation rules for the custom text.
      x-go-name: CustomInputValidationRule
      properties:
        type:
          description: This represents the type of object being returned. Must be `string`.
          type: string
          x-go-name: Type
          default: string
          example: string
          enum:
            - string
        options:
          $ref: '#/components/schemas/custom-input-validation-rule-options'
    custom-input:
      type: object
      title: Custom Input
      description: The name of the custom input. You can rename the input to something more representative of the input that shoppers are adding, for example, `message` or `front`.
      properties:
        name:
          description: The name for the custom text field that is displayed in your storefront.
          type: string
          x-go-name: Name
          example: Message
        validation_rules:
          description: The validation rules for the custom text.
          type: array
          x-go-name: ValidationRules
          items:
            $ref: '#/components/schemas/custom-input-validation-rule'
        required:
          description: This is `true` or `false` depending on whether the custom text is required.
          type: boolean
          x-go-name: Required
          example: false
          default: false
          nullable: true
    custom_inputs:
      type: object
      title: Custom Inputs
      description: |
        You can 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.  You can do this using the `custom_inputs` attribute.

         - You can rename input to something more representative of the input that shoppers are adding, for example, `message` or `front`.
         - `name` is the name that is displayed in your storefront.
         - You can add validation rules. For example, the input field must be a string and/or up to 255 characters in length. The limit is 255 characters.
      additionalProperties:
        $ref: '#/components/schemas/custom-input'
    currencies:
      type: object
      description: A collection of one or more currencies objects that consists of the [**three-letter ISO code**](https://www.iso.org/iso-3166-country-codes.html) of the currencies associated with this price and the amount. This is the product's price.
      title: Currencies
      additionalProperties:
        $ref: '#/components/schemas/amount'
    shopper_attributes:
      type: object
      description: A collection of key-value string pairs, viewable by shoppers.
      title: ShopperAttributes
      additionalProperties:
        type: string
    diff-list-data:
      type: object
      title: DiffListData
      description: A list of differences between two releases.
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/product-diff'
        links:
          $ref: '#/components/schemas/links'
    display-price:
      type: object
      description: A price formatted for display.
      x-omitempty: true
      properties:
        with_tax:
          $ref: '#/components/schemas/formatted-price'
        without_tax:
          $ref: '#/components/schemas/formatted-price'
    error:
      type: object
      title: APIError
      description: APIError is a json-api style part of an error response.
      properties:
        detail:
          type: string
          example: not processable
          x-go-name: Detail
        status:
          type: string
          example: '422'
          x-go-name: Status
        title:
          type: string
          example: There was a problem processing your request.
          x-go-name: Title
      x-go-name: APIError
    error-response:
      type: object
      title: ErrorResponse
      description: ErrorResponse is a json-api style Error response.
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
          x-go-name: Errors
      x-go-name: ErrorResponse
    extension:
      type: object
      title: Extension
      description: The name of the product template.
      additionalProperties:
        description: The product attributes available for this template.
        type: object
    extensions:
      type: object
      title: Extensions
      description: With extension templates, you can attach a specific set of custom fields to your products in Product Experience Manager. For example, a **Book** template might contain the attributes, such as **ISBN**, **Author**, **Number of pages**, **Year Published**, or **Condition (New/Used)**.
      additionalProperties:
        $ref: '#/components/schemas/extension'
    file-reference:
      description: In Product Experience Manager, products can have associated rich media assets, such as product images or a file containing additional product details.
      type: object
      properties:
        type:
          description: This represents the type of object being returned. Always `file`.
          type: string
          example: file
          enum:
            - file
        id:
          description: A unique identifier for a file.
          type: string
          format: uuid
        created_at:
          description: The date and time a file is created.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
          x-go-name: CreatedAt
      x-go-name: FileRelationship
    files-relationship:
      description: In Product Experience Manager, products can have associated rich media assets, such as product images or a file containing additional product details.
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/file-reference'
      x-omitempty: true
    component-products-relationship:
      description: A bundle is a purchasable product, comprising 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. You can link to the products that make up your bundle components.
      type: object
      properties:
        data:
          $ref: '#/components/schemas/product-references'
        links:
          $ref: '#/components/schemas/self-link'
      x-omitempty: true
    custom-relationship:
      description: A product can have custom relationships added that link to other products. These can be used for Parent/Child relationships as well as products that you want to Cross Sell/Promote.
      type: object
      properties:
        data:
          $ref: '#/components/schemas/product-references'
        links:
          $ref: '#/components/schemas/custom-relationship-links'
      x-omitempty: true
    formatted-price:
      type: object
      title: FormattedPrice
      x-omitempty: true
      description: A price formatted for display.
      properties:
        amount:
          description: The price in the lowest denomination for the specified currency. This is a product's list price.
          type: integer
          x-omitempty: false
          example: '47500'
        currency:
          description: The three-letter ISO code of the currencies associated with this price and the amount.
          type: string
          example: USD
        formatted:
          description: The format of the price for display.
          type: string
          example: $475.00
        float_price:
          description: The price in displayable float format
          type: number
          x-omitempty: false
          example: 475
    hierarchy:
      type: object
      title: Hierarchy
      description: A category hierarchy in a catalog. Hierarchies can have parent nodes and child nodes, as well as a list of attached products.
      properties:
        attributes:
          $ref: '#/components/schemas/hierarchy-attributes'
        id:
          description: A unique identifier of a hierarchy.
          type: string
          example: e871df93-c769-49a9-9394-a6fd555b8e8a
          x-go-name: ID
        relationships:
          $ref: '#/components/schemas/hierarchy-relationships'
        type:
          description: This represents the type of object being returned. Always `hierarchy`.
          type: string
          example: hierarchy
          x-go-name: Type
        meta:
          $ref: '#/components/schemas/hierarchy-meta'
      x-go-name: Hierarchy
    hierarchy-meta:
      type: object
      title: HierarchyMeta
      description: A hierarchy's metadata.
      properties:
        language:
          description: Product Experience Manager supports localization of hierarchies. If your store supports multiple languages, you can localize hierarchy names and descriptions. This is [**three-letter language code**](https://www.iso.org/iso-639-language-code) that represents the name of the language you have used.
          type: string
          example: en-GB
        breadcrumbs:
          description: Hierarchy Breadcrumbs
          type: array
          items:
            type: object
            properties:
              id:
                description: The unique identifier of a hierarchy.
                type: string
                example: e871df93-c769-49a9-9394-a6fd555b8e8a
                x-omitempty: true
              name:
                description: The name of the hierarchy.
                type: string
                example: Formal dresswear
                x-omitempty: true
              slug:
                description: A slug for the hierarchy.
                type: string
                example: formal
                x-omitempty: true
            x-go-name: HierarchyBreadcrumb
          x-omitempty: true
        has_children:
          description: Indicates whether a node has child nodes. `true` if the node has at least one child, `false` if it has none.
          type: boolean
          example: true
          x-go-name: HasChildren
          x-omitempty: true
          nullable: true
      x-go-name: HierarchyMeta
      x-omitempty: true
    hierarchy-attributes:
      type: object
      title: HierarchyAttributes
      description: Resource attributes of a catalog hierarchy.
      properties:
        created_at:
          description: The date and time a hierarchy is created.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
          x-go-name: CreatedAt
        published_at:
          description: The date and time a hierarchy is published in a catalog.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
          nullable: true
        description:
          description: A description of a hierarchy.
          type: string
          example: Formal dresswear
          x-go-name: Description
        name:
          description: The name of a hierarchy.
          type: string
          example: Formal dresswear
          x-go-name: Name
        slug:
          description: A unique slug for a hierarchy.
          type: string
          example: formal
          x-go-name: Slug
        shopper_attributes:
          $ref: '#/components/schemas/shopper_attributes'
        updated_at:
          description: The date and time a hierarchy was updated.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
          x-go-name: UpdatedAt
      x-go-name: HierarchyAttributes
    hierarchy-data:
      type: object
      title: HierarchyData
      description: Container for hierarchies.
      properties:
        data:
          $ref: '#/components/schemas/hierarchy'
        links:
          $ref: '#/components/schemas/links'
    hierarchy-list-data:
      type: object
      title: HierarchyListData
      description: Container for a list of hierarchies.
      properties:
        meta:
          $ref: '#/components/schemas/page-meta'
        data:
          type: array
          items:
            $ref: '#/components/schemas/hierarchy'
        links:
          $ref: '#/components/schemas/links'
    hierarchy-relationships:
      type: object
      title: HierarchyRelationships
      description: Relationships to child nodes, and products.
      properties:
        products:
          description: A URL to all the products associated with a hierarchy.
          type: object
          properties:
            links:
              $ref: '#/components/schemas/related-link'
        children:
          description: A URL to all the child products associated with a hierarchy.
          type: object
          properties:
            links:
              $ref: '#/components/schemas/related-link'
          required:
            - links
        nodes:
          description: A URL to all the nodes associated with a hierarchy.
          type: object
          properties:
            links:
              $ref: '#/components/schemas/related-link'
          required:
            - links
      x-go-name: HierarchyRelationships
    links:
      description: Links allow you to move between requests.
      type: object
      properties:
        self:
          description: Single entities use a `self` parameter with a link the specific resource.
          type: string
          format: uri
          nullable: true
        first:
          description: Always the first page.
          type: string
          format: uri
          nullable: true
        last:
          description: This is `null` if there is only one page.
          type: string
          format: uri
          nullable: true
        prev:
          description: This is `null` if there is only one page.
          type: string
          format: uri
          nullable: true
        next:
          description: This is `null` if there is only one page.
          type: string
          format: uri
          nullable: true
    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'
        files:
          description: The files associated with a product.
          type: array
          items:
            $ref: '#/components/schemas/elastic-path-file'
    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
    main-image-relationship:
      type: object
      description: In Product Experience Manager, products can also have associated product images.
      properties:
        data:
          description: The images associated with a product.
          type: object
          x-nullable: 'true'
          properties:
            type:
              description: This represents the type of object being returned. Always `main_image`.
              type: string
              example: main_image
              enum:
                - main_image
            id:
              description: A unique identifier for an image.
              type: string
              format: uuid
      x-omitempty: true
    node:
      type: object
      title: Node
      description: A category node in a catalog. Nodes can have child nodes, as well as a list of attached products.
      properties:
        attributes:
          $ref: '#/components/schemas/node-attributes'
        id:
          description: The unique identifier of a node.
          type: string
          example: e871df93-c769-49a9-9394-a6fd555b8e8a
          x-go-name: ID
        relationships:
          $ref: '#/components/schemas/node-relationships'
        type:
          description: This represents the type of object being returned. Always `node`.
          type: string
          example: node
          x-go-name: Type
        meta:
          $ref: '#/components/schemas/node-meta'
      x-go-name: Node
    node-attributes:
      type: object
      title: NodeAttributes
      description: Resource attributes of a catalog node.
      properties:
        created_at:
          description: The date and time a node was created.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
          x-go-name: CreatedAt
        published_at:
          description: The date and time a node was published in a catalog.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
          nullable: true
        description:
          type: string
          description: A description of a node.
          example: Formal dresswear
          x-go-name: Description
        label:
          type: string
          example: category
          x-go-name: Label
        name:
          description: The name of a node. Names must be unique among sibling nodes in a hierarchy. Otherwise, a name can be non-unique within the hierarchy and across multiple hierarchies.
          type: string
          example: Formal dresswear
          x-go-name: Name
        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
          example: formal
          x-go-name: Slug
        curated_products:
          description: A list of curated products for a node. 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:
            type: string
            example: 8dbb35b2-ef04-477e-974d-e5f3abe6faae
          x-omitempty: true
        status:
          type: string
          example: live
          x-go-name: Status
        shopper_attributes:
          $ref: '#/components/schemas/shopper_attributes'
        updated_at:
          description: The date and time a node was updated.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
          x-go-name: UpdatedAt
      x-go-name: NodeAttributes
    release-indexing-complete-data:
      type: object
      title: ReleaseIndexingCompleteData
      description: The response body for a successful release indexing complete request.
      properties:
        data:
          type: object
          required:
            - status
          properties:
            status:
              description: The final status of the search indexing process.
              type: string
              enum:
                - succeeded
                - failed
    node-create-data:
      type: object
      title: NodeCreateData
      description: Container for nodes.
      properties:
        data:
          type: object
          title: NodeCreateArgs
          description: A node in a catalog (e.g. a category node). Nodes can have child nodes, as well as a list of attached products
          properties:
            attributes:
              type: object
              title: NodeCreateAttributes
              description: Resource attributes of a catalog node.
              properties:
                description:
                  type: string
                  example: Formal dresswear
                  x-go-name: Description
                hierarchy_id:
                  type: string
                  description: hierarchy id of the node
                  example: ddd401ac-db06-4d9e-af60-cf5206abb9bc
                label:
                  type: string
                  example: category
                  x-go-name: Label
                name:
                  type: string
                  example: Formal dresswear
                  x-go-name: Name
                slug:
                  type: string
                  example: formal
                  x-go-name: Slug
                status:
                  type: string
                  example: Live
                  x-go-name: Status
                locales:
                  type: object
                  additionalProperties:
                    type: object
                    additionalProperties:
                      type: string
              required:
                - name
            relationships:
              $ref: '#/components/schemas/node-relationships'
            id:
              type: string
              example: 8fccaa19-dba9-4621-8d11-31a222a68c7c
              x-go-name: ID
            type:
              type: string
              example: node
              x-go-name: Type
          required:
            - type
            - attributes
        links:
          $ref: '#/components/schemas/links'
      required:
        - data
    node-data:
      type: object
      title: NodeData
      description: Container for nodes.
      properties:
        data:
          $ref: '#/components/schemas/node'
        links:
          $ref: '#/components/schemas/links'
    node-list-data:
      type: object
      title: NodeListData
      description: Container for a list of nodes.
      properties:
        meta:
          $ref: '#/components/schemas/page-meta'
        data:
          type: array
          items:
            $ref: '#/components/schemas/node'
        links:
          $ref: '#/components/schemas/links'
    node-meta:
      type: object
      title: NodeMeta
      description: A node's metadata.
      properties:
        language:
          description: The node details localized in the supported languages.
          type: string
          example: en-GB
        bread_crumb:
          description: Helps you understand the association of products with nodes. It explains how products are associated with parent nodes and the relationship among the array of nodes. This is useful if you want to improve how your shoppers search within you store.
          type: array
          items:
            type: string
            example: 8dbb35b2-ef04-477e-974d-e5f3abe6faae
          x-omitempty: true
          deprecated: true
        breadcrumbs:
          description: Node Breadcrumbs
          type: array
          items:
            type: object
            properties:
              id:
                description: The unique identifier of a hierarchy/node.
                type: string
                example: e871df93-c769-49a9-9394-a6fd555b8e8a
                x-omitempty: true
              name:
                description: The name of the hierarchy/node.
                type: string
                example: Formal dresswear
                x-omitempty: true
              slug:
                description: A slug for the hierarchy/node.
                type: string
                example: formal
                x-omitempty: true
            x-go-name: NodeBreadcrumb
          x-omitempty: true
        has_children:
          description: Indicates whether a node has child nodes. `true` if the node has at least one child, `false` if it has none.
          type: boolean
          example: true
          x-go-name: HasChildren
          x-omitempty: true
          nullable: true
      x-go-name: NodeMeta
      x-omitempty: true
    node-reference:
      type: object
      title: NodeReference
      description: Minimum set of information to identify a catalog node.
      properties:
        id:
          description: The unique identifier of a hierarchy.
          type: string
          example: 65477ce0-fcb8-436b-a120-3d57979421dd
          x-go-name: ID
        label:
          description: A label for a hierarchy.
          type: string
          example: category
          x-go-name: Label
        name:
          description: The name of a hierarchy.
          type: string
          example: Formal dresswear
          x-go-name: Name
      x-go-name: NodeReference
    node-relationships:
      type: object
      title: NodeRelationships
      description: Relationships to parent and child nodes, and products.
      properties:
        products:
          description: A URL to all products associated with a node.
          type: object
          properties:
            data:
              type: array
              x-omitempty: true
              items:
                $ref: '#/components/schemas/product-reference'
            links:
              $ref: '#/components/schemas/related-link'
        children:
          description: A URL to all child nodes associated with a node.
          type: object
          properties:
            links:
              $ref: '#/components/schemas/related-link'
          required:
            - links
        parent:
          description: A URL to all parent nodes associated with a node.
          type: object
          properties:
            data:
              type: object
              properties:
                type:
                  type: string
                  example: node
                  enum:
                    - node
                id:
                  type: string
                  example: 8fccaa19-dba9-4621-8d11-31a222a68c7c
                  x-go-name: ID
              required:
                - id
                - type
            links:
              $ref: '#/components/schemas/related-link'
          required:
            - data
        hierarchy:
          description: A URL to the hierarchies associated with a node.
          type: object
          properties:
            data:
              type: object
              properties:
                type:
                  type: string
                  example: hierarchy
                  enum:
                    - hierarchy
                id:
                  type: string
                  example: 8fccaa19-dba9-4621-8d11-31a222a68c7c
                  x-go-name: ID
              required:
                - id
                - type
            links:
              $ref: '#/components/schemas/related-link'
          required:
            - data
      x-go-name: NodeRelationships
    node-relationships-data:
      type: object
      title: NodeRelationshipsData
      description: Container for node relationships.
      properties:
        data:
          $ref: '#/components/schemas/node-relationships'
        links:
          $ref: '#/components/schemas/links'
    page-meta:
      type: object
      description: Contains the results for the entire collection.
      title: PageMeta
      properties:
        results:
          description: Total number of results for the entire collection.
          type: object
          properties:
            total:
              description: Total number of results for the entire collection.
              type: integer
              format: int64
        page:
          type: object
          properties:
            limit:
              description: The maximum number of records for all pages.
              type: integer
              format: int64
            offset:
              description: The current offset by number of pages.
              type: integer
              format: int64
            current:
              description: The current number of pages.
              type: integer
              format: int64
            total:
              description: The total number of records for the entire collection.
              type: integer
              format: int64
    pricebook:
      type: object
      title: Pricebook
      description: Top level entity in the pricebooks domain model. It contains a list of product prices.
      properties:
        id:
          description: The unique identifier of a price book.
          type: string
          example: 4c45e4ec-26e0-4043-86e4-c15b9cf985a7
          x-go-name: ID
        type:
          description: This represents the type of object being returned. Always `pricebook`.
          type: string
          x-go-name: Type
          default: pricebook
          example: pricebook
          enum:
            - pricebook
        attributes:
          type: object
          properties:
            created_at:
              type: string
              format: date-time
              example: '2020-09-22T09:00:00'
              x-go-name: CreatedAt
            description:
              type: string
              example: This is a pricebook
              x-go-name: Description
              nullable: true
            name:
              type: string
              example: pricebook-store-abc
              x-go-name: Name
              nullable: true
            updated_at:
              type: string
              example: '2020-09-22T09:00:00'
              format: date-time
              x-go-name: UpdatedAt
          required:
            - name
      required:
        - type
        - attributes
      additionalProperties: false
      x-go-name: Pricebook
    pricebook-create-data:
      type: object
      title: PricebookData
      description: Container for pricebooks.
      properties:
        data:
          type: object
          description: New top level pricebook.
          title: PricebookCreateArgs
          properties:
            type:
              type: string
              x-go-name: Type
              default: pricebook
              example: pricebook
              enum:
                - pricebook
            attributes:
              type: object
              properties:
                description:
                  type: string
                  example: This is a pricebook
                  x-go-name: Description
                  nullable: true
                name:
                  type: string
                  example: pricebook-store-abc
                  x-go-name: Name
                  nullable: true
              required:
                - name
          required:
            - type
            - attributes
          additionalProperties: false
        links:
          $ref: '#/components/schemas/links'
      required:
        - data
    pricebook-data:
      type: object
      title: PricebookData
      description: Container for pricebooks.
      properties:
        data:
          $ref: '#/components/schemas/pricebook'
        links:
          $ref: '#/components/schemas/links'
      required:
        - data
    pricebook-price:
      type: object
      title: PricebookPrice
      description: ProductPrice associates a collection of locale specific prices with a product ID.
      properties:
        type:
          type: string
          example: product-price
          default: product-price
          enum:
            - product-price
        attributes:
          type: object
          properties:
            currencies:
              $ref: '#/components/schemas/tiered-currencies'
            sales:
              $ref: '#/components/schemas/sales'
            sku:
              type: string
              example: 4c45e4ec-sku
          required:
            - currencies
            - sku
        id:
          type: string
          example: 4c45e4ec-26e0-4043-86e4-c15b9cf985a7
          x-go-name: ID
      required:
        - type
        - id
        - attributes
      additionalProperties: false
    pricebook-price-create-data:
      type: object
      title: PricebookPriceCreateData
      description: Container for pricebook prices.
      properties:
        data:
          type: object
          title: PricebookPriceCreateArgs
          description: ProductPrice associates a collection of locale specific prices with a product ID.
          properties:
            type:
              type: string
              example: product-price
              default: product-price
              enum:
                - product-price
            attributes:
              type: object
              properties:
                currencies:
                  $ref: '#/components/schemas/tiered-currencies'
                sales:
                  $ref: '#/components/schemas/sales'
                sku:
                  type: string
                  example: 4c45e4ec-sku
              required:
                - currencies
                - sku
          required:
            - type
            - attributes
        links:
          $ref: '#/components/schemas/links'
      required:
        - data
    pricebook-price-data:
      type: object
      title: PricebookPriceData
      description: Container for pricebook prices.
      properties:
        data:
          $ref: '#/components/schemas/pricebook-price'
        links:
          $ref: '#/components/schemas/links'
      required:
        - data
    product:
      type: object
      title: Product
      description: A product in a catalog with the following attributes.
      properties:
        attributes:
          $ref: '#/components/schemas/product-attributes'
        id:
          description: A unique identifier for a product.
          type: string
          example: 8fccaa19-dba9-4621-8d11-31a222a68c7c
          x-go-name: ID
        relationships:
          $ref: '#/components/schemas/product-relationships'
        type:
          description: This represents the type of object being returned. Always `product`.
          type: string
          example: product
          x-go-name: Type
        meta:
          $ref: '#/components/schemas/product-meta'
      x-go-name: Product
    product-attributes:
      type: object
      title: ProductAttributes
      description: A product's attributes.
      properties:
        published_at:
          description: The date and time a product was published in a catalog.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
          nullable: true
        base_product:
          description: If this product is a `parent` product. A `parent` product is a product that has child products that have been built using the `build child products` endpoint.
          type: boolean
          example: false
          default: false
          x-go-name: BaseProduct
        base_product_id:
          description: The unique identifier of a `parent` product.
          type: string
          example: cdf574bc-e36e-48fc-9eac-01c87839b285
          x-go-name: BaseProductID
        commodity_type:
          description: The commodity type, either `physical` or `digital`.
          type: string
          example: physical
          x-go-name: CommodityType
        curated_product:
          description: If a product is curated, then the `curated_product` attribute with a value of `true` is displayed. If a product is not curated, the `curated_product` attribute is not displayed.
          type: boolean
          example: true
          x-omitempty: true
          x-go-name: CuratedProduct
        upc_ean:
          description: The universal product code or european article number of the product.
          type: string
          example: '0123456'
          x-go-name: UpcEan
        manufacturer_part_num:
          description: The manufacturer part number of the product.
          type: string
          example: mfn1
          x-go-name: ManufacturerPartNum
        tags:
          type: array
          description: A list of tags associated with the product. A tag must be HTML compatible characters excluding commas and will be stored in lowercase letters.
          items:
            description: A tag associated with the product.
            type: string
            example: tag-a
          x-go-name: Tags
          x-omitempty: true
        price_modifiers:
          type: array
          description: A list of price modifier names.
          items:
            description: A list of price modifier names.
            type: string
            example: modifier-1
          x-go-name: PriceModifiers
          x-omitempty: true
        created_at:
          description: The date and time a product was created.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
          x-go-name: CreatedAt
        description:
          description: A description of the product.
          type: string
          example: This is a product
          x-go-name: Description
        name:
          description: A name of a product.
          type: string
          example: Blue shirt
          x-go-name: Name
        price:
          $ref: '#/components/schemas/currencies'
        shopper_attributes:
          $ref: '#/components/schemas/shopper_attributes'
        tiers:
          $ref: '#/components/schemas/tiers'
        components:
          $ref: '#/components/schemas/components'
        custom_inputs:
          $ref: '#/components/schemas/custom_inputs'
        sku:
          description: The unique stock keeping unit of the product.
          type: string
          example: blue-shirt
          x-go-name: Sku
        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
          example: blue-shirt
          x-go-name: Slug
        status:
          description: The status of the product, either `live` or `draft`.
          type: string
          example: live
          x-go-name: Status
        external_ref:
          description: The unique attribute associated with the product. This could be an external reference from a separate company system, for example.
          type: string
          x-go-name: ExternalRef
          nullable: true
        updated_at:
          description: The date and time a product was updated.
          type: string
          example: '1970-01-01T00:00:00.000'
          format: date-time
          x-go-name: UpdatedAt
        extensions:
          $ref: '#/components/schemas/extensions'
      x-go-name: ProductAttributes
    product-create-data:
      type: object
      title: ProductData
      description: Container for products.
      properties:
        data:
          type: object
          title: ProductCreateArgs
          description: A new product in a catalog.
          properties:
            attributes:
              type: object
              title: ProductCreateAttributes
              description: A product's attributes.
              properties:
                description:
                  type: string
                  example: This is a product
                name:
                  type: string
                  example: Blue shirt
                sku:
                  type: string
                  example: blue-shirt
                slug:
                  type: string
                  example: blue-shirt
                status:
                  type: string
                  example: live
                locales:
                  type: object
                  additionalProperties:
                    type: object
                    additionalProperties:
                      type: string
              required:
                - name
                - status
            id:
              type: string
              example: 8fccaa19-dba9-4621-8d11-31a222a68c7c
              x-go-name: ID
            type:
              type: string
              example: product
              x-go-name: Type
          required:
            - attributes
            - type
        links:
          $ref: '#/components/schemas/links'
    product-data:
      type: object
      title: ProductData
      description: Container for products.
      properties:
        data:
          $ref: '#/components/schemas/product'
        included:
          $ref: '#/components/schemas/included-response'
        links:
          $ref: '#/components/schemas/links'
    product-diff:
      x-go-name: ProductDiff
      type: object
      properties:
        id:
          type: string
          example: e871df93-c769-49a9-9394-a6fd555b8e8a
          x-go-name: ID
        type:
          type: string
          example: product_diff
          x-go-name: Type
        attributes:
          type: object
          properties:
            sku:
              type: string
            this_release_id:
              type: string
            other_release_id:
              type: string
            diff_created_at:
              type: string
              format: date-time
              example: '1970-01-01T00:00:00.000'
            exists:
              x-go-name: ProductDiffExists
              type: object
              properties:
                this:
                  type: boolean
                other:
                  type: boolean
              required:
                - this
                - other
            updated_at:
              x-go-name: ProductDiffUpdatedAt
              type: object
              properties:
                this:
                  type: string
                  format: date-time
                  example: '1970-01-01T00:00:00.000'
                  x-omitempty: true
                  nullable: true
                other:
                  type: string
                  format: date-time
                  example: '1970-01-01T00:00:00.000'
                  x-omitempty: true
                  nullable: true
    product-list-data:
      type: object
      title: ProductListData
      description: Container for a list of products.
      properties:
        meta:
          $ref: '#/components/schemas/page-meta'
        data:
          type: array
          items:
            $ref: '#/components/schemas/product'
          x-go-name: Data
        included:
          $ref: '#/components/schemas/included-response'
        links:
          $ref: '#/components/schemas/links'
    product-meta:
      type: object
      title: ProductMeta
      description: A product's metadata contains information about products, for example, the nodes a product is associated with, any child products, bundle configurations, and so on.
      properties:
        bread_crumbs:
          description: The relationship among the array of nodes a product is associated with, demonstrating the linking of the children nodes with the parent nodes. Up to 10 levels of parent nodes are displayed, depending on the number of levels of parent nodes you have.
          type: object
          additionalProperties:
            type: array
            items:
              type: string
              example: 8dbb35b2-ef04-477e-974d-e5f3abe6faae
          x-omitempty: true
        bread_crumb_nodes:
          description: An array of parent node IDs that a product is associated with. Up to 10 levels of parent nodes are displayed, depending on the number of levels of parent nodes you have.
          type: array
          items:
            type: string
            example: 8dbb35b2-ef04-477e-974d-e5f3abe6faae
          x-omitempty: true
        catalog_id:
          description: A unique identifier of the catalog a product is associated with.
          type: string
          example: 362a16dc-f7c6-4280-83d6-4fcc152af091
          x-go-name: CatalogID
        pricebook_id:
          description: The unique identifier of the price book a product is associated with.
          type: string
          example: f5466169-0037-460c-b181-b02682b6f4de
          x-go-name: PricebookID
          nullable: true
        display_price:
          $ref: '#/components/schemas/display-price'
        catalog_source:
          description: The source of a catalog. Always `pim`.
          type: string
          example: pim
          enum:
            - pim
          x-go-name: CatalogSource
        sale_id:
          description: With sales pricing, a store can optionally add a sale price to a product price. For example, a store can schedule seasonal pricing on products without creating a new price book and catalog ruleset. Optionally, a store can schedule the date ranges for the sale products. This is the unique identifier of a sale.
          type: string
          x-go-name: SaleID
        sale_expires:
          description: The expiration date and time of the sale, provided in UTC.
          type: string
          format: date-time
          example: '2025-07-07T14:30:00Z'
          x-go-name: SaleExpires
          nullable: true
        original_price:
          $ref: '#/components/schemas/currencies'
        original_display_price:
          $ref: '#/components/schemas/display-price'
        bundle_configuration:
          $ref: '#/components/schemas/bundle-configuration'
        component_products:
          description: A bundle is a purchasable product, comprising 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.
          type: object
          additionalProperties:
            type: object
            properties:
              sale_id:
                description: With sales pricing, a store can optionally add a sale price to a product price. For example, a store can schedule seasonal pricing on products without creating a new price book and catalog ruleset. Optionally, a store can schedule the date ranges for the sale products. This is the unique identifier of a sale.
                type: string
                x-go-name: SaleID
              sale_expires:
                description: The expiration date and time of the sale, provided in UTC.
                type: string
                format: date-time
                example: '2025-07-07T14:30:00Z'
                x-go-name: SaleExpires
                nullable: true
              price:
                $ref: '#/components/schemas/currencies'
              display_price:
                $ref: '#/components/schemas/display-price'
              original_price:
                $ref: '#/components/schemas/currencies'
              original_display_price:
                $ref: '#/components/schemas/display-price'
              pricebook_id:
                type: string
                example: f5466169-0037-460c-b181-b02682b6f4de
                x-go-name: PricebookID
                nullable: true
              alternative_prices:
                $ref: '#/components/schemas/alternative-prices'
            x-go-name: ComponentProductMeta
        component_product_data:
          description: This will contain the component product details (with bundle specific pricing) in the configure bundle response for the selected options.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/product'
        price_modifiers:
          type: object
          description: You can use price modifiers to change the price property of child products. By default, child products inherit the same price as their base products. Using price modifiers, you can enable child products to inherit a different price.
          additionalProperties:
            description: A name for the modifier. The name must be unique and is case-sensitive.
            type: object
            properties:
              modifier_type:
                description: |
                  There are three modifier types.

                   - The `price_increment` type increases the prices of a product.
                   - The `price_decrement` type decreases the price of a product.
                   - The `price_equals` type sets the price of a product to an amount you specify.
                type: string
                example: price_equals
              currencies:
                $ref: '#/components/schemas/currencies'
            x-go-name: PriceModifierMeta
        tiers:
          description: You can use tiers to allow your store to offer different pricing for minimum quantities of items that your shoppers purchase.
          type: object
          additionalProperties:
            description: The name of the tier, such as `Pencils`.
            type: object
            properties:
              sale_id:
                description: The unique identifier of a sale.
                type: string
                x-go-name: SaleID
              sale_expires:
                description: The expiration date and time of the sale, provided in UTC.
                type: string
                format: date-time
                example: '2025-07-07T14:30:00Z'
                x-go-name: SaleExpires
                nullable: true
              display_price:
                $ref: '#/components/schemas/display-price'
              original_price:
                $ref: '#/components/schemas/currencies'
              original_display_price:
                $ref: '#/components/schemas/display-price'
            x-go-name: ProductMetaTier
          x-go-name: ProductMetaTiers
        variation_matrix:
          description: The `variation_matrix` object lists the variation IDs and variation option IDs and their corresponding product IDs that are generated when the variation and variation options are built with a product. If no variations are available, the `variation_matrix` is empty.
          type: object
        variations:
          description: If you specified `build_rules` for a product, the `variations` object lists the variation option IDs that you specified to include when building your child products. If no `build_rules` are specified, all the variation and variation options available for a product are displayed. If a product does not have any variations, then the `variations` object is not displayed.
          type: array
          items:
            $ref: '#/components/schemas/variation'
          x-omitempty: true
        child_option_ids:
          description: An array of variation options IDs that a child product has.
          type: array
          items:
            type: string
            example:
              - 8dbb35b2-ef04-477e-974d-e5f3abe6faae
              - 6ddf2a66-d805-449c-a0e1-8e81335e31a6
          x-omitempty: true
          nullable: true
        child_variations:
          description: If this is a child product, the `child_variations` object lists the variation option IDs that define this child product.
          type: array
          items:
            $ref: '#/components/schemas/variation'
          x-omitempty: true
          nullable: true
        product_types:
          description: |
            Commerce automatically assigns types to the products you create. In Commerce Manager, you can see at a glance the product types in a list of a products. In addition, you can filter on product types in both the API and Commerce Manager.

             Product types can also be used in catalogs. For example, in your catalog, you can filter on parent so that only your parent products are displayed in your storefront.

             Products have one of the following types:

             - **standard** - Standard products are a standalone products.
             - **parent** - A parent product is a product that has child products that have been built using the `Build Child Products` endpoint.
              - **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.
             - **bundle** - A bundle is a purchasable product, comprising two or more standalone products (in other words, components) to be sold together. 
          type: array
          items:
            type: string
          x-omitempty: true
          x-go-name: ProductTypes
        language:
          description: If you storefront supports multiple languages, your storefront's preferred language and locale.
          type: string
          example: en-GB
        custom_relationships:
          description: |
            In Commerce Manager you can define Custom Relationships for Products. These allow Merchandisers to set up Cross Sell/Parent Child Relationships between products for display to shoppers.
            This field will list the slugs(identifiers) of Custom Relationships that have been associated with this product. This will allow conditional rendering of related product sections if needed 
            and provides the slug(s) needed to list the related products for the Product
          type: array
          items:
            type: string
            example:
              - CRP-Cross-Sell-Products
              - CRP-Frequently-Bought-Together-Products
          x-omitempty: true
          x-go-name: CustomRelationships
        available_prices:
          $ref: '#/components/schemas/available-prices'
        alternative_prices:
          $ref: '#/components/schemas/alternative-prices'
        available_pricebook_ids:
          description: An array of all pricebooks that have prices for this product
          type: array
          items:
            type: string
            example:
              - 8dbb35b2-ef04-477e-974d-e5f3abe6faae
              - 6ddf2a66-d805-449c-a0e1-8e81335e31a6
          x-omitempty: true
          nullable: true
      x-go-name: ProductMeta
      x-omitempty: true
    variation_option:
      description: The options available for a variation.
      type: object
      properties:
        id:
          description: A unique identifier for an option.
          type: string
          format: uuid
          x-go-name: ID
        name:
          description: The name of the option.
          type: string
        sort_order:
          description: If you specified a `sort_order` when creating your variations and variation options, then use the `sort_order` value to program your storefront to display the variations and variation options in the order that you want.
          type: integer
          x-go-name: Sort Order
          nullable: true
        description:
          description: The option description to display to customers.
          type: string
      x-go-name: ProductVariationOption
    variation:
      type: object
      properties:
        id:
          description: A unique identifier of a variation.
          type: string
          format: uuid
          x-go-name: ID
        name:
          description: The name of a variation.
          type: string
        sort_order:
          description: If you specified a `sort_order` when creating your variations and variation options, then use the `sort_order` value to program your storefront to display the variations and variation options in the order that you want.
          type: integer
          x-go-name: Sort Order
          nullable: true
        option:
          $ref: '#/components/schemas/variation_option'
        options:
          description: The options available for this variation.
          type: array
          x-omitempty: true
          items:
            $ref: '#/components/schemas/variation_option'
      x-go-name: ProductVariation
    bundle-configuration-data:
      type: object
      title: BundleConfigurationData
      description: Container for a bundle configuration.
      properties:
        data:
          $ref: '#/components/schemas/bundle-configuration'
      required:
        - data
    bundle-configuration:
      type: object
      title: BundleConfiguration
      description: A bundle is a purchasable product, comprising 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.
      properties:
        selected_options:
          type: object
          description: The product options included in a component. This can be the ID of another bundle.
          example:
            games:
              p292e1db-c919-4d2f-984a-c2ddc79df024: 2
            consoles:
              759ce0d7-e248-4f57-8ee1-6fd81a1b3c0a: 1
          additionalProperties:
            description: The unique identifier of the component, for example, `games`.
            type: object
            example: 759ce0d7-e248-4f57-8ee1-6fd81a1b3c0a
            additionalProperties:
              description: The number of this product option that a shopper must purchase.
              type: integer
              format: int64
              example: 1
      required:
        - selected_options
      x-go-name: ProductBundleConfiguration
    product-reference:
      type: object
      title: ProductReference
      description: A product identifier.
      x-nullable: 'true'
      properties:
        id:
          description: A unique identifier for a product.
          type: string
          format: uuid
          x-go-name: ID
        type:
          description: This represents the type of object being returned. Always `product`.
          type: string
          x-go-name: Type
          example: product
          enum:
            - product
      x-go-name: ProductReference
    product-reference-list-data:
      type: object
      title: ProductReferenceListData
      description: Container for a list of product references.
      properties:
        meta:
          $ref: '#/components/schemas/page-meta'
        data:
          $ref: '#/components/schemas/product-references'
        links:
          $ref: '#/components/schemas/links'
    product-references:
      type: array
      title: ProductReferences
      description: A list of product identifiers.
      items:
        $ref: '#/components/schemas/product-reference'
      x-go-name: ProductReferences
    product-relationships:
      type: object
      title: ProductRelationships
      description: Relationships allow you to move between requests. Includes links to the parent and child products, bundle component products, files, and main images associated with a product.
      properties:
        parent:
          description: The details of a `parent` product. A `parent` product is a product that has child products that have been built using the `Build Child Products` endpoint.
          type: object
          properties:
            data:
              $ref: '#/components/schemas/product-reference'
          x-go-name: Parent
          x-omitempty: true
        children:
          description: The details of a `child` product. When you configure product variations and variation options for parent products, the child products derived from the parent products are automatically created in Commerce.
          type: object
          properties:
            data:
              $ref: '#/components/schemas/product-references'
            links:
              $ref: '#/components/schemas/self-link'
          x-go-name: Children
          x-omitempty: true
        files:
          $ref: '#/components/schemas/files-relationship'
        main_image:
          $ref: '#/components/schemas/main-image-relationship'
        component_products:
          $ref: '#/components/schemas/component-products-relationship'
        custom_relationships:
          $ref: '#/components/schemas/custom-relationship'
      x-go-name: ProductRelationships
      x-omitempty: true
    product-relationships-data:
      type: object
      title: ProductRelationshipsData
      description: Container for product relationships.
      properties:
        data:
          $ref: '#/components/schemas/product-relationships'
        links:
          $ref: '#/components/schemas/links'
    products-for-cart:
      type: object
      title: ProductsForCart
      description: A list of products to be added to cart. Can be type product-data or error-response.
      properties:
        data:
          type: array
          items: {}
          x-go-name: Data
        included:
          type: object
          x-go-name: Included
          properties:
            component_products:
              type: array
              items:
                $ref: '#/components/schemas/product'
              x-go-name: ComponentProducts
          nullable: true
      required:
        - data
      x-go-name: ProductsForCart
    products-for-cart-configuration:
      type: object
      title: ProductsForCartConfiguration
      description: A list of product id or sku and bundle configuration for cart.
      properties:
        data:
          type: array
          minItems: 1
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                x-go-name: ID
                nullable: true
              sku:
                type: string
                x-go-name: SKU
                nullable: true
              bundle_configuration:
                $ref: '#/components/schemas/bundle-configuration'
          x-go-name: Data
      required:
        - data
      x-go-name: ProductsForCartConfiguration
    related-link:
      description: A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.
      type: object
      properties:
        related:
          description: A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.
          type: string
      required:
        - related
    custom-relationship-links:
      description: For each custom relationship in use on the product, there will be a link to follow.
      type: object
    self-link:
      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
      required:
        - self
    release:
      type: object
      title: Release
      description: A catalog release represents a collection of hierarchical product data, price books and catalogs rules.
      properties:
        id:
          description: A unique identifier for the catalog release.
          type: string
          x-go-name: ID
          example: 8dbb35b2-ef04-477e-974d-e5f3abe6faae
        attributes:
          type: object
          properties:
            name:
              description: The name of a release.
              type: string
              example: Clothing
            published_at:
              description: The date and time a release was published.
              type: string
              format: date-time
              example: '1970-01-01T00:00:00.000'
              nullable: true
            catalog_id:
              description: A unique identifier for the catalog.
              type: string
              example: 0194f54d-f2a1-4e33-9a6e-9ec366152490
            description:
              description: A description of the catalog release.
              type: string
              example: Catalog for Store 123
              default: ''
            hierarchies:
              description: An array of hierarchy IDs associated with the release.
              type: array
              items:
                $ref: '#/components/schemas/node-reference'
              x-go-name: RootNodes
        relationships:
          $ref: '#/components/schemas/release-relationships'
        type:
          description: This represents the type of object being returned. Always `catalog-release`.
          type: string
          x-go-name: Type
        meta:
          $ref: '#/components/schemas/release-meta'
      x-go-name: Release
    release-data:
      type: object
      title: Release Data
      description: Container for a catalog release.
      properties:
        data:
          $ref: '#/components/schemas/release'
        links:
          $ref: '#/components/schemas/links'
    release-list-data:
      type: object
      title: ReleaseListData
      description: Container for a list of catalog releases.
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/release'
        links:
          $ref: '#/components/schemas/links'
    release-meta:
      type: object
      title: ReleaseMeta
      description: A release's metadata.
      properties:
        created_at:
          description: The date and time a release is created.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
        started_at:
          description: The date and time a release is available for use. In other words, the date and time the status of a catalog release changes to PUBLISHED, rather than IN PROGRESS.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
          nullable: true
        updated_at:
          description: The date and time a release is updated.
          type: string
          format: date-time
          example: '1970-01-01T00:00:00.000'
          nullable: true
        release_status:
          description: The status of the current release.
          type: string
          enum:
            - PENDING
            - IN_PROGRESS
            - FAILED
            - PUBLISHED
        language:
          description: Your storefront's preferred language code and locale.
          type: string
          example: en-GB
        is_full_publish:
          description: |
            Indicates that a full publish was performed (either because this is the first time a catalog has been published or because of a change that occurred, for example, adding/removing a price book or hierarchy). When determining whether delta data needs to be refreshed, ignore this attribute and always use the `is_full_delta` attribute.
          type: boolean
          example: false
          default: false
          x-go-name: IsFullPublish
        is_full_delta:
          description: |
            Indicates whether the release delta file contains the full content of a catalog release. Using a search service as an example, if the `is_full_delta` attribute is `true`, you should remove all data about that catalog release from the search service before injecting fresh data from the delta file. If the `is_full_delta` attribute is `false`, then data from the previous catalog release overlays the existing data in the delta file. The `is_full_delta` attribute is always `true` the first time a catalog is published.
          type: boolean
          example: false
          default: false
          x-go-name: IsFullDelta
        total_products:
          description: The total number of products displayed in a catalog release.
          type: integer
          format: int64
          x-go-name: TotalProducts
          nullable: true
        total_nodes:
          description: The total number of hierarchy nodes displayed in a catalog release.
          type: integer
          format: int64
          x-go-name: TotalNodes
          nullable: true
        percent_completed:
          description: An integer that represents the progress of a catalog publish. The attribute starts at `0` and reaches `100` when publishing is complete.
          type: integer
          format: int32
          x-go-name: PercentCompleted
          nullable: true
        owner:
          description: The owner of the resource, can be either `organization` or `store`.
          type: string
          enum:
            - store
            - organization
          x-go-name: Owner
          nullable: true
        price_segmentation_enabled:
          description: This indicates whether the catalog release will support price segmentation using catalog rules to define which pricebook(s) to use for pricing
          type: boolean
        includes_draft_products:
          description: When `true`, this catalog release includes `draft` products in its published data. This reflects the catalog `include_draft_products` attribute at the time of publish.
          type: boolean
          example: false
          default: false
          x-go-name: IncludesDraftProducts
      x-go-name: ReleaseMeta
      x-omitempty: true
    release-relationships:
      type: object
      title: ReleaseRelationships
      description: Relationships are established between different catalog entities. For example, products, hierarchies, price books, and catalog rules are related to a catalog, as they are associated with it.
      properties:
        delta:
          description: A URL to a delta document that describes the changes between catalog releases.
          type: object
          properties:
            links:
              $ref: '#/components/schemas/related-link'
        products:
          description: A URL to all products included in a catalog release.
          type: object
          properties:
            links:
              $ref: '#/components/schemas/related-link'
        hierarchies:
          description: A URL to all hierarchies included in a catalog release.
          type: object
          properties:
            links:
              $ref: '#/components/schemas/related-link'
          required:
            - links
      x-go-name: ReleaseRelationships
    rule:
      type: object
      title: Catalog Rule
      description: A catalog rule specifies which catalog to use for a given shopper context.
      properties:
        id:
          type: string
          description: The catalog rule ID. Use this to get, modify, or delete the catalog rule.
          example: 8dbb35b2-ef04-477e-974d-e5f3abe6faae
        attributes:
          type: object
          properties:
            name:
              description: The name of a catalog rule. The name must not contain any spaces.
              type: string
              example: rule-123
            description:
              description: A brief description of the purpose of a catalog rule.
              type: string
              example: Catalog Rule for most favored customers
              default: ''
              x-omitempty: true
            account_ids:
              description: The list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.
              type: array
              items:
                type: string
              x-omitempty: true
            account_tag_ids:
              description: The list of account tag UUIDs. Accounts must have at least one of these tags to see this catalog. If this field is empty, the rule matches all accounts regardless of tags.
              type: array
              items:
                type: string
              x-omitempty: true
            customer_ids:
              description: The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.
              type: array
              items:
                type: string
              x-omitempty: true
            channels:
              description: The list of channels in which this catalog can be displayed. A channel is the shopping experience, such as a mobile app or web storefront. If empty, the catalog rule matches all channels. The channel will eventually be included in the bearer token that is used for authorization, but currently, you must set the `EP-Channel` header in your requests.
              type: array
              items:
                type: string
              x-omitempty: true
            tags:
              description: A list of user-defined tags that can be used to further restrict the eligibility criteria for this rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.
              type: array
              items:
                type: string
              x-omitempty: true
            schedules:
              description: |
                Specifies a time period when a catalog is displayed, such as on a specific date or during summer. Requests populate the rule tag using the `EP-Context-Tag` header. 

                The schedules attribute must include the following.

                - `valid_from` matches the date and time that the catalog is displayed from. 
                - `valid_to` matches the date and time the catalog is displayed to. 

                Commerce runs on UTC time. 

                You can offset the timezone by adding the offset to the end of the date and time. For example, a catalog which contains a sale hierarchy that should appear for a set timeframe may be scheduled to publish on a given date and time within a given timezone. For instance, a sale that should begin on 1st of June 2022 05:00 ET and end on the 15th of June 2022 at 23:50 PT would have a valid schedule of `"valid_from": "2022-06-01T05:00:00.000-05:00"`, `"valid_to": "2022-06-15T11:59:99.000-08:00"`.
              type: array
              items:
                $ref: '#/components/schemas/rule-schedule'
              x-omitempty: true
            catalog_id:
              type: string
              description: The unique identifier of a catalog.
              example: d09b4e16-08a5-4f42-817c-6e0d98acbb63
            created_at:
              description: The date and time a catalog rule was created.
              type: string
              example: '2020-09-22T09:00:00'
              format: date-time
            updated_at:
              description: The date and time a catalog release is updated.
              type: string
              example: '2020-09-22T09:00:00'
              format: date-time
            pricebook_ids:
              $ref: '#/components/schemas/prioritized-pricebooks'
          required:
            - name
            - catalog_id
            - created_at
            - updated_at
        type:
          description: This represents the type of object being returned. Always `catalog_rule`.
          type: string
          example: catalog_rule
          enum:
            - catalog_rule
        meta:
          $ref: '#/components/schemas/rule-meta'
      required:
        - id
        - type
        - attributes
    rule-meta:
      type: object
      title: ruleMeta
      description: A rule's metadata.
      properties:
        similarity_score:
          description: |
            Indicates the similarity score of the rule to the supplied validation request. 
            The score is calculated based on matching criteria:
            - **Name match**: 100 points (exact match)
            - **Account IDs**: 5 points per matching account
            - **Customer IDs**: 5 points per matching customer  
            - **Channels**: 5 points per matching channel
            - **Tags**: 5 points per matching tag
            - **Catalog ID**: 3 points (exact match)
            - **Pricebook IDs**: 2 points per matching pricebook
            - **Schedules**: 2 points per overlapping schedule

            Higher scores indicate greater similarity. Rules are sorted by similarity score in descending order.
          type: integer
          example: 100
          x-go-name: SimilarityScore
          x-omitempty: true
          nullable: true
        active:
          description: will the rule be active at the supplied match date/time?
          type: boolean
          example: false
          default: false
          x-go-name: Active
        resolved_for_shopper:
          description: Indicates whether this rule will be the one resolved for a shopper viewing the catalog at the supplied match date/time
          type: boolean
          example: true
          default: false
        release_id:
          type: string
          description: The unique identifier of the published release of the catalog for the rule
          x-omitempty: true
          nullable: true
      x-go-name: ruleMeta
      x-omitempty: true
    rule-create-data:
      type: object
      title: CatalogRuleCreateData
      description: A catalog rule specifies which catalog to use for a given shopper context.
      properties:
        data:
          type: object
          properties:
            attributes:
              type: object
              properties:
                name:
                  description: The name of a catalog rule. The name must not contain spaces.
                  type: string
                  minLength: 1
                  example: rule-123
                description:
                  description: A brief description of the purpose of a catalog rule.
                  type: string
                  example: Catalog Rule for most favored customers
                  default: ''
                  nullable: true
                account_ids:
                  description: The list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.
                  type: array
                  items:
                    type: string
                  nullable: true
                account_tag_ids:
                  description: The list of account tag UUIDs. Accounts must have at least one of these tags to see this catalog. If this field is empty, the rule matches all accounts regardless of tags.
                  type: array
                  items:
                    type: string
                  nullable: true
                customer_ids:
                  description: The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.
                  type: array
                  items:
                    type: string
                  nullable: true
                channels:
                  description: The list of channels in which this catalog can be displayed. A channel is the shopping experience, such as a mobile app or web storefront. If empty, the catalog rule matches all channels. The channel will eventually be included in the bearer token that is used for authorization, but currently, you must set the `EP-Channel` header in your requests.
                  type: array
                  items:
                    type: string
                  nullable: true
                tags:
                  description: A list of user-defined tags that can be used to further restrict the eligibility criteria for this rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.
                  type: array
                  items:
                    type: string
                  nullable: true
                schedules:
                  description: |
                    Specifies a time period when a catalog is displayed, such as on a specific date or during summer. Requests populate the rule tag using the `EP-Context-Tag` header. 

                    The schedules attribute must include the following.

                    - `valid_from` matches the date and time that the catalog is displayed from. 
                    - `valid_to` matches the date and time the catalog is displayed to. 

                    Commerce runs on UTC time. 

                    You can offset the timezone by adding the offset to the end of the date and time. For example, a catalog which contains a sale hierarchy that should appear for a set timeframe may be scheduled to publish on a given date and time within a given timezone. For instance, a sale that should begin on 1st of June 2022 05:00 ET and end on the 15th of June 2022 at 23:50 PT would have a valid schedule of `"valid_from": "2022-06-01T05:00:00.000-05:00"`, `"valid_to": "2022-06-15T11:59:99.000-08:00"`.
                  type: array
                  items:
                    $ref: '#/components/schemas/rule-schedule'
                  nullable: true
                catalog_id:
                  type: string
                  description: The unique identifier of a catalog.
                  example: d09b4e16-08a5-4f42-817c-6e0d98acbb63
                pricebook_ids:
                  $ref: '#/components/schemas/prioritized-pricebooks'
              required:
                - name
                - catalog_id
            type:
              description: This represents the type of object being returned. Always `catalog_rule`.
              type: string
              example: catalog_rule
              enum:
                - catalog_rule
          required:
            - type
            - attributes
      required:
        - data
    rule-data:
      type: object
      title: CatalogRuleData
      description: Container for a single catalog rule.
      properties:
        data:
          $ref: '#/components/schemas/rule'
        links:
          $ref: '#/components/schemas/links'
      required:
        - data
    rule-list-data:
      type: object
      title: CatalogRuleListData
      description: Container for a list of catalog rules.
      properties:
        meta:
          $ref: '#/components/schemas/page-meta'
        data:
          type: array
          items:
            $ref: '#/components/schemas/rule'
        links:
          $ref: '#/components/schemas/links'
      required:
        - data
    rule-schedule:
      type: object
      title: Catalog Schedule
      description: A period of time during which a catalog is valid
      properties:
        valid_from:
          description: Matches the date and time that the catalog is displayed from.
          type: string
          example: '2020-09-22T09:00:00'
          format: date-time
          x-go-name: ValidFrom
          nullable: true
        valid_to:
          description: Matches the date and time the catalog is displayed to.
          type: string
          example: '2020-09-22T09:00:00'
          format: date-time
          x-go-name: ValidTo
          nullable: true
      x-go-name: RuleSchedule
    rule-update-data:
      type: object
      title: CatalogRuleUpdateData
      description: A catalog rule specifies which catalog to use for a given shopper context.
      properties:
        data:
          type: object
          properties:
            id:
              type: string
              description: The catalog rule ID. Use this to get, modify, or delete the catalog rule.
              example: 8dbb35b2-ef04-477e-974d-e5f3abe6faae
            attributes:
              type: object
              properties:
                name:
                  description: The name of a catalog rule. The name must not contain spaces.
                  type: string
                  minLength: 1
                  example: rule-123
                  nullable: true
                description:
                  description: A description of the purpose of a catalog rule.
                  type: string
                  example: Catalog Rule for most favored customers
                  default: ''
                  nullable: true
                account_ids:
                  description: Specifies the list of accounts who are eligible to see this catalog. If this field is empty, the rule matches all accounts.
                  type: array
                  items:
                    type: string
                  nullable: true
                account_tag_ids:
                  description: The list of account tag UUIDs. Accounts must have at least one of these tags to see this catalog. If this field is empty, the rule matches all accounts regardless of tags.
                  type: array
                  items:
                    type: string
                  nullable: true
                customer_ids:
                  description: The list of customers who are eligible to see this catalog. If empty, the rule matches all customers.
                  type: array
                  items:
                    type: string
                  nullable: true
                channels:
                  description: The list of channels in which this catalog can be displayed. A channel is the shopping experience, such as a mobile app or web storefront. If empty, the catalog rule matches all channels. The channel will eventually be included in the bearer token that is used for authorization, but currently, you must set the `EP-Channel` header in your requests.
                  type: array
                  items:
                    type: string
                  nullable: true
                schedules:
                  description: |
                    Specifies a time period when a catalog is displayed, such as on a specific date or during summer. Requests populate the rule tag using the `EP-Context-Tag` header. 

                    The schedules attribute must include the following.

                    - `valid_from` matches the date and time that the catalog is displayed from. 
                    - `valid_to` matches the date and time the catalog is displayed to. 

                    Commerce runs on UTC time. 

                    You can offset the timezone by adding the offset to the end of the date and time. For example, a catalog which contains a sale hierarchy that should appear for a set timeframe may be scheduled to publish on a given date and time within a given timezone. For instance, a sale that should begin on 1st of June 2022 05:00 ET and end on the 15th of June 2022 at 23:50 PT would have a valid schedule of `"valid_from": "2022-06-01T05:00:00.000-05:00"`, `"valid_to": "2022-06-15T11:59:99.000-08:00"`.
                  type: array
                  items:
                    $ref: '#/components/schemas/rule-schedule'
                  nullable: true
                tags:
                  description: A list of user-defined tags that can be used to further restrict the eligibility criteria for this rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.
                  type: array
                  items:
                    type: string
                  nullable: true
                catalog_id:
                  type: string
                  description: The unique identifier of a catalog rule.
                  example: d09b4e16-08a5-4f42-817c-6e0d98acbb63
                  nullable: true
                pricebook_ids:
                  $ref: '#/components/schemas/prioritized-pricebooks'
            type:
              description: This represents the type of object being returned. Always `catalog_rule`.
              type: string
              example: catalog_rule
              enum:
                - catalog_rule
          required:
            - id
            - type
      required:
        - data
    catalog-rule-validator-request:
      type: object
      properties:
        data:
          type: object
          required:
            - match_type
          properties:
            match_type:
              type: string
              enum:
                - filter
                - similarity
                - conflict
                - resolve_for_shopper
              description: |
                The type of matching operation to perform on catalog rules:

                - **filter**: Advanced rule filtering with AND logic. Returns rules that match ALL specified criteria.

                - **similarity**: Finds rules similar to the supplied rule using OR logic. Returns rules sorted by similarity score (highest first) with metadata indicating:
                  - Similarity score based on matching criteria (name: 100pts, account/customer/channel/tags: 5pts each, catalog: 3pts, pricebooks: 2pts, schedules: 2pts)  
                  - Whether the rule is active at the supplied match_date
                  - Whether the rule would be resolved for a shopper context

                - **conflict**: Checks for conflicts between the supplied rule and existing rules. Returns rules that would conflict if the new rule were created.

                - **resolve_for_shopper**: Determines the exact catalog rule that would be applied for a given shopper context. Returns the single most specific matching rule or defaults to "Default Catalog Resolution".
            channels:
              description: The list of channels in which this catalog can be displayed. A channel is the shopping experience, such as a mobile app or web storefront. If empty, the catalog rule matches all channels. The channel will eventually be included in the bearer token that is used for authorization, but currently, you must set the `EP-Channel` header in your requests.
              type: array
              items:
                type: string
              nullable: true
            tags:
              description: A list of user-defined tags that can be used to further restrict the eligibility criteria for this rule. Requests populate the catalog rule tag using the `EP-Context-Tag` header.
              type: array
              items:
                type: string
              nullable: true
            account_ids:
              type: array
              items:
                type: string
              description: List of account IDs.
              nullable: true
            account_tag_ids:
              type: array
              items:
                type: string
              description: List of account tag UUIDs.
              nullable: true
            customer_ids:
              type: array
              items:
                type: string
              description: List of customer IDs.
              nullable: true
            pricebook_ids:
              type: array
              items:
                type: string
              description: List of pricebook IDs.
              nullable: true
            schedules:
              type: array
              items:
                type: object
                properties:
                  valid_from:
                    type: string
                    format: date-time
                  valid_to:
                    type: string
                    format: date-time
              nullable: true
            name:
              type: string
              description: The name of the catalog rule.
              nullable: true
            catalog_id:
              type: string
              description: The id of the catalog to match against.
              nullable: true
            match_date:
              type: string
              format: date-time
              description: The date to match against the schedules.
              nullable: true
    sale:
      type: object
      description: A set of sale prices and a validity period.
      properties:
        schedule:
          $ref: '#/components/schemas/schedule'
        currencies:
          $ref: '#/components/schemas/tiered-currencies'
    sales:
      type: object
      title: Sales
      description: A set of sale specifications
      additionalProperties:
        $ref: '#/components/schemas/sale'
    schedule:
      type: object
      description: A definition of the times at which a sale is valid
      properties:
        valid_from:
          type: string
          example: '2020-09-22T09:00:00'
          format: date-time
          x-go-name: ValidFrom
          nullable: true
        valid_to:
          type: string
          example: '2020-09-22T09:00:00'
          format: date-time
          x-go-name: ValidTo
          nullable: true
      x-go-name: Schedule
    tier:
      type: object
      title: Tier
      description: The name of the tier, for example, `Pencils`.
      properties:
        minimum_quantity:
          description: The minimum quantity of 1 or more defined for the specified price. If a minimum quantity is not specified, an error is returned.
          type: integer
          example: '5'
        price:
          $ref: '#/components/schemas/currencies'
    tiered-amount:
      type: object
      title: TieredAmount
      description: The three-letter ISO code for the currency associated with this price.
      properties:
        amount:
          description: The price in the lowest denomination for the specified currency. This is a product's list price.
          type: integer
          example: 100
          format: int64
          x-omitempty: false
          x-go-name: Amount
        includes_tax:
          description: Whether this price includes tax.
          type: boolean
          example: false
          default: false
          x-go-name: IncludesTax
        tiers:
          description: The price tier that an item is eligible for based on the quantity purchased. You cannot have conflicting tiers within the same currencies block.
          type: object
          additionalProperties:
            description: The name of the tier, for example, `Pencils`.
            type: object
            properties:
              minimum_quantity:
                description: The minimum quantity of 1 or more defined for the specified price. If a minimum quantity is not specified, an error is returned.
                type: integer
                example: 5
                x-go-name: MinimumQuantity
              amount:
                description: The price for each quantity.
                type: integer
                example: 100
                format: int64
                x-omitempty: false
                x-go-name: Amount
            x-go-name: TierAmount
          x-go-name: Tiers
      x-go-name: TieredAmount
    tiered-currencies:
      type: object
      title: TieredCurrencies
      description: Collection of currency specific prices for a product.
      additionalProperties:
        $ref: '#/components/schemas/tiered-amount'
    tiers:
      type: object
      title: Tiers
      description: The price tier that an item is eligible for based on the quantity purchased. You cannot have conflicting tiers within the same currencies block.
      additionalProperties:
        $ref: '#/components/schemas/tier'
    catalog-release-create-data:
      type: object
      title: CatalogReleaseCreateData
      description: Creates a catalog release with the following attributes.
      properties:
        data:
          type: object
          properties:
            export_full_delta:
              type: boolean
              description: |
                Set to `true` if you want to export all the data from a catalog release in a delta link. The `is_full_delta` attribute is returned from the `get a release of a catalog` endpoint. The `is_full_delta` attribute tells you if the delta file contains the full content of a catalog release. You can use the `is_full_delta` to determine if you need to refresh the data in your company system before publishing a catalog release with fresh data in a delta link. Using a search service as an example, if the `is_full_delta` attribute is true, you should remove all data about that catalog from the search service before publishing a catalog release and injecting fresh data from the delta file. If the `is_full_delta` attribute is false, then data from the previous catalog overlays the existing data in the delta file. The `is_full_delta` attribute is always `true` the first time a catalog is published.
              x-go-name: ExportFullDelta
            include_organization_resources:
              type: boolean
              description: If you are publishing a catalog in a store that contains resources from an organization, you must set this to true and you must enable the **Include Organization Resources in Catalog Publishes** checkbox in Commerce Manager. See [**Multi-Store Management Solutions**](/docs/api/pxm/catalog/publish-release).
              x-go-name: IncludeOrganizationResources
              nullable: true
