@pnp/cli-microsoft365 7.5.0-beta.23612bc → 7.5.0-beta.4f8e5bf

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 (172) hide show
  1. package/.eslintrc.cjs +6 -2
  2. package/.mocharc.json +3 -5
  3. package/README.md +2 -2
  4. package/allCommands.json +1 -1
  5. package/allCommandsFull.json +1 -1
  6. package/dist/Auth.js +171 -69
  7. package/dist/AuthServer.js +3 -3
  8. package/dist/Command.js +8 -5
  9. package/dist/auth/FileTokenStorage.js +4 -1
  10. package/dist/m365/base/AppCommand.js +2 -2
  11. package/dist/m365/base/PowerAppsCommand.js +2 -2
  12. package/dist/m365/base/PowerAutomateCommand.js +2 -2
  13. package/dist/m365/base/PowerPlatformCommand.js +2 -2
  14. package/dist/m365/base/SpoCommand.js +3 -3
  15. package/dist/m365/base/{YammerCommand.js → VivaEngageCommand.js} +2 -2
  16. package/dist/m365/cli/commands/cli-consent.js +5 -3
  17. package/dist/m365/cli/commands/cli-doctor.js +5 -5
  18. package/dist/m365/commands/ConnectionDetails.js +2 -0
  19. package/dist/m365/commands/login.js +26 -48
  20. package/dist/m365/commands/logout.js +2 -2
  21. package/dist/m365/commands/request.js +2 -2
  22. package/dist/m365/commands/status.js +15 -23
  23. package/dist/m365/connection/commands/connection-list.js +47 -0
  24. package/dist/m365/connection/commands/connection-remove.js +67 -0
  25. package/dist/m365/connection/commands/connection-set.js +56 -0
  26. package/dist/m365/connection/commands/connection-use.js +51 -0
  27. package/dist/m365/connection/commands.js +8 -0
  28. package/dist/m365/entra/aadCommands.js +3 -0
  29. package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-remove.js +153 -0
  30. package/dist/m365/entra/commands/app/app-add.js +2 -2
  31. package/dist/m365/entra/commands/app/app-get.js +1 -1
  32. package/dist/m365/entra/commands/app/app-list.js +1 -1
  33. package/dist/m365/entra/commands/app/app-permission-add.js +1 -1
  34. package/dist/m365/entra/commands/app/app-permission-list.js +182 -0
  35. package/dist/m365/entra/commands/app/app-remove.js +1 -1
  36. package/dist/m365/entra/commands/app/app-role-add.js +1 -1
  37. package/dist/m365/entra/commands/app/app-role-list.js +1 -1
  38. package/dist/m365/entra/commands/app/app-role-remove.js +1 -1
  39. package/dist/m365/entra/commands/app/app-set.js +1 -1
  40. package/dist/m365/entra/commands/{sp/sp-add.js → enterpriseapp/enterpriseapp-add.js} +18 -18
  41. package/dist/m365/entra/commands/{sp/sp-get.js → enterpriseapp/enterpriseapp-get.js} +19 -19
  42. package/dist/m365/entra/commands/{sp/sp-list.js → enterpriseapp/enterpriseapp-list.js} +13 -13
  43. package/dist/m365/entra/commands/group/group-add.js +224 -0
  44. package/dist/m365/entra/commands/m365group/m365group-report-activitygroupcounts.js +1 -1
  45. package/dist/m365/entra/commands/user/user-get.js +38 -38
  46. package/dist/m365/entra/commands/user/user-license-list.js +1 -1
  47. package/dist/m365/entra/commands/user/user-registrationdetails-list.js +224 -0
  48. package/dist/m365/entra/commands/user/user-set.js +2 -2
  49. package/dist/m365/entra/commands.js +16 -0
  50. package/dist/m365/file/commands/convert/convert-pdf.js +1 -1
  51. package/dist/m365/file/commands/file-copy.js +151 -0
  52. package/dist/m365/file/commands.js +1 -0
  53. package/dist/m365/outlook/commands/mail/mail-send.js +1 -1
  54. package/dist/m365/outlook/commands/message/message-get.js +1 -1
  55. package/dist/m365/pa/commands/app/app-permission-ensure.js +1 -1
  56. package/dist/m365/pa/commands/app/app-permission-remove.js +1 -1
  57. package/dist/m365/planner/commands/roster/roster-plan-list.js +1 -1
  58. package/dist/m365/purview/commands/auditlog/auditlog-list.js +1 -1
  59. package/dist/m365/purview/commands/sensitivitylabel/sensitivitylabel-get.js +1 -1
  60. package/dist/m365/purview/commands/sensitivitylabel/sensitivitylabel-list.js +1 -1
  61. package/dist/m365/purview/commands/sensitivitylabel/sensitivitylabel-policysettings-list.js +1 -1
  62. package/dist/m365/spfx/commands/project/DeployWorkflow.js +4 -3
  63. package/dist/m365/spo/commands/spo-get.js +1 -1
  64. package/dist/m365/spo/commands/spo-search.js +52 -22
  65. package/dist/m365/spo/commands/spo-set.js +1 -1
  66. package/dist/m365/teams/commands/chat/chat-get.js +1 -1
  67. package/dist/m365/teams/commands/chat/chat-list.js +1 -1
  68. package/dist/m365/teams/commands/chat/chat-message-send.js +1 -1
  69. package/dist/m365/teams/commands/meeting/meeting-add.js +1 -1
  70. package/dist/m365/teams/commands/meeting/meeting-attendancereport-list.js +1 -1
  71. package/dist/m365/teams/commands/meeting/meeting-get.js +1 -1
  72. package/dist/m365/teams/commands/meeting/meeting-list.js +2 -2
  73. package/dist/m365/teams/commands/meeting/meeting-transcript-list.js +1 -1
  74. package/dist/m365/tenant/commands/id/id-get.js +1 -1
  75. package/dist/m365/tenant/commands/info/info-get.js +1 -1
  76. package/dist/m365/util/commands/accesstoken/accesstoken-get.js +3 -3
  77. package/dist/m365/{yammer/commands/group/group-list.js → viva/commands/engage/engage-group-list.js} +19 -14
  78. package/dist/m365/{yammer/commands/group/group-user-add.js → viva/commands/engage/engage-group-user-add.js} +19 -14
  79. package/dist/m365/{yammer/commands/group/group-user-remove.js → viva/commands/engage/engage-group-user-remove.js} +19 -14
  80. package/dist/m365/{yammer/commands/message/message-add.js → viva/commands/engage/engage-message-add.js} +19 -14
  81. package/dist/m365/{yammer/commands/message/message-get.js → viva/commands/engage/engage-message-get.js} +17 -12
  82. package/dist/m365/{yammer/commands/message/message-like-set.js → viva/commands/engage/engage-message-like-set.js} +21 -16
  83. package/dist/m365/{yammer/commands/message/message-list.js → viva/commands/engage/engage-message-list.js} +21 -16
  84. package/dist/m365/{yammer/commands/message/message-remove.js → viva/commands/engage/engage-message-remove.js} +20 -15
  85. package/dist/m365/{yammer/commands/network/network-list.js → viva/commands/engage/engage-network-list.js} +16 -11
  86. package/dist/m365/viva/commands/engage/engage-report-activitycounts.js +23 -0
  87. package/dist/m365/viva/commands/engage/engage-report-activityusercounts.js +23 -0
  88. package/dist/m365/viva/commands/engage/engage-report-activityuserdetail.js +23 -0
  89. package/dist/m365/viva/commands/engage/engage-report-deviceusagedistributionusercounts.js +23 -0
  90. package/dist/m365/viva/commands/engage/engage-report-deviceusageusercounts.js +23 -0
  91. package/dist/m365/viva/commands/engage/engage-report-deviceusageuserdetail.js +23 -0
  92. package/dist/m365/viva/commands/engage/engage-report-groupsactivitycounts.js +23 -0
  93. package/dist/m365/viva/commands/engage/engage-report-groupsactivitydetail.js +23 -0
  94. package/dist/m365/viva/commands/engage/engage-report-groupsactivitygroupcounts.js +23 -0
  95. package/dist/m365/{yammer/commands/yammer-search.js → viva/commands/engage/engage-search.js} +23 -18
  96. package/dist/m365/{yammer/commands/user/user-get.js → viva/commands/engage/engage-user-get.js} +18 -13
  97. package/dist/m365/{yammer/commands/user/user-list.js → viva/commands/engage/engage-user-list.js} +18 -13
  98. package/dist/m365/{yammer/commands.js → viva/commands/engage/yammerCommands.js} +1 -1
  99. package/dist/m365/viva/commands.js +22 -1
  100. package/dist/request.js +1 -1
  101. package/dist/utils/spo.js +36 -14
  102. package/dist/utils/urlUtil.js +31 -0
  103. package/dist/utils/validation.js +4 -0
  104. package/docs/docs/cmd/cli/cli-consent.mdx +9 -9
  105. package/docs/docs/cmd/connection/connection-list.mdx +100 -0
  106. package/docs/docs/cmd/connection/connection-remove.mdx +45 -0
  107. package/docs/docs/cmd/connection/connection-set.mdx +39 -0
  108. package/docs/docs/cmd/connection/connection-use.mdx +98 -0
  109. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-add.mdx +5 -3
  110. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-remove.mdx +107 -0
  111. package/docs/docs/cmd/entra/app/app-add.mdx +2 -1
  112. package/docs/docs/cmd/entra/app/app-get.mdx +1 -0
  113. package/docs/docs/cmd/entra/app/app-list.mdx +1 -0
  114. package/docs/docs/cmd/entra/app/app-permission-add.mdx +1 -0
  115. package/docs/docs/cmd/entra/app/app-permission-list.mdx +105 -0
  116. package/docs/docs/cmd/entra/app/app-remove.mdx +1 -0
  117. package/docs/docs/cmd/entra/app/app-role-add.mdx +1 -0
  118. package/docs/docs/cmd/entra/app/app-role-list.mdx +1 -0
  119. package/docs/docs/cmd/entra/app/app-role-remove.mdx +1 -0
  120. package/docs/docs/cmd/entra/app/app-set.mdx +1 -0
  121. package/docs/docs/cmd/entra/{sp/sp-add.mdx → enterpriseapp/enterpriseapp-add.mdx} +16 -15
  122. package/docs/docs/cmd/entra/{sp/sp-get.mdx → enterpriseapp/enterpriseapp-get.mdx} +15 -14
  123. package/docs/docs/cmd/entra/{sp/sp-list.mdx → enterpriseapp/enterpriseapp-list.mdx} +22 -21
  124. package/docs/docs/cmd/entra/group/group-add.mdx +231 -0
  125. package/docs/docs/cmd/entra/m365group/m365group-report-activitygroupcounts.mdx +1 -1
  126. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-add.mdx +3 -3
  127. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-list.mdx +1 -1
  128. package/docs/docs/cmd/entra/user/user-registrationdetails-list.mdx +246 -0
  129. package/docs/docs/cmd/external/item/item-add.mdx +1 -1
  130. package/docs/docs/cmd/file/convert/convert-pdf.mdx +4 -0
  131. package/docs/docs/cmd/file/file-add.mdx +4 -0
  132. package/docs/docs/cmd/file/file-copy.mdx +68 -0
  133. package/docs/docs/cmd/file/file-list.mdx +100 -0
  134. package/docs/docs/cmd/login.mdx +15 -0
  135. package/docs/docs/cmd/setup.mdx +4 -0
  136. package/docs/docs/cmd/spo/list/list-webhook-set.mdx +1 -1
  137. package/docs/docs/cmd/spo/spo-search.mdx +6 -2
  138. package/docs/docs/cmd/spo/theme/theme-set.mdx +14 -2
  139. package/docs/docs/cmd/{yammer/group/group-list.mdx → viva/engage/engage-group-list.mdx} +13 -13
  140. package/docs/docs/cmd/{yammer/group/group-user-add.mdx → viva/engage/engage-group-user-add.mdx} +7 -7
  141. package/docs/docs/cmd/{yammer/group/group-user-remove.mdx → viva/engage/engage-group-user-remove.mdx} +10 -10
  142. package/docs/docs/cmd/{yammer/message/message-add.mdx → viva/engage/engage-message-add.mdx} +12 -13
  143. package/docs/docs/cmd/{yammer/message/message-get.mdx → viva/engage/engage-message-get.mdx} +10 -10
  144. package/docs/docs/cmd/{yammer/message/message-like-set.mdx → viva/engage/engage-message-like-set.mdx} +10 -10
  145. package/docs/docs/cmd/{yammer/message/message-list.mdx → viva/engage/engage-message-list.mdx} +21 -21
  146. package/docs/docs/cmd/{yammer/message/message-remove.mdx → viva/engage/engage-message-remove.mdx} +10 -10
  147. package/docs/docs/cmd/{yammer/network/network-list.mdx → viva/engage/engage-network-list.mdx} +6 -6
  148. package/docs/docs/cmd/{yammer/report/report-activitycounts.mdx → viva/engage/engage-report-activitycounts.mdx} +9 -9
  149. package/docs/docs/cmd/{yammer/report/report-activityusercounts.mdx → viva/engage/engage-report-activityusercounts.mdx} +9 -9
  150. package/docs/docs/cmd/{yammer/report/report-activityuserdetail.mdx → viva/engage/engage-report-activityuserdetail.mdx} +11 -12
  151. package/docs/docs/cmd/{yammer/report/report-deviceusagedistributionusercounts.mdx → viva/engage/engage-report-deviceusagedistributionusercounts.mdx} +5 -5
  152. package/docs/docs/cmd/{yammer/report/report-deviceusageusercounts.mdx → viva/engage/engage-report-deviceusageusercounts.mdx} +5 -5
  153. package/docs/docs/cmd/{yammer/report/report-deviceusageuserdetail.mdx → viva/engage/engage-report-deviceusageuserdetail.mdx} +11 -11
  154. package/docs/docs/cmd/{yammer/report/report-groupsactivitycounts.mdx → viva/engage/engage-report-groupsactivitycounts.mdx} +9 -9
  155. package/docs/docs/cmd/{yammer/report/report-groupsactivitydetail.mdx → viva/engage/engage-report-groupsactivitydetail.mdx} +11 -11
  156. package/docs/docs/cmd/{yammer/report/report-groupsactivitygroupcounts.mdx → viva/engage/engage-report-groupsactivitygroupcounts.mdx} +5 -5
  157. package/docs/docs/cmd/{yammer/yammer-search.mdx → viva/engage/engage-search.mdx} +10 -10
  158. package/docs/docs/cmd/{yammer/user/user-get.mdx → viva/engage/engage-user-get.mdx} +8 -8
  159. package/docs/docs/cmd/{yammer/user/user-list.mdx → viva/engage/engage-user-list.mdx} +11 -11
  160. package/npm-shrinkwrap.json +60 -0
  161. package/package.json +3 -2
  162. package/dist/m365/base/AzmgmtCommand.js +0 -18
  163. package/dist/m365/base/AzmgmtItemsListCommand.js +0 -41
  164. package/dist/m365/yammer/commands/report/report-activitycounts.js +0 -15
  165. package/dist/m365/yammer/commands/report/report-activityusercounts.js +0 -15
  166. package/dist/m365/yammer/commands/report/report-activityuserdetail.js +0 -15
  167. package/dist/m365/yammer/commands/report/report-deviceusagedistributionusercounts.js +0 -15
  168. package/dist/m365/yammer/commands/report/report-deviceusageusercounts.js +0 -15
  169. package/dist/m365/yammer/commands/report/report-deviceusageuserdetail.js +0 -15
  170. package/dist/m365/yammer/commands/report/report-groupsactivitycounts.js +0 -15
  171. package/dist/m365/yammer/commands/report/report-groupsactivitydetail.js +0 -15
  172. package/dist/m365/yammer/commands/report/report-groupsactivitygroupcounts.js +0 -15
@@ -1,5 +1,26 @@
1
1
  const prefix = 'viva';
2
2
  export default {
3
- CONNECTIONS_APP_CREATE: `${prefix} connections app create`
3
+ CONNECTIONS_APP_CREATE: `${prefix} connections app create`,
4
+ ENGAGE_GROUP_LIST: `${prefix} engage group list`,
5
+ ENGAGE_GROUP_USER_ADD: `${prefix} engage group user add`,
6
+ ENGAGE_GROUP_USER_REMOVE: `${prefix} engage group user remove`,
7
+ ENGAGE_MESSAGE_ADD: `${prefix} engage message add`,
8
+ ENGAGE_MESSAGE_GET: `${prefix} engage message get`,
9
+ ENGAGE_MESSAGE_LIKE_SET: `${prefix} engage message like set`,
10
+ ENGAGE_MESSAGE_LIST: `${prefix} engage message list`,
11
+ ENGAGE_MESSAGE_REMOVE: `${prefix} engage message remove`,
12
+ ENGAGE_NETWORK_LIST: `${prefix} engage network list`,
13
+ ENGAGE_REPORT_ACTIVITYCOUNTS: `${prefix} engage report activitycounts`,
14
+ ENGAGE_REPORT_ACTIVITYUSERCOUNTS: `${prefix} engage report activityusercounts`,
15
+ ENGAGE_REPORT_ACTIVITYUSERDETAIL: `${prefix} engage report activityuserdetail`,
16
+ ENGAGE_REPORT_DEVICEUSAGEDISTRIBUTIONUSERCOUNTS: `${prefix} engage report deviceusagedistributionusercounts`,
17
+ ENGAGE_REPORT_DEVICEUSAGEUSERCOUNTS: `${prefix} engage report deviceusageusercounts`,
18
+ ENGAGE_REPORT_DEVICEUSAGEUSERDETAIL: `${prefix} engage report deviceusageuserdetail`,
19
+ ENGAGE_REPORT_GROUPSACTIVITYCOUNTS: `${prefix} engage report groupsactivitycounts`,
20
+ ENGAGE_REPORT_GROUPSACTIVITYDETAIL: `${prefix} engage report groupsactivitydetail`,
21
+ ENGAGE_REPORT_GROUPSACTIVITYGROUPCOUNTS: `${prefix} engage report groupsactivitygroupcounts`,
22
+ ENGAGE_SEARCH: `${prefix} engage search`,
23
+ ENGAGE_USER_GET: `${prefix} engage user get`,
24
+ ENGAGE_USER_LIST: `${prefix} engage user list`
4
25
  };
5
26
  //# sourceMappingURL=commands.js.map
package/dist/request.js CHANGED
@@ -130,7 +130,7 @@ class Request {
130
130
  if (!this._logger) {
131
131
  return Promise.reject('Logger not set on the request object');
132
132
  }
133
- this.updateRequestForCloudType(options, auth.service.cloudType);
133
+ this.updateRequestForCloudType(options, auth.connection.cloudType);
134
134
  return new Promise((_resolve, _reject) => {
135
135
  (() => {
136
136
  if (options.headers && options.headers['x-anonymous']) {
package/dist/utils/spo.js CHANGED
@@ -96,11 +96,11 @@ export const spo = {
96
96
  });
97
97
  },
98
98
  async getSpoUrl(logger, debug) {
99
- if (auth.service.spoUrl) {
99
+ if (auth.connection.spoUrl) {
100
100
  if (debug) {
101
- await logger.logToStderr(`SPO URL previously retrieved ${auth.service.spoUrl}. Returning...`);
101
+ await logger.logToStderr(`SPO URL previously retrieved ${auth.connection.spoUrl}. Returning...`);
102
102
  }
103
- return Promise.resolve(auth.service.spoUrl);
103
+ return Promise.resolve(auth.connection.spoUrl);
104
104
  }
105
105
  return new Promise(async (resolve, reject) => {
106
106
  if (debug) {
@@ -116,14 +116,14 @@ export const spo = {
116
116
  request
117
117
  .get(requestOptions)
118
118
  .then((res) => {
119
- auth.service.spoUrl = res.webUrl;
119
+ auth.connection.spoUrl = res.webUrl;
120
120
  return auth.storeConnectionInfo();
121
121
  })
122
122
  .then(() => {
123
- resolve(auth.service.spoUrl);
123
+ resolve(auth.connection.spoUrl);
124
124
  }, (err) => {
125
- if (auth.service.spoUrl) {
126
- resolve(auth.service.spoUrl);
125
+ if (auth.connection.spoUrl) {
126
+ resolve(auth.connection.spoUrl);
127
127
  }
128
128
  else {
129
129
  reject(err);
@@ -143,11 +143,11 @@ export const spo = {
143
143
  });
144
144
  },
145
145
  async getTenantId(logger, debug) {
146
- if (auth.service.tenantId) {
146
+ if (auth.connection.spoTenantId) {
147
147
  if (debug) {
148
- await logger.logToStderr(`SPO Tenant ID previously retrieved ${auth.service.tenantId}. Returning...`);
148
+ await logger.logToStderr(`SPO Tenant ID previously retrieved ${auth.connection.spoTenantId}. Returning...`);
149
149
  }
150
- return Promise.resolve(auth.service.tenantId);
150
+ return Promise.resolve(auth.connection.spoTenantId);
151
151
  }
152
152
  return new Promise(async (resolve, reject) => {
153
153
  if (debug) {
@@ -173,14 +173,14 @@ export const spo = {
173
173
  })
174
174
  .then((res) => {
175
175
  const json = JSON.parse(res);
176
- auth.service.tenantId = json[json.length - 1]._ObjectIdentity_.replace('\n', '
');
176
+ auth.connection.spoTenantId = json[json.length - 1]._ObjectIdentity_.replace('\n', '
');
177
177
  return auth.storeConnectionInfo();
178
178
  })
179
179
  .then(() => {
180
- resolve(auth.service.tenantId);
180
+ resolve(auth.connection.spoTenantId);
181
181
  }, (err) => {
182
- if (auth.service.tenantId) {
183
- resolve(auth.service.tenantId);
182
+ if (auth.connection.spoTenantId) {
183
+ resolve(auth.connection.spoTenantId);
184
184
  }
185
185
  else {
186
186
  reject(err);
@@ -1312,6 +1312,28 @@ export const spo = {
1312
1312
  responseType: 'json'
1313
1313
  };
1314
1314
  await request.post(requestOptions);
1315
+ },
1316
+ /**
1317
+ * Retrieves the site ID for a given web URL.
1318
+ * @param webUrl The web URL for which to retrieve the site ID.
1319
+ * @param logger The logger object.
1320
+ * @param verbose Set for verbose logging
1321
+ * @returns A promise that resolves to the site ID.
1322
+ */
1323
+ async getSiteId(webUrl, logger, verbose) {
1324
+ if (verbose && logger) {
1325
+ logger.logToStderr(`Getting site id for URL: ${webUrl}...`);
1326
+ }
1327
+ const url = new URL(webUrl);
1328
+ const requestOptions = {
1329
+ url: `https://graph.microsoft.com/v1.0/sites/${formatting.encodeQueryParameter(url.host)}:${url.pathname}?$select=id`,
1330
+ headers: {
1331
+ accept: 'application/json;odata.metadata=none'
1332
+ },
1333
+ responseType: 'json'
1334
+ };
1335
+ const site = await request.get(requestOptions);
1336
+ return site.id;
1315
1337
  }
1316
1338
  };
1317
1339
  //# sourceMappingURL=spo.js.map
@@ -166,6 +166,37 @@ export const urlUtil = {
166
166
  relativeUrl = relativeUrl.substring(0, relativeUrl.length - 1);
167
167
  }
168
168
  return `${baseUrl}/${relativeUrl}`;
169
+ },
170
+ /**
171
+ * Get the absolute URL from the target SharePoint URL.
172
+ * @param {string} webUrl - The base web URL.
173
+ * @param {string} url - The target SharePoint URL.
174
+ * @returns {string} - The target site absolute URL.
175
+ *
176
+ * Example Scenarios:
177
+ * - webUrl = "https://contoso.sharepoint.com" and targetUrl = "/teams/sales/Shared Documents/temp/123/234",
178
+ * returns "https://contoso.sharepoint.com/teams/sales".
179
+ * - webUrl = "https://contoso.sharepoint.com" and targetUrl = "https://contoso-my.sharepoint.com/personal/john_contoso_onmicrosoft_com/Documents/123",
180
+ * returns "https://contoso-my.sharepoint.com/personal/john_contoso_onmicrosoft_com".
181
+ * - webUrl = "https://contoso.sharepoint.com/teams/sales" and targetUrl = "/Shared Documents/temp",
182
+ * returns "https://contoso.sharepoint.com".
183
+ * - webUrl = "https://contoso.sharepoint.com" and targetUrl = "/teams/sales/Shared Documents/temp",
184
+ * returns "https://contoso.sharepoint.com/teams/sales".
185
+ */
186
+ getTargetSiteAbsoluteUrl(webUrl, url) {
187
+ const fullUrl = url.startsWith('https://') ? url : urlUtil.getAbsoluteUrl(webUrl, url);
188
+ // Pattern to match SharePoint URLs
189
+ const urlPattern = /https:\/\/[\w\-]+\.sharepoint\.com\/(teams|sites|personal)\/([\w\-]+)/;
190
+ const match = fullUrl.match(urlPattern);
191
+ if (match) {
192
+ // If a match is found, return the matched URL
193
+ return match[0];
194
+ }
195
+ else {
196
+ // Extract the root URL
197
+ const rootUrl = new URL(fullUrl);
198
+ return rootUrl.origin;
199
+ }
169
200
  }
170
201
  };
171
202
  //# sourceMappingURL=urlUtil.js.map
@@ -321,6 +321,10 @@ export const validation = {
321
321
  return true;
322
322
  }
323
323
  return false;
324
+ },
325
+ isValidMailNickname(mailNickname) {
326
+ const mailNicknameRegEx = new RegExp(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]*$/i);
327
+ return mailNicknameRegEx.test(mailNickname);
324
328
  }
325
329
  };
326
330
  //# sourceMappingURL=validation.js.map
@@ -16,25 +16,25 @@ m365 cli consent [options]
16
16
 
17
17
  ```md definition-list
18
18
  `-s, --service <service>`
19
- : Service for which to consent permissions. Allowed values: `yammer`
19
+ : Service for which to consent permissions. Allowed values: `VivaEngage`, (deprecated)`yammer`.
20
20
  ```
21
21
 
22
22
  <Global />
23
23
 
24
24
  ## Remarks
25
25
 
26
- Using the `cli consent` command you can consent additional permissions for the Azure AD application used by the CLI for Microsoft 365. This is for example necessary to use Yammer commands, which require the Yammer API permission that isn't granted to the CLI by default.
26
+ Using the `cli consent` command you can consent additional permissions for the Azure AD application used by the CLI for Microsoft 365. This is for example necessary to use Viva Engage commands, which require the Viva Engage API permission that isn't granted to the CLI by default.
27
27
 
28
28
  After executing the command, the CLI for Microsoft 365 will present you with a URL that you need to open in the web browser in order to consent the permissions for the selected Microsoft 365 service.
29
29
 
30
- To simplify things, rather than wondering which permissions you should grant for which CLI commands, this command allows you to easily grant all the necessary permissions for using commands for the specified Microsoft 365 service, like Yammer.
30
+ To simplify things, rather than wondering which permissions you should grant for which CLI commands, this command allows you to easily grant all the necessary permissions for using commands for the specified Microsoft 365 service, like Viva Engage.
31
31
 
32
32
  ## Examples
33
33
 
34
- Consent permissions to the Yammer API
34
+ Consent permissions to the Viva Engage API
35
35
 
36
36
  ```sh
37
- m365 cli consent --service yammer
37
+ m365 cli consent --service VivaEngage
38
38
  ```
39
39
 
40
40
  ## Response
@@ -43,28 +43,28 @@ m365 cli consent --service yammer
43
43
  <TabItem value="JSON">
44
44
 
45
45
  ```json
46
- "To consent permissions for executing yammer commands, navigate in your web browser to https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&scope=https%3A%2F%2Fapi.yammer.com%2Fuser_impersonation"
46
+ "To consent permissions for executing VivaEngage commands, navigate in your web browser to https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&scope=https%3A%2F%2Fapi.yammer.com%2Fuser_impersonation"
47
47
  ```
48
48
 
49
49
  </TabItem>
50
50
  <TabItem value="Text">
51
51
 
52
52
  ```text
53
- To consent permissions for executing yammer commands, navigate in your web browser to https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&scope=https%3A%2F%2Fapi.yammer.com%2Fuser_impersonation
53
+ To consent permissions for executing VivaEngage commands, navigate in your web browser to https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&scope=https%3A%2F%2Fapi.yammer.com%2Fuser_impersonation
54
54
  ```
55
55
 
56
56
  </TabItem>
57
57
  <TabItem value="CSV">
58
58
 
59
59
  ```csv
60
- To consent permissions for executing yammer commands, navigate in your web browser to https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&scope=https%3A%2F%2Fapi.yammer.com%2Fuser_impersonation
60
+ To consent permissions for executing VivaEngage commands, navigate in your web browser to https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&scope=https%3A%2F%2Fapi.yammer.com%2Fuser_impersonation
61
61
  ```
62
62
 
63
63
  </TabItem>
64
64
  <TabItem value="Markdown">
65
65
 
66
66
  ```md
67
- To consent permissions for executing yammer commands, navigate in your web browser to https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&scope=https%3A%2F%2Fapi.yammer.com%2Fuser_impersonation
67
+ To consent permissions for executing VivaEngage commands, navigate in your web browser to https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&scope=https%3A%2F%2Fapi.yammer.com%2Fuser_impersonation
68
68
  ```
69
69
 
70
70
  </TabItem>
@@ -0,0 +1,100 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
4
+
5
+ # connection list
6
+
7
+ Show the list of available connections
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 connection list [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ <Global />
18
+
19
+ ## Remarks
20
+
21
+ If you are logged in to Microsoft 365 with multiple identities, this command will show you a list of users and/or applications used to sign in.
22
+
23
+ ## Examples
24
+
25
+ Show the list of available identities used to sign in to Microsoft 365
26
+
27
+ ```sh
28
+ m365 connection list
29
+ ```
30
+
31
+ ## Response
32
+
33
+ <Tabs>
34
+ <TabItem value="JSON">
35
+
36
+ ```json
37
+ [
38
+ {
39
+ "name": "028de82d-7fd9-476e-a9fd-be9714280ff3",
40
+ "connectedAs": "alexw@contoso.com",
41
+ "authType": "DeviceCode",
42
+ "active": true
43
+ },
44
+ {
45
+ "name": "acd6df42-10a9-4315-8928-53334f1c9d01",
46
+ "connectedAs": "Contoso Application",
47
+ "authType": "Secret",
48
+ "active": false
49
+ }
50
+ ]
51
+ ```
52
+
53
+ </TabItem>
54
+ <TabItem value="Text">
55
+
56
+ ```text
57
+ name connectedAs authType active
58
+ ------------------------------------ ------------------- ---------- ------
59
+ 028de82d-7fd9-476e-a9fd-be9714280ff3 alexw@contoso.com DeviceCode true
60
+ acd6df42-10a9-4315-8928-53334f1c9d01 Contoso Application Secret false
61
+ ```
62
+
63
+ </TabItem>
64
+ <TabItem value="CSV">
65
+
66
+ ```csv
67
+ name,connectedAs,authType,active
68
+ 028de82d-7fd9-476e-a9fd-be9714280ff3,alexw@contoso.com,DeviceCode,true
69
+ acd6df42-10a9-4315-8928-53334f1c9d01,Contoso Application,Secret,false
70
+ ```
71
+
72
+ </TabItem>
73
+ <TabItem value="Markdown">
74
+
75
+ ```md
76
+ # connection list
77
+
78
+ Date: 7/2/2023
79
+
80
+ ## 028de82d-7fd9-476e-a9fd-be9714280ff3
81
+
82
+ Property | Value
83
+ ---------|-------
84
+ name | 028de82d-7fd9-476e-a9fd-be9714280ff3
85
+ connectedAs | alexw@contoso.com
86
+ authType | DeviceCode
87
+ active | true
88
+
89
+ ## acd6df42-10a9-4315-8928-53334f1c9d01
90
+
91
+ Property | Value
92
+ ---------|-------
93
+ name | acd6df42-10a9-4315-8928-53334f1c9d01
94
+ connectedAs | Contoso Application
95
+ authType | Secret
96
+ active | false
97
+ ```
98
+
99
+ </TabItem>
100
+ </Tabs>
@@ -0,0 +1,45 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+
3
+ # connection remove
4
+
5
+ Remove the specified connection
6
+
7
+ ## Usage
8
+
9
+ ```sh
10
+ m365 connection remove [options]
11
+ ```
12
+
13
+ ## Options
14
+
15
+ ```md definition-list
16
+ `-n, --name <name>`
17
+ : The name of the connection to remove.
18
+
19
+ `-f, --force`
20
+ : Don't prompt for confirmation to remove the connection.
21
+ ```
22
+
23
+ <Global />
24
+
25
+ ## Remarks
26
+
27
+ The value for `--name` can be found by running [m365 connection list](connection-list.mdx).
28
+
29
+ ## Examples
30
+
31
+ Remove an existing connection
32
+
33
+ ```sh
34
+ m365 connection remove --name '0bb7cb89-7fae-4775-a01a-c372cc167371'
35
+ ```
36
+
37
+ Remove an existing connection without prompting for confirmation
38
+
39
+ ```sh
40
+ m365 connection remove --name '0bb7cb89-7fae-4775-a01a-c372cc167371' --force
41
+ ```
42
+
43
+ ## Response
44
+
45
+ The command won't return a response on success.
@@ -0,0 +1,39 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+
3
+ # connection set
4
+
5
+ Rename the specified connection
6
+
7
+ ## Usage
8
+
9
+ ```sh
10
+ m365 connection set [options]
11
+ ```
12
+
13
+ ## Options
14
+
15
+ ```md definition-list
16
+ `-n, --name <name>`
17
+ : The name of the connection to update.
18
+
19
+ `--newName <newName>`
20
+ : The new name of the connection.
21
+ ```
22
+
23
+ <Global />
24
+
25
+ ## Remarks
26
+
27
+ The value for `--name` can be found by running [m365 connection list](connection-list.mdx). You can update the name of a connection to any value to make switching connections easier.
28
+
29
+ ## Examples
30
+
31
+ Update an existing connection
32
+
33
+ ```sh
34
+ m365 connection set --name '0bb7cb89-7fae-4775-a01a-c372cc167371' --newName 'myworkaccount'
35
+ ```
36
+
37
+ ## Response
38
+
39
+ The command won't return a response on success.
@@ -0,0 +1,98 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
4
+
5
+ # connection use
6
+
7
+ Activate the specified Microsoft 365 tenant connection
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 connection use [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ ```md definition-list
18
+ `-n, --name <name>`
19
+ : The name of the connection to switch to.
20
+ ```
21
+
22
+ <Global />
23
+
24
+ ## Remarks
25
+
26
+ The value for `--name` can be found by running [m365 connection list](connection-list.mdx). You can update the name of a connection by running [m365 connection set](connection-set.mdx).
27
+
28
+ ## Examples
29
+
30
+ Switch to a different connection
31
+
32
+ ```sh
33
+ m365 connection use --name '6e70c8ea-571d-4daf-bc48-9e1b49ac3390'
34
+ ```
35
+
36
+ Switch to another connection by a custom connection name
37
+
38
+ ```sh
39
+ m365 connection use --name 'myworkaccount'
40
+ ```
41
+
42
+ ## Response
43
+
44
+ <Tabs>
45
+ <TabItem value="JSON">
46
+
47
+ ```json
48
+ {
49
+ "connectedAs": "alexw@contoso.com",
50
+ "connectedName": "028de82d-7fd9-476e-a9fd-be9714280ff3",
51
+ "authType": "DeviceCode",
52
+ "appId": "31359c7f-bd7e-475c-86db-fdb8c937548e",
53
+ "appTenant": "common",
54
+ "cloudType": "Public"
55
+ }
56
+ ```
57
+
58
+ </TabItem>
59
+ <TabItem value="Text">
60
+
61
+ ```text
62
+ appId : 31359c7f-bd7e-475c-86db-fdb8c937548e
63
+ appTenant : common
64
+ authType : DeviceCode
65
+ cloudType : Public
66
+ connectionName : 028de82d-7fd9-476e-a9fd-be9714280ff3
67
+ connectedAs: alexw@contoso.com
68
+ ```
69
+
70
+ </TabItem>
71
+ <TabItem value="CSV">
72
+
73
+ ```csv
74
+ connectionName,connectedAs,authType,appId,appTenant,cloudType
75
+ alexw@contoso.com,028de82d-7fd9-476e-a9fd-be9714280ff3,DeviceCode,31359c7f-bd7e-475c-86db-fdb8c937548e,common,Public
76
+ ```
77
+
78
+ </TabItem>
79
+ <TabItem value="Markdown">
80
+
81
+ ```md
82
+ # connection use
83
+
84
+ Date: 7/2/2023
85
+
86
+ Property | Value
87
+ ---------|-------
88
+ connectedAs | alexw@contoso.com
89
+ connectionName | 028de82d-7fd9-476e-a9fd-be9714280ff3
90
+ authType | DeviceCode
91
+ appId | 31359c7f-bd7e-475c-86db-fdb8c937548e
92
+ appTenant | common
93
+ cloudType | Public
94
+ ```
95
+
96
+ </TabItem>
97
+ </Tabs>
98
+
@@ -1,6 +1,4 @@
1
1
  import Global from '/docs/cmd/_global.mdx';
2
- import Tabs from '@theme/Tabs';
3
- import TabItem from '@theme/TabItem';
4
2
 
5
3
  # entra administrativeunit member add
6
4
 
@@ -94,6 +92,10 @@ Add a single device specified by name to an administrative unit specified by nam
94
92
  m365 entra administrativeunit member add --administrativeUnitName 'Marketing Division' --deviceName 'JohnDoe-PC'
95
93
  ```
96
94
 
95
+ ## Response
96
+
97
+ The command won't return a response on success.
98
+
97
99
  ## More information
98
100
 
99
- - Administrative units: https://learn.microsoft.com/entra/identity/role-based-access-control/administrative-units
101
+ - Administrative units: https://learn.microsoft.com/entra/identity/role-based-access-control/administrative-units
@@ -0,0 +1,107 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+
3
+ # entra administrativeunit member remove
4
+
5
+ Removes a member (user, group, or device) from an administrative unit
6
+
7
+ ## Usage
8
+
9
+ ```sh
10
+ m365 entra administrativeunit member remove [options]
11
+ ```
12
+
13
+ ## options
14
+
15
+ ```md definition-list
16
+ `-i, --id [id]`
17
+ : The id of the member to be removed. Specify either `id`, `userId`, `userName`, `groupId`, `groupName`, `deviceId` or `deviceName`.
18
+
19
+ `--userId [userId]`
20
+ : The id of the user to be removed. Specify either `id`, `userId`, `userName`, `groupId`, `groupName`, `deviceId` or `deviceName`.
21
+
22
+ `--userName [userName]`
23
+ : The user principal name (UPN) of the user to be removed. Specify either `id`, `userId`, `userName`, `groupId`, `groupName`, `deviceId` or `deviceName`.
24
+
25
+ `--groupId [groupId]`
26
+ : The id of the group to be removed. Specify either `id`, `userId`, `userName`, `groupId`, `groupName`, `deviceId` or `deviceName`.
27
+
28
+ `--groupName [groupName]`
29
+ : The name of the group to be removed. Specify either `id`, `userId`, `userName`, `groupId`, `groupName`, `deviceId` or `deviceName`.
30
+
31
+ `--deviceId [deviceId]`
32
+ : The id of the device to be removed. Specify either `id`, `userId`, `userName`, `groupId`, `groupName`, `deviceId` or `deviceName`.
33
+
34
+ `--deviceName [deviceName]`
35
+ : The name of the device to be removed. Specify either `id`, `userId`, `userName`, `groupId`, `groupName`, `deviceId` or `deviceName`.
36
+
37
+ `--administrativeUnitId [administrativeUnitId]`
38
+ : The id of the administrative unit. Specify either `administrativeUnitId` or `administrativeUnitName` but not both.
39
+
40
+ `--administrativeUnitName [administrativeUnitName]`
41
+ : The name of the administrative unit. Specify either `administrativeUnitId` or `administrativeUnitName` but not both.
42
+
43
+ `-f, --force`
44
+ : Don't prompt for confirmation.
45
+ ```
46
+
47
+ <Global />
48
+
49
+ ## Remarks
50
+
51
+ :::info
52
+
53
+ To use this command you must be either **Global Administrator** or **Privileged Role Administrator**.
54
+
55
+ :::
56
+
57
+ ## Examples
58
+
59
+ Remove a member specified by id from an administrative unit specified by id
60
+
61
+ ```sh
62
+ m365 entra administrativeunit member remove --id 64131a70-beb9-4ccb-b590-4401e58446ec --administrativeUnitId 03c4c9dc-6f0c-4c4f-a4e6-0c9ed80f54c7
63
+ ```
64
+
65
+ Remove a user specified by id from an administrative unit specified by id
66
+
67
+ ```sh
68
+ m365 entra administrativeunit member remove --userId 64131a70-beb9-4ccb-b590-4401e58446ec --administrativeUnitId 03c4c9dc-6f0c-4c4f-a4e6-0c9ed80f54c7
69
+ ```
70
+
71
+ Remove a group specified by id from an administrative unit specified by id
72
+
73
+ ```sh
74
+ m365 entra administrativeunit member remove --groupId b2307a39-e878-458b-bc90-03bc578531d6 --administrativeUnitId 03c4c9dc-6f0c-4c4f-a4e6-0c9ed80f54c7
75
+ ```
76
+
77
+ Remove a device specified by id from an administrative unit specified by id
78
+
79
+ ```sh
80
+ m365 entra administrativeunit member remove --deviceId 810c84a8-4a9e-49e6-bf7d-12d183f40d01 --administrativeUnitId 03c4c9dc-6f0c-4c4f-a4e6-0c9ed80f54c7
81
+ ```
82
+
83
+ Remove a user specified by UPN from an administrative unit specified by name
84
+
85
+ ```sh
86
+ m365 entra administrativeunit member remove --userName john.doe@contoso.com --administrativeUnitName 'Marketing Division'
87
+ ```
88
+
89
+ Remove a group specified by name from an administrative unit specified by id
90
+
91
+ ```sh
92
+ m365 entra administrativeunit member remove --groupName 'Marketing Group' --administrativeUnitId 03c4c9dc-6f0c-4c4f-a4e6-0c9ed80f54c7
93
+ ```
94
+
95
+ Remove a device specified by name from an administrative unit specified by name
96
+
97
+ ```sh
98
+ m365 entra administrativeunit member remove --deviceName 'JohnDoe-PC' --administrativeUnitName 'Marketing Division'
99
+ ```
100
+
101
+ ## Response
102
+
103
+ The command won't return a response on success
104
+
105
+ ## More information
106
+
107
+ - [Administrative units](https://learn.microsoft.com/entra/identity/role-based-access-control/administrative-units)
@@ -16,6 +16,7 @@ m365 entra app add [options]
16
16
 
17
17
  ```sh
18
18
  m365 aad app add [options]
19
+ m365 entra appregistration add [options]
19
20
  ```
20
21
 
21
22
  ## Options
@@ -109,7 +110,7 @@ After creating the Entra app registration, this command returns the app ID and o
109
110
 
110
111
  If you want to store the information about the created Entra app registration, use the `--save` option. This is useful when you build solutions connected to Microsoft 365 and want to easily manage app registrations used with your solution. When you use the `--save` option, after you create the app registration, the command will write its ID and name to the `.m365rc.json` file in the current directory. If the file already exists, it will add the information about the to it, allowing you to track multiple apps. If the file doesn't exist, the command will create it.
111
112
 
112
- When specifying `--grantAdminConsent` option, a service principal will be created for the app registration.
113
+ When specifying `--grantAdminConsent` option, an enterprise application will be created for the app registration.
113
114
 
114
115
  ## Examples
115
116