@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,7 +2,8 @@
2
2
  "openapi": "3.0.3",
3
3
  "info": {
4
4
  "title": "Auth Admin",
5
- "version": "1.18.0",
5
+ "description": "[Download API specification](https://developer.salesforce.com/static/commercecloud/commerce-api/auth-admin/auth-admin-oas-v1-public.yaml)\n\n# API Overview\n\nThe SLAS Admin API is a companion to the main [Shopper Login and API Access Service](https://developer.salesforce.com/docs/commerce/commerce-api/references?meta=shopper-login:Summary) (SLAS), which enables secure access to Commerce Cloud’s Shopper APIs. The SLAS Admin API is only used for administration tasks, not for requesting access to the Shopper APIs.\n\n**Important:** Before using this API, follow the instructions in [Authorization for Shopper APIs](https://developer.salesforce.com/docs/commerce/commerce-api/guide/authorization-for-shopper-apis.html) from the Get Started guides. The guide provides a complete set of instructions for setting up a SLAS client.\n\nFor more information, see the [SLAS guides](https://developer.salesforce.com/docs/commerce/commerce-api/guide/slas.html).\n\n## Tenant Id\nIn context of SLAS administration a tenant identifier is used instead of the organization identifier.\n\nA B2C Commerce instance is considered a “tenant” when it's associated with a supporting system, such as the Shopper Login and API Access Service (SLAS). \nA tenant ID begins with a four-character realm ID, followed by an underscore (`_`) and an instance ID.\n\nThese are example tenant IDs for various types of instances:\n\n| Instance Type | Realm ID | Instance ID | Tenant ID |\n| ----------------- | -------- | ----------- | --------- |\n| Staging | bcgl | stg | bcgl_stg |\n| On-demand sandbox | zzte | 053 | zzte_053 |\n| POD sandbox | zzrf | s01 | zzrf_s01 |\n\n## Response Details\n\n### Timeouts\n\nAdmin API requests must respond within 60 seconds. 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## Related APIs\n\n- [Shopper Login (SLAS)](https://developer.salesforce.com/docs/commerce/commerce-api/references/auth?meta=Summary) — Authenticate shoppers and obtain access tokens.",
6
+ "version": "1.19.1",
6
7
  "x-api-type": "Admin",
7
8
  "x-api-family": "Shopper"
8
9
  },
@@ -11,6 +12,7 @@
11
12
  "url": "https://{shortCode}.api.commercecloud.salesforce.com/shopper/auth-admin/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,16 +21,20 @@
19
21
  "paths": {
20
22
  "/tenants/{tenantId}": {
21
23
  "get": {
24
+ "summary": "Retrieve a tenant by tenant ID.",
25
+ "description": "Retrieve a tenant by tenant ID.",
22
26
  "operationId": "retrieveTenant",
23
27
  "parameters": [
24
28
  {
25
29
  "name": "tenantId",
26
30
  "in": "path",
31
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
27
32
  "required": true,
28
33
  "style": "simple",
29
34
  "explode": false,
30
35
  "schema": {
31
36
  "type": "string",
37
+ "example": "zzeu_001, bgvn_dev",
32
38
  "maxLength": 32
33
39
  }
34
40
  }
@@ -40,6 +46,11 @@
40
46
  "application/json": {
41
47
  "schema": {
42
48
  "$ref": "#/components/schemas/Tenant"
49
+ },
50
+ "examples": {
51
+ "Tenant": {
52
+ "$ref": "#/components/examples/Tenant"
53
+ }
43
54
  }
44
55
  }
45
56
  }
@@ -50,6 +61,11 @@
50
61
  "application/json": {
51
62
  "schema": {
52
63
  "$ref": "#/components/schemas/ErrorResponse"
64
+ },
65
+ "examples": {
66
+ "TenantRequestException400": {
67
+ "$ref": "#/components/examples/TenantRequestException400"
68
+ }
53
69
  }
54
70
  }
55
71
  }
@@ -60,6 +76,11 @@
60
76
  "application/json": {
61
77
  "schema": {
62
78
  "$ref": "#/components/schemas/ErrorResponse"
79
+ },
80
+ "examples": {
81
+ "TenantException401": {
82
+ "$ref": "#/components/examples/TenantException401"
83
+ }
63
84
  }
64
85
  }
65
86
  }
@@ -70,6 +91,11 @@
70
91
  "application/json": {
71
92
  "schema": {
72
93
  "$ref": "#/components/schemas/ErrorResponse"
94
+ },
95
+ "examples": {
96
+ "TenantNotFoundException404": {
97
+ "$ref": "#/components/examples/TenantNotFoundException404"
98
+ }
73
99
  }
74
100
  }
75
101
  }
@@ -85,16 +111,20 @@
85
111
  ]
86
112
  },
87
113
  "put": {
114
+ "summary": "Create or update a tenant. Use the request body to provide identification and contact information for the tenant and its associated merchant.",
115
+ "description": "This API is used to create or update a tenant. The tenant ID is the unique identifier for the tenant and is used in all subsequent API calls. The tenant ID must be unique across all tenants in the system.",
88
116
  "operationId": "registerTenant",
89
117
  "parameters": [
90
118
  {
91
119
  "name": "tenantId",
92
120
  "in": "path",
121
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
93
122
  "required": true,
94
123
  "style": "simple",
95
124
  "explode": false,
96
125
  "schema": {
97
126
  "type": "string",
127
+ "example": "zzeu_001, bgvn_dev",
98
128
  "maxLength": 32
99
129
  }
100
130
  }
@@ -104,6 +134,11 @@
104
134
  "application/json": {
105
135
  "schema": {
106
136
  "$ref": "#/components/schemas/TenantDto"
137
+ },
138
+ "examples": {
139
+ "TenantDto": {
140
+ "$ref": "#/components/examples/TenantDto"
141
+ }
107
142
  }
108
143
  }
109
144
  },
@@ -116,6 +151,11 @@
116
151
  "application/json": {
117
152
  "schema": {
118
153
  "$ref": "#/components/schemas/Tenant"
154
+ },
155
+ "examples": {
156
+ "Tenant": {
157
+ "$ref": "#/components/examples/Tenant"
158
+ }
119
159
  }
120
160
  }
121
161
  }
@@ -126,6 +166,11 @@
126
166
  "application/json": {
127
167
  "schema": {
128
168
  "$ref": "#/components/schemas/Tenant"
169
+ },
170
+ "examples": {
171
+ "Tenant": {
172
+ "$ref": "#/components/examples/Tenant"
173
+ }
129
174
  }
130
175
  }
131
176
  }
@@ -136,6 +181,11 @@
136
181
  "application/json": {
137
182
  "schema": {
138
183
  "$ref": "#/components/schemas/ErrorResponse"
184
+ },
185
+ "examples": {
186
+ "TenantUpdateException400": {
187
+ "$ref": "#/components/examples/TenantUpdateException400"
188
+ }
139
189
  }
140
190
  }
141
191
  }
@@ -146,6 +196,11 @@
146
196
  "application/json": {
147
197
  "schema": {
148
198
  "$ref": "#/components/schemas/ErrorResponse"
199
+ },
200
+ "examples": {
201
+ "TenantUpdateException401": {
202
+ "$ref": "#/components/examples/TenantUpdateException401"
203
+ }
149
204
  }
150
205
  }
151
206
  }
@@ -156,6 +211,11 @@
156
211
  "application/json": {
157
212
  "schema": {
158
213
  "$ref": "#/components/schemas/ErrorResponse"
214
+ },
215
+ "examples": {
216
+ "TenantNotFoundException404": {
217
+ "$ref": "#/components/examples/TenantNotFoundException404"
218
+ }
159
219
  }
160
220
  }
161
221
  }
@@ -166,6 +226,116 @@
166
226
  "application/json": {
167
227
  "schema": {
168
228
  "$ref": "#/components/schemas/ErrorResponse"
229
+ },
230
+ "examples": {
231
+ "TenantAlreadyExistsException409": {
232
+ "$ref": "#/components/examples/TenantAlreadyExistsException409"
233
+ }
234
+ }
235
+ }
236
+ }
237
+ }
238
+ },
239
+ "security": [
240
+ {
241
+ "BearerToken": [
242
+ "SLAS_SERVICE_ADMIN",
243
+ "SLAS_ORGANIZATION_ADMIN"
244
+ ]
245
+ }
246
+ ]
247
+ }
248
+ },
249
+ "/tenants/{tenantId}/batch-logout": {
250
+ "post": {
251
+ "summary": "Log out multiple shoppers in a single request by revoking active refresh and access tokens for each shopper and all their sessions.",
252
+ "description": "For each valid shopper in the request, this operation revokes the shopper's active refresh tokens and inactivates their active access tokens issued before the call, across all sessions. As a result, the shopper must log in again with their existing password (this action doesn't force a password change). For more information, see [Log Out Multiple Shoppers](https://developer.salesforce.com/docs/commerce/sfra/guide/slas-batch-logout.html).\n",
253
+ "operationId": "batchLogout",
254
+ "parameters": [
255
+ {
256
+ "name": "tenantId",
257
+ "in": "path",
258
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
259
+ "required": true,
260
+ "style": "simple",
261
+ "explode": false,
262
+ "schema": {
263
+ "type": "string",
264
+ "example": "zzeu_001, bgvn_dev",
265
+ "maxLength": 32
266
+ }
267
+ },
268
+ {
269
+ "name": "channelId",
270
+ "in": "query",
271
+ "description": "The identifier of the sales channel (site).",
272
+ "required": true,
273
+ "style": "form",
274
+ "explode": true,
275
+ "schema": {
276
+ "type": "string",
277
+ "example": "SiteGenesis",
278
+ "maxLength": 100
279
+ }
280
+ }
281
+ ],
282
+ "requestBody": {
283
+ "content": {
284
+ "application/json": {
285
+ "schema": {
286
+ "$ref": "#/components/schemas/BatchLogoutRequest"
287
+ },
288
+ "examples": {
289
+ "BatchLogoutRequest": {
290
+ "$ref": "#/components/examples/BatchLogoutRequest"
291
+ }
292
+ }
293
+ }
294
+ },
295
+ "required": true
296
+ },
297
+ "responses": {
298
+ "200": {
299
+ "description": "The batch logout request was processed successfully. The detailed message in response body will indicate which shoppers were actually logged out and which ones failed and why.",
300
+ "content": {
301
+ "application/json": {
302
+ "schema": {
303
+ "$ref": "#/components/schemas/BatchLogoutResponse"
304
+ },
305
+ "examples": {
306
+ "BatchLogoutResponse": {
307
+ "$ref": "#/components/examples/BatchLogoutResponse"
308
+ }
309
+ }
310
+ }
311
+ }
312
+ },
313
+ "400": {
314
+ "description": "The request is badly formatted or constructed. If syntactically the request was correct but the loginIds provided did not result in shoppers getting logged out, the result will still be a 200 with details in the response body.",
315
+ "content": {
316
+ "application/json": {
317
+ "schema": {
318
+ "$ref": "#/components/schemas/ErrorResponse"
319
+ },
320
+ "examples": {
321
+ "BatchLogoutRequestException400": {
322
+ "$ref": "#/components/examples/BatchLogoutRequestException400"
323
+ }
324
+ }
325
+ }
326
+ }
327
+ },
328
+ "401": {
329
+ "description": "Incorrect Authorization provided.",
330
+ "content": {
331
+ "application/json": {
332
+ "schema": {
333
+ "$ref": "#/components/schemas/ErrorResponse"
334
+ },
335
+ "examples": {
336
+ "BatchLogoutTenantException401": {
337
+ "$ref": "#/components/examples/BatchLogoutTenantException401"
338
+ }
169
339
  }
170
340
  }
171
341
  }
@@ -183,16 +353,20 @@
183
353
  },
184
354
  "/tenants/{tenantId}/clients": {
185
355
  "get": {
356
+ "summary": "Retrieve/Get all tenant clients.",
357
+ "description": "Retrieve a list of SLAS clients associated with the tenant_id.",
186
358
  "operationId": "retrieveClients",
187
359
  "parameters": [
188
360
  {
189
361
  "name": "tenantId",
190
362
  "in": "path",
363
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
191
364
  "required": true,
192
365
  "style": "simple",
193
366
  "explode": false,
194
367
  "schema": {
195
368
  "type": "string",
369
+ "example": "zzeu_001, bgvn_dev",
196
370
  "maxLength": 32
197
371
  }
198
372
  }
@@ -204,6 +378,11 @@
204
378
  "application/json": {
205
379
  "schema": {
206
380
  "$ref": "#/components/schemas/ClientListResponse"
381
+ },
382
+ "examples": {
383
+ "ClientListResponse": {
384
+ "$ref": "#/components/examples/ClientListResponse"
385
+ }
207
386
  }
208
387
  }
209
388
  }
@@ -214,6 +393,11 @@
214
393
  "application/json": {
215
394
  "schema": {
216
395
  "$ref": "#/components/schemas/ErrorResponse"
396
+ },
397
+ "examples": {
398
+ "ClientTenantException401": {
399
+ "$ref": "#/components/examples/ClientTenantException401"
400
+ }
217
401
  }
218
402
  }
219
403
  }
@@ -224,6 +408,11 @@
224
408
  "application/json": {
225
409
  "schema": {
226
410
  "$ref": "#/components/schemas/ErrorResponse"
411
+ },
412
+ "examples": {
413
+ "ClientNotFoundException404": {
414
+ "$ref": "#/components/examples/ClientNotFoundException404"
415
+ }
227
416
  }
228
417
  }
229
418
  }
@@ -240,27 +429,33 @@
240
429
  },
241
430
  "/tenants/{tenantId}/clients/{clientId}": {
242
431
  "get": {
432
+ "summary": "Retrieve a client.",
433
+ "description": "Retrieve a client by client ID. The client ID is the unique identifier for the client and is used in all subsequent API calls. The client ID must be unique across all tenants in the system.",
243
434
  "operationId": "retrieveClient",
244
435
  "parameters": [
245
436
  {
246
437
  "name": "clientId",
247
438
  "in": "path",
439
+ "description": "The SLAS client identifier.",
248
440
  "required": true,
249
441
  "style": "simple",
250
442
  "explode": false,
251
443
  "schema": {
252
444
  "type": "string",
445
+ "example": "876aff68-6ee5-474f-932d-c90c1d79bcf7",
253
446
  "maxLength": 36
254
447
  }
255
448
  },
256
449
  {
257
450
  "name": "tenantId",
258
451
  "in": "path",
452
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
259
453
  "required": true,
260
454
  "style": "simple",
261
455
  "explode": false,
262
456
  "schema": {
263
457
  "type": "string",
458
+ "example": "zzeu_001, bgvn_dev",
264
459
  "maxLength": 32
265
460
  }
266
461
  }
@@ -272,6 +467,11 @@
272
467
  "application/json": {
273
468
  "schema": {
274
469
  "$ref": "#/components/schemas/Client"
470
+ },
471
+ "examples": {
472
+ "Client": {
473
+ "$ref": "#/components/examples/Client"
474
+ }
275
475
  }
276
476
  }
277
477
  }
@@ -282,6 +482,11 @@
282
482
  "application/json": {
283
483
  "schema": {
284
484
  "$ref": "#/components/schemas/ErrorResponse"
485
+ },
486
+ "examples": {
487
+ "ClientRequestException400": {
488
+ "$ref": "#/components/examples/ClientRequestException400"
489
+ }
285
490
  }
286
491
  }
287
492
  }
@@ -292,6 +497,11 @@
292
497
  "application/json": {
293
498
  "schema": {
294
499
  "$ref": "#/components/schemas/ErrorResponse"
500
+ },
501
+ "examples": {
502
+ "ClientTenantException401": {
503
+ "$ref": "#/components/examples/ClientTenantException401"
504
+ }
295
505
  }
296
506
  }
297
507
  }
@@ -302,6 +512,11 @@
302
512
  "application/json": {
303
513
  "schema": {
304
514
  "$ref": "#/components/schemas/ErrorResponse"
515
+ },
516
+ "examples": {
517
+ "ClientNotFoundException404": {
518
+ "$ref": "#/components/examples/ClientNotFoundException404"
519
+ }
305
520
  }
306
521
  }
307
522
  }
@@ -316,27 +531,33 @@
316
531
  ]
317
532
  },
318
533
  "put": {
534
+ "summary": "Create or update a client.",
535
+ "description": "It is strongly advised to refrain from using the “sfcc-shopper-context.rw” scope with a PUBLIC Client because it offers fewer protections and could potentially enable malicious actors to access Shopper Context enabled promotions. It is highly recommended to use “sfcc-shopper-context.rw” scope with a private client.",
319
536
  "operationId": "registerClient",
320
537
  "parameters": [
321
538
  {
322
539
  "name": "clientId",
323
540
  "in": "path",
541
+ "description": "The SLAS client identifier.",
324
542
  "required": true,
325
543
  "style": "simple",
326
544
  "explode": false,
327
545
  "schema": {
328
546
  "type": "string",
547
+ "example": "876aff68-6ee5-474f-932d-c90c1d79bcf7",
329
548
  "maxLength": 36
330
549
  }
331
550
  },
332
551
  {
333
552
  "name": "tenantId",
334
553
  "in": "path",
554
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
335
555
  "required": true,
336
556
  "style": "simple",
337
557
  "explode": false,
338
558
  "schema": {
339
559
  "type": "string",
560
+ "example": "zzeu_001, bgvn_dev",
340
561
  "maxLength": 32
341
562
  }
342
563
  }
@@ -346,6 +567,11 @@
346
567
  "application/json": {
347
568
  "schema": {
348
569
  "$ref": "#/components/schemas/ClientRequest"
570
+ },
571
+ "examples": {
572
+ "ClientRequest": {
573
+ "$ref": "#/components/examples/ClientRequest"
574
+ }
349
575
  }
350
576
  }
351
577
  },
@@ -358,6 +584,11 @@
358
584
  "application/json": {
359
585
  "schema": {
360
586
  "$ref": "#/components/schemas/Client"
587
+ },
588
+ "examples": {
589
+ "ClientRequest": {
590
+ "$ref": "#/components/examples/ClientWithSecret"
591
+ }
361
592
  }
362
593
  }
363
594
  }
@@ -368,6 +599,11 @@
368
599
  "application/json": {
369
600
  "schema": {
370
601
  "$ref": "#/components/schemas/Client"
602
+ },
603
+ "examples": {
604
+ "ClientRequest": {
605
+ "$ref": "#/components/examples/ClientWithSecret"
606
+ }
371
607
  }
372
608
  }
373
609
  }
@@ -378,6 +614,11 @@
378
614
  "application/json": {
379
615
  "schema": {
380
616
  "$ref": "#/components/schemas/ErrorResponse"
617
+ },
618
+ "examples": {
619
+ "ClientRequestException400": {
620
+ "$ref": "#/components/examples/ClientRequestException400"
621
+ }
381
622
  }
382
623
  }
383
624
  }
@@ -388,6 +629,11 @@
388
629
  "application/json": {
389
630
  "schema": {
390
631
  "$ref": "#/components/schemas/ErrorResponse"
632
+ },
633
+ "examples": {
634
+ "ClientTenantException401": {
635
+ "$ref": "#/components/examples/ClientTenantException401"
636
+ }
391
637
  }
392
638
  }
393
639
  }
@@ -398,6 +644,11 @@
398
644
  "application/json": {
399
645
  "schema": {
400
646
  "$ref": "#/components/schemas/ErrorResponse"
647
+ },
648
+ "examples": {
649
+ "ClientNotFoundException404": {
650
+ "$ref": "#/components/examples/ClientNotFoundException404"
651
+ }
401
652
  }
402
653
  }
403
654
  }
@@ -408,6 +659,11 @@
408
659
  "application/json": {
409
660
  "schema": {
410
661
  "$ref": "#/components/schemas/ErrorResponse"
662
+ },
663
+ "examples": {
664
+ "ClientConflictException409": {
665
+ "$ref": "#/components/examples/ClientConflictException409"
666
+ }
411
667
  }
412
668
  }
413
669
  }
@@ -423,27 +679,33 @@
423
679
  ]
424
680
  },
425
681
  "delete": {
682
+ "summary": "Delete a client.",
683
+ "description": "Delete a client by client ID.",
426
684
  "operationId": "deleteClient",
427
685
  "parameters": [
428
686
  {
429
687
  "name": "clientId",
430
688
  "in": "path",
689
+ "description": "The SLAS client identifier.",
431
690
  "required": true,
432
691
  "style": "simple",
433
692
  "explode": false,
434
693
  "schema": {
435
694
  "type": "string",
695
+ "example": "876aff68-6ee5-474f-932d-c90c1d79bcf7",
436
696
  "maxLength": 36
437
697
  }
438
698
  },
439
699
  {
440
700
  "name": "tenantId",
441
701
  "in": "path",
702
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
442
703
  "required": true,
443
704
  "style": "simple",
444
705
  "explode": false,
445
706
  "schema": {
446
707
  "type": "string",
708
+ "example": "zzeu_001, bgvn_dev",
447
709
  "maxLength": 32
448
710
  }
449
711
  }
@@ -458,6 +720,11 @@
458
720
  "application/json": {
459
721
  "schema": {
460
722
  "$ref": "#/components/schemas/ErrorResponse"
723
+ },
724
+ "examples": {
725
+ "ClientRequestException400": {
726
+ "$ref": "#/components/examples/ClientRequestException400"
727
+ }
461
728
  }
462
729
  }
463
730
  }
@@ -468,6 +735,11 @@
468
735
  "application/json": {
469
736
  "schema": {
470
737
  "$ref": "#/components/schemas/ErrorResponse"
738
+ },
739
+ "examples": {
740
+ "ClientTenantException401": {
741
+ "$ref": "#/components/examples/ClientTenantException401"
742
+ }
471
743
  }
472
744
  }
473
745
  }
@@ -478,6 +750,11 @@
478
750
  "application/json": {
479
751
  "schema": {
480
752
  "$ref": "#/components/schemas/ErrorResponse"
753
+ },
754
+ "examples": {
755
+ "ClientNotFoundException404": {
756
+ "$ref": "#/components/examples/ClientNotFoundException404"
757
+ }
481
758
  }
482
759
  }
483
760
  }
@@ -495,60 +772,72 @@
495
772
  },
496
773
  "/tenants/{tenantId}/clients/{clientId}/password-action-templates": {
497
774
  "get": {
775
+ "summary": "Retrieve/get a password action template.",
776
+ "description": "Retrieve a password action template by client ID.",
498
777
  "operationId": "retrievePwdActionTemplate",
499
778
  "parameters": [
500
779
  {
501
780
  "name": "clientId",
502
781
  "in": "path",
782
+ "description": "The SLAS client identifier.",
503
783
  "required": true,
504
784
  "style": "simple",
505
785
  "explode": false,
506
786
  "schema": {
507
787
  "type": "string",
788
+ "example": "876aff68-6ee5-474f-932d-c90c1d79bcf7",
508
789
  "maxLength": 36
509
790
  }
510
791
  },
511
792
  {
512
793
  "name": "tenantId",
513
794
  "in": "path",
795
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
514
796
  "required": true,
515
797
  "style": "simple",
516
798
  "explode": false,
517
799
  "schema": {
518
800
  "type": "string",
801
+ "example": "zzeu_001, bgvn_dev",
519
802
  "maxLength": 32
520
803
  }
521
804
  },
522
805
  {
523
806
  "name": "channelId",
524
807
  "in": "query",
808
+ "description": "The identifier of the sales channel (site).",
525
809
  "required": true,
526
810
  "style": "form",
527
811
  "explode": true,
528
812
  "schema": {
529
813
  "type": "string",
814
+ "example": "SiteGenesis",
530
815
  "maxLength": 100
531
816
  }
532
817
  },
533
818
  {
534
819
  "name": "actionType",
535
820
  "in": "query",
821
+ "description": "The type of password action (reset or create).",
536
822
  "required": true,
537
823
  "style": "form",
538
824
  "explode": true,
539
825
  "schema": {
540
826
  "type": "string",
827
+ "description": "Describes the type of action that the password action template will be used for. \nHere are the actions that each enumerated string refers to:\n - `PWDLESS_LOGIN`: Passwordless login\n - `PWD_RESET_ACTION`: Password reset\n - `PWD_RESET_CROSS_DEVICE_ACTION`: Password reset for cross-device flow",
541
828
  "enum": [
542
829
  "PWDLESS_LOGIN",
543
830
  "PWD_RESET_ACTION",
544
831
  "PWD_RESET_CROSS_DEVICE_ACTION"
545
832
  ],
833
+ "example": "PWDLESS_LOGIN",
546
834
  "maxLength": 36
547
835
  }
548
836
  },
549
837
  {
550
838
  "name": "templateType",
551
839
  "in": "query",
840
+ "description": "The type of email template.",
552
841
  "required": true,
553
842
  "style": "form",
554
843
  "explode": true,
@@ -558,6 +847,7 @@
558
847
  "EMAIL",
559
848
  "SMS"
560
849
  ],
850
+ "example": "EMAIL",
561
851
  "maxLength": 8
562
852
  }
563
853
  }
@@ -569,6 +859,11 @@
569
859
  "application/json": {
570
860
  "schema": {
571
861
  "$ref": "#/components/schemas/PasswordActionTemplate"
862
+ },
863
+ "examples": {
864
+ "PasswordActionTemplate": {
865
+ "$ref": "#/components/examples/PasswordActionTemplate"
866
+ }
572
867
  }
573
868
  }
574
869
  }
@@ -579,6 +874,11 @@
579
874
  "application/json": {
580
875
  "schema": {
581
876
  "$ref": "#/components/schemas/ErrorResponse"
877
+ },
878
+ "examples": {
879
+ "BadRequestException400": {
880
+ "$ref": "#/components/examples/BadRequestException400"
881
+ }
582
882
  }
583
883
  }
584
884
  }
@@ -589,6 +889,11 @@
589
889
  "application/json": {
590
890
  "schema": {
591
891
  "$ref": "#/components/schemas/ErrorResponse"
892
+ },
893
+ "examples": {
894
+ "ClientTenantException401": {
895
+ "$ref": "#/components/examples/ClientTenantException401"
896
+ }
592
897
  }
593
898
  }
594
899
  }
@@ -599,6 +904,11 @@
599
904
  "application/json": {
600
905
  "schema": {
601
906
  "$ref": "#/components/schemas/ErrorResponse"
907
+ },
908
+ "examples": {
909
+ "PasswordActionTemplateNotFoundException404": {
910
+ "$ref": "#/components/examples/PasswordActionTemplateNotFoundException404"
911
+ }
602
912
  }
603
913
  }
604
914
  }
@@ -614,27 +924,33 @@
614
924
  ]
615
925
  },
616
926
  "put": {
927
+ "summary": "Create or update a password action template.",
928
+ "description": "Create or update a password action template by client ID.",
617
929
  "operationId": "registerPwdActionTemplate",
618
930
  "parameters": [
619
931
  {
620
932
  "name": "clientId",
621
933
  "in": "path",
934
+ "description": "The SLAS client identifier.",
622
935
  "required": true,
623
936
  "style": "simple",
624
937
  "explode": false,
625
938
  "schema": {
626
939
  "type": "string",
940
+ "example": "876aff68-6ee5-474f-932d-c90c1d79bcf7",
627
941
  "maxLength": 36
628
942
  }
629
943
  },
630
944
  {
631
945
  "name": "tenantId",
632
946
  "in": "path",
947
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
633
948
  "required": true,
634
949
  "style": "simple",
635
950
  "explode": false,
636
951
  "schema": {
637
952
  "type": "string",
953
+ "example": "zzeu_001, bgvn_dev",
638
954
  "maxLength": 32
639
955
  }
640
956
  }
@@ -644,6 +960,11 @@
644
960
  "application/json": {
645
961
  "schema": {
646
962
  "$ref": "#/components/schemas/PasswordActionTemplate"
963
+ },
964
+ "examples": {
965
+ "PasswordActionTemplateRequest": {
966
+ "$ref": "#/components/examples/PasswordActionTemplateRequest"
967
+ }
647
968
  }
648
969
  }
649
970
  },
@@ -656,6 +977,11 @@
656
977
  "application/json": {
657
978
  "schema": {
658
979
  "$ref": "#/components/schemas/PasswordActionTemplate"
980
+ },
981
+ "examples": {
982
+ "PasswordActionTemplate": {
983
+ "$ref": "#/components/examples/PasswordActionTemplate"
984
+ }
659
985
  }
660
986
  }
661
987
  }
@@ -666,6 +992,11 @@
666
992
  "application/json": {
667
993
  "schema": {
668
994
  "$ref": "#/components/schemas/PasswordActionTemplate"
995
+ },
996
+ "examples": {
997
+ "PasswordActionTemplate": {
998
+ "$ref": "#/components/examples/PasswordActionTemplate"
999
+ }
669
1000
  }
670
1001
  }
671
1002
  }
@@ -676,6 +1007,11 @@
676
1007
  "application/json": {
677
1008
  "schema": {
678
1009
  "$ref": "#/components/schemas/ErrorResponse"
1010
+ },
1011
+ "examples": {
1012
+ "PasswordActionTemplateCreateException400": {
1013
+ "$ref": "#/components/examples/PasswordActionTemplateCreateException400"
1014
+ }
679
1015
  }
680
1016
  }
681
1017
  }
@@ -686,6 +1022,11 @@
686
1022
  "application/json": {
687
1023
  "schema": {
688
1024
  "$ref": "#/components/schemas/ErrorResponse"
1025
+ },
1026
+ "examples": {
1027
+ "ClientTenantException401": {
1028
+ "$ref": "#/components/examples/ClientTenantException401"
1029
+ }
689
1030
  }
690
1031
  }
691
1032
  }
@@ -696,6 +1037,11 @@
696
1037
  "application/json": {
697
1038
  "schema": {
698
1039
  "$ref": "#/components/schemas/ErrorResponse"
1040
+ },
1041
+ "examples": {
1042
+ "PasswordActionTemplateNotFoundException404": {
1043
+ "$ref": "#/components/examples/PasswordActionTemplateNotFoundException404"
1044
+ }
699
1045
  }
700
1046
  }
701
1047
  }
@@ -711,60 +1057,72 @@
711
1057
  ]
712
1058
  },
713
1059
  "delete": {
1060
+ "summary": "Delete a password action template.",
1061
+ "description": "Delete a password action template.",
714
1062
  "operationId": "deletePwdActionTemplate",
715
1063
  "parameters": [
716
1064
  {
717
1065
  "name": "clientId",
718
1066
  "in": "path",
1067
+ "description": "The SLAS client identifier.",
719
1068
  "required": true,
720
1069
  "style": "simple",
721
1070
  "explode": false,
722
1071
  "schema": {
723
1072
  "type": "string",
1073
+ "example": "876aff68-6ee5-474f-932d-c90c1d79bcf7",
724
1074
  "maxLength": 36
725
1075
  }
726
1076
  },
727
1077
  {
728
1078
  "name": "tenantId",
729
1079
  "in": "path",
1080
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
730
1081
  "required": true,
731
1082
  "style": "simple",
732
1083
  "explode": false,
733
1084
  "schema": {
734
1085
  "type": "string",
1086
+ "example": "zzeu_001, bgvn_dev",
735
1087
  "maxLength": 32
736
1088
  }
737
1089
  },
738
1090
  {
739
1091
  "name": "channelId",
740
1092
  "in": "query",
1093
+ "description": "The identifier of the sales channel (site).",
741
1094
  "required": true,
742
1095
  "style": "form",
743
1096
  "explode": true,
744
1097
  "schema": {
745
1098
  "type": "string",
1099
+ "example": "SiteGenesis",
746
1100
  "maxLength": 100
747
1101
  }
748
1102
  },
749
1103
  {
750
1104
  "name": "actionType",
751
1105
  "in": "query",
1106
+ "description": "The type of password action (reset or create).",
752
1107
  "required": true,
753
1108
  "style": "form",
754
1109
  "explode": true,
755
1110
  "schema": {
756
1111
  "type": "string",
1112
+ "description": "Describes the type of action that the password action template will be used for. \nHere are the actions that each enumerated string refers to:\n - `PWDLESS_LOGIN`: Passwordless login\n - `PWD_RESET_ACTION`: Password reset\n - `PWD_RESET_CROSS_DEVICE_ACTION`: Password reset for cross-device flow",
757
1113
  "enum": [
758
1114
  "PWDLESS_LOGIN",
759
1115
  "PWD_RESET_ACTION",
760
1116
  "PWD_RESET_CROSS_DEVICE_ACTION"
761
1117
  ],
1118
+ "example": "PWDLESS_LOGIN",
762
1119
  "maxLength": 36
763
1120
  }
764
1121
  },
765
1122
  {
766
1123
  "name": "templateType",
767
1124
  "in": "query",
1125
+ "description": "The type of email template.",
768
1126
  "required": true,
769
1127
  "style": "form",
770
1128
  "explode": true,
@@ -774,17 +1132,20 @@
774
1132
  "EMAIL",
775
1133
  "SMS"
776
1134
  ],
1135
+ "example": "EMAIL",
777
1136
  "maxLength": 8
778
1137
  }
779
1138
  },
780
1139
  {
781
1140
  "name": "locale",
782
1141
  "in": "query",
1142
+ "description": "A descriptor for a geographical region by both a language and country code.",
783
1143
  "required": true,
784
1144
  "style": "form",
785
1145
  "explode": true,
786
1146
  "schema": {
787
1147
  "type": "string",
1148
+ "example": "en-US",
788
1149
  "pattern": "^[a-z][a-z]-[A-Z][A-Z]$"
789
1150
  }
790
1151
  }
@@ -799,6 +1160,11 @@
799
1160
  "application/json": {
800
1161
  "schema": {
801
1162
  "$ref": "#/components/schemas/ErrorResponse"
1163
+ },
1164
+ "examples": {
1165
+ "PasswordActionTemplateDeleteException400": {
1166
+ "$ref": "#/components/examples/PasswordActionTemplateDeleteException400"
1167
+ }
802
1168
  }
803
1169
  }
804
1170
  }
@@ -809,6 +1175,11 @@
809
1175
  "application/json": {
810
1176
  "schema": {
811
1177
  "$ref": "#/components/schemas/ErrorResponse"
1178
+ },
1179
+ "examples": {
1180
+ "ClientTenantException401": {
1181
+ "$ref": "#/components/examples/ClientTenantException401"
1182
+ }
812
1183
  }
813
1184
  }
814
1185
  }
@@ -819,6 +1190,11 @@
819
1190
  "application/json": {
820
1191
  "schema": {
821
1192
  "$ref": "#/components/schemas/ErrorResponse"
1193
+ },
1194
+ "examples": {
1195
+ "PasswordActionTemplateNotFoundException404": {
1196
+ "$ref": "#/components/examples/PasswordActionTemplateNotFoundException404"
1197
+ }
822
1198
  }
823
1199
  }
824
1200
  }
@@ -836,16 +1212,20 @@
836
1212
  },
837
1213
  "/tenants/{tenantId}/idps": {
838
1214
  "get": {
1215
+ "summary": "Retrieve/Get all tenant identity providers.",
1216
+ "description": "Retrieve a list of SLAS identity providers associated with the tenant_id.",
839
1217
  "operationId": "retrieveIdentityProviders",
840
1218
  "parameters": [
841
1219
  {
842
1220
  "name": "tenantId",
843
1221
  "in": "path",
1222
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
844
1223
  "required": true,
845
1224
  "style": "simple",
846
1225
  "explode": false,
847
1226
  "schema": {
848
1227
  "type": "string",
1228
+ "example": "zzeu_001, bgvn_dev",
849
1229
  "maxLength": 32
850
1230
  }
851
1231
  }
@@ -857,6 +1237,11 @@
857
1237
  "application/json": {
858
1238
  "schema": {
859
1239
  "$ref": "#/components/schemas/IdpListResponse"
1240
+ },
1241
+ "examples": {
1242
+ "IdpListResponse": {
1243
+ "$ref": "#/components/examples/IdpListResponse"
1244
+ }
860
1245
  }
861
1246
  }
862
1247
  }
@@ -867,6 +1252,11 @@
867
1252
  "application/json": {
868
1253
  "schema": {
869
1254
  "$ref": "#/components/schemas/ErrorResponse"
1255
+ },
1256
+ "examples": {
1257
+ "IdpRequestException400": {
1258
+ "$ref": "#/components/examples/IdpRequestException400"
1259
+ }
870
1260
  }
871
1261
  }
872
1262
  }
@@ -877,6 +1267,11 @@
877
1267
  "application/json": {
878
1268
  "schema": {
879
1269
  "$ref": "#/components/schemas/ErrorResponse"
1270
+ },
1271
+ "examples": {
1272
+ "IdpTenantException401": {
1273
+ "$ref": "#/components/examples/IdpTenantException401"
1274
+ }
880
1275
  }
881
1276
  }
882
1277
  }
@@ -887,6 +1282,11 @@
887
1282
  "application/json": {
888
1283
  "schema": {
889
1284
  "$ref": "#/components/schemas/ErrorResponse"
1285
+ },
1286
+ "examples": {
1287
+ "IdpNotFoundException404": {
1288
+ "$ref": "#/components/examples/IdpNotFoundException404"
1289
+ }
890
1290
  }
891
1291
  }
892
1292
  }
@@ -903,27 +1303,33 @@
903
1303
  },
904
1304
  "/tenants/{tenantId}/idps/{name}": {
905
1305
  "get": {
1306
+ "summary": "Retrieve/Get a specific identity provider.",
1307
+ "description": "Retrieve a specific identity provider by name.",
906
1308
  "operationId": "retrieveIdentityProvider",
907
1309
  "parameters": [
908
1310
  {
909
1311
  "name": "name",
910
1312
  "in": "path",
1313
+ "description": "The name of the identity provider.",
911
1314
  "required": true,
912
1315
  "style": "simple",
913
1316
  "explode": false,
914
1317
  "schema": {
915
1318
  "type": "string",
1319
+ "example": "Name",
916
1320
  "maxLength": 256
917
1321
  }
918
1322
  },
919
1323
  {
920
1324
  "name": "tenantId",
921
1325
  "in": "path",
1326
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
922
1327
  "required": true,
923
1328
  "style": "simple",
924
1329
  "explode": false,
925
1330
  "schema": {
926
1331
  "type": "string",
1332
+ "example": "zzeu_001, bgvn_dev",
927
1333
  "maxLength": 32
928
1334
  }
929
1335
  }
@@ -935,6 +1341,11 @@
935
1341
  "application/json": {
936
1342
  "schema": {
937
1343
  "$ref": "#/components/schemas/IdentityProvider"
1344
+ },
1345
+ "examples": {
1346
+ "IdentityProvider": {
1347
+ "$ref": "#/components/examples/IdentityProvider"
1348
+ }
938
1349
  }
939
1350
  }
940
1351
  }
@@ -945,6 +1356,11 @@
945
1356
  "application/json": {
946
1357
  "schema": {
947
1358
  "$ref": "#/components/schemas/ErrorResponse"
1359
+ },
1360
+ "examples": {
1361
+ "IdpRequestException400": {
1362
+ "$ref": "#/components/examples/IdpRequestException400"
1363
+ }
948
1364
  }
949
1365
  }
950
1366
  }
@@ -955,6 +1371,11 @@
955
1371
  "application/json": {
956
1372
  "schema": {
957
1373
  "$ref": "#/components/schemas/ErrorResponse"
1374
+ },
1375
+ "examples": {
1376
+ "IdpTenantException401": {
1377
+ "$ref": "#/components/examples/IdpTenantException401"
1378
+ }
958
1379
  }
959
1380
  }
960
1381
  }
@@ -965,6 +1386,11 @@
965
1386
  "application/json": {
966
1387
  "schema": {
967
1388
  "$ref": "#/components/schemas/ErrorResponse"
1389
+ },
1390
+ "examples": {
1391
+ "IdpNotFoundException404": {
1392
+ "$ref": "#/components/examples/IdpNotFoundException404"
1393
+ }
968
1394
  }
969
1395
  }
970
1396
  }
@@ -980,27 +1406,33 @@
980
1406
  ]
981
1407
  },
982
1408
  "put": {
1409
+ "summary": "Create or update an identity provider.",
1410
+ "description": "Create or update an identity provider by name.",
983
1411
  "operationId": "registerIdentityProvider",
984
1412
  "parameters": [
985
1413
  {
986
1414
  "name": "name",
987
1415
  "in": "path",
1416
+ "description": "The name of the identity provider.",
988
1417
  "required": true,
989
1418
  "style": "simple",
990
1419
  "explode": false,
991
1420
  "schema": {
992
1421
  "type": "string",
1422
+ "example": "Name",
993
1423
  "maxLength": 256
994
1424
  }
995
1425
  },
996
1426
  {
997
1427
  "name": "tenantId",
998
1428
  "in": "path",
1429
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
999
1430
  "required": true,
1000
1431
  "style": "simple",
1001
1432
  "explode": false,
1002
1433
  "schema": {
1003
1434
  "type": "string",
1435
+ "example": "zzeu_001, bgvn_dev",
1004
1436
  "maxLength": 32
1005
1437
  }
1006
1438
  }
@@ -1010,6 +1442,11 @@
1010
1442
  "application/json": {
1011
1443
  "schema": {
1012
1444
  "$ref": "#/components/schemas/IdentityProvider"
1445
+ },
1446
+ "examples": {
1447
+ "IdentityProvider": {
1448
+ "$ref": "#/components/examples/IdentityProvider"
1449
+ }
1013
1450
  }
1014
1451
  }
1015
1452
  },
@@ -1022,6 +1459,11 @@
1022
1459
  "application/json": {
1023
1460
  "schema": {
1024
1461
  "$ref": "#/components/schemas/IdentityProviderResponse"
1462
+ },
1463
+ "examples": {
1464
+ "IdpProviderResponse": {
1465
+ "$ref": "#/components/examples/IdpProviderResponse"
1466
+ }
1025
1467
  }
1026
1468
  }
1027
1469
  }
@@ -1032,6 +1474,11 @@
1032
1474
  "application/json": {
1033
1475
  "schema": {
1034
1476
  "$ref": "#/components/schemas/IdentityProviderResponse"
1477
+ },
1478
+ "examples": {
1479
+ "IdpProviderResponse": {
1480
+ "$ref": "#/components/examples/IdpProviderResponse"
1481
+ }
1035
1482
  }
1036
1483
  }
1037
1484
  }
@@ -1042,6 +1489,11 @@
1042
1489
  "application/json": {
1043
1490
  "schema": {
1044
1491
  "$ref": "#/components/schemas/ErrorResponse"
1492
+ },
1493
+ "examples": {
1494
+ "IdpRequestException400": {
1495
+ "$ref": "#/components/examples/IdpRequestException400"
1496
+ }
1045
1497
  }
1046
1498
  }
1047
1499
  }
@@ -1052,6 +1504,11 @@
1052
1504
  "application/json": {
1053
1505
  "schema": {
1054
1506
  "$ref": "#/components/schemas/ErrorResponse"
1507
+ },
1508
+ "examples": {
1509
+ "IdpTenantException401": {
1510
+ "$ref": "#/components/examples/IdpTenantException401"
1511
+ }
1055
1512
  }
1056
1513
  }
1057
1514
  }
@@ -1062,6 +1519,11 @@
1062
1519
  "application/json": {
1063
1520
  "schema": {
1064
1521
  "$ref": "#/components/schemas/ErrorResponse"
1522
+ },
1523
+ "examples": {
1524
+ "IdpNotFoundException404": {
1525
+ "$ref": "#/components/examples/IdpNotFoundException404"
1526
+ }
1065
1527
  }
1066
1528
  }
1067
1529
  }
@@ -1072,6 +1534,11 @@
1072
1534
  "application/json": {
1073
1535
  "schema": {
1074
1536
  "$ref": "#/components/schemas/ErrorResponse"
1537
+ },
1538
+ "examples": {
1539
+ "IdpConflictException409": {
1540
+ "$ref": "#/components/examples/IdpConflictException409"
1541
+ }
1075
1542
  }
1076
1543
  }
1077
1544
  }
@@ -1087,27 +1554,33 @@
1087
1554
  ]
1088
1555
  },
1089
1556
  "delete": {
1557
+ "summary": "Delete an identity provider.",
1558
+ "description": "Delete an identity provider by name.",
1090
1559
  "operationId": "deleteIdentityProvider",
1091
1560
  "parameters": [
1092
1561
  {
1093
1562
  "name": "name",
1094
1563
  "in": "path",
1564
+ "description": "The name of the identity provider.",
1095
1565
  "required": true,
1096
1566
  "style": "simple",
1097
1567
  "explode": false,
1098
1568
  "schema": {
1099
1569
  "type": "string",
1570
+ "example": "Name",
1100
1571
  "maxLength": 256
1101
1572
  }
1102
1573
  },
1103
1574
  {
1104
1575
  "name": "tenantId",
1105
1576
  "in": "path",
1577
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
1106
1578
  "required": true,
1107
1579
  "style": "simple",
1108
1580
  "explode": false,
1109
1581
  "schema": {
1110
1582
  "type": "string",
1583
+ "example": "zzeu_001, bgvn_dev",
1111
1584
  "maxLength": 32
1112
1585
  }
1113
1586
  }
@@ -1122,6 +1595,11 @@
1122
1595
  "application/json": {
1123
1596
  "schema": {
1124
1597
  "$ref": "#/components/schemas/ErrorResponse"
1598
+ },
1599
+ "examples": {
1600
+ "IdpRequestException400": {
1601
+ "$ref": "#/components/examples/IdpRequestException400"
1602
+ }
1125
1603
  }
1126
1604
  }
1127
1605
  }
@@ -1132,6 +1610,11 @@
1132
1610
  "application/json": {
1133
1611
  "schema": {
1134
1612
  "$ref": "#/components/schemas/ErrorResponse"
1613
+ },
1614
+ "examples": {
1615
+ "IdpTenantException401": {
1616
+ "$ref": "#/components/examples/IdpTenantException401"
1617
+ }
1135
1618
  }
1136
1619
  }
1137
1620
  }
@@ -1142,6 +1625,11 @@
1142
1625
  "application/json": {
1143
1626
  "schema": {
1144
1627
  "$ref": "#/components/schemas/ErrorResponse"
1628
+ },
1629
+ "examples": {
1630
+ "IdpNotFoundException404": {
1631
+ "$ref": "#/components/examples/IdpNotFoundException404"
1632
+ }
1145
1633
  }
1146
1634
  }
1147
1635
  }
@@ -1159,38 +1647,46 @@
1159
1647
  },
1160
1648
  "/tenants/{tenantId}/customers/{customerId}": {
1161
1649
  "delete": {
1650
+ "summary": "Delete all shopper records associated with a shopper's customer ID. The email ID is used if it's passed as a query parameter. This conforms to the GDPR regulations.",
1651
+ "description": "Delete all shopper records associated with a shopper's customer ID. The email ID is used if it's passed as a query parameter. This conforms to the GDPR regulations.",
1162
1652
  "operationId": "deleteShopper",
1163
1653
  "parameters": [
1164
1654
  {
1165
1655
  "name": "customerId",
1166
1656
  "in": "path",
1657
+ "description": "The unique identifier of a customer.",
1167
1658
  "required": true,
1168
1659
  "style": "simple",
1169
1660
  "explode": false,
1170
1661
  "schema": {
1171
1662
  "type": "string",
1663
+ "example": "bcJN7998472pLiZuyGabs8knlj",
1172
1664
  "maxLength": 28
1173
1665
  }
1174
1666
  },
1175
1667
  {
1176
1668
  "name": "tenantId",
1177
1669
  "in": "path",
1670
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
1178
1671
  "required": true,
1179
1672
  "style": "simple",
1180
1673
  "explode": false,
1181
1674
  "schema": {
1182
1675
  "type": "string",
1676
+ "example": "zzeu_001, bgvn_dev",
1183
1677
  "maxLength": 32
1184
1678
  }
1185
1679
  },
1186
1680
  {
1187
1681
  "name": "emailAddress",
1188
1682
  "in": "query",
1683
+ "description": "The shoppers email address.",
1189
1684
  "required": false,
1190
1685
  "style": "form",
1191
1686
  "explode": true,
1192
1687
  "schema": {
1193
1688
  "type": "string",
1689
+ "example": "joe.shopper@foo.org",
1194
1690
  "maxLength": 256
1195
1691
  }
1196
1692
  }
@@ -1205,6 +1701,11 @@
1205
1701
  "application/json": {
1206
1702
  "schema": {
1207
1703
  "$ref": "#/components/schemas/ErrorResponse"
1704
+ },
1705
+ "examples": {
1706
+ "ShopperDeleteException": {
1707
+ "$ref": "#/components/examples/ShopperDeleteException400"
1708
+ }
1208
1709
  }
1209
1710
  }
1210
1711
  }
@@ -1215,6 +1716,11 @@
1215
1716
  "application/json": {
1216
1717
  "schema": {
1217
1718
  "$ref": "#/components/schemas/ErrorResponse"
1719
+ },
1720
+ "examples": {
1721
+ "ShopperNotFoundException": {
1722
+ "$ref": "#/components/examples/ShopperNotFoundException404"
1723
+ }
1218
1724
  }
1219
1725
  }
1220
1726
  }
@@ -1236,50 +1742,63 @@
1236
1742
  "Tenant": {
1237
1743
  "type": "object",
1238
1744
  "additionalProperties": true,
1745
+ "description": "Tenant",
1239
1746
  "properties": {
1240
1747
  "tenantId": {
1241
1748
  "type": "string",
1749
+ "example": "aaaa_prd",
1242
1750
  "maxLength": 8
1243
1751
  },
1244
1752
  "merchantId": {
1245
1753
  "type": "integer",
1754
+ "example": 1,
1246
1755
  "minimum": 0
1247
1756
  },
1248
1757
  "description": {
1249
1758
  "type": "string",
1759
+ "example": "SLAS Merchant Name",
1250
1760
  "maxLength": 256
1251
1761
  },
1252
1762
  "contact": {
1253
1763
  "type": "string",
1764
+ "example": "SLAS Tenant Contact",
1254
1765
  "maxLength": 256
1255
1766
  },
1256
1767
  "emailAddress": {
1257
1768
  "type": "string",
1769
+ "example": "tenant_contact@slas.tst",
1258
1770
  "maxLength": 200
1259
1771
  },
1260
1772
  "phoneNo": {
1261
1773
  "type": "string",
1774
+ "example": "000-000-0000",
1262
1775
  "maxLength": 50
1263
1776
  },
1264
1777
  "isDeleted": {
1265
1778
  "type": "boolean",
1779
+ "example": false,
1266
1780
  "maxLength": 1
1267
1781
  },
1268
1782
  "status": {
1269
1783
  "type": "string",
1784
+ "example": "CLEAR",
1270
1785
  "maxLength": 16
1271
1786
  },
1272
1787
  "tier": {
1273
1788
  "type": "string",
1789
+ "description": "This read only value relates to the B2C Comerce realm of the customer.\n - XS = Bronze and Bronze+\n - S = Silver and Silver+\n - M = Gold and Gold+\n - L = Platinum and Platinum+\n",
1274
1790
  "enum": [
1275
1791
  "XS",
1276
1792
  "S",
1277
1793
  "M",
1278
1794
  "L"
1279
- ]
1795
+ ],
1796
+ "example": "L"
1280
1797
  },
1281
1798
  "requestQuotaPerMinute": {
1282
- "type": "number"
1799
+ "type": "number",
1800
+ "description": "This read only value shows the the number of requests that can be made per minute.",
1801
+ "example": 8000
1283
1802
  }
1284
1803
  },
1285
1804
  "required": [
@@ -1301,17 +1820,25 @@
1301
1820
  "properties": {
1302
1821
  "title": {
1303
1822
  "type": "string",
1823
+ "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",
1824
+ "example": "You do not have enough credit",
1304
1825
  "maxLength": 256
1305
1826
  },
1306
1827
  "type": {
1307
1828
  "type": "string",
1829
+ "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",
1830
+ "example": "NotEnoughMoney",
1308
1831
  "maxLength": 2048
1309
1832
  },
1310
1833
  "detail": {
1311
- "type": "string"
1834
+ "type": "string",
1835
+ "description": "A human-readable explanation specific to this occurrence of the problem.",
1836
+ "example": "Your current balance is 30, but that costs 50"
1312
1837
  },
1313
1838
  "instance": {
1314
1839
  "type": "string",
1840
+ "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",
1841
+ "example": "/account/12345/msgs/abc",
1315
1842
  "maxLength": 2048
1316
1843
  }
1317
1844
  },
@@ -1323,29 +1850,39 @@
1323
1850
  },
1324
1851
  "TenantDto": {
1325
1852
  "type": "object",
1853
+ "description": "Create or update tenants",
1326
1854
  "properties": {
1327
1855
  "tenantId": {
1328
1856
  "type": "string",
1857
+ "example": "aaaa_prd",
1329
1858
  "maxLength": 8
1330
1859
  },
1331
1860
  "merchantName": {
1332
1861
  "type": "string",
1862
+ "description": "Name of the merchant.",
1863
+ "example": "Merchant Name",
1333
1864
  "maxLength": 256
1334
1865
  },
1335
1866
  "description": {
1336
1867
  "type": "string",
1868
+ "example": "Additional information about the tenant.",
1337
1869
  "maxLength": 256
1338
1870
  },
1339
1871
  "contact": {
1340
1872
  "type": "string",
1873
+ "example": "Name of the merchant's designated contact.",
1341
1874
  "maxLength": 256
1342
1875
  },
1343
1876
  "emailAddress": {
1344
1877
  "type": "string",
1878
+ "description": "Email address of the designated contact.",
1879
+ "example": "joe.shopper@foo.org",
1345
1880
  "maxLength": 200
1346
1881
  },
1347
1882
  "phoneNo": {
1348
1883
  "type": "string",
1884
+ "description": "Phone number of the designated contact.",
1885
+ "example": "+1 000-000-0000",
1349
1886
  "maxLength": 50
1350
1887
  }
1351
1888
  },
@@ -1358,55 +1895,172 @@
1358
1895
  "tenantId"
1359
1896
  ]
1360
1897
  },
1898
+ "BatchLogoutRequest": {
1899
+ "type": "object",
1900
+ "properties": {
1901
+ "loginIds": {
1902
+ "type": "array",
1903
+ "description": "The list of login IDs to log out. Duplicate login IDs are deduplicated before processing and marked `not_processed` in the response. Exceeding the maximum returns a 400.",
1904
+ "example": [
1905
+ "user1@example.com",
1906
+ "user2@example.com"
1907
+ ],
1908
+ "items": {
1909
+ "type": "string",
1910
+ "example": "user1@example.com",
1911
+ "maxLength": 256
1912
+ },
1913
+ "maxItems": 50,
1914
+ "minItems": 1
1915
+ }
1916
+ },
1917
+ "required": [
1918
+ "loginIds"
1919
+ ]
1920
+ },
1921
+ "LoginIdResult": {
1922
+ "type": "object",
1923
+ "properties": {
1924
+ "loginId": {
1925
+ "type": "string",
1926
+ "example": "user1@example.com",
1927
+ "maxLength": 256
1928
+ },
1929
+ "status": {
1930
+ "type": "string",
1931
+ "description": "The outcome of the logout for this login ID:\n - `success`: Logout succeeded.\n - `failure`: Logout failed. See `errorMessage` for details.\n - `not_processed`: Skipped as a duplicate of another login ID in the request.",
1932
+ "enum": [
1933
+ "success",
1934
+ "failure",
1935
+ "not_processed"
1936
+ ],
1937
+ "example": "success"
1938
+ },
1939
+ "errorMessage": {
1940
+ "type": "string",
1941
+ "description": "The reason the logout failed. Only present when `status` is `failure` or `not_processed`.",
1942
+ "example": "User not found",
1943
+ "maxLength": 512
1944
+ }
1945
+ },
1946
+ "required": [
1947
+ "loginId",
1948
+ "status"
1949
+ ]
1950
+ },
1951
+ "BatchLogoutResponse": {
1952
+ "type": "object",
1953
+ "properties": {
1954
+ "results": {
1955
+ "type": "array",
1956
+ "description": "The per-loginId outcome of the batch logout, in the same order as the request.",
1957
+ "items": {
1958
+ "$ref": "#/components/schemas/LoginIdResult"
1959
+ }
1960
+ },
1961
+ "totalProcessed": {
1962
+ "type": "integer",
1963
+ "description": "The total number of login IDs processed.",
1964
+ "example": 2
1965
+ },
1966
+ "successCount": {
1967
+ "type": "integer",
1968
+ "description": "The number of login IDs successfully logged out.",
1969
+ "example": 2
1970
+ },
1971
+ "failureCount": {
1972
+ "type": "integer",
1973
+ "description": "The number of login IDs that failed to log out.",
1974
+ "example": 0
1975
+ }
1976
+ },
1977
+ "required": [
1978
+ "failureCount",
1979
+ "results",
1980
+ "successCount",
1981
+ "totalProcessed"
1982
+ ]
1983
+ },
1361
1984
  "Client": {
1362
1985
  "type": "object",
1363
1986
  "properties": {
1364
1987
  "clientId": {
1365
1988
  "type": "string",
1989
+ "description": "Client ID",
1990
+ "example": "fd0d4ab9-bb85-4c04-bebd-589bd74bdd75",
1366
1991
  "maxLength": 100
1367
1992
  },
1368
1993
  "name": {
1369
1994
  "type": "string",
1995
+ "description": "Client Name",
1996
+ "example": "Client Name",
1370
1997
  "maxLength": 100
1371
1998
  },
1372
1999
  "secret": {
1373
2000
  "type": "string",
2001
+ "description": "Client Secret. The secret will only display on create and if the secret was updated when updating the client.",
2002
+ "example": "client-secret",
1374
2003
  "maxLength": 256
1375
2004
  },
1376
2005
  "scopes": {
1377
2006
  "type": "array",
2007
+ "description": "Merchant scopes. These scopes allows different permissions in SLAS and B2C commerce. \nShopper Custom Objects additionally provides a way to do granular scoping besides the standard `sfcc.shopper-custom-objects` like `sfcc.shopper-custom-objects.xyz`\nSLAS is capable of handling a maximum of 20 Custom Object scopes.\n\nFor B2C Commerce scope details, see the [Authorization Scopes Catalog](https://developer.salesforce.com/docs/commerce/commerce-api/guide/auth-z-scope-catalog.html).\"",
2008
+ "example": [
2009
+ "sfcc.products",
2010
+ "sfcc.catalogs",
2011
+ "sfcc.customers:ro"
2012
+ ],
1378
2013
  "items": {
1379
2014
  "type": "string",
2015
+ "example": "sfcc.products sfcc.catalogs sfcc.customers:ro",
1380
2016
  "maxLength": 100
1381
2017
  }
1382
2018
  },
1383
2019
  "redirectUri": {
1384
2020
  "type": "string",
2021
+ "description": "An absolute URL, beginning with a protocol",
2022
+ "example": "https://www.salesforce.com",
1385
2023
  "maxLength": 2048
1386
2024
  },
1387
2025
  "callbackUri": {
1388
2026
  "type": "string",
2027
+ "description": "An absolute URL, beginning with a protocol",
2028
+ "example": "https://www.salesforce.com",
1389
2029
  "maxLength": 2048
1390
2030
  },
1391
2031
  "channels": {
1392
2032
  "type": "array",
2033
+ "description": "Client Channels",
2034
+ "example": [
2035
+ "RefArch",
2036
+ "SiteGenensis"
2037
+ ],
1393
2038
  "items": {
1394
2039
  "type": "string",
2040
+ "example": "RefArch SiteGenesis",
1395
2041
  "maxLength": 1024
1396
2042
  }
1397
2043
  },
1398
2044
  "isPrivateClient": {
1399
- "type": "boolean"
2045
+ "type": "boolean",
2046
+ "description": "Private or Public Client",
2047
+ "example": true
1400
2048
  },
1401
2049
  "loginEpRestrict": {
1402
2050
  "type": "boolean",
2051
+ "description": "When enabling (true) this will restrict all calls to the `\\login` endpoint for the Client Id. When calling the `\\login` endpoint and `loginEpRestrict` is enabled a HTTP Status code of 403 will be returned.",
2052
+ "example": false,
1403
2053
  "maxLength": 1
1404
2054
  },
1405
2055
  "isSixDigitOtp": {
1406
- "type": "boolean"
2056
+ "type": "boolean",
2057
+ "description": "If this attribute is set to true in the request for the clientId, a 6-digit OTP is generated during PasswordlessLogin, PasswordReset, and WebAuthn Authorization. If set to false or unspecified, an 8-digit OTP is generated by default for the aforementioned calls.",
2058
+ "example": false
1407
2059
  },
1408
2060
  "strictClientAuth": {
1409
- "type": "boolean"
2061
+ "type": "boolean",
2062
+ "description": "When enabled, requests from this client to `/oauth2/login` and `/oauth2/authorize` are rejected with a 401 if the `x-slas-client-auth` header is missing. The `strictClientAuth` attribute applies only to private clients.\nThe 'x-slas-client-auth' header is a Base64-encoded string of client credentials. The string is composed of a client ID and client secret, separated by a colon (`:`). For example, `clientId:clientSecret`. Don't add the string `\"Basic\"`.",
2063
+ "example": false
1410
2064
  }
1411
2065
  },
1412
2066
  "required": [
@@ -1424,6 +2078,7 @@
1424
2078
  "properties": {
1425
2079
  "data": {
1426
2080
  "type": "array",
2081
+ "description": "An array of clients.",
1427
2082
  "items": {
1428
2083
  "$ref": "#/components/schemas/Client"
1429
2084
  }
@@ -1435,58 +2090,98 @@
1435
2090
  },
1436
2091
  "ClientRequest": {
1437
2092
  "type": "object",
2093
+ "description": "Used to create and update a SLAS Client",
1438
2094
  "properties": {
1439
2095
  "name": {
1440
2096
  "type": "string",
2097
+ "description": "Client Name",
2098
+ "example": "High Adventure Wear",
1441
2099
  "maxLength": 100
1442
2100
  },
1443
2101
  "clientId": {
1444
2102
  "type": "string",
2103
+ "description": "SLAS client id. Must match the query parameter.",
2104
+ "example": "fd0d4ab9-bb85-4c04-bebd-589bd74bdd75",
1445
2105
  "maxLength": 100
1446
2106
  },
1447
2107
  "secret": {
1448
2108
  "type": "string",
2109
+ "description": "SLAS client secret. On create if left blank then a secret will be generated.",
2110
+ "example": "client_secret",
1449
2111
  "maxLength": 256
1450
2112
  },
1451
2113
  "scopes": {
1452
2114
  "type": "array",
2115
+ "description": "Merchant scopes. These scopes allows different permissions in SLAS and B2C commerce. \nShopper Custom Objects additionally provides a way to do granular scoping besides the standard `sfcc.shopper-custom-objects` like `sfcc.shopper-custom-objects.xyz` \nSLAS is capable of handling a maximum of 20 Custom Object scopes.\"",
2116
+ "example": [
2117
+ "sfcc.products",
2118
+ "sfcc.catalogs",
2119
+ "sfcc.customers:ro"
2120
+ ],
1453
2121
  "items": {
1454
2122
  "type": "string",
2123
+ "example": "sfcc.products sfcc.catalogs sfcc.customers:ro",
1455
2124
  "maxLength": 4096
1456
2125
  }
1457
2126
  },
1458
2127
  "redirectUri": {
1459
2128
  "type": "array",
2129
+ "description": "Array of SLAS redirect URLs. Include protocol and domain name in each URL. Wildcards supported.",
2130
+ "example": [
2131
+ "http://localhost:3000/callback",
2132
+ "https://*.example.com/callback"
2133
+ ],
1460
2134
  "items": {
1461
2135
  "type": "string",
2136
+ "example": "http://localhost:3000/callback",
1462
2137
  "maxLength": 2048
1463
2138
  }
1464
2139
  },
1465
2140
  "callbackUri": {
1466
2141
  "type": "array",
2142
+ "description": "Array of SLAS callback URLs that will be used for passworless login and password reset when mode=callback. Include protocol and domain name in each URL. Wildcards are NOT supported.",
2143
+ "example": [
2144
+ "http://localhost:3000/password-reset-callback",
2145
+ "http://localhost:3000/passwordless-login-callback"
2146
+ ],
1467
2147
  "items": {
1468
2148
  "type": "string",
2149
+ "example": "localhost:3000/passwordless-login-callback",
1469
2150
  "maxLength": 2048
1470
2151
  }
1471
2152
  },
1472
2153
  "channels": {
1473
2154
  "type": "array",
2155
+ "description": "Client Channels",
2156
+ "example": [
2157
+ "RefArch",
2158
+ "SiteGenensis"
2159
+ ],
1474
2160
  "items": {
1475
2161
  "type": "string",
2162
+ "example": "RefArch SiteGenesis",
1476
2163
  "maxLength": 1024
1477
2164
  }
1478
2165
  },
1479
2166
  "isPrivateClient": {
1480
- "type": "boolean"
2167
+ "type": "boolean",
2168
+ "description": "Private or Public Client. If left blank the client will default to private.",
2169
+ "example": true
1481
2170
  },
1482
2171
  "loginEpRestrict": {
1483
- "type": "boolean"
2172
+ "type": "boolean",
2173
+ "description": "When enabling (true) this will restrict all calls to the `\\login` endpoint for the Client Id. When calling the `\\login` endpoint and `loginEpRestrict` is enabled a HTTP Status code of 403 will be returned.",
2174
+ "example": false
1484
2175
  },
1485
2176
  "isSixDigitOtp": {
1486
- "type": "boolean"
2177
+ "type": "boolean",
2178
+ "description": "If this attribute is set to true in the request for the clientId, a 6-digit OTP is generated during PasswordlessLogin, PasswordReset, and WebAuthn Authorization. If set to false or unspecified, an 8-digit OTP is generated by default for the aforementioned calls.",
2179
+ "example": false
1487
2180
  },
1488
2181
  "strictClientAuth": {
1489
- "type": "boolean"
2182
+ "type": "boolean",
2183
+ "description": "When enabled, requests from this client to `/oauth2/login` and `/oauth2/authorize` are rejected with a 401 if the `x-slas-client-auth` header is missing. The `strictClientAuth` attribute applies only to private clients.\nThe 'x-slas-client-auth' header is a Base64-encoded string of client credentials. The string is composed of a client ID and client secret, separated by a colon (`:`). For example, `clientId:clientSecret`. Don't add the string `\"Basic\"`.",
2184
+ "example": false
1490
2185
  }
1491
2186
  },
1492
2187
  "required": [
@@ -1501,41 +2196,51 @@
1501
2196
  },
1502
2197
  "PasswordTemplateActionType": {
1503
2198
  "type": "string",
2199
+ "description": "Describes the type of action that the password action template will be used for. \nHere are the actions that each enumerated string refers to:\n - `PWDLESS_LOGIN`: Passwordless login\n - `PWD_RESET_ACTION`: Password reset\n - `PWD_RESET_CROSS_DEVICE_ACTION`: Password reset for cross-device flow\n - `WEBAUTHN_AUTHORIZE_USER`: WebAuthn authorize user",
1504
2200
  "enum": [
1505
2201
  "PWDLESS_LOGIN",
1506
2202
  "PWD_RESET_ACTION",
1507
2203
  "PWD_RESET_CROSS_DEVICE_ACTION",
1508
2204
  "WEBAUTHN_AUTHORIZE_USER"
1509
- ]
2205
+ ],
2206
+ "example": "PWDLESS_LOGIN"
1510
2207
  },
1511
2208
  "PasswordTemplateType": {
1512
2209
  "type": "string",
2210
+ "description": "Identifies the type of mode that the password action template will be used for.",
1513
2211
  "enum": [
1514
2212
  "SMS",
1515
2213
  "EMAIL"
1516
- ]
2214
+ ],
2215
+ "example": "EMAIL"
1517
2216
  },
1518
2217
  "PasswordActionTemplate": {
1519
2218
  "type": "object",
1520
2219
  "properties": {
1521
2220
  "channelId": {
1522
2221
  "type": "string",
2222
+ "example": "SiteGenesis",
1523
2223
  "maxLength": 36
1524
2224
  },
1525
2225
  "name": {
1526
2226
  "type": "string",
2227
+ "example": "Password Action Email Template",
1527
2228
  "maxLength": 128
1528
2229
  },
1529
2230
  "subject": {
1530
2231
  "type": "string",
2232
+ "example": "Password Action Token Request",
1531
2233
  "maxLength": 128
1532
2234
  },
1533
2235
  "link": {
1534
2236
  "type": "string",
2237
+ "example": "This is your password action token: ${token}",
1535
2238
  "maxLength": 2048
1536
2239
  },
1537
2240
  "locale": {
1538
2241
  "type": "string",
2242
+ "description": "Identifies the locale of the template. Must be one of the [language tag strings supported by JDK 11](https://www.oracle.com/java/technologies/javase/jdk11-suported-locales.html). The string is stored in all lowercase.",
2243
+ "example": "en-us",
1539
2244
  "maxLength": 16
1540
2245
  },
1541
2246
  "actionType": {
@@ -1546,6 +2251,7 @@
1546
2251
  },
1547
2252
  "template": {
1548
2253
  "type": "string",
2254
+ "example": "Passwordless Login Token Request\nYou're receiving this because you requested a passwordless login token for your account. ${link}",
1549
2255
  "maxLength": 2048
1550
2256
  }
1551
2257
  },
@@ -1562,77 +2268,131 @@
1562
2268
  },
1563
2269
  "IdentityProviderResponse": {
1564
2270
  "type": "object",
2271
+ "description": "Identity provider Response",
1565
2272
  "properties": {
1566
2273
  "name": {
1567
2274
  "type": "string",
2275
+ "description": "Identity Provider Name",
2276
+ "example": "google",
1568
2277
  "maxLength": 200
1569
2278
  },
1570
2279
  "authUrl": {
1571
2280
  "type": "string",
2281
+ "description": "IDP authorization URL",
2282
+ "example": "https://www.salesforce.com/authorize",
1572
2283
  "maxLength": 256
1573
2284
  },
1574
2285
  "tokenUrl": {
1575
2286
  "type": "string",
2287
+ "description": "IDP token URL",
2288
+ "example": "https://www.salesforce.com/token",
1576
2289
  "maxLength": 256
1577
2290
  },
1578
2291
  "tokenInfoUrl": {
1579
2292
  "type": "string",
2293
+ "description": "IDP token info URL",
2294
+ "example": "https://www.salesforce.com/inspect",
1580
2295
  "maxLength": 256
1581
2296
  },
1582
2297
  "userInfoUrl": {
1583
2298
  "type": "string",
2299
+ "description": "IDP user info URL",
2300
+ "example": "https://www.salesforce.com/userinfo",
1584
2301
  "maxLength": 256
1585
2302
  },
1586
2303
  "redirectUrl": {
1587
2304
  "type": "string",
2305
+ "description": "Redirect URL to go to after IDP flow is complete. This URL must be registered with the IDP.",
2306
+ "example": "https://www.salesforce.com/idp/callback",
1588
2307
  "maxLength": 256
1589
2308
  },
1590
2309
  "wellKnownUrl": {
1591
2310
  "type": "string",
2311
+ "description": "IDP to get OIDC configuration.",
2312
+ "example": "https://www.salesforce.com/.well-known/openid-configuration",
1592
2313
  "maxLength": 256
1593
2314
  },
1594
2315
  "clientId": {
1595
2316
  "type": "string",
2317
+ "description": "Client Id of the third party IDP.",
2318
+ "example": "934277749308-02dg4398n3s31ofge8cot46jirn3kpkf.apps.googleusercontent.com",
1596
2319
  "maxLength": 128
1597
2320
  },
1598
2321
  "clientSecret": {
1599
2322
  "type": "string",
2323
+ "description": "Client Secret of the third party IDP. For Apple copy the contents from the .p8 file that was downloaded from Apple between -*----BEGIN PRIVATE KEY-----* and -*---END PRIVATE KEY-----* markers.",
2324
+ "example": "aKZM1xEnZopNP2bm2gc3GKex",
1600
2325
  "maxLength": 512
1601
2326
  },
1602
2327
  "isPreferred": {
1603
2328
  "type": "boolean",
2329
+ "description": "Indicates if the IDP configuration is the Preferred SLAS IDP for the Tenant Id.",
2330
+ "example": true,
1604
2331
  "maxLength": 1
1605
2332
  },
1606
2333
  "isClientCredsBody": {
1607
2334
  "type": "boolean",
2335
+ "description": "Default is to place the client credentials in a basic authorization header for the call to the IDP. If true, the client credentials are placed in the POST body to the IDP.",
2336
+ "example": false,
1608
2337
  "maxLength": 1
1609
2338
  },
1610
2339
  "scopes": {
1611
2340
  "type": "array",
2341
+ "description": "Scopes needed by the IDP.",
2342
+ "example": [
2343
+ "oidc",
2344
+ "email",
2345
+ "profile"
2346
+ ],
1612
2347
  "items": {
1613
2348
  "type": "string",
2349
+ "example": "openid email profile",
1614
2350
  "maxLength": 8192
1615
2351
  }
1616
2352
  },
1617
2353
  "teamId": {
1618
2354
  "type": "string",
2355
+ "description": "Apple Team ID. Used primarily for Sign with Apple in generating the client secret.",
2356
+ "example": "appleTeamId",
1619
2357
  "maxLength": 32
1620
2358
  },
1621
2359
  "keyId": {
1622
2360
  "type": "string",
2361
+ "description": "Apple key ID. This is the Key ID that was obtained from Apple when the the private key for client authentication was created. Used primarily for Sign with Apple in generating the client secret.",
2362
+ "example": "appleKeyId",
1623
2363
  "maxLength": 8192
1624
2364
  },
1625
2365
  "loginMergeClaims": {
1626
2366
  "type": "array",
2367
+ "description": "List of user info claims that can be used as identifiers to look up and merge with an existing B2C Commerce profile for a registered shopper or an existing B2C Commerce profile created via federated login with an external Identity Provider with the same merge claim as this one. If multiple matching B2C Commerce shopper (customer) profiles are found, the external profile is merged with the most recently created shopper (customer) profile. Refer to the Merge Shopper Profiles user guide for more details.\n\nNote: When configuring an Apple IDP, 'email' and 'sub' are the only supported merge claims.\n",
2368
+ "example": [
2369
+ "email",
2370
+ "phone"
2371
+ ],
1627
2372
  "items": {
1628
2373
  "type": "string",
2374
+ "example": "email",
1629
2375
  "maxLength": 256
1630
2376
  }
1631
2377
  },
1632
2378
  "oidcClaimMapper": {
1633
2379
  "type": "array",
2380
+ "description": "Mapping from the identity provider’s token claims for SLAS to get user information values when the user successfully authenticates. The values in this array should be setup using the following `key=value` pair pattern. The key part is the SLAS key with the value part being the OIDC claim key.",
2381
+ "example": [
2382
+ "accessToken=access_token",
2383
+ "refreshToken=refresh_token",
2384
+ "accessTokenTTL=expires_in",
2385
+ "idToken=id_token",
2386
+ "subject=sub",
2387
+ "email=email",
2388
+ "userId=sub",
2389
+ "familyName=family_name",
2390
+ "givenName=given_name",
2391
+ "name=name"
2392
+ ],
1634
2393
  "items": {
1635
2394
  "type": "string",
2395
+ "example": "accessToken=access refresh_token accessTokenTTL=expires_in idToken=id_token subject=sub email=email userId=sub familyName=family_name givenName=given_name name=name",
1636
2396
  "maxLength": 1024
1637
2397
  }
1638
2398
  }
@@ -1656,6 +2416,7 @@
1656
2416
  "properties": {
1657
2417
  "data": {
1658
2418
  "type": "array",
2419
+ "description": "An array of identity providers.",
1659
2420
  "items": {
1660
2421
  "$ref": "#/components/schemas/IdentityProviderResponse"
1661
2422
  }
@@ -1667,9 +2428,11 @@
1667
2428
  },
1668
2429
  "IdentityProvider": {
1669
2430
  "type": "object",
2431
+ "description": "Identity provider",
1670
2432
  "properties": {
1671
2433
  "name": {
1672
2434
  "type": "string",
2435
+ "description": "Identity Provider Name",
1673
2436
  "enum": [
1674
2437
  "adfs",
1675
2438
  "apple",
@@ -1685,78 +2448,132 @@
1685
2448
  "ping",
1686
2449
  "salesforce"
1687
2450
  ],
2451
+ "example": "google",
1688
2452
  "maxLength": 200
1689
2453
  },
1690
2454
  "authUrl": {
1691
2455
  "type": "string",
2456
+ "description": "IDP authorize URL",
2457
+ "example": "https://www.salesforce.com/authorize",
1692
2458
  "maxLength": 256
1693
2459
  },
1694
2460
  "tokenUrl": {
1695
2461
  "type": "string",
2462
+ "description": "IDP token URL",
2463
+ "example": "https://www.salesforce.com/token",
1696
2464
  "maxLength": 256
1697
2465
  },
1698
2466
  "tokenInfoUrl": {
1699
2467
  "type": "string",
2468
+ "description": "IDP token info URL",
2469
+ "example": "https://www.salesforce.com/introspect",
1700
2470
  "maxLength": 256
1701
2471
  },
1702
2472
  "userInfoUrl": {
1703
2473
  "type": "string",
2474
+ "description": "IDP user info URL",
2475
+ "example": "https://www.salesforce.com/userinfo",
1704
2476
  "maxLength": 256
1705
2477
  },
1706
2478
  "redirectUrl": {
1707
2479
  "type": "string",
2480
+ "description": "Redirect URL to go to after IDP flow is complete. This URL must be registered with the IDP.",
2481
+ "example": "https://www.salesforce.com/idp/callback",
1708
2482
  "maxLength": 256
1709
2483
  },
1710
2484
  "wellKnownUrl": {
1711
2485
  "type": "string",
2486
+ "description": "IDP URL to get OIDC configuration.",
2487
+ "example": "https://www.salesforce.com/.well-known/openid-configuration",
1712
2488
  "maxLength": 256
1713
2489
  },
1714
2490
  "clientId": {
1715
2491
  "type": "string",
2492
+ "description": "Client Id of the third party IDP.",
2493
+ "example": "934277749308-02dg4398n3s31ofge8cot46jirn3kpkf.apps.googleusercontent.com",
1716
2494
  "maxLength": 128
1717
2495
  },
1718
2496
  "clientSecret": {
1719
2497
  "type": "string",
2498
+ "description": "Client Secret of the third party IDP. For Apple copy the contents from the .p8 file that was downloaded from Apple between -*----BEGIN PRIVATE KEY-----* and -*---END PRIVATE KEY-----* markers.",
2499
+ "example": "aKZM1xEnZopNP2bm2gc3GKex",
1720
2500
  "maxLength": 512
1721
2501
  },
1722
2502
  "preferenceValue": {
1723
2503
  "type": "boolean",
2504
+ "description": "Set the IDP configuration as the Preferred SLAS IDP. Default value is `false`.",
2505
+ "example": true,
1724
2506
  "maxLength": 1
1725
2507
  },
1726
2508
  "isClientCredsBody": {
1727
2509
  "type": "boolean",
2510
+ "description": "Default is to place the client credentials in a basic authorization header for the call to the IDP. If true, the client credentials are placed in the POST body to the IDP.",
2511
+ "example": false,
1728
2512
  "maxLength": 1
1729
2513
  },
1730
2514
  "useWellKnown": {
1731
2515
  "type": "boolean",
2516
+ "description": "If set to `true`, SLAS uses the `wellKnowUrl` value to populate the `authUrl`, `tokenUrl`, `userInfoUrl`, and `scopes` values from the identity provider. Default value is `false`.",
2517
+ "example": false,
1732
2518
  "maxLength": 1
1733
2519
  },
1734
2520
  "scopes": {
1735
2521
  "type": "array",
2522
+ "description": "IDP Scopes",
2523
+ "example": [
2524
+ "oidc",
2525
+ "email",
2526
+ "profile"
2527
+ ],
1736
2528
  "items": {
1737
2529
  "type": "string",
2530
+ "example": "openid email profile",
1738
2531
  "maxLength": 8192
1739
2532
  }
1740
2533
  },
1741
2534
  "teamId": {
1742
2535
  "type": "string",
2536
+ "description": "Apple Team Id. Used primarily for Sign with Apple in generating the client secret.",
2537
+ "example": "appleTeamId",
1743
2538
  "maxLength": 32
1744
2539
  },
1745
2540
  "keyId": {
1746
2541
  "type": "string",
2542
+ "description": "Apple key id. This is the Key ID that was obtained from Apple when the the private key for client authentication was created. Used primarily for Sign with Apple in generating the client secret.",
2543
+ "example": "appleKeyId",
1747
2544
  "maxLength": 32
1748
2545
  },
1749
2546
  "loginMergeClaims": {
1750
2547
  "type": "array",
2548
+ "description": "List of user info claims that can be used as identifiers to look up and merge with an existing B2C Commerce profile for a registered shopper or an existing B2C Commerce profile created via federated login with an external Identity Provider with the same merge claim as this one. If multiple matching B2C Commerce shopper (customer) profiles are found, the external profile is merged with the most recently created shopper (customer) profile. Refer to the Merge Shopper Profiles user guide for more details.\nNote: When configuring an Apple IDP, 'email' and 'sub' are the only supported merge claims.\n",
2549
+ "example": [
2550
+ "email",
2551
+ "phone"
2552
+ ],
1751
2553
  "items": {
1752
2554
  "type": "string",
2555
+ "example": "email",
1753
2556
  "maxLength": 256
1754
2557
  }
1755
2558
  },
1756
2559
  "oidcClaimMapper": {
1757
2560
  "type": "array",
2561
+ "description": "Mapping from the identity provider’s token claims for SLAS to get user information values when the user successfully authenticates. The values in this array should be setup using the following `key=value` pair pattern. The key part is the SLAS key with the value part being the OIDC claim key.",
2562
+ "example": [
2563
+ "accessToken=access_token",
2564
+ "refreshToken=refresh_token",
2565
+ "accessTokenTTL=expires_in",
2566
+ "idToken=id_token",
2567
+ "subject=sub",
2568
+ "email=email",
2569
+ "userId=sub",
2570
+ "familyName=family_name",
2571
+ "givenName=given_name",
2572
+ "name=name"
2573
+ ],
1758
2574
  "items": {
1759
2575
  "type": "string",
2576
+ "example": "accessToken=access_token efreshToken=refresh_token accessTokenTTL=expires_in idToken=id_token subject=sub email=email userId=sub familyName=family_name givenName=given_name name=name",
1760
2577
  "maxLength": 1024
1761
2578
  }
1762
2579
  }
@@ -1780,55 +2597,65 @@
1780
2597
  "tenantId": {
1781
2598
  "name": "tenantId",
1782
2599
  "in": "path",
2600
+ "description": "The identifier of the SLAS tenant (format: realmId_instanceId).",
1783
2601
  "required": true,
1784
2602
  "style": "simple",
1785
2603
  "explode": false,
1786
2604
  "schema": {
1787
2605
  "type": "string",
2606
+ "example": "zzeu_001, bgvn_dev",
1788
2607
  "maxLength": 32
1789
2608
  }
1790
2609
  },
1791
- "clientId": {
1792
- "name": "clientId",
1793
- "in": "path",
1794
- "required": true,
1795
- "style": "simple",
1796
- "explode": false,
1797
- "schema": {
1798
- "type": "string",
1799
- "maxLength": 36
1800
- }
1801
- },
1802
2610
  "channelId": {
1803
2611
  "name": "channelId",
1804
2612
  "in": "query",
2613
+ "description": "The identifier of the sales channel (site).",
1805
2614
  "required": true,
1806
2615
  "style": "form",
1807
2616
  "explode": true,
1808
2617
  "schema": {
1809
2618
  "type": "string",
2619
+ "example": "SiteGenesis",
1810
2620
  "maxLength": 100
1811
2621
  }
1812
2622
  },
2623
+ "clientId": {
2624
+ "name": "clientId",
2625
+ "in": "path",
2626
+ "description": "The SLAS client identifier.",
2627
+ "required": true,
2628
+ "style": "simple",
2629
+ "explode": false,
2630
+ "schema": {
2631
+ "type": "string",
2632
+ "example": "876aff68-6ee5-474f-932d-c90c1d79bcf7",
2633
+ "maxLength": 36
2634
+ }
2635
+ },
1813
2636
  "actionType": {
1814
2637
  "name": "actionType",
1815
2638
  "in": "query",
2639
+ "description": "The type of password action (reset or create).",
1816
2640
  "required": true,
1817
2641
  "style": "form",
1818
2642
  "explode": true,
1819
2643
  "schema": {
1820
2644
  "type": "string",
2645
+ "description": "Describes the type of action that the password action template will be used for. \nHere are the actions that each enumerated string refers to:\n - `PWDLESS_LOGIN`: Passwordless login\n - `PWD_RESET_ACTION`: Password reset\n - `PWD_RESET_CROSS_DEVICE_ACTION`: Password reset for cross-device flow",
1821
2646
  "enum": [
1822
2647
  "PWDLESS_LOGIN",
1823
2648
  "PWD_RESET_ACTION",
1824
2649
  "PWD_RESET_CROSS_DEVICE_ACTION"
1825
2650
  ],
2651
+ "example": "PWDLESS_LOGIN",
1826
2652
  "maxLength": 36
1827
2653
  }
1828
2654
  },
1829
2655
  "templateType": {
1830
2656
  "name": "templateType",
1831
2657
  "in": "query",
2658
+ "description": "The type of email template.",
1832
2659
  "required": true,
1833
2660
  "style": "form",
1834
2661
  "explode": true,
@@ -1838,57 +2665,579 @@
1838
2665
  "EMAIL",
1839
2666
  "SMS"
1840
2667
  ],
2668
+ "example": "EMAIL",
1841
2669
  "maxLength": 8
1842
2670
  }
1843
2671
  },
1844
2672
  "locale": {
1845
2673
  "name": "locale",
1846
2674
  "in": "query",
2675
+ "description": "A descriptor for a geographical region by both a language and country code.",
1847
2676
  "required": true,
1848
2677
  "style": "form",
1849
2678
  "explode": true,
1850
2679
  "schema": {
1851
2680
  "type": "string",
2681
+ "example": "en-US",
1852
2682
  "pattern": "^[a-z][a-z]-[A-Z][A-Z]$"
1853
2683
  }
1854
2684
  },
1855
2685
  "name": {
1856
2686
  "name": "name",
1857
2687
  "in": "path",
2688
+ "description": "The name of the identity provider.",
1858
2689
  "required": true,
1859
2690
  "style": "simple",
1860
2691
  "explode": false,
1861
2692
  "schema": {
1862
2693
  "type": "string",
2694
+ "example": "Name",
1863
2695
  "maxLength": 256
1864
2696
  }
1865
2697
  },
1866
2698
  "customerId": {
1867
2699
  "name": "customerId",
1868
2700
  "in": "path",
2701
+ "description": "The unique identifier of a customer.",
1869
2702
  "required": true,
1870
2703
  "style": "simple",
1871
2704
  "explode": false,
1872
2705
  "schema": {
1873
2706
  "type": "string",
2707
+ "example": "bcJN7998472pLiZuyGabs8knlj",
1874
2708
  "maxLength": 28
1875
2709
  }
1876
2710
  },
1877
2711
  "emailAddress": {
1878
2712
  "name": "emailAddress",
1879
2713
  "in": "query",
2714
+ "description": "The shoppers email address.",
1880
2715
  "required": false,
1881
2716
  "style": "form",
1882
2717
  "explode": true,
1883
2718
  "schema": {
1884
2719
  "type": "string",
2720
+ "example": "joe.shopper@foo.org",
1885
2721
  "maxLength": 256
1886
2722
  }
1887
2723
  }
1888
2724
  },
2725
+ "examples": {
2726
+ "Tenant": {
2727
+ "value": {
2728
+ "createdBy": "slas",
2729
+ "modifiedBy": "slas",
2730
+ "createdTime": "2021-02-25T00:55:54.119+0000",
2731
+ "modifiedTime": "2021-02-25T00:55:54.119+0000",
2732
+ "tenantId": "slsa_dev",
2733
+ "merchantId": 2,
2734
+ "description": "SLAS Default Tenant Two",
2735
+ "contact": "Tenant Two",
2736
+ "emailAddress": "tenant2@slas.tst",
2737
+ "phoneNo": "111-222-4444",
2738
+ "tier": "S",
2739
+ "requestQuotaPerMinute": 8000,
2740
+ "isDeleted": false,
2741
+ "status": "CLEAR"
2742
+ }
2743
+ },
2744
+ "TenantRequestException400": {
2745
+ "value": {
2746
+ "type": "TenantRequestException",
2747
+ "title": "Unable to retrieve resource because the tenant id was invalid",
2748
+ "detail": "Tenant id is invalid"
2749
+ }
2750
+ },
2751
+ "TenantException401": {
2752
+ "value": {
2753
+ "type": "TenantException",
2754
+ "title": "Unable to retrieve resource because the tenant id was invalid",
2755
+ "detail": "Tenant id is invalid"
2756
+ }
2757
+ },
2758
+ "TenantNotFoundException404": {
2759
+ "value": {
2760
+ "type": "TenantNotFoundException",
2761
+ "title": "Unable to retrieve resource because no resource was found with that value",
2762
+ "detail": "Tenant id Not Found"
2763
+ }
2764
+ },
2765
+ "TenantDto": {
2766
+ "value": {
2767
+ "tenantId": "slsa_dev",
2768
+ "merchantName": "Popular Merchant",
2769
+ "description": "Merchant Description",
2770
+ "contact": "Jerry Smith",
2771
+ "emailAddress": "jerry@merchant.com",
2772
+ "phoneNo": "801-555-1234"
2773
+ }
2774
+ },
2775
+ "TenantUpdateException400": {
2776
+ "value": {
2777
+ "type": "TenantUpdateException",
2778
+ "title": "Unable to retrieve resource because the tenant id was invalid",
2779
+ "detail": "Tenant id was not updated"
2780
+ }
2781
+ },
2782
+ "TenantUpdateException401": {
2783
+ "value": {
2784
+ "type": "TenantUpdateException",
2785
+ "title": "Unable to retrieve resource because the tenant id was invalid",
2786
+ "detail": "Tenant id was not updated"
2787
+ }
2788
+ },
2789
+ "TenantAlreadyExistsException409": {
2790
+ "value": {
2791
+ "type": "TenantAlreadyExistsException",
2792
+ "title": "Tenant[abcd_prd] already exists!",
2793
+ "detail": "Tenant already exists"
2794
+ }
2795
+ },
2796
+ "BatchLogoutRequest": {
2797
+ "value": {
2798
+ "loginIds": [
2799
+ "user1@example.com",
2800
+ "user2@example.com"
2801
+ ]
2802
+ }
2803
+ },
2804
+ "BatchLogoutResponse": {
2805
+ "value": {
2806
+ "results": [
2807
+ {
2808
+ "loginId": "user1@example.com",
2809
+ "status": "success"
2810
+ },
2811
+ {
2812
+ "loginId": "user2@example.com",
2813
+ "status": "failure",
2814
+ "errorMessage": "User not found"
2815
+ }
2816
+ ],
2817
+ "totalProcessed": 2,
2818
+ "successCount": 1,
2819
+ "failureCount": 1
2820
+ }
2821
+ },
2822
+ "BatchLogoutRequestException400": {
2823
+ "value": {
2824
+ "type": "BadRequestException",
2825
+ "title": "Unable to process resource because the request body was invalid",
2826
+ "detail": "Batch size 51 exceeds maximum allowed: 50"
2827
+ }
2828
+ },
2829
+ "BatchLogoutTenantException401": {
2830
+ "value": {
2831
+ "type": "TenantException",
2832
+ "title": "Unable to process resource because the tenant id was invalid and/or does not match authorization",
2833
+ "detail": "Tenant id is invalid"
2834
+ }
2835
+ },
2836
+ "ClientListResponse": {
2837
+ "value": {
2838
+ "data": [
2839
+ {
2840
+ "clientId": "a462b606-317c-4a3c-90a7-4b0b938f3807",
2841
+ "secret": "",
2842
+ "name": "Shop Mart",
2843
+ "scopes": [
2844
+ "sfcc.products sfcc.catalogs sfcc.products.ro"
2845
+ ],
2846
+ "redirectUri": "http://localhost:9010/callback",
2847
+ "callbackUri": "http://localhost:9010/pwd/reset/callback",
2848
+ "channels": [
2849
+ "SiteGenesis",
2850
+ "OtherSite"
2851
+ ],
2852
+ "isPrivateClient": true,
2853
+ "loginEpRestrict": false,
2854
+ "isSixDigitOtp": false,
2855
+ "strictClientAuth": false
2856
+ },
2857
+ {
2858
+ "clientId": "726bde86-7b99-415d-98ec-9290bad18904",
2859
+ "secret": "",
2860
+ "name": "High Adventure Wear",
2861
+ "scopes": [
2862
+ "sfcc.products sfcc.catalogs sfcc.products.ro"
2863
+ ],
2864
+ "redirectUri": "http://localhost:9010/callback",
2865
+ "callbackUri": "http://localhost:9010/pwd/reset/callback",
2866
+ "channels": [
2867
+ "SiteGenesis",
2868
+ "OtherSite"
2869
+ ],
2870
+ "isPrivateClient": true,
2871
+ "loginEpRestrict": false,
2872
+ "isSixDigitOtp": false,
2873
+ "strictClientAuth": false
2874
+ },
2875
+ {
2876
+ "clientId": "slas-default-client-1",
2877
+ "secret": "",
2878
+ "name": "Shop Salesforce",
2879
+ "scopes": [
2880
+ "sfcc.products.ro sfcc.catalogs.ro"
2881
+ ],
2882
+ "redirectUri": "http://localhost:9010/callback",
2883
+ "callbackUri": "http://localhost:9010/pwd/reset/callback",
2884
+ "channels": [
2885
+ "SiteGenesis",
2886
+ "OtherSite"
2887
+ ],
2888
+ "isPrivateClient": true,
2889
+ "loginEpRestrict": false,
2890
+ "isSixDigitOtp": false,
2891
+ "strictClientAuth": false
2892
+ }
2893
+ ]
2894
+ }
2895
+ },
2896
+ "ClientTenantException401": {
2897
+ "value": {
2898
+ "type": "ClientTenantException",
2899
+ "title": "Unable to retrieve resource because the tenant id was invalid",
2900
+ "detail": "Tenant id was not found. Please check the tenant id."
2901
+ }
2902
+ },
2903
+ "ClientNotFoundException404": {
2904
+ "value": {
2905
+ "type": "ClientNotFoundException",
2906
+ "title": "Unable to retrieve resource because no resource was found with that value",
2907
+ "detail": "Client Not Found"
2908
+ }
2909
+ },
2910
+ "Client": {
2911
+ "value": {
2912
+ "clientId": "client-id1",
2913
+ "name": "High Adventure Wear",
2914
+ "secret": "secret1234",
2915
+ "scopes": [
2916
+ "sfcc.products sfcc.catalogs sfcc.customers:ro"
2917
+ ],
2918
+ "redirectUri": "http://localhost/callback",
2919
+ "callbackUri": "http://localhost:9010/pwd/reset/callback",
2920
+ "channels": [
2921
+ "SiteGenesis",
2922
+ "OtherSite"
2923
+ ],
2924
+ "isPrivateClient": true,
2925
+ "loginEpRestrict": false,
2926
+ "isSixDigitOtp": false,
2927
+ "strictClientAuth": false
2928
+ }
2929
+ },
2930
+ "ClientRequestException400": {
2931
+ "value": {
2932
+ "type": "ClientRequestException",
2933
+ "title": "Unable to retrieve resource because the client id was invalid",
2934
+ "detail": "Client id is invalid"
2935
+ }
2936
+ },
2937
+ "ClientRequest": {
2938
+ "value": {
2939
+ "clientId": "client-id1",
2940
+ "secret": "secret12345",
2941
+ "name": "High Adventure Wear",
2942
+ "scopes": [
2943
+ "sfcc.products",
2944
+ "sfcc.catalogs",
2945
+ "sfcc.products.ro"
2946
+ ],
2947
+ "redirectUri": [
2948
+ "http://localhost:9010/callback"
2949
+ ],
2950
+ "callbackUri": [
2951
+ "http://localhost:9010/pwd/reset/callback"
2952
+ ],
2953
+ "channels": [
2954
+ "SiteGenesis",
2955
+ "OtherSite"
2956
+ ],
2957
+ "isPrivateClient": true,
2958
+ "loginEpRestrict": false,
2959
+ "isSixDigitOtp": false,
2960
+ "strictClientAuth": false
2961
+ }
2962
+ },
2963
+ "ClientWithSecret": {
2964
+ "value": {
2965
+ "clientId": "client-id1",
2966
+ "name": "High Adventure Wear",
2967
+ "secret": "secret12345",
2968
+ "scopes": [
2969
+ "sfcc.products",
2970
+ "sfcc.catalogs",
2971
+ "sfcc.customers:ro"
2972
+ ],
2973
+ "redirectUri": "http://localhost:9010/callback",
2974
+ "callbackUri": "http://localhost:9010/pwd/reset/callback",
2975
+ "channels": [
2976
+ "SiteGenesis",
2977
+ "OtherSite"
2978
+ ],
2979
+ "isPrivateClient": true,
2980
+ "loginEpRestrict": false,
2981
+ "isSixDigitOtp": false,
2982
+ "strictClientAuth": false
2983
+ }
2984
+ },
2985
+ "ClientConflictException409": {
2986
+ "value": {
2987
+ "type": "ClientConflictException",
2988
+ "title": "Unable to create resource because a duplicate resource was found",
2989
+ "detail": "Client was not created. Duplicate resource was found."
2990
+ }
2991
+ },
2992
+ "PasswordActionTemplate": {
2993
+ "value": {
2994
+ "channelId": "SiteGenesis",
2995
+ "name": "Passwordless SMS Template",
2996
+ "subject": "Passwordless Token Request",
2997
+ "link": "This is your passwordless token: ${token}",
2998
+ "locale": "en-us",
2999
+ "actionType": "PWDLESS_LOGIN",
3000
+ "templateType": "SMS",
3001
+ "template": "Passwordless Login Token Request\n\nHello ${name},\nYou're receiving this because you requested a passwordless login token for your account.\n${link}"
3002
+ }
3003
+ },
3004
+ "BadRequestException400": {
3005
+ "value": {
3006
+ "type": "BadRequestException",
3007
+ "title": "Unable to update resource because the request body was invalid",
3008
+ "detail": "Request body is invalid."
3009
+ }
3010
+ },
3011
+ "PasswordActionTemplateNotFoundException404": {
3012
+ "value": {
3013
+ "type": "PasswordActionTemplateNotFoundException",
3014
+ "title": "Template was not found",
3015
+ "detail": "Template was not found."
3016
+ }
3017
+ },
3018
+ "PasswordActionTemplateRequest": {
3019
+ "value": {
3020
+ "channelId": "SiteGenesis",
3021
+ "name": "Passwordless SMS Template",
3022
+ "subject": "Passwordless Token Request",
3023
+ "link": "This is your passwordless token: ${token}",
3024
+ "locale": "en-us",
3025
+ "actionType": "PWDLESS_LOGIN",
3026
+ "templateType": "SMS",
3027
+ "template": "Passwordless Login Token Request\nHello ${name},\nYou're receiving this because you requested a passwordless login token for your account.\n${link}"
3028
+ }
3029
+ },
3030
+ "PasswordActionTemplateCreateException400": {
3031
+ "value": {
3032
+ "type": "PasswordActionTemplateCreateException",
3033
+ "title": "Template was not created or updated",
3034
+ "detail": "Template was not created or updated."
3035
+ }
3036
+ },
3037
+ "PasswordActionTemplateDeleteException400": {
3038
+ "value": {
3039
+ "type": "PasswordActionTemplateDeleteException",
3040
+ "title": "Template was not deleted",
3041
+ "detail": "Template was not deleted."
3042
+ }
3043
+ },
3044
+ "IdpListResponse": {
3045
+ "value": {
3046
+ "data": [
3047
+ {
3048
+ "name": "google",
3049
+ "clientId": "idp-client-id",
3050
+ "clientSecret": "idp-secret",
3051
+ "authUrl": "https://accounts.google.com/o/oauth2/v2/auth",
3052
+ "tokenUrl": "https://oauth2.googleapis.com/token",
3053
+ "tokenInfoUrl": "https://oauth2.googleapis.com/tokeninfo",
3054
+ "userInfoUrl": "https://www.googleapis.com/oauth2/v3/userinfo",
3055
+ "redirectUrl": "http://localhost:9010/hydra/callback",
3056
+ "wellKnownUrl": "https://accounts.google.com/.well-known/openid-configuration",
3057
+ "scopes": [
3058
+ "openid",
3059
+ "email",
3060
+ "profile"
3061
+ ],
3062
+ "isPreferred": true,
3063
+ "isClientCredsBody": false,
3064
+ "teamId": "appleTeamId",
3065
+ "keyId": "appleKeyId",
3066
+ "loginMergeClaims": [
3067
+ "email"
3068
+ ],
3069
+ "oidcClaimMapper": [
3070
+ "accessToken=access_token",
3071
+ "refreshToken=refresh_token",
3072
+ "accessTokenTTL=expires_in",
3073
+ "idToken=id_token",
3074
+ "subject=sub",
3075
+ "email=email",
3076
+ "userId=sub",
3077
+ "familyName=family_name",
3078
+ "givenName=given_name",
3079
+ "name=name"
3080
+ ]
3081
+ },
3082
+ {
3083
+ "name": "Facebook",
3084
+ "clientId": "idp-client-id",
3085
+ "clientSecret": "idp-secret",
3086
+ "authUrl": "https://www.facebook.com/v19.0/dialog/oauth",
3087
+ "tokenUrl": "https://graph.facebook.com/v19.0/oauth/access_token",
3088
+ "tokenInfoUrl": "https://graph.facebook.com/v19.0/debug_token",
3089
+ "userInfoUrl": "https://graph.facebook.com/v19.0/me",
3090
+ "redirectUrl": "http://my.host.com/api/v1/idp/callback/Facebook",
3091
+ "wellKnownUrl": "https://www.facebook.com/.well-known/openid-configuration",
3092
+ "scopes": [
3093
+ "openid",
3094
+ "email",
3095
+ "profile"
3096
+ ],
3097
+ "isPreferred": true,
3098
+ "isClientCredsBody": false,
3099
+ "teamId": "appleTeamId",
3100
+ "keyId": "appleKeyId",
3101
+ "loginMergeClaims": [
3102
+ "email"
3103
+ ],
3104
+ "oidcClaimMapper": [
3105
+ "accessToken=access_token",
3106
+ "refreshToken=refresh_token",
3107
+ "accessTokenTTL=expires_in",
3108
+ "idToken=id_token",
3109
+ "subject=sub",
3110
+ "email=email",
3111
+ "userId=sub",
3112
+ "familyName=family_name",
3113
+ "givenName=given_name",
3114
+ "name=name"
3115
+ ]
3116
+ }
3117
+ ]
3118
+ }
3119
+ },
3120
+ "IdpRequestException400": {
3121
+ "value": {
3122
+ "type": "IdpRequestException",
3123
+ "title": "Unable to update resource because the request body was invalid",
3124
+ "detail": "Request body is invalid."
3125
+ }
3126
+ },
3127
+ "IdpTenantException401": {
3128
+ "value": {
3129
+ "type": "IdpTenantException",
3130
+ "title": "Unable to update resource because the tenant id was invalid",
3131
+ "detail": "Tenant id is invalid"
3132
+ }
3133
+ },
3134
+ "IdpNotFoundException404": {
3135
+ "value": {
3136
+ "type": "IdpNotFoundException",
3137
+ "title": "Unable to update resource because no resource was found with that value",
3138
+ "detail": "Idp Not Found"
3139
+ }
3140
+ },
3141
+ "IdentityProvider": {
3142
+ "value": {
3143
+ "name": "google",
3144
+ "clientId": "idp-client-id",
3145
+ "clientSecret": "idp-secret",
3146
+ "authUrl": "https://accounts.google.com/o/oauth2/v2/auth",
3147
+ "tokenUrl": "https://oauth2.googleapis.com/token",
3148
+ "tokenInfoUrl": "https://oauth2.googleapis.com/tokeninfo",
3149
+ "userInfoUrl": "https://www.googleapis.com/oauth2/v3/userinfo",
3150
+ "redirectUrl": "http://localhost:9010/hydra/callback",
3151
+ "wellKnownUrl": "https://accounts.google.com/.well-known/openid-configuration",
3152
+ "scopes": [
3153
+ "openid",
3154
+ "email",
3155
+ "profile"
3156
+ ],
3157
+ "preferenceValue": true,
3158
+ "isClientCredsBody": false,
3159
+ "teamId": "appleTeamId",
3160
+ "keyId": "appleKeyId",
3161
+ "loginMergeClaims": [
3162
+ "email"
3163
+ ],
3164
+ "oidcClaimMapper": [
3165
+ "accessToken=access_token",
3166
+ "refreshToken=refresh_token",
3167
+ "accessTokenTTL=expires_in",
3168
+ "idToken=id_token",
3169
+ "subject=sub",
3170
+ "email=email",
3171
+ "userId=sub",
3172
+ "familyName=family_name",
3173
+ "givenName=given_name",
3174
+ "name=name"
3175
+ ]
3176
+ }
3177
+ },
3178
+ "IdpProviderResponse": {
3179
+ "value": {
3180
+ "name": "google",
3181
+ "clientId": "idp-client-id",
3182
+ "clientSecret": "idp-secret",
3183
+ "authUrl": "https://accounts.google.com/o/oauth2/v2/auth",
3184
+ "tokenUrl": "https://oauth2.googleapis.com/token",
3185
+ "tokenInfoUrl": "https://oauth2.googleapis.com/tokeninfo",
3186
+ "userInfoUrl": "https://www.googleapis.com/oauth2/v3/userinfo",
3187
+ "redirectUrl": "http://localhost:9010/hydra/callback",
3188
+ "wellKnownUrl": "https://accounts.google.com/.well-known/openid-configuration",
3189
+ "scopes": [
3190
+ "openid",
3191
+ "email",
3192
+ "profile"
3193
+ ],
3194
+ "isPreferred": true,
3195
+ "isClientCredsBody": false,
3196
+ "teamId": "appleTeamId",
3197
+ "keyId": "appleKeyId",
3198
+ "loginMergeClaims": [
3199
+ "email"
3200
+ ],
3201
+ "oidcClaimMapper": [
3202
+ "accessToken=access_token",
3203
+ "refreshToken=refresh_token",
3204
+ "accessTokenTTL=expires_in",
3205
+ "idToken=id_token",
3206
+ "subject=sub",
3207
+ "email=email",
3208
+ "userId=sub",
3209
+ "familyName=family_name",
3210
+ "givenName=given_name",
3211
+ "name=name"
3212
+ ]
3213
+ }
3214
+ },
3215
+ "IdpConflictException409": {
3216
+ "value": {
3217
+ "type": "IdpConflictException",
3218
+ "title": "Unable to create resource because a duplicate resource was found",
3219
+ "detail": "Idp was not created. Duplicate resource was found."
3220
+ }
3221
+ },
3222
+ "ShopperDeleteException400": {
3223
+ "value": {
3224
+ "type": "ShopperDeleteException",
3225
+ "title": "Email address does not match stored email address",
3226
+ "detail": "Email address does not match stored email address"
3227
+ }
3228
+ },
3229
+ "ShopperNotFoundException404": {
3230
+ "value": {
3231
+ "type": "ShopperNotFoundException",
3232
+ "title": "SLAS USER was not found by customer id",
3233
+ "detail": "SLAS USER was not found by customer id"
3234
+ }
3235
+ }
3236
+ },
1889
3237
  "securitySchemes": {
1890
3238
  "BearerToken": {
1891
3239
  "type": "http",
3240
+ "description": "A security scheme that supplements SLAS Administration APIs that are secured with an B2c Commerce Account Manager JWT. This security scheme expects a valid B2C Commerce Account Manager Bearer token passed in the Authorization header to permit API access.",
1892
3241
  "scheme": "bearer",
1893
3242
  "bearerFormat": "JWT"
1894
3243
  }