Elastic Path Shopper Catalog API API

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.

OpenAPI Specification

elastic-path-shopper-catalog-api-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 25.1126.6886238
  x-version-timestamp: 2025-11-26 19:10:23+00:00
  title: Addresses Introduction Account Addresses Shopper Catalog API API
  description: 'The Addresses API allows you to organize account addresses. Addresses are a sub-resource of `account` resources, an account can have multiple addresses, such as home, work, and neighbour.


    You can use an account address with either [client_credentials access token](/docs/api/authentication/create-an-access-token) or a combination of [implicit access token](/docs/api/authentication/create-an-access-token) and [Account Management authentication](/docs/api/accounts/post-v-2-account-members-tokens) token.

    '
  contact:
    name: Elastic Path
    url: https://www.elasticpath.com
    email: support@elasticpath.com
  license:
    url: https://elasticpath.dev
    name: MIT
servers:
- url: https://useast.api.elasticpath.com
  description: US East
- url: https://euwest.api.elasticpath.com
  description: EU West
security:
- BearerToken: []
tags:
- name: 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.\n\nA 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.\n\n### Characteristics of Shopper Catalogs\n\nShopper catalogs can have the following characteristics.\n\n- 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.\n- 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:\n  - `EP-Channel` - The channel, such as website or mobile app. See [**Create a Catalog Rule**](/docs/api/pxm/catalog/create-rule).\n  - `EP-Context-Tag` - A tag defined in the store, such as `clearance`. See [**Create a Catalog Rule**](/docs/api/pxm/catalog/create-rule).\n* When a catalog is ready to be used in a store, you publish it. See [**Publish a Catalog**](/docs/api/pxm/catalog/publish-release).\n* 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).\n* 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.\n* When a catalog is published for a store, the corresponding events contain `store_id` and `org_id`. \n* When a catalog is published for an organization, the corresponding events contain `org_id`. \n* Use the `sort_order` value in `variations` to program your storefront to display the variation options in the order that you want.\n\n### Shopper Catalog Caching\n\nWhen 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.\n\nIf you use any of the `catalog` endpoints with a `filter` or `include` query parameter, these are cached separately. \n\nThe cached entries disappear from the cached objects pool after 5 minutes.\n"
paths:
  /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.\n\n### Catalog Rules\n\nIf 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).\n\n### Product and Node Associations\n\n 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).\n\n### Including Resources\n\nUsing 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. \n\n| Parameter | Required | Description                                                                                                                                                                                                    |\n|  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `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.  |\n| `main_image`         | Optional | The main images associated with a product. |\n| `files`              | Optional | Any files associated with a product. |\n\nSee [**Including Resources**](/guides/Getting-Started/includes).\n\n### Filtering\n\nThis 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.\n\n| Operator | Description                                                                                     | Supported Attributes                                     | Example |\n|:---|:------------------------------------------------------------------------------------------------|:---------------------------------------------------------|:--- |\n| `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)` |\n| `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)` |\n\n### Building breadcrumbs in a storefront\n\nIn 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.\n\nAn example is shown below:\n\n`filter=in(id,c83bfe55-0d87-4302-a86d-ab19e7e323f1,6003d7ef-84f3-49bb-a8bd-4cbfa203dcbb)`\n\n- Specify the node IDs directly attached to the product in the filter expression.\n- You can include as many node IDs as required.\n- It does not matter what order you specify the node IDs. The nodes are returned in the order they were last updated.\n"
      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.\n\nIf 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).\n\nYou 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).\n\nUsing 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. \n\n| Parameter | Required | Description                                                                                                                                                                                                       |\n|  :---------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `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.  |\n| `main_image`         | Optional | The main images associated with a product. |\n| `files`              | Optional | Any files associated with a product. |\n\nSee [**Including Resources**](/guides/Getting-Started/includes).\n"
      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: G

# --- truncated at 32 KB (117 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elastic-path/refs/heads/main/openapi/elastic-path-shopper-catalog-api-api-openapi.yml