@salesforce/b2c-tooling-sdk 1.9.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/content-schemas/componenttype.json +37 -0
- package/dist/esm/config/dw-json.d.ts +9 -2
- package/dist/esm/config/dw-json.js.map +1 -1
- package/dist/esm/config/index.d.ts +2 -2
- package/dist/esm/config/index.js +1 -1
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/mapping.d.ts +7 -1
- package/dist/esm/config/mapping.js +10 -0
- package/dist/esm/config/mapping.js.map +1 -1
- package/dist/esm/config/sources/package-json-source.js +1 -0
- package/dist/esm/config/sources/package-json-source.js.map +1 -1
- package/dist/esm/config/types.d.ts +23 -2
- package/dist/esm/operations/content/validate.js +46 -4
- package/dist/esm/operations/content/validate.js.map +1 -1
- package/dist/esm/operations/jobs/site-archive.d.ts +12 -0
- package/dist/esm/operations/jobs/site-archive.js +107 -3
- package/dist/esm/operations/jobs/site-archive.js.map +1 -1
- package/package.json +73 -285
- package/dist/cjs/auth/api-key.d.ts +0 -28
- package/dist/cjs/auth/api-key.js +0 -45
- package/dist/cjs/auth/api-key.js.map +0 -1
- package/dist/cjs/auth/basic.d.ts +0 -7
- package/dist/cjs/auth/basic.js +0 -20
- package/dist/cjs/auth/basic.js.map +0 -1
- package/dist/cjs/auth/index.d.ts +0 -74
- package/dist/cjs/auth/index.js +0 -76
- package/dist/cjs/auth/index.js.map +0 -1
- package/dist/cjs/auth/jwt-utils.d.ts +0 -25
- package/dist/cjs/auth/jwt-utils.js +0 -66
- package/dist/cjs/auth/jwt-utils.js.map +0 -1
- package/dist/cjs/auth/middleware.d.ts +0 -196
- package/dist/cjs/auth/middleware.js +0 -190
- package/dist/cjs/auth/middleware.js.map +0 -1
- package/dist/cjs/auth/oauth-implicit.d.ts +0 -89
- package/dist/cjs/auth/oauth-implicit.js +0 -350
- package/dist/cjs/auth/oauth-implicit.js.map +0 -1
- package/dist/cjs/auth/oauth-jwt.d.ts +0 -99
- package/dist/cjs/auth/oauth-jwt.js +0 -343
- package/dist/cjs/auth/oauth-jwt.js.map +0 -1
- package/dist/cjs/auth/oauth.d.ts +0 -88
- package/dist/cjs/auth/oauth.js +0 -252
- package/dist/cjs/auth/oauth.js.map +0 -1
- package/dist/cjs/auth/resolve.d.ts +0 -100
- package/dist/cjs/auth/resolve.js +0 -175
- package/dist/cjs/auth/resolve.js.map +0 -1
- package/dist/cjs/auth/stateful-oauth-strategy.d.ts +0 -39
- package/dist/cjs/auth/stateful-oauth-strategy.js +0 -130
- package/dist/cjs/auth/stateful-oauth-strategy.js.map +0 -1
- package/dist/cjs/auth/stateful-store.d.ts +0 -49
- package/dist/cjs/auth/stateful-store.js +0 -166
- package/dist/cjs/auth/stateful-store.js.map +0 -1
- package/dist/cjs/auth/types.d.ts +0 -124
- package/dist/cjs/auth/types.js +0 -8
- package/dist/cjs/auth/types.js.map +0 -1
- package/dist/cjs/cli/am-command.d.ts +0 -74
- package/dist/cjs/cli/am-command.js +0 -199
- package/dist/cjs/cli/am-command.js.map +0 -1
- package/dist/cjs/cli/base-command.d.ts +0 -232
- package/dist/cjs/cli/base-command.js +0 -695
- package/dist/cjs/cli/base-command.js.map +0 -1
- package/dist/cjs/cli/cartridge-command.d.ts +0 -67
- package/dist/cjs/cli/cartridge-command.js +0 -146
- package/dist/cjs/cli/cartridge-command.js.map +0 -1
- package/dist/cjs/cli/cartridge-providers.d.ts +0 -149
- package/dist/cjs/cli/cartridge-providers.js +0 -103
- package/dist/cjs/cli/cartridge-providers.js.map +0 -1
- package/dist/cjs/cli/columns.d.ts +0 -128
- package/dist/cjs/cli/columns.js +0 -128
- package/dist/cjs/cli/columns.js.map +0 -1
- package/dist/cjs/cli/config.d.ts +0 -159
- package/dist/cjs/cli/config.js +0 -185
- package/dist/cjs/cli/config.js.map +0 -1
- package/dist/cjs/cli/details.d.ts +0 -69
- package/dist/cjs/cli/details.js +0 -72
- package/dist/cjs/cli/details.js.map +0 -1
- package/dist/cjs/cli/hooks.d.ts +0 -324
- package/dist/cjs/cli/hooks.js +0 -3
- package/dist/cjs/cli/hooks.js.map +0 -1
- package/dist/cjs/cli/index.d.ts +0 -108
- package/dist/cjs/cli/index.js +0 -111
- package/dist/cjs/cli/index.js.map +0 -1
- package/dist/cjs/cli/instance-command.d.ts +0 -131
- package/dist/cjs/cli/instance-command.js +0 -214
- package/dist/cjs/cli/instance-command.js.map +0 -1
- package/dist/cjs/cli/job-command.d.ts +0 -32
- package/dist/cjs/cli/job-command.js +0 -60
- package/dist/cjs/cli/job-command.js.map +0 -1
- package/dist/cjs/cli/lifecycle.d.ts +0 -189
- package/dist/cjs/cli/lifecycle.js +0 -130
- package/dist/cjs/cli/lifecycle.js.map +0 -1
- package/dist/cjs/cli/mrt-command.d.ts +0 -57
- package/dist/cjs/cli/mrt-command.js +0 -95
- package/dist/cjs/cli/mrt-command.js.map +0 -1
- package/dist/cjs/cli/oauth-command.d.ts +0 -122
- package/dist/cjs/cli/oauth-command.js +0 -311
- package/dist/cjs/cli/oauth-command.js.map +0 -1
- package/dist/cjs/cli/ods-command.d.ts +0 -97
- package/dist/cjs/cli/ods-command.js +0 -136
- package/dist/cjs/cli/ods-command.js.map +0 -1
- package/dist/cjs/cli/table.d.ts +0 -113
- package/dist/cjs/cli/table.js +0 -175
- package/dist/cjs/cli/table.js.map +0 -1
- package/dist/cjs/cli/webdav-command.d.ts +0 -110
- package/dist/cjs/cli/webdav-command.js +0 -106
- package/dist/cjs/cli/webdav-command.js.map +0 -1
- package/dist/cjs/clients/am-api.d.ts +0 -521
- package/dist/cjs/clients/am-api.js +0 -992
- package/dist/cjs/clients/am-api.js.map +0 -1
- package/dist/cjs/clients/am-apiclients-api.generated.d.ts +0 -803
- package/dist/cjs/clients/am-apiclients-api.generated.js +0 -6
- package/dist/cjs/clients/am-apiclients-api.generated.js.map +0 -1
- package/dist/cjs/clients/am-roles-api.generated.d.ts +0 -298
- package/dist/cjs/clients/am-roles-api.generated.js +0 -6
- package/dist/cjs/clients/am-roles-api.generated.js.map +0 -1
- package/dist/cjs/clients/am-users-api.generated.d.ts +0 -954
- package/dist/cjs/clients/am-users-api.generated.js +0 -6
- package/dist/cjs/clients/am-users-api.generated.js.map +0 -1
- package/dist/cjs/clients/cdn-zones.d.ts +0 -186
- package/dist/cjs/clients/cdn-zones.generated.d.ts +0 -8330
- package/dist/cjs/clients/cdn-zones.generated.js +0 -6
- package/dist/cjs/clients/cdn-zones.generated.js.map +0 -1
- package/dist/cjs/clients/cdn-zones.js +0 -103
- package/dist/cjs/clients/cdn-zones.js.map +0 -1
- package/dist/cjs/clients/cip.d.ts +0 -162
- package/dist/cjs/clients/cip.js +0 -572
- package/dist/cjs/clients/cip.js.map +0 -1
- package/dist/cjs/clients/custom-apis.d.ts +0 -174
- package/dist/cjs/clients/custom-apis.generated.d.ts +0 -202
- package/dist/cjs/clients/custom-apis.generated.js +0 -6
- package/dist/cjs/clients/custom-apis.generated.js.map +0 -1
- package/dist/cjs/clients/custom-apis.js +0 -140
- package/dist/cjs/clients/custom-apis.js.map +0 -1
- package/dist/cjs/clients/error-utils.d.ts +0 -35
- package/dist/cjs/clients/error-utils.js +0 -69
- package/dist/cjs/clients/error-utils.js.map +0 -1
- package/dist/cjs/clients/granular-replications.d.ts +0 -70
- package/dist/cjs/clients/granular-replications.generated.d.ts +0 -416
- package/dist/cjs/clients/granular-replications.generated.js +0 -6
- package/dist/cjs/clients/granular-replications.generated.js.map +0 -1
- package/dist/cjs/clients/granular-replications.js +0 -73
- package/dist/cjs/clients/granular-replications.js.map +0 -1
- package/dist/cjs/clients/index.d.ts +0 -145
- package/dist/cjs/clients/index.js +0 -137
- package/dist/cjs/clients/index.js.map +0 -1
- package/dist/cjs/clients/middleware-registry.d.ts +0 -184
- package/dist/cjs/clients/middleware-registry.js +0 -104
- package/dist/cjs/clients/middleware-registry.js.map +0 -1
- package/dist/cjs/clients/middleware.d.ts +0 -183
- package/dist/cjs/clients/middleware.js +0 -465
- package/dist/cjs/clients/middleware.js.map +0 -1
- package/dist/cjs/clients/mrt-b2c.d.ts +0 -138
- package/dist/cjs/clients/mrt-b2c.generated.d.ts +0 -176
- package/dist/cjs/clients/mrt-b2c.generated.js +0 -6
- package/dist/cjs/clients/mrt-b2c.generated.js.map +0 -1
- package/dist/cjs/clients/mrt-b2c.js +0 -86
- package/dist/cjs/clients/mrt-b2c.js.map +0 -1
- package/dist/cjs/clients/mrt.d.ts +0 -143
- package/dist/cjs/clients/mrt.generated.d.ts +0 -3806
- package/dist/cjs/clients/mrt.generated.js +0 -6
- package/dist/cjs/clients/mrt.generated.js.map +0 -1
- package/dist/cjs/clients/mrt.js +0 -93
- package/dist/cjs/clients/mrt.js.map +0 -1
- package/dist/cjs/clients/ocapi.d.ts +0 -128
- package/dist/cjs/clients/ocapi.generated.d.ts +0 -26052
- package/dist/cjs/clients/ocapi.generated.js +0 -6
- package/dist/cjs/clients/ocapi.generated.js.map +0 -1
- package/dist/cjs/clients/ocapi.js +0 -78
- package/dist/cjs/clients/ocapi.js.map +0 -1
- package/dist/cjs/clients/ods.d.ts +0 -160
- package/dist/cjs/clients/ods.generated.d.ts +0 -2860
- package/dist/cjs/clients/ods.generated.js +0 -6
- package/dist/cjs/clients/ods.generated.js.map +0 -1
- package/dist/cjs/clients/ods.js +0 -103
- package/dist/cjs/clients/ods.js.map +0 -1
- package/dist/cjs/clients/scapi-schemas.d.ts +0 -161
- package/dist/cjs/clients/scapi-schemas.generated.d.ts +0 -328
- package/dist/cjs/clients/scapi-schemas.generated.js +0 -6
- package/dist/cjs/clients/scapi-schemas.generated.js.map +0 -1
- package/dist/cjs/clients/scapi-schemas.js +0 -98
- package/dist/cjs/clients/scapi-schemas.js.map +0 -1
- package/dist/cjs/clients/slas-admin.d.ts +0 -132
- package/dist/cjs/clients/slas-admin.generated.d.ts +0 -1434
- package/dist/cjs/clients/slas-admin.generated.js +0 -6
- package/dist/cjs/clients/slas-admin.generated.js.map +0 -1
- package/dist/cjs/clients/slas-admin.js +0 -79
- package/dist/cjs/clients/slas-admin.js.map +0 -1
- package/dist/cjs/clients/tls-dispatcher.d.ts +0 -42
- package/dist/cjs/clients/tls-dispatcher.js +0 -107
- package/dist/cjs/clients/tls-dispatcher.js.map +0 -1
- package/dist/cjs/clients/user-agent.d.ts +0 -43
- package/dist/cjs/clients/user-agent.js +0 -87
- package/dist/cjs/clients/user-agent.js.map +0 -1
- package/dist/cjs/clients/webdav.d.ts +0 -186
- package/dist/cjs/clients/webdav.js +0 -395
- package/dist/cjs/clients/webdav.js.map +0 -1
- package/dist/cjs/config/config-source-registry.d.ts +0 -115
- package/dist/cjs/config/config-source-registry.js +0 -103
- package/dist/cjs/config/config-source-registry.js.map +0 -1
- package/dist/cjs/config/dw-json.d.ts +0 -267
- package/dist/cjs/config/dw-json.js +0 -333
- package/dist/cjs/config/dw-json.js.map +0 -1
- package/dist/cjs/config/index.d.ts +0 -100
- package/dist/cjs/config/index.js +0 -110
- package/dist/cjs/config/index.js.map +0 -1
- package/dist/cjs/config/instance-manager.d.ts +0 -97
- package/dist/cjs/config/instance-manager.js +0 -166
- package/dist/cjs/config/instance-manager.js.map +0 -1
- package/dist/cjs/config/mapping.d.ts +0 -193
- package/dist/cjs/config/mapping.js +0 -530
- package/dist/cjs/config/mapping.js.map +0 -1
- package/dist/cjs/config/resolved-config.d.ts +0 -29
- package/dist/cjs/config/resolved-config.js +0 -81
- package/dist/cjs/config/resolved-config.js.map +0 -1
- package/dist/cjs/config/resolver.d.ts +0 -191
- package/dist/cjs/config/resolver.js +0 -406
- package/dist/cjs/config/resolver.js.map +0 -1
- package/dist/cjs/config/sources/dw-json-source.d.ts +0 -27
- package/dist/cjs/config/sources/dw-json-source.js +0 -106
- package/dist/cjs/config/sources/dw-json-source.js.map +0 -1
- package/dist/cjs/config/sources/env-source.d.ts +0 -32
- package/dist/cjs/config/sources/env-source.js +0 -116
- package/dist/cjs/config/sources/env-source.js.map +0 -1
- package/dist/cjs/config/sources/index.d.ts +0 -9
- package/dist/cjs/config/sources/index.js +0 -15
- package/dist/cjs/config/sources/index.js.map +0 -1
- package/dist/cjs/config/sources/mobify-source.d.ts +0 -25
- package/dist/cjs/config/sources/mobify-source.js +0 -84
- package/dist/cjs/config/sources/mobify-source.js.map +0 -1
- package/dist/cjs/config/sources/package-json-source.d.ts +0 -14
- package/dist/cjs/config/sources/package-json-source.js +0 -96
- package/dist/cjs/config/sources/package-json-source.js.map +0 -1
- package/dist/cjs/config/types.d.ts +0 -407
- package/dist/cjs/config/types.js +0 -2
- package/dist/cjs/config/types.js.map +0 -1
- package/dist/cjs/defaults.d.ts +0 -36
- package/dist/cjs/defaults.js +0 -54
- package/dist/cjs/defaults.js.map +0 -1
- package/dist/cjs/discovery/detector.d.ts +0 -75
- package/dist/cjs/discovery/detector.js +0 -108
- package/dist/cjs/discovery/detector.js.map +0 -1
- package/dist/cjs/discovery/index.d.ts +0 -63
- package/dist/cjs/discovery/index.js +0 -70
- package/dist/cjs/discovery/index.js.map +0 -1
- package/dist/cjs/discovery/patterns/cartridges.d.ts +0 -16
- package/dist/cjs/discovery/patterns/cartridges.js +0 -16
- package/dist/cjs/discovery/patterns/cartridges.js.map +0 -1
- package/dist/cjs/discovery/patterns/index.d.ts +0 -21
- package/dist/cjs/discovery/patterns/index.js +0 -16
- package/dist/cjs/discovery/patterns/index.js.map +0 -1
- package/dist/cjs/discovery/patterns/pwa-kit.d.ts +0 -15
- package/dist/cjs/discovery/patterns/pwa-kit.js +0 -26
- package/dist/cjs/discovery/patterns/pwa-kit.js.map +0 -1
- package/dist/cjs/discovery/patterns/sfra.d.ts +0 -34
- package/dist/cjs/discovery/patterns/sfra.js +0 -50
- package/dist/cjs/discovery/patterns/sfra.js.map +0 -1
- package/dist/cjs/discovery/patterns/storefront-next.d.ts +0 -10
- package/dist/cjs/discovery/patterns/storefront-next.js +0 -65
- package/dist/cjs/discovery/patterns/storefront-next.js.map +0 -1
- package/dist/cjs/discovery/types.d.ts +0 -47
- package/dist/cjs/discovery/types.js +0 -12
- package/dist/cjs/discovery/types.js.map +0 -1
- package/dist/cjs/discovery/utils.d.ts +0 -44
- package/dist/cjs/discovery/utils.js +0 -82
- package/dist/cjs/discovery/utils.js.map +0 -1
- package/dist/cjs/docs/download.d.ts +0 -45
- package/dist/cjs/docs/download.js +0 -96
- package/dist/cjs/docs/download.js.map +0 -1
- package/dist/cjs/docs/index.d.ts +0 -44
- package/dist/cjs/docs/index.js +0 -12
- package/dist/cjs/docs/index.js.map +0 -1
- package/dist/cjs/docs/schema.d.ts +0 -26
- package/dist/cjs/docs/schema.js +0 -92
- package/dist/cjs/docs/schema.js.map +0 -1
- package/dist/cjs/docs/search.d.ts +0 -67
- package/dist/cjs/docs/search.js +0 -128
- package/dist/cjs/docs/search.js.map +0 -1
- package/dist/cjs/docs/types.d.ts +0 -64
- package/dist/cjs/docs/types.js +0 -15
- package/dist/cjs/docs/types.js.map +0 -1
- package/dist/cjs/errors/http-error.d.ts +0 -34
- package/dist/cjs/errors/http-error.js +0 -45
- package/dist/cjs/errors/http-error.js.map +0 -1
- package/dist/cjs/errors/index.d.ts +0 -12
- package/dist/cjs/errors/index.js +0 -18
- package/dist/cjs/errors/index.js.map +0 -1
- package/dist/cjs/i18n/index.d.ts +0 -144
- package/dist/cjs/i18n/index.js +0 -245
- package/dist/cjs/i18n/index.js.map +0 -1
- package/dist/cjs/i18n/locales/de.d.ts +0 -13
- package/dist/cjs/i18n/locales/de.js +0 -19
- package/dist/cjs/i18n/locales/de.js.map +0 -1
- package/dist/cjs/i18n/locales/index.d.ts +0 -28
- package/dist/cjs/i18n/locales/index.js +0 -25
- package/dist/cjs/i18n/locales/index.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -33
- package/dist/cjs/index.js +0 -41
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/instance/index.d.ts +0 -136
- package/dist/cjs/instance/index.js +0 -131
- package/dist/cjs/instance/index.js.map +0 -1
- package/dist/cjs/logging/index.d.ts +0 -116
- package/dist/cjs/logging/index.js +0 -121
- package/dist/cjs/logging/index.js.map +0 -1
- package/dist/cjs/logging/logger.d.ts +0 -9
- package/dist/cjs/logging/logger.js +0 -138
- package/dist/cjs/logging/logger.js.map +0 -1
- package/dist/cjs/logging/types.d.ts +0 -45
- package/dist/cjs/logging/types.js +0 -10
- package/dist/cjs/logging/types.js.map +0 -1
- package/dist/cjs/operations/bm-roles/index.d.ts +0 -52
- package/dist/cjs/operations/bm-roles/index.js +0 -57
- package/dist/cjs/operations/bm-roles/index.js.map +0 -1
- package/dist/cjs/operations/bm-roles/roles.d.ts +0 -155
- package/dist/cjs/operations/bm-roles/roles.js +0 -194
- package/dist/cjs/operations/bm-roles/roles.js.map +0 -1
- package/dist/cjs/operations/bm-users/index.d.ts +0 -50
- package/dist/cjs/operations/bm-users/index.js +0 -55
- package/dist/cjs/operations/bm-users/index.js.map +0 -1
- package/dist/cjs/operations/bm-users/users.d.ts +0 -189
- package/dist/cjs/operations/bm-users/users.js +0 -229
- package/dist/cjs/operations/bm-users/users.js.map +0 -1
- package/dist/cjs/operations/cap/index.d.ts +0 -56
- package/dist/cjs/operations/cap/index.js +0 -57
- package/dist/cjs/operations/cap/index.js.map +0 -1
- package/dist/cjs/operations/cap/install.d.ts +0 -53
- package/dist/cjs/operations/cap/install.js +0 -181
- package/dist/cjs/operations/cap/install.js.map +0 -1
- package/dist/cjs/operations/cap/list.d.ts +0 -92
- package/dist/cjs/operations/cap/list.js +0 -230
- package/dist/cjs/operations/cap/list.js.map +0 -1
- package/dist/cjs/operations/cap/package.d.ts +0 -39
- package/dist/cjs/operations/cap/package.js +0 -77
- package/dist/cjs/operations/cap/package.js.map +0 -1
- package/dist/cjs/operations/cap/pull.d.ts +0 -21
- package/dist/cjs/operations/cap/pull.js +0 -77
- package/dist/cjs/operations/cap/pull.js.map +0 -1
- package/dist/cjs/operations/cap/uninstall.d.ts +0 -46
- package/dist/cjs/operations/cap/uninstall.js +0 -87
- package/dist/cjs/operations/cap/uninstall.js.map +0 -1
- package/dist/cjs/operations/cap/validate.d.ts +0 -47
- package/dist/cjs/operations/cap/validate.js +0 -235
- package/dist/cjs/operations/cap/validate.js.map +0 -1
- package/dist/cjs/operations/cip/index.d.ts +0 -35
- package/dist/cjs/operations/cip/index.js +0 -128
- package/dist/cjs/operations/cip/index.js.map +0 -1
- package/dist/cjs/operations/cip/reports.d.ts +0 -2
- package/dist/cjs/operations/cip/reports.js +0 -210
- package/dist/cjs/operations/cip/reports.js.map +0 -1
- package/dist/cjs/operations/cip/types.d.ts +0 -97
- package/dist/cjs/operations/cip/types.js +0 -7
- package/dist/cjs/operations/cip/types.js.map +0 -1
- package/dist/cjs/operations/code/cartridges.d.ts +0 -46
- package/dist/cjs/operations/code/cartridges.js +0 -69
- package/dist/cjs/operations/code/cartridges.js.map +0 -1
- package/dist/cjs/operations/code/deploy.d.ts +0 -121
- package/dist/cjs/operations/code/deploy.js +0 -255
- package/dist/cjs/operations/code/deploy.js.map +0 -1
- package/dist/cjs/operations/code/download.d.ts +0 -77
- package/dist/cjs/operations/code/download.js +0 -300
- package/dist/cjs/operations/code/download.js.map +0 -1
- package/dist/cjs/operations/code/index.d.ts +0 -74
- package/dist/cjs/operations/code/index.js +0 -80
- package/dist/cjs/operations/code/index.js.map +0 -1
- package/dist/cjs/operations/code/upload-files.d.ts +0 -47
- package/dist/cjs/operations/code/upload-files.js +0 -116
- package/dist/cjs/operations/code/upload-files.js.map +0 -1
- package/dist/cjs/operations/code/versions.d.ts +0 -99
- package/dist/cjs/operations/code/versions.js +0 -156
- package/dist/cjs/operations/code/versions.js.map +0 -1
- package/dist/cjs/operations/code/watch.d.ts +0 -58
- package/dist/cjs/operations/code/watch.js +0 -175
- package/dist/cjs/operations/code/watch.js.map +0 -1
- package/dist/cjs/operations/content/asset-query.d.ts +0 -22
- package/dist/cjs/operations/content/asset-query.js +0 -77
- package/dist/cjs/operations/content/asset-query.js.map +0 -1
- package/dist/cjs/operations/content/export.d.ts +0 -57
- package/dist/cjs/operations/content/export.js +0 -221
- package/dist/cjs/operations/content/export.js.map +0 -1
- package/dist/cjs/operations/content/index.d.ts +0 -56
- package/dist/cjs/operations/content/index.js +0 -60
- package/dist/cjs/operations/content/index.js.map +0 -1
- package/dist/cjs/operations/content/library.d.ts +0 -137
- package/dist/cjs/operations/content/library.js +0 -396
- package/dist/cjs/operations/content/library.js.map +0 -1
- package/dist/cjs/operations/content/types.d.ts +0 -144
- package/dist/cjs/operations/content/types.js +0 -7
- package/dist/cjs/operations/content/types.js.map +0 -1
- package/dist/cjs/operations/content/validate.d.ts +0 -64
- package/dist/cjs/operations/content/validate.js +0 -170
- package/dist/cjs/operations/content/validate.js.map +0 -1
- package/dist/cjs/operations/debug/dap-adapter.d.ts +0 -72
- package/dist/cjs/operations/debug/dap-adapter.js +0 -505
- package/dist/cjs/operations/debug/dap-adapter.js.map +0 -1
- package/dist/cjs/operations/debug/debug-session.d.ts +0 -51
- package/dist/cjs/operations/debug/debug-session.js +0 -234
- package/dist/cjs/operations/debug/debug-session.js.map +0 -1
- package/dist/cjs/operations/debug/index.d.ts +0 -20
- package/dist/cjs/operations/debug/index.js +0 -21
- package/dist/cjs/operations/debug/index.js.map +0 -1
- package/dist/cjs/operations/debug/projections.d.ts +0 -72
- package/dist/cjs/operations/debug/projections.js +0 -84
- package/dist/cjs/operations/debug/projections.js.map +0 -1
- package/dist/cjs/operations/debug/resolve-path.d.ts +0 -15
- package/dist/cjs/operations/debug/resolve-path.js +0 -52
- package/dist/cjs/operations/debug/resolve-path.js.map +0 -1
- package/dist/cjs/operations/debug/sdapi-client.d.ts +0 -44
- package/dist/cjs/operations/debug/sdapi-client.js +0 -169
- package/dist/cjs/operations/debug/sdapi-client.js.map +0 -1
- package/dist/cjs/operations/debug/source-mapping.d.ts +0 -13
- package/dist/cjs/operations/debug/source-mapping.js +0 -57
- package/dist/cjs/operations/debug/source-mapping.js.map +0 -1
- package/dist/cjs/operations/debug/types.d.ts +0 -95
- package/dist/cjs/operations/debug/types.js +0 -2
- package/dist/cjs/operations/debug/types.js.map +0 -1
- package/dist/cjs/operations/debug/variable-store.d.ts +0 -35
- package/dist/cjs/operations/debug/variable-store.js +0 -52
- package/dist/cjs/operations/debug/variable-store.js.map +0 -1
- package/dist/cjs/operations/jobs/index.d.ts +0 -66
- package/dist/cjs/operations/jobs/index.js +0 -72
- package/dist/cjs/operations/jobs/index.js.map +0 -1
- package/dist/cjs/operations/jobs/run.d.ts +0 -239
- package/dist/cjs/operations/jobs/run.js +0 -324
- package/dist/cjs/operations/jobs/run.js.map +0 -1
- package/dist/cjs/operations/jobs/site-archive.d.ts +0 -267
- package/dist/cjs/operations/jobs/site-archive.js +0 -423
- package/dist/cjs/operations/jobs/site-archive.js.map +0 -1
- package/dist/cjs/operations/logs/index.d.ts +0 -65
- package/dist/cjs/operations/logs/index.js +0 -73
- package/dist/cjs/operations/logs/index.js.map +0 -1
- package/dist/cjs/operations/logs/list.d.ts +0 -35
- package/dist/cjs/operations/logs/list.js +0 -144
- package/dist/cjs/operations/logs/list.js.map +0 -1
- package/dist/cjs/operations/logs/path-normalizer.d.ts +0 -82
- package/dist/cjs/operations/logs/path-normalizer.js +0 -190
- package/dist/cjs/operations/logs/path-normalizer.js.map +0 -1
- package/dist/cjs/operations/logs/tail.d.ts +0 -92
- package/dist/cjs/operations/logs/tail.js +0 -525
- package/dist/cjs/operations/logs/tail.js.map +0 -1
- package/dist/cjs/operations/logs/types.d.ts +0 -132
- package/dist/cjs/operations/logs/types.js +0 -7
- package/dist/cjs/operations/logs/types.js.map +0 -1
- package/dist/cjs/operations/mrt/access-control.d.ts +0 -192
- package/dist/cjs/operations/mrt/access-control.js +0 -152
- package/dist/cjs/operations/mrt/access-control.js.map +0 -1
- package/dist/cjs/operations/mrt/b2c-config.d.ts +0 -201
- package/dist/cjs/operations/mrt/b2c-config.js +0 -210
- package/dist/cjs/operations/mrt/b2c-config.js.map +0 -1
- package/dist/cjs/operations/mrt/bundle.d.ts +0 -114
- package/dist/cjs/operations/mrt/bundle.js +0 -166
- package/dist/cjs/operations/mrt/bundle.js.map +0 -1
- package/dist/cjs/operations/mrt/cache.d.ts +0 -80
- package/dist/cjs/operations/mrt/cache.js +0 -65
- package/dist/cjs/operations/mrt/cache.js.map +0 -1
- package/dist/cjs/operations/mrt/certificate.d.ts +0 -60
- package/dist/cjs/operations/mrt/certificate.js +0 -76
- package/dist/cjs/operations/mrt/certificate.js.map +0 -1
- package/dist/cjs/operations/mrt/deployment.d.ts +0 -157
- package/dist/cjs/operations/mrt/deployment.js +0 -109
- package/dist/cjs/operations/mrt/deployment.js.map +0 -1
- package/dist/cjs/operations/mrt/env-var.d.ts +0 -176
- package/dist/cjs/operations/mrt/env-var.js +0 -231
- package/dist/cjs/operations/mrt/env-var.js.map +0 -1
- package/dist/cjs/operations/mrt/env.d.ts +0 -491
- package/dist/cjs/operations/mrt/env.js +0 -425
- package/dist/cjs/operations/mrt/env.js.map +0 -1
- package/dist/cjs/operations/mrt/index.d.ts +0 -75
- package/dist/cjs/operations/mrt/index.js +0 -81
- package/dist/cjs/operations/mrt/index.js.map +0 -1
- package/dist/cjs/operations/mrt/member.d.ts +0 -281
- package/dist/cjs/operations/mrt/member.js +0 -244
- package/dist/cjs/operations/mrt/member.js.map +0 -1
- package/dist/cjs/operations/mrt/notification.d.ts +0 -252
- package/dist/cjs/operations/mrt/notification.js +0 -206
- package/dist/cjs/operations/mrt/notification.js.map +0 -1
- package/dist/cjs/operations/mrt/organization-member.d.ts +0 -68
- package/dist/cjs/operations/mrt/organization-member.js +0 -88
- package/dist/cjs/operations/mrt/organization-member.js.map +0 -1
- package/dist/cjs/operations/mrt/organization.d.ts +0 -80
- package/dist/cjs/operations/mrt/organization.js +0 -53
- package/dist/cjs/operations/mrt/organization.js.map +0 -1
- package/dist/cjs/operations/mrt/project.d.ts +0 -261
- package/dist/cjs/operations/mrt/project.js +0 -232
- package/dist/cjs/operations/mrt/project.js.map +0 -1
- package/dist/cjs/operations/mrt/push.d.ts +0 -290
- package/dist/cjs/operations/mrt/push.js +0 -288
- package/dist/cjs/operations/mrt/push.js.map +0 -1
- package/dist/cjs/operations/mrt/redirect.d.ts +0 -337
- package/dist/cjs/operations/mrt/redirect.js +0 -256
- package/dist/cjs/operations/mrt/redirect.js.map +0 -1
- package/dist/cjs/operations/mrt/tail-logs.d.ts +0 -130
- package/dist/cjs/operations/mrt/tail-logs.js +0 -224
- package/dist/cjs/operations/mrt/tail-logs.js.map +0 -1
- package/dist/cjs/operations/mrt/user.d.ts +0 -135
- package/dist/cjs/operations/mrt/user.js +0 -153
- package/dist/cjs/operations/mrt/user.js.map +0 -1
- package/dist/cjs/operations/ods/index.d.ts +0 -10
- package/dist/cjs/operations/ods/index.js +0 -14
- package/dist/cjs/operations/ods/index.js.map +0 -1
- package/dist/cjs/operations/ods/sandbox-lookup.d.ts +0 -63
- package/dist/cjs/operations/ods/sandbox-lookup.js +0 -130
- package/dist/cjs/operations/ods/sandbox-lookup.js.map +0 -1
- package/dist/cjs/operations/ods/wait-for-clone.d.ts +0 -46
- package/dist/cjs/operations/ods/wait-for-clone.js +0 -100
- package/dist/cjs/operations/ods/wait-for-clone.js.map +0 -1
- package/dist/cjs/operations/ods/wait-for-sandbox.d.ts +0 -64
- package/dist/cjs/operations/ods/wait-for-sandbox.js +0 -114
- package/dist/cjs/operations/ods/wait-for-sandbox.js.map +0 -1
- package/dist/cjs/operations/orgs/index.d.ts +0 -74
- package/dist/cjs/operations/orgs/index.js +0 -33
- package/dist/cjs/operations/orgs/index.js.map +0 -1
- package/dist/cjs/operations/roles/index.d.ts +0 -43
- package/dist/cjs/operations/roles/index.js +0 -48
- package/dist/cjs/operations/roles/index.js.map +0 -1
- package/dist/cjs/operations/sites/cartridges.d.ts +0 -114
- package/dist/cjs/operations/sites/cartridges.js +0 -378
- package/dist/cjs/operations/sites/cartridges.js.map +0 -1
- package/dist/cjs/operations/sites/index.d.ts +0 -46
- package/dist/cjs/operations/sites/index.js +0 -51
- package/dist/cjs/operations/sites/index.js.map +0 -1
- package/dist/cjs/operations/users/index.d.ts +0 -153
- package/dist/cjs/operations/users/index.js +0 -139
- package/dist/cjs/operations/users/index.js.map +0 -1
- package/dist/cjs/operations/util/zip.d.ts +0 -5
- package/dist/cjs/operations/util/zip.js +0 -25
- package/dist/cjs/operations/util/zip.js.map +0 -1
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/plugins/discovery.d.ts +0 -46
- package/dist/cjs/plugins/discovery.js +0 -122
- package/dist/cjs/plugins/discovery.js.map +0 -1
- package/dist/cjs/plugins/index.d.ts +0 -26
- package/dist/cjs/plugins/index.js +0 -32
- package/dist/cjs/plugins/index.js.map +0 -1
- package/dist/cjs/plugins/loader.d.ts +0 -34
- package/dist/cjs/plugins/loader.js +0 -59
- package/dist/cjs/plugins/loader.js.map +0 -1
- package/dist/cjs/plugins/manager.d.ts +0 -70
- package/dist/cjs/plugins/manager.js +0 -173
- package/dist/cjs/plugins/manager.js.map +0 -1
- package/dist/cjs/safety/index.d.ts +0 -12
- package/dist/cjs/safety/index.js +0 -11
- package/dist/cjs/safety/index.js.map +0 -1
- package/dist/cjs/safety/safety-guard.d.ts +0 -92
- package/dist/cjs/safety/safety-guard.js +0 -270
- package/dist/cjs/safety/safety-guard.js.map +0 -1
- package/dist/cjs/safety/safety-middleware.d.ts +0 -130
- package/dist/cjs/safety/safety-middleware.js +0 -248
- package/dist/cjs/safety/safety-middleware.js.map +0 -1
- package/dist/cjs/safety/types.d.ts +0 -81
- package/dist/cjs/safety/types.js +0 -16
- package/dist/cjs/safety/types.js.map +0 -1
- package/dist/cjs/safety/with-confirmation.d.ts +0 -58
- package/dist/cjs/safety/with-confirmation.js +0 -67
- package/dist/cjs/safety/with-confirmation.js.map +0 -1
- package/dist/cjs/scaffold/engine.d.ts +0 -68
- package/dist/cjs/scaffold/engine.js +0 -149
- package/dist/cjs/scaffold/engine.js.map +0 -1
- package/dist/cjs/scaffold/executor.d.ts +0 -36
- package/dist/cjs/scaffold/executor.js +0 -293
- package/dist/cjs/scaffold/executor.js.map +0 -1
- package/dist/cjs/scaffold/index.d.ts +0 -76
- package/dist/cjs/scaffold/index.js +0 -23
- package/dist/cjs/scaffold/index.js.map +0 -1
- package/dist/cjs/scaffold/merge.d.ts +0 -63
- package/dist/cjs/scaffold/merge.js +0 -192
- package/dist/cjs/scaffold/merge.js.map +0 -1
- package/dist/cjs/scaffold/parameter-resolver.d.ts +0 -86
- package/dist/cjs/scaffold/parameter-resolver.js +0 -191
- package/dist/cjs/scaffold/parameter-resolver.js.map +0 -1
- package/dist/cjs/scaffold/registry.d.ts +0 -60
- package/dist/cjs/scaffold/registry.js +0 -225
- package/dist/cjs/scaffold/registry.js.map +0 -1
- package/dist/cjs/scaffold/sources.d.ts +0 -83
- package/dist/cjs/scaffold/sources.js +0 -236
- package/dist/cjs/scaffold/sources.js.map +0 -1
- package/dist/cjs/scaffold/types.d.ts +0 -282
- package/dist/cjs/scaffold/types.js +0 -14
- package/dist/cjs/scaffold/types.js.map +0 -1
- package/dist/cjs/scaffold/validation.d.ts +0 -81
- package/dist/cjs/scaffold/validation.js +0 -250
- package/dist/cjs/scaffold/validation.js.map +0 -1
- package/dist/cjs/scaffold/validators.d.ts +0 -33
- package/dist/cjs/scaffold/validators.js +0 -340
- package/dist/cjs/scaffold/validators.js.map +0 -1
- package/dist/cjs/schemas/collapse.d.ts +0 -150
- package/dist/cjs/schemas/collapse.js +0 -180
- package/dist/cjs/schemas/collapse.js.map +0 -1
- package/dist/cjs/schemas/index.d.ts +0 -58
- package/dist/cjs/schemas/index.js +0 -65
- package/dist/cjs/schemas/index.js.map +0 -1
- package/dist/cjs/schemas/security-schemes.d.ts +0 -26
- package/dist/cjs/schemas/security-schemes.js +0 -44
- package/dist/cjs/schemas/security-schemes.js.map +0 -1
- package/dist/cjs/skills/agents.d.ts +0 -42
- package/dist/cjs/skills/agents.js +0 -200
- package/dist/cjs/skills/agents.js.map +0 -1
- package/dist/cjs/skills/github.d.ts +0 -31
- package/dist/cjs/skills/github.js +0 -450
- package/dist/cjs/skills/github.js.map +0 -1
- package/dist/cjs/skills/index.d.ts +0 -43
- package/dist/cjs/skills/index.js +0 -16
- package/dist/cjs/skills/index.js.map +0 -1
- package/dist/cjs/skills/installer.d.ts +0 -35
- package/dist/cjs/skills/installer.js +0 -182
- package/dist/cjs/skills/installer.js.map +0 -1
- package/dist/cjs/skills/parser.d.ts +0 -39
- package/dist/cjs/skills/parser.js +0 -126
- package/dist/cjs/skills/parser.js.map +0 -1
- package/dist/cjs/skills/sources.d.ts +0 -4
- package/dist/cjs/skills/sources.js +0 -52
- package/dist/cjs/skills/sources.js.map +0 -1
- package/dist/cjs/skills/types.d.ts +0 -153
- package/dist/cjs/skills/types.js +0 -7
- package/dist/cjs/skills/types.js.map +0 -1
- package/dist/cjs/slas/index.d.ts +0 -12
- package/dist/cjs/slas/index.js +0 -8
- package/dist/cjs/slas/index.js.map +0 -1
- package/dist/cjs/slas/pkce.d.ts +0 -13
- package/dist/cjs/slas/pkce.js +0 -35
- package/dist/cjs/slas/pkce.js.map +0 -1
- package/dist/cjs/slas/token.d.ts +0 -24
- package/dist/cjs/slas/token.js +0 -261
- package/dist/cjs/slas/token.js.map +0 -1
- package/dist/cjs/slas/types.d.ts +0 -43
- package/dist/cjs/slas/types.js +0 -7
- package/dist/cjs/slas/types.js.map +0 -1
- package/dist/cjs/telemetry/index.d.ts +0 -34
- package/dist/cjs/telemetry/index.js +0 -32
- package/dist/cjs/telemetry/index.js.map +0 -1
- package/dist/cjs/telemetry/telemetry.d.ts +0 -88
- package/dist/cjs/telemetry/telemetry.js +0 -298
- package/dist/cjs/telemetry/telemetry.js.map +0 -1
- package/dist/cjs/telemetry/types.d.ts +0 -62
- package/dist/cjs/telemetry/types.js +0 -7
- package/dist/cjs/telemetry/types.js.map +0 -1
- package/dist/cjs/test-utils/config-isolation.d.ts +0 -2
- package/dist/cjs/test-utils/config-isolation.js +0 -48
- package/dist/cjs/test-utils/config-isolation.js.map +0 -1
- package/dist/cjs/test-utils/index.d.ts +0 -1
- package/dist/cjs/test-utils/index.js +0 -7
- package/dist/cjs/test-utils/index.js.map +0 -1
- package/dist/cjs/ux/confirm.d.ts +0 -14
- package/dist/cjs/ux/confirm.js +0 -36
- package/dist/cjs/ux/confirm.js.map +0 -1
- package/dist/cjs/ux/index.d.ts +0 -1
- package/dist/cjs/ux/index.js +0 -7
- package/dist/cjs/ux/index.js.map +0 -1
- package/dist/cjs/version.d.ts +0 -14
- package/dist/cjs/version.js +0 -29
- package/dist/cjs/version.js.map +0 -1
|
@@ -1,992 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
-
* SPDX-License-Identifier: Apache-2
|
|
4
|
-
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Account Manager API client for B2C Commerce.
|
|
8
|
-
*
|
|
9
|
-
* Provides clients for the Account Manager REST APIs including users, roles, and organizations.
|
|
10
|
-
* Uses openapi-fetch with OAuth authentication middleware for users and roles,
|
|
11
|
-
* and fetch with OAuth for organizations.
|
|
12
|
-
*
|
|
13
|
-
* @module clients/am-api
|
|
14
|
-
*/
|
|
15
|
-
import createClient from 'openapi-fetch';
|
|
16
|
-
import { createAuthMiddleware, createLoggingMiddleware } from './middleware.js';
|
|
17
|
-
import { globalMiddlewareRegistry } from './middleware-registry.js';
|
|
18
|
-
import { DEFAULT_ACCOUNT_MANAGER_HOST } from '../defaults.js';
|
|
19
|
-
import { getLogger } from '../logging/logger.js';
|
|
20
|
-
/**
|
|
21
|
-
* Regex for Account Manager role tenant filter format:
|
|
22
|
-
* ROLE_ENUM:realm_instance(,realm_instance)*(;ROLE_ENUM:...)*
|
|
23
|
-
* e.g. SALESFORCE_COMMERCE_API:abcd_prd or bm-admin:tenant1,tenant2;ECOM_USER:wxyz_stg
|
|
24
|
-
*/
|
|
25
|
-
export const ROLE_TENANT_FILTER_PATTERN = /^(\w+:\w{4,}_\w{3,}(,\w{4,}_\w{3,})*(;)?)*$/;
|
|
26
|
-
/**
|
|
27
|
-
* Returns true if the value matches the Account Manager role tenant filter format.
|
|
28
|
-
*/
|
|
29
|
-
export function isValidRoleTenantFilter(value) {
|
|
30
|
-
return value.length > 0 && ROLE_TENANT_FILTER_PATTERN.test(value);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Fetches all roles from the Account Manager roles API and builds a mapping
|
|
34
|
-
* between role `id` and `roleEnumName`.
|
|
35
|
-
*
|
|
36
|
-
* @param rolesClient - Account Manager Roles client
|
|
37
|
-
* @returns Role mapping
|
|
38
|
-
*/
|
|
39
|
-
export async function fetchRoleMapping(rolesClient) {
|
|
40
|
-
const result = await listRoles(rolesClient, { size: 100 });
|
|
41
|
-
const byId = new Map();
|
|
42
|
-
const byEnumName = new Map();
|
|
43
|
-
const descriptions = new Map();
|
|
44
|
-
for (const role of result.content || []) {
|
|
45
|
-
if (role.id && role.roleEnumName) {
|
|
46
|
-
byId.set(role.id, role.roleEnumName);
|
|
47
|
-
byEnumName.set(role.roleEnumName, role.id);
|
|
48
|
-
if (role.description) {
|
|
49
|
-
descriptions.set(role.roleEnumName, role.description);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return { byId, byEnumName, descriptions };
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Resolves a role to its internal `roleEnumName` using an API-fetched role mapping.
|
|
57
|
-
* Accepts either the role `id` (e.g., `bm-admin`) or `roleEnumName` (e.g., `ECOM_ADMIN`).
|
|
58
|
-
* Falls back to a generic transform (uppercase + replace hyphens with underscores) for unknown roles.
|
|
59
|
-
*/
|
|
60
|
-
export function resolveToInternalRole(role, mapping) {
|
|
61
|
-
// Already a known roleEnumName
|
|
62
|
-
if (mapping.byEnumName.has(role)) {
|
|
63
|
-
return role;
|
|
64
|
-
}
|
|
65
|
-
// Known role id → roleEnumName
|
|
66
|
-
const enumName = mapping.byId.get(role);
|
|
67
|
-
if (enumName) {
|
|
68
|
-
return enumName;
|
|
69
|
-
}
|
|
70
|
-
// Fallback: generic transform
|
|
71
|
-
return role.toUpperCase().replace(/-/g, '_');
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Resolves an internal `roleEnumName` to its external role `id` using an API-fetched role mapping.
|
|
75
|
-
* Falls back to a generic transform (lowercase + replace underscores with hyphens) for unknown roles.
|
|
76
|
-
*/
|
|
77
|
-
export function resolveFromInternalRole(roleEnumName, mapping) {
|
|
78
|
-
const id = mapping.byEnumName.get(roleEnumName);
|
|
79
|
-
if (id) {
|
|
80
|
-
return id;
|
|
81
|
-
}
|
|
82
|
-
// Fallback: generic transform
|
|
83
|
-
return roleEnumName.toLowerCase().replace(/_/g, '-');
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Creates a typed Account Manager Users API client.
|
|
87
|
-
*
|
|
88
|
-
* Returns the openapi-fetch client directly, with authentication
|
|
89
|
-
* handled via middleware. This gives full access to all openapi-fetch
|
|
90
|
-
* features with type-safe paths, parameters, and responses.
|
|
91
|
-
*
|
|
92
|
-
* @param config - Account Manager Users client configuration
|
|
93
|
-
* @param auth - Authentication strategy (typically OAuth)
|
|
94
|
-
* @returns Typed openapi-fetch client
|
|
95
|
-
*
|
|
96
|
-
* @example
|
|
97
|
-
* // Create Account Manager Users client with OAuth auth
|
|
98
|
-
* const oauthStrategy = new OAuthStrategy({
|
|
99
|
-
* clientId: 'your-client-id',
|
|
100
|
-
* clientSecret: 'your-client-secret',
|
|
101
|
-
* });
|
|
102
|
-
*
|
|
103
|
-
* const client = createAccountManagerUsersClient({}, oauthStrategy);
|
|
104
|
-
*
|
|
105
|
-
* // List users
|
|
106
|
-
* const { data, error } = await client.GET('/dw/rest/v1/users', {
|
|
107
|
-
* params: { query: { pageable: { size: 25, page: 0 } } }
|
|
108
|
-
* });
|
|
109
|
-
*/
|
|
110
|
-
export function createAccountManagerUsersClient(config, auth) {
|
|
111
|
-
const hostname = config.hostname ?? DEFAULT_ACCOUNT_MANAGER_HOST;
|
|
112
|
-
const registry = config.middlewareRegistry ?? globalMiddlewareRegistry;
|
|
113
|
-
const client = createClient({
|
|
114
|
-
baseUrl: `https://${hostname}`,
|
|
115
|
-
});
|
|
116
|
-
// Core middleware: auth first
|
|
117
|
-
client.use(createAuthMiddleware(auth));
|
|
118
|
-
// Transform pageable query parameters from bracket notation to flattened format
|
|
119
|
-
// This is needed because the API expects size=X&page=Y, not pageable[size]=X&pageable[page]=Y
|
|
120
|
-
client.use(createPageableTransformMiddleware());
|
|
121
|
-
// Plugin middleware from registry
|
|
122
|
-
for (const middleware of registry.getMiddleware('am-users-api')) {
|
|
123
|
-
client.use(middleware);
|
|
124
|
-
}
|
|
125
|
-
// Logging middleware last (sees complete request with all modifications)
|
|
126
|
-
client.use(createLoggingMiddleware('AM-USERS'));
|
|
127
|
-
return client;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Retrieves details of a user by ID.
|
|
131
|
-
*
|
|
132
|
-
* @param client - Account Manager Users client
|
|
133
|
-
* @param userId - User ID (UUID)
|
|
134
|
-
* @param expand - Optional array of fields to expand (organizations, roles)
|
|
135
|
-
* @returns User details
|
|
136
|
-
* @throws Error if user is not found or request fails
|
|
137
|
-
*/
|
|
138
|
-
export async function getUser(client, userId, expand) {
|
|
139
|
-
const result = await client.GET('/dw/rest/v1/users/{userId}', {
|
|
140
|
-
params: {
|
|
141
|
-
path: { userId },
|
|
142
|
-
query: expand && expand.length > 0 ? { expand } : undefined,
|
|
143
|
-
},
|
|
144
|
-
});
|
|
145
|
-
if (result.error) {
|
|
146
|
-
const error = result.error;
|
|
147
|
-
if (result.response?.status === 404) {
|
|
148
|
-
throw new Error(`User ${userId} not found`);
|
|
149
|
-
}
|
|
150
|
-
throw new Error(error.error?.message || `Failed to get user: ${JSON.stringify(result.error)}`);
|
|
151
|
-
}
|
|
152
|
-
if (!result.data) {
|
|
153
|
-
throw new Error('No data returned from API');
|
|
154
|
-
}
|
|
155
|
-
return result.data;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Lists users with pagination.
|
|
159
|
-
*
|
|
160
|
-
* @param client - Account Manager Users client
|
|
161
|
-
* @param options - List options (size, page)
|
|
162
|
-
* @returns Paginated user collection
|
|
163
|
-
* @throws Error if request fails
|
|
164
|
-
*/
|
|
165
|
-
export async function listUsers(client, options = {}) {
|
|
166
|
-
const { size = 20, page = 0 } = options;
|
|
167
|
-
const result = await client.GET('/dw/rest/v1/users', {
|
|
168
|
-
params: {
|
|
169
|
-
query: {
|
|
170
|
-
pageable: {
|
|
171
|
-
size,
|
|
172
|
-
page,
|
|
173
|
-
},
|
|
174
|
-
},
|
|
175
|
-
},
|
|
176
|
-
});
|
|
177
|
-
if (result.error) {
|
|
178
|
-
const error = result.error;
|
|
179
|
-
// Check for pagination out-of-bounds error
|
|
180
|
-
const errorMessage = error.errors?.[0]?.message || error.error?.message;
|
|
181
|
-
if (errorMessage?.includes('fromIndex') && errorMessage?.includes('toIndex')) {
|
|
182
|
-
throw new Error(`Page ${page} is out of bounds. The requested page exceeds the available data. Try a lower page number.`);
|
|
183
|
-
}
|
|
184
|
-
throw new Error(errorMessage || `Failed to list users: ${JSON.stringify(result.error)}`);
|
|
185
|
-
}
|
|
186
|
-
return result.data || { content: [] };
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Creates a new user.
|
|
190
|
-
*
|
|
191
|
-
* @param client - Account Manager Users client
|
|
192
|
-
* @param user - User details
|
|
193
|
-
* @returns Created user
|
|
194
|
-
* @throws Error if request fails
|
|
195
|
-
*/
|
|
196
|
-
export async function createUser(client, user) {
|
|
197
|
-
const result = await client.POST('/dw/rest/v1/users', {
|
|
198
|
-
body: user,
|
|
199
|
-
});
|
|
200
|
-
if (result.error) {
|
|
201
|
-
const error = result.error;
|
|
202
|
-
throw new Error(error.error?.message || `Failed to create user: ${JSON.stringify(result.error)}`);
|
|
203
|
-
}
|
|
204
|
-
if (!result.data) {
|
|
205
|
-
throw new Error('No data returned from API');
|
|
206
|
-
}
|
|
207
|
-
return result.data;
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Updates an existing user.
|
|
211
|
-
*
|
|
212
|
-
* @param client - Account Manager Users client
|
|
213
|
-
* @param userId - User ID
|
|
214
|
-
* @param changes - Changes to apply
|
|
215
|
-
* @returns Updated user
|
|
216
|
-
* @throws Error if request fails
|
|
217
|
-
*/
|
|
218
|
-
export async function updateUser(client, userId, changes) {
|
|
219
|
-
const result = await client.PUT('/dw/rest/v1/users/{userId}', {
|
|
220
|
-
params: { path: { userId } },
|
|
221
|
-
body: changes,
|
|
222
|
-
});
|
|
223
|
-
if (result.error) {
|
|
224
|
-
const error = result.error;
|
|
225
|
-
throw new Error(error.error?.message || `Failed to update user: ${JSON.stringify(result.error)}`);
|
|
226
|
-
}
|
|
227
|
-
if (!result.data) {
|
|
228
|
-
throw new Error('No data returned from API');
|
|
229
|
-
}
|
|
230
|
-
return result.data;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Disables a user (soft delete - sets userState to DELETED).
|
|
234
|
-
* Users must be disabled before they can be purged.
|
|
235
|
-
*
|
|
236
|
-
* @param client - Account Manager Users client
|
|
237
|
-
* @param userId - User ID
|
|
238
|
-
* @throws Error if request fails
|
|
239
|
-
*/
|
|
240
|
-
export async function deleteUser(client, userId) {
|
|
241
|
-
const result = await client.POST('/dw/rest/v1/users/{userId}/disable', {
|
|
242
|
-
params: { path: { userId } },
|
|
243
|
-
body: {},
|
|
244
|
-
});
|
|
245
|
-
if (result.error) {
|
|
246
|
-
const error = result.error;
|
|
247
|
-
throw new Error(error.error?.message || `Failed to delete user: ${JSON.stringify(result.error)}`);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Purges a user (hard delete).
|
|
252
|
-
* Users must be in DELETED state before they can be purged.
|
|
253
|
-
*
|
|
254
|
-
* @param client - Account Manager Users client
|
|
255
|
-
* @param userId - User ID
|
|
256
|
-
* @throws Error if request fails
|
|
257
|
-
*/
|
|
258
|
-
export async function purgeUser(client, userId) {
|
|
259
|
-
const result = await client.DELETE('/dw/rest/v1/users/{userId}', {
|
|
260
|
-
params: { path: { userId } },
|
|
261
|
-
});
|
|
262
|
-
if (result.error) {
|
|
263
|
-
const error = result.error;
|
|
264
|
-
throw new Error(error.error?.message || `Failed to purge user: ${JSON.stringify(result.error)}`);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Resets a user to INITIAL state and sends activation instructions.
|
|
269
|
-
*
|
|
270
|
-
* @param client - Account Manager Users client
|
|
271
|
-
* @param userId - User ID
|
|
272
|
-
* @throws Error if request fails
|
|
273
|
-
*/
|
|
274
|
-
export async function resetUser(client, userId) {
|
|
275
|
-
const result = await client.POST('/dw/rest/v1/users/{userId}/reset', {
|
|
276
|
-
params: { path: { userId } },
|
|
277
|
-
body: {},
|
|
278
|
-
});
|
|
279
|
-
if (result.error) {
|
|
280
|
-
const error = result.error;
|
|
281
|
-
throw new Error(error.error?.message || `Failed to reset user: ${JSON.stringify(result.error)}`);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Finds a user by login (email) using the dedicated search endpoint.
|
|
286
|
-
*
|
|
287
|
-
* @param client - Account Manager Users client
|
|
288
|
-
* @param login - User login (email)
|
|
289
|
-
* @param expand - Optional array of fields to expand (organizations, roles)
|
|
290
|
-
* @returns User if found, undefined if not found
|
|
291
|
-
* @throws Error if request fails
|
|
292
|
-
*/
|
|
293
|
-
export async function findUserByLogin(client, login, expand) {
|
|
294
|
-
const result = await client.GET('/dw/rest/v1/users/search/findByLogin', {
|
|
295
|
-
params: {
|
|
296
|
-
query: { login },
|
|
297
|
-
},
|
|
298
|
-
});
|
|
299
|
-
if (result.response?.status === 404) {
|
|
300
|
-
return undefined;
|
|
301
|
-
}
|
|
302
|
-
if (result.error) {
|
|
303
|
-
throw new Error(`Failed to search for user: ${JSON.stringify(result.error)}`);
|
|
304
|
-
}
|
|
305
|
-
const found = result.data;
|
|
306
|
-
if (!found) {
|
|
307
|
-
return undefined;
|
|
308
|
-
}
|
|
309
|
-
// If expand is requested, fetch the full user with expanded fields
|
|
310
|
-
if (expand && expand.length > 0 && found.id) {
|
|
311
|
-
return getUser(client, found.id, expand);
|
|
312
|
-
}
|
|
313
|
-
return found;
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Creates a typed Account Manager Roles API client.
|
|
317
|
-
*
|
|
318
|
-
* Returns the openapi-fetch client directly, with authentication
|
|
319
|
-
* handled via middleware. This gives full access to all openapi-fetch
|
|
320
|
-
* features with type-safe paths, parameters, and responses.
|
|
321
|
-
*
|
|
322
|
-
* @param config - Account Manager Roles client configuration
|
|
323
|
-
* @param auth - Authentication strategy (typically OAuth)
|
|
324
|
-
* @returns Typed openapi-fetch client
|
|
325
|
-
*
|
|
326
|
-
* @example
|
|
327
|
-
* // Create Account Manager Roles client with OAuth auth
|
|
328
|
-
* const oauthStrategy = new OAuthStrategy({
|
|
329
|
-
* clientId: 'your-client-id',
|
|
330
|
-
* clientSecret: 'your-client-secret',
|
|
331
|
-
* });
|
|
332
|
-
*
|
|
333
|
-
* const client = createAccountManagerRolesClient({}, oauthStrategy);
|
|
334
|
-
*
|
|
335
|
-
* // List roles
|
|
336
|
-
* const { data, error } = await client.GET('/dw/rest/v1/roles', {
|
|
337
|
-
* params: { query: { pageable: { size: 25, page: 0 } } }
|
|
338
|
-
* });
|
|
339
|
-
*/
|
|
340
|
-
export function createAccountManagerRolesClient(config, auth) {
|
|
341
|
-
const hostname = config.hostname ?? DEFAULT_ACCOUNT_MANAGER_HOST;
|
|
342
|
-
const registry = config.middlewareRegistry ?? globalMiddlewareRegistry;
|
|
343
|
-
const client = createClient({
|
|
344
|
-
baseUrl: `https://${hostname}`,
|
|
345
|
-
});
|
|
346
|
-
// Core middleware: auth first
|
|
347
|
-
client.use(createAuthMiddleware(auth));
|
|
348
|
-
// Transform pageable query parameters from bracket notation to flattened format
|
|
349
|
-
// This is needed because the API expects size=X&page=Y, not pageable[size]=X&pageable[page]=Y
|
|
350
|
-
client.use(createPageableTransformMiddleware());
|
|
351
|
-
// Plugin middleware from registry
|
|
352
|
-
for (const middleware of registry.getMiddleware('am-roles-api')) {
|
|
353
|
-
client.use(middleware);
|
|
354
|
-
}
|
|
355
|
-
// Logging middleware last (sees complete request with all modifications)
|
|
356
|
-
client.use(createLoggingMiddleware('AM-ROLES'));
|
|
357
|
-
return client;
|
|
358
|
-
}
|
|
359
|
-
/**
|
|
360
|
-
* Retrieves details of a role by ID.
|
|
361
|
-
*
|
|
362
|
-
* @param client - Account Manager Roles client
|
|
363
|
-
* @param roleId - Role ID
|
|
364
|
-
* @returns Role details
|
|
365
|
-
* @throws Error if role is not found or request fails
|
|
366
|
-
*/
|
|
367
|
-
export async function getRole(client, roleId) {
|
|
368
|
-
const result = await client.GET('/dw/rest/v1/roles/{roleId}', {
|
|
369
|
-
params: { path: { roleId } },
|
|
370
|
-
});
|
|
371
|
-
if (result.error) {
|
|
372
|
-
const error = result.error;
|
|
373
|
-
if (result.response?.status === 404) {
|
|
374
|
-
throw new Error(`Role ${roleId} not found`);
|
|
375
|
-
}
|
|
376
|
-
throw new Error(error.error?.message || `Failed to get role: ${JSON.stringify(result.error)}`);
|
|
377
|
-
}
|
|
378
|
-
if (!result.data) {
|
|
379
|
-
throw new Error('No data returned from API');
|
|
380
|
-
}
|
|
381
|
-
return result.data;
|
|
382
|
-
}
|
|
383
|
-
/**
|
|
384
|
-
* Lists roles with pagination.
|
|
385
|
-
*
|
|
386
|
-
* @param client - Account Manager Roles client
|
|
387
|
-
* @param options - List options (size, page, roleTargetType)
|
|
388
|
-
* @returns Paginated role collection
|
|
389
|
-
* @throws Error if request fails
|
|
390
|
-
*/
|
|
391
|
-
export async function listRoles(client, options = {}) {
|
|
392
|
-
const { size = 20, page = 0, roleTargetType } = options;
|
|
393
|
-
const result = await client.GET('/dw/rest/v1/roles', {
|
|
394
|
-
params: {
|
|
395
|
-
query: {
|
|
396
|
-
pageable: {
|
|
397
|
-
size,
|
|
398
|
-
page,
|
|
399
|
-
},
|
|
400
|
-
...(roleTargetType && { roleTargetType }),
|
|
401
|
-
},
|
|
402
|
-
},
|
|
403
|
-
});
|
|
404
|
-
if (result.error) {
|
|
405
|
-
const error = result.error;
|
|
406
|
-
// Check for pagination out-of-bounds error
|
|
407
|
-
const errorMessage = error.errors?.[0]?.message || error.error?.message;
|
|
408
|
-
if (errorMessage?.includes('fromIndex') && errorMessage?.includes('toIndex')) {
|
|
409
|
-
throw new Error(`Page ${page} is out of bounds. The requested page exceeds the available data. Try a lower page number.`);
|
|
410
|
-
}
|
|
411
|
-
throw new Error(errorMessage || `Failed to list roles: ${JSON.stringify(result.error)}`);
|
|
412
|
-
}
|
|
413
|
-
return result.data || { content: [] };
|
|
414
|
-
}
|
|
415
|
-
/**
|
|
416
|
-
* Creates a typed Account Manager API Clients API client.
|
|
417
|
-
*
|
|
418
|
-
* @param config - Account Manager client configuration
|
|
419
|
-
* @param auth - Authentication strategy (typically OAuth)
|
|
420
|
-
* @returns Typed openapi-fetch client for API Clients API
|
|
421
|
-
*/
|
|
422
|
-
export function createAccountManagerApiClientsClient(config, auth) {
|
|
423
|
-
const hostname = config.hostname ?? DEFAULT_ACCOUNT_MANAGER_HOST;
|
|
424
|
-
const registry = config.middlewareRegistry ?? globalMiddlewareRegistry;
|
|
425
|
-
const client = createClient({
|
|
426
|
-
baseUrl: `https://${hostname}`,
|
|
427
|
-
});
|
|
428
|
-
client.use(createAuthMiddleware(auth));
|
|
429
|
-
client.use(createPageableTransformMiddleware());
|
|
430
|
-
for (const middleware of registry.getMiddleware('am-apiclients-api')) {
|
|
431
|
-
client.use(middleware);
|
|
432
|
-
}
|
|
433
|
-
client.use(createLoggingMiddleware('AM-APICLIENTS'));
|
|
434
|
-
return client;
|
|
435
|
-
}
|
|
436
|
-
/**
|
|
437
|
-
* Lists API clients with pagination.
|
|
438
|
-
*/
|
|
439
|
-
export async function listApiClients(client, options = {}) {
|
|
440
|
-
const { size = 20, page = 0 } = options;
|
|
441
|
-
const result = await client.GET('/dw/rest/v1/apiclients', {
|
|
442
|
-
params: {
|
|
443
|
-
query: {
|
|
444
|
-
pageable: {
|
|
445
|
-
size,
|
|
446
|
-
page,
|
|
447
|
-
},
|
|
448
|
-
},
|
|
449
|
-
},
|
|
450
|
-
});
|
|
451
|
-
if (result.error) {
|
|
452
|
-
const error = result.error;
|
|
453
|
-
const errorMessage = error.errors?.[0]?.message || error.error?.message;
|
|
454
|
-
throw new Error(errorMessage || `Failed to list API clients: ${JSON.stringify(result.error)}`);
|
|
455
|
-
}
|
|
456
|
-
return result.data || { content: [] };
|
|
457
|
-
}
|
|
458
|
-
/**
|
|
459
|
-
* Retrieves an API client by ID.
|
|
460
|
-
*/
|
|
461
|
-
export async function getApiClient(client, apiClientId, expand) {
|
|
462
|
-
const result = await client.GET('/dw/rest/v1/apiclients/{apiClientId}', {
|
|
463
|
-
params: {
|
|
464
|
-
path: { apiClientId },
|
|
465
|
-
query: expand && expand.length > 0 ? { expand } : undefined,
|
|
466
|
-
},
|
|
467
|
-
});
|
|
468
|
-
if (result.error) {
|
|
469
|
-
const error = result.error;
|
|
470
|
-
if (result.response?.status === 404) {
|
|
471
|
-
throw new Error(`API client ${apiClientId} not found`);
|
|
472
|
-
}
|
|
473
|
-
throw new Error(error.error?.message || `Failed to get API client: ${JSON.stringify(result.error)}`);
|
|
474
|
-
}
|
|
475
|
-
if (!result.data) {
|
|
476
|
-
throw new Error('No data returned from API');
|
|
477
|
-
}
|
|
478
|
-
return result.data;
|
|
479
|
-
}
|
|
480
|
-
/**
|
|
481
|
-
* Creates a new API client.
|
|
482
|
-
* Omits active when false so the API uses its default (inactive); some implementations
|
|
483
|
-
* reject or mishandle explicit active: false and return "invalid argument APIClient".
|
|
484
|
-
*/
|
|
485
|
-
export async function createApiClient(client, body) {
|
|
486
|
-
const wireBody = body.active === false
|
|
487
|
-
? (() => {
|
|
488
|
-
const { active: _a, ...rest } = body;
|
|
489
|
-
return rest;
|
|
490
|
-
})()
|
|
491
|
-
: body;
|
|
492
|
-
const result = await client.POST('/dw/rest/v1/apiclients', {
|
|
493
|
-
body: wireBody,
|
|
494
|
-
});
|
|
495
|
-
if (result.error) {
|
|
496
|
-
const err = result.error;
|
|
497
|
-
const first = err.errors?.[0];
|
|
498
|
-
const fieldHint = first?.fieldErrors
|
|
499
|
-
?.map((fe) => `${fe.field}: ${fe.defaultMessage ?? ''}`)
|
|
500
|
-
.filter(Boolean)
|
|
501
|
-
.join('; ') || first?.field;
|
|
502
|
-
const errorMessage = fieldHint
|
|
503
|
-
? `${first?.message ?? err.error?.message ?? 'Bad Request'} (${fieldHint})`
|
|
504
|
-
: (first?.message ?? err.error?.message);
|
|
505
|
-
throw new Error(errorMessage || `Failed to create API client: ${JSON.stringify(result.error)}`);
|
|
506
|
-
}
|
|
507
|
-
if (!result.data) {
|
|
508
|
-
throw new Error('No data returned from API');
|
|
509
|
-
}
|
|
510
|
-
return result.data;
|
|
511
|
-
}
|
|
512
|
-
/**
|
|
513
|
-
* Updates an existing API client.
|
|
514
|
-
*/
|
|
515
|
-
export async function updateApiClient(client, apiClientId, body) {
|
|
516
|
-
const result = await client.PUT('/dw/rest/v1/apiclients/{apiClientId}', {
|
|
517
|
-
params: { path: { apiClientId } },
|
|
518
|
-
body,
|
|
519
|
-
});
|
|
520
|
-
if (result.error) {
|
|
521
|
-
const err = result.error;
|
|
522
|
-
const first = err.errors?.[0];
|
|
523
|
-
const fieldHint = first?.fieldErrors
|
|
524
|
-
?.map((fe) => `${fe.field}: ${fe.defaultMessage ?? ''}`)
|
|
525
|
-
.filter(Boolean)
|
|
526
|
-
.join('; ') || first?.field;
|
|
527
|
-
const errorMessage = fieldHint
|
|
528
|
-
? `${first?.message ?? err.error?.message ?? 'Invalid request'} (${fieldHint})`
|
|
529
|
-
: (first?.message ?? err.error?.message);
|
|
530
|
-
throw new Error(errorMessage || `Failed to update API client: ${JSON.stringify(result.error)}`);
|
|
531
|
-
}
|
|
532
|
-
if (!result.data) {
|
|
533
|
-
throw new Error('No data returned from API');
|
|
534
|
-
}
|
|
535
|
-
return result.data;
|
|
536
|
-
}
|
|
537
|
-
/**
|
|
538
|
-
* Deletes an API client. Only clients disabled for at least 7 days can be deleted.
|
|
539
|
-
*/
|
|
540
|
-
export async function deleteApiClient(client, apiClientId) {
|
|
541
|
-
const result = await client.DELETE('/dw/rest/v1/apiclients/{apiClientId}', {
|
|
542
|
-
params: { path: { apiClientId } },
|
|
543
|
-
});
|
|
544
|
-
if (result.error) {
|
|
545
|
-
const error = result.error;
|
|
546
|
-
if (result.response?.status === 412) {
|
|
547
|
-
throw new Error('API client must be disabled for at least 7 days before it can be deleted.');
|
|
548
|
-
}
|
|
549
|
-
throw new Error(error.error?.message || `Failed to delete API client: ${JSON.stringify(result.error)}`);
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
/**
|
|
553
|
-
* Changes the password for an API client.
|
|
554
|
-
*/
|
|
555
|
-
export async function changeApiClientPassword(client, apiClientId, oldPassword, newPassword) {
|
|
556
|
-
const result = await client.PUT('/dw/rest/v1/apiclients/{apiClientId}/password', {
|
|
557
|
-
params: { path: { apiClientId } },
|
|
558
|
-
body: { old: oldPassword, new: newPassword },
|
|
559
|
-
});
|
|
560
|
-
if (result.error) {
|
|
561
|
-
const error = result.error;
|
|
562
|
-
throw new Error(error.error?.message || `Failed to change API client password: ${JSON.stringify(result.error)}`);
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
/**
|
|
566
|
-
* Transforms the API organization representation to an external format.
|
|
567
|
-
* Removes internal properties like 'links' that should not be exposed.
|
|
568
|
-
*
|
|
569
|
-
* @param org - The original organization object
|
|
570
|
-
* @returns The transformed organization object
|
|
571
|
-
*/
|
|
572
|
-
function toExternalOrg(org) {
|
|
573
|
-
// Create a copy to avoid mutating the original
|
|
574
|
-
const transformed = { ...org };
|
|
575
|
-
// Always delete the links property
|
|
576
|
-
delete transformed.links;
|
|
577
|
-
return transformed;
|
|
578
|
-
}
|
|
579
|
-
/**
|
|
580
|
-
* Creates an Account Manager Organizations API client.
|
|
581
|
-
*
|
|
582
|
-
* @param config - Account Manager Organizations client configuration
|
|
583
|
-
* @param auth - Authentication strategy (typically OAuth)
|
|
584
|
-
* @returns Organizations API client
|
|
585
|
-
*
|
|
586
|
-
* @example
|
|
587
|
-
* const oauthStrategy = new OAuthStrategy({
|
|
588
|
-
* clientId: 'your-client-id',
|
|
589
|
-
* clientSecret: 'your-client-secret',
|
|
590
|
-
* });
|
|
591
|
-
*
|
|
592
|
-
* const client = createAccountManagerOrgsClient({}, oauthStrategy);
|
|
593
|
-
*
|
|
594
|
-
* // List organizations
|
|
595
|
-
* const orgs = await client.listOrgs({ size: 25, page: 0 });
|
|
596
|
-
*
|
|
597
|
-
* // Get organization by ID
|
|
598
|
-
* const org = await client.getOrg('org-id');
|
|
599
|
-
*/
|
|
600
|
-
export function createAccountManagerOrgsClient(config, auth) {
|
|
601
|
-
const hostname = config.hostname ?? DEFAULT_ACCOUNT_MANAGER_HOST;
|
|
602
|
-
const baseUrl = `https://${hostname}/dw/rest/v1`;
|
|
603
|
-
const logger = getLogger();
|
|
604
|
-
const registry = config.middlewareRegistry ?? globalMiddlewareRegistry;
|
|
605
|
-
// Get middleware from registry for am-orgs-api
|
|
606
|
-
const pluginMiddleware = registry.getMiddleware('am-orgs-api');
|
|
607
|
-
/**
|
|
608
|
-
* Applies middleware chain to a request.
|
|
609
|
-
* Adapts openapi-fetch middleware to work with fetch requests.
|
|
610
|
-
*/
|
|
611
|
-
async function applyMiddleware(request) {
|
|
612
|
-
let processedRequest = request;
|
|
613
|
-
// Apply auth middleware (core)
|
|
614
|
-
if (auth.getAuthorizationHeader) {
|
|
615
|
-
const authHeader = await auth.getAuthorizationHeader();
|
|
616
|
-
processedRequest.headers.set('Authorization', authHeader);
|
|
617
|
-
}
|
|
618
|
-
// Apply plugin middleware from registry
|
|
619
|
-
for (const middleware of pluginMiddleware) {
|
|
620
|
-
if (middleware.onRequest) {
|
|
621
|
-
// Create minimal openapi-fetch context
|
|
622
|
-
const result = await middleware.onRequest({
|
|
623
|
-
request: processedRequest,
|
|
624
|
-
schemaPath: '',
|
|
625
|
-
params: {},
|
|
626
|
-
id: '',
|
|
627
|
-
options: {
|
|
628
|
-
baseUrl: baseUrl,
|
|
629
|
-
parseAs: 'json',
|
|
630
|
-
querySerializer: (params) => new URLSearchParams(params).toString(),
|
|
631
|
-
bodySerializer: JSON.stringify,
|
|
632
|
-
fetch: fetch,
|
|
633
|
-
},
|
|
634
|
-
});
|
|
635
|
-
// Middleware can return Request or Response, but we only want Request here
|
|
636
|
-
if (result && result instanceof Request) {
|
|
637
|
-
processedRequest = result;
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
// Apply logging middleware (last, so it sees all modifications)
|
|
642
|
-
logger.debug({ method: processedRequest.method, url: processedRequest.url }, '[AM-ORGS] Making request');
|
|
643
|
-
logger.trace({
|
|
644
|
-
method: processedRequest.method,
|
|
645
|
-
url: processedRequest.url,
|
|
646
|
-
headers: (() => {
|
|
647
|
-
const o = {};
|
|
648
|
-
processedRequest.headers.forEach((value, key) => {
|
|
649
|
-
o[key] = value;
|
|
650
|
-
});
|
|
651
|
-
return o;
|
|
652
|
-
})(),
|
|
653
|
-
}, '[AM-ORGS] Request details');
|
|
654
|
-
return processedRequest;
|
|
655
|
-
}
|
|
656
|
-
/**
|
|
657
|
-
* Applies middleware chain to a response.
|
|
658
|
-
*/
|
|
659
|
-
async function processResponse(request, response) {
|
|
660
|
-
let processedResponse = response;
|
|
661
|
-
// Apply plugin middleware from registry
|
|
662
|
-
for (const middleware of pluginMiddleware) {
|
|
663
|
-
if (middleware.onResponse) {
|
|
664
|
-
const result = await middleware.onResponse({
|
|
665
|
-
request,
|
|
666
|
-
response: processedResponse,
|
|
667
|
-
schemaPath: '',
|
|
668
|
-
params: {},
|
|
669
|
-
id: '',
|
|
670
|
-
options: {
|
|
671
|
-
baseUrl: baseUrl,
|
|
672
|
-
parseAs: 'json',
|
|
673
|
-
querySerializer: (params) => new URLSearchParams(params).toString(),
|
|
674
|
-
bodySerializer: JSON.stringify,
|
|
675
|
-
fetch: fetch,
|
|
676
|
-
},
|
|
677
|
-
});
|
|
678
|
-
if (result) {
|
|
679
|
-
processedResponse = result;
|
|
680
|
-
}
|
|
681
|
-
}
|
|
682
|
-
}
|
|
683
|
-
// Apply logging middleware (last)
|
|
684
|
-
logger.debug({ method: request.method, url: request.url, status: processedResponse.status }, '[AM-ORGS] Received response');
|
|
685
|
-
return processedResponse;
|
|
686
|
-
}
|
|
687
|
-
/**
|
|
688
|
-
* Makes an authenticated request to the Account Manager API with middleware support.
|
|
689
|
-
*/
|
|
690
|
-
async function makeRequest(path, options = {}) {
|
|
691
|
-
const url = `${baseUrl}${path}`;
|
|
692
|
-
let request = new Request(url, {
|
|
693
|
-
...options,
|
|
694
|
-
headers: new Headers(options.headers),
|
|
695
|
-
});
|
|
696
|
-
// Apply middleware chain to request
|
|
697
|
-
request = await applyMiddleware(request);
|
|
698
|
-
const response = await fetch(request);
|
|
699
|
-
// Apply middleware chain to response
|
|
700
|
-
const processedResponse = await processResponse(request, response);
|
|
701
|
-
// Handle errors
|
|
702
|
-
if (processedResponse.status === 401) {
|
|
703
|
-
throw new Error('Authentication invalid. Please (re-)authenticate.');
|
|
704
|
-
}
|
|
705
|
-
if (processedResponse.status === 403) {
|
|
706
|
-
throw new Error('Operation forbidden. Please make sure you have the permission to perform this operation.');
|
|
707
|
-
}
|
|
708
|
-
if (processedResponse.status >= 400) {
|
|
709
|
-
throw new Error(`Operation failed. Error code ${processedResponse.status}`);
|
|
710
|
-
}
|
|
711
|
-
if (!processedResponse.ok) {
|
|
712
|
-
throw new Error(`Request failed: ${processedResponse.statusText}`);
|
|
713
|
-
}
|
|
714
|
-
return processedResponse.json();
|
|
715
|
-
}
|
|
716
|
-
return {
|
|
717
|
-
async getOrg(orgId) {
|
|
718
|
-
logger.debug({ orgId }, '[AM-ORGS] Getting organization by ID');
|
|
719
|
-
try {
|
|
720
|
-
const org = await makeRequest(`/organizations/${orgId}`);
|
|
721
|
-
return toExternalOrg(org);
|
|
722
|
-
}
|
|
723
|
-
catch (error) {
|
|
724
|
-
if (error instanceof Error && error.message.includes('Error code 404')) {
|
|
725
|
-
throw new Error(`Organization ${orgId} not found`);
|
|
726
|
-
}
|
|
727
|
-
throw error;
|
|
728
|
-
}
|
|
729
|
-
},
|
|
730
|
-
async getOrgByName(name) {
|
|
731
|
-
logger.debug({ name }, '[AM-ORGS] Getting organization by name');
|
|
732
|
-
const encodedName = encodeURIComponent(name);
|
|
733
|
-
let result;
|
|
734
|
-
try {
|
|
735
|
-
result = await makeRequest(`/organizations/search/findByName?startsWith=${encodedName}&ignoreCase=false`);
|
|
736
|
-
}
|
|
737
|
-
catch (error) {
|
|
738
|
-
if (error instanceof Error && error.message.includes('Error code 404')) {
|
|
739
|
-
throw new Error(`Organization ${name} not found`);
|
|
740
|
-
}
|
|
741
|
-
throw error;
|
|
742
|
-
}
|
|
743
|
-
if (result.content.length === 0) {
|
|
744
|
-
throw new Error(`Organization ${name} not found`);
|
|
745
|
-
}
|
|
746
|
-
if (result.content.length > 1) {
|
|
747
|
-
// Attempt to find exact match
|
|
748
|
-
const exactMatch = result.content.find((org) => org.name === name);
|
|
749
|
-
if (exactMatch) {
|
|
750
|
-
return toExternalOrg(exactMatch);
|
|
751
|
-
}
|
|
752
|
-
throw new Error(`Organization name "${name}" is ambiguous. Multiple organizations found.`);
|
|
753
|
-
}
|
|
754
|
-
return toExternalOrg(result.content[0]);
|
|
755
|
-
},
|
|
756
|
-
async listOrgs(options = {}) {
|
|
757
|
-
const { size = 25, page = 0, all = false } = options;
|
|
758
|
-
const pageSize = all ? 5000 : size;
|
|
759
|
-
logger.debug({ size: pageSize, page }, '[AM-ORGS] Listing organizations');
|
|
760
|
-
const result = await makeRequest(`/organizations?page=${page}&size=${pageSize}`);
|
|
761
|
-
// Remove links from all organizations in the collection
|
|
762
|
-
return {
|
|
763
|
-
...result,
|
|
764
|
-
content: result.content.map((org) => toExternalOrg(org)),
|
|
765
|
-
};
|
|
766
|
-
},
|
|
767
|
-
};
|
|
768
|
-
}
|
|
769
|
-
// ============================================================================
|
|
770
|
-
// Shared Utilities
|
|
771
|
-
// ============================================================================
|
|
772
|
-
/**
|
|
773
|
-
* Middleware to transform pageable query parameters from bracket notation
|
|
774
|
-
* (pageable[size]=X&pageable[page]=Y) to flattened format (size=X&page=Y)
|
|
775
|
-
* that the Account Manager API expects.
|
|
776
|
-
*/
|
|
777
|
-
function createPageableTransformMiddleware() {
|
|
778
|
-
const logger = getLogger();
|
|
779
|
-
return {
|
|
780
|
-
async onRequest({ request }) {
|
|
781
|
-
const url = new URL(request.url);
|
|
782
|
-
// Check if URL has pageable[size] or pageable[page] parameters
|
|
783
|
-
const pageableSize = url.searchParams.get('pageable[size]');
|
|
784
|
-
const pageablePage = url.searchParams.get('pageable[page]');
|
|
785
|
-
if (pageableSize !== null || pageablePage !== null) {
|
|
786
|
-
// Remove the bracket notation parameters
|
|
787
|
-
url.searchParams.delete('pageable[size]');
|
|
788
|
-
url.searchParams.delete('pageable[page]');
|
|
789
|
-
// Add flattened parameters
|
|
790
|
-
if (pageableSize !== null) {
|
|
791
|
-
url.searchParams.set('size', pageableSize);
|
|
792
|
-
}
|
|
793
|
-
if (pageablePage !== null) {
|
|
794
|
-
url.searchParams.set('page', pageablePage);
|
|
795
|
-
}
|
|
796
|
-
logger.trace({
|
|
797
|
-
originalUrl: request.url,
|
|
798
|
-
transformedUrl: url.toString(),
|
|
799
|
-
size: pageableSize,
|
|
800
|
-
page: pageablePage,
|
|
801
|
-
}, '[AM] Transformed pageable query parameters from bracket to flattened notation');
|
|
802
|
-
return new Request(url.toString(), {
|
|
803
|
-
method: request.method,
|
|
804
|
-
headers: request.headers,
|
|
805
|
-
body: request.body,
|
|
806
|
-
});
|
|
807
|
-
}
|
|
808
|
-
return request;
|
|
809
|
-
},
|
|
810
|
-
};
|
|
811
|
-
}
|
|
812
|
-
/**
|
|
813
|
-
* Creates a unified Account Manager API client.
|
|
814
|
-
*
|
|
815
|
-
* This client provides direct access to all Account Manager API methods (users, roles, orgs)
|
|
816
|
-
* through a single interface, while internally using separate typed clients for type safety.
|
|
817
|
-
*
|
|
818
|
-
* @param config - Account Manager client configuration
|
|
819
|
-
* @param auth - Authentication strategy (typically OAuth)
|
|
820
|
-
* @returns Unified Account Manager client
|
|
821
|
-
*
|
|
822
|
-
* @example
|
|
823
|
-
* const oauthStrategy = new OAuthStrategy({
|
|
824
|
-
* clientId: 'your-client-id',
|
|
825
|
-
* clientSecret: 'your-client-secret',
|
|
826
|
-
* });
|
|
827
|
-
*
|
|
828
|
-
* const client = createAccountManagerClient({}, oauthStrategy);
|
|
829
|
-
*
|
|
830
|
-
* // Users API
|
|
831
|
-
* const users = await client.listUsers({ size: 25, page: 0 });
|
|
832
|
-
* const user = await client.getUser('user-id');
|
|
833
|
-
* await client.createUser({ mail: 'user@example.com', ... });
|
|
834
|
-
*
|
|
835
|
-
* // Roles API
|
|
836
|
-
* const roles = await client.listRoles({ size: 20, page: 0 });
|
|
837
|
-
* const role = await client.getRole('bm-admin');
|
|
838
|
-
*
|
|
839
|
-
* // Organizations API
|
|
840
|
-
* const orgs = await client.listOrgs({ size: 25, page: 0 });
|
|
841
|
-
* const org = await client.getOrg('org-id');
|
|
842
|
-
*/
|
|
843
|
-
export function createAccountManagerClient(config, auth) {
|
|
844
|
-
const logger = getLogger();
|
|
845
|
-
// Create internal clients (all use the same config, however, specifications are different)
|
|
846
|
-
const usersClient = createAccountManagerUsersClient(config, auth);
|
|
847
|
-
const rolesClient = createAccountManagerRolesClient(config, auth);
|
|
848
|
-
const apiClientsClient = createAccountManagerApiClientsClient(config, auth);
|
|
849
|
-
const orgsClient = createAccountManagerOrgsClient(config, auth);
|
|
850
|
-
// Lazily cached role mapping
|
|
851
|
-
let cachedRoleMapping;
|
|
852
|
-
async function getRoleMapping() {
|
|
853
|
-
if (!cachedRoleMapping) {
|
|
854
|
-
cachedRoleMapping = await fetchRoleMapping(rolesClient);
|
|
855
|
-
}
|
|
856
|
-
return cachedRoleMapping;
|
|
857
|
-
}
|
|
858
|
-
// Lazily cached org mapping
|
|
859
|
-
let cachedOrgMapping;
|
|
860
|
-
async function getOrgMapping() {
|
|
861
|
-
if (!cachedOrgMapping) {
|
|
862
|
-
const result = await orgsClient.listOrgs({ all: true });
|
|
863
|
-
const byId = new Map();
|
|
864
|
-
for (const org of result.content || []) {
|
|
865
|
-
if (org.id && org.name) {
|
|
866
|
-
byId.set(org.id, org.name);
|
|
867
|
-
}
|
|
868
|
-
}
|
|
869
|
-
cachedOrgMapping = { byId };
|
|
870
|
-
}
|
|
871
|
-
return cachedOrgMapping;
|
|
872
|
-
}
|
|
873
|
-
// Return unified client with all methods
|
|
874
|
-
return {
|
|
875
|
-
// Users API methods
|
|
876
|
-
getUser: (userId, expand) => getUser(usersClient, userId, expand),
|
|
877
|
-
listUsers: (options) => listUsers(usersClient, options),
|
|
878
|
-
createUser: (user) => createUser(usersClient, user),
|
|
879
|
-
updateUser: (userId, changes) => updateUser(usersClient, userId, changes),
|
|
880
|
-
deleteUser: (userId) => deleteUser(usersClient, userId),
|
|
881
|
-
purgeUser: (userId) => purgeUser(usersClient, userId),
|
|
882
|
-
resetUser: (userId) => resetUser(usersClient, userId),
|
|
883
|
-
findUserByLogin: (login, expand) => findUserByLogin(usersClient, login, expand),
|
|
884
|
-
grantRole: async (userId, role, scope) => {
|
|
885
|
-
const roleMapping = await getRoleMapping();
|
|
886
|
-
// Resolve to both formats: role ID for roles array, roleEnumName for roleTenantFilter
|
|
887
|
-
const enumName = resolveToInternalRole(role, roleMapping);
|
|
888
|
-
const roleId = resolveFromInternalRole(enumName, roleMapping);
|
|
889
|
-
logger.debug({ role, roleId, enumName }, `[AM] Resolved role '${role}' → id='${roleId}', enum='${enumName}'`);
|
|
890
|
-
const user = await getUser(usersClient, userId);
|
|
891
|
-
// Build updated roles (uses role ID format, e.g. 'bm-admin')
|
|
892
|
-
const currentRoles = Array.isArray(user.roles)
|
|
893
|
-
? user.roles.map((r) => (typeof r === 'string' ? r : r.id || ''))
|
|
894
|
-
: [];
|
|
895
|
-
const updatedRoles = currentRoles.includes(roleId) ? currentRoles : [...currentRoles, roleId];
|
|
896
|
-
// Build updated roleTenantFilter (uses roleEnumName format, e.g. 'ECOM_ADMIN')
|
|
897
|
-
let roleTenantFilter = user.roleTenantFilter || '';
|
|
898
|
-
if (scope) {
|
|
899
|
-
const scopes = scope.split(',');
|
|
900
|
-
// Parse existing filter
|
|
901
|
-
const filters = roleTenantFilter.split(';').filter(Boolean);
|
|
902
|
-
const filterMap = new Map();
|
|
903
|
-
for (const filter of filters) {
|
|
904
|
-
const [r, tenants] = filter.split(':');
|
|
905
|
-
if (tenants) {
|
|
906
|
-
filterMap.set(r, tenants.split(','));
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
|
-
// Add new scopes
|
|
910
|
-
const existingScopes = filterMap.get(enumName) || [];
|
|
911
|
-
const allScopes = [...new Set([...existingScopes, ...scopes])];
|
|
912
|
-
filterMap.set(enumName, allScopes);
|
|
913
|
-
// Rebuild filter string
|
|
914
|
-
roleTenantFilter = Array.from(filterMap.entries())
|
|
915
|
-
.map(([r, tenants]) => `${r}:${tenants.join(',')}`)
|
|
916
|
-
.join(';');
|
|
917
|
-
}
|
|
918
|
-
return updateUser(usersClient, userId, {
|
|
919
|
-
roles: updatedRoles,
|
|
920
|
-
roleTenantFilter: roleTenantFilter || undefined,
|
|
921
|
-
});
|
|
922
|
-
},
|
|
923
|
-
revokeRole: async (userId, role, scope) => {
|
|
924
|
-
const roleMapping = await getRoleMapping();
|
|
925
|
-
const enumName = resolveToInternalRole(role, roleMapping);
|
|
926
|
-
const roleId = resolveFromInternalRole(enumName, roleMapping);
|
|
927
|
-
logger.debug({ role, roleId, enumName }, `[AM] Resolved role '${role}' → id='${roleId}', enum='${enumName}'`);
|
|
928
|
-
const user = await getUser(usersClient, userId);
|
|
929
|
-
// Build updated roles (uses role ID format, e.g. 'bm-admin')
|
|
930
|
-
const currentRoles = Array.isArray(user.roles)
|
|
931
|
-
? user.roles.map((r) => (typeof r === 'string' ? r : r.id || ''))
|
|
932
|
-
: [];
|
|
933
|
-
let updatedRoles = currentRoles;
|
|
934
|
-
// Build updated roleTenantFilter (uses roleEnumName format, e.g. 'ECOM_ADMIN')
|
|
935
|
-
let roleTenantFilter = user.roleTenantFilter || '';
|
|
936
|
-
if (!scope) {
|
|
937
|
-
// Remove entire role
|
|
938
|
-
updatedRoles = currentRoles.filter((r) => r !== roleId);
|
|
939
|
-
// Remove role from filter
|
|
940
|
-
const filters = roleTenantFilter.split(';').filter(Boolean);
|
|
941
|
-
roleTenantFilter = filters.filter((filter) => !filter.startsWith(`${enumName}:`)).join(';');
|
|
942
|
-
}
|
|
943
|
-
else {
|
|
944
|
-
// Remove specific scope
|
|
945
|
-
const scopes = scope.split(',');
|
|
946
|
-
const filters = roleTenantFilter.split(';').filter(Boolean);
|
|
947
|
-
const filterMap = new Map();
|
|
948
|
-
for (const filter of filters) {
|
|
949
|
-
const [r, tenants] = filter.split(':');
|
|
950
|
-
if (tenants) {
|
|
951
|
-
filterMap.set(r, tenants.split(','));
|
|
952
|
-
}
|
|
953
|
-
}
|
|
954
|
-
const existingScopes = filterMap.get(enumName) || [];
|
|
955
|
-
const remainingScopes = existingScopes.filter((s) => !scopes.includes(s));
|
|
956
|
-
if (remainingScopes.length === 0) {
|
|
957
|
-
// No scopes left, remove role entirely
|
|
958
|
-
updatedRoles = currentRoles.filter((r) => r !== roleId);
|
|
959
|
-
filterMap.delete(enumName);
|
|
960
|
-
}
|
|
961
|
-
else {
|
|
962
|
-
filterMap.set(enumName, remainingScopes);
|
|
963
|
-
}
|
|
964
|
-
// Rebuild filter string
|
|
965
|
-
roleTenantFilter = Array.from(filterMap.entries())
|
|
966
|
-
.map(([r, tenants]) => `${r}:${tenants.join(',')}`)
|
|
967
|
-
.join(';');
|
|
968
|
-
}
|
|
969
|
-
return updateUser(usersClient, userId, {
|
|
970
|
-
roles: updatedRoles,
|
|
971
|
-
roleTenantFilter: roleTenantFilter || undefined,
|
|
972
|
-
});
|
|
973
|
-
},
|
|
974
|
-
// Roles API methods
|
|
975
|
-
getRole: (roleId) => getRole(rolesClient, roleId),
|
|
976
|
-
listRoles: (options) => listRoles(rolesClient, options),
|
|
977
|
-
getRoleMapping: () => getRoleMapping(),
|
|
978
|
-
getOrgMapping: () => getOrgMapping(),
|
|
979
|
-
// API Clients API methods
|
|
980
|
-
listApiClients: (options) => listApiClients(apiClientsClient, options),
|
|
981
|
-
getApiClient: (apiClientId, expand) => getApiClient(apiClientsClient, apiClientId, expand),
|
|
982
|
-
createApiClient: (body) => createApiClient(apiClientsClient, body),
|
|
983
|
-
updateApiClient: (apiClientId, body) => updateApiClient(apiClientsClient, apiClientId, body),
|
|
984
|
-
deleteApiClient: (apiClientId) => deleteApiClient(apiClientsClient, apiClientId),
|
|
985
|
-
changeApiClientPassword: (apiClientId, oldPassword, newPassword) => changeApiClientPassword(apiClientsClient, apiClientId, oldPassword, newPassword),
|
|
986
|
-
// Organizations API methods
|
|
987
|
-
getOrg: (orgId) => orgsClient.getOrg(orgId),
|
|
988
|
-
getOrgByName: (name) => orgsClient.getOrgByName(name),
|
|
989
|
-
listOrgs: (options) => orgsClient.listOrgs(options),
|
|
990
|
-
};
|
|
991
|
-
}
|
|
992
|
-
//# sourceMappingURL=am-api.js.map
|