@salesforce/b2c-tooling-sdk 2.4.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 (140) hide show
  1. package/data/schemas/dw.schema.json +14 -0
  2. package/data/tooling/index.json +5 -5
  3. package/dist/esm/cli/base-command.js +4 -3
  4. package/dist/esm/cli/base-command.js.map +1 -1
  5. package/dist/esm/cli/cartridge-command.js +2 -1
  6. package/dist/esm/cli/cartridge-command.js.map +1 -1
  7. package/dist/esm/cli/config.js +3 -1
  8. package/dist/esm/cli/config.js.map +1 -1
  9. package/dist/esm/cli/hooks.d.ts +13 -0
  10. package/dist/esm/cli/hooks.js +11 -0
  11. package/dist/esm/cli/hooks.js.map +1 -1
  12. package/dist/esm/cli/instance-command.js +2 -1
  13. package/dist/esm/cli/instance-command.js.map +1 -1
  14. package/dist/esm/clients/scapi-backend-utils.d.ts +15 -0
  15. package/dist/esm/clients/scapi-backend-utils.js +28 -1
  16. package/dist/esm/clients/scapi-backend-utils.js.map +1 -1
  17. package/dist/esm/clients/scapi-fallback-backend.js +2 -2
  18. package/dist/esm/clients/scapi-fallback-backend.js.map +1 -1
  19. package/dist/esm/clients/scapi-schemas.generated.d.ts +2 -2
  20. package/dist/esm/compat/dispatcher.js +2 -2
  21. package/dist/esm/compat/dispatcher.js.map +1 -1
  22. package/dist/esm/config/config-origins.d.ts +19 -0
  23. package/dist/esm/config/config-origins.js +11 -0
  24. package/dist/esm/config/config-origins.js.map +1 -0
  25. package/dist/esm/config/config-write.d.ts +86 -0
  26. package/dist/esm/config/config-write.js +296 -0
  27. package/dist/esm/config/config-write.js.map +1 -0
  28. package/dist/esm/config/dw-json-schema.js +4 -0
  29. package/dist/esm/config/dw-json-schema.js.map +1 -1
  30. package/dist/esm/config/dw-json.d.ts +2 -0
  31. package/dist/esm/config/dw-json.js +10 -6
  32. package/dist/esm/config/dw-json.js.map +1 -1
  33. package/dist/esm/config/index.d.ts +8 -3
  34. package/dist/esm/config/index.js +5 -2
  35. package/dist/esm/config/index.js.map +1 -1
  36. package/dist/esm/config/instance-manager.d.ts +64 -28
  37. package/dist/esm/config/instance-manager.js +145 -63
  38. package/dist/esm/config/instance-manager.js.map +1 -1
  39. package/dist/esm/config/mapping.js +6 -0
  40. package/dist/esm/config/mapping.js.map +1 -1
  41. package/dist/esm/config/resolver.d.ts +22 -0
  42. package/dist/esm/config/resolver.js +54 -29
  43. package/dist/esm/config/resolver.js.map +1 -1
  44. package/dist/esm/config/sources/dw-json-source.d.ts +9 -1
  45. package/dist/esm/config/sources/dw-json-source.js +34 -20
  46. package/dist/esm/config/sources/dw-json-source.js.map +1 -1
  47. package/dist/esm/config/sources/env-source.d.ts +30 -3
  48. package/dist/esm/config/sources/env-source.js +126 -1
  49. package/dist/esm/config/sources/env-source.js.map +1 -1
  50. package/dist/esm/config/types.d.ts +46 -0
  51. package/dist/esm/operations/jobs/run-system-job.js +2 -2
  52. package/dist/esm/operations/jobs/run-system-job.js.map +1 -1
  53. package/dist/esm/plugins/discovery.js +2 -1
  54. package/dist/esm/plugins/discovery.js.map +1 -1
  55. package/dist/esm/scapi/index.d.ts +5 -2
  56. package/dist/esm/scapi/index.js +3 -2
  57. package/dist/esm/scapi/index.js.map +1 -1
  58. package/dist/esm/scapi/live.d.ts +12 -1
  59. package/dist/esm/scapi/live.js +30 -2
  60. package/dist/esm/scapi/live.js.map +1 -1
  61. package/dist/esm/scapi/local.d.ts +17 -0
  62. package/dist/esm/scapi/local.js +68 -16
  63. package/dist/esm/scapi/local.js.map +1 -1
  64. package/dist/esm/scapi/request.d.ts +2 -2
  65. package/dist/esm/scapi/request.js +2 -1
  66. package/dist/esm/scapi/request.js.map +1 -1
  67. package/dist/esm/scapi/runtime.d.ts +5 -0
  68. package/dist/esm/scapi/runtime.js.map +1 -1
  69. package/dist/esm/scapi/schema-source.d.ts +90 -0
  70. package/dist/esm/scapi/schema-source.js +146 -0
  71. package/dist/esm/scapi/schema-source.js.map +1 -0
  72. package/dist/esm/scapi/worker-source.js +30 -6
  73. package/dist/esm/scapi/worker-source.js.map +1 -1
  74. package/dist/esm/test-utils/config-isolation.js +9 -2
  75. package/dist/esm/test-utils/config-isolation.js.map +1 -1
  76. package/node_modules/@salesforce/b2c-api-schemas/manifest.json +83 -42
  77. package/node_modules/@salesforce/b2c-api-schemas/package.json +1 -1
  78. package/node_modules/@salesforce/b2c-api-schemas/scapi/cdn/zones/v1.json +6798 -238
  79. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/orders/v1.json +2296 -205
  80. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v1.json +5571 -666
  81. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v2.json +6062 -371
  82. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-orders/v1.json +3426 -360
  83. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-payments/v1.json +351 -99
  84. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/cors/v1.json +172 -12
  85. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/preferences/v1.json +1497 -111
  86. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/shopper-configurations/v1.json +202 -36
  87. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/timeouts/v1.json +79 -10
  88. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/custom-objects/v1.json +785 -49
  89. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/shopper-custom-objects/v1.json +191 -40
  90. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/customers/v1.json +1483 -107
  91. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/shopper-customers/v1.json +4854 -787
  92. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/custom-apis/v1.json +119 -15
  93. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/object-definitions/v1.json +1699 -80
  94. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scapi-schemas/v1.json +252 -18
  95. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scripts/v1.json +329 -23
  96. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/experiences/v1.json +4208 -234
  97. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/shopper-experience/v1.json +1591 -247
  98. package/node_modules/@salesforce/b2c-api-schemas/scapi/intelligence/analytics/v1.json +396 -8
  99. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/availability/v1.json +1242 -69
  100. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/impex/v1.json +2354 -248
  101. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/reservation/v1.json +1550 -45
  102. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/segmentation/v1.json +6615 -0
  103. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/roles/v1.json +1520 -59
  104. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/users/v1.json +397 -17
  105. package/node_modules/@salesforce/b2c-api-schemas/scapi/observability/metrics/v1.json +1241 -27
  106. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/jobs/v1.json +1069 -68
  107. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/replications/v1.json +410 -23
  108. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/assignments/v1.json +502 -102
  109. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/campaigns/v1.json +1112 -94
  110. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/coupons/v1.json +820 -93
  111. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/gift-certificates/v1.json +845 -92
  112. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/promotions/v1.json +2716 -674
  113. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-gift-certificates/v1.json +130 -47
  114. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-promotions/v1.json +233 -63
  115. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/source-code-groups/v1.json +630 -70
  116. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/catalogs/v1.json +2886 -348
  117. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/inventory-lists/v1.json +520 -19
  118. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/price-books/v1.json +3115 -293
  119. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/products/v1.json +3313 -138
  120. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-availability/v1.json +266 -52
  121. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-delivery-estimates/v1.json +256 -48
  122. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-products/v1.json +1744 -306
  123. package/node_modules/@salesforce/b2c-api-schemas/scapi/search/shopper-search/v1.json +1661 -120
  124. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth/v1.json +2174 -118
  125. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth-admin/v1.json +1373 -24
  126. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/consents/v1.json +531 -20
  127. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-agents/v1.json +154 -6
  128. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-consents/v1.json +596 -79
  129. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-context/v1.json +456 -42
  130. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/seo/v1.json +101 -23
  131. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/shopper-seo/v1.json +184 -41
  132. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/sites/v1.json +995 -47
  133. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/shopper-stores/v1.json +370 -67
  134. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/store-redirect-mappings/v1.json +319 -11
  135. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/stores/v1.json +1109 -64
  136. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/deployments/v1.json +1442 -0
  137. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/environments/v1.json +4293 -0
  138. package/node_modules/@salesforce/b2c-api-schemas/scapi/storefront/storefronts/v1.json +1371 -0
  139. package/package.json +2 -2
  140. package/specs/scapi-schemas-v1.yaml +4 -1
@@ -2,7 +2,8 @@
2
2
  "openapi": "3.0.3",
3
3
  "info": {
4
4
  "title": "Shopper Stores",
5
- "version": "1.4.0",
5
+ "description": "[Download API specification](https://developer.salesforce.com/static/commercecloud/commerce-api/shopper-stores/shopper-stores-oas-v1-public.yaml)\n\n# API Overview\n\nUse this API to access stores via search or ID lookup.\n\n## Authentication & Authorization\n\nThe Shopper Stores API requires a shopper access token from the [Shopper Login and API Access Service (SLAS).](https://developer.salesforce.com/docs/commerce/commerce-api/guide/authorization-for-shopper-apis.html)\n\nYou must include `sfcc.shopper-stores` and other relevant scope(s) in the client ID used to generate the SLAS token. For a full list of permissions, see [Authorization Scopes Catalog.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/auth-z-scope-catalog.html)\n\nFor details on how to request a shopper access token from SLAS, see the guest user flows for [public clients](https://developer.salesforce.com/docs/commerce/commerce-api/guide/slas-public-client.html) and [private clients](https://developer.salesforce.com/docs/commerce/commerce-api/guide/slas-private-client.html) in the SLAS guides.\n\n## Customization\n\n### Custom Properties\n\nThis API supports custom properties (prefixed with `c_`). For details, see [Custom Properties.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/custom-properties.html)\n\n### Hooks\n\nFor details on working with hooks, see [Extensibility with Hooks.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/extensibility_via_hooks.html)\n\n## Request Details\n\n### URL Encoding\n\nIf resource identifiers in request parameters contain commas (`,`) or percent signs (`%`), they must be URL encoded. For details, see [Encode URL Special Characters.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/url-encode.html)\n\n## Response Details\n\n### Personalization\n\nResponses from this API can be personalized using the [Shopper Context API.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/shopper-context-api.html) By setting context attributes such as customer group, source code, or store ID, you can retrieve personalized promotions, pricing, and shipping methods. For details on how personalization interacts with caching, see [Personalized Caching.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html#personalized-caching)\n\n### Caching\n\nCaching is provided for the Shopper Stores API. For details, see [Server-Side Web-Tier Caching.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/server-side-web-tier-caching.html)\n\n### Timeouts\n\nShopper API requests must respond within 10 seconds, including any hook execution. If a response exceeds this threshold, an HTTP 504 status code is returned. For details, see [Timeouts and Limits.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/timeouts-limits.html)\n\n### Error Handling\n\nError responses follow the [RFC 7807](https://datatracker.ietf.org/doc/html/rfc7807) problem detail format. To trace errors, include a `correlation-id` header in your request — the response returns it as `x-correlation-id`. For details, see [HTTP Status Codes and Errors.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/error-response-codes.html)\n\n## Use Cases\n\n### Search Stores by Location\n\nFind stores within a radius of a geographic coordinate.\n\n```sh\ncurl \"https://{shortCode}.api.commercecloud.salesforce.com/store/shopper-stores/v1/organizations/{organizationId}/store-search?latitude=37.7749&longitude=-122.4194&distanceUnit=mi&maxDistance=25&siteId=RefArch\" \\\n -H \"Authorization: Bearer {access_token}\"\n```\n\n\n### Store Retrieval\n\n- Specific Lookup: Retrieve detailed information for one or more stores using unique IDs.\n- Localization: Fetch store data tailored to specific languages and regional formats using locale.\n\n### Location-Based Search\n\n- Proximity Search: Find stores within a specific radius (miles or kilometers) of a shopper.\n- Coordinate Search: Locate stores using precise latitude and longitude pairs.\n- Postal Code Search: Identify stores near a specific zip or postal code using automated geolocation mapping.\n\n### Search Optimization\n\n- Threshold Filtering: Limit results to a maximum distance from the shopper's location.\n- Pagination: Manage large result sets efficiently using limit and offset parameters.\n\n## Related APIs\n\n- [Stores (Admin)](https://developer.salesforce.com/docs/commerce/commerce-api/references/stores?meta=Summary) — Manage store records and attributes.",
6
+ "version": "1.4.2",
6
7
  "x-api-type": "Shopper",
7
8
  "x-api-family": "Store"
8
9
  },
@@ -11,6 +12,7 @@
11
12
  "url": "https://{shortCode}.api.commercecloud.salesforce.com/store/shopper-stores/v1",
12
13
  "variables": {
13
14
  "shortCode": {
15
+ "description": "An eight-character string assigned to a realm for routing purposes. See [Base URL and Request Formation.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html)",
14
16
  "default": "shortCode"
15
17
  }
16
18
  }
@@ -19,21 +21,25 @@
19
21
  "paths": {
20
22
  "/organizations/{organizationId}/stores": {
21
23
  "get": {
24
+ "summary": "Return stores identified by the IDs provided as input.",
22
25
  "operationId": "getStores",
23
26
  "parameters": [
24
27
  {
25
28
  "name": "organizationId",
26
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).",
27
31
  "required": true,
28
32
  "style": "simple",
29
33
  "explode": false,
30
34
  "schema": {
31
35
  "$ref": "#/components/schemas/OrganizationId"
32
- }
36
+ },
37
+ "example": "f_ecom_zzxy_prd"
33
38
  },
34
39
  {
35
40
  "name": "ids",
36
41
  "in": "query",
42
+ "description": "The IDs of a requested stores (comma separated, max 50 IDs).",
37
43
  "required": true,
38
44
  "style": "form",
39
45
  "explode": true,
@@ -46,51 +52,55 @@
46
52
  {
47
53
  "name": "siteId",
48
54
  "in": "query",
55
+ "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.",
49
56
  "required": true,
50
57
  "style": "form",
51
58
  "explode": true,
52
59
  "schema": {
53
60
  "$ref": "#/components/schemas/SiteId"
61
+ },
62
+ "examples": {
63
+ "SiteId": {
64
+ "value": "RefArch"
65
+ }
54
66
  }
55
67
  },
56
68
  {
57
69
  "name": "locale",
58
70
  "in": "query",
71
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
59
72
  "required": false,
60
73
  "style": "form",
61
74
  "explode": true,
62
75
  "schema": {
63
76
  "$ref": "#/components/schemas/LocaleCode"
77
+ },
78
+ "examples": {
79
+ "LanguageCountry": {
80
+ "value": "en-US"
81
+ },
82
+ "CountryCode": {
83
+ "value": "US"
84
+ }
64
85
  }
65
86
  },
66
87
  {
67
88
  "name": "sfdc_usid",
68
89
  "in": "header",
90
+ "description": "A unique shopper identifier (USID) for tracking client context.\nUsed with endpoints secured with ShopperClientContextToken.\nThis header is required for all endpoints secured with ShopperClientContextToken.",
69
91
  "required": false,
70
92
  "style": "simple",
71
93
  "explode": false,
72
94
  "schema": {
73
95
  "type": "string",
74
- "format": "uuid"
75
- }
76
- },
77
- {
78
- "name": "sfdc_dw_dnt",
79
- "in": "header",
80
- "required": false,
81
- "style": "simple",
82
- "explode": false,
83
- "schema": {
84
- "type": "string",
85
- "enum": [
86
- "0",
87
- "1"
88
- ]
96
+ "format": "uuid",
97
+ "example": "550e8400-e29b-41d4-a716-446655440000"
89
98
  }
90
99
  },
91
100
  {
92
101
  "name": "personalized",
93
102
  "in": "query",
103
+ "description": "Controls whether personalization is applied to the response. When set to `none`, the server skips applying personalization to the response.",
94
104
  "required": false,
95
105
  "style": "form",
96
106
  "explode": true,
@@ -98,12 +108,14 @@
98
108
  "type": "string",
99
109
  "enum": [
100
110
  "none"
101
- ]
111
+ ],
112
+ "example": "none"
102
113
  }
103
114
  },
104
115
  {
105
116
  "name": "sfdc_shopper_context",
106
117
  "in": "header",
118
+ "description": "Shopper context information (for example clientIP, sourceCode, and customQualifiers)\npassed in from a trusted backend application.",
107
119
  "required": false,
108
120
  "style": "simple",
109
121
  "explode": false,
@@ -119,6 +131,11 @@
119
131
  "application/json": {
120
132
  "schema": {
121
133
  "$ref": "#/components/schemas/StoreResult"
134
+ },
135
+ "examples": {
136
+ "StoresResult": {
137
+ "$ref": "#/components/examples/StoresResult"
138
+ }
122
139
  }
123
140
  }
124
141
  }
@@ -129,6 +146,11 @@
129
146
  "application/problem+json": {
130
147
  "schema": {
131
148
  "$ref": "#/components/schemas/ErrorResponse"
149
+ },
150
+ "examples": {
151
+ "MissingIds400": {
152
+ "$ref": "#/components/examples/MissingIds400"
153
+ }
132
154
  }
133
155
  }
134
156
  }
@@ -152,21 +174,26 @@
152
174
  },
153
175
  "/organizations/{organizationId}/store-search": {
154
176
  "get": {
177
+ "summary": "Retrieve a list of stores for the given site that are within a configured distance of a geolocation.",
178
+ "description": "- The distance is interpreted either in miles or kilometers, depending on the `distanceUnit` input parameter.\n- The location is specified by either directly providing a latitude and longitude coordinate pair, or by providing a country and a postal code. If a postal code is passed, the resource looks in the system's geolocation mappings in Business Manager to find the coordinates for this postal code. If no matching geolocation is found, the resource returns an empty list of stores. If coordinates are passed, the values for country and postal code are ignored.\n\n To verify site latitude and longitude information in Business Manager:\n - Navigate to **Merchant Tools -> Online Marketing -> Stores**.\n - Select the applicable site.\n - In the **Address** tab, verify that valid information is provided in the following fields: **Address**, **City**, **Postal Code**, **State**, and **Country**. For latitude and longitude values, you can manually enter values or provide all field values to auto-populate **Latitude** and **Longitude**. You must provide valid values for all of the previous fields for latitude and longitude to auto-populate **Latitude** and **Longitude** values.\n",
155
179
  "operationId": "searchStores",
156
180
  "parameters": [
157
181
  {
158
182
  "name": "organizationId",
159
183
  "in": "path",
184
+ "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).",
160
185
  "required": true,
161
186
  "style": "simple",
162
187
  "explode": false,
163
188
  "schema": {
164
189
  "$ref": "#/components/schemas/OrganizationId"
165
- }
190
+ },
191
+ "example": "f_ecom_zzxy_prd"
166
192
  },
167
193
  {
168
194
  "name": "countryCode",
169
195
  "in": "query",
196
+ "description": "The two letter ISO country code, such as \"US\". This value is required when a postalCode is provided.",
170
197
  "required": false,
171
198
  "style": "form",
172
199
  "explode": true,
@@ -177,6 +204,7 @@
177
204
  {
178
205
  "name": "distanceUnit",
179
206
  "in": "query",
207
+ "description": "The distance unit. Supported values are \"mi\" (miles) and \"km\" (kilometers). The default is \"km\".",
180
208
  "required": false,
181
209
  "style": "form",
182
210
  "explode": true,
@@ -187,6 +215,7 @@
187
215
  {
188
216
  "name": "latitude",
189
217
  "in": "query",
218
+ "description": "The geographical latitude to search for stores (value range -90.00 .. 90.00). This value is required when a longitude is provided.",
190
219
  "required": false,
191
220
  "style": "form",
192
221
  "explode": true,
@@ -197,6 +226,7 @@
197
226
  {
198
227
  "name": "longitude",
199
228
  "in": "query",
229
+ "description": "The geographical longitude to search for stores (value range -180.00 .. 180.00). You must provide a longitude when a latitude is provided.",
200
230
  "required": false,
201
231
  "style": "form",
202
232
  "explode": true,
@@ -207,6 +237,7 @@
207
237
  {
208
238
  "name": "maxDistance",
209
239
  "in": "query",
240
+ "description": "The area (radius) in distanceUnit where stores will be searched.",
210
241
  "required": false,
211
242
  "style": "form",
212
243
  "explode": true,
@@ -217,6 +248,7 @@
217
248
  {
218
249
  "name": "postalCode",
219
250
  "in": "query",
251
+ "description": "The postal code, such as \"84121\". You must provide a countryCode when a postalCode is provided.",
220
252
  "required": false,
221
253
  "style": "form",
222
254
  "explode": true,
@@ -227,26 +259,42 @@
227
259
  {
228
260
  "name": "siteId",
229
261
  "in": "query",
262
+ "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.",
230
263
  "required": true,
231
264
  "style": "form",
232
265
  "explode": true,
233
266
  "schema": {
234
267
  "$ref": "#/components/schemas/SiteId"
268
+ },
269
+ "examples": {
270
+ "SiteId": {
271
+ "value": "RefArch"
272
+ }
235
273
  }
236
274
  },
237
275
  {
238
276
  "name": "locale",
239
277
  "in": "query",
278
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
240
279
  "required": false,
241
280
  "style": "form",
242
281
  "explode": true,
243
282
  "schema": {
244
283
  "$ref": "#/components/schemas/LocaleCode"
284
+ },
285
+ "examples": {
286
+ "LanguageCountry": {
287
+ "value": "en-US"
288
+ },
289
+ "CountryCode": {
290
+ "value": "US"
291
+ }
245
292
  }
246
293
  },
247
294
  {
248
295
  "name": "limit",
249
296
  "in": "query",
297
+ "description": "Number of records to retrieve per request. Must be between 1 (minimum) and 200 (maximum). Defaults to 25.",
250
298
  "required": false,
251
299
  "style": "form",
252
300
  "explode": true,
@@ -261,6 +309,7 @@
261
309
  {
262
310
  "name": "offset",
263
311
  "in": "query",
312
+ "description": "Used to retrieve the results based on a particular resource offset.",
264
313
  "required": false,
265
314
  "style": "form",
266
315
  "explode": true,
@@ -274,31 +323,20 @@
274
323
  {
275
324
  "name": "sfdc_usid",
276
325
  "in": "header",
326
+ "description": "A unique shopper identifier (USID) for tracking client context.\nUsed with endpoints secured with ShopperClientContextToken.\nThis header is required for all endpoints secured with ShopperClientContextToken.",
277
327
  "required": false,
278
328
  "style": "simple",
279
329
  "explode": false,
280
330
  "schema": {
281
331
  "type": "string",
282
- "format": "uuid"
283
- }
284
- },
285
- {
286
- "name": "sfdc_dw_dnt",
287
- "in": "header",
288
- "required": false,
289
- "style": "simple",
290
- "explode": false,
291
- "schema": {
292
- "type": "string",
293
- "enum": [
294
- "0",
295
- "1"
296
- ]
332
+ "format": "uuid",
333
+ "example": "550e8400-e29b-41d4-a716-446655440000"
297
334
  }
298
335
  },
299
336
  {
300
337
  "name": "personalized",
301
338
  "in": "query",
339
+ "description": "Controls whether personalization is applied to the response. When set to `none`, the server skips applying personalization to the response.",
302
340
  "required": false,
303
341
  "style": "form",
304
342
  "explode": true,
@@ -306,12 +344,14 @@
306
344
  "type": "string",
307
345
  "enum": [
308
346
  "none"
309
- ]
347
+ ],
348
+ "example": "none"
310
349
  }
311
350
  },
312
351
  {
313
352
  "name": "sfdc_shopper_context",
314
353
  "in": "header",
354
+ "description": "Shopper context information (for example clientIP, sourceCode, and customQualifiers)\npassed in from a trusted backend application.",
315
355
  "required": false,
316
356
  "style": "simple",
317
357
  "explode": false,
@@ -327,6 +367,11 @@
327
367
  "application/json": {
328
368
  "schema": {
329
369
  "$ref": "#/components/schemas/Stores"
370
+ },
371
+ "examples": {
372
+ "StoreSearchResult": {
373
+ "$ref": "#/components/examples/StoreSearchResult"
374
+ }
330
375
  }
331
376
  }
332
377
  }
@@ -337,6 +382,11 @@
337
382
  "application/problem+json": {
338
383
  "schema": {
339
384
  "$ref": "#/components/schemas/ErrorResponse"
385
+ },
386
+ "examples": {
387
+ "MissingPostalCode400": {
388
+ "$ref": "#/components/examples/MissingPostalCode400"
389
+ }
340
390
  }
341
391
  }
342
392
  }
@@ -363,27 +413,38 @@
363
413
  "schemas": {
364
414
  "OrganizationId": {
365
415
  "type": "string",
416
+ "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).",
417
+ "example": "f_ecom_zzxy_prd",
366
418
  "pattern": "^f_ecom_[a-z]{4}_(prd|stg|dev|s[0-9]{2}|[0-9]{3})$"
367
419
  },
368
420
  "SiteId": {
369
421
  "type": "string",
422
+ "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",
423
+ "example": "RefArch",
370
424
  "maxLength": 32,
371
425
  "minLength": 1
372
426
  },
373
427
  "LanguageCountry": {
374
428
  "type": "string",
429
+ "description": "A concatenated version of the standard Language and Country codes, combined with a hyphen '`-`'.",
430
+ "example": "en-US",
375
431
  "pattern": "^[a-z][a-z]-[A-Z][A-Z]$"
376
432
  },
377
433
  "LanguageCode": {
378
434
  "type": "string",
435
+ "description": "A two letter lowercase language code conforming to the [ISO 639-1](https://www.iso.org/iso-639-language-codes.html) standard. Additionally, this may be used to submit requests with the header parameter `Accept-Language`, following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766).",
436
+ "example": "en",
379
437
  "pattern": "^[a-z][a-z]$"
380
438
  },
381
439
  "DefaultFallback": {
382
440
  "type": "string",
383
441
  "default": "default",
442
+ "description": "A specialized value indicating the system default values for locales.",
443
+ "example": "default",
384
444
  "pattern": "^default$"
385
445
  },
386
446
  "LocaleCode": {
447
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
387
448
  "oneOf": [
388
449
  {
389
450
  "$ref": "#/components/schemas/LanguageCountry"
@@ -400,14 +461,19 @@
400
461
  "type": "integer",
401
462
  "format": "int32",
402
463
  "default": 0,
464
+ "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.",
465
+ "example": 10,
403
466
  "minimum": 0
404
467
  },
405
468
  "ResultBase": {
406
469
  "type": "object",
470
+ "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.",
407
471
  "properties": {
408
472
  "limit": {
409
473
  "type": "integer",
410
- "format": "int32"
474
+ "format": "int32",
475
+ "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.",
476
+ "example": 10
411
477
  },
412
478
  "total": {
413
479
  "$ref": "#/components/schemas/Total"
@@ -420,16 +486,20 @@
420
486
  },
421
487
  "CountryCode": {
422
488
  "type": "string",
489
+ "description": "A two letter uppercase country code conforming to the [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) alpha-2 standard.",
490
+ "example": "US",
423
491
  "pattern": "^[A-Z][A-Z]$"
424
492
  },
425
493
  "Distance": {
426
494
  "type": "number",
427
495
  "format": "double",
496
+ "description": "The distance to the given geolocation where the stores will be searched, using the unit given in the attribute 'DistanceUnit' (miles or kilometers).",
428
497
  "maximum": 20012,
429
498
  "minimum": 0
430
499
  },
431
500
  "DistanceUnit": {
432
501
  "type": "string",
502
+ "description": "The unit the distance attribute is measured in (either in miles or kilometers).",
433
503
  "enum": [
434
504
  "km",
435
505
  "mi"
@@ -438,32 +508,39 @@
438
508
  "Latitude": {
439
509
  "type": "number",
440
510
  "format": "double",
511
+ "description": "The latitude of the store.",
441
512
  "maximum": 90,
442
513
  "minimum": -90
443
514
  },
444
515
  "Longitude": {
445
516
  "type": "number",
446
517
  "format": "double",
518
+ "description": "The longitude of the store.",
447
519
  "maximum": 180,
448
520
  "minimum": -180
449
521
  },
450
522
  "PostalCode": {
451
523
  "type": "string",
524
+ "description": "The postal code of the store.",
452
525
  "maxLength": 10,
453
526
  "minLength": 3
454
527
  },
455
528
  "Store": {
456
529
  "type": "object",
530
+ "description": "Document representing a store.",
457
531
  "properties": {
458
532
  "address1": {
459
533
  "type": "string",
534
+ "description": "The primary address of the store.",
460
535
  "minLength": 1
461
536
  },
462
537
  "address2": {
463
- "type": "string"
538
+ "type": "string",
539
+ "description": "The secondary address of the store."
464
540
  },
465
541
  "city": {
466
- "type": "string"
542
+ "type": "string",
543
+ "description": "The city of the store."
467
544
  },
468
545
  "countryCode": {
469
546
  "$ref": "#/components/schemas/CountryCode"
@@ -475,21 +552,26 @@
475
552
  "$ref": "#/components/schemas/DistanceUnit"
476
553
  },
477
554
  "email": {
478
- "type": "string"
555
+ "type": "string",
556
+ "description": "The email address of the store."
479
557
  },
480
558
  "fax": {
481
- "type": "string"
559
+ "type": "string",
560
+ "description": "The fax number of the store."
482
561
  },
483
562
  "id": {
484
563
  "type": "string",
564
+ "description": "The id of the store.",
485
565
  "maxLength": 256,
486
566
  "minLength": 1
487
567
  },
488
568
  "image": {
489
- "type": "string"
569
+ "type": "string",
570
+ "description": "The store image."
490
571
  },
491
572
  "inventoryId": {
492
573
  "type": "string",
574
+ "description": "The inventory list id associated with this store.",
493
575
  "maxLength": 256
494
576
  },
495
577
  "latitude": {
@@ -499,32 +581,40 @@
499
581
  "$ref": "#/components/schemas/Longitude"
500
582
  },
501
583
  "name": {
502
- "type": "string"
584
+ "type": "string",
585
+ "description": "The store name."
503
586
  },
504
587
  "phone": {
505
- "type": "string"
588
+ "type": "string",
589
+ "description": "The phone number of the store."
506
590
  },
507
591
  "posEnabled": {
508
- "type": "boolean"
592
+ "type": "boolean",
593
+ "description": "Whether this store uses Store Point-of-Sale."
509
594
  },
510
595
  "postalCode": {
511
596
  "allOf": [
512
597
  {
513
598
  "$ref": "#/components/schemas/PostalCode"
514
599
  }
515
- ]
600
+ ],
601
+ "description": "The postal code of the store."
516
602
  },
517
603
  "stateCode": {
518
- "type": "string"
604
+ "type": "string",
605
+ "description": "The state code of the store."
519
606
  },
520
607
  "storeEvents": {
521
- "type": "string"
608
+ "type": "string",
609
+ "description": "The store events."
522
610
  },
523
611
  "storeHours": {
524
- "type": "string"
612
+ "type": "string",
613
+ "description": "The opening hours of the store."
525
614
  },
526
615
  "storeLocatorEnabled": {
527
- "type": "boolean"
616
+ "type": "boolean",
617
+ "description": "Whether this store should show up in store locator results."
528
618
  }
529
619
  },
530
620
  "required": [
@@ -537,9 +627,11 @@
537
627
  "$ref": "#/components/schemas/ResultBase"
538
628
  }
539
629
  ],
630
+ "description": "Result object containing an array of stores.",
540
631
  "properties": {
541
632
  "data": {
542
633
  "type": "array",
634
+ "description": "The list of stores in the search result.",
543
635
  "items": {
544
636
  "$ref": "#/components/schemas/Store"
545
637
  }
@@ -552,17 +644,25 @@
552
644
  "properties": {
553
645
  "title": {
554
646
  "type": "string",
647
+ "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",
648
+ "example": "You do not have enough credit",
555
649
  "maxLength": 256
556
650
  },
557
651
  "type": {
558
652
  "type": "string",
653
+ "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",
654
+ "example": "NotEnoughMoney",
559
655
  "maxLength": 2048
560
656
  },
561
657
  "detail": {
562
- "type": "string"
658
+ "type": "string",
659
+ "description": "A human-readable explanation specific to this occurrence of the problem.",
660
+ "example": "Your current balance is 30, but that costs 50"
563
661
  },
564
662
  "instance": {
565
663
  "type": "string",
664
+ "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",
665
+ "example": "/account/12345/msgs/abc",
566
666
  "maxLength": 2048
567
667
  }
568
668
  },
@@ -576,6 +676,8 @@
576
676
  "type": "integer",
577
677
  "format": "int32",
578
678
  "default": 0,
679
+ "description": "The zero-based index of the first hit/data to include in the result.",
680
+ "example": 0,
579
681
  "minimum": 0
580
682
  },
581
683
  "PaginatedResultBase": {
@@ -584,6 +686,7 @@
584
686
  "$ref": "#/components/schemas/ResultBase"
585
687
  }
586
688
  ],
689
+ "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`.",
587
690
  "properties": {
588
691
  "offset": {
589
692
  "$ref": "#/components/schemas/Offset"
@@ -601,9 +704,11 @@
601
704
  "$ref": "#/components/schemas/PaginatedResultBase"
602
705
  }
603
706
  ],
707
+ "description": "Result object containing an paginated array of stores.",
604
708
  "properties": {
605
709
  "data": {
606
710
  "type": "array",
711
+ "description": "The list of stores in the search result.",
607
712
  "items": {
608
713
  "$ref": "#/components/schemas/Store"
609
714
  }
@@ -615,16 +720,19 @@
615
720
  "organizationId": {
616
721
  "name": "organizationId",
617
722
  "in": "path",
723
+ "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).",
618
724
  "required": true,
619
725
  "style": "simple",
620
726
  "explode": false,
621
727
  "schema": {
622
728
  "$ref": "#/components/schemas/OrganizationId"
623
- }
729
+ },
730
+ "example": "f_ecom_zzxy_prd"
624
731
  },
625
732
  "ids": {
626
733
  "name": "ids",
627
734
  "in": "query",
735
+ "description": "The IDs of a requested stores (comma separated, max 50 IDs).",
628
736
  "required": true,
629
737
  "style": "form",
630
738
  "explode": true,
@@ -637,26 +745,42 @@
637
745
  "siteId": {
638
746
  "name": "siteId",
639
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.",
640
749
  "required": true,
641
750
  "style": "form",
642
751
  "explode": true,
643
752
  "schema": {
644
753
  "$ref": "#/components/schemas/SiteId"
754
+ },
755
+ "examples": {
756
+ "SiteId": {
757
+ "value": "RefArch"
758
+ }
645
759
  }
646
760
  },
647
761
  "locale": {
648
762
  "name": "locale",
649
763
  "in": "query",
764
+ "description": "A descriptor for a geographical region by both a language and country code. By combining these two, regional differences in a language can be addressed, such as with the request header parameter `Accept-Language` following [RFC 2616](https://tools.ietf.org/html/rfc2616) & [RFC 1766](https://tools.ietf.org/html/rfc1766). This can also just refer to a language code, also RFC 2616/1766 compliant, as a default if there is no specific match for a country. Finally, can also be used to define default behavior if there is no locale specified.",
650
765
  "required": false,
651
766
  "style": "form",
652
767
  "explode": true,
653
768
  "schema": {
654
769
  "$ref": "#/components/schemas/LocaleCode"
770
+ },
771
+ "examples": {
772
+ "LanguageCountry": {
773
+ "value": "en-US"
774
+ },
775
+ "CountryCode": {
776
+ "value": "US"
777
+ }
655
778
  }
656
779
  },
657
780
  "countryCode": {
658
781
  "name": "countryCode",
659
782
  "in": "query",
783
+ "description": "The two letter ISO country code, such as \"US\". This value is required when a postalCode is provided.",
660
784
  "required": false,
661
785
  "style": "form",
662
786
  "explode": true,
@@ -667,6 +791,7 @@
667
791
  "distanceUnit": {
668
792
  "name": "distanceUnit",
669
793
  "in": "query",
794
+ "description": "The distance unit. Supported values are \"mi\" (miles) and \"km\" (kilometers). The default is \"km\".",
670
795
  "required": false,
671
796
  "style": "form",
672
797
  "explode": true,
@@ -677,6 +802,7 @@
677
802
  "latitude": {
678
803
  "name": "latitude",
679
804
  "in": "query",
805
+ "description": "The geographical latitude to search for stores (value range -90.00 .. 90.00). This value is required when a longitude is provided.",
680
806
  "required": false,
681
807
  "style": "form",
682
808
  "explode": true,
@@ -687,6 +813,7 @@
687
813
  "longitude": {
688
814
  "name": "longitude",
689
815
  "in": "query",
816
+ "description": "The geographical longitude to search for stores (value range -180.00 .. 180.00). You must provide a longitude when a latitude is provided.",
690
817
  "required": false,
691
818
  "style": "form",
692
819
  "explode": true,
@@ -697,6 +824,7 @@
697
824
  "maxDistance": {
698
825
  "name": "maxDistance",
699
826
  "in": "query",
827
+ "description": "The area (radius) in distanceUnit where stores will be searched.",
700
828
  "required": false,
701
829
  "style": "form",
702
830
  "explode": true,
@@ -707,6 +835,7 @@
707
835
  "postalCode": {
708
836
  "name": "postalCode",
709
837
  "in": "query",
838
+ "description": "The postal code, such as \"84121\". You must provide a countryCode when a postalCode is provided.",
710
839
  "required": false,
711
840
  "style": "form",
712
841
  "explode": true,
@@ -717,31 +846,20 @@
717
846
  "sfdcUsid": {
718
847
  "name": "sfdc_usid",
719
848
  "in": "header",
849
+ "description": "A unique shopper identifier (USID) for tracking client context.\nUsed with endpoints secured with ShopperClientContextToken.\nThis header is required for all endpoints secured with ShopperClientContextToken.",
720
850
  "required": false,
721
851
  "style": "simple",
722
852
  "explode": false,
723
853
  "schema": {
724
854
  "type": "string",
725
- "format": "uuid"
726
- }
727
- },
728
- "sfdcDwDnt": {
729
- "name": "sfdc_dw_dnt",
730
- "in": "header",
731
- "required": false,
732
- "style": "simple",
733
- "explode": false,
734
- "schema": {
735
- "type": "string",
736
- "enum": [
737
- "0",
738
- "1"
739
- ]
855
+ "format": "uuid",
856
+ "example": "550e8400-e29b-41d4-a716-446655440000"
740
857
  }
741
858
  },
742
859
  "personalized": {
743
860
  "name": "personalized",
744
861
  "in": "query",
862
+ "description": "Controls whether personalization is applied to the response. When set to `none`, the server skips applying personalization to the response.",
745
863
  "required": false,
746
864
  "style": "form",
747
865
  "explode": true,
@@ -749,12 +867,14 @@
749
867
  "type": "string",
750
868
  "enum": [
751
869
  "none"
752
- ]
870
+ ],
871
+ "example": "none"
753
872
  }
754
873
  },
755
874
  "sfdcShopperContext": {
756
875
  "name": "sfdc_shopper_context",
757
876
  "in": "header",
877
+ "description": "Shopper context information (for example clientIP, sourceCode, and customQualifiers)\npassed in from a trusted backend application.",
758
878
  "required": false,
759
879
  "style": "simple",
760
880
  "explode": false,
@@ -763,9 +883,191 @@
763
883
  }
764
884
  }
765
885
  },
886
+ "examples": {
887
+ "StoresResult": {
888
+ "value": {
889
+ "data": [
890
+ {
891
+ "address1": "1487 Bay St",
892
+ "city": "Springfield",
893
+ "countryCode": "US",
894
+ "distance": 147.03,
895
+ "distanceUnit": "km",
896
+ "id": "store9",
897
+ "name": "Springfield Media Store",
898
+ "phone": "+1-413-413-6916",
899
+ "posEnabled": false,
900
+ "postalCode": "01109",
901
+ "stateCode": "MA",
902
+ "storeEvents": "Here are some store events.",
903
+ "storeHours": "Here are the store hours",
904
+ "storeLocatorEnabled": true
905
+ },
906
+ {
907
+ "address1": "70 Wood Ave",
908
+ "city": "Bridgeport",
909
+ "countryCode": "US",
910
+ "distance": 198.36,
911
+ "distanceUnit": "km",
912
+ "email": "store1@company.com",
913
+ "id": "store11",
914
+ "name": "Electronics Super Store",
915
+ "phone": "+1-203-965-7014",
916
+ "posEnabled": false,
917
+ "postalCode": "06605",
918
+ "stateCode": "CT",
919
+ "storeLocatorEnabled": true
920
+ },
921
+ {
922
+ "address1": "239 Bridge St",
923
+ "city": "Manchester",
924
+ "countryCode": "US",
925
+ "distance": 219,
926
+ "distanceUnit": "km",
927
+ "id": "store8",
928
+ "name": "Gardena Mart",
929
+ "phone": "+1-603-715-9773",
930
+ "posEnabled": false,
931
+ "postalCode": "03104",
932
+ "stateCode": "NH",
933
+ "storeLocatorEnabled": true
934
+ },
935
+ {
936
+ "address1": "150 Winthrop Ave",
937
+ "city": "Lawrence",
938
+ "countryCode": "US",
939
+ "distance": 242.77,
940
+ "distanceUnit": "km",
941
+ "id": "store6",
942
+ "name": "Khale Street Electronics",
943
+ "phone": "+1-978-580-2704",
944
+ "posEnabled": false,
945
+ "postalCode": "01843",
946
+ "stateCode": "MA",
947
+ "storeLocatorEnabled": true
948
+ },
949
+ {
950
+ "address1": "110 Smith St",
951
+ "city": "Providence",
952
+ "countryCode": "US",
953
+ "distance": 245.02,
954
+ "distanceUnit": "km",
955
+ "email": "store2@company.com",
956
+ "id": "store2",
957
+ "name": "Super Electronics",
958
+ "phone": "+1-401-312-6284",
959
+ "posEnabled": false,
960
+ "postalCode": "02903",
961
+ "stateCode": "RI",
962
+ "storeLocatorEnabled": true
963
+ }
964
+ ],
965
+ "limit": 5,
966
+ "total": 12
967
+ }
968
+ },
969
+ "MissingIds400": {
970
+ "value": {
971
+ "detail": "Missing required query parameter(s): 'ids'",
972
+ "title": "Bad Request",
973
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/missing-query-parameter"
974
+ }
975
+ },
976
+ "StoreSearchResult": {
977
+ "value": {
978
+ "data": [
979
+ {
980
+ "address1": "1487 Bay St",
981
+ "city": "Springfield",
982
+ "countryCode": "US",
983
+ "distance": 147.03,
984
+ "distanceUnit": "km",
985
+ "id": "store9",
986
+ "name": "Springfield Media Store",
987
+ "phone": "+1-413-413-6916",
988
+ "posEnabled": false,
989
+ "postalCode": "01109",
990
+ "stateCode": "MA",
991
+ "storeEvents": "Here are some store events.",
992
+ "storeHours": "Here are the store hours",
993
+ "storeLocatorEnabled": true
994
+ },
995
+ {
996
+ "address1": "70 Wood Ave",
997
+ "city": "Bridgeport",
998
+ "countryCode": "US",
999
+ "distance": 198.36,
1000
+ "distanceUnit": "km",
1001
+ "email": "store1@company.com",
1002
+ "id": "store11",
1003
+ "name": "Electronics Super Store",
1004
+ "phone": "+1-203-965-7014",
1005
+ "posEnabled": false,
1006
+ "postalCode": "06605",
1007
+ "stateCode": "CT",
1008
+ "storeLocatorEnabled": true
1009
+ },
1010
+ {
1011
+ "address1": "239 Bridge St",
1012
+ "city": "Manchester",
1013
+ "countryCode": "US",
1014
+ "distance": 219,
1015
+ "distanceUnit": "km",
1016
+ "id": "store8",
1017
+ "name": "Gardena Mart",
1018
+ "phone": "+1-603-715-9773",
1019
+ "posEnabled": false,
1020
+ "postalCode": "03104",
1021
+ "stateCode": "NH",
1022
+ "storeLocatorEnabled": true
1023
+ },
1024
+ {
1025
+ "address1": "150 Winthrop Ave",
1026
+ "city": "Lawrence",
1027
+ "countryCode": "US",
1028
+ "distance": 242.77,
1029
+ "distanceUnit": "km",
1030
+ "id": "store6",
1031
+ "name": "Khale Street Electronics",
1032
+ "phone": "+1-978-580-2704",
1033
+ "posEnabled": false,
1034
+ "postalCode": "01843",
1035
+ "stateCode": "MA",
1036
+ "storeLocatorEnabled": true
1037
+ },
1038
+ {
1039
+ "address1": "110 Smith St",
1040
+ "city": "Providence",
1041
+ "countryCode": "US",
1042
+ "distance": 245.02,
1043
+ "distanceUnit": "km",
1044
+ "email": "store2@company.com",
1045
+ "id": "store2",
1046
+ "name": "Super Electronics",
1047
+ "phone": "+1-401-312-6284",
1048
+ "posEnabled": false,
1049
+ "postalCode": "02903",
1050
+ "stateCode": "RI",
1051
+ "storeLocatorEnabled": true
1052
+ }
1053
+ ],
1054
+ "limit": 5,
1055
+ "offset": 0,
1056
+ "total": 12
1057
+ }
1058
+ },
1059
+ "MissingPostalCode400": {
1060
+ "value": {
1061
+ "title": "Missing Postal Code",
1062
+ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/missing-postal-code",
1063
+ "detail": "The input parameter 'postal_code' is required when no coordinates are provided."
1064
+ }
1065
+ }
1066
+ },
766
1067
  "securitySchemes": {
767
1068
  "ShopperToken": {
768
1069
  "type": "oauth2",
1070
+ "description": "ShopperToken authentication follows the authorization code grant flow, as defined by the OAuth 2.1 standard. Depending on the type of OAuth client (public or private), this authorization flow has further requirements. \nFor a detailed description of the authorization flow, see the [SLAS overview](https://developer.salesforce.com/docs/commerce/commerce-api/references?meta=shopper-login:Summary).\nA shopper token allows you to access the Shopper API endpoints of both the Open Commerce API (OCAPI) and the B2C Commerce API. These endpoints can be used to build headless storefronts and other applications.\nThe `ShopperToken` security scheme is a parent of other security schemes, such as `ShopperTokenTsob`. A Shopper API endpoint can require a specific child scheme (`ShopperTokenTsob`, for example) that cannot be accessed with a regular shopper token.\n",
769
1071
  "flows": {
770
1072
  "clientCredentials": {
771
1073
  "tokenUrl": "https://{shortCode}.api.commercecloud.salesforce.com/shopper/auth/v1/organizations/{organizationId}/oauth2/token",
@@ -784,6 +1086,7 @@
784
1086
  },
785
1087
  "ShopperClientContextToken": {
786
1088
  "type": "oauth2",
1089
+ "description": "ShopperClientContextToken is a separate security scheme used to track and validate client context information.\nIt is valid for Guest shoppers flows only using SLAS private clients. For registered shoppers, use existing ShopperToken flows.\nFor authentication details, see the [SLAS overview](https://developer.salesforce.com/docs/commerce/commerce-api/references?meta=shopper-login:Summary).\nThis token allows access to Shopper API endpoints for guest shoppers only.\n",
787
1090
  "flows": {
788
1091
  "clientCredentials": {
789
1092
  "tokenUrl": "https://{shortCode}.api.commercecloud.salesforce.com/shopper/auth/v1/organizations/{organizationId}/oauth2/token?hint=client_context",