@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.
Files changed (203) hide show
  1. package/data/guides/enrichment.json +291 -0
  2. package/data/guides/index.json +426 -37
  3. package/data/schemas/dw.schema.json +590 -0
  4. package/data/tooling/index.json +18 -9
  5. package/dist/esm/cli/base-command.d.ts +20 -1
  6. package/dist/esm/cli/base-command.js +61 -11
  7. package/dist/esm/cli/base-command.js.map +1 -1
  8. package/dist/esm/cli/cartridge-command.js +2 -1
  9. package/dist/esm/cli/cartridge-command.js.map +1 -1
  10. package/dist/esm/cli/command-search.d.ts +85 -0
  11. package/dist/esm/cli/command-search.js +147 -0
  12. package/dist/esm/cli/command-search.js.map +1 -0
  13. package/dist/esm/cli/config.d.ts +10 -1
  14. package/dist/esm/cli/config.js +18 -9
  15. package/dist/esm/cli/config.js.map +1 -1
  16. package/dist/esm/cli/hooks.d.ts +13 -0
  17. package/dist/esm/cli/hooks.js +11 -0
  18. package/dist/esm/cli/hooks.js.map +1 -1
  19. package/dist/esm/cli/index.d.ts +2 -0
  20. package/dist/esm/cli/index.js +2 -0
  21. package/dist/esm/cli/index.js.map +1 -1
  22. package/dist/esm/cli/instance-command.d.ts +1 -0
  23. package/dist/esm/cli/instance-command.js +2 -1
  24. package/dist/esm/cli/instance-command.js.map +1 -1
  25. package/dist/esm/cli/mrt-command.d.ts +3 -2
  26. package/dist/esm/cli/mrt-command.js +4 -4
  27. package/dist/esm/cli/mrt-command.js.map +1 -1
  28. package/dist/esm/cli/oauth-command.d.ts +1 -0
  29. package/dist/esm/cli/ods-command.d.ts +1 -0
  30. package/dist/esm/cli/webdav-command.d.ts +1 -0
  31. package/dist/esm/clients/custom-apis.d.ts +36 -2
  32. package/dist/esm/clients/custom-apis.js +57 -4
  33. package/dist/esm/clients/custom-apis.js.map +1 -1
  34. package/dist/esm/clients/index.d.ts +1 -1
  35. package/dist/esm/clients/index.js +1 -1
  36. package/dist/esm/clients/index.js.map +1 -1
  37. package/dist/esm/clients/scapi-backend-utils.d.ts +15 -0
  38. package/dist/esm/clients/scapi-backend-utils.js +28 -1
  39. package/dist/esm/clients/scapi-backend-utils.js.map +1 -1
  40. package/dist/esm/clients/scapi-fallback-backend.js +2 -2
  41. package/dist/esm/clients/scapi-fallback-backend.js.map +1 -1
  42. package/dist/esm/clients/scapi-schemas.generated.d.ts +2 -2
  43. package/dist/esm/compat/dispatcher.js +2 -2
  44. package/dist/esm/compat/dispatcher.js.map +1 -1
  45. package/dist/esm/config/config-origins.d.ts +19 -0
  46. package/dist/esm/config/config-origins.js +11 -0
  47. package/dist/esm/config/config-origins.js.map +1 -0
  48. package/dist/esm/config/config-write.d.ts +86 -0
  49. package/dist/esm/config/config-write.js +296 -0
  50. package/dist/esm/config/config-write.js.map +1 -0
  51. package/dist/esm/config/dw-json-schema.d.ts +14 -0
  52. package/dist/esm/config/dw-json-schema.js +269 -0
  53. package/dist/esm/config/dw-json-schema.js.map +1 -0
  54. package/dist/esm/config/dw-json.d.ts +2 -0
  55. package/dist/esm/config/dw-json.js +10 -6
  56. package/dist/esm/config/dw-json.js.map +1 -1
  57. package/dist/esm/config/index.d.ts +13 -4
  58. package/dist/esm/config/index.js +8 -3
  59. package/dist/esm/config/index.js.map +1 -1
  60. package/dist/esm/config/instance-manager.d.ts +64 -28
  61. package/dist/esm/config/instance-manager.js +145 -63
  62. package/dist/esm/config/instance-manager.js.map +1 -1
  63. package/dist/esm/config/mapping.d.ts +5 -0
  64. package/dist/esm/config/mapping.js +20 -1
  65. package/dist/esm/config/mapping.js.map +1 -1
  66. package/dist/esm/config/project-environment.d.ts +62 -0
  67. package/dist/esm/config/project-environment.js +113 -0
  68. package/dist/esm/config/project-environment.js.map +1 -1
  69. package/dist/esm/config/resolver.d.ts +22 -0
  70. package/dist/esm/config/resolver.js +106 -37
  71. package/dist/esm/config/resolver.js.map +1 -1
  72. package/dist/esm/config/sources/dw-json-source.d.ts +9 -1
  73. package/dist/esm/config/sources/dw-json-source.js +59 -23
  74. package/dist/esm/config/sources/dw-json-source.js.map +1 -1
  75. package/dist/esm/config/sources/env-source.d.ts +70 -9
  76. package/dist/esm/config/sources/env-source.js +205 -47
  77. package/dist/esm/config/sources/env-source.js.map +1 -1
  78. package/dist/esm/config/sources/index.d.ts +1 -1
  79. package/dist/esm/config/sources/index.js +1 -1
  80. package/dist/esm/config/sources/index.js.map +1 -1
  81. package/dist/esm/config/types.d.ts +53 -3
  82. package/dist/esm/docs/search.js +3 -1
  83. package/dist/esm/docs/search.js.map +1 -1
  84. package/dist/esm/docs/types.d.ts +3 -1
  85. package/dist/esm/guidance/bundle.d.ts +33 -0
  86. package/dist/esm/guidance/bundle.js +268 -0
  87. package/dist/esm/guidance/bundle.js.map +1 -0
  88. package/dist/esm/guidance/catalog.d.ts +8 -1
  89. package/dist/esm/guidance/catalog.js +48 -6
  90. package/dist/esm/guidance/catalog.js.map +1 -1
  91. package/dist/esm/guidance/index.d.ts +1 -0
  92. package/dist/esm/guidance/index.js +1 -0
  93. package/dist/esm/guidance/index.js.map +1 -1
  94. package/dist/esm/guidance/types.d.ts +17 -1
  95. package/dist/esm/guidance/types.js.map +1 -1
  96. package/dist/esm/index.d.ts +1 -1
  97. package/dist/esm/index.js +1 -1
  98. package/dist/esm/index.js.map +1 -1
  99. package/dist/esm/operations/jobs/run-system-job.js +2 -2
  100. package/dist/esm/operations/jobs/run-system-job.js.map +1 -1
  101. package/dist/esm/plugins/discovery.js +2 -1
  102. package/dist/esm/plugins/discovery.js.map +1 -1
  103. package/dist/esm/scapi/catalog.d.ts +5 -2
  104. package/dist/esm/scapi/catalog.js.map +1 -1
  105. package/dist/esm/scapi/index.d.ts +6 -2
  106. package/dist/esm/scapi/index.js +4 -2
  107. package/dist/esm/scapi/index.js.map +1 -1
  108. package/dist/esm/scapi/live.d.ts +14 -3
  109. package/dist/esm/scapi/live.js +33 -5
  110. package/dist/esm/scapi/live.js.map +1 -1
  111. package/dist/esm/scapi/local.d.ts +26 -0
  112. package/dist/esm/scapi/local.js +143 -0
  113. package/dist/esm/scapi/local.js.map +1 -0
  114. package/dist/esm/scapi/request.d.ts +2 -2
  115. package/dist/esm/scapi/request.js +4 -2
  116. package/dist/esm/scapi/request.js.map +1 -1
  117. package/dist/esm/scapi/runtime.d.ts +5 -0
  118. package/dist/esm/scapi/runtime.js.map +1 -1
  119. package/dist/esm/scapi/schema-source.d.ts +90 -0
  120. package/dist/esm/scapi/schema-source.js +146 -0
  121. package/dist/esm/scapi/schema-source.js.map +1 -0
  122. package/dist/esm/scapi/worker-source.js +31 -7
  123. package/dist/esm/scapi/worker-source.js.map +1 -1
  124. package/dist/esm/telemetry/telemetry.d.ts +1 -0
  125. package/dist/esm/telemetry/telemetry.js +18 -1
  126. package/dist/esm/telemetry/telemetry.js.map +1 -1
  127. package/dist/esm/telemetry/types.d.ts +9 -0
  128. package/dist/esm/test-utils/config-isolation.js +21 -15
  129. package/dist/esm/test-utils/config-isolation.js.map +1 -1
  130. package/dist/esm/ux/agent-context.d.ts +69 -0
  131. package/dist/esm/ux/agent-context.js +133 -0
  132. package/dist/esm/ux/agent-context.js.map +1 -0
  133. package/dist/esm/ux/confirm.d.ts +27 -0
  134. package/dist/esm/ux/confirm.js +32 -0
  135. package/dist/esm/ux/confirm.js.map +1 -1
  136. package/dist/esm/ux/index.d.ts +2 -1
  137. package/dist/esm/ux/index.js +2 -1
  138. package/dist/esm/ux/index.js.map +1 -1
  139. package/node_modules/@salesforce/b2c-api-schemas/manifest.json +83 -42
  140. package/node_modules/@salesforce/b2c-api-schemas/package.json +1 -1
  141. package/node_modules/@salesforce/b2c-api-schemas/scapi/cdn/zones/v1.json +6798 -238
  142. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/orders/v1.json +2296 -205
  143. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v1.json +5571 -666
  144. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v2.json +6062 -371
  145. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-orders/v1.json +3426 -360
  146. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-payments/v1.json +351 -99
  147. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/cors/v1.json +172 -12
  148. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/preferences/v1.json +1497 -111
  149. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/shopper-configurations/v1.json +202 -36
  150. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/timeouts/v1.json +79 -10
  151. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/custom-objects/v1.json +785 -49
  152. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/shopper-custom-objects/v1.json +191 -40
  153. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/customers/v1.json +1483 -107
  154. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/shopper-customers/v1.json +4854 -787
  155. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/custom-apis/v1.json +119 -15
  156. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/object-definitions/v1.json +1699 -80
  157. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scapi-schemas/v1.json +252 -18
  158. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scripts/v1.json +329 -23
  159. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/experiences/v1.json +4208 -234
  160. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/shopper-experience/v1.json +1591 -247
  161. package/node_modules/@salesforce/b2c-api-schemas/scapi/intelligence/analytics/v1.json +396 -8
  162. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/availability/v1.json +1242 -69
  163. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/impex/v1.json +2354 -248
  164. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/reservation/v1.json +1550 -45
  165. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/segmentation/v1.json +6615 -0
  166. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/roles/v1.json +1520 -59
  167. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/users/v1.json +397 -17
  168. package/node_modules/@salesforce/b2c-api-schemas/scapi/observability/metrics/v1.json +1241 -27
  169. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/jobs/v1.json +1069 -68
  170. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/replications/v1.json +410 -23
  171. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/assignments/v1.json +502 -102
  172. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/campaigns/v1.json +1112 -94
  173. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/coupons/v1.json +820 -93
  174. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/gift-certificates/v1.json +845 -92
  175. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/promotions/v1.json +2716 -674
  176. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-gift-certificates/v1.json +130 -47
  177. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-promotions/v1.json +233 -63
  178. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/source-code-groups/v1.json +630 -70
  179. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/catalogs/v1.json +2886 -348
  180. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/inventory-lists/v1.json +520 -19
  181. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/price-books/v1.json +3115 -293
  182. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/products/v1.json +3313 -138
  183. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-availability/v1.json +266 -52
  184. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-delivery-estimates/v1.json +256 -48
  185. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-products/v1.json +1744 -306
  186. package/node_modules/@salesforce/b2c-api-schemas/scapi/search/shopper-search/v1.json +1661 -120
  187. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth/v1.json +2174 -118
  188. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth-admin/v1.json +1373 -24
  189. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/consents/v1.json +531 -20
  190. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-agents/v1.json +154 -6
  191. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-consents/v1.json +596 -79
  192. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-context/v1.json +456 -42
  193. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/seo/v1.json +101 -23
  194. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/shopper-seo/v1.json +184 -41
  195. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/sites/v1.json +995 -47
  196. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/shopper-stores/v1.json +370 -67
  197. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/store-redirect-mappings/v1.json +319 -11
  198. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/stores/v1.json +1109 -64
  199. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/deployments/v1.json +1442 -0
  200. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/environments/v1.json +4293 -0
  201. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/storefronts/v1.json +1371 -0
  202. package/package.json +5 -2
  203. package/specs/scapi-schemas-v1.yaml +4 -1
@@ -2,6 +2,7 @@
2
2
  "openapi": "3.0.3",
3
3
  "info": {
4
4
  "title": "Store Redirect Mappings",
5
+ "description": "[Download API specification](https://developer.salesforce.com/static/commercecloud/commerce-api/store-redirect-mappings/store-redirect-mappings-oas-v1-public.yaml)\n\n# API Overview\n\nThe Store Redirect Mappings API provides access to store redirect mapping data within the Store API family. Use this API to manage redirect mappings that configure redirects from one store ID to another. This is typically used for SEO purposes when URL patterns require traffic to be redirected to different stores.\n\n## Features\n\n- Get Store Redirect Mappings: Retrieve a paginated list of all store redirect mappings in an organization.\n- Get Specific Mapping: Retrieve a specific store redirect mapping by source store ID.\n- Bulk Operations: Create or update multiple store redirect mappings in a single request (only returns counts for performance).\n- Batch Deletion: Delete multiple store redirect mappings in a single request (only returns counts for performance).\n- Pagination: Built-in pagination support with configurable limits and offsets\n- Sorting: Sort results by `sourceStoreId` or `targetStoreId` in ascending or descending order\n\n## Authentication & Authorization\n\nFor resource access, you must use a client ID and client secret from Account Manager to request an access token. The access token is used as a bearer token and added to the Authorization header of your API request.\n\nThe API client must also have the following OAuth scopes:\n\n- `sfcc.store-redirect-mappings` - Read access to store redirect mapping resources\n- `sfcc.store-redirect-mappings.rw` - Read and write access to store redirect mapping resources\n\nYou must include the relevant scope(s) in the client ID used to generate the token. For details, see the [Authorization Scopes Catalog[(https://developer.salesforce.com/docs/commerce/commerce-api/guide/auth-z-scope-catalog.html).\n\nFor detailed setup instructions, see the [Authorization for Admin APIs guide[(https://developer.salesforce.com/docs/commerce/commerce-api/guide/authorization-for-admin-apis.html).\n\n## Mapping Fields\n\nEach store redirect mapping contains the following fields:\n\n- `sourceStoreId` - The source store ID that should redirect (String, 1-256 characters)\n- `targetStoreId` - The target store ID to redirect to (String, 1-256 characters)\n\n## Use Cases\n\n- Store Consolidation: When merging stores, redirect old store IDs to new store IDs.\n- SEO Management: Maintain search engine rankings when store IDs change.\n- URL Migration: Handle redirects during store reorganization or rebranding.",
5
6
  "version": "1.2.0",
6
7
  "x-api-type": "Admin",
7
8
  "x-api-family": "Store"
@@ -19,31 +20,45 @@
19
20
  "paths": {
20
21
  "/organizations/{organizationId}/store-redirect-mappings": {
21
22
  "get": {
23
+ "tags": [
24
+ "Store Redirect Mappings"
25
+ ],
26
+ "summary": "Get all store redirect mappings.",
27
+ "description": "Retrieve all store redirect mappings for the specified organization and site. \nUse the offset and limit parameters for pagination, or omit them to return all mappings. \nYou can also sort results using the sortBy and sortOrder parameters.\n",
22
28
  "operationId": "getAllStoreRedirectMappings",
23
29
  "parameters": [
24
30
  {
25
31
  "name": "organizationId",
26
32
  "in": "path",
33
+ "description": "An identifier for the organization the request is being made by",
27
34
  "required": true,
28
35
  "style": "simple",
29
36
  "explode": false,
30
37
  "schema": {
31
38
  "$ref": "#/components/schemas/OrganizationId"
32
- }
39
+ },
40
+ "example": "f_ecom_zzxy_prd"
33
41
  },
34
42
  {
35
43
  "name": "siteId",
36
44
  "in": "query",
45
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
37
46
  "required": true,
38
47
  "style": "form",
39
48
  "explode": true,
40
49
  "schema": {
41
50
  "$ref": "#/components/schemas/SiteId"
51
+ },
52
+ "examples": {
53
+ "SiteId": {
54
+ "value": "RefArch"
55
+ }
42
56
  }
43
57
  },
44
58
  {
45
59
  "name": "sortBy",
46
60
  "in": "query",
61
+ "description": "Field for sorting",
47
62
  "required": false,
48
63
  "style": "form",
49
64
  "explode": true,
@@ -53,12 +68,14 @@
53
68
  "enum": [
54
69
  "sourceStoreId",
55
70
  "targetStoreId"
56
- ]
71
+ ],
72
+ "example": "sourceStoreId"
57
73
  }
58
74
  },
59
75
  {
60
76
  "name": "sortOrder",
61
77
  "in": "query",
78
+ "description": "Sort direction",
62
79
  "required": false,
63
80
  "style": "form",
64
81
  "explode": true,
@@ -68,12 +85,14 @@
68
85
  "enum": [
69
86
  "asc",
70
87
  "desc"
71
- ]
88
+ ],
89
+ "example": "asc"
72
90
  }
73
91
  },
74
92
  {
75
93
  "name": "limit",
76
94
  "in": "query",
95
+ "description": "Maximum records to retrieve per request, not to exceed 200. Defaults to 25.",
77
96
  "required": false,
78
97
  "style": "form",
79
98
  "explode": true,
@@ -87,6 +106,7 @@
87
106
  {
88
107
  "name": "offset",
89
108
  "in": "query",
109
+ "description": "Used to retrieve the results based on a particular resource offset.",
90
110
  "required": false,
91
111
  "style": "form",
92
112
  "explode": true,
@@ -105,6 +125,11 @@
105
125
  "application/json": {
106
126
  "schema": {
107
127
  "$ref": "#/components/schemas/StoreRedirectMappingsResult"
128
+ },
129
+ "examples": {
130
+ "StoreRedirectMappingsResultGetResponse": {
131
+ "$ref": "#/components/examples/StoreRedirectMappingsResultGetResponse"
132
+ }
108
133
  }
109
134
  }
110
135
  }
@@ -128,26 +153,39 @@
128
153
  },
129
154
  "/organizations/{organizationId}/store-redirect-mappings/actions/bulk": {
130
155
  "post": {
156
+ "tags": [
157
+ "Store Redirect Mappings"
158
+ ],
159
+ "summary": "Create or update store redirect mappings.",
160
+ "description": "Performs a batch creation or update of store redirect mappings. \n* If a mapping for a `sourceStoreId` already exists, the system updates it; otherwise, it creates a new mapping.\n* If the request contains duplicate keys in the `storeRedirectMappings` object, the system processes only the last value provided for each key.\n* Entries with a blank `sourceStoreId` or `targetStoreId` are ignored.\n* To maintain efficiency with large datasets, the response returns execution counts rather than the full objects. \n\nTo verify the current state of mappings after a batch update, use the `GET` endpoint.\n",
131
161
  "operationId": "upsertStoreRedirectMappings",
132
162
  "parameters": [
133
163
  {
134
164
  "name": "organizationId",
135
165
  "in": "path",
166
+ "description": "An identifier for the organization the request is being made by",
136
167
  "required": true,
137
168
  "style": "simple",
138
169
  "explode": false,
139
170
  "schema": {
140
171
  "$ref": "#/components/schemas/OrganizationId"
141
- }
172
+ },
173
+ "example": "f_ecom_zzxy_prd"
142
174
  },
143
175
  {
144
176
  "name": "siteId",
145
177
  "in": "query",
178
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
146
179
  "required": true,
147
180
  "style": "form",
148
181
  "explode": true,
149
182
  "schema": {
150
183
  "$ref": "#/components/schemas/SiteId"
184
+ },
185
+ "examples": {
186
+ "SiteId": {
187
+ "value": "RefArch"
188
+ }
151
189
  }
152
190
  }
153
191
  ],
@@ -156,6 +194,14 @@
156
194
  "application/json": {
157
195
  "schema": {
158
196
  "$ref": "#/components/schemas/StoreRedirectMappingsRequest"
197
+ },
198
+ "examples": {
199
+ "UpsertSingle": {
200
+ "$ref": "#/components/examples/UpsertSingle"
201
+ },
202
+ "UpsertMultiple": {
203
+ "$ref": "#/components/examples/UpsertMultiple"
204
+ }
159
205
  }
160
206
  }
161
207
  },
@@ -168,6 +214,11 @@
168
214
  "application/json": {
169
215
  "schema": {
170
216
  "$ref": "#/components/schemas/StoreRedirectMappingsBulkResponse"
217
+ },
218
+ "examples": {
219
+ "StoreRedirectMappingsBulkUpsertResponse": {
220
+ "$ref": "#/components/examples/StoreRedirectMappingsBulkUpsertResponse"
221
+ }
171
222
  }
172
223
  }
173
224
  }
@@ -178,6 +229,11 @@
178
229
  "application/problem+json": {
179
230
  "schema": {
180
231
  "$ref": "#/components/schemas/ErrorResponse"
232
+ },
233
+ "examples": {
234
+ "EmptyUpsertRequest": {
235
+ "$ref": "#/components/examples/EmptyUpsertRequest"
236
+ }
181
237
  }
182
238
  }
183
239
  }
@@ -200,26 +256,39 @@
200
256
  },
201
257
  "/organizations/{organizationId}/store-redirect-mappings/actions/bulk-delete": {
202
258
  "post": {
259
+ "tags": [
260
+ "Store Redirect Mappings"
261
+ ],
262
+ "summary": "Delete store redirect mappings (batch).",
263
+ "description": "Deletes multiple store redirect mappings in a single request. \n* Accepts an array of source store IDs.\n* Blank IDs are skipped, and non-existent mappings are silently ignored.\n* The response returns summary counts instead of deleted items to optimize for large datasets. \n\nUse the `GET` endpoint to retrieve remaining mappings if needed.\n",
203
264
  "operationId": "deleteStoreRedirectMappings",
204
265
  "parameters": [
205
266
  {
206
267
  "name": "organizationId",
207
268
  "in": "path",
269
+ "description": "An identifier for the organization the request is being made by",
208
270
  "required": true,
209
271
  "style": "simple",
210
272
  "explode": false,
211
273
  "schema": {
212
274
  "$ref": "#/components/schemas/OrganizationId"
213
- }
275
+ },
276
+ "example": "f_ecom_zzxy_prd"
214
277
  },
215
278
  {
216
279
  "name": "siteId",
217
280
  "in": "query",
281
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
218
282
  "required": true,
219
283
  "style": "form",
220
284
  "explode": true,
221
285
  "schema": {
222
286
  "$ref": "#/components/schemas/SiteId"
287
+ },
288
+ "examples": {
289
+ "SiteId": {
290
+ "value": "RefArch"
291
+ }
223
292
  }
224
293
  }
225
294
  ],
@@ -228,6 +297,14 @@
228
297
  "application/json": {
229
298
  "schema": {
230
299
  "$ref": "#/components/schemas/StoreRedirectMappingsDeleteRequest"
300
+ },
301
+ "examples": {
302
+ "DeleteSingle": {
303
+ "$ref": "#/components/examples/DeleteSingle"
304
+ },
305
+ "DeleteMultiple": {
306
+ "$ref": "#/components/examples/DeleteMultiple"
307
+ }
231
308
  }
232
309
  }
233
310
  },
@@ -240,6 +317,11 @@
240
317
  "application/json": {
241
318
  "schema": {
242
319
  "$ref": "#/components/schemas/StoreRedirectMappingsBulkResponse"
320
+ },
321
+ "examples": {
322
+ "StoreRedirectMappingsBulkDeleteResponse": {
323
+ "$ref": "#/components/examples/StoreRedirectMappingsBulkDeleteResponse"
324
+ }
243
325
  }
244
326
  }
245
327
  }
@@ -250,6 +332,11 @@
250
332
  "application/problem+json": {
251
333
  "schema": {
252
334
  "$ref": "#/components/schemas/ErrorResponse"
335
+ },
336
+ "examples": {
337
+ "EmptyDeleteRequest": {
338
+ "$ref": "#/components/examples/EmptyDeleteRequest"
339
+ }
253
340
  }
254
341
  }
255
342
  }
@@ -272,21 +359,29 @@
272
359
  },
273
360
  "/organizations/{organizationId}/store-redirect-mappings/{sourceStoreId}": {
274
361
  "get": {
362
+ "tags": [
363
+ "Store Redirect Mappings"
364
+ ],
365
+ "summary": "Get a specific store redirect mapping.",
366
+ "description": "Retrieve a specific store redirect mapping by source store ID.\n",
275
367
  "operationId": "getStoreRedirectMapping",
276
368
  "parameters": [
277
369
  {
278
370
  "name": "organizationId",
279
371
  "in": "path",
372
+ "description": "An identifier for the organization the request is being made by",
280
373
  "required": true,
281
374
  "style": "simple",
282
375
  "explode": false,
283
376
  "schema": {
284
377
  "$ref": "#/components/schemas/OrganizationId"
285
- }
378
+ },
379
+ "example": "f_ecom_zzxy_prd"
286
380
  },
287
381
  {
288
382
  "name": "sourceStoreId",
289
383
  "in": "path",
384
+ "description": "The source store ID to use for retrieval.",
290
385
  "required": true,
291
386
  "style": "simple",
292
387
  "explode": false,
@@ -297,11 +392,17 @@
297
392
  {
298
393
  "name": "siteId",
299
394
  "in": "query",
395
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
300
396
  "required": true,
301
397
  "style": "form",
302
398
  "explode": true,
303
399
  "schema": {
304
400
  "$ref": "#/components/schemas/SiteId"
401
+ },
402
+ "examples": {
403
+ "SiteId": {
404
+ "value": "RefArch"
405
+ }
305
406
  }
306
407
  }
307
408
  ],
@@ -312,6 +413,11 @@
312
413
  "application/json": {
313
414
  "schema": {
314
415
  "$ref": "#/components/schemas/StoreRedirectMapping"
416
+ },
417
+ "examples": {
418
+ "StoreRedirectMappingGetResponse": {
419
+ "$ref": "#/components/examples/StoreRedirectMappingGetResponse"
420
+ }
315
421
  }
316
422
  }
317
423
  }
@@ -322,6 +428,11 @@
322
428
  "application/problem+json": {
323
429
  "schema": {
324
430
  "$ref": "#/components/schemas/ErrorResponse"
431
+ },
432
+ "examples": {
433
+ "BlankSourceStoreId": {
434
+ "$ref": "#/components/examples/BlankSourceStoreId"
435
+ }
325
436
  }
326
437
  }
327
438
  }
@@ -338,6 +449,11 @@
338
449
  "application/problem+json": {
339
450
  "schema": {
340
451
  "$ref": "#/components/schemas/ErrorResponse"
452
+ },
453
+ "examples": {
454
+ "StoreRedirectMappingNotFound": {
455
+ "$ref": "#/components/examples/StoreRedirectMappingNotFound"
456
+ }
341
457
  }
342
458
  }
343
459
  }
@@ -358,11 +474,15 @@
358
474
  "schemas": {
359
475
  "OrganizationId": {
360
476
  "type": "string",
477
+ "description": "An identifier for the organization the request is being made by",
478
+ "example": "f_ecom_zzxy_prd",
361
479
  "maxLength": 32,
362
480
  "minLength": 1
363
481
  },
364
482
  "SiteId": {
365
483
  "type": "string",
484
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites",
485
+ "example": "RefArch",
366
486
  "maxLength": 32,
367
487
  "minLength": 1
368
488
  },
@@ -370,16 +490,21 @@
370
490
  "type": "integer",
371
491
  "format": "int32",
372
492
  "default": 10,
493
+ "description": "Maximum records to retrieve per request, not to exceed the maximum defined. A limit must be at least 1 so at least one record is returned (if any match the criteria).",
494
+ "example": 10,
373
495
  "minimum": 1
374
496
  },
375
497
  "Total": {
376
498
  "type": "integer",
377
499
  "format": "int32",
378
500
  "default": 0,
501
+ "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.",
502
+ "example": 10,
379
503
  "minimum": 0
380
504
  },
381
505
  "ResultBase": {
382
506
  "type": "object",
507
+ "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.",
383
508
  "properties": {
384
509
  "limit": {
385
510
  "allOf": [
@@ -402,6 +527,8 @@
402
527
  "type": "integer",
403
528
  "format": "int32",
404
529
  "default": 0,
530
+ "description": "The zero-based index of the first hit/data to include in the result.",
531
+ "example": 0,
405
532
  "minimum": 0
406
533
  },
407
534
  "PaginatedResultBase": {
@@ -410,6 +537,7 @@
410
537
  "$ref": "#/components/schemas/ResultBase"
411
538
  }
412
539
  ],
540
+ "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`.",
413
541
  "properties": {
414
542
  "offset": {
415
543
  "$ref": "#/components/schemas/Offset"
@@ -423,11 +551,15 @@
423
551
  },
424
552
  "SourceStoreId": {
425
553
  "type": "string",
554
+ "description": "The source store ID that should redirect",
555
+ "example": "store1",
426
556
  "maxLength": 256,
427
557
  "minLength": 1
428
558
  },
429
559
  "TargetStoreId": {
430
560
  "type": "string",
561
+ "description": "The target store ID to redirect to",
562
+ "example": "store2",
431
563
  "maxLength": 256,
432
564
  "minLength": 1
433
565
  },
@@ -452,9 +584,11 @@
452
584
  "$ref": "#/components/schemas/PaginatedResultBase"
453
585
  }
454
586
  ],
587
+ "description": "Document representing a paginated list of store redirect mappings.",
455
588
  "properties": {
456
589
  "data": {
457
590
  "type": "array",
591
+ "description": "Array of store redirect mappings",
458
592
  "items": {
459
593
  "$ref": "#/components/schemas/StoreRedirectMapping"
460
594
  }
@@ -470,17 +604,25 @@
470
604
  "properties": {
471
605
  "title": {
472
606
  "type": "string",
607
+ "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",
608
+ "example": "You do not have enough credit",
473
609
  "maxLength": 256
474
610
  },
475
611
  "type": {
476
612
  "type": "string",
613
+ "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",
614
+ "example": "NotEnoughMoney",
477
615
  "maxLength": 2048
478
616
  },
479
617
  "detail": {
480
- "type": "string"
618
+ "type": "string",
619
+ "description": "A human-readable explanation specific to this occurrence of the problem.",
620
+ "example": "Your current balance is 30, but that costs 50"
481
621
  },
482
622
  "instance": {
483
623
  "type": "string",
624
+ "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",
625
+ "example": "/account/12345/msgs/abc",
484
626
  "maxLength": 2048
485
627
  }
486
628
  },
@@ -497,9 +639,11 @@
497
639
  "type": "object",
498
640
  "additionalProperties": {
499
641
  "type": "string",
642
+ "example": "target1",
500
643
  "maxLength": 256,
501
644
  "minLength": 1
502
645
  },
646
+ "description": "Map of source store IDs to target store IDs. Keys are source store IDs, values are target store IDs.\nNote: If duplicate keys are present in the JSON, only the last value for each key will be used.\n",
503
647
  "minProperties": 1
504
648
  }
505
649
  },
@@ -509,18 +653,25 @@
509
653
  },
510
654
  "StoreRedirectMappingsBulkResponse": {
511
655
  "type": "object",
656
+ "description": "Response for bulk operations (create/update/delete) containing operation counts",
512
657
  "properties": {
513
658
  "total": {
514
659
  "type": "integer",
515
- "format": "int32"
660
+ "format": "int32",
661
+ "description": "Total number of items in the request",
662
+ "example": 60000
516
663
  },
517
664
  "success": {
518
665
  "type": "integer",
519
- "format": "int32"
666
+ "format": "int32",
667
+ "description": "Number of items successfully processed",
668
+ "example": 50000
520
669
  },
521
670
  "failures": {
522
671
  "type": "integer",
523
- "format": "int32"
672
+ "format": "int32",
673
+ "description": "Number of items that failed or were skipped (invalid or not found)",
674
+ "example": 10000
524
675
  }
525
676
  },
526
677
  "required": [
@@ -534,6 +685,7 @@
534
685
  "properties": {
535
686
  "sourceStoreIds": {
536
687
  "type": "array",
688
+ "description": "Array of source store IDs to delete",
537
689
  "items": {
538
690
  "$ref": "#/components/schemas/SourceStoreId"
539
691
  },
@@ -552,6 +704,11 @@
552
704
  "application/problem+json": {
553
705
  "schema": {
554
706
  "$ref": "#/components/schemas/ErrorResponse"
707
+ },
708
+ "examples": {
709
+ "UnauthorizedExample": {
710
+ "$ref": "#/components/examples/UnauthorizedExample"
711
+ }
555
712
  }
556
713
  }
557
714
  }
@@ -562,6 +719,11 @@
562
719
  "application/problem+json": {
563
720
  "schema": {
564
721
  "$ref": "#/components/schemas/ErrorResponse"
722
+ },
723
+ "examples": {
724
+ "ForbiddenExample": {
725
+ "$ref": "#/components/examples/ForbiddenExample"
726
+ }
565
727
  }
566
728
  }
567
729
  }
@@ -571,27 +733,173 @@
571
733
  "organizationId": {
572
734
  "name": "organizationId",
573
735
  "in": "path",
736
+ "description": "An identifier for the organization the request is being made by",
574
737
  "required": true,
575
738
  "style": "simple",
576
739
  "explode": false,
577
740
  "schema": {
578
741
  "$ref": "#/components/schemas/OrganizationId"
579
- }
742
+ },
743
+ "example": "f_ecom_zzxy_prd"
580
744
  },
581
745
  "siteId": {
582
746
  "name": "siteId",
583
747
  "in": "query",
748
+ "description": "The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.",
584
749
  "required": true,
585
750
  "style": "form",
586
751
  "explode": true,
587
752
  "schema": {
588
753
  "$ref": "#/components/schemas/SiteId"
754
+ },
755
+ "examples": {
756
+ "SiteId": {
757
+ "value": "RefArch"
758
+ }
759
+ }
760
+ }
761
+ },
762
+ "examples": {
763
+ "StoreRedirectMappingsResultGetResponse": {
764
+ "summary": "Successfully retrieved store redirect mappings",
765
+ "description": "Example response for GET all store redirect mappings",
766
+ "value": {
767
+ "data": [
768
+ {
769
+ "sourceStoreId": "store1",
770
+ "targetStoreId": "store2"
771
+ },
772
+ {
773
+ "sourceStoreId": "store3",
774
+ "targetStoreId": "store4"
775
+ }
776
+ ],
777
+ "offset": 0,
778
+ "limit": 25,
779
+ "total": 2
780
+ }
781
+ },
782
+ "UnauthorizedExample": {
783
+ "value": {
784
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
785
+ "title": "Unauthorized",
786
+ "detail": "Your access token is invalid or expired and can’t be used to identify a user."
787
+ }
788
+ },
789
+ "ForbiddenExample": {
790
+ "value": {
791
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden",
792
+ "title": "Forbidden",
793
+ "detail": "Your access token is valid, but you don’t have the required permissions to access the resource."
794
+ }
795
+ },
796
+ "UpsertSingle": {
797
+ "summary": "Upsert single store redirect mapping",
798
+ "description": "Example request body for creating or updating a single store redirect mapping",
799
+ "value": {
800
+ "storeRedirectMappings": {
801
+ "store1": "target1"
802
+ }
803
+ }
804
+ },
805
+ "UpsertMultiple": {
806
+ "summary": "Upsert multiple store redirect mappings",
807
+ "description": "Example request body for creating or updating multiple store redirect mappings",
808
+ "value": {
809
+ "storeRedirectMappings": {
810
+ "store1": "target1",
811
+ "store2": "target2",
812
+ "store3": "target3"
813
+ }
814
+ }
815
+ },
816
+ "StoreRedirectMappingsBulkUpsertResponse": {
817
+ "summary": "Bulk upsert operation response",
818
+ "description": "Example response for POST bulk upsert operation (HTTP 207 Multi-Status). The response contains operation counts (total, success, failures). This example shows a case where some items succeeded while others failed.",
819
+ "value": {
820
+ "total": 100,
821
+ "success": 95,
822
+ "failures": 5
823
+ }
824
+ },
825
+ "EmptyUpsertRequest": {
826
+ "summary": "Empty Upsert Request Body",
827
+ "description": "Example error response when upsert request body is missing or empty",
828
+ "value": {
829
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/bad-request",
830
+ "title": "Bad Request",
831
+ "detail": "The request body must contain at least one store redirect mapping in the storeRedirectMappings object."
832
+ }
833
+ },
834
+ "DeleteSingle": {
835
+ "summary": "Delete single store redirect mapping",
836
+ "description": "Example request body for deleting a single store redirect mapping",
837
+ "value": {
838
+ "sourceStoreIds": [
839
+ "store1"
840
+ ]
841
+ }
842
+ },
843
+ "DeleteMultiple": {
844
+ "summary": "Delete multiple store redirect mappings",
845
+ "description": "Example request body for deleting multiple store redirect mappings",
846
+ "value": {
847
+ "sourceStoreIds": [
848
+ "store1",
849
+ "store2",
850
+ "store3"
851
+ ]
852
+ }
853
+ },
854
+ "StoreRedirectMappingsBulkDeleteResponse": {
855
+ "summary": "Bulk delete operation response",
856
+ "description": "Example response for POST bulk delete operation (HTTP 207 Multi-Status). The response contains operation counts (total, success, failures). This example shows a case where some items succeeded while others failed.",
857
+ "value": {
858
+ "total": 50,
859
+ "success": 48,
860
+ "failures": 2
861
+ }
862
+ },
863
+ "EmptyDeleteRequest": {
864
+ "summary": "Empty Delete Request Body",
865
+ "description": "Example error response when delete request body is missing or contains no valid source store IDs",
866
+ "value": {
867
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/bad-request",
868
+ "title": "Bad Request",
869
+ "detail": "The request body must contain at least one valid source store ID in the sourceStoreIds array."
870
+ }
871
+ },
872
+ "StoreRedirectMappingGetResponse": {
873
+ "summary": "Successfully retrieved a store redirect mapping",
874
+ "description": "Example response for GET a specific store redirect mapping",
875
+ "value": {
876
+ "sourceStoreId": "store1",
877
+ "targetStoreId": "store2"
878
+ }
879
+ },
880
+ "BlankSourceStoreId": {
881
+ "summary": "Blank Source Store ID",
882
+ "description": "Example error response when sourceStoreId parameter is blank",
883
+ "value": {
884
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/bad-request",
885
+ "title": "Bad Request",
886
+ "detail": "The sourceStoreId parameter is required and cannot be blank."
887
+ }
888
+ },
889
+ "StoreRedirectMappingNotFound": {
890
+ "summary": "Store Redirect Mapping Not Found",
891
+ "description": "Example error response when the requested store redirect mapping was not found",
892
+ "value": {
893
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/not-found",
894
+ "title": "Store Redirect Mapping Not Found",
895
+ "detail": "Store redirect mapping with source store ID 'nonexistent-store' was not found."
589
896
  }
590
897
  }
591
898
  },
592
899
  "securitySchemes": {
593
900
  "AmOAuth2": {
594
901
  "type": "oauth2",
902
+ "description": "OAuth 2.0 Authorization via Account Manager",
595
903
  "flows": {
596
904
  "clientCredentials": {
597
905
  "tokenUrl": "https://account.demandware.com/dw/oauth2/access_token",