@pnp/cli-microsoft365 11.7.0-beta.b67a258 → 11.7.0-beta.bd906c5

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 (65) hide show
  1. package/allCommands.json +1 -1
  2. package/allCommandsFull.json +1 -1
  3. package/dist/config.js +1 -0
  4. package/dist/m365/entra/commands/user/user-license-add.js +2 -1
  5. package/dist/m365/entra/commands/user/user-license-list.js +4 -9
  6. package/dist/m365/entra/commands/user/user-license-remove.js +2 -1
  7. package/dist/m365/outlook/commands/calendar/calendar-add.js +85 -0
  8. package/dist/m365/outlook/commands/calendar/calendar-get.js +71 -0
  9. package/dist/m365/outlook/commands/calendar/calendar-remove.js +100 -0
  10. package/dist/m365/outlook/commands/calendargroup/calendargroup-set.js +115 -0
  11. package/dist/m365/outlook/commands/event/event-cancel.js +103 -0
  12. package/dist/m365/outlook/commands/event/event-list.js +115 -0
  13. package/dist/m365/outlook/commands/event/event-remove.js +104 -0
  14. package/dist/m365/outlook/commands.js +7 -0
  15. package/dist/m365/spfx/commands/SpfxCompatibilityMatrix.js +643 -0
  16. package/dist/m365/spfx/commands/project/DeployWorkflow.js +2 -2
  17. package/dist/m365/spfx/commands/project/project-azuredevops-pipeline-add.js +13 -1
  18. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.23.0-rc.0.js +19 -0
  19. package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
  20. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +16 -1
  21. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002021_DEVDEP_rushstack_eslint_config.js +2 -2
  22. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002032_DEVDEP_typescript_eslint_parser.js +2 -2
  23. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN015008_FILE_eslintrc_js.js +1 -1
  24. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN015016_FILE_eslint_config_js.js +10 -0
  25. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.23.0-rc.0.js +84 -0
  26. package/dist/m365/spfx/commands/project/project-upgrade.js +12 -11
  27. package/dist/m365/spfx/commands/spfx-doctor.js +5 -631
  28. package/dist/m365/teams/commands/chat/chat-message-list.js +43 -4
  29. package/dist/utils/calendar.js +37 -0
  30. package/dist/utils/calendarGroup.js +22 -0
  31. package/dist/utils/entraApp.js +9 -2
  32. package/dist/utils/spfx.js +59 -0
  33. package/docs/docs/cmd/entra/license/license-list.mdx +19 -0
  34. package/docs/docs/cmd/entra/m365group/m365group-conversation-list.mdx +19 -0
  35. package/docs/docs/cmd/entra/m365group/m365group-conversation-post-list.mdx +19 -0
  36. package/docs/docs/cmd/entra/user/user-groupmembership-list.mdx +19 -0
  37. package/docs/docs/cmd/entra/user/user-guest-add.mdx +19 -0
  38. package/docs/docs/cmd/entra/user/user-license-add.mdx +19 -0
  39. package/docs/docs/cmd/entra/user/user-license-list.mdx +18 -1
  40. package/docs/docs/cmd/entra/user/user-license-remove.mdx +21 -0
  41. package/docs/docs/cmd/entra/user/user-password-validate.mdx +12 -0
  42. package/docs/docs/cmd/entra/user/user-recyclebinitem-clear.mdx +21 -0
  43. package/docs/docs/cmd/entra/user/user-recyclebinitem-list.mdx +19 -0
  44. package/docs/docs/cmd/entra/user/user-recyclebinitem-remove.mdx +21 -0
  45. package/docs/docs/cmd/entra/user/user-recyclebinitem-restore.mdx +19 -0
  46. package/docs/docs/cmd/entra/user/user-registrationdetails-list.mdx +19 -0
  47. package/docs/docs/cmd/entra/user/user-session-revoke.mdx +21 -0
  48. package/docs/docs/cmd/entra/user/user-signin-list.mdx +19 -0
  49. package/docs/docs/cmd/exo/approleassignment/approleassignment-add.mdx +19 -0
  50. package/docs/docs/cmd/file/convert/convert-pdf.mdx +21 -0
  51. package/docs/docs/cmd/file/file-add.mdx +21 -0
  52. package/docs/docs/cmd/file/file-copy.mdx +21 -0
  53. package/docs/docs/cmd/file/file-list.mdx +19 -0
  54. package/docs/docs/cmd/file/file-move.mdx +21 -0
  55. package/docs/docs/cmd/outlook/calendar/calendar-add.mdx +165 -0
  56. package/docs/docs/cmd/outlook/calendar/calendar-get.mdx +165 -0
  57. package/docs/docs/cmd/outlook/calendar/calendar-remove.mdx +86 -0
  58. package/docs/docs/cmd/outlook/calendargroup/calendargroup-set.mdx +83 -0
  59. package/docs/docs/cmd/outlook/event/event-cancel.mdx +85 -0
  60. package/docs/docs/cmd/outlook/event/event-list.mdx +245 -0
  61. package/docs/docs/cmd/outlook/event/event-remove.mdx +85 -0
  62. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  63. package/docs/docs/cmd/teams/chat/chat-message-list.mdx +23 -2
  64. package/npm-shrinkwrap.json +0 -7
  65. package/package.json +2 -1
@@ -11,9 +11,24 @@ export const options = z.strictObject({
11
11
  error: e => `'${e.input}' is not a valid value for option chatId.`
12
12
  })
13
13
  .alias('i'),
14
+ createdEndDateTime: z.string()
15
+ .refine(time => validation.isValidISODateTime(time), {
16
+ error: e => `'${e.input}' is not a valid ISO date-time string for option createdEndDateTime.`
17
+ })
18
+ .optional(),
14
19
  endDateTime: z.string()
15
20
  .refine(time => validation.isValidISODateTime(time), {
16
21
  error: e => `'${e.input}' is not a valid ISO date-time string for option endDateTime.`
22
+ })
23
+ .optional(),
24
+ modifiedStartDateTime: z.string()
25
+ .refine(time => validation.isValidISODateTime(time), {
26
+ error: e => `'${e.input}' is not a valid ISO date-time string for option modifiedStartDateTime.`
27
+ })
28
+ .optional(),
29
+ modifiedEndDateTime: z.string()
30
+ .refine(time => validation.isValidISODateTime(time), {
31
+ error: e => `'${e.input}' is not a valid ISO date-time string for option modifiedEndDateTime.`
17
32
  })
18
33
  .optional()
19
34
  });
@@ -30,13 +45,37 @@ class TeamsChatMessageListCommand extends GraphCommand {
30
45
  get schema() {
31
46
  return options;
32
47
  }
48
+ getRefinedSchema(schema) {
49
+ return schema
50
+ .refine(options => !(options.endDateTime && options.createdEndDateTime), {
51
+ error: 'Specify either endDateTime or createdEndDateTime, but not both.'
52
+ })
53
+ .refine(options => !(options.createdEndDateTime && (options.modifiedStartDateTime || options.modifiedEndDateTime)), {
54
+ error: 'You cannot combine createdEndDateTime with modifiedStartDateTime or modifiedEndDateTime. These filters operate on different properties.'
55
+ })
56
+ .refine(options => !(options.endDateTime && (options.modifiedStartDateTime || options.modifiedEndDateTime)), {
57
+ error: 'You cannot combine endDateTime with modifiedStartDateTime or modifiedEndDateTime. These filters operate on different properties.'
58
+ });
59
+ }
33
60
  async commandAction(logger, args) {
61
+ if (args.options.endDateTime) {
62
+ await this.warn(logger, `Option 'endDateTime' is deprecated. Please use 'createdEndDateTime' instead.`);
63
+ args.options.createdEndDateTime = args.options.endDateTime;
64
+ }
34
65
  try {
35
66
  let apiUrl = `${this.resource}/v1.0/chats/${args.options.chatId}/messages`;
36
- if (args.options.endDateTime) {
37
- // You can only filter results if the request URL contains the $orderby and $filter query parameters configured for the same property;
38
- // otherwise, the $filter query option is ignored.
39
- apiUrl += `?$filter=createdDateTime lt ${args.options.endDateTime}&$orderby=createdDateTime desc`;
67
+ if (args.options.createdEndDateTime) {
68
+ apiUrl += `?$filter=createdDateTime lt ${args.options.createdEndDateTime}&$orderby=createdDateTime desc`;
69
+ }
70
+ else if (args.options.modifiedStartDateTime || args.options.modifiedEndDateTime) {
71
+ const filters = [];
72
+ if (args.options.modifiedStartDateTime) {
73
+ filters.push(`lastModifiedDateTime gt ${args.options.modifiedStartDateTime}`);
74
+ }
75
+ if (args.options.modifiedEndDateTime) {
76
+ filters.push(`lastModifiedDateTime lt ${args.options.modifiedEndDateTime}`);
77
+ }
78
+ apiUrl += `?$filter=${filters.join(' and ')}&$orderby=lastModifiedDateTime desc`;
40
79
  }
41
80
  const items = await odata.getAllItems(apiUrl);
42
81
  if (args.options.output && args.options.output !== 'json') {
@@ -0,0 +1,37 @@
1
+ import { odata } from './odata.js';
2
+ import { formatting } from './formatting.js';
3
+ import { cli } from '../cli/cli.js';
4
+ import request from '../request.js';
5
+ export const calendar = {
6
+ async getUserCalendarById(userId, calendarId, calendarGroupId, properties) {
7
+ let url = `https://graph.microsoft.com/v1.0/users('${userId}')/${calendarGroupId ? `calendarGroups/${calendarGroupId}/` : ''}calendars/${calendarId}`;
8
+ if (properties) {
9
+ url += `?$select=${properties}`;
10
+ }
11
+ const requestOptions = {
12
+ url: url,
13
+ headers: {
14
+ accept: 'application/json;odata.metadata=none'
15
+ },
16
+ responseType: 'json'
17
+ };
18
+ return await request.get(requestOptions);
19
+ },
20
+ async getUserCalendarByName(userId, name, calendarGroupId, properties) {
21
+ let url = `https://graph.microsoft.com/v1.0/users('${userId}')/${calendarGroupId ? `calendarGroups/${calendarGroupId}/` : ''}calendars?$filter=name eq '${formatting.encodeQueryParameter(name)}'`;
22
+ if (properties) {
23
+ url += `&$select=${properties}`;
24
+ }
25
+ const calendars = await odata.getAllItems(url);
26
+ if (calendars.length === 0) {
27
+ throw new Error(`The specified calendar '${name}' does not exist.`);
28
+ }
29
+ if (calendars.length > 1) {
30
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', calendars);
31
+ const selectedCalendar = await cli.handleMultipleResultsFound(`Multiple calendars with name '${name}' found.`, resultAsKeyValuePair);
32
+ return selectedCalendar;
33
+ }
34
+ return calendars[0];
35
+ }
36
+ };
37
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1,22 @@
1
+ import { odata } from './odata.js';
2
+ import { formatting } from './formatting.js';
3
+ import { cli } from '../cli/cli.js';
4
+ export const calendarGroup = {
5
+ async getUserCalendarGroupByName(userId, displayName, properties) {
6
+ let url = `https://graph.microsoft.com/v1.0/users('${userId}')/calendarGroups?$filter=name eq '${formatting.encodeQueryParameter(displayName)}'`;
7
+ if (properties) {
8
+ url += `&$select=${properties}`;
9
+ }
10
+ const calendarGroups = await odata.getAllItems(url);
11
+ if (calendarGroups.length === 0) {
12
+ throw new Error(`The specified calendar group '${displayName}' does not exist.`);
13
+ }
14
+ if (calendarGroups.length > 1) {
15
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', calendarGroups);
16
+ const selectedCalendarGroup = await cli.handleMultipleResultsFound(`Multiple calendar groups with name '${displayName}' found.`, resultAsKeyValuePair);
17
+ return selectedCalendarGroup;
18
+ }
19
+ return calendarGroups[0];
20
+ }
21
+ };
22
+ //# sourceMappingURL=calendarGroup.js.map
@@ -336,8 +336,15 @@ export const entraApp = {
336
336
  },
337
337
  responseType: 'json'
338
338
  };
339
- const app = await request.get(requestOptions);
340
- return app;
339
+ try {
340
+ return await request.get(requestOptions);
341
+ }
342
+ catch (error) {
343
+ if (error?.response?.status === 404) {
344
+ throw Error(`App with objectId '${objectId}' not found in Microsoft Entra ID.`);
345
+ }
346
+ throw error;
347
+ }
341
348
  }
342
349
  };
343
350
  //# sourceMappingURL=entraApp.js.map
@@ -1,3 +1,4 @@
1
+ import { Range, coerce, gt, validRange } from 'semver';
1
2
  export const spfx = {
2
3
  isReactProject(project) {
3
4
  return (typeof project.yoRcJson !== 'undefined' &&
@@ -11,6 +12,64 @@ export const spfx = {
11
12
  typeof project.yoRcJson['@microsoft/generator-sharepoint'] !== 'undefined' &&
12
13
  project.yoRcJson["@microsoft/generator-sharepoint"].framework === 'knockout') ||
13
14
  typeof project.packageJson?.dependencies?.['knockout'] !== 'undefined';
15
+ },
16
+ getHighestNodeVersion(versionRange) {
17
+ if (!versionRange) {
18
+ throw new Error('Node version range was not provided.');
19
+ }
20
+ const ranges = versionRange
21
+ .split('||')
22
+ .map(range => range.trim())
23
+ .filter(range => range.length > 0);
24
+ let highestMajor = null;
25
+ let exactVersion = null;
26
+ const simpleVersionPattern = /^\d+(\.\d+(\.\d+)?)?$/;
27
+ if (ranges.every(r => simpleVersionPattern.test(r))) {
28
+ const highest = ranges.reduce((best, curr) => gt(coerce(curr), coerce(best)) ? curr : best);
29
+ const parts = highest.split('.');
30
+ if (parts.length >= 3) {
31
+ return highest;
32
+ }
33
+ if (parts.length === 2) {
34
+ return `${highest}.x`;
35
+ }
36
+ }
37
+ for (const rangeString of ranges) {
38
+ const normalized = validRange(rangeString);
39
+ if (!normalized) {
40
+ continue;
41
+ }
42
+ const rangeObj = new Range(normalized);
43
+ let maxMajor = 0;
44
+ // Analyze the range to find the maximum major version
45
+ for (const comparatorSet of rangeObj.set) {
46
+ for (const comparator of comparatorSet) {
47
+ if (comparator.operator === '<') {
48
+ // Exclusive upper bound: <17.0.0 means max major is 16
49
+ maxMajor = Math.max(maxMajor, comparator.semver.major - 1);
50
+ }
51
+ else if (comparator.operator === '<=') {
52
+ // Inclusive upper bound: <=17.0.0 means we can use exactly that version
53
+ maxMajor = Math.max(maxMajor, comparator.semver.major);
54
+ // Store the exact version for <= comparator
55
+ if (highestMajor === null || comparator.semver.major > highestMajor) {
56
+ exactVersion = comparator.semver.version;
57
+ }
58
+ }
59
+ else if (comparator.operator === '>=' || comparator.operator === '>') {
60
+ // For lower bounds use the major version
61
+ maxMajor = Math.max(maxMajor, comparator.semver.major);
62
+ }
63
+ }
64
+ }
65
+ // Track the highest major version across all ranges
66
+ highestMajor = Math.max(highestMajor ?? 0, maxMajor);
67
+ }
68
+ if (highestMajor === null) {
69
+ throw new Error(`Unable to resolve the highest Node version for range '${versionRange}'.`);
70
+ }
71
+ // Return exact version if we have a <= comparator, otherwise use .x
72
+ return exactVersion || `${highestMajor}.x`;
14
73
  }
15
74
  };
16
75
  //# sourceMappingURL=spfx.js.map
@@ -16,6 +16,25 @@ m365 entra license list [options]
16
16
 
17
17
  <Global />
18
18
 
19
+ ## Permissions
20
+
21
+ <Tabs>
22
+ <TabItem value="Delegated">
23
+
24
+ | Resource | Permissions |
25
+ |-----------------|----------------------------|
26
+ | Microsoft Graph | LicenseAssignment.Read.All |
27
+
28
+ </TabItem>
29
+ <TabItem value="Application">
30
+
31
+ | Resource | Permissions |
32
+ |-----------------|----------------------------|
33
+ | Microsoft Graph | LicenseAssignment.Read.All |
34
+
35
+ </TabItem>
36
+ </Tabs>
37
+
19
38
  ## Examples
20
39
 
21
40
  List all licenses within the tenant.
@@ -24,6 +24,25 @@ m365 entra m365group conversation list [options]
24
24
 
25
25
  <Global />
26
26
 
27
+ ## Permissions
28
+
29
+ <Tabs>
30
+ <TabItem value="Delegated">
31
+
32
+ | Resource | Permissions |
33
+ |-----------------|-----------------------------|
34
+ | Microsoft Graph | Group-Conversation.Read.All |
35
+
36
+ </TabItem>
37
+ <TabItem value="Application">
38
+
39
+ | Resource | Permissions |
40
+ |-----------------|-----------------------------|
41
+ | Microsoft Graph | Group-Conversation.Read.All |
42
+
43
+ </TabItem>
44
+ </Tabs>
45
+
27
46
  ## Examples
28
47
 
29
48
  Lists conversations for the Microsoft 365 group specified by id.
@@ -27,6 +27,25 @@ m365 entra m365group conversation post list [options]
27
27
 
28
28
  <Global />
29
29
 
30
+ ## Permissions
31
+
32
+ <Tabs>
33
+ <TabItem value="Delegated">
34
+
35
+ | Resource | Permissions |
36
+ |-----------------|-----------------------------|
37
+ | Microsoft Graph | Group-Conversation.Read.All |
38
+
39
+ </TabItem>
40
+ <TabItem value="Application">
41
+
42
+ | Resource | Permissions |
43
+ |-----------------|-----------------------------|
44
+ | Microsoft Graph | Group-Conversation.Read.All |
45
+
46
+ </TabItem>
47
+ </Tabs>
48
+
30
49
  ## Examples
31
50
 
32
51
  Lists the posts of the specific conversation of Microsoft 365 group by groupId
@@ -30,6 +30,25 @@ m365 entra user groupmembership list [options]
30
30
 
31
31
  <Global />
32
32
 
33
+ ## Permissions
34
+
35
+ <Tabs>
36
+ <TabItem value="Delegated">
37
+
38
+ | Resource | Permissions |
39
+ |-----------------|------------------------------------------|
40
+ | Microsoft Graph | User.ReadBasic.All, GroupMember.Read.All |
41
+
42
+ </TabItem>
43
+ <TabItem value="Application">
44
+
45
+ | Resource | Permissions |
46
+ |-----------------|------------------------------------------|
47
+ | Microsoft Graph | User.ReadBasic.All, GroupMember.Read.All |
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
33
52
  ## Examples
34
53
 
35
54
  Retrieves groups that the user is a member of
@@ -39,6 +39,25 @@ m365 entra user guest add [options]
39
39
 
40
40
  <Global />
41
41
 
42
+ ## Permissions
43
+
44
+ <Tabs>
45
+ <TabItem value="Delegated">
46
+
47
+ | Resource | Permissions |
48
+ |-----------------|-----------------|
49
+ | Microsoft Graph | User.Invite.All |
50
+
51
+ </TabItem>
52
+ <TabItem value="Application">
53
+
54
+ | Resource | Permissions |
55
+ |-----------------|-----------------|
56
+ | Microsoft Graph | User.Invite.All |
57
+
58
+ </TabItem>
59
+ </Tabs>
60
+
42
61
  ## Examples
43
62
 
44
63
  Invite a user via email and set the display name.
@@ -35,6 +35,25 @@ The user must have a `usageLocation` value in order to assign a license to it.
35
35
 
36
36
  :::
37
37
 
38
+ ## Permissions
39
+
40
+ <Tabs>
41
+ <TabItem value="Delegated">
42
+
43
+ | Resource | Permissions |
44
+ |-----------------|---------------------------------|
45
+ | Microsoft Graph | LicenseAssignment.ReadWrite.All |
46
+
47
+ </TabItem>
48
+ <TabItem value="Application">
49
+
50
+ | Resource | Permissions |
51
+ |-----------------|---------------------------------|
52
+ | Microsoft Graph | LicenseAssignment.ReadWrite.All |
53
+
54
+ </TabItem>
55
+ </Tabs>
56
+
38
57
  ## Examples
39
58
 
40
59
  Assign specific licenses to a specific user by UPN.
@@ -28,10 +28,27 @@ m365 entra user license list [options]
28
28
 
29
29
  :::tip
30
30
 
31
- If you don't specify any option, the command will list the license details of the current logged in user. This does not work when using application permissions.
31
+ If you don't specify any option, the command will list the license details of the current logged in user.
32
32
 
33
33
  :::
34
34
 
35
+ ## Permissions
36
+
37
+ <Tabs>
38
+ <TabItem value="Delegated">
39
+
40
+ | Resource | Permissions |
41
+ |-----------------|----------------------------|
42
+ | Microsoft Graph | LicenseAssignment.Read.All |
43
+
44
+ </TabItem>
45
+ <TabItem value="Application">
46
+
47
+ This command does not support application permissions.
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
35
52
  ## Examples
36
53
 
37
54
  List license details of the current logged in user.
@@ -1,4 +1,6 @@
1
1
  import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra user license remove
4
6
 
@@ -28,6 +30,25 @@ m365 entra user license remove [options]
28
30
 
29
31
  <Global />
30
32
 
33
+ ## Permissions
34
+
35
+ <Tabs>
36
+ <TabItem value="Delegated">
37
+
38
+ | Resource | Permissions |
39
+ |-----------------|---------------------------------|
40
+ | Microsoft Graph | LicenseAssignment.ReadWrite.All |
41
+
42
+ </TabItem>
43
+ <TabItem value="Application">
44
+
45
+ | Resource | Permissions |
46
+ |-----------------|---------------------------------|
47
+ | Microsoft Graph | LicenseAssignment.ReadWrite.All |
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
31
52
  ## Examples
32
53
 
33
54
  Remove specific licenses from a specific user by UPN.
@@ -29,6 +29,18 @@ This command is based on an API that is currently in preview and is subject to c
29
29
 
30
30
  :::
31
31
 
32
+ ## Permissions
33
+
34
+ <Tabs>
35
+ <TabItem value="Delegated">
36
+
37
+ | Resource | Permissions |
38
+ |-----------------|----------------|
39
+ | Microsoft Graph | User.ReadWrite |
40
+
41
+ </TabItem>
42
+ </Tabs>
43
+
32
44
  ## Examples
33
45
 
34
46
  Validate password _cli365P@ssW0rd_ against the organization's password validation policy.
@@ -1,4 +1,6 @@
1
1
  import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra user recyclebinitem clear
4
6
 
@@ -33,6 +35,25 @@ After running this command, it may take a minute before all deleted users are ef
33
35
 
34
36
  :::
35
37
 
38
+ ## Permissions
39
+
40
+ <Tabs>
41
+ <TabItem value="Delegated">
42
+
43
+ | Resource | Permissions |
44
+ |-----------------|------------------------|
45
+ | Microsoft Graph | User.DeleteRestore.All |
46
+
47
+ </TabItem>
48
+ <TabItem value="Application">
49
+
50
+ | Resource | Permissions |
51
+ |-----------------|------------------------|
52
+ | Microsoft Graph | User.DeleteRestore.All |
53
+
54
+ </TabItem>
55
+ </Tabs>
56
+
36
57
  ## Examples
37
58
 
38
59
  Removes all users from the tenant recycle bin.
@@ -16,6 +16,25 @@ m365 entra user recyclebinitem list [options]
16
16
 
17
17
  <Global />
18
18
 
19
+ ## Permissions
20
+
21
+ <Tabs>
22
+ <TabItem value="Delegated">
23
+
24
+ | Resource | Permissions |
25
+ |-----------------|---------------|
26
+ | Microsoft Graph | User.Read.All |
27
+
28
+ </TabItem>
29
+ <TabItem value="Application">
30
+
31
+ | Resource | Permissions |
32
+ |-----------------|---------------|
33
+ | Microsoft Graph | User.Read.All |
34
+
35
+ </TabItem>
36
+ </Tabs>
37
+
19
38
  ## Examples
20
39
 
21
40
  List all removed users.
@@ -1,4 +1,6 @@
1
1
  import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra user recyclebinitem remove
4
6
 
@@ -36,6 +38,25 @@ After running this command, it may take a minute before the deleted user is effe
36
38
 
37
39
  :::
38
40
 
41
+ ## Permissions
42
+
43
+ <Tabs>
44
+ <TabItem value="Delegated">
45
+
46
+ | Resource | Permissions |
47
+ |-----------------|------------------------|
48
+ | Microsoft Graph | User.DeleteRestore.All |
49
+
50
+ </TabItem>
51
+ <TabItem value="Application">
52
+
53
+ | Resource | Permissions |
54
+ |-----------------|------------------------|
55
+ | Microsoft Graph | User.DeleteRestore.All |
56
+
57
+ </TabItem>
58
+ </Tabs>
59
+
39
60
  ## Examples
40
61
 
41
62
  Removes a specific user from the recycle bin.
@@ -35,6 +35,25 @@ After running this command, it may take a minute before the user will reappear i
35
35
 
36
36
  :::
37
37
 
38
+ ## Permissions
39
+
40
+ <Tabs>
41
+ <TabItem value="Delegated">
42
+
43
+ | Resource | Permissions |
44
+ |-----------------|------------------------|
45
+ | Microsoft Graph | User.DeleteRestore.All |
46
+
47
+ </TabItem>
48
+ <TabItem value="Application">
49
+
50
+ | Resource | Permissions |
51
+ |-----------------|------------------------|
52
+ | Microsoft Graph | User.DeleteRestore.All |
53
+
54
+ </TabItem>
55
+ </Tabs>
56
+
38
57
  ## Examples
39
58
 
40
59
  Restore user from the recycle bin.
@@ -77,6 +77,25 @@ When multiple values are specified for `--registeredMethods` option, the command
77
77
 
78
78
  :::
79
79
 
80
+ ## Permissions
81
+
82
+ <Tabs>
83
+ <TabItem value="Delegated">
84
+
85
+ | Resource | Permissions |
86
+ |-----------------|-------------------|
87
+ | Microsoft Graph | AuditLog.Read.All |
88
+
89
+ </TabItem>
90
+ <TabItem value="Application">
91
+
92
+ | Resource | Permissions |
93
+ |-----------------|-------------------|
94
+ | Microsoft Graph | AuditLog.Read.All |
95
+
96
+ </TabItem>
97
+ </Tabs>
98
+
80
99
  ## Examples
81
100
 
82
101
  Retrieve registration details for all users.
@@ -1,4 +1,6 @@
1
1
  import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra user session revoke
4
6
 
@@ -40,6 +42,25 @@ This API doesn't revoke sign-in sessions for external users, because external us
40
42
 
41
43
  :::
42
44
 
45
+ ## Permissions
46
+
47
+ <Tabs>
48
+ <TabItem value="Delegated">
49
+
50
+ | Resource | Permissions |
51
+ |-----------------|-------------------------|
52
+ | Microsoft Graph | User.RevokeSessions.All |
53
+
54
+ </TabItem>
55
+ <TabItem value="Application">
56
+
57
+ | Resource | Permissions |
58
+ |-----------------|-------------------------|
59
+ | Microsoft Graph | User.RevokeSessions.All |
60
+
61
+ </TabItem>
62
+ </Tabs>
63
+
43
64
  ## Examples
44
65
 
45
66
  Revoke sign-in sessions of a user specified by id
@@ -30,6 +30,25 @@ m365 entra user signin list [options]
30
30
 
31
31
  <Global />
32
32
 
33
+ ## Permissions
34
+
35
+ <Tabs>
36
+ <TabItem value="Delegated">
37
+
38
+ | Resource | Permissions |
39
+ |-----------------|-------------------|
40
+ | Microsoft Graph | AuditLog.Read.All |
41
+
42
+ </TabItem>
43
+ <TabItem value="Application">
44
+
45
+ | Resource | Permissions |
46
+ |-----------------|-------------------|
47
+ | Microsoft Graph | AuditLog.Read.All |
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
33
52
  ## Examples
34
53
 
35
54
  Get all user's sign-ins in your tenant.