---
title: "Publishes a catalog"
method: POST
path: "/catalogs/{catalog_id}/releases"
tags: ["Releases"]
---

# Publishes a catalog

`POST /catalogs/{catalog_id}/releases`

## Request

- Base URL: `https://euwest.api.elasticpath.com`
- URL: `https://euwest.api.elasticpath.com/catalogs/{catalog_id}/releases`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/elasticpath/apis/catalogs-introduction/docs/catalogs/:catalog_id/releases/post.ts> (a function with typed inputs; its response is checked against the schema)

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. A new catalog keeps two published releases. Set `max_published_releases` to 1, 2, or 3. A catalog that has never stored `max_published_releases` keeps 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.

## Path parameters

- `catalog_id` string, required

## Request body

- CatalogReleaseCreateData: Creates a catalog release with the following attributes.
  - `data` object
    - `export_full_delta` boolean: 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.
    - `include_organization_resources` boolean, nullable: 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).

## Response `201`

Publishes a catalog release with the following attributes.

- ReleaseData: Container for a catalog release.
  - `data` Release: A catalog release represents a collection of hierarchical product data, price books and catalogs rules.
    - `id` string: A unique identifier for the catalog release.
    - `attributes` object
      - `name` string: The name of a release.
      - `published_at` string, date-time, nullable: The date and time a release was published.
      - `catalog_id` string: A unique identifier for the catalog.
      - `description` string: A description of the catalog release.
      - `hierarchies` NodeReference[]: An array of hierarchy IDs associated with the release.
        - `id` string: The unique identifier of a hierarchy.
        - `label` string: A label for a hierarchy.
        - `name` string: The name of a hierarchy.
    - `relationships` ReleaseRelationships: 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.
      - `delta` object: A URL to a delta document that describes the changes between catalog releases.
        - `links` RelatedLink: A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.
          - `related` string, required: A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.
      - `products` object: A URL to all products included in a catalog release.
        - `links` RelatedLink: A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.
          - `related` string, required: A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.
      - `hierarchies` object: A URL to all hierarchies included in a catalog release.
        - `links` RelatedLink, required: A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.
          - `related` string, required: A URL to a related object, for example, catalog rules, hierarchies, price books, products and deltas.
    - `type` string: This represents the type of object being returned. Always `catalog-release`.
    - `meta` ReleaseMeta: A release's metadata.
      - `created_at` string, date-time: The date and time a release is created.
      - `started_at` string, date-time, nullable: 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.
      - `updated_at` string, date-time, nullable: The date and time a release is updated.
      - `release_status` 'PENDING' | 'IN_PROGRESS' | 'FAILED' | 'PUBLISHED': The status of the current release.
      - `language` string: Your storefront's preferred language code and locale.
      - `is_full_publish` boolean: 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.
      - `is_full_delta` boolean: 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.
      - `total_products` integer, nullable: The total number of products displayed in a catalog release.
      - `total_nodes` integer, nullable: The total number of hierarchy nodes displayed in a catalog release.
      - `percent_completed` integer, nullable: An integer that represents the progress of a catalog publish. The attribute starts at `0` and reaches `100` when publishing is complete.
      - `owner` 'store' | 'organization', nullable: The owner of the resource, can be either `organization` or `store`.
      - `price_segmentation_enabled` boolean: This indicates whether the catalog release will support price segmentation using catalog rules to define which pricebook(s) to use for pricing
      - `indexing_duration_ms` integer, nullable: The elapsed time in milliseconds Catalog Search spent indexing this release.
      - `includes_draft_products` boolean: 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.
      - `allow_search_overrides` boolean, nullable: When `true`, search overrides are allowed for this catalog release. This is the catalog `allow_search_overrides` attribute at the time the release was created. Defaults to `false`.
  - `links` Links: Links allow you to move between requests.
    - `self` string, uri-reference, nullable: Single entities use a `self` parameter with a link the specific resource.
    - `first` string, uri-reference, nullable: Always the first page.
    - `last` string, uri-reference, nullable: This is `null` if there is only one page.
    - `prev` string, uri-reference, nullable: This is `null` if there is only one page.
    - `next` string, uri-reference, nullable: This is `null` if there is only one page.

## Other responses

- `default`: Unexpected error.

---

[API](https://skmtc.dev/elasticpath/apis/catalogs-introduction.md) - [All operations](https://skmtc.dev/elasticpath/apis/catalogs-introduction/llms.txt) - [OpenAPI document](https://skmtc.dev/elasticpath/apis/catalogs-introduction/revisions/eb541d5dea51?raw)
