@pnp/cli-microsoft365 9.0.0-beta.f2c5f82 → 9.1.0-beta.2d61838

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 (197) hide show
  1. package/allCommands.json +1 -1
  2. package/allCommandsFull.json +1 -1
  3. package/dist/Auth.js +17 -16
  4. package/dist/AuthServer.js +7 -7
  5. package/dist/Command.js +5 -4
  6. package/dist/api.js +1 -1
  7. package/dist/cli/cli.js +57 -8
  8. package/dist/config.js +61 -5
  9. package/dist/m365/app/commands/permission/permission-add.js +9 -9
  10. package/dist/m365/base/PowerAutomateCommand.js +1 -1
  11. package/dist/m365/base/SpoCommand.js +1 -1
  12. package/dist/m365/cli/commands/cli-consent.js +9 -5
  13. package/dist/m365/cli/commands/cli-doctor.js +2 -2
  14. package/dist/m365/cli/commands/cli-reconsent.js +2 -3
  15. package/dist/m365/cli/commands/config/config-set.js +12 -3
  16. package/dist/m365/commands/login.js +38 -14
  17. package/dist/m365/commands/setup.js +256 -33
  18. package/dist/m365/commands/status.js +2 -2
  19. package/dist/m365/connection/commands/connection-list.js +4 -4
  20. package/dist/m365/entra/commands/app/app-add.js +52 -288
  21. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-add.js +13 -13
  22. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-get.js +18 -18
  23. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-list.js +1 -1
  24. package/dist/m365/entra/commands/group/group-user-list.js +4 -4
  25. package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +4 -4
  26. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-list.js +3 -3
  27. package/dist/m365/entra/commands/m365group/m365group-user-list.js +9 -6
  28. package/dist/m365/external/commands/item/item-add.js +2 -5
  29. package/dist/m365/file/commands/file-move.js +135 -0
  30. package/dist/m365/file/commands.js +2 -1
  31. package/dist/m365/flow/commands/environment/environment-get.js +1 -1
  32. package/dist/m365/flow/commands/environment/environment-list.js +1 -1
  33. package/dist/m365/flow/commands/flow-disable.js +1 -1
  34. package/dist/m365/flow/commands/flow-enable.js +1 -1
  35. package/dist/m365/flow/commands/flow-export.js +17 -16
  36. package/dist/m365/flow/commands/flow-get.js +1 -1
  37. package/dist/m365/flow/commands/flow-list.js +1 -1
  38. package/dist/m365/flow/commands/flow-remove.js +1 -1
  39. package/dist/m365/flow/commands/owner/owner-ensure.js +1 -1
  40. package/dist/m365/flow/commands/owner/owner-list.js +1 -1
  41. package/dist/m365/flow/commands/owner/owner-remove.js +1 -1
  42. package/dist/m365/flow/commands/recyclebinitem/recyclebinitem-list.js +47 -0
  43. package/dist/m365/flow/commands/recyclebinitem/recyclebinitem-restore.js +48 -0
  44. package/dist/m365/flow/commands/run/run-cancel.js +1 -1
  45. package/dist/m365/flow/commands/run/run-get.js +1 -1
  46. package/dist/m365/flow/commands/run/run-list.js +1 -1
  47. package/dist/m365/flow/commands/run/run-resubmit.js +2 -2
  48. package/dist/m365/flow/commands.js +2 -0
  49. package/dist/m365/onenote/commands/notebook/notebook-add.js +132 -0
  50. package/dist/m365/onenote/commands.js +1 -0
  51. package/dist/m365/outlook/commands/message/message-get.js +11 -11
  52. package/dist/m365/spfx/commands/project/DeployWorkflow.js +1 -1
  53. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.20.0-rc.1.js +25 -0
  54. package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
  55. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +10 -1
  56. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.20.0-rc.1.js +57 -0
  57. package/dist/m365/spfx/commands/project/project-upgrade.js +16 -13
  58. package/dist/m365/spfx/commands/spfx-doctor.js +15 -0
  59. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-get.js +1 -0
  60. package/dist/m365/spo/commands/file/file-copy.js +34 -55
  61. package/dist/m365/spo/commands/file/file-roleassignment-add.js +17 -54
  62. package/dist/m365/spo/commands/file/file-roleassignment-remove.js +13 -40
  63. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +5 -13
  64. package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +5 -13
  65. package/dist/m365/spo/commands/folder/folder-set.js +4 -0
  66. package/dist/m365/spo/commands/folder/folder-sharinglink-add.js +143 -0
  67. package/dist/m365/spo/commands/folder/folder-sharinglink-clear.js +111 -0
  68. package/dist/m365/spo/commands/folder/folder-sharinglink-remove.js +95 -0
  69. package/dist/m365/spo/commands/list/list-get.js +17 -4
  70. package/dist/m365/spo/commands/list/list-list.js +4 -1
  71. package/dist/m365/spo/commands/page/page-remove.js +37 -16
  72. package/dist/m365/spo/commands/page/page-section-add.js +185 -34
  73. package/dist/m365/spo/commands/site/SiteAdmin.js +2 -0
  74. package/dist/m365/spo/commands/site/site-admin-add.js +252 -0
  75. package/dist/m365/spo/commands/site/site-admin-list.js +10 -36
  76. package/dist/m365/spo/commands/site/site-admin-remove.js +194 -0
  77. package/dist/m365/spo/commands/site/site-appcatalog-remove.js +24 -48
  78. package/dist/m365/spo/commands/site/site-get.js +12 -16
  79. package/dist/m365/spo/commands/site/site-remove.js +7 -1
  80. package/dist/m365/spo/commands/site/site-sharingpermission-set.js +68 -0
  81. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-restore.js +22 -2
  82. package/dist/m365/spo/commands/user/user-get.js +67 -9
  83. package/dist/m365/spo/commands.js +7 -0
  84. package/dist/m365/spp/commands/contentcenter/contentcenter-list.js +56 -0
  85. package/dist/m365/spp/commands.js +5 -0
  86. package/dist/m365/teams/MeetingTranscript.js +2 -0
  87. package/dist/m365/teams/commands/meeting/meeting-transcript-get.js +152 -0
  88. package/dist/m365/teams/commands.js +1 -0
  89. package/dist/m365/viva/commands/engage/Community.js +2 -0
  90. package/dist/m365/viva/commands/engage/engage-community-list.js +28 -0
  91. package/dist/m365/viva/commands/engage/engage-group-list.js +5 -0
  92. package/dist/m365/viva/commands/engage/engage-group-user-add.js +5 -0
  93. package/dist/m365/viva/commands/engage/engage-group-user-remove.js +5 -0
  94. package/dist/m365/viva/commands/engage/engage-message-add.js +5 -0
  95. package/dist/m365/viva/commands/engage/engage-message-get.js +5 -0
  96. package/dist/m365/viva/commands/engage/engage-message-like-set.js +5 -0
  97. package/dist/m365/viva/commands/engage/engage-message-list.js +5 -0
  98. package/dist/m365/viva/commands/engage/engage-message-remove.js +5 -0
  99. package/dist/m365/viva/commands/engage/engage-network-list.js +5 -0
  100. package/dist/m365/viva/commands/engage/engage-report-activitycounts.js +8 -0
  101. package/dist/m365/viva/commands/engage/engage-report-activityusercounts.js +8 -0
  102. package/dist/m365/viva/commands/engage/engage-report-activityuserdetail.js +8 -0
  103. package/dist/m365/viva/commands/engage/engage-report-deviceusagedistributionusercounts.js +8 -0
  104. package/dist/m365/viva/commands/engage/engage-report-deviceusageusercounts.js +8 -0
  105. package/dist/m365/viva/commands/engage/engage-report-deviceusageuserdetail.js +8 -0
  106. package/dist/m365/viva/commands/engage/engage-report-groupsactivitycounts.js +8 -0
  107. package/dist/m365/viva/commands/engage/engage-report-groupsactivitydetail.js +8 -0
  108. package/dist/m365/viva/commands/engage/engage-report-groupsactivitygroupcounts.js +8 -0
  109. package/dist/m365/viva/commands/engage/engage-search.js +5 -0
  110. package/dist/m365/viva/commands/engage/engage-user-get.js +5 -0
  111. package/dist/m365/viva/commands/engage/engage-user-list.js +5 -0
  112. package/dist/m365/viva/commands/engage/yammerCommands.js +25 -0
  113. package/dist/m365/viva/commands.js +1 -0
  114. package/dist/request.js +46 -61
  115. package/dist/settingsNames.js +7 -1
  116. package/dist/utils/driveUtil.js +51 -0
  117. package/dist/utils/entraApp.js +283 -0
  118. package/dist/utils/spo.js +58 -66
  119. package/dist/utils/timersUtil.js +12 -0
  120. package/dist/utils/urlUtil.js +8 -0
  121. package/dist/utils/zod.js +1 -1
  122. package/docs/docs/_clisettings.mdx +6 -0
  123. package/docs/docs/cmd/app/permission/permission-add.mdx +5 -5
  124. package/docs/docs/cmd/cli/cli-consent.mdx +1 -1
  125. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-add.mdx +12 -12
  126. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-get.mdx +14 -14
  127. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-list.mdx +5 -5
  128. package/docs/docs/cmd/entra/group/group-user-list.mdx +7 -7
  129. package/docs/docs/cmd/entra/m365group/m365group-conversation-post-list.mdx +5 -5
  130. package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-list.mdx +3 -3
  131. package/docs/docs/cmd/entra/m365group/m365group-report-activitystorage.mdx +2 -2
  132. package/docs/docs/cmd/entra/m365group/m365group-user-list.mdx +1 -1
  133. package/docs/docs/cmd/external/item/item-add.mdx +3 -3
  134. package/docs/docs/cmd/file/file-move.mdx +79 -0
  135. package/docs/docs/cmd/flow/recyclebinitem/recyclebinitem-list.mdx +132 -0
  136. package/docs/docs/cmd/flow/recyclebinitem/recyclebinitem-restore.mdx +55 -0
  137. package/docs/docs/cmd/onenote/notebook/notebook-add.mdx +169 -0
  138. package/docs/docs/cmd/outlook/message/message-get.mdx +5 -5
  139. package/docs/docs/cmd/setup.mdx +16 -3
  140. package/docs/docs/cmd/spfx/project/project-github-workflow-add.mdx +12 -11
  141. package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-get.mdx +5 -6
  142. package/docs/docs/cmd/spo/cdn/cdn-get.mdx +1 -1
  143. package/docs/docs/cmd/spo/cdn/cdn-origin-add.mdx +1 -1
  144. package/docs/docs/cmd/spo/cdn/cdn-origin-list.mdx +1 -1
  145. package/docs/docs/cmd/spo/cdn/cdn-origin-remove.mdx +1 -1
  146. package/docs/docs/cmd/spo/cdn/cdn-policy-list.mdx +1 -1
  147. package/docs/docs/cmd/spo/cdn/cdn-policy-set.mdx +1 -1
  148. package/docs/docs/cmd/spo/externaluser/externaluser-list.mdx +1 -1
  149. package/docs/docs/cmd/spo/file/file-copy.mdx +12 -119
  150. package/docs/docs/cmd/spo/folder/folder-set.mdx +6 -0
  151. package/docs/docs/cmd/spo/folder/folder-sharinglink-add.mdx +125 -0
  152. package/docs/docs/cmd/spo/folder/folder-sharinglink-clear.mdx +50 -0
  153. package/docs/docs/cmd/spo/folder/folder-sharinglink-remove.mdx +50 -0
  154. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-get.mdx +1 -1
  155. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-set.mdx +1 -1
  156. package/docs/docs/cmd/spo/homesite/homesite-remove.mdx +1 -1
  157. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-get.mdx +1 -1
  158. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-remove.mdx +1 -1
  159. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-set.mdx +1 -1
  160. package/docs/docs/cmd/spo/list/list-list.mdx +7 -5
  161. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-add.mdx +1 -1
  162. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-list.mdx +1 -1
  163. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-remove.mdx +1 -1
  164. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-list.mdx +1 -1
  165. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-remove.mdx +1 -1
  166. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-set.mdx +1 -1
  167. package/docs/docs/cmd/spo/page/page-remove.mdx +30 -12
  168. package/docs/docs/cmd/spo/page/page-section-add.mdx +57 -2
  169. package/docs/docs/cmd/spo/site/site-admin-add.mdx +67 -0
  170. package/docs/docs/cmd/spo/site/site-admin-list.mdx +64 -12
  171. package/docs/docs/cmd/spo/site/site-admin-remove.mdx +67 -0
  172. package/docs/docs/cmd/spo/site/site-appcatalog-add.mdx +1 -1
  173. package/docs/docs/cmd/spo/site/site-appcatalog-remove.mdx +3 -12
  174. package/docs/docs/cmd/spo/site/site-commsite-enable.mdx +1 -1
  175. package/docs/docs/cmd/spo/site/site-list.mdx +6 -4
  176. package/docs/docs/cmd/spo/site/site-remove.mdx +3 -0
  177. package/docs/docs/cmd/spo/site/site-set.mdx +1 -1
  178. package/docs/docs/cmd/spo/site/site-sharingpermission-set.mdx +58 -0
  179. package/docs/docs/cmd/spo/storageentity/storageentity-remove.mdx +1 -1
  180. package/docs/docs/cmd/spo/storageentity/storageentity-set.mdx +1 -1
  181. package/docs/docs/cmd/spo/tenant/tenant-appcatalog-add.mdx +1 -1
  182. package/docs/docs/cmd/spo/tenant/tenant-appcatalogurl-get.mdx +1 -1
  183. package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-list.mdx +1 -1
  184. package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-remove.mdx +1 -1
  185. package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-restore.mdx +49 -2
  186. package/docs/docs/cmd/spo/tenant/tenant-settings-list.mdx +1 -1
  187. package/docs/docs/cmd/spo/theme/theme-apply.mdx +1 -1
  188. package/docs/docs/cmd/spo/theme/theme-get.mdx +1 -1
  189. package/docs/docs/cmd/spo/theme/theme-list.mdx +1 -1
  190. package/docs/docs/cmd/spo/theme/theme-remove.mdx +1 -1
  191. package/docs/docs/cmd/spo/theme/theme-set.mdx +1 -1
  192. package/docs/docs/cmd/spo/user/user-get.mdx +35 -9
  193. package/docs/docs/cmd/spp/contentcenter/contentcenter-list.mdx +287 -0
  194. package/docs/docs/cmd/teams/meeting/meeting-transcript-get.mdx +132 -0
  195. package/docs/docs/cmd/viva/engage/engage-community-list.mdx +81 -0
  196. package/npm-shrinkwrap.json +205 -377
  197. package/package.json +16 -17
@@ -9,10 +9,10 @@ import { v4 } from 'uuid';
9
9
  import auth from '../../../../Auth.js';
10
10
  import request from '../../../../request.js';
11
11
  import { accessToken } from '../../../../utils/accessToken.js';
12
- import { odata } from '../../../../utils/odata.js';
12
+ import { entraApp } from '../../../../utils/entraApp.js';
13
13
  import GraphCommand from '../../../base/GraphCommand.js';
14
- import commands from '../../commands.js';
15
14
  import aadCommands from '../../aadCommands.js';
15
+ import commands from '../../commands.js';
16
16
  class EntraAppAddCommand extends GraphCommand {
17
17
  get name() {
18
18
  return commands.APP_ADD;
@@ -27,7 +27,6 @@ class EntraAppAddCommand extends GraphCommand {
27
27
  super();
28
28
  _EntraAppAddCommand_instances.add(this);
29
29
  this.appName = '';
30
- this.appPermissions = [];
31
30
  __classPrivateFieldGet(this, _EntraAppAddCommand_instances, "m", _EntraAppAddCommand_initTelemetry).call(this);
32
31
  __classPrivateFieldGet(this, _EntraAppAddCommand_instances, "m", _EntraAppAddCommand_initOptions).call(this);
33
32
  __classPrivateFieldGet(this, _EntraAppAddCommand_instances, "m", _EntraAppAddCommand_initValidators).call(this);
@@ -35,16 +34,38 @@ class EntraAppAddCommand extends GraphCommand {
35
34
  }
36
35
  async commandAction(logger, args) {
37
36
  await this.showDeprecationWarning(logger, aadCommands.APP_ADD, commands.APP_ADD);
37
+ if (!args.options.name && this.manifest) {
38
+ args.options.name = this.manifest.name;
39
+ }
40
+ this.appName = args.options.name;
38
41
  try {
39
- const apis = await this.resolveApis(args, logger);
40
- let appInfo = await this.createAppRegistration(args, apis, logger);
42
+ const apis = await entraApp.resolveApis({
43
+ options: args.options,
44
+ manifest: this.manifest,
45
+ logger,
46
+ verbose: this.verbose,
47
+ debug: this.debug
48
+ });
49
+ let appInfo = await entraApp.createAppRegistration({
50
+ options: args.options,
51
+ apis,
52
+ logger,
53
+ verbose: this.verbose,
54
+ debug: this.debug
55
+ });
41
56
  // based on the assumption that we're adding Microsoft Entra app to the current
42
57
  // directory. If we in the future extend the command with allowing
43
58
  // users to create Microsoft Entra app in a different directory, we'll need to
44
59
  // adjust this
45
60
  appInfo.tenantId = accessToken.getTenantIdFromAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken);
46
61
  appInfo = await this.updateAppFromManifest(args, appInfo);
47
- appInfo = await this.grantAdminConsent(appInfo, args.options.grantAdminConsent, logger);
62
+ appInfo = await entraApp.grantAdminConsent({
63
+ appInfo,
64
+ appPermissions: entraApp.appPermissions,
65
+ adminConsent: args.options.grantAdminConsent,
66
+ logger,
67
+ debug: this.debug
68
+ });
48
69
  appInfo = await this.configureUri(args, appInfo, logger);
49
70
  appInfo = await this.configureSecret(args, appInfo, logger);
50
71
  const _appInfo = await this.saveAppInfo(args, appInfo, logger);
@@ -62,128 +83,45 @@ class EntraAppAddCommand extends GraphCommand {
62
83
  this.handleRejectedODataJsonPromise(err);
63
84
  }
64
85
  }
65
- async createAppRegistration(args, apis, logger) {
66
- const applicationInfo = {
67
- displayName: args.options.name,
68
- signInAudience: args.options.multitenant ? 'AzureADMultipleOrgs' : 'AzureADMyOrg'
69
- };
70
- if (!applicationInfo.displayName && this.manifest) {
71
- applicationInfo.displayName = this.manifest.name;
72
- }
73
- this.appName = applicationInfo.displayName;
74
- if (apis.length > 0) {
75
- applicationInfo.requiredResourceAccess = apis;
76
- }
77
- if (args.options.redirectUris) {
78
- applicationInfo[args.options.platform] = {
79
- redirectUris: args.options.redirectUris.split(',').map(u => u.trim())
80
- };
81
- }
82
- if (args.options.implicitFlow) {
83
- if (!applicationInfo.web) {
84
- applicationInfo.web = {};
85
- }
86
- applicationInfo.web.implicitGrantSettings = {
87
- enableAccessTokenIssuance: true,
88
- enableIdTokenIssuance: true
89
- };
90
- }
91
- if (args.options.certificateFile || args.options.certificateBase64Encoded) {
92
- const certificateBase64Encoded = await this.getCertificateBase64Encoded(args, logger);
93
- const newKeyCredential = {
94
- type: "AsymmetricX509Cert",
95
- usage: "Verify",
96
- displayName: args.options.certificateDisplayName,
97
- key: certificateBase64Encoded
98
- };
99
- applicationInfo.keyCredentials = [newKeyCredential];
100
- }
101
- if (args.options.allowPublicClientFlows) {
102
- applicationInfo.isFallbackPublicClient = true;
86
+ async configureSecret(args, appInfo, logger) {
87
+ if (!args.options.withSecret || (appInfo.secrets && appInfo.secrets.length > 0)) {
88
+ return appInfo;
103
89
  }
104
90
  if (this.verbose) {
105
- await logger.logToStderr(`Creating Microsoft Entra app registration...`);
106
- }
107
- const createApplicationRequestOptions = {
108
- url: `${this.resource}/v1.0/myorganization/applications`,
109
- headers: {
110
- accept: 'application/json;odata.metadata=none'
111
- },
112
- responseType: 'json',
113
- data: applicationInfo
114
- };
115
- return request.post(createApplicationRequestOptions);
116
- }
117
- async grantAdminConsent(appInfo, adminConsent, logger) {
118
- if (!adminConsent || this.appPermissions.length === 0) {
119
- return appInfo;
91
+ await logger.logToStderr(`Configure Microsoft Entra app secret...`);
120
92
  }
121
- const sp = await this.createServicePrincipal(appInfo.appId);
122
- if (this.debug) {
123
- await logger.logToStderr("Service principal created, returned object id: " + sp.id);
93
+ const secret = await this.createSecret({ appObjectId: appInfo.id });
94
+ if (!appInfo.secrets) {
95
+ appInfo.secrets = [];
124
96
  }
125
- const tasks = [];
126
- this.appPermissions.forEach(async (permission) => {
127
- if (permission.scope.length > 0) {
128
- tasks.push(this.grantOAuth2Permission(sp.id, permission.resourceId, permission.scope.join(' ')));
129
- if (this.debug) {
130
- await logger.logToStderr(`Admin consent granted for following resource ${permission.resourceId}, with delegated permissions: ${permission.scope.join(',')}`);
131
- }
132
- }
133
- permission.resourceAccess.filter(access => access.type === "Role").forEach(async (access) => {
134
- tasks.push(this.addRoleToServicePrincipal(sp.id, permission.resourceId, access.id));
135
- if (this.debug) {
136
- await logger.logToStderr(`Admin consent granted for following resource ${permission.resourceId}, with application permission: ${access.id}`);
137
- }
138
- });
139
- });
140
- await Promise.all(tasks);
97
+ appInfo.secrets.push(secret);
141
98
  return appInfo;
142
99
  }
143
- async addRoleToServicePrincipal(objectId, resourceId, appRoleId) {
100
+ async createSecret({ appObjectId, displayName = undefined, expirationDate = undefined }) {
101
+ let secretExpirationDate = expirationDate;
102
+ if (!secretExpirationDate) {
103
+ secretExpirationDate = new Date();
104
+ secretExpirationDate.setFullYear(secretExpirationDate.getFullYear() + 1);
105
+ }
106
+ const secretName = displayName ?? 'Default';
144
107
  const requestOptions = {
145
- url: `${this.resource}/v1.0/myorganization/servicePrincipals/${objectId}/appRoleAssignments`,
146
- headers: {
147
- 'Content-Type': 'application/json'
148
- },
149
- responseType: 'json',
150
- data: {
151
- appRoleId: appRoleId,
152
- principalId: objectId,
153
- resourceId: resourceId
154
- }
155
- };
156
- return request.post(requestOptions);
157
- }
158
- async grantOAuth2Permission(appId, resourceId, scopeName) {
159
- const grantAdminConsentApplicationRequestOptions = {
160
- url: `${this.resource}/v1.0/myorganization/oauth2PermissionGrants`,
108
+ url: `${this.resource}/v1.0/myorganization/applications/${appObjectId}/addPassword`,
161
109
  headers: {
162
- accept: 'application/json;odata.metadata=none'
110
+ 'content-type': 'application/json'
163
111
  },
164
112
  responseType: 'json',
165
113
  data: {
166
- clientId: appId,
167
- consentType: "AllPrincipals",
168
- principalId: null,
169
- resourceId: resourceId,
170
- scope: scopeName
114
+ passwordCredential: {
115
+ displayName: secretName,
116
+ endDateTime: secretExpirationDate.toISOString()
117
+ }
171
118
  }
172
119
  };
173
- return request.post(grantAdminConsentApplicationRequestOptions);
174
- }
175
- async createServicePrincipal(appId) {
176
- const requestOptions = {
177
- url: `${this.resource}/v1.0/myorganization/servicePrincipals`,
178
- headers: {
179
- 'content-type': 'application/json'
180
- },
181
- data: {
182
- appId: appId
183
- },
184
- responseType: 'json'
120
+ const response = await request.post(requestOptions);
121
+ return {
122
+ displayName: secretName,
123
+ value: response.secretText
185
124
  };
186
- return request.post(requestOptions);
187
125
  }
188
126
  async updateAppFromManifest(args, appInfo) {
189
127
  if (!args.options.manifest) {
@@ -423,180 +361,6 @@ class EntraAppAddCommand extends GraphCommand {
423
361
  await request.patch(requestOptions);
424
362
  return appInfo;
425
363
  }
426
- async resolveApis(args, logger) {
427
- if (!args.options.apisDelegated && !args.options.apisApplication
428
- && (typeof this.manifest?.requiredResourceAccess === 'undefined' || this.manifest.requiredResourceAccess.length === 0)) {
429
- return [];
430
- }
431
- if (this.verbose) {
432
- await logger.logToStderr('Resolving requested APIs...');
433
- }
434
- const servicePrincipals = await odata.getAllItems(`${this.resource}/v1.0/myorganization/servicePrincipals?$select=appId,appRoles,id,oauth2PermissionScopes,servicePrincipalNames`);
435
- let resolvedApis = [];
436
- try {
437
- if (args.options.apisDelegated || args.options.apisApplication) {
438
- resolvedApis = await this.getRequiredResourceAccessForApis(servicePrincipals, args.options.apisDelegated, 'Scope', logger);
439
- if (this.verbose) {
440
- await logger.logToStderr(`Resolved delegated permissions: ${JSON.stringify(resolvedApis, null, 2)}`);
441
- }
442
- const resolvedApplicationApis = await this.getRequiredResourceAccessForApis(servicePrincipals, args.options.apisApplication, 'Role', logger);
443
- if (this.verbose) {
444
- await logger.logToStderr(`Resolved application permissions: ${JSON.stringify(resolvedApplicationApis, null, 2)}`);
445
- }
446
- // merge resolved application APIs onto resolved delegated APIs
447
- resolvedApplicationApis.forEach(resolvedRequiredResource => {
448
- const requiredResource = resolvedApis.find(api => api.resourceAppId === resolvedRequiredResource.resourceAppId);
449
- if (requiredResource) {
450
- requiredResource.resourceAccess.push(...resolvedRequiredResource.resourceAccess);
451
- }
452
- else {
453
- resolvedApis.push(resolvedRequiredResource);
454
- }
455
- });
456
- }
457
- else {
458
- const manifestApis = this.manifest.requiredResourceAccess;
459
- manifestApis.forEach(manifestApi => {
460
- resolvedApis.push(manifestApi);
461
- const app = servicePrincipals.find(servicePrincipals => servicePrincipals.appId === manifestApi.resourceAppId);
462
- if (app) {
463
- manifestApi.resourceAccess.forEach((res => {
464
- const resourceAccessPermission = {
465
- id: res.id,
466
- type: res.type
467
- };
468
- const oAuthValue = app.oauth2PermissionScopes.find(scp => scp.id === res.id)?.value;
469
- this.updateAppPermissions(app.id, resourceAccessPermission, oAuthValue);
470
- }));
471
- }
472
- });
473
- }
474
- if (this.verbose) {
475
- await logger.logToStderr(`Merged delegated and application permissions: ${JSON.stringify(resolvedApis, null, 2)}`);
476
- await logger.logToStderr(`App role assignments: ${JSON.stringify(this.appPermissions.flatMap(permission => permission.resourceAccess.filter(access => access.type === "Role")), null, 2)}`);
477
- await logger.logToStderr(`OAuth2 permissions: ${JSON.stringify(this.appPermissions.flatMap(permission => permission.scope), null, 2)}`);
478
- }
479
- return resolvedApis;
480
- }
481
- catch (e) {
482
- throw e;
483
- }
484
- }
485
- async getRequiredResourceAccessForApis(servicePrincipals, apis, scopeType, logger) {
486
- if (!apis) {
487
- return [];
488
- }
489
- const resolvedApis = [];
490
- const requestedApis = apis.split(',').map(a => a.trim());
491
- for (const api of requestedApis) {
492
- const pos = api.lastIndexOf('/');
493
- const permissionName = api.substr(pos + 1);
494
- const servicePrincipalName = api.substr(0, pos);
495
- if (this.debug) {
496
- await logger.logToStderr(`Resolving ${api}...`);
497
- await logger.logToStderr(`Permission name: ${permissionName}`);
498
- await logger.logToStderr(`Service principal name: ${servicePrincipalName}`);
499
- }
500
- const servicePrincipal = servicePrincipals.find(sp => (sp.servicePrincipalNames.indexOf(servicePrincipalName) > -1 ||
501
- sp.servicePrincipalNames.indexOf(`${servicePrincipalName}/`) > -1));
502
- if (!servicePrincipal) {
503
- throw `Service principal ${servicePrincipalName} not found`;
504
- }
505
- const scopesOfType = scopeType === 'Scope' ? servicePrincipal.oauth2PermissionScopes : servicePrincipal.appRoles;
506
- const permission = scopesOfType.find(scope => scope.value === permissionName);
507
- if (!permission) {
508
- throw `Permission ${permissionName} for service principal ${servicePrincipalName} not found`;
509
- }
510
- let resolvedApi = resolvedApis.find(a => a.resourceAppId === servicePrincipal.appId);
511
- if (!resolvedApi) {
512
- resolvedApi = {
513
- resourceAppId: servicePrincipal.appId,
514
- resourceAccess: []
515
- };
516
- resolvedApis.push(resolvedApi);
517
- }
518
- const resourceAccessPermission = {
519
- id: permission.id,
520
- type: scopeType
521
- };
522
- resolvedApi.resourceAccess.push(resourceAccessPermission);
523
- this.updateAppPermissions(servicePrincipal.id, resourceAccessPermission, permission.value);
524
- }
525
- return resolvedApis;
526
- }
527
- updateAppPermissions(spId, resourceAccessPermission, oAuth2PermissionValue) {
528
- // During API resolution, we store globally both app role assignments and oauth2permissions
529
- // So that we'll be able to parse them during the admin consent process
530
- let existingPermission = this.appPermissions.find(oauth => oauth.resourceId === spId);
531
- if (!existingPermission) {
532
- existingPermission = {
533
- resourceId: spId,
534
- resourceAccess: [],
535
- scope: []
536
- };
537
- this.appPermissions.push(existingPermission);
538
- }
539
- if (resourceAccessPermission.type === 'Scope' && oAuth2PermissionValue && !existingPermission.scope.find(scp => scp === oAuth2PermissionValue)) {
540
- existingPermission.scope.push(oAuth2PermissionValue);
541
- }
542
- if (!existingPermission.resourceAccess.find(res => res.id === resourceAccessPermission.id)) {
543
- existingPermission.resourceAccess.push(resourceAccessPermission);
544
- }
545
- }
546
- async configureSecret(args, appInfo, logger) {
547
- if (!args.options.withSecret || (appInfo.secrets && appInfo.secrets.length > 0)) {
548
- return appInfo;
549
- }
550
- if (this.verbose) {
551
- await logger.logToStderr(`Configure Microsoft Entra app secret...`);
552
- }
553
- const secret = await this.createSecret({ appObjectId: appInfo.id });
554
- if (!appInfo.secrets) {
555
- appInfo.secrets = [];
556
- }
557
- appInfo.secrets.push(secret);
558
- return appInfo;
559
- }
560
- async createSecret({ appObjectId, displayName = undefined, expirationDate = undefined }) {
561
- let secretExpirationDate = expirationDate;
562
- if (!secretExpirationDate) {
563
- secretExpirationDate = new Date();
564
- secretExpirationDate.setFullYear(secretExpirationDate.getFullYear() + 1);
565
- }
566
- const secretName = displayName ?? 'Default';
567
- const requestOptions = {
568
- url: `${this.resource}/v1.0/myorganization/applications/${appObjectId}/addPassword`,
569
- headers: {
570
- 'content-type': 'application/json'
571
- },
572
- responseType: 'json',
573
- data: {
574
- passwordCredential: {
575
- displayName: secretName,
576
- endDateTime: secretExpirationDate.toISOString()
577
- }
578
- }
579
- };
580
- const response = await request.post(requestOptions);
581
- return {
582
- displayName: secretName,
583
- value: response.secretText
584
- };
585
- }
586
- async getCertificateBase64Encoded(args, logger) {
587
- if (args.options.certificateBase64Encoded) {
588
- return args.options.certificateBase64Encoded;
589
- }
590
- if (this.debug) {
591
- await logger.logToStderr(`Reading existing ${args.options.certificateFile}...`);
592
- }
593
- try {
594
- return fs.readFileSync(args.options.certificateFile, { encoding: 'base64' });
595
- }
596
- catch (e) {
597
- throw new Error(`Error reading certificate file: ${e}. Please add the certificate using base64 option '--certificateBase64Encoded'.`);
598
- }
599
- }
600
364
  async saveAppInfo(args, appInfo, logger) {
601
365
  if (!args.options.save) {
602
366
  return appInfo;
@@ -30,12 +30,12 @@ class EntraEnterpriseAppAddCommand extends GraphCommand {
30
30
  __classPrivateFieldGet(this, _EntraEnterpriseAppAddCommand_instances, "m", _EntraEnterpriseAppAddCommand_initOptionSets).call(this);
31
31
  }
32
32
  async getAppId(args) {
33
- if (args.options.id) {
34
- return args.options.id;
33
+ if (args.options.appId) {
34
+ return args.options.appId;
35
35
  }
36
36
  let spMatchQuery = '';
37
- if (args.options.displayName) {
38
- spMatchQuery = `displayName eq '${formatting.encodeQueryParameter(args.options.displayName)}'`;
37
+ if (args.options.appName) {
38
+ spMatchQuery = `displayName eq '${formatting.encodeQueryParameter(args.options.appName)}'`;
39
39
  }
40
40
  else if (args.options.objectId) {
41
41
  spMatchQuery = `id eq '${formatting.encodeQueryParameter(args.options.objectId)}'`;
@@ -54,7 +54,7 @@ class EntraEnterpriseAppAddCommand extends GraphCommand {
54
54
  }
55
55
  if (response.value.length > 1) {
56
56
  const resultAsKeyValuePair = formatting.convertArrayToHashTable('appId', response.value);
57
- const result = await cli.handleMultipleResultsFound(`Multiple Entra apps with name '${args.options.displayName}' found.`, resultAsKeyValuePair);
57
+ const result = await cli.handleMultipleResultsFound(`Multiple Entra apps with name '${args.options.appName}' found.`, resultAsKeyValuePair);
58
58
  return result.appId;
59
59
  }
60
60
  return spItem.appId;
@@ -85,31 +85,31 @@ class EntraEnterpriseAppAddCommand extends GraphCommand {
85
85
  _EntraEnterpriseAppAddCommand_instances = new WeakSet(), _EntraEnterpriseAppAddCommand_initTelemetry = function _EntraEnterpriseAppAddCommand_initTelemetry() {
86
86
  this.telemetry.push((args) => {
87
87
  Object.assign(this.telemetryProperties, {
88
- id: (!(!args.options.id)).toString(),
89
- displayName: (!(!args.options.displayName)).toString(),
88
+ appId: (!(!args.options.appId)).toString(),
89
+ appName: (!(!args.options.appName)).toString(),
90
90
  objectId: (!(!args.options.objectId)).toString()
91
91
  });
92
92
  });
93
93
  }, _EntraEnterpriseAppAddCommand_initOptions = function _EntraEnterpriseAppAddCommand_initOptions() {
94
94
  this.options.unshift({
95
- option: '-i, --id [id]'
95
+ option: '--appId [appId]'
96
96
  }, {
97
- option: '-n, --displayName [displayName]'
97
+ option: '--appName [appName]'
98
98
  }, {
99
99
  option: '--objectId [objectId]'
100
100
  });
101
101
  }, _EntraEnterpriseAppAddCommand_initValidators = function _EntraEnterpriseAppAddCommand_initValidators() {
102
102
  this.validators.push(async (args) => {
103
- if (args.options.id && !validation.isValidGuid(args.options.id)) {
104
- return `${args.options.id} is not a valid GUID`;
103
+ if (args.options.appId && !validation.isValidGuid(args.options.appId)) {
104
+ return `${args.options.appId} is not a valid appId GUID`;
105
105
  }
106
106
  if (args.options.objectId && !validation.isValidGuid(args.options.objectId)) {
107
- return `${args.options.objectId} is not a valid GUID`;
107
+ return `${args.options.objectId} is not a valid objectId GUID`;
108
108
  }
109
109
  return true;
110
110
  });
111
111
  }, _EntraEnterpriseAppAddCommand_initOptionSets = function _EntraEnterpriseAppAddCommand_initOptionSets() {
112
- this.optionSets.push({ options: ['id', 'displayName', 'objectId'] });
112
+ this.optionSets.push({ options: ['appId', 'appName', 'objectId'] });
113
113
  };
114
114
  export default new EntraEnterpriseAppAddCommand();
115
115
  //# sourceMappingURL=enterpriseapp-add.js.map
@@ -30,15 +30,15 @@ class EntraEnterpriseAppGetCommand extends GraphCommand {
30
30
  __classPrivateFieldGet(this, _EntraEnterpriseAppGetCommand_instances, "m", _EntraEnterpriseAppGetCommand_initOptionSets).call(this);
31
31
  }
32
32
  async getSpId(args) {
33
- if (args.options.objectId) {
34
- return args.options.objectId;
33
+ if (args.options.appObjectId) {
34
+ return args.options.appObjectId;
35
35
  }
36
36
  let spMatchQuery = '';
37
- if (args.options.displayName) {
38
- spMatchQuery = `displayName eq '${formatting.encodeQueryParameter(args.options.displayName)}'`;
37
+ if (args.options.appDisplayName) {
38
+ spMatchQuery = `displayName eq '${formatting.encodeQueryParameter(args.options.appDisplayName)}'`;
39
39
  }
40
- else if (args.options.id) {
41
- spMatchQuery = `appId eq '${formatting.encodeQueryParameter(args.options.id)}'`;
40
+ else if (args.options.appId) {
41
+ spMatchQuery = `appId eq '${formatting.encodeQueryParameter(args.options.appId)}'`;
42
42
  }
43
43
  const idRequestOptions = {
44
44
  url: `${this.resource}/v1.0/servicePrincipals?$filter=${spMatchQuery}`,
@@ -54,7 +54,7 @@ class EntraEnterpriseAppGetCommand extends GraphCommand {
54
54
  }
55
55
  if (response.value.length > 1) {
56
56
  const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', response.value);
57
- const result = await cli.handleMultipleResultsFound(`Multiple Entra apps with name '${args.options.displayName}' found.`, resultAsKeyValuePair);
57
+ const result = await cli.handleMultipleResultsFound(`Multiple Entra apps with name '${args.options.appDisplayName}' found.`, resultAsKeyValuePair);
58
58
  return result.id;
59
59
  }
60
60
  return spItem.id;
@@ -85,31 +85,31 @@ class EntraEnterpriseAppGetCommand extends GraphCommand {
85
85
  _EntraEnterpriseAppGetCommand_instances = new WeakSet(), _EntraEnterpriseAppGetCommand_initTelemetry = function _EntraEnterpriseAppGetCommand_initTelemetry() {
86
86
  this.telemetry.push((args) => {
87
87
  Object.assign(this.telemetryProperties, {
88
- id: (!(!args.options.id)).toString(),
89
- displayName: (!(!args.options.displayName)).toString(),
90
- objectId: (!(!args.options.objectId)).toString()
88
+ appId: (!(!args.options.appId)).toString(),
89
+ appDisplayName: (!(!args.options.appDisplayName)).toString(),
90
+ appObjectId: (!(!args.options.appObjectId)).toString()
91
91
  });
92
92
  });
93
93
  }, _EntraEnterpriseAppGetCommand_initOptions = function _EntraEnterpriseAppGetCommand_initOptions() {
94
94
  this.options.unshift({
95
- option: '-i, --id [id]'
95
+ option: '-i, --appId [appId]'
96
96
  }, {
97
- option: '-n, --displayName [displayName]'
97
+ option: '-n, --appDisplayName [appDisplayName]'
98
98
  }, {
99
- option: '--objectId [objectId]'
99
+ option: '--appObjectId [appObjectId]'
100
100
  });
101
101
  }, _EntraEnterpriseAppGetCommand_initValidators = function _EntraEnterpriseAppGetCommand_initValidators() {
102
102
  this.validators.push(async (args) => {
103
- if (args.options.id && !validation.isValidGuid(args.options.id)) {
104
- return `${args.options.id} is not a valid GUID`;
103
+ if (args.options.appId && !validation.isValidGuid(args.options.appId)) {
104
+ return `${args.options.appId} is not a valid appId GUID`;
105
105
  }
106
- if (args.options.objectId && !validation.isValidGuid(args.options.objectId)) {
107
- return `${args.options.objectId} is not a valid GUID`;
106
+ if (args.options.appObjectId && !validation.isValidGuid(args.options.appObjectId)) {
107
+ return `${args.options.appObjectId} is not a valid objectId GUID`;
108
108
  }
109
109
  return true;
110
110
  });
111
111
  }, _EntraEnterpriseAppGetCommand_initOptionSets = function _EntraEnterpriseAppGetCommand_initOptionSets() {
112
- this.optionSets.push({ options: ['id', 'displayName', 'objectId'] });
112
+ this.optionSets.push({ options: ['appId', 'appDisplayName', 'appObjectId'] });
113
113
  };
114
114
  export default new EntraEnterpriseAppGetCommand();
115
115
  //# sourceMappingURL=enterpriseapp-get.js.map
@@ -61,7 +61,7 @@ _EntraEnterpriseAppListCommand_instances = new WeakSet(), _EntraEnterpriseAppLis
61
61
  });
62
62
  }, _EntraEnterpriseAppListCommand_initOptions = function _EntraEnterpriseAppListCommand_initOptions() {
63
63
  this.options.unshift({
64
- option: '-n, --displayName [displayName]'
64
+ option: '--displayName [displayName]'
65
65
  }, {
66
66
  option: '--tag [tag]'
67
67
  });
@@ -65,7 +65,7 @@ class EntraGroupUserListCommand extends GraphCommand {
65
65
  if (this.verbose) {
66
66
  await logger.logToStderr('Retrieving Group Id...');
67
67
  }
68
- return await entraGroup.getGroupIdByDisplayName(options.groupName);
68
+ return await entraGroup.getGroupIdByDisplayName(options.groupDisplayName);
69
69
  }
70
70
  async getUsers(options, role, groupId, logger) {
71
71
  const { properties, filter } = options;
@@ -111,7 +111,7 @@ _EntraGroupUserListCommand_instances = new WeakSet(), _EntraGroupUserListCommand
111
111
  this.telemetry.push((args) => {
112
112
  Object.assign(this.telemetryProperties, {
113
113
  groupId: typeof args.options.groupId !== 'undefined',
114
- groupName: typeof args.options.groupName !== 'undefined',
114
+ groupDisplayName: typeof args.options.groupDisplayName !== 'undefined',
115
115
  role: typeof args.options.role !== 'undefined',
116
116
  properties: typeof args.options.properties !== 'undefined',
117
117
  filter: typeof args.options.filter !== 'undefined'
@@ -121,7 +121,7 @@ _EntraGroupUserListCommand_instances = new WeakSet(), _EntraGroupUserListCommand
121
121
  this.options.unshift({
122
122
  option: "-i, --groupId [groupId]"
123
123
  }, {
124
- option: "-n, --groupName [groupName]"
124
+ option: "-n, --groupDisplayName [groupDisplayName]"
125
125
  }, {
126
126
  option: "-r, --role [role]",
127
127
  autocomplete: ["Owner", "Member"]
@@ -132,7 +132,7 @@ _EntraGroupUserListCommand_instances = new WeakSet(), _EntraGroupUserListCommand
132
132
  });
133
133
  }, _EntraGroupUserListCommand_initOptionSets = function _EntraGroupUserListCommand_initOptionSets() {
134
134
  this.optionSets.push({
135
- options: ['groupId', 'groupName']
135
+ options: ['groupId', 'groupDisplayName']
136
136
  });
137
137
  }, _EntraGroupUserListCommand_initValidators = function _EntraGroupUserListCommand_initValidators() {
138
138
  this.validators.push(async (args) => {
@@ -51,7 +51,7 @@ class EntraM365GroupConversationPostListCommand extends GraphCommand {
51
51
  if (args.options.groupId) {
52
52
  return formatting.encodeQueryParameter(args.options.groupId);
53
53
  }
54
- const group = await entraGroup.getGroupByDisplayName(args.options.groupName);
54
+ const group = await entraGroup.getGroupByDisplayName(args.options.groupDisplayName);
55
55
  return group.id;
56
56
  }
57
57
  }
@@ -59,14 +59,14 @@ _EntraM365GroupConversationPostListCommand_instances = new WeakSet(), _EntraM365
59
59
  this.telemetry.push((args) => {
60
60
  Object.assign(this.telemetryProperties, {
61
61
  groupId: typeof args.options.groupId !== 'undefined',
62
- groupName: typeof args.options.groupName !== 'undefined'
62
+ groupDisplayName: typeof args.options.groupDisplayName !== 'undefined'
63
63
  });
64
64
  });
65
65
  }, _EntraM365GroupConversationPostListCommand_initOptions = function _EntraM365GroupConversationPostListCommand_initOptions() {
66
66
  this.options.unshift({
67
67
  option: '-i, --groupId [groupId]'
68
68
  }, {
69
- option: '-d, --groupName [groupName]'
69
+ option: '-d, --groupDisplayName [groupDisplayName]'
70
70
  }, {
71
71
  option: '-t, --threadId <threadId>'
72
72
  });
@@ -78,7 +78,7 @@ _EntraM365GroupConversationPostListCommand_instances = new WeakSet(), _EntraM365
78
78
  return true;
79
79
  });
80
80
  }, _EntraM365GroupConversationPostListCommand_initOptionSets = function _EntraM365GroupConversationPostListCommand_initOptionSets() {
81
- this.optionSets.push({ options: ['groupId', 'groupName'] });
81
+ this.optionSets.push({ options: ['groupId', 'groupDisplayName'] });
82
82
  };
83
83
  export default new EntraM365GroupConversationPostListCommand();
84
84
  //# sourceMappingURL=m365group-conversation-post-list.js.map
@@ -32,7 +32,7 @@ class EntraM365GroupRecycleBinItemListCommand extends GraphCommand {
32
32
  await this.showDeprecationWarning(logger, aadCommands.M365GROUP_RECYCLEBINITEM_LIST, commands.M365GROUP_RECYCLEBINITEM_LIST);
33
33
  try {
34
34
  const filter = `?$filter=groupTypes/any(c:c+eq+'Unified')`;
35
- const displayNameFilter = args.options.groupName ? ` and startswith(DisplayName,'${formatting.encodeQueryParameter(args.options.groupName).replace(/'/g, `''`)}')` : '';
35
+ const displayNameFilter = args.options.groupDisplayName ? ` and startswith(DisplayName,'${formatting.encodeQueryParameter(args.options.groupDisplayName).replace(/'/g, `''`)}')` : '';
36
36
  const mailNicknameFilter = args.options.groupMailNickname ? ` and startswith(MailNickname,'${formatting.encodeQueryParameter(args.options.groupMailNickname).replace(/'/g, `''`)}')` : '';
37
37
  const topCount = '&$top=100';
38
38
  const endpoint = `${this.resource}/v1.0/directory/deletedItems/Microsoft.Graph.Group${filter}${displayNameFilter}${mailNicknameFilter}${topCount}`;
@@ -47,13 +47,13 @@ class EntraM365GroupRecycleBinItemListCommand extends GraphCommand {
47
47
  _EntraM365GroupRecycleBinItemListCommand_instances = new WeakSet(), _EntraM365GroupRecycleBinItemListCommand_initTelemetry = function _EntraM365GroupRecycleBinItemListCommand_initTelemetry() {
48
48
  this.telemetry.push((args) => {
49
49
  Object.assign(this.telemetryProperties, {
50
- groupName: typeof args.options.groupName !== 'undefined',
50
+ groupDisplayName: typeof args.options.groupDisplayName !== 'undefined',
51
51
  groupMailNickname: typeof args.options.groupMailNickname !== 'undefined'
52
52
  });
53
53
  });
54
54
  }, _EntraM365GroupRecycleBinItemListCommand_initOptions = function _EntraM365GroupRecycleBinItemListCommand_initOptions() {
55
55
  this.options.unshift({
56
- option: '-d, --groupName [groupName]'
56
+ option: '-d, --groupDisplayName [groupDisplayName]'
57
57
  }, {
58
58
  option: '-m, --groupMailNickname [groupMailNickname]'
59
59
  });