---
schema_version: "1"
id: aabdd459e56a24623bd7f129aaabf45a888c5fa98a61793f4e2868c9359e3102
title: Deployments
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/commerce-cloud/commerce-api/references/generated-api-specs/deployments.md
canonical_url: https://developer.salesforce.com/docs/commerce/commerce-api/references/deployments
source_site: developer.salesforce.com
content_type: documentation
content_hash: 2127739645987affead420df62a57a32223a482f59594961d264bd83bc842bde
products:
  - B2C Commerce API
  - Salesforce APIs
---
Deployments

# Deployments

[Download API specification](https://developer.salesforce.com/static/commercecloud/commerce-api/storefront/deployments-oas-v1-public.yaml)

## API Overview

The Deployments API provides SCAPI-native access to bundle and deployment management for Composable Commerce storefronts running on Managed Runtime (MRT).

*   **Bundles** — upload and list versioned SSR application packages for a storefront.
*   **Deployments** — trigger, list, and monitor deployments of bundles to storefront environments.

### Authentication & Authorization

Requests are authenticated with Account Manager OAuth 2.0 bearer tokens (`AmOAuth2`). Access is governed by the Deployments API scopes: `sfcc.storefront.deployments` grants read-only access, and `sfcc.storefront.deployments.rw` grants read and write access. Read operations (`GET`) accept either scope; write operations (`POST`) require `sfcc.storefront.deployments.rw`.

**Version:** 1.0.5

## Servers

*   `https://{shortCode}.api.commercecloud.salesforce.com/storefront/deployments/v1`
    *   `shortCode (default 123456gf)`

## Security

*   `AmOAuth2` (oauth2) AccountManager OAuth 2.0 bearer token Authentication.
    *   OAuth flow clientCredentials (tokenUrl: https://account.demandware.com/dwsso/oauth2/access\_token)
    *   Scope sfcc.storefront.deployments: Read-only access to the Deployments API.
    *   Scope sfcc.storefront.deployments.rw: Read and write access to the Deployments API.
    *   OAuth flow authorizationCode (authorizationUrl: https://account.demandware.com/dwsso/oauth2/authorize, tokenUrl: https://account.demandware.com/dwsso/oauth2/access\_token)
    *   Scope sfcc.storefront.deployments: Read-only access to the Deployments API.
    *   Scope sfcc.storefront.deployments.rw: Read and write access to the Deployments API.

## Operations

### GET Get bundles for a storefront.

`GET /organizations/{organizationId}/storefronts/{storefrontId}/bundles`

Operation ID: `getBundlesForStorefront`. Security: AmOAuth2 (sfcc.storefront.deployments, sfcc.storefront.deployments.rw).

Retrieves a paginated list of bundles uploaded to the specified storefront.

#### Parameters

*   `organizationId` (path, OrganizationId, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `storefrontId` (path, string, required) The storefront identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.  
    Minimum length: 1. Maximum length: 20. Pattern: ^\[a-z0-9\]+(?:-+\[a-z0-9\]+)\*$. Example: `my-storefront`.
*   `limit` (query, integer (int32)) Number of records to retrieve per request. Must be between 1 (minimum) and 200 (maximum). Defaults to 25.  
    Default: `25`. Minimum: 1. Maximum: 200.
*   `offset` (query, integer (int32)) Used to retrieve the results based on a particular resource offset.  
    Default: `0`. Minimum: 0.

#### Responses

*   **200** List of bundles successfully retrieved.
    
    Media type: `application/json`. Schema: `BundleResult`.
    
    _Example: BundleListSuccess_ Successful bundle list result
    
    Example of a successful response returning a paginated list of bundles for a storefront.
    
    ```
    {
      "limit": 25,
      "offset": 0,
      "total": 3,
      "data": [
        {
          "bundleId": 170,
          "description": "my bundle",
          "status": "ok",
          "lifecycleStatus": "active",
          "createdBy": "dev@example.com",
          "creationDate": "2026-04-08T21:47:28.188965Z",
          "lastModified": "2026-04-08T21:47:31.307595Z",
          "type": "ssr",
          "ssrParameters": {
            "runtime": "24.x",
            "runtimeDescription": "NodeJS 24.x",
            "envBasePath": "ca"
          },
          "inUseBy": [
            "production"
          ],
          "streamingEnabled": true
        },
        {
          "bundleId": 169,
          "description": "previous release",
          "status": "ok",
          "lifecycleStatus": "active",
          "createdBy": "dev@example.com",
          "creationDate": "2026-04-07T15:30:00.000000Z",
          "lastModified": "2026-04-07T15:30:05.000000Z",
          "type": "ssr",
          "ssrParameters": {
            "runtime": "24.x",
            "runtimeDescription": "NodeJS 24.x",
            "envBasePath": "ca"
          },
          "inUseBy": [],
          "streamingEnabled": false
        }
      ]
    }
    ```
    
*   **401** Your access token is invalid or expired and can’t be used to identify a user.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: UnauthorizedExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "Unauthorized",
      "detail": "Unauthorized request"
    }
    ```
    
*   **403** Forbidden. Your access token is valid, but you don’t have the required permissions to access the resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: ForbiddenExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden",
      "title": "Forbidden",
      "detail": "Access to requested resource forbidden"
    }
    ```
    

### POST Upload a bundle for a storefront.

`POST /organizations/{organizationId}/storefronts/{storefrontId}/bundles`

Operation ID: `uploadBundleForStorefront`. Security: AmOAuth2 (sfcc.storefront.deployments.rw).

Uploads a bundle archive (uncompressed or gzip-compressed .tar file), which must not exceed 400 MB. Bundle configuration is derived from a configuration file inside the archive. Sent as `multipart/form-data`: the archive travels in the `bundle` part, with the remaining request metadata as sibling form fields.

#### Parameters

*   `organizationId` (path, OrganizationId, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `storefrontId` (path, string, required) The storefront identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.  
    Minimum length: 1. Maximum length: 20. Pattern: ^\[a-z0-9\]+(?:-+\[a-z0-9\]+)\*$. Example: `my-storefront`.

#### Request body (required)

Media type: `multipart/form-data`. Schema: `BundleUploadRequest`.

_Example: BundleUpload_ Bundle upload with metadata

The `bundle` part carries the binary archive; the remaining parts carry the request metadata.

```
{
  "bundle": "<binary .tar.gz archive, e.g. storefront-bundle.tar.gz>",
  "message": "Release 2.1.0",
  "rootDir": "bld",
  "configPath": ".mrt/config.json",
  "matchMode": "strict"
}
```

#### Responses

*   **201** Bundle successfully uploaded.
    
    Media type: `application/json`. Schema: `BundleUploadResponse`.
    
    _Example: BundleUploadSuccess_ Successful bundle upload
    
    Example of a successful response after uploading a bundle.
    
    ```
    {
      "bundleId": 170,
      "warnings": [],
      "matches": {
        "ssrOnly": [
          "ssr.js",
          "worker.js"
        ],
        "ssrShared": [
          "shared.js",
          "utils.js"
        ]
      }
    }
    ```
    
*   **400** Bad Request. The uploaded bundle failed validation.
    
    Media type: `application/problem+json`. Schema: `BundleValidationFailedErrorResponse`.
    
    _Example: BundleValidationFailedErrorResponseExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/bundle-validation-failed",
      "detail": "We couldn't validate the bundle for these reasons: missing entry point",
      "title": "Bundle Validation Failed"
    }
    ```
    
*   **401** Your access token is invalid or expired and can’t be used to identify a user.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: UnauthorizedExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "Unauthorized",
      "detail": "Unauthorized request"
    }
    ```
    
*   **403** Forbidden. Your access token is valid, but you don’t have the required permissions to access the resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: ForbiddenExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden",
      "title": "Forbidden",
      "detail": "Access to requested resource forbidden"
    }
    ```
    

### GET Get deployments for an environment.

`GET /organizations/{organizationId}/storefronts/{storefrontId}/environments/{environmentId}/deployments`

Operation ID: `getDeploymentsForEnvironment`. Security: AmOAuth2 (sfcc.storefront.deployments, sfcc.storefront.deployments.rw).

Retrieves a paginated list of deployments for the specified environment.

#### Parameters

*   `organizationId` (path, OrganizationId, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `storefrontId` (path, string, required) The storefront identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.  
    Minimum length: 1. Maximum length: 20. Pattern: ^\[a-z0-9\]+(?:-+\[a-z0-9\]+)\*$. Example: `my-storefront`.
*   `environmentId` (path, string, required) The environment identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.  
    Minimum length: 1. Maximum length: 19. Pattern: ^\[a-z0-9\]+(?:-+\[a-z0-9\]+)\*$. Example: `production`.
*   `limit` (query, integer (int32)) Number of records to retrieve per request. Must be between 1 (minimum) and 200 (maximum). Defaults to 25.  
    Default: `25`. Minimum: 1. Maximum: 200.
*   `offset` (query, integer (int32)) Used to retrieve the results based on a particular resource offset.  
    Default: `0`. Minimum: 0.

#### Responses

*   **200** List of deployments successfully retrieved.
    
    Media type: `application/json`. Schema: `DeploymentResult`.
    
    _Example: DeploymentListSuccess_ Successful deployment list result
    
    Example of a successful response returning a paginated list of deployments for an environment.
    
    ```
    {
      "limit": 25,
      "offset": 0,
      "total": 1,
      "data": [
        {
          "deploymentId": "b035a4d7-ec6b-4dcd-af8f-3a847b10fed8",
          "status": "finished",
          "deploymentType": "publish",
          "creationDate": "2026-04-08T21:47:31.322339Z",
          "lastModified": "2026-04-08T21:51:55.692688Z",
          "duration": 76.867967,
          "createdBy": "dev@example.com",
          "statusMessage": "Deploy Finished",
          "progress": null,
          "bundle": {
            "bundleId": 170,
            "description": "my bundle",
            "status": "ok",
            "lifecycleStatus": "active",
            "createdBy": "dev@example.com",
            "creationDate": "2026-04-08T21:47:28.188965Z",
            "lastModified": "2026-04-08T21:47:31.307595Z",
            "type": "ssr",
            "ssrParameters": {
              "runtime": "24.x",
              "runtimeDescription": "NodeJS 24.x",
              "envBasePath": "ca"
            },
            "inUseBy": [
              "production"
            ],
            "streamingEnabled": true
          }
        }
      ]
    }
    ```
    
*   **401** Your access token is invalid or expired and can’t be used to identify a user.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: UnauthorizedExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "Unauthorized",
      "detail": "Unauthorized request"
    }
    ```
    
*   **403** Forbidden. Your access token is valid, but you don’t have the required permissions to access the resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: ForbiddenExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden",
      "title": "Forbidden",
      "detail": "Access to requested resource forbidden"
    }
    ```
    

### POST Create a deployment for an environment.

`POST /organizations/{organizationId}/storefronts/{storefrontId}/environments/{environmentId}/deployments`

Operation ID: `createDeploymentForEnvironment`. Security: AmOAuth2 (sfcc.storefront.deployments.rw).

Triggers a new deployment of a bundle to the specified environment. Returns immediately with a deployment resource in a queued status. Poll the deployment by ID to track progress.

#### Parameters

*   `organizationId` (path, OrganizationId, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `storefrontId` (path, string, required) The storefront identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.  
    Minimum length: 1. Maximum length: 20. Pattern: ^\[a-z0-9\]+(?:-+\[a-z0-9\]+)\*$. Example: `my-storefront`.
*   `environmentId` (path, string, required) The environment identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.  
    Minimum length: 1. Maximum length: 19. Pattern: ^\[a-z0-9\]+(?:-+\[a-z0-9\]+)\*$. Example: `production`.

#### Request body (required)

Media type: `application/json`. Schema: `DeploymentCreateRequest`.

_Example: CreateDeployment_ Create a deployment

Trigger a deployment of a bundle to an environment by its bundleId.

```
{
  "bundleId": 170
}
```

#### Responses

*   **202** Deployment successfully queued.
    
    Media type: `application/json`. Schema: `Deployment`.
    
    _Example: DeploymentCreatedSuccess_ Successful deployment creation
    
    Example of a successful response when a new deployment is triggered (202 Accepted).
    
    ```
    {
      "deploymentId": "b035a4d7-ec6b-4dcd-af8f-3a847b10fed8",
      "status": "queued",
      "deploymentType": "publish",
      "creationDate": "2026-04-08T21:47:31.322339Z",
      "lastModified": "2026-04-08T21:47:31.322339Z",
      "duration": null,
      "createdBy": "dev@example.com",
      "statusMessage": "Queueing Bundle",
      "progress": null,
      "bundle": {
        "bundleId": 170,
        "description": "my bundle",
        "status": "ok",
        "lifecycleStatus": "active",
        "createdBy": "dev@example.com",
        "creationDate": "2026-04-08T21:47:28.188965Z",
        "lastModified": "2026-04-08T21:47:31.307595Z",
        "type": "ssr",
        "ssrParameters": {
          "runtime": "24.x",
          "runtimeDescription": "NodeJS 24.x",
          "envBasePath": "ca"
        },
        "inUseBy": [
          "production"
        ],
        "streamingEnabled": true
      }
    }
    ```
    
*   **400** Bad Request. The deployment request body is invalid.
    
    Media type: `application/problem+json`. Schema: `InvalidDeploymentRequestErrorResponse`.
    
    _Example: InvalidDeploymentRequestErrorResponseExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/invalid-deployment-request",
      "detail": "The deployment request body is invalid. A valid bundleId is required.",
      "title": "Invalid Deployment Request"
    }
    ```
    
*   **401** Your access token is invalid or expired and can’t be used to identify a user.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: UnauthorizedExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "Unauthorized",
      "detail": "Unauthorized request"
    }
    ```
    
*   **403** Forbidden. Your access token is valid, but you don’t have the required permissions to access the resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: ForbiddenExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden",
      "title": "Forbidden",
      "detail": "Access to requested resource forbidden"
    }
    ```
    
*   **404** The bundle referenced by the deployment request was not found for this storefront.
    
    Media type: `application/problem+json`. Schema: `BundleNotFoundErrorResponse`.
    
    _Example: BundleNotFoundErrorResponseExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/bundle-not-found",
      "detail": "We couldn't find bundle 999.",
      "title": "Bundle Not Found"
    }
    ```
    
*   **409** The deployment cannot proceed because another deployment or deletion is already in progress for this environment.
    
    Media type: `application/problem+json`. Schema: `DeploymentConflictErrorResponse`.
    
    _Example: DeploymentConflictErrorResponseExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/deployment-conflict",
      "detail": "You can't request a deployment when another deployment or deletion is in progress.",
      "title": "Deployment Conflict"
    }
    ```
    

### GET Get a deployment by ID.

`GET /organizations/{organizationId}/storefronts/{storefrontId}/environments/{environmentId}/deployments/{deploymentId}`

Operation ID: `getDeploymentById`. Security: AmOAuth2 (sfcc.storefront.deployments, sfcc.storefront.deployments.rw).

Retrieves the details of a specific deployment, including its current status and progress.

#### Parameters

*   `organizationId` (path, OrganizationId, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `storefrontId` (path, string, required) The storefront identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.  
    Minimum length: 1. Maximum length: 20. Pattern: ^\[a-z0-9\]+(?:-+\[a-z0-9\]+)\*$. Example: `my-storefront`.
*   `environmentId` (path, string, required) The environment identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.  
    Minimum length: 1. Maximum length: 19. Pattern: ^\[a-z0-9\]+(?:-+\[a-z0-9\]+)\*$. Example: `production`.
*   `deploymentId` (path, string (uuid), required) The deployment identifier.  
    Example: `b035a4d7-ec6b-4dcd-af8f-3a847b10fed8`.

#### Responses

*   **200** Deployment successfully retrieved.
    
    Media type: `application/json`. Schema: `Deployment`.
    
    _Example: DeploymentSuccess_ Successful deployment retrieval
    
    Example of a successful response returning a single deployment with all properties.
    
    ```
    {
      "deploymentId": "b035a4d7-ec6b-4dcd-af8f-3a847b10fed8",
      "status": "finished",
      "deploymentType": "publish",
      "creationDate": "2026-04-08T21:47:31.322339Z",
      "lastModified": "2026-04-08T21:51:55.692688Z",
      "duration": 76.867967,
      "createdBy": "dev@example.com",
      "statusMessage": "Deploy Finished",
      "progress": {
        "description": "Finished deployment",
        "percentage": 100
      },
      "bundle": {
        "bundleId": 170,
        "description": "my bundle",
        "status": "ok",
        "lifecycleStatus": "active",
        "createdBy": "dev@example.com",
        "creationDate": "2026-04-08T21:47:28.188965Z",
        "lastModified": "2026-04-08T21:47:31.307595Z",
        "type": "ssr",
        "ssrParameters": {
          "runtime": "24.x",
          "runtimeDescription": "NodeJS 24.x",
          "envBasePath": "ca"
        },
        "inUseBy": [
          "production"
        ],
        "streamingEnabled": true
      }
    }
    ```
    
*   **401** Your access token is invalid or expired and can’t be used to identify a user.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: UnauthorizedExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "Unauthorized",
      "detail": "Unauthorized request"
    }
    ```
    
*   **403** Forbidden. Your access token is valid, but you don’t have the required permissions to access the resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: ForbiddenExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden",
      "title": "Forbidden",
      "detail": "Access to requested resource forbidden"
    }
    ```
    
*   **404** The requested deployment was not found.
    
    Media type: `application/problem+json`. Schema: `DeploymentNotFoundErrorResponse`.
    
    _Example: DeploymentNotFoundErrorResponseExample_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/deployment-not-found",
      "detail": "We couldn't find that deployment.",
      "title": "Deployment Not Found"
    }
    ```
    

## Schemas

### OrganizationId

An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).

Type: `string`.

Pattern: ^f\_ecom\_\[a-z\]{4}\_(prd|stg|dev|s\[0-9\]{2}|\[0-9\]{3})$. Example: `f_ecom_zzxy_prd`.

### BundleResult

Paginated result containing a list of bundles.

Includes all fields of `PaginatedResultBase`.

*   `data` (_array of Bundle_, required) List of bundles.

### ErrorResponse

*   `title` (_string_, required) A short, human-readable summary of the problem type. It will not change from occurrence to occurrence of the problem, except for purposes of localization  
    Maximum length: 256. Example: `You do not have enough credit`.
*   `type` (_string_, required) A URI reference \[RFC3986\] that identifies the problem type. This specification encourages that, when dereferenced, it provide human-readable documentation for the problem type (e.g., using HTML \[W3C.REC-html5-20141028\]). When this member is not present, its value is assumed to be "about:blank". It accepts relative URIs; this means that they must be resolved relative to the document's base URI, as per \[RFC3986\], Section 5.  
    Maximum length: 2048. Example: `NotEnoughMoney`.
*   `detail` (_string_, required) A human-readable explanation specific to this occurrence of the problem.  
    Example: `Your current balance is 30, but that costs 50`.
*   `instance` (_string_) A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. It accepts relative URIs; this means that they must be resolved relative to the document's base URI, as per \[RFC3986\], Section 5.  
    Maximum length: 2048. Example: `/account/12345/msgs/abc`.

### BundleUploadRequest

Request body to upload a bundle, sent as `multipart/form-data`. The archive travels in the `bundle` part, with the remaining request metadata as sibling form fields.

*   `bundle` (_string (binary)_, required) Bundle archive (uncompressed or gzip-compressed .tar file). The uploaded archive must not exceed 400 MB.  
    Example: `<binary .tar.gz archive, e.g. storefront-bundle.tar.gz>`.
*   `message` (_string_) Bundle description (optional metadata).  
    Maximum length: 2048. Example: `Release 2.1.0`.
*   `rootDir` (_string_) Root directory within bundle archive. Files in this directory are used for server-side rendering, published as static assets, or both. Any files in the bundle archive outside of this directory are ignored.  
    Default: `bld`. Maximum length: 256. Example: `bld`.
*   `configPath` (_string_) Path (relative to root directory) of bundle configuration file.  
    Default: `.mrt/config.json`. Maximum length: 256. Example: `.mrt/config.json`.
*   `matchMode` (_string_) Determines how files in the bundle configuration are matched. If `strict`, all files listed in `ssrOnly` and `ssrShared` fields in the bundle configuration must be present. If `ignore_missing`, missing files in the `ssrOnly` and `ssrShared` fields are ignored.  
    Allowed values: `strict`, `ignore_missing`. Default: `strict`. Example: `strict`.

### BundleUploadResponse

Response returned after a successful bundle upload.

*   `bundleId` (_integer (int32)_) The unique identifier of the uploaded bundle.  
    Example: `170`.
*   `warnings` (_array of string_) List of warnings generated during bundle processing.  
    Items: Maximum length: 4000. Example: `Deprecated runtime version detected`.
    
    _Example_
    
    ```
    []
    ```
    
*   `matches` (_object_) File matching results from bundle analysis.
    *   `ssrOnly` (_array of string_) Files matched as SSR-only (server-side only).  
        Items: Maximum length: 640. Example: `ssr.js`.
        
        _Example_
        
        ```
        [
          "ssr.js"
        ]
        ```
        
    *   `ssrShared` (_array of string_) Files matched as SSR-shared (used by both server and client).  
        Items: Maximum length: 640. Example: `shared.js`.
        
        _Example_
        
        ```
        [
          "shared.js"
        ]
        ```
        

### BundleValidationFailedErrorResponse

Returned when the uploaded bundle fails validation.

Includes all fields of `ErrorResponse`.

*   `error` (_string_) A human-readable description of why bundle validation failed.  
    Maximum length: 4000. Example: `missing entry point`.

### DeploymentResult

Paginated result containing a list of deployments.

Includes all fields of `PaginatedResultBase`.

*   `data` (_array of Deployment_, required) List of deployments.

### DeploymentCreateRequest

Request body to create a new deployment.

*   `bundleId` (_integer (int32)_, required) The identifier of the bundle to deploy.  
    Example: `170`.

### Deployment

A deployment action that publishes a bundle to an environment.

*   `deploymentId` (_string_) The unique identifier of the deployment, in UUID format.  
    Minimum length: 36. Maximum length: 36. Pattern: ^\[0-9a-f\]{8}-\[0-9a-f\]{4}-\[0-9a-f\]{4}-\[0-9a-f\]{4}-\[0-9a-f\]{12}$. Example: `b035a4d7-ec6b-4dcd-af8f-3a847b10fed8`.
*   `status` (_string_) The current status of the deployment.  
    Allowed values: `queued`, `in_progress`, `failed`, `finished`. Example: `finished`.
*   `deploymentType` (_string_) The type of deployment.  
    Allowed values: `publish`, `reset_bundle`, `push`, `deploy_settings`, `redeploy`. Example: `publish`.
*   `creationDate` (_string (date-time)_) The timestamp when the deployment was created.  
    Example: `2026-04-08T21:47:31.322339Z`.
*   `lastModified` (_string (date-time)_) The timestamp when the deployment was last modified.  
    Example: `2026-04-08T21:51:55.692688Z`.
*   `duration` (_number (double)_, nullable) The duration of the deployment in seconds. Null if the deployment has not finished.  
    Example: `76.867967`.
*   `createdBy` (_string_, nullable) The email address of the user who triggered the deployment. Null if no user is associated.  
    Maximum length: 254. Example: `dev@example.com`.
*   `statusMessage` (_string_) A human-readable message about the deployment's current state.  
    Maximum length: 4096. Example: `Queueing Bundle`.
*   `progress` (_object_, nullable) Progress information for the deployment. Null unless an external publish is in progress.
    *   `description` (_string_, nullable) A human-readable description of the current deployment stage.  
        Maximum length: 128. Example: `Updating CDN`.
    *   `percentage` (_integer (int32)_, nullable) Percentage of deployment completion.  
        Minimum: 0. Maximum: 100. Example: `0`.
*   `bundle` (_Bundle_)

### InvalidDeploymentRequestErrorResponse

Returned when the deployment request body is malformed or missing a valid bundleId.

Includes all fields of `ErrorResponse`.

### BundleNotFoundErrorResponse

Returned when the bundle referenced by the deployment request does not exist for this storefront.

Includes all fields of `ErrorResponse`.

*   `bundleId` (_integer (int32)_) The identifier of the bundle that couldn't be found.  
    Example: `999`.

### DeploymentConflictErrorResponse

Returned when a deployment cannot proceed because another deployment or deletion is already in progress for the environment.

Includes all fields of `ErrorResponse`.

### DeploymentNotFoundErrorResponse

Returned when the requested deployment does not exist.

Includes all fields of `ErrorResponse`.

### PaginatedResultBase

Schema defining generic pageable result. Each response schema of a resource requiring pagination should extend this schema. If you use this extend this schema directly, it needs to be defined what data is returned. Allowed names for the data field is `data`.

Includes all fields of `ResultBase`.

*   `offset` (_Offset_, required)

### Bundle

A versioned build artifact (SSR application package) uploaded to a storefront.

*   `bundleId` (_integer (int32)_) The unique identifier of the bundle.  
    Example: `170`.
*   `description` (_string_) A user-provided message describing the bundle.  
    Maximum length: 2048. Example: `my bundle`.
*   `status` (_string_) The processing status of the bundle.  
    Allowed values: `ok`, `broken`, `preparing`. Example: `ok`.
*   `lifecycleStatus` (_string_) The lifecycle status of the bundle.  
    Allowed values: `active`, `cleanup_requested`, `cleanup_in_progress`, `cleanup_complete`, `cleanup_failed`. Example: `active`.
*   `createdBy` (_string_, nullable) The email address of the user who uploaded the bundle. Null if no user is associated.  
    Maximum length: 254. Example: `dev@example.com`.
*   `creationDate` (_string (date-time)_) The timestamp when the bundle was created.  
    Example: `2026-04-08T21:47:28.188965Z`.
*   `lastModified` (_string (date-time)_) The timestamp when the bundle was last modified.  
    Example: `2026-04-08T21:47:31.307595Z`.
*   `type` (_string_) The bundle type.  
    Allowed values: `ssr`, `legacy`. Example: `ssr`.
*   `ssrParameters` (_object_, nullable) SSR configuration parameters for this bundle. Null for non-SSR bundles.
    *   `runtime` (_string_) The Node.js runtime version used by this bundle.  
        Maximum length: 256. Example: `24.x`.
    *   `runtimeDescription` (_string_) Human-readable description of the runtime version.  
        Maximum length: 256. Example: `NodeJS 24.x`.
    *   `envBasePath` (_string_) The base path for the environment associated with this bundle.  
        Maximum length: 256. Example: `ca`.
*   `inUseBy` (_array of string_) List of environment identifiers where this bundle is currently deployed.  
    Items: Maximum length: 256. Example: `production`.
    
    _Example_
    
    ```
    [
      "production"
    ]
    ```
    
*   `streamingEnabled` (_boolean_) Whether streaming is enabled for this bundle.  
    Example: `false`.

### ResultBase

Schema defining generic list result. Each response schema of a resource requiring a list response should extend this schema. Additionally it needs to be defined what data is returned.

*   `limit` (_integer (int32)_, required) Maximum records to retrieve per request. The limit with its constraints (minimum, maximum, default) is defined by the request parameter `limit` of the endpoint returning this schema.  
    Example: `10`.
*   `total` (_Total_, required)

### Offset

The zero-based index of the first hit/data to include in the result.

Type: `integer (int32)`.

Default: `0`. Minimum: 0. Example: `0`.

### Total

The total number of hits that match the search's criteria. This can be greater than the number of results returned as search results are pagenated.

Type: `integer (int32)`.

Default: `0`. Minimum: 0. Example: `10`.