Elastic Path Releases API

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).

OpenAPI Specification

elastic-path-releases-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 Releases 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: 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).

    '
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'
  /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.\n\nYou 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. \n\nIf 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.\n"
      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'
components:
  schemas:
    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
    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
    release-data:
      type: object
      title: Release Data
      description: Container for a catalog release.
      properties:
        data:
          $ref: '#/components/schemas/release'
        links:
          $ref: '#/components/schemas/links'
    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
    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
    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'
    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
    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
    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
    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
    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
  parameters:
    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
    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
  securitySchemes:
    BearerToken:
      type: http
      scheme: bearer