@salesforce/b2c-tooling-sdk 2.3.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/guides/enrichment.json +291 -0
- package/data/guides/index.json +426 -37
- package/data/schemas/dw.schema.json +590 -0
- package/data/tooling/index.json +18 -9
- package/dist/esm/cli/base-command.d.ts +20 -1
- package/dist/esm/cli/base-command.js +61 -11
- package/dist/esm/cli/base-command.js.map +1 -1
- package/dist/esm/cli/cartridge-command.js +2 -1
- package/dist/esm/cli/cartridge-command.js.map +1 -1
- package/dist/esm/cli/command-search.d.ts +85 -0
- package/dist/esm/cli/command-search.js +147 -0
- package/dist/esm/cli/command-search.js.map +1 -0
- package/dist/esm/cli/config.d.ts +10 -1
- package/dist/esm/cli/config.js +18 -9
- package/dist/esm/cli/config.js.map +1 -1
- package/dist/esm/cli/hooks.d.ts +13 -0
- package/dist/esm/cli/hooks.js +11 -0
- package/dist/esm/cli/hooks.js.map +1 -1
- package/dist/esm/cli/index.d.ts +2 -0
- package/dist/esm/cli/index.js +2 -0
- package/dist/esm/cli/index.js.map +1 -1
- package/dist/esm/cli/instance-command.d.ts +1 -0
- package/dist/esm/cli/instance-command.js +2 -1
- package/dist/esm/cli/instance-command.js.map +1 -1
- package/dist/esm/cli/mrt-command.d.ts +3 -2
- package/dist/esm/cli/mrt-command.js +4 -4
- package/dist/esm/cli/mrt-command.js.map +1 -1
- package/dist/esm/cli/oauth-command.d.ts +1 -0
- package/dist/esm/cli/ods-command.d.ts +1 -0
- package/dist/esm/cli/webdav-command.d.ts +1 -0
- package/dist/esm/clients/custom-apis.d.ts +36 -2
- package/dist/esm/clients/custom-apis.js +57 -4
- package/dist/esm/clients/custom-apis.js.map +1 -1
- package/dist/esm/clients/index.d.ts +1 -1
- package/dist/esm/clients/index.js +1 -1
- package/dist/esm/clients/index.js.map +1 -1
- package/dist/esm/clients/scapi-backend-utils.d.ts +15 -0
- package/dist/esm/clients/scapi-backend-utils.js +28 -1
- package/dist/esm/clients/scapi-backend-utils.js.map +1 -1
- package/dist/esm/clients/scapi-fallback-backend.js +2 -2
- package/dist/esm/clients/scapi-fallback-backend.js.map +1 -1
- package/dist/esm/clients/scapi-schemas.generated.d.ts +2 -2
- package/dist/esm/compat/dispatcher.js +2 -2
- package/dist/esm/compat/dispatcher.js.map +1 -1
- package/dist/esm/config/config-origins.d.ts +19 -0
- package/dist/esm/config/config-origins.js +11 -0
- package/dist/esm/config/config-origins.js.map +1 -0
- package/dist/esm/config/config-write.d.ts +86 -0
- package/dist/esm/config/config-write.js +296 -0
- package/dist/esm/config/config-write.js.map +1 -0
- package/dist/esm/config/dw-json-schema.d.ts +14 -0
- package/dist/esm/config/dw-json-schema.js +269 -0
- package/dist/esm/config/dw-json-schema.js.map +1 -0
- package/dist/esm/config/dw-json.d.ts +2 -0
- package/dist/esm/config/dw-json.js +10 -6
- package/dist/esm/config/dw-json.js.map +1 -1
- package/dist/esm/config/index.d.ts +13 -4
- package/dist/esm/config/index.js +8 -3
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/instance-manager.d.ts +64 -28
- package/dist/esm/config/instance-manager.js +145 -63
- package/dist/esm/config/instance-manager.js.map +1 -1
- package/dist/esm/config/mapping.d.ts +5 -0
- package/dist/esm/config/mapping.js +20 -1
- package/dist/esm/config/mapping.js.map +1 -1
- package/dist/esm/config/project-environment.d.ts +62 -0
- package/dist/esm/config/project-environment.js +113 -0
- package/dist/esm/config/project-environment.js.map +1 -1
- package/dist/esm/config/resolver.d.ts +22 -0
- package/dist/esm/config/resolver.js +106 -37
- package/dist/esm/config/resolver.js.map +1 -1
- package/dist/esm/config/sources/dw-json-source.d.ts +9 -1
- package/dist/esm/config/sources/dw-json-source.js +59 -23
- package/dist/esm/config/sources/dw-json-source.js.map +1 -1
- package/dist/esm/config/sources/env-source.d.ts +70 -9
- package/dist/esm/config/sources/env-source.js +205 -47
- package/dist/esm/config/sources/env-source.js.map +1 -1
- package/dist/esm/config/sources/index.d.ts +1 -1
- package/dist/esm/config/sources/index.js +1 -1
- package/dist/esm/config/sources/index.js.map +1 -1
- package/dist/esm/config/types.d.ts +53 -3
- package/dist/esm/docs/search.js +3 -1
- package/dist/esm/docs/search.js.map +1 -1
- package/dist/esm/docs/types.d.ts +3 -1
- package/dist/esm/guidance/bundle.d.ts +33 -0
- package/dist/esm/guidance/bundle.js +268 -0
- package/dist/esm/guidance/bundle.js.map +1 -0
- package/dist/esm/guidance/catalog.d.ts +8 -1
- package/dist/esm/guidance/catalog.js +48 -6
- package/dist/esm/guidance/catalog.js.map +1 -1
- package/dist/esm/guidance/index.d.ts +1 -0
- package/dist/esm/guidance/index.js +1 -0
- package/dist/esm/guidance/index.js.map +1 -1
- package/dist/esm/guidance/types.d.ts +17 -1
- package/dist/esm/guidance/types.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/operations/jobs/run-system-job.js +2 -2
- package/dist/esm/operations/jobs/run-system-job.js.map +1 -1
- package/dist/esm/plugins/discovery.js +2 -1
- package/dist/esm/plugins/discovery.js.map +1 -1
- package/dist/esm/scapi/catalog.d.ts +5 -2
- package/dist/esm/scapi/catalog.js.map +1 -1
- package/dist/esm/scapi/index.d.ts +6 -2
- package/dist/esm/scapi/index.js +4 -2
- package/dist/esm/scapi/index.js.map +1 -1
- package/dist/esm/scapi/live.d.ts +14 -3
- package/dist/esm/scapi/live.js +33 -5
- package/dist/esm/scapi/live.js.map +1 -1
- package/dist/esm/scapi/local.d.ts +26 -0
- package/dist/esm/scapi/local.js +143 -0
- package/dist/esm/scapi/local.js.map +1 -0
- package/dist/esm/scapi/request.d.ts +2 -2
- package/dist/esm/scapi/request.js +4 -2
- package/dist/esm/scapi/request.js.map +1 -1
- package/dist/esm/scapi/runtime.d.ts +5 -0
- package/dist/esm/scapi/runtime.js.map +1 -1
- package/dist/esm/scapi/schema-source.d.ts +90 -0
- package/dist/esm/scapi/schema-source.js +146 -0
- package/dist/esm/scapi/schema-source.js.map +1 -0
- package/dist/esm/scapi/worker-source.js +31 -7
- package/dist/esm/scapi/worker-source.js.map +1 -1
- package/dist/esm/telemetry/telemetry.d.ts +1 -0
- package/dist/esm/telemetry/telemetry.js +18 -1
- package/dist/esm/telemetry/telemetry.js.map +1 -1
- package/dist/esm/telemetry/types.d.ts +9 -0
- package/dist/esm/test-utils/config-isolation.js +21 -15
- package/dist/esm/test-utils/config-isolation.js.map +1 -1
- package/dist/esm/ux/agent-context.d.ts +69 -0
- package/dist/esm/ux/agent-context.js +133 -0
- package/dist/esm/ux/agent-context.js.map +1 -0
- package/dist/esm/ux/confirm.d.ts +27 -0
- package/dist/esm/ux/confirm.js +32 -0
- package/dist/esm/ux/confirm.js.map +1 -1
- package/dist/esm/ux/index.d.ts +2 -1
- package/dist/esm/ux/index.js +2 -1
- package/dist/esm/ux/index.js.map +1 -1
- package/node_modules/@salesforce/b2c-api-schemas/manifest.json +83 -42
- package/node_modules/@salesforce/b2c-api-schemas/package.json +1 -1
- package/node_modules/@salesforce/b2c-api-schemas/scapi/cdn/zones/v1.json +6798 -238
- package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/orders/v1.json +2296 -205
- package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v1.json +5571 -666
- package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v2.json +6062 -371
- package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-orders/v1.json +3426 -360
- package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-payments/v1.json +351 -99
- package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/cors/v1.json +172 -12
- package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/preferences/v1.json +1497 -111
- package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/shopper-configurations/v1.json +202 -36
- package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/timeouts/v1.json +79 -10
- package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/custom-objects/v1.json +785 -49
- package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/shopper-custom-objects/v1.json +191 -40
- package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/customers/v1.json +1483 -107
- package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/shopper-customers/v1.json +4854 -787
- package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/custom-apis/v1.json +119 -15
- package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/object-definitions/v1.json +1699 -80
- package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scapi-schemas/v1.json +252 -18
- package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scripts/v1.json +329 -23
- package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/experiences/v1.json +4208 -234
- package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/shopper-experience/v1.json +1591 -247
- package/node_modules/@salesforce/b2c-api-schemas/scapi/intelligence/analytics/v1.json +396 -8
- package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/availability/v1.json +1242 -69
- package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/impex/v1.json +2354 -248
- package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/reservation/v1.json +1550 -45
- package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/segmentation/v1.json +6615 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/roles/v1.json +1520 -59
- package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/users/v1.json +397 -17
- package/node_modules/@salesforce/b2c-api-schemas/scapi/observability/metrics/v1.json +1241 -27
- package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/jobs/v1.json +1069 -68
- package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/replications/v1.json +410 -23
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/assignments/v1.json +502 -102
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/campaigns/v1.json +1112 -94
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/coupons/v1.json +820 -93
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/gift-certificates/v1.json +845 -92
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/promotions/v1.json +2716 -674
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-gift-certificates/v1.json +130 -47
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-promotions/v1.json +233 -63
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/source-code-groups/v1.json +630 -70
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/catalogs/v1.json +2886 -348
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/inventory-lists/v1.json +520 -19
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/price-books/v1.json +3115 -293
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/products/v1.json +3313 -138
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-availability/v1.json +266 -52
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-delivery-estimates/v1.json +256 -48
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-products/v1.json +1744 -306
- package/node_modules/@salesforce/b2c-api-schemas/scapi/search/shopper-search/v1.json +1661 -120
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth/v1.json +2174 -118
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth-admin/v1.json +1373 -24
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/consents/v1.json +531 -20
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-agents/v1.json +154 -6
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-consents/v1.json +596 -79
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-context/v1.json +456 -42
- package/node_modules/@salesforce/b2c-api-schemas/scapi/site/seo/v1.json +101 -23
- package/node_modules/@salesforce/b2c-api-schemas/scapi/site/shopper-seo/v1.json +184 -41
- package/node_modules/@salesforce/b2c-api-schemas/scapi/site/sites/v1.json +995 -47
- package/node_modules/@salesforce/b2c-api-schemas/scapi/store/shopper-stores/v1.json +370 -67
- package/node_modules/@salesforce/b2c-api-schemas/scapi/store/store-redirect-mappings/v1.json +319 -11
- package/node_modules/@salesforce/b2c-api-schemas/scapi/store/stores/v1.json +1109 -64
- package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/deployments/v1.json +1442 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/environments/v1.json +4293 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/storefronts/v1.json +1371 -0
- package/package.json +5 -2
- package/specs/scapi-schemas-v1.yaml +4 -1
|
@@ -0,0 +1,1442 @@
|
|
|
1
|
+
{
|
|
2
|
+
"openapi": "3.0.3",
|
|
3
|
+
"info": {
|
|
4
|
+
"title": "Deployments",
|
|
5
|
+
"description": "[Download API specification](https://developer.salesforce.com/static/commercecloud/commerce-api/storefront/deployments-oas-v1-public.yaml)\n\n# API Overview\n\nThe Deployments API provides SCAPI-native access to bundle and deployment management for Composable Commerce storefronts running on Managed Runtime (MRT).\n\n- **Bundles** — upload and list versioned SSR application packages for a storefront.\n- **Deployments** — trigger, list, and monitor deployments of bundles to storefront environments.\n\n## Authentication & Authorization\n\nRequests 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`.",
|
|
6
|
+
"version": "1.0.5",
|
|
7
|
+
"x-api-type": "Admin",
|
|
8
|
+
"x-api-family": "Storefront"
|
|
9
|
+
},
|
|
10
|
+
"servers": [
|
|
11
|
+
{
|
|
12
|
+
"url": "https://{shortCode}.api.commercecloud.salesforce.com/storefront/deployments/v1",
|
|
13
|
+
"variables": {
|
|
14
|
+
"shortCode": {
|
|
15
|
+
"default": "123456gf"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"paths": {
|
|
21
|
+
"/organizations/{organizationId}/storefronts/{storefrontId}/bundles": {
|
|
22
|
+
"get": {
|
|
23
|
+
"summary": "Get bundles for a storefront.",
|
|
24
|
+
"description": "Retrieves a paginated list of bundles uploaded to the specified storefront.",
|
|
25
|
+
"operationId": "getBundlesForStorefront",
|
|
26
|
+
"parameters": [
|
|
27
|
+
{
|
|
28
|
+
"name": "organizationId",
|
|
29
|
+
"in": "path",
|
|
30
|
+
"description": "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).",
|
|
31
|
+
"required": true,
|
|
32
|
+
"style": "simple",
|
|
33
|
+
"explode": false,
|
|
34
|
+
"schema": {
|
|
35
|
+
"$ref": "#/components/schemas/OrganizationId"
|
|
36
|
+
},
|
|
37
|
+
"example": "f_ecom_zzxy_prd"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "storefrontId",
|
|
41
|
+
"in": "path",
|
|
42
|
+
"description": "The storefront identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.",
|
|
43
|
+
"required": true,
|
|
44
|
+
"style": "simple",
|
|
45
|
+
"explode": false,
|
|
46
|
+
"schema": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"example": "my-storefront",
|
|
49
|
+
"maxLength": 20,
|
|
50
|
+
"minLength": 1,
|
|
51
|
+
"pattern": "^[a-z0-9]+(?:-+[a-z0-9]+)*$"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "limit",
|
|
56
|
+
"in": "query",
|
|
57
|
+
"description": "Number of records to retrieve per request. Must be between 1 (minimum) and 200 (maximum). Defaults to 25.",
|
|
58
|
+
"required": false,
|
|
59
|
+
"style": "form",
|
|
60
|
+
"explode": true,
|
|
61
|
+
"schema": {
|
|
62
|
+
"type": "integer",
|
|
63
|
+
"format": "int32",
|
|
64
|
+
"default": 25,
|
|
65
|
+
"maximum": 200,
|
|
66
|
+
"minimum": 1
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "offset",
|
|
71
|
+
"in": "query",
|
|
72
|
+
"description": "Used to retrieve the results based on a particular resource offset.",
|
|
73
|
+
"required": false,
|
|
74
|
+
"style": "form",
|
|
75
|
+
"explode": true,
|
|
76
|
+
"schema": {
|
|
77
|
+
"type": "integer",
|
|
78
|
+
"format": "int32",
|
|
79
|
+
"default": 0,
|
|
80
|
+
"minimum": 0
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"responses": {
|
|
85
|
+
"200": {
|
|
86
|
+
"description": "List of bundles successfully retrieved.",
|
|
87
|
+
"content": {
|
|
88
|
+
"application/json": {
|
|
89
|
+
"schema": {
|
|
90
|
+
"$ref": "#/components/schemas/BundleResult"
|
|
91
|
+
},
|
|
92
|
+
"examples": {
|
|
93
|
+
"BundleListSuccess": {
|
|
94
|
+
"$ref": "#/components/examples/BundleListSuccess"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"401": {
|
|
101
|
+
"$ref": "#/components/responses/401unauthorized"
|
|
102
|
+
},
|
|
103
|
+
"403": {
|
|
104
|
+
"$ref": "#/components/responses/403forbidden"
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"security": [
|
|
108
|
+
{
|
|
109
|
+
"AmOAuth2": [
|
|
110
|
+
"sfcc.storefront.deployments",
|
|
111
|
+
"sfcc.storefront.deployments.rw"
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
"post": {
|
|
117
|
+
"summary": "Upload a bundle for a storefront.",
|
|
118
|
+
"description": "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.",
|
|
119
|
+
"operationId": "uploadBundleForStorefront",
|
|
120
|
+
"parameters": [
|
|
121
|
+
{
|
|
122
|
+
"name": "organizationId",
|
|
123
|
+
"in": "path",
|
|
124
|
+
"description": "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).",
|
|
125
|
+
"required": true,
|
|
126
|
+
"style": "simple",
|
|
127
|
+
"explode": false,
|
|
128
|
+
"schema": {
|
|
129
|
+
"$ref": "#/components/schemas/OrganizationId"
|
|
130
|
+
},
|
|
131
|
+
"example": "f_ecom_zzxy_prd"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"name": "storefrontId",
|
|
135
|
+
"in": "path",
|
|
136
|
+
"description": "The storefront identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.",
|
|
137
|
+
"required": true,
|
|
138
|
+
"style": "simple",
|
|
139
|
+
"explode": false,
|
|
140
|
+
"schema": {
|
|
141
|
+
"type": "string",
|
|
142
|
+
"example": "my-storefront",
|
|
143
|
+
"maxLength": 20,
|
|
144
|
+
"minLength": 1,
|
|
145
|
+
"pattern": "^[a-z0-9]+(?:-+[a-z0-9]+)*$"
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
],
|
|
149
|
+
"requestBody": {
|
|
150
|
+
"content": {
|
|
151
|
+
"multipart/form-data": {
|
|
152
|
+
"schema": {
|
|
153
|
+
"$ref": "#/components/schemas/BundleUploadRequest"
|
|
154
|
+
},
|
|
155
|
+
"examples": {
|
|
156
|
+
"BundleUpload": {
|
|
157
|
+
"summary": "Bundle upload with metadata",
|
|
158
|
+
"description": "The `bundle` part carries the binary archive; the remaining parts carry the request metadata.",
|
|
159
|
+
"value": {
|
|
160
|
+
"bundle": "<binary .tar.gz archive, e.g. storefront-bundle.tar.gz>",
|
|
161
|
+
"message": "Release 2.1.0",
|
|
162
|
+
"rootDir": "bld",
|
|
163
|
+
"configPath": ".mrt/config.json",
|
|
164
|
+
"matchMode": "strict"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
"required": true
|
|
171
|
+
},
|
|
172
|
+
"responses": {
|
|
173
|
+
"201": {
|
|
174
|
+
"description": "Bundle successfully uploaded.",
|
|
175
|
+
"content": {
|
|
176
|
+
"application/json": {
|
|
177
|
+
"schema": {
|
|
178
|
+
"$ref": "#/components/schemas/BundleUploadResponse"
|
|
179
|
+
},
|
|
180
|
+
"examples": {
|
|
181
|
+
"BundleUploadSuccess": {
|
|
182
|
+
"$ref": "#/components/examples/BundleUploadSuccess"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
"400": {
|
|
189
|
+
"$ref": "#/components/responses/400BadRequest_UploadBundle"
|
|
190
|
+
},
|
|
191
|
+
"401": {
|
|
192
|
+
"$ref": "#/components/responses/401unauthorized"
|
|
193
|
+
},
|
|
194
|
+
"403": {
|
|
195
|
+
"$ref": "#/components/responses/403forbidden"
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"security": [
|
|
199
|
+
{
|
|
200
|
+
"AmOAuth2": [
|
|
201
|
+
"sfcc.storefront.deployments.rw"
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
"/organizations/{organizationId}/storefronts/{storefrontId}/environments/{environmentId}/deployments": {
|
|
208
|
+
"get": {
|
|
209
|
+
"summary": "Get deployments for an environment.",
|
|
210
|
+
"description": "Retrieves a paginated list of deployments for the specified environment.",
|
|
211
|
+
"operationId": "getDeploymentsForEnvironment",
|
|
212
|
+
"parameters": [
|
|
213
|
+
{
|
|
214
|
+
"name": "organizationId",
|
|
215
|
+
"in": "path",
|
|
216
|
+
"description": "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).",
|
|
217
|
+
"required": true,
|
|
218
|
+
"style": "simple",
|
|
219
|
+
"explode": false,
|
|
220
|
+
"schema": {
|
|
221
|
+
"$ref": "#/components/schemas/OrganizationId"
|
|
222
|
+
},
|
|
223
|
+
"example": "f_ecom_zzxy_prd"
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"name": "storefrontId",
|
|
227
|
+
"in": "path",
|
|
228
|
+
"description": "The storefront identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.",
|
|
229
|
+
"required": true,
|
|
230
|
+
"style": "simple",
|
|
231
|
+
"explode": false,
|
|
232
|
+
"schema": {
|
|
233
|
+
"type": "string",
|
|
234
|
+
"example": "my-storefront",
|
|
235
|
+
"maxLength": 20,
|
|
236
|
+
"minLength": 1,
|
|
237
|
+
"pattern": "^[a-z0-9]+(?:-+[a-z0-9]+)*$"
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"name": "environmentId",
|
|
242
|
+
"in": "path",
|
|
243
|
+
"description": "The environment identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.",
|
|
244
|
+
"required": true,
|
|
245
|
+
"style": "simple",
|
|
246
|
+
"explode": false,
|
|
247
|
+
"schema": {
|
|
248
|
+
"type": "string",
|
|
249
|
+
"example": "production",
|
|
250
|
+
"maxLength": 19,
|
|
251
|
+
"minLength": 1,
|
|
252
|
+
"pattern": "^[a-z0-9]+(?:-+[a-z0-9]+)*$"
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"name": "limit",
|
|
257
|
+
"in": "query",
|
|
258
|
+
"description": "Number of records to retrieve per request. Must be between 1 (minimum) and 200 (maximum). Defaults to 25.",
|
|
259
|
+
"required": false,
|
|
260
|
+
"style": "form",
|
|
261
|
+
"explode": true,
|
|
262
|
+
"schema": {
|
|
263
|
+
"type": "integer",
|
|
264
|
+
"format": "int32",
|
|
265
|
+
"default": 25,
|
|
266
|
+
"maximum": 200,
|
|
267
|
+
"minimum": 1
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"name": "offset",
|
|
272
|
+
"in": "query",
|
|
273
|
+
"description": "Used to retrieve the results based on a particular resource offset.",
|
|
274
|
+
"required": false,
|
|
275
|
+
"style": "form",
|
|
276
|
+
"explode": true,
|
|
277
|
+
"schema": {
|
|
278
|
+
"type": "integer",
|
|
279
|
+
"format": "int32",
|
|
280
|
+
"default": 0,
|
|
281
|
+
"minimum": 0
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
],
|
|
285
|
+
"responses": {
|
|
286
|
+
"200": {
|
|
287
|
+
"description": "List of deployments successfully retrieved.",
|
|
288
|
+
"content": {
|
|
289
|
+
"application/json": {
|
|
290
|
+
"schema": {
|
|
291
|
+
"$ref": "#/components/schemas/DeploymentResult"
|
|
292
|
+
},
|
|
293
|
+
"examples": {
|
|
294
|
+
"DeploymentListSuccess": {
|
|
295
|
+
"$ref": "#/components/examples/DeploymentListSuccess"
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
"401": {
|
|
302
|
+
"$ref": "#/components/responses/401unauthorized"
|
|
303
|
+
},
|
|
304
|
+
"403": {
|
|
305
|
+
"$ref": "#/components/responses/403forbidden"
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
"security": [
|
|
309
|
+
{
|
|
310
|
+
"AmOAuth2": [
|
|
311
|
+
"sfcc.storefront.deployments",
|
|
312
|
+
"sfcc.storefront.deployments.rw"
|
|
313
|
+
]
|
|
314
|
+
}
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
"post": {
|
|
318
|
+
"summary": "Create a deployment for an environment.",
|
|
319
|
+
"description": "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.",
|
|
320
|
+
"operationId": "createDeploymentForEnvironment",
|
|
321
|
+
"parameters": [
|
|
322
|
+
{
|
|
323
|
+
"name": "organizationId",
|
|
324
|
+
"in": "path",
|
|
325
|
+
"description": "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).",
|
|
326
|
+
"required": true,
|
|
327
|
+
"style": "simple",
|
|
328
|
+
"explode": false,
|
|
329
|
+
"schema": {
|
|
330
|
+
"$ref": "#/components/schemas/OrganizationId"
|
|
331
|
+
},
|
|
332
|
+
"example": "f_ecom_zzxy_prd"
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"name": "storefrontId",
|
|
336
|
+
"in": "path",
|
|
337
|
+
"description": "The storefront identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.",
|
|
338
|
+
"required": true,
|
|
339
|
+
"style": "simple",
|
|
340
|
+
"explode": false,
|
|
341
|
+
"schema": {
|
|
342
|
+
"type": "string",
|
|
343
|
+
"example": "my-storefront",
|
|
344
|
+
"maxLength": 20,
|
|
345
|
+
"minLength": 1,
|
|
346
|
+
"pattern": "^[a-z0-9]+(?:-+[a-z0-9]+)*$"
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"name": "environmentId",
|
|
351
|
+
"in": "path",
|
|
352
|
+
"description": "The environment identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.",
|
|
353
|
+
"required": true,
|
|
354
|
+
"style": "simple",
|
|
355
|
+
"explode": false,
|
|
356
|
+
"schema": {
|
|
357
|
+
"type": "string",
|
|
358
|
+
"example": "production",
|
|
359
|
+
"maxLength": 19,
|
|
360
|
+
"minLength": 1,
|
|
361
|
+
"pattern": "^[a-z0-9]+(?:-+[a-z0-9]+)*$"
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
],
|
|
365
|
+
"requestBody": {
|
|
366
|
+
"content": {
|
|
367
|
+
"application/json": {
|
|
368
|
+
"schema": {
|
|
369
|
+
"$ref": "#/components/schemas/DeploymentCreateRequest"
|
|
370
|
+
},
|
|
371
|
+
"examples": {
|
|
372
|
+
"CreateDeployment": {
|
|
373
|
+
"$ref": "#/components/examples/CreateDeployment"
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
"required": true
|
|
379
|
+
},
|
|
380
|
+
"responses": {
|
|
381
|
+
"202": {
|
|
382
|
+
"description": "Deployment successfully queued.",
|
|
383
|
+
"content": {
|
|
384
|
+
"application/json": {
|
|
385
|
+
"schema": {
|
|
386
|
+
"$ref": "#/components/schemas/Deployment"
|
|
387
|
+
},
|
|
388
|
+
"examples": {
|
|
389
|
+
"DeploymentCreatedSuccess": {
|
|
390
|
+
"$ref": "#/components/examples/DeploymentCreatedSuccess"
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
"400": {
|
|
397
|
+
"$ref": "#/components/responses/400BadRequest_CreateDeployment"
|
|
398
|
+
},
|
|
399
|
+
"401": {
|
|
400
|
+
"$ref": "#/components/responses/401unauthorized"
|
|
401
|
+
},
|
|
402
|
+
"403": {
|
|
403
|
+
"$ref": "#/components/responses/403forbidden"
|
|
404
|
+
},
|
|
405
|
+
"404": {
|
|
406
|
+
"$ref": "#/components/responses/404NotFound_CreateDeployment"
|
|
407
|
+
},
|
|
408
|
+
"409": {
|
|
409
|
+
"$ref": "#/components/responses/409Conflict_CreateDeployment"
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
"security": [
|
|
413
|
+
{
|
|
414
|
+
"AmOAuth2": [
|
|
415
|
+
"sfcc.storefront.deployments.rw"
|
|
416
|
+
]
|
|
417
|
+
}
|
|
418
|
+
]
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
"/organizations/{organizationId}/storefronts/{storefrontId}/environments/{environmentId}/deployments/{deploymentId}": {
|
|
422
|
+
"get": {
|
|
423
|
+
"summary": "Get a deployment by ID.",
|
|
424
|
+
"description": "Retrieves the details of a specific deployment, including its current status and progress.",
|
|
425
|
+
"operationId": "getDeploymentById",
|
|
426
|
+
"parameters": [
|
|
427
|
+
{
|
|
428
|
+
"name": "organizationId",
|
|
429
|
+
"in": "path",
|
|
430
|
+
"description": "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).",
|
|
431
|
+
"required": true,
|
|
432
|
+
"style": "simple",
|
|
433
|
+
"explode": false,
|
|
434
|
+
"schema": {
|
|
435
|
+
"$ref": "#/components/schemas/OrganizationId"
|
|
436
|
+
},
|
|
437
|
+
"example": "f_ecom_zzxy_prd"
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
"name": "storefrontId",
|
|
441
|
+
"in": "path",
|
|
442
|
+
"description": "The storefront identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.",
|
|
443
|
+
"required": true,
|
|
444
|
+
"style": "simple",
|
|
445
|
+
"explode": false,
|
|
446
|
+
"schema": {
|
|
447
|
+
"type": "string",
|
|
448
|
+
"example": "my-storefront",
|
|
449
|
+
"maxLength": 20,
|
|
450
|
+
"minLength": 1,
|
|
451
|
+
"pattern": "^[a-z0-9]+(?:-+[a-z0-9]+)*$"
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"name": "environmentId",
|
|
456
|
+
"in": "path",
|
|
457
|
+
"description": "The environment identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.",
|
|
458
|
+
"required": true,
|
|
459
|
+
"style": "simple",
|
|
460
|
+
"explode": false,
|
|
461
|
+
"schema": {
|
|
462
|
+
"type": "string",
|
|
463
|
+
"example": "production",
|
|
464
|
+
"maxLength": 19,
|
|
465
|
+
"minLength": 1,
|
|
466
|
+
"pattern": "^[a-z0-9]+(?:-+[a-z0-9]+)*$"
|
|
467
|
+
}
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
"name": "deploymentId",
|
|
471
|
+
"in": "path",
|
|
472
|
+
"description": "The deployment identifier.",
|
|
473
|
+
"required": true,
|
|
474
|
+
"style": "simple",
|
|
475
|
+
"explode": false,
|
|
476
|
+
"schema": {
|
|
477
|
+
"type": "string",
|
|
478
|
+
"format": "uuid",
|
|
479
|
+
"example": "b035a4d7-ec6b-4dcd-af8f-3a847b10fed8"
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
],
|
|
483
|
+
"responses": {
|
|
484
|
+
"200": {
|
|
485
|
+
"description": "Deployment successfully retrieved.",
|
|
486
|
+
"content": {
|
|
487
|
+
"application/json": {
|
|
488
|
+
"schema": {
|
|
489
|
+
"$ref": "#/components/schemas/Deployment"
|
|
490
|
+
},
|
|
491
|
+
"examples": {
|
|
492
|
+
"DeploymentSuccess": {
|
|
493
|
+
"$ref": "#/components/examples/DeploymentSuccess"
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
},
|
|
499
|
+
"401": {
|
|
500
|
+
"$ref": "#/components/responses/401unauthorized"
|
|
501
|
+
},
|
|
502
|
+
"403": {
|
|
503
|
+
"$ref": "#/components/responses/403forbidden"
|
|
504
|
+
},
|
|
505
|
+
"404": {
|
|
506
|
+
"$ref": "#/components/responses/404NotFound_GetDeployment"
|
|
507
|
+
}
|
|
508
|
+
},
|
|
509
|
+
"security": [
|
|
510
|
+
{
|
|
511
|
+
"AmOAuth2": [
|
|
512
|
+
"sfcc.storefront.deployments",
|
|
513
|
+
"sfcc.storefront.deployments.rw"
|
|
514
|
+
]
|
|
515
|
+
}
|
|
516
|
+
]
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
"components": {
|
|
521
|
+
"schemas": {
|
|
522
|
+
"OrganizationId": {
|
|
523
|
+
"type": "string",
|
|
524
|
+
"description": "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).",
|
|
525
|
+
"example": "f_ecom_zzxy_prd",
|
|
526
|
+
"pattern": "^f_ecom_[a-z]{4}_(prd|stg|dev|s[0-9]{2}|[0-9]{3})$"
|
|
527
|
+
},
|
|
528
|
+
"Total": {
|
|
529
|
+
"type": "integer",
|
|
530
|
+
"format": "int32",
|
|
531
|
+
"default": 0,
|
|
532
|
+
"description": "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.",
|
|
533
|
+
"example": 10,
|
|
534
|
+
"minimum": 0
|
|
535
|
+
},
|
|
536
|
+
"ResultBase": {
|
|
537
|
+
"type": "object",
|
|
538
|
+
"description": "Schema defining generic list result. Each response schema of a resource requiring a list response should extend this schema. \nAdditionally it needs to be defined what data is returned.",
|
|
539
|
+
"properties": {
|
|
540
|
+
"limit": {
|
|
541
|
+
"type": "integer",
|
|
542
|
+
"format": "int32",
|
|
543
|
+
"description": "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.",
|
|
544
|
+
"example": 10
|
|
545
|
+
},
|
|
546
|
+
"total": {
|
|
547
|
+
"$ref": "#/components/schemas/Total"
|
|
548
|
+
}
|
|
549
|
+
},
|
|
550
|
+
"required": [
|
|
551
|
+
"limit",
|
|
552
|
+
"total"
|
|
553
|
+
]
|
|
554
|
+
},
|
|
555
|
+
"Offset": {
|
|
556
|
+
"type": "integer",
|
|
557
|
+
"format": "int32",
|
|
558
|
+
"default": 0,
|
|
559
|
+
"description": "The zero-based index of the first hit/data to include in the result.",
|
|
560
|
+
"example": 0,
|
|
561
|
+
"minimum": 0
|
|
562
|
+
},
|
|
563
|
+
"PaginatedResultBase": {
|
|
564
|
+
"allOf": [
|
|
565
|
+
{
|
|
566
|
+
"$ref": "#/components/schemas/ResultBase"
|
|
567
|
+
}
|
|
568
|
+
],
|
|
569
|
+
"description": "Schema defining generic pageable result. Each response schema of a resource requiring pagination should extend this schema. \nIf you use this extend this schema directly, it needs to be defined what data is returned. Allowed names for the data field is `data`.",
|
|
570
|
+
"properties": {
|
|
571
|
+
"offset": {
|
|
572
|
+
"$ref": "#/components/schemas/Offset"
|
|
573
|
+
}
|
|
574
|
+
},
|
|
575
|
+
"required": [
|
|
576
|
+
"limit",
|
|
577
|
+
"offset",
|
|
578
|
+
"total"
|
|
579
|
+
]
|
|
580
|
+
},
|
|
581
|
+
"Bundle": {
|
|
582
|
+
"type": "object",
|
|
583
|
+
"description": "A versioned build artifact (SSR application package) uploaded to a storefront.",
|
|
584
|
+
"properties": {
|
|
585
|
+
"bundleId": {
|
|
586
|
+
"type": "integer",
|
|
587
|
+
"format": "int32",
|
|
588
|
+
"description": "The unique identifier of the bundle.",
|
|
589
|
+
"example": 170
|
|
590
|
+
},
|
|
591
|
+
"description": {
|
|
592
|
+
"type": "string",
|
|
593
|
+
"description": "A user-provided message describing the bundle.",
|
|
594
|
+
"example": "my bundle",
|
|
595
|
+
"maxLength": 2048
|
|
596
|
+
},
|
|
597
|
+
"status": {
|
|
598
|
+
"type": "string",
|
|
599
|
+
"description": "The processing status of the bundle.",
|
|
600
|
+
"enum": [
|
|
601
|
+
"ok",
|
|
602
|
+
"broken",
|
|
603
|
+
"preparing"
|
|
604
|
+
],
|
|
605
|
+
"example": "ok"
|
|
606
|
+
},
|
|
607
|
+
"lifecycleStatus": {
|
|
608
|
+
"type": "string",
|
|
609
|
+
"description": "The lifecycle status of the bundle.",
|
|
610
|
+
"enum": [
|
|
611
|
+
"active",
|
|
612
|
+
"cleanup_requested",
|
|
613
|
+
"cleanup_in_progress",
|
|
614
|
+
"cleanup_complete",
|
|
615
|
+
"cleanup_failed"
|
|
616
|
+
],
|
|
617
|
+
"example": "active"
|
|
618
|
+
},
|
|
619
|
+
"createdBy": {
|
|
620
|
+
"type": "string",
|
|
621
|
+
"description": "The email address of the user who uploaded the bundle. Null if no user is associated.",
|
|
622
|
+
"example": "dev@example.com",
|
|
623
|
+
"maxLength": 254
|
|
624
|
+
},
|
|
625
|
+
"creationDate": {
|
|
626
|
+
"type": "string",
|
|
627
|
+
"format": "date-time",
|
|
628
|
+
"description": "The timestamp when the bundle was created.",
|
|
629
|
+
"example": "2026-04-08T21:47:28.188965Z"
|
|
630
|
+
},
|
|
631
|
+
"lastModified": {
|
|
632
|
+
"type": "string",
|
|
633
|
+
"format": "date-time",
|
|
634
|
+
"description": "The timestamp when the bundle was last modified.",
|
|
635
|
+
"example": "2026-04-08T21:47:31.307595Z"
|
|
636
|
+
},
|
|
637
|
+
"type": {
|
|
638
|
+
"type": "string",
|
|
639
|
+
"description": "The bundle type.",
|
|
640
|
+
"enum": [
|
|
641
|
+
"ssr",
|
|
642
|
+
"legacy"
|
|
643
|
+
],
|
|
644
|
+
"example": "ssr"
|
|
645
|
+
},
|
|
646
|
+
"ssrParameters": {
|
|
647
|
+
"type": "object",
|
|
648
|
+
"description": "SSR configuration parameters for this bundle. Null for non-SSR bundles.",
|
|
649
|
+
"properties": {
|
|
650
|
+
"runtime": {
|
|
651
|
+
"type": "string",
|
|
652
|
+
"description": "The Node.js runtime version used by this bundle.",
|
|
653
|
+
"example": "24.x",
|
|
654
|
+
"maxLength": 256
|
|
655
|
+
},
|
|
656
|
+
"runtimeDescription": {
|
|
657
|
+
"type": "string",
|
|
658
|
+
"description": "Human-readable description of the runtime version.",
|
|
659
|
+
"example": "NodeJS 24.x",
|
|
660
|
+
"maxLength": 256
|
|
661
|
+
},
|
|
662
|
+
"envBasePath": {
|
|
663
|
+
"type": "string",
|
|
664
|
+
"description": "The base path for the environment associated with this bundle.",
|
|
665
|
+
"example": "ca",
|
|
666
|
+
"maxLength": 256
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
},
|
|
670
|
+
"inUseBy": {
|
|
671
|
+
"type": "array",
|
|
672
|
+
"description": "List of environment identifiers where this bundle is currently deployed.",
|
|
673
|
+
"example": [
|
|
674
|
+
"production"
|
|
675
|
+
],
|
|
676
|
+
"items": {
|
|
677
|
+
"type": "string",
|
|
678
|
+
"example": "production",
|
|
679
|
+
"maxLength": 256
|
|
680
|
+
}
|
|
681
|
+
},
|
|
682
|
+
"streamingEnabled": {
|
|
683
|
+
"type": "boolean",
|
|
684
|
+
"description": "Whether streaming is enabled for this bundle.",
|
|
685
|
+
"example": false
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
},
|
|
689
|
+
"BundleResult": {
|
|
690
|
+
"allOf": [
|
|
691
|
+
{
|
|
692
|
+
"$ref": "#/components/schemas/PaginatedResultBase"
|
|
693
|
+
}
|
|
694
|
+
],
|
|
695
|
+
"description": "Paginated result containing a list of bundles.",
|
|
696
|
+
"properties": {
|
|
697
|
+
"data": {
|
|
698
|
+
"type": "array",
|
|
699
|
+
"description": "List of bundles.",
|
|
700
|
+
"items": {
|
|
701
|
+
"$ref": "#/components/schemas/Bundle"
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
},
|
|
705
|
+
"required": [
|
|
706
|
+
"data"
|
|
707
|
+
]
|
|
708
|
+
},
|
|
709
|
+
"ErrorResponse": {
|
|
710
|
+
"type": "object",
|
|
711
|
+
"additionalProperties": true,
|
|
712
|
+
"properties": {
|
|
713
|
+
"title": {
|
|
714
|
+
"type": "string",
|
|
715
|
+
"description": "A short, human-readable summary of the problem\ntype. It will not change from occurrence to occurrence of the \nproblem, except for purposes of localization\n",
|
|
716
|
+
"example": "You do not have enough credit",
|
|
717
|
+
"maxLength": 256
|
|
718
|
+
},
|
|
719
|
+
"type": {
|
|
720
|
+
"type": "string",
|
|
721
|
+
"description": "A URI reference [RFC3986] that identifies the\nproblem type. This specification encourages that, when\ndereferenced, it provide human-readable documentation for the\nproblem type (e.g., using HTML [W3C.REC-html5-20141028]). When\nthis member is not present, its value is assumed to be\n\"about:blank\". It accepts relative URIs; this means\nthat they must be resolved relative to the document's base URI, as\nper [RFC3986], Section 5.\n",
|
|
722
|
+
"example": "NotEnoughMoney",
|
|
723
|
+
"maxLength": 2048
|
|
724
|
+
},
|
|
725
|
+
"detail": {
|
|
726
|
+
"type": "string",
|
|
727
|
+
"description": "A human-readable explanation specific to this occurrence of the problem.",
|
|
728
|
+
"example": "Your current balance is 30, but that costs 50"
|
|
729
|
+
},
|
|
730
|
+
"instance": {
|
|
731
|
+
"type": "string",
|
|
732
|
+
"description": "A URI reference that identifies the specific\noccurrence of the problem. It may or may not yield further\ninformation if dereferenced. It accepts relative URIs; this means\nthat they must be resolved relative to the document's base URI, as\nper [RFC3986], Section 5.\n",
|
|
733
|
+
"example": "/account/12345/msgs/abc",
|
|
734
|
+
"maxLength": 2048
|
|
735
|
+
}
|
|
736
|
+
},
|
|
737
|
+
"required": [
|
|
738
|
+
"detail",
|
|
739
|
+
"title",
|
|
740
|
+
"type"
|
|
741
|
+
]
|
|
742
|
+
},
|
|
743
|
+
"BundleUploadRequest": {
|
|
744
|
+
"type": "object",
|
|
745
|
+
"description": "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.",
|
|
746
|
+
"properties": {
|
|
747
|
+
"bundle": {
|
|
748
|
+
"type": "string",
|
|
749
|
+
"format": "binary",
|
|
750
|
+
"description": "Bundle archive (uncompressed or gzip-compressed .tar file). The uploaded archive must not exceed 400 MB.",
|
|
751
|
+
"example": "UEdKcGJtRnllU0F1ZEdGeUxtZDZJR0Z5WTJocGRtVXNJR1V1Wnk0Z2MzUnZjbVZtY205dWRDMWlkVzVrYkdVdWRHRnlMbWQ2UGc9PQ=="
|
|
752
|
+
},
|
|
753
|
+
"message": {
|
|
754
|
+
"type": "string",
|
|
755
|
+
"description": "Bundle description (optional metadata).",
|
|
756
|
+
"example": "Release 2.1.0",
|
|
757
|
+
"maxLength": 2048
|
|
758
|
+
},
|
|
759
|
+
"rootDir": {
|
|
760
|
+
"type": "string",
|
|
761
|
+
"default": "bld",
|
|
762
|
+
"description": "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.",
|
|
763
|
+
"example": "bld",
|
|
764
|
+
"maxLength": 256
|
|
765
|
+
},
|
|
766
|
+
"configPath": {
|
|
767
|
+
"type": "string",
|
|
768
|
+
"default": ".mrt/config.json",
|
|
769
|
+
"description": "Path (relative to root directory) of bundle configuration file.",
|
|
770
|
+
"example": ".mrt/config.json",
|
|
771
|
+
"maxLength": 256
|
|
772
|
+
},
|
|
773
|
+
"matchMode": {
|
|
774
|
+
"type": "string",
|
|
775
|
+
"default": "strict",
|
|
776
|
+
"description": "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.",
|
|
777
|
+
"enum": [
|
|
778
|
+
"strict",
|
|
779
|
+
"ignore_missing"
|
|
780
|
+
],
|
|
781
|
+
"example": "strict"
|
|
782
|
+
}
|
|
783
|
+
},
|
|
784
|
+
"required": [
|
|
785
|
+
"bundle"
|
|
786
|
+
]
|
|
787
|
+
},
|
|
788
|
+
"BundleUploadResponse": {
|
|
789
|
+
"type": "object",
|
|
790
|
+
"description": "Response returned after a successful bundle upload.",
|
|
791
|
+
"properties": {
|
|
792
|
+
"bundleId": {
|
|
793
|
+
"type": "integer",
|
|
794
|
+
"format": "int32",
|
|
795
|
+
"description": "The unique identifier of the uploaded bundle.",
|
|
796
|
+
"example": 170
|
|
797
|
+
},
|
|
798
|
+
"warnings": {
|
|
799
|
+
"type": "array",
|
|
800
|
+
"description": "List of warnings generated during bundle processing.",
|
|
801
|
+
"example": [],
|
|
802
|
+
"items": {
|
|
803
|
+
"type": "string",
|
|
804
|
+
"example": "Deprecated runtime version detected",
|
|
805
|
+
"maxLength": 4000
|
|
806
|
+
}
|
|
807
|
+
},
|
|
808
|
+
"matches": {
|
|
809
|
+
"type": "object",
|
|
810
|
+
"description": "File matching results from bundle analysis.",
|
|
811
|
+
"properties": {
|
|
812
|
+
"ssrOnly": {
|
|
813
|
+
"type": "array",
|
|
814
|
+
"description": "Files matched as SSR-only (server-side only).",
|
|
815
|
+
"example": [
|
|
816
|
+
"ssr.js"
|
|
817
|
+
],
|
|
818
|
+
"items": {
|
|
819
|
+
"type": "string",
|
|
820
|
+
"example": "ssr.js",
|
|
821
|
+
"maxLength": 640
|
|
822
|
+
}
|
|
823
|
+
},
|
|
824
|
+
"ssrShared": {
|
|
825
|
+
"type": "array",
|
|
826
|
+
"description": "Files matched as SSR-shared (used by both server and client).",
|
|
827
|
+
"example": [
|
|
828
|
+
"shared.js"
|
|
829
|
+
],
|
|
830
|
+
"items": {
|
|
831
|
+
"type": "string",
|
|
832
|
+
"example": "shared.js",
|
|
833
|
+
"maxLength": 640
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
},
|
|
840
|
+
"BundleValidationFailedErrorResponse": {
|
|
841
|
+
"allOf": [
|
|
842
|
+
{
|
|
843
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
844
|
+
}
|
|
845
|
+
],
|
|
846
|
+
"description": "Returned when the uploaded bundle fails validation.",
|
|
847
|
+
"properties": {
|
|
848
|
+
"error": {
|
|
849
|
+
"type": "string",
|
|
850
|
+
"description": "A human-readable description of why bundle validation failed.",
|
|
851
|
+
"example": "missing entry point",
|
|
852
|
+
"maxLength": 4000
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
},
|
|
856
|
+
"Deployment": {
|
|
857
|
+
"type": "object",
|
|
858
|
+
"description": "A deployment action that publishes a bundle to an environment.",
|
|
859
|
+
"properties": {
|
|
860
|
+
"deploymentId": {
|
|
861
|
+
"type": "string",
|
|
862
|
+
"description": "The unique identifier of the deployment, in UUID format.",
|
|
863
|
+
"example": "b035a4d7-ec6b-4dcd-af8f-3a847b10fed8",
|
|
864
|
+
"maxLength": 36,
|
|
865
|
+
"minLength": 36,
|
|
866
|
+
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
|
|
867
|
+
},
|
|
868
|
+
"status": {
|
|
869
|
+
"type": "string",
|
|
870
|
+
"description": "The current status of the deployment.",
|
|
871
|
+
"enum": [
|
|
872
|
+
"queued",
|
|
873
|
+
"in_progress",
|
|
874
|
+
"failed",
|
|
875
|
+
"finished"
|
|
876
|
+
],
|
|
877
|
+
"example": "finished"
|
|
878
|
+
},
|
|
879
|
+
"deploymentType": {
|
|
880
|
+
"type": "string",
|
|
881
|
+
"description": "The type of deployment.",
|
|
882
|
+
"enum": [
|
|
883
|
+
"publish",
|
|
884
|
+
"reset_bundle",
|
|
885
|
+
"push",
|
|
886
|
+
"deploy_settings",
|
|
887
|
+
"redeploy"
|
|
888
|
+
],
|
|
889
|
+
"example": "publish"
|
|
890
|
+
},
|
|
891
|
+
"creationDate": {
|
|
892
|
+
"type": "string",
|
|
893
|
+
"format": "date-time",
|
|
894
|
+
"description": "The timestamp when the deployment was created.",
|
|
895
|
+
"example": "2026-04-08T21:47:31.322339Z"
|
|
896
|
+
},
|
|
897
|
+
"lastModified": {
|
|
898
|
+
"type": "string",
|
|
899
|
+
"format": "date-time",
|
|
900
|
+
"description": "The timestamp when the deployment was last modified.",
|
|
901
|
+
"example": "2026-04-08T21:51:55.692688Z"
|
|
902
|
+
},
|
|
903
|
+
"duration": {
|
|
904
|
+
"type": "number",
|
|
905
|
+
"format": "double",
|
|
906
|
+
"description": "The duration of the deployment in seconds. Null if the deployment has not finished.",
|
|
907
|
+
"example": 76.867967
|
|
908
|
+
},
|
|
909
|
+
"createdBy": {
|
|
910
|
+
"type": "string",
|
|
911
|
+
"description": "The email address of the user who triggered the deployment. Null if no user is associated.",
|
|
912
|
+
"example": "dev@example.com",
|
|
913
|
+
"maxLength": 254
|
|
914
|
+
},
|
|
915
|
+
"statusMessage": {
|
|
916
|
+
"type": "string",
|
|
917
|
+
"description": "A human-readable message about the deployment's current state.",
|
|
918
|
+
"example": "Queueing Bundle",
|
|
919
|
+
"maxLength": 4096
|
|
920
|
+
},
|
|
921
|
+
"progress": {
|
|
922
|
+
"type": "object",
|
|
923
|
+
"description": "Progress information for the deployment. Null unless an external publish is in progress.",
|
|
924
|
+
"properties": {
|
|
925
|
+
"description": {
|
|
926
|
+
"type": "string",
|
|
927
|
+
"description": "A human-readable description of the current deployment stage.",
|
|
928
|
+
"example": "Updating CDN",
|
|
929
|
+
"maxLength": 128
|
|
930
|
+
},
|
|
931
|
+
"percentage": {
|
|
932
|
+
"type": "integer",
|
|
933
|
+
"format": "int32",
|
|
934
|
+
"description": "Percentage of deployment completion.",
|
|
935
|
+
"example": 0,
|
|
936
|
+
"maximum": 100,
|
|
937
|
+
"minimum": 0
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
},
|
|
941
|
+
"bundle": {
|
|
942
|
+
"$ref": "#/components/schemas/Bundle"
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
},
|
|
946
|
+
"DeploymentResult": {
|
|
947
|
+
"allOf": [
|
|
948
|
+
{
|
|
949
|
+
"$ref": "#/components/schemas/PaginatedResultBase"
|
|
950
|
+
}
|
|
951
|
+
],
|
|
952
|
+
"description": "Paginated result containing a list of deployments.",
|
|
953
|
+
"properties": {
|
|
954
|
+
"data": {
|
|
955
|
+
"type": "array",
|
|
956
|
+
"description": "List of deployments.",
|
|
957
|
+
"items": {
|
|
958
|
+
"$ref": "#/components/schemas/Deployment"
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
"required": [
|
|
963
|
+
"data"
|
|
964
|
+
]
|
|
965
|
+
},
|
|
966
|
+
"DeploymentCreateRequest": {
|
|
967
|
+
"type": "object",
|
|
968
|
+
"description": "Request body to create a new deployment.",
|
|
969
|
+
"properties": {
|
|
970
|
+
"bundleId": {
|
|
971
|
+
"type": "integer",
|
|
972
|
+
"format": "int32",
|
|
973
|
+
"description": "The identifier of the bundle to deploy.",
|
|
974
|
+
"example": 170
|
|
975
|
+
}
|
|
976
|
+
},
|
|
977
|
+
"required": [
|
|
978
|
+
"bundleId"
|
|
979
|
+
]
|
|
980
|
+
},
|
|
981
|
+
"InvalidDeploymentRequestErrorResponse": {
|
|
982
|
+
"allOf": [
|
|
983
|
+
{
|
|
984
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
985
|
+
}
|
|
986
|
+
],
|
|
987
|
+
"description": "Returned when the deployment request body is malformed or missing a valid bundleId."
|
|
988
|
+
},
|
|
989
|
+
"BundleNotFoundErrorResponse": {
|
|
990
|
+
"allOf": [
|
|
991
|
+
{
|
|
992
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
993
|
+
}
|
|
994
|
+
],
|
|
995
|
+
"description": "Returned when the bundle referenced by the deployment request does not exist for this storefront.",
|
|
996
|
+
"properties": {
|
|
997
|
+
"bundleId": {
|
|
998
|
+
"type": "integer",
|
|
999
|
+
"format": "int32",
|
|
1000
|
+
"description": "The identifier of the bundle that couldn't be found.",
|
|
1001
|
+
"example": 999
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
},
|
|
1005
|
+
"DeploymentConflictErrorResponse": {
|
|
1006
|
+
"allOf": [
|
|
1007
|
+
{
|
|
1008
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1009
|
+
}
|
|
1010
|
+
],
|
|
1011
|
+
"description": "Returned when a deployment cannot proceed because another deployment or deletion is already in progress for the environment."
|
|
1012
|
+
},
|
|
1013
|
+
"DeploymentNotFoundErrorResponse": {
|
|
1014
|
+
"allOf": [
|
|
1015
|
+
{
|
|
1016
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1017
|
+
}
|
|
1018
|
+
],
|
|
1019
|
+
"description": "Returned when the requested deployment does not exist."
|
|
1020
|
+
}
|
|
1021
|
+
},
|
|
1022
|
+
"responses": {
|
|
1023
|
+
"401unauthorized": {
|
|
1024
|
+
"description": "Your access token is invalid or expired and can’t be used to identify a user.",
|
|
1025
|
+
"content": {
|
|
1026
|
+
"application/problem+json": {
|
|
1027
|
+
"schema": {
|
|
1028
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1029
|
+
},
|
|
1030
|
+
"examples": {
|
|
1031
|
+
"UnauthorizedExample": {
|
|
1032
|
+
"$ref": "#/components/examples/UnauthorizedExample"
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
},
|
|
1038
|
+
"403forbidden": {
|
|
1039
|
+
"description": "Forbidden. Your access token is valid, but you don’t have the required permissions to access the resource.",
|
|
1040
|
+
"content": {
|
|
1041
|
+
"application/problem+json": {
|
|
1042
|
+
"schema": {
|
|
1043
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1044
|
+
},
|
|
1045
|
+
"examples": {
|
|
1046
|
+
"ForbiddenExample": {
|
|
1047
|
+
"$ref": "#/components/examples/ForbiddenExample"
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
},
|
|
1053
|
+
"400BadRequest_UploadBundle": {
|
|
1054
|
+
"description": "Bad Request. The uploaded bundle failed validation.",
|
|
1055
|
+
"content": {
|
|
1056
|
+
"application/problem+json": {
|
|
1057
|
+
"schema": {
|
|
1058
|
+
"$ref": "#/components/schemas/BundleValidationFailedErrorResponse"
|
|
1059
|
+
},
|
|
1060
|
+
"examples": {
|
|
1061
|
+
"BundleValidationFailedErrorResponseExample": {
|
|
1062
|
+
"$ref": "#/components/examples/BundleValidationFailedErrorResponseExample"
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
},
|
|
1068
|
+
"400BadRequest_CreateDeployment": {
|
|
1069
|
+
"description": "Bad Request. The deployment request body is invalid.",
|
|
1070
|
+
"content": {
|
|
1071
|
+
"application/problem+json": {
|
|
1072
|
+
"schema": {
|
|
1073
|
+
"$ref": "#/components/schemas/InvalidDeploymentRequestErrorResponse"
|
|
1074
|
+
},
|
|
1075
|
+
"examples": {
|
|
1076
|
+
"InvalidDeploymentRequestErrorResponseExample": {
|
|
1077
|
+
"$ref": "#/components/examples/InvalidDeploymentRequestErrorResponseExample"
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1081
|
+
}
|
|
1082
|
+
},
|
|
1083
|
+
"404NotFound_CreateDeployment": {
|
|
1084
|
+
"description": "The bundle referenced by the deployment request was not found for this storefront.",
|
|
1085
|
+
"content": {
|
|
1086
|
+
"application/problem+json": {
|
|
1087
|
+
"schema": {
|
|
1088
|
+
"$ref": "#/components/schemas/BundleNotFoundErrorResponse"
|
|
1089
|
+
},
|
|
1090
|
+
"examples": {
|
|
1091
|
+
"BundleNotFoundErrorResponseExample": {
|
|
1092
|
+
"$ref": "#/components/examples/BundleNotFoundErrorResponseExample"
|
|
1093
|
+
}
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1097
|
+
},
|
|
1098
|
+
"409Conflict_CreateDeployment": {
|
|
1099
|
+
"description": "The deployment cannot proceed because another deployment or deletion is already in progress for this environment.",
|
|
1100
|
+
"content": {
|
|
1101
|
+
"application/problem+json": {
|
|
1102
|
+
"schema": {
|
|
1103
|
+
"$ref": "#/components/schemas/DeploymentConflictErrorResponse"
|
|
1104
|
+
},
|
|
1105
|
+
"examples": {
|
|
1106
|
+
"DeploymentConflictErrorResponseExample": {
|
|
1107
|
+
"$ref": "#/components/examples/DeploymentConflictErrorResponseExample"
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
},
|
|
1113
|
+
"404NotFound_GetDeployment": {
|
|
1114
|
+
"description": "The requested deployment was not found.",
|
|
1115
|
+
"content": {
|
|
1116
|
+
"application/problem+json": {
|
|
1117
|
+
"schema": {
|
|
1118
|
+
"$ref": "#/components/schemas/DeploymentNotFoundErrorResponse"
|
|
1119
|
+
},
|
|
1120
|
+
"examples": {
|
|
1121
|
+
"DeploymentNotFoundErrorResponseExample": {
|
|
1122
|
+
"$ref": "#/components/examples/DeploymentNotFoundErrorResponseExample"
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
},
|
|
1129
|
+
"parameters": {
|
|
1130
|
+
"organizationId": {
|
|
1131
|
+
"name": "organizationId",
|
|
1132
|
+
"in": "path",
|
|
1133
|
+
"description": "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).",
|
|
1134
|
+
"required": true,
|
|
1135
|
+
"style": "simple",
|
|
1136
|
+
"explode": false,
|
|
1137
|
+
"schema": {
|
|
1138
|
+
"$ref": "#/components/schemas/OrganizationId"
|
|
1139
|
+
},
|
|
1140
|
+
"example": "f_ecom_zzxy_prd"
|
|
1141
|
+
},
|
|
1142
|
+
"storefrontId": {
|
|
1143
|
+
"name": "storefrontId",
|
|
1144
|
+
"in": "path",
|
|
1145
|
+
"description": "The storefront identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.",
|
|
1146
|
+
"required": true,
|
|
1147
|
+
"style": "simple",
|
|
1148
|
+
"explode": false,
|
|
1149
|
+
"schema": {
|
|
1150
|
+
"type": "string",
|
|
1151
|
+
"example": "my-storefront",
|
|
1152
|
+
"maxLength": 20,
|
|
1153
|
+
"minLength": 1,
|
|
1154
|
+
"pattern": "^[a-z0-9]+(?:-+[a-z0-9]+)*$"
|
|
1155
|
+
}
|
|
1156
|
+
},
|
|
1157
|
+
"environmentId": {
|
|
1158
|
+
"name": "environmentId",
|
|
1159
|
+
"in": "path",
|
|
1160
|
+
"description": "The environment identifier. Must consist only of lowercase letters, numbers, and hyphens, with no leading or trailing hyphens.",
|
|
1161
|
+
"required": true,
|
|
1162
|
+
"style": "simple",
|
|
1163
|
+
"explode": false,
|
|
1164
|
+
"schema": {
|
|
1165
|
+
"type": "string",
|
|
1166
|
+
"example": "production",
|
|
1167
|
+
"maxLength": 19,
|
|
1168
|
+
"minLength": 1,
|
|
1169
|
+
"pattern": "^[a-z0-9]+(?:-+[a-z0-9]+)*$"
|
|
1170
|
+
}
|
|
1171
|
+
},
|
|
1172
|
+
"deploymentId": {
|
|
1173
|
+
"name": "deploymentId",
|
|
1174
|
+
"in": "path",
|
|
1175
|
+
"description": "The deployment identifier.",
|
|
1176
|
+
"required": true,
|
|
1177
|
+
"style": "simple",
|
|
1178
|
+
"explode": false,
|
|
1179
|
+
"schema": {
|
|
1180
|
+
"type": "string",
|
|
1181
|
+
"format": "uuid",
|
|
1182
|
+
"example": "b035a4d7-ec6b-4dcd-af8f-3a847b10fed8"
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
},
|
|
1186
|
+
"examples": {
|
|
1187
|
+
"BundleListSuccess": {
|
|
1188
|
+
"summary": "Successful bundle list result",
|
|
1189
|
+
"description": "Example of a successful response returning a paginated list of bundles for a storefront.",
|
|
1190
|
+
"value": {
|
|
1191
|
+
"limit": 25,
|
|
1192
|
+
"offset": 0,
|
|
1193
|
+
"total": 3,
|
|
1194
|
+
"data": [
|
|
1195
|
+
{
|
|
1196
|
+
"bundleId": 170,
|
|
1197
|
+
"description": "my bundle",
|
|
1198
|
+
"status": "ok",
|
|
1199
|
+
"lifecycleStatus": "active",
|
|
1200
|
+
"createdBy": "dev@example.com",
|
|
1201
|
+
"creationDate": "2026-04-08T21:47:28.188965Z",
|
|
1202
|
+
"lastModified": "2026-04-08T21:47:31.307595Z",
|
|
1203
|
+
"type": "ssr",
|
|
1204
|
+
"ssrParameters": {
|
|
1205
|
+
"runtime": "24.x",
|
|
1206
|
+
"runtimeDescription": "NodeJS 24.x",
|
|
1207
|
+
"envBasePath": "ca"
|
|
1208
|
+
},
|
|
1209
|
+
"inUseBy": [
|
|
1210
|
+
"production"
|
|
1211
|
+
],
|
|
1212
|
+
"streamingEnabled": true
|
|
1213
|
+
},
|
|
1214
|
+
{
|
|
1215
|
+
"bundleId": 169,
|
|
1216
|
+
"description": "previous release",
|
|
1217
|
+
"status": "ok",
|
|
1218
|
+
"lifecycleStatus": "active",
|
|
1219
|
+
"createdBy": "dev@example.com",
|
|
1220
|
+
"creationDate": "2026-04-07T15:30:00.000000Z",
|
|
1221
|
+
"lastModified": "2026-04-07T15:30:05.000000Z",
|
|
1222
|
+
"type": "ssr",
|
|
1223
|
+
"ssrParameters": {
|
|
1224
|
+
"runtime": "24.x",
|
|
1225
|
+
"runtimeDescription": "NodeJS 24.x",
|
|
1226
|
+
"envBasePath": "ca"
|
|
1227
|
+
},
|
|
1228
|
+
"inUseBy": [],
|
|
1229
|
+
"streamingEnabled": false
|
|
1230
|
+
}
|
|
1231
|
+
]
|
|
1232
|
+
}
|
|
1233
|
+
},
|
|
1234
|
+
"UnauthorizedExample": {
|
|
1235
|
+
"value": {
|
|
1236
|
+
"type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
|
|
1237
|
+
"title": "Unauthorized",
|
|
1238
|
+
"detail": "Unauthorized request"
|
|
1239
|
+
}
|
|
1240
|
+
},
|
|
1241
|
+
"ForbiddenExample": {
|
|
1242
|
+
"value": {
|
|
1243
|
+
"type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden",
|
|
1244
|
+
"title": "Forbidden",
|
|
1245
|
+
"detail": "Access to requested resource forbidden"
|
|
1246
|
+
}
|
|
1247
|
+
},
|
|
1248
|
+
"BundleUploadSuccess": {
|
|
1249
|
+
"summary": "Successful bundle upload",
|
|
1250
|
+
"description": "Example of a successful response after uploading a bundle.",
|
|
1251
|
+
"value": {
|
|
1252
|
+
"bundleId": 170,
|
|
1253
|
+
"warnings": [],
|
|
1254
|
+
"matches": {
|
|
1255
|
+
"ssrOnly": [
|
|
1256
|
+
"ssr.js",
|
|
1257
|
+
"worker.js"
|
|
1258
|
+
],
|
|
1259
|
+
"ssrShared": [
|
|
1260
|
+
"shared.js",
|
|
1261
|
+
"utils.js"
|
|
1262
|
+
]
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
},
|
|
1266
|
+
"DeploymentListSuccess": {
|
|
1267
|
+
"summary": "Successful deployment list result",
|
|
1268
|
+
"description": "Example of a successful response returning a paginated list of deployments for an environment.",
|
|
1269
|
+
"value": {
|
|
1270
|
+
"limit": 25,
|
|
1271
|
+
"offset": 0,
|
|
1272
|
+
"total": 1,
|
|
1273
|
+
"data": [
|
|
1274
|
+
{
|
|
1275
|
+
"deploymentId": "b035a4d7-ec6b-4dcd-af8f-3a847b10fed8",
|
|
1276
|
+
"status": "finished",
|
|
1277
|
+
"deploymentType": "publish",
|
|
1278
|
+
"creationDate": "2026-04-08T21:47:31.322339Z",
|
|
1279
|
+
"lastModified": "2026-04-08T21:51:55.692688Z",
|
|
1280
|
+
"duration": 76.867967,
|
|
1281
|
+
"createdBy": "dev@example.com",
|
|
1282
|
+
"statusMessage": "Deploy Finished",
|
|
1283
|
+
"bundle": {
|
|
1284
|
+
"bundleId": 170,
|
|
1285
|
+
"description": "my bundle",
|
|
1286
|
+
"status": "ok",
|
|
1287
|
+
"lifecycleStatus": "active",
|
|
1288
|
+
"createdBy": "dev@example.com",
|
|
1289
|
+
"creationDate": "2026-04-08T21:47:28.188965Z",
|
|
1290
|
+
"lastModified": "2026-04-08T21:47:31.307595Z",
|
|
1291
|
+
"type": "ssr",
|
|
1292
|
+
"ssrParameters": {
|
|
1293
|
+
"runtime": "24.x",
|
|
1294
|
+
"runtimeDescription": "NodeJS 24.x",
|
|
1295
|
+
"envBasePath": "ca"
|
|
1296
|
+
},
|
|
1297
|
+
"inUseBy": [
|
|
1298
|
+
"production"
|
|
1299
|
+
],
|
|
1300
|
+
"streamingEnabled": true
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
]
|
|
1304
|
+
}
|
|
1305
|
+
},
|
|
1306
|
+
"CreateDeployment": {
|
|
1307
|
+
"summary": "Create a deployment",
|
|
1308
|
+
"description": "Trigger a deployment of a bundle to an environment by its bundleId.",
|
|
1309
|
+
"value": {
|
|
1310
|
+
"bundleId": 170
|
|
1311
|
+
}
|
|
1312
|
+
},
|
|
1313
|
+
"DeploymentCreatedSuccess": {
|
|
1314
|
+
"summary": "Successful deployment creation",
|
|
1315
|
+
"description": "Example of a successful response when a new deployment is triggered (202 Accepted).",
|
|
1316
|
+
"value": {
|
|
1317
|
+
"deploymentId": "b035a4d7-ec6b-4dcd-af8f-3a847b10fed8",
|
|
1318
|
+
"status": "queued",
|
|
1319
|
+
"deploymentType": "publish",
|
|
1320
|
+
"creationDate": "2026-04-08T21:47:31.322339Z",
|
|
1321
|
+
"lastModified": "2026-04-08T21:47:31.322339Z",
|
|
1322
|
+
"createdBy": "dev@example.com",
|
|
1323
|
+
"statusMessage": "Queueing Bundle",
|
|
1324
|
+
"bundle": {
|
|
1325
|
+
"bundleId": 170,
|
|
1326
|
+
"description": "my bundle",
|
|
1327
|
+
"status": "ok",
|
|
1328
|
+
"lifecycleStatus": "active",
|
|
1329
|
+
"createdBy": "dev@example.com",
|
|
1330
|
+
"creationDate": "2026-04-08T21:47:28.188965Z",
|
|
1331
|
+
"lastModified": "2026-04-08T21:47:31.307595Z",
|
|
1332
|
+
"type": "ssr",
|
|
1333
|
+
"ssrParameters": {
|
|
1334
|
+
"runtime": "24.x",
|
|
1335
|
+
"runtimeDescription": "NodeJS 24.x",
|
|
1336
|
+
"envBasePath": "ca"
|
|
1337
|
+
},
|
|
1338
|
+
"inUseBy": [
|
|
1339
|
+
"production"
|
|
1340
|
+
],
|
|
1341
|
+
"streamingEnabled": true
|
|
1342
|
+
}
|
|
1343
|
+
}
|
|
1344
|
+
},
|
|
1345
|
+
"DeploymentSuccess": {
|
|
1346
|
+
"summary": "Successful deployment retrieval",
|
|
1347
|
+
"description": "Example of a successful response returning a single deployment with all properties.",
|
|
1348
|
+
"value": {
|
|
1349
|
+
"deploymentId": "b035a4d7-ec6b-4dcd-af8f-3a847b10fed8",
|
|
1350
|
+
"status": "finished",
|
|
1351
|
+
"deploymentType": "publish",
|
|
1352
|
+
"creationDate": "2026-04-08T21:47:31.322339Z",
|
|
1353
|
+
"lastModified": "2026-04-08T21:51:55.692688Z",
|
|
1354
|
+
"duration": 76.867967,
|
|
1355
|
+
"createdBy": "dev@example.com",
|
|
1356
|
+
"statusMessage": "Deploy Finished",
|
|
1357
|
+
"progress": {
|
|
1358
|
+
"description": "Finished deployment",
|
|
1359
|
+
"percentage": 100
|
|
1360
|
+
},
|
|
1361
|
+
"bundle": {
|
|
1362
|
+
"bundleId": 170,
|
|
1363
|
+
"description": "my bundle",
|
|
1364
|
+
"status": "ok",
|
|
1365
|
+
"lifecycleStatus": "active",
|
|
1366
|
+
"createdBy": "dev@example.com",
|
|
1367
|
+
"creationDate": "2026-04-08T21:47:28.188965Z",
|
|
1368
|
+
"lastModified": "2026-04-08T21:47:31.307595Z",
|
|
1369
|
+
"type": "ssr",
|
|
1370
|
+
"ssrParameters": {
|
|
1371
|
+
"runtime": "24.x",
|
|
1372
|
+
"runtimeDescription": "NodeJS 24.x",
|
|
1373
|
+
"envBasePath": "ca"
|
|
1374
|
+
},
|
|
1375
|
+
"inUseBy": [
|
|
1376
|
+
"production"
|
|
1377
|
+
],
|
|
1378
|
+
"streamingEnabled": true
|
|
1379
|
+
}
|
|
1380
|
+
}
|
|
1381
|
+
},
|
|
1382
|
+
"BundleValidationFailedErrorResponseExample": {
|
|
1383
|
+
"value": {
|
|
1384
|
+
"type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/bundle-validation-failed",
|
|
1385
|
+
"detail": "We couldn't validate the bundle for these reasons: missing entry point",
|
|
1386
|
+
"title": "Bundle Validation Failed"
|
|
1387
|
+
}
|
|
1388
|
+
},
|
|
1389
|
+
"InvalidDeploymentRequestErrorResponseExample": {
|
|
1390
|
+
"value": {
|
|
1391
|
+
"type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/invalid-deployment-request",
|
|
1392
|
+
"detail": "The deployment request body is invalid. A valid bundleId is required.",
|
|
1393
|
+
"title": "Invalid Deployment Request"
|
|
1394
|
+
}
|
|
1395
|
+
},
|
|
1396
|
+
"BundleNotFoundErrorResponseExample": {
|
|
1397
|
+
"value": {
|
|
1398
|
+
"type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/bundle-not-found",
|
|
1399
|
+
"detail": "We couldn't find bundle 999.",
|
|
1400
|
+
"title": "Bundle Not Found"
|
|
1401
|
+
}
|
|
1402
|
+
},
|
|
1403
|
+
"DeploymentConflictErrorResponseExample": {
|
|
1404
|
+
"value": {
|
|
1405
|
+
"type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/deployment-conflict",
|
|
1406
|
+
"detail": "You can't request a deployment when another deployment or deletion is in progress.",
|
|
1407
|
+
"title": "Deployment Conflict"
|
|
1408
|
+
}
|
|
1409
|
+
},
|
|
1410
|
+
"DeploymentNotFoundErrorResponseExample": {
|
|
1411
|
+
"value": {
|
|
1412
|
+
"type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/deployment-not-found",
|
|
1413
|
+
"detail": "We couldn't find that deployment.",
|
|
1414
|
+
"title": "Deployment Not Found"
|
|
1415
|
+
}
|
|
1416
|
+
}
|
|
1417
|
+
},
|
|
1418
|
+
"securitySchemes": {
|
|
1419
|
+
"AmOAuth2": {
|
|
1420
|
+
"type": "oauth2",
|
|
1421
|
+
"description": "AccountManager OAuth 2.0 bearer token Authentication.",
|
|
1422
|
+
"flows": {
|
|
1423
|
+
"clientCredentials": {
|
|
1424
|
+
"tokenUrl": "https://account.demandware.com/dwsso/oauth2/access_token",
|
|
1425
|
+
"scopes": {
|
|
1426
|
+
"sfcc.storefront.deployments": "Read-only access to the Deployments API.",
|
|
1427
|
+
"sfcc.storefront.deployments.rw": "Read and write access to the Deployments API."
|
|
1428
|
+
}
|
|
1429
|
+
},
|
|
1430
|
+
"authorizationCode": {
|
|
1431
|
+
"authorizationUrl": "https://account.demandware.com/dwsso/oauth2/authorize",
|
|
1432
|
+
"tokenUrl": "https://account.demandware.com/dwsso/oauth2/access_token",
|
|
1433
|
+
"scopes": {
|
|
1434
|
+
"sfcc.storefront.deployments": "Read-only access to the Deployments API.",
|
|
1435
|
+
"sfcc.storefront.deployments.rw": "Read and write access to the Deployments API."
|
|
1436
|
+
}
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
}
|
|
1442
|
+
}
|