@salesforce/b2c-cli 0.10.0 → 1.0.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 (121) hide show
  1. package/README.md +0 -7
  2. package/dist/commands/bm/roles/create.d.ts +14 -0
  3. package/dist/commands/bm/roles/create.js +44 -0
  4. package/dist/commands/bm/roles/create.js.map +1 -0
  5. package/dist/commands/bm/roles/delete.d.ts +16 -0
  6. package/dist/commands/bm/roles/delete.js +37 -0
  7. package/dist/commands/bm/roles/delete.js.map +1 -0
  8. package/dist/commands/bm/roles/get.d.ts +15 -0
  9. package/dist/commands/bm/roles/get.js +73 -0
  10. package/dist/commands/bm/roles/get.js.map +1 -0
  11. package/dist/commands/bm/roles/grant.d.ts +16 -0
  12. package/dist/commands/bm/roles/grant.js +52 -0
  13. package/dist/commands/bm/roles/grant.js.map +1 -0
  14. package/dist/commands/bm/roles/list.d.ts +12 -0
  15. package/dist/commands/bm/roles/list.js +73 -0
  16. package/dist/commands/bm/roles/list.js.map +1 -0
  17. package/dist/commands/bm/roles/permissions/get.d.ts +15 -0
  18. package/dist/commands/bm/roles/permissions/get.js +99 -0
  19. package/dist/commands/bm/roles/permissions/get.js.map +1 -0
  20. package/dist/commands/bm/roles/permissions/set.d.ts +14 -0
  21. package/dist/commands/bm/roles/permissions/set.js +56 -0
  22. package/dist/commands/bm/roles/permissions/set.js.map +1 -0
  23. package/dist/commands/bm/roles/revoke.d.ts +20 -0
  24. package/dist/commands/bm/roles/revoke.js +53 -0
  25. package/dist/commands/bm/roles/revoke.js.map +1 -0
  26. package/dist/commands/code/delete.d.ts +1 -5
  27. package/dist/commands/code/delete.js +2 -17
  28. package/dist/commands/code/delete.js.map +1 -1
  29. package/dist/commands/content/export.js +1 -1
  30. package/dist/commands/content/export.js.map +1 -1
  31. package/dist/commands/content/list.js +1 -1
  32. package/dist/commands/content/list.js.map +1 -1
  33. package/dist/commands/job/export.js +4 -5
  34. package/dist/commands/job/export.js.map +1 -1
  35. package/dist/commands/job/import.js +4 -5
  36. package/dist/commands/job/import.js.map +1 -1
  37. package/dist/commands/job/run.d.ts +1 -0
  38. package/dist/commands/job/run.js +13 -7
  39. package/dist/commands/job/run.js.map +1 -1
  40. package/dist/commands/job/wait.js +5 -6
  41. package/dist/commands/job/wait.js.map +1 -1
  42. package/dist/commands/mrt/bundle/deploy.d.ts +14 -2
  43. package/dist/commands/mrt/bundle/deploy.js +66 -4
  44. package/dist/commands/mrt/bundle/deploy.js.map +1 -1
  45. package/dist/commands/mrt/env/create.d.ts +2 -0
  46. package/dist/commands/mrt/env/create.js +16 -6
  47. package/dist/commands/mrt/env/create.js.map +1 -1
  48. package/dist/commands/mrt/env/delete.d.ts +1 -5
  49. package/dist/commands/mrt/env/delete.js +2 -17
  50. package/dist/commands/mrt/env/delete.js.map +1 -1
  51. package/dist/commands/mrt/env/redirect/clone.js +1 -16
  52. package/dist/commands/mrt/env/redirect/clone.js.map +1 -1
  53. package/dist/commands/mrt/env/redirect/delete.js +1 -16
  54. package/dist/commands/mrt/env/redirect/delete.js.map +1 -1
  55. package/dist/commands/mrt/project/delete.js +2 -17
  56. package/dist/commands/mrt/project/delete.js.map +1 -1
  57. package/dist/commands/mrt/project/member/remove.js +1 -16
  58. package/dist/commands/mrt/project/member/remove.js.map +1 -1
  59. package/dist/commands/mrt/project/notification/delete.js +1 -16
  60. package/dist/commands/mrt/project/notification/delete.js.map +1 -1
  61. package/dist/commands/mrt/save-credentials.d.ts +35 -0
  62. package/dist/commands/mrt/save-credentials.js +97 -0
  63. package/dist/commands/mrt/save-credentials.js.map +1 -0
  64. package/dist/commands/mrt/user/api-key.d.ts +0 -1
  65. package/dist/commands/mrt/user/api-key.js +2 -14
  66. package/dist/commands/mrt/user/api-key.js.map +1 -1
  67. package/dist/commands/sandbox/delete.js +2 -17
  68. package/dist/commands/sandbox/delete.js.map +1 -1
  69. package/dist/commands/sandbox/update.d.ts +1 -0
  70. package/dist/commands/sandbox/update.js +18 -5
  71. package/dist/commands/sandbox/update.js.map +1 -1
  72. package/dist/commands/scapi/replications/get.d.ts +12 -0
  73. package/dist/commands/scapi/replications/get.js +74 -0
  74. package/dist/commands/scapi/replications/get.js.map +1 -0
  75. package/dist/commands/scapi/replications/list.d.ts +18 -0
  76. package/dist/commands/scapi/replications/list.js +119 -0
  77. package/dist/commands/scapi/replications/list.js.map +1 -0
  78. package/dist/commands/scapi/replications/publish.d.ts +16 -0
  79. package/dist/commands/scapi/replications/publish.js +100 -0
  80. package/dist/commands/scapi/replications/publish.js.map +1 -0
  81. package/dist/commands/scapi/replications/wait.d.ts +15 -0
  82. package/dist/commands/scapi/replications/wait.js +77 -0
  83. package/dist/commands/scapi/replications/wait.js.map +1 -0
  84. package/dist/commands/setup/inspect.d.ts +2 -0
  85. package/dist/commands/setup/inspect.js +43 -6
  86. package/dist/commands/setup/inspect.js.map +1 -1
  87. package/dist/commands/sites/cartridges/add.d.ts +19 -0
  88. package/dist/commands/sites/cartridges/add.js +93 -0
  89. package/dist/commands/sites/cartridges/add.js.map +1 -0
  90. package/dist/commands/sites/cartridges/list.d.ts +14 -0
  91. package/dist/commands/sites/cartridges/list.js +63 -0
  92. package/dist/commands/sites/cartridges/list.js.map +1 -0
  93. package/dist/commands/sites/cartridges/remove.d.ts +17 -0
  94. package/dist/commands/sites/cartridges/remove.js +76 -0
  95. package/dist/commands/sites/cartridges/remove.js.map +1 -0
  96. package/dist/commands/sites/cartridges/set.d.ts +17 -0
  97. package/dist/commands/sites/cartridges/set.js +73 -0
  98. package/dist/commands/sites/cartridges/set.js.map +1 -0
  99. package/dist/commands/webdav/rm.d.ts +4 -0
  100. package/dist/commands/webdav/rm.js +3 -17
  101. package/dist/commands/webdav/rm.js.map +1 -1
  102. package/dist/i18n/locales/en.d.ts +27 -0
  103. package/dist/i18n/locales/en.js +28 -1
  104. package/dist/i18n/locales/en.js.map +1 -1
  105. package/dist/i18n/locales/index.d.ts +27 -0
  106. package/dist/prompts.d.ts +12 -0
  107. package/dist/prompts.js +34 -0
  108. package/dist/prompts.js.map +1 -0
  109. package/dist/utils/ecdn/base-command.d.ts +0 -5
  110. package/dist/utils/ecdn/base-command.js +1 -12
  111. package/dist/utils/ecdn/base-command.js.map +1 -1
  112. package/dist/utils/scapi/replications.d.ts +20 -0
  113. package/dist/utils/scapi/replications.js +37 -0
  114. package/dist/utils/scapi/replications.js.map +1 -0
  115. package/dist/utils/scapi/schemas.d.ts +0 -5
  116. package/dist/utils/scapi/schemas.js +1 -12
  117. package/dist/utils/scapi/schemas.js.map +1 -1
  118. package/dist/utils/slas/client.js +2 -2
  119. package/dist/utils/slas/client.js.map +1 -1
  120. package/oclif.manifest.json +9953 -4667
  121. package/package.json +21 -9
package/README.md CHANGED
@@ -2,9 +2,6 @@
2
2
 
3
3
  [![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io)
4
4
 
5
- > [!NOTE]
6
- > This project is currently in **Developer Preview**. Not all features are implemented, and the API may change in future releases. Please provide feedback via GitHub issues.
7
-
8
5
  A command-line interface for Salesforce Agentforce Commerce (formerly Commerce Cloud) B2C instances and platform services.
9
6
 
10
7
  ## Installation
@@ -285,7 +282,3 @@ Full documentation is available at: https://salesforcecommercecloud.github.io/b2
285
282
  ## License
286
283
 
287
284
  This project is licensed under the Apache License 2.0. See [LICENSE.txt](../../LICENSE.txt) for full details.
288
-
289
- ## Disclaimer
290
-
291
- This project is currently in **Developer Preview** and is provided "as-is" without warranty of any kind. It is not yet generally available (GA) and should not be used in production environments. Features, APIs, and functionality may change without notice in future releases.
@@ -0,0 +1,14 @@
1
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import { type BmRole } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
3
+ export default class BmRolesCreate extends InstanceCommand<typeof BmRolesCreate> {
4
+ static args: {
5
+ role: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static description: string;
8
+ static enableJsonFlag: boolean;
9
+ static examples: string[];
10
+ static flags: {
11
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<BmRole>;
14
+ }
@@ -0,0 +1,44 @@
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
+ import { Args, Flags } from '@oclif/core';
7
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { createBmRole } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
9
+ import { t } from '../../../i18n/index.js';
10
+ export default class BmRolesCreate extends InstanceCommand {
11
+ static args = {
12
+ role: Args.string({
13
+ description: 'Role ID to create',
14
+ required: true,
15
+ }),
16
+ };
17
+ static description = t('commands.bm.roles.create.description', 'Create a Business Manager access role');
18
+ static enableJsonFlag = true;
19
+ static examples = [
20
+ '<%= config.bin %> <%= command.id %> MyCustomRole',
21
+ '<%= config.bin %> <%= command.id %> MyCustomRole --description "Custom role for content editors"',
22
+ '<%= config.bin %> <%= command.id %> MyCustomRole --json',
23
+ ];
24
+ static flags = {
25
+ description: Flags.string({
26
+ char: 'd',
27
+ description: 'Description for the role',
28
+ }),
29
+ };
30
+ async run() {
31
+ this.requireOAuthCredentials();
32
+ const { role: roleId } = this.args;
33
+ const { description } = this.flags;
34
+ const hostname = this.resolvedConfig.values.hostname;
35
+ this.log(t('commands.bm.roles.create.creating', 'Creating role {{roleId}} on {{hostname}}...', { roleId, hostname }));
36
+ const role = await createBmRole(this.instance, roleId, { description });
37
+ if (this.jsonEnabled()) {
38
+ return role;
39
+ }
40
+ this.log(t('commands.bm.roles.create.success', 'Role {{roleId}} created on {{hostname}}.', { roleId, hostname }));
41
+ return role;
42
+ }
43
+ }
44
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/bm/roles/create.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAC,YAAY,EAAc,MAAM,iDAAiD,CAAC;AAC1F,OAAO,EAAC,CAAC,EAAC,MAAM,wBAAwB,CAAC;AAEzC,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,eAAqC;IAC9E,MAAM,CAAC,IAAI,GAAG;QACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,mBAAmB;YAChC,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,sCAAsC,EAAE,uCAAuC,CAAC,CAAC;IAExG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,kDAAkD;QAClD,kGAAkG;QAClG,yDAAyD;KAC1D,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,0BAA0B;SACxC,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACjC,MAAM,EAAC,WAAW,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAS,CAAC;QAEtD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,EAAE,6CAA6C,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC;QAEpH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAC,WAAW,EAAC,CAAC,CAAC;QAEtE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,kCAAkC,EAAE,0CAA0C,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC;QAEhH,OAAO,IAAI,CAAC;IACd,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ interface DeleteResult {
3
+ success: boolean;
4
+ role: string;
5
+ hostname: string;
6
+ }
7
+ export default class BmRolesDelete extends InstanceCommand<typeof BmRolesDelete> {
8
+ static args: {
9
+ role: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
+ };
11
+ static description: string;
12
+ static enableJsonFlag: boolean;
13
+ static examples: string[];
14
+ run(): Promise<DeleteResult>;
15
+ }
16
+ export {};
@@ -0,0 +1,37 @@
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
+ import { Args } from '@oclif/core';
7
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { deleteBmRole } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
9
+ import { t } from '../../../i18n/index.js';
10
+ export default class BmRolesDelete extends InstanceCommand {
11
+ static args = {
12
+ role: Args.string({
13
+ description: 'Role ID to delete',
14
+ required: true,
15
+ }),
16
+ };
17
+ static description = t('commands.bm.roles.delete.description', 'Delete a Business Manager access role');
18
+ static enableJsonFlag = true;
19
+ static examples = [
20
+ '<%= config.bin %> <%= command.id %> MyCustomRole',
21
+ '<%= config.bin %> <%= command.id %> MyCustomRole --json',
22
+ ];
23
+ async run() {
24
+ this.requireOAuthCredentials();
25
+ const { role: roleId } = this.args;
26
+ const hostname = this.resolvedConfig.values.hostname;
27
+ this.log(t('commands.bm.roles.delete.deleting', 'Deleting role {{roleId}} from {{hostname}}...', { roleId, hostname }));
28
+ await deleteBmRole(this.instance, roleId);
29
+ const result = { success: true, role: roleId, hostname };
30
+ if (this.jsonEnabled()) {
31
+ return result;
32
+ }
33
+ this.log(t('commands.bm.roles.delete.success', 'Role {{roleId}} deleted from {{hostname}}.', { roleId, hostname }));
34
+ return result;
35
+ }
36
+ }
37
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/commands/bm/roles/delete.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAC,YAAY,EAAC,MAAM,iDAAiD,CAAC;AAC7E,OAAO,EAAC,CAAC,EAAC,MAAM,wBAAwB,CAAC;AAQzC,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,eAAqC;IAC9E,MAAM,CAAC,IAAI,GAAG;QACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,mBAAmB;YAChC,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,sCAAsC,EAAE,uCAAuC,CAAC,CAAC;IAExG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,kDAAkD;QAClD,yDAAyD;KAC1D,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAS,CAAC;QAEtD,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,mCAAmC,EAAE,+CAA+C,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAC5G,CAAC;QAEF,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC;QAEvD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,kCAAkC,EAAE,4CAA4C,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC;QAElH,OAAO,MAAM,CAAC;IAChB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import { type BmRole } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
3
+ export default class BmRolesGet extends InstanceCommand<typeof BmRolesGet> {
4
+ static args: {
5
+ role: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static description: string;
8
+ static enableJsonFlag: boolean;
9
+ static examples: string[];
10
+ static flags: {
11
+ expand: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<BmRole>;
14
+ private printRoleDetails;
15
+ }
@@ -0,0 +1,73 @@
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
+ import { Args, Flags, ux } from '@oclif/core';
7
+ import cliui from 'cliui';
8
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
9
+ import { getBmRole } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
10
+ import { t } from '../../../i18n/index.js';
11
+ export default class BmRolesGet extends InstanceCommand {
12
+ static args = {
13
+ role: Args.string({
14
+ description: 'Role ID (e.g. "Administrator")',
15
+ required: true,
16
+ }),
17
+ };
18
+ static description = t('commands.bm.roles.get.description', 'Get details of a Business Manager access role');
19
+ static enableJsonFlag = true;
20
+ static examples = [
21
+ '<%= config.bin %> <%= command.id %> Administrator',
22
+ '<%= config.bin %> <%= command.id %> Administrator --expand users',
23
+ '<%= config.bin %> <%= command.id %> Administrator --json',
24
+ ];
25
+ static flags = {
26
+ expand: Flags.string({
27
+ char: 'e',
28
+ description: 'Expansions to apply (e.g. users, permissions)',
29
+ multiple: true,
30
+ }),
31
+ };
32
+ async run() {
33
+ this.requireOAuthCredentials();
34
+ const { role: roleId } = this.args;
35
+ const { expand } = this.flags;
36
+ const hostname = this.resolvedConfig.values.hostname;
37
+ this.log(t('commands.bm.roles.get.fetching', 'Fetching role {{roleId}} from {{hostname}}...', { roleId, hostname }));
38
+ const role = await getBmRole(this.instance, roleId, { expand });
39
+ if (this.jsonEnabled()) {
40
+ return role;
41
+ }
42
+ this.printRoleDetails(role);
43
+ return role;
44
+ }
45
+ printRoleDetails(role) {
46
+ const ui = cliui({ width: process.stdout.columns || 80 });
47
+ ui.div({ text: 'Role Details', padding: [1, 0, 0, 0] });
48
+ ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
49
+ const fields = [
50
+ ['ID', role.id],
51
+ ['Description', role.description],
52
+ ['User Count', role.user_count?.toString()],
53
+ ['User Manager', role.user_manager?.toString()],
54
+ ['Created', role.creation_date],
55
+ ['Last Modified', role.last_modified],
56
+ ];
57
+ for (const [label, value] of fields) {
58
+ if (value !== undefined) {
59
+ ui.div({ text: `${label}:`, width: 25, padding: [0, 2, 0, 0] }, { text: value, padding: [0, 0, 0, 0] });
60
+ }
61
+ }
62
+ if (role.users && role.users.length > 0) {
63
+ ui.div({ text: '', padding: [1, 0, 0, 0] });
64
+ ui.div({ text: 'Assigned Users', padding: [0, 0, 0, 0] });
65
+ ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
66
+ for (const user of role.users) {
67
+ ui.div({ text: user.login || '-', width: 40, padding: [0, 2, 0, 0] }, { text: [user.first_name, user.last_name].filter(Boolean).join(' ') || '', padding: [0, 0, 0, 0] });
68
+ }
69
+ }
70
+ ux.stdout(ui.toString());
71
+ }
72
+ }
73
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/bm/roles/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import type { OcapiComponents } from '@salesforce/b2c-tooling-sdk';
3
+ type OcapiUser = OcapiComponents['schemas']['user'];
4
+ export default class BmRolesGrant extends InstanceCommand<typeof BmRolesGrant> {
5
+ static args: {
6
+ login: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static description: string;
9
+ static enableJsonFlag: boolean;
10
+ static examples: string[];
11
+ static flags: {
12
+ role: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ };
14
+ run(): Promise<OcapiUser>;
15
+ }
16
+ export {};
@@ -0,0 +1,52 @@
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
+ import { Args, Flags } from '@oclif/core';
7
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { grantBmRole } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
9
+ import { t } from '../../../i18n/index.js';
10
+ export default class BmRolesGrant extends InstanceCommand {
11
+ static args = {
12
+ login: Args.string({
13
+ description: 'User login (email)',
14
+ required: true,
15
+ }),
16
+ };
17
+ static description = t('commands.bm.roles.grant.description', 'Grant a Business Manager role to a user on an instance');
18
+ static enableJsonFlag = true;
19
+ static examples = [
20
+ '<%= config.bin %> <%= command.id %> user@example.com --role Administrator',
21
+ '<%= config.bin %> <%= command.id %> user@example.com --role Administrator --json',
22
+ ];
23
+ static flags = {
24
+ role: Flags.string({
25
+ char: 'r',
26
+ description: 'Role ID to grant',
27
+ required: true,
28
+ }),
29
+ };
30
+ async run() {
31
+ this.requireOAuthCredentials();
32
+ const { login } = this.args;
33
+ const { role } = this.flags;
34
+ const hostname = this.resolvedConfig.values.hostname;
35
+ this.log(t('commands.bm.roles.grant.granting', 'Granting role {{role}} to {{login}} on {{hostname}}...', {
36
+ role,
37
+ login,
38
+ hostname,
39
+ }));
40
+ const user = await grantBmRole(this.instance, role, login);
41
+ if (this.jsonEnabled()) {
42
+ return user;
43
+ }
44
+ this.log(t('commands.bm.roles.grant.success', 'User {{login}} granted role {{role}} on {{hostname}}.', {
45
+ login,
46
+ role,
47
+ hostname,
48
+ }));
49
+ return user;
50
+ }
51
+ }
52
+ //# sourceMappingURL=grant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grant.js","sourceRoot":"","sources":["../../../../src/commands/bm/roles/grant.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAC,WAAW,EAAC,MAAM,iDAAiD,CAAC;AAE5E,OAAO,EAAC,CAAC,EAAC,MAAM,wBAAwB,CAAC;AAIzC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,eAAoC;IAC5E,MAAM,CAAC,IAAI,GAAG;QACZ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,CAAC,CACpB,qCAAqC,EACrC,wDAAwD,CACzD,CAAC;IAEF,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG;QAChB,2EAA2E;QAC3E,kFAAkF;KACnF,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kBAAkB;YAC/B,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAS,CAAC;QAEtD,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,kCAAkC,EAAE,wDAAwD,EAAE;YAC9F,IAAI;YACJ,KAAK;YACL,QAAQ;SACT,CAAC,CACH,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,iCAAiC,EAAE,uDAAuD,EAAE;YAC5F,KAAK;YACL,IAAI;YACJ,QAAQ;SACT,CAAC,CACH,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import { type BmRoles } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
3
+ export default class BmRolesList extends InstanceCommand<typeof BmRolesList> {
4
+ static description: string;
5
+ static enableJsonFlag: boolean;
6
+ static examples: string[];
7
+ static flags: {
8
+ count: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ start: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ };
11
+ run(): Promise<BmRoles>;
12
+ }
@@ -0,0 +1,73 @@
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
+ import { Flags } from '@oclif/core';
7
+ import { InstanceCommand, createTable } from '@salesforce/b2c-tooling-sdk/cli';
8
+ import { listBmRoles } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
9
+ import { t } from '../../../i18n/index.js';
10
+ const COLUMNS = {
11
+ id: {
12
+ header: 'ID',
13
+ get: (r) => r.id || '-',
14
+ },
15
+ description: {
16
+ header: 'Description',
17
+ get: (r) => r.description || '-',
18
+ extended: true,
19
+ },
20
+ userCount: {
21
+ header: 'Users',
22
+ get: (r) => r.user_count?.toString() ?? '-',
23
+ },
24
+ userManager: {
25
+ header: 'User Manager',
26
+ get: (r) => (r.user_manager ? 'Yes' : 'No'),
27
+ extended: true,
28
+ },
29
+ };
30
+ const DEFAULT_COLUMNS = ['id', 'userCount'];
31
+ export default class BmRolesList extends InstanceCommand {
32
+ static description = t('commands.bm.roles.list.description', 'List Business Manager access roles on an instance');
33
+ static enableJsonFlag = true;
34
+ static examples = [
35
+ '<%= config.bin %> <%= command.id %>',
36
+ '<%= config.bin %> <%= command.id %> --server my-sandbox.demandware.net',
37
+ '<%= config.bin %> <%= command.id %> --count 50',
38
+ '<%= config.bin %> <%= command.id %> --json',
39
+ ];
40
+ static flags = {
41
+ count: Flags.integer({
42
+ char: 'n',
43
+ description: 'Number of roles to return (default 25)',
44
+ }),
45
+ start: Flags.integer({
46
+ description: 'Start index for pagination (default 0)',
47
+ }),
48
+ };
49
+ async run() {
50
+ this.requireOAuthCredentials();
51
+ const hostname = this.resolvedConfig.values.hostname;
52
+ const { count, start } = this.flags;
53
+ this.log(t('commands.bm.roles.list.fetching', 'Fetching roles from {{hostname}}...', { hostname }));
54
+ const roles = await listBmRoles(this.instance, { count, start });
55
+ if (this.jsonEnabled()) {
56
+ return roles;
57
+ }
58
+ const items = roles.data ?? [];
59
+ if (items.length === 0) {
60
+ this.log(t('commands.bm.roles.list.noRoles', 'No roles found.'));
61
+ return roles;
62
+ }
63
+ createTable(COLUMNS).render(items, DEFAULT_COLUMNS);
64
+ if (roles.total && roles.total > items.length) {
65
+ this.log(t('commands.bm.roles.list.moreRoles', '{{count}} of {{total}} roles shown.', {
66
+ count: items.length,
67
+ total: roles.total,
68
+ }));
69
+ }
70
+ return roles;
71
+ }
72
+ }
73
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/bm/roles/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import { type BmRolePermissions } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
3
+ export default class BmRolesPermissionsGet extends InstanceCommand<typeof BmRolesPermissionsGet> {
4
+ static args: {
5
+ role: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static description: string;
8
+ static enableJsonFlag: boolean;
9
+ static examples: string[];
10
+ static flags: {
11
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<BmRolePermissions>;
14
+ private printPermissionsSummary;
15
+ }
@@ -0,0 +1,99 @@
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
+ import fs from 'node:fs';
7
+ import { Args, Flags, ux } from '@oclif/core';
8
+ import cliui from 'cliui';
9
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
10
+ import { getBmRolePermissions } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
11
+ import { t } from '../../../../i18n/index.js';
12
+ export default class BmRolesPermissionsGet extends InstanceCommand {
13
+ static args = {
14
+ role: Args.string({
15
+ description: 'Role ID (e.g. "Administrator")',
16
+ required: true,
17
+ }),
18
+ };
19
+ static description = t('commands.bm.roles.permissions.get.description', 'Get permissions for a Business Manager access role');
20
+ static enableJsonFlag = true;
21
+ static examples = [
22
+ '<%= config.bin %> <%= command.id %> Administrator',
23
+ '<%= config.bin %> <%= command.id %> Administrator --output admin-perms.json',
24
+ '<%= config.bin %> <%= command.id %> Administrator --json',
25
+ ];
26
+ static flags = {
27
+ output: Flags.string({
28
+ char: 'o',
29
+ description: 'Write full permissions JSON to file',
30
+ }),
31
+ };
32
+ async run() {
33
+ this.requireOAuthCredentials();
34
+ const { role: roleId } = this.args;
35
+ const { output } = this.flags;
36
+ const hostname = this.resolvedConfig.values.hostname;
37
+ this.log(t('commands.bm.roles.permissions.get.fetching', 'Fetching permissions for role {{roleId}} on {{hostname}}...', {
38
+ roleId,
39
+ hostname,
40
+ }));
41
+ const permissions = await getBmRolePermissions(this.instance, roleId);
42
+ if (output) {
43
+ fs.writeFileSync(output, JSON.stringify(permissions, null, 2) + '\n', 'utf8');
44
+ this.log(t('commands.bm.roles.permissions.get.written', 'Permissions written to {{output}}.', { output }));
45
+ return permissions;
46
+ }
47
+ if (this.jsonEnabled()) {
48
+ return permissions;
49
+ }
50
+ this.printPermissionsSummary(roleId, permissions);
51
+ return permissions;
52
+ }
53
+ printPermissionsSummary(roleId, permissions) {
54
+ const ui = cliui({ width: process.stdout.columns || 80 });
55
+ ui.div({ text: `Permissions for ${roleId}`, padding: [1, 0, 0, 0] });
56
+ ui.div({ text: '─'.repeat(50), padding: [0, 0, 0, 0] });
57
+ const functionalOrg = permissions.functional?.organization ?? [];
58
+ const functionalSite = permissions.functional?.site ?? [];
59
+ const moduleOrg = permissions.module?.organization ?? [];
60
+ const moduleSite = permissions.module?.site ?? [];
61
+ const localeUnscoped = permissions.locale?.unscoped ?? [];
62
+ const webdavUnscoped = permissions.webdav?.unscoped ?? [];
63
+ const sections = [
64
+ ['Functional (organization)', functionalOrg.length, functionalOrg.map((p) => p.name)],
65
+ ['Functional (site)', functionalSite.length, functionalSite.map((p) => p.name)],
66
+ ['Module (organization)', moduleOrg.length, moduleOrg.map((p) => `${p.application}:${p.name}`)],
67
+ ['Module (site)', moduleSite.length, moduleSite.map((p) => `${p.application}:${p.name}`)],
68
+ ['Locale', localeUnscoped.length, localeUnscoped.map((p) => p.locale_id)],
69
+ ['WebDAV', webdavUnscoped.length, webdavUnscoped.map((p) => p.folder)],
70
+ ];
71
+ for (const [label, count, names] of sections) {
72
+ if (count > 0) {
73
+ ui.div({ text: `${label}:`, width: 30, padding: [0, 2, 0, 0] }, { text: `${count} permission(s)`, padding: [0, 0, 0, 0] });
74
+ for (const name of names.slice(0, 10)) {
75
+ ui.div({ text: '', width: 30 }, { text: ` ${name}`, padding: [0, 0, 0, 0] });
76
+ }
77
+ if (names.length > 10) {
78
+ ui.div({ text: '', width: 30 }, { text: ` ... and ${names.length - 10} more`, padding: [0, 0, 0, 0] });
79
+ }
80
+ }
81
+ }
82
+ const totalCount = functionalOrg.length +
83
+ functionalSite.length +
84
+ moduleOrg.length +
85
+ moduleSite.length +
86
+ localeUnscoped.length +
87
+ webdavUnscoped.length;
88
+ if (totalCount === 0) {
89
+ ui.div({ text: 'No permissions assigned.', padding: [0, 0, 0, 0] });
90
+ }
91
+ ui.div({ text: '', padding: [1, 0, 0, 0] });
92
+ ui.div({
93
+ text: 'Use --output <file> to export the full permissions JSON for editing.',
94
+ padding: [0, 0, 0, 0],
95
+ });
96
+ ux.stdout(ui.toString());
97
+ }
98
+ }
99
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../src/commands/bm/roles/permissions/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ import { type BmRolePermissions } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
3
+ export default class BmRolesPermissionsSet extends InstanceCommand<typeof BmRolesPermissionsSet> {
4
+ static args: {
5
+ role: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static description: string;
8
+ static enableJsonFlag: boolean;
9
+ static examples: string[];
10
+ static flags: {
11
+ file: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<BmRolePermissions>;
14
+ }
@@ -0,0 +1,56 @@
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
+ import fs from 'node:fs';
7
+ import { Args, Flags } from '@oclif/core';
8
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
9
+ import { setBmRolePermissions } from '@salesforce/b2c-tooling-sdk/operations/bm-roles';
10
+ import { t } from '../../../../i18n/index.js';
11
+ export default class BmRolesPermissionsSet extends InstanceCommand {
12
+ static args = {
13
+ role: Args.string({
14
+ description: 'Role ID (e.g. "Administrator")',
15
+ required: true,
16
+ }),
17
+ };
18
+ static description = t('commands.bm.roles.permissions.set.description', 'Set permissions for a Business Manager access role (replaces all existing permissions)');
19
+ static enableJsonFlag = true;
20
+ static examples = ['<%= config.bin %> <%= command.id %> MyRole --file perms.json'];
21
+ static flags = {
22
+ file: Flags.string({
23
+ char: 'f',
24
+ description: 'JSON file containing permissions (role_permissions schema)',
25
+ required: true,
26
+ }),
27
+ };
28
+ async run() {
29
+ this.requireOAuthCredentials();
30
+ const { role: roleId } = this.args;
31
+ const { file } = this.flags;
32
+ const hostname = this.resolvedConfig.values.hostname;
33
+ if (!fs.existsSync(file)) {
34
+ this.error(t('commands.bm.roles.permissions.set.fileNotFound', 'File not found: {{file}}', { file }));
35
+ }
36
+ let permissions;
37
+ try {
38
+ const content = fs.readFileSync(file, 'utf8');
39
+ permissions = JSON.parse(content);
40
+ }
41
+ catch {
42
+ this.error(t('commands.bm.roles.permissions.set.parseError', 'Failed to parse JSON from {{file}}', { file }));
43
+ }
44
+ this.log(t('commands.bm.roles.permissions.set.setting', 'Setting permissions for role {{roleId}} on {{hostname}} (this replaces all existing permissions)...', { roleId, hostname }));
45
+ const result = await setBmRolePermissions(this.instance, roleId, permissions);
46
+ if (this.jsonEnabled()) {
47
+ return result;
48
+ }
49
+ this.log(t('commands.bm.roles.permissions.set.success', 'Permissions updated for role {{roleId}} on {{hostname}}.', {
50
+ roleId,
51
+ hostname,
52
+ }));
53
+ return result;
54
+ }
55
+ }
56
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../../src/commands/bm/roles/permissions/set.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAC,oBAAoB,EAAyB,MAAM,iDAAiD,CAAC;AAC7G,OAAO,EAAC,CAAC,EAAC,MAAM,2BAA2B,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,eAA6C;IAC9F,MAAM,CAAC,IAAI,GAAG;QACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,CAAC,CACpB,+CAA+C,EAC/C,wFAAwF,CACzF,CAAC;IAEF,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,QAAQ,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAEnF,MAAM,CAAC,KAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,4DAA4D;YACzE,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACjC,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAS,CAAC;QAEtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gDAAgD,EAAE,0BAA0B,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC;QACtG,CAAC;QAED,IAAI,WAA8B,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9C,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8CAA8C,EAAE,oCAAoC,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,CAAC,GAAG,CACN,CAAC,CACC,2CAA2C,EAC3C,qGAAqG,EACrG,EAAC,MAAM,EAAE,QAAQ,EAAC,CACnB,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAE9E,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,2CAA2C,EAAE,0DAA0D,EAAE;YACzG,MAAM;YACN,QAAQ;SACT,CAAC,CACH,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { InstanceCommand } from '@salesforce/b2c-tooling-sdk/cli';
2
+ interface RevokeResult {
3
+ success: boolean;
4
+ role: string;
5
+ login: string;
6
+ hostname: string;
7
+ }
8
+ export default class BmRolesRevoke extends InstanceCommand<typeof BmRolesRevoke> {
9
+ static args: {
10
+ login: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
11
+ };
12
+ static description: string;
13
+ static enableJsonFlag: boolean;
14
+ static examples: string[];
15
+ static flags: {
16
+ role: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
17
+ };
18
+ run(): Promise<RevokeResult>;
19
+ }
20
+ export {};