@pnp/cli-microsoft365 11.1.0-beta.5b5ee32 → 11.1.0-beta.734344f

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 (91) hide show
  1. package/allCommands.json +1 -1
  2. package/allCommandsFull.json +1 -1
  3. package/dist/Auth.js +10 -7
  4. package/dist/Command.js +2 -2
  5. package/dist/auth/msalCachePlugin.js +6 -2
  6. package/dist/autocomplete.js +6 -2
  7. package/dist/chili/chili.js +2 -1
  8. package/dist/cli/cli.js +4 -2
  9. package/dist/config.js +0 -1
  10. package/dist/m365/adaptivecard/commands/adaptivecard-send.js +2 -2
  11. package/dist/m365/app/commands/permission/permission-list.js +4 -2
  12. package/dist/m365/commands/setup.js +6 -3
  13. package/dist/m365/entra/commands/app/app-role-add.js +1 -1
  14. package/dist/m365/entra/commands/group/group-add.js +1 -1
  15. package/dist/m365/entra/commands/group/group-set.js +1 -1
  16. package/dist/m365/entra/commands/m365group/m365group-add.js +0 -1
  17. package/dist/m365/file/commands/convert/convert-pdf.js +1 -6
  18. package/dist/m365/flow/commands/flow-export.js +8 -5
  19. package/dist/m365/flow/commands/run/run-get.js +3 -3
  20. package/dist/m365/graph/commands/schemaextension/schemaextension-set.js +1 -1
  21. package/dist/m365/pa/commands/app/app-export.js +1 -1
  22. package/dist/m365/pa/commands/app/app-get.js +1 -1
  23. package/dist/m365/planner/commands/tenant/tenant-settings-list.js +5 -0
  24. package/dist/m365/pp/commands/solution/solution-publisher-get.js +1 -1
  25. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +5 -0
  26. package/dist/m365/purview/commands/retentionlabel/retentionlabel-list.js +5 -0
  27. package/dist/m365/spfx/commands/package/package-generate.js +3 -1
  28. package/dist/m365/spfx/commands/project/base-project-command.js +13 -5
  29. package/dist/m365/spfx/commands/project/project-doctor/rules/FN021007_PKG_only_one_rush_stack_compiler_installed.js +1 -1
  30. package/dist/m365/spfx/commands/project/project-externalize/rules/PnPJsRule.js +6 -4
  31. package/dist/m365/spfx/commands/project/project-model/ScssFile.js +3 -1
  32. package/dist/m365/spfx/commands/project/project-model/TsFile.js +6 -2
  33. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.15.2.js +1 -1
  34. package/dist/m365/spfx/commands/spfx-doctor.js +5 -5
  35. package/dist/m365/spo/commands/file/file-add.js +4 -2
  36. package/dist/m365/spo/commands/file/file-rename.js +3 -4
  37. package/dist/m365/spo/commands/hubsite/hubsite-list.js +1 -1
  38. package/dist/m365/spo/commands/listitem/listitem-attachment-add.js +1 -1
  39. package/dist/m365/spo/commands/listitem/listitem-batch-set.js +9 -5
  40. package/dist/m365/spo/commands/page/clientsidepages.js +12 -12
  41. package/dist/m365/spo/commands/page/page-add.js +4 -2
  42. package/dist/m365/spo/commands/page/page-clientsidewebpart-add.js +1 -0
  43. package/dist/m365/spo/commands/page/page-set.js +4 -2
  44. package/dist/m365/spo/commands/page/page-text-add.js +1 -0
  45. package/dist/m365/spo/commands/propertybag/propertybag-base.js +34 -54
  46. package/dist/m365/spo/commands/theme/theme-apply.js +1 -1
  47. package/dist/m365/spo/commands/web/web-reindex.js +17 -27
  48. package/dist/m365/teams/commands/tab/tab-add.js +9 -3
  49. package/dist/m365/viva/commands/connections/connections-app-create.js +1 -1
  50. package/dist/m365/viva/commands/engage/engage-community-user-add.js +1 -1
  51. package/dist/m365/viva/commands/engage/engage-community-user-remove.js +1 -1
  52. package/dist/telemetry.js +3 -1
  53. package/dist/utils/accessToken.js +4 -0
  54. package/dist/utils/cache.js +3 -2
  55. package/dist/utils/customAppScope.js +1 -1
  56. package/dist/utils/directoryExtension.js +1 -1
  57. package/dist/utils/entraAdministrativeUnit.js +1 -1
  58. package/dist/utils/entraApp.js +2 -2
  59. package/dist/utils/entraDevice.js +1 -1
  60. package/dist/utils/entraServicePrincipal.js +2 -2
  61. package/dist/utils/formatting.js +1 -1
  62. package/dist/utils/md.js +2 -2
  63. package/dist/utils/odata.js +2 -0
  64. package/dist/utils/planner.js +1 -1
  65. package/dist/utils/powerPlatform.js +2 -2
  66. package/dist/utils/roleDefinition.js +2 -2
  67. package/dist/utils/spo.js +10 -11
  68. package/dist/utils/urlUtil.js +1 -1
  69. package/dist/utils/validation.js +1 -1
  70. package/dist/utils/vivaEngage.js +3 -3
  71. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-add.mdx +14 -0
  72. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-get.mdx +15 -0
  73. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-list.mdx +14 -0
  74. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-remove.mdx +14 -0
  75. package/docs/docs/cmd/entra/groupsetting/groupsetting-add.mdx +19 -0
  76. package/docs/docs/cmd/entra/groupsetting/groupsetting-get.mdx +19 -0
  77. package/docs/docs/cmd/entra/groupsetting/groupsetting-list.mdx +19 -0
  78. package/docs/docs/cmd/entra/groupsetting/groupsetting-remove.mdx +21 -0
  79. package/docs/docs/cmd/entra/groupsetting/groupsetting-set.mdx +21 -0
  80. package/docs/docs/cmd/entra/m365group/m365group-add.mdx +19 -0
  81. package/docs/docs/cmd/entra/m365group/m365group-get.mdx +19 -0
  82. package/docs/docs/cmd/entra/m365group/m365group-list.mdx +19 -0
  83. package/docs/docs/cmd/entra/m365group/m365group-remove.mdx +21 -0
  84. package/docs/docs/cmd/entra/m365group/m365group-renew.mdx +21 -0
  85. package/docs/docs/cmd/entra/m365group/m365group-set.mdx +21 -0
  86. package/docs/docs/cmd/entra/m365group/m365group-teamify.mdx +19 -0
  87. package/eslint-rules/lib/rules/correct-command-class-name.js +18 -2
  88. package/eslint.config.mjs +270 -0
  89. package/npm-shrinkwrap.json +1117 -2277
  90. package/package.json +22 -21
  91. package/.eslintrc.cjs +0 -289
package/dist/utils/md.js CHANGED
@@ -32,7 +32,7 @@ function convertDd(md) {
32
32
  });
33
33
  }
34
34
  function convertHyperlinks(md) {
35
- return md.replace(/(?!\[1m)(?!\[22m)\[([^\]]+)\]\(([^\)]+)\)/gm, (match, label, url) => {
35
+ return md.replace(/(?!\[1m)(?!\[22m)\[([^\]]+)\]\(([^)]+)\)/gm, (match, label, url) => {
36
36
  // if the link is the same as the content, return just the link
37
37
  if (label === url) {
38
38
  return url;
@@ -54,7 +54,7 @@ function convertContentTabs(md) {
54
54
  .trim();
55
55
  }
56
56
  function convertCodeFences(md) {
57
- const regex = new RegExp('^```.*?(?:\r?\n)(.*?)```(?:\r?\n)', 'gms');
57
+ const regex = /^```.*?(?:\r?\n)(.*?)```(?:\r?\n)/gms;
58
58
  return md.replace(regex, (match, code) => {
59
59
  return `${code.replace(/^(.+)$/gm, ' $1')}${EOL}`;
60
60
  });
@@ -1,4 +1,6 @@
1
1
  import request from "../request.js";
2
+ /* eslint-enable no-redeclare */
3
+ // eslint-disable-next-line no-redeclare
2
4
  async function getAllItems(param1, metadata) {
3
5
  let items = [];
4
6
  const requestOptions = typeof param1 !== 'string' ? param1 : {
@@ -22,7 +22,7 @@ export const planner = {
22
22
  try {
23
23
  return await request.get(requestOptions);
24
24
  }
25
- catch (ex) {
25
+ catch {
26
26
  throw Error(`Planner plan with id '${id}' was not found.`);
27
27
  }
28
28
  },
@@ -39,7 +39,7 @@ export const powerPlatform = {
39
39
  const response = await request.get(requestOptions);
40
40
  return response;
41
41
  }
42
- catch (ex) {
42
+ catch {
43
43
  throw Error(`The specified Power Page website with id '${id}' does not exist.`);
44
44
  }
45
45
  },
@@ -97,7 +97,7 @@ export const powerPlatform = {
97
97
  */
98
98
  async getSolutionByName(dynamicsApiUrl, name) {
99
99
  const requestOptions = {
100
- url: `${dynamicsApiUrl}/api/data/v9.0/solutions?$filter=isvisible eq true and uniquename eq \'${name}\'&$expand=publisherid($select=friendlyname)&$select=solutionid,uniquename,version,publisherid,installedon,solutionpackageversion,friendlyname,versionnumber&api-version=9.1`,
100
+ url: `${dynamicsApiUrl}/api/data/v9.0/solutions?$filter=isvisible eq true and uniquename eq '${name}'&$expand=publisherid($select=friendlyname)&$select=solutionid,uniquename,version,publisherid,installedon,solutionpackageversion,friendlyname,versionnumber&api-version=9.1`,
101
101
  headers: {
102
102
  accept: 'application/json;odata.metadata=none'
103
103
  },
@@ -17,7 +17,7 @@ export const roleDefinition = {
17
17
  }
18
18
  const roleDefinitions = await odata.getAllItems(url);
19
19
  if (roleDefinitions.length === 0) {
20
- throw `The specified role definition '${displayName}' does not exist.`;
20
+ throw new Error(`The specified role definition '${displayName}' does not exist.`);
21
21
  }
22
22
  if (roleDefinitions.length > 1) {
23
23
  const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', roleDefinitions);
@@ -61,7 +61,7 @@ export const roleDefinition = {
61
61
  }
62
62
  const roleDefinitions = await odata.getAllItems(url);
63
63
  if (roleDefinitions.length === 0) {
64
- throw `The specified role definition '${displayName}' does not exist.`;
64
+ throw new Error(`The specified role definition '${displayName}' does not exist.`);
65
65
  }
66
66
  if (roleDefinitions.length > 1) {
67
67
  const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', roleDefinitions);
package/dist/utils/spo.js CHANGED
@@ -114,7 +114,7 @@ export const spo = {
114
114
  try {
115
115
  await auth.storeConnectionInfo();
116
116
  }
117
- catch (e) {
117
+ catch {
118
118
  if (debug) {
119
119
  await logger.logToStderr('Error while storing connection info');
120
120
  }
@@ -123,7 +123,7 @@ export const spo = {
123
123
  },
124
124
  async getSpoAdminUrl(logger, debug) {
125
125
  const spoUrl = await spo.getSpoUrl(logger, debug);
126
- return (spoUrl.replace(/(https:\/\/)([^\.]+)(.*)/, '$1$2-admin$3'));
126
+ return (spoUrl.replace(/(https:\/\/)([^.]+)(.*)/, '$1$2-admin$3'));
127
127
  },
128
128
  async getTenantId(logger, debug) {
129
129
  if (auth.connection.spoTenantId) {
@@ -151,7 +151,7 @@ export const spo = {
151
151
  try {
152
152
  await auth.storeConnectionInfo();
153
153
  }
154
- catch (e) {
154
+ catch {
155
155
  if (debug) {
156
156
  await logger.logToStderr('Error while storing connection info');
157
157
  }
@@ -749,10 +749,7 @@ export const spo = {
749
749
  }
750
750
  }
751
751
  else {
752
- if (siteDesignId) {
753
- siteDesignId = siteDesignId;
754
- }
755
- else {
752
+ if (!siteDesignId) {
756
753
  if (siteDesign) {
757
754
  switch (siteDesign) {
758
755
  case 'Topic':
@@ -1592,10 +1589,12 @@ export const spo = {
1592
1589
  const requestBody = {
1593
1590
  formValues: requestBodyOptions
1594
1591
  };
1595
- contentTypeName && requestBody.formValues.push({
1596
- FieldName: 'ContentType',
1597
- FieldValue: contentTypeName
1598
- });
1592
+ if (contentTypeName) {
1593
+ requestBody.formValues.push({
1594
+ FieldName: 'ContentType',
1595
+ FieldValue: contentTypeName
1596
+ });
1597
+ }
1599
1598
  const requestOptions = {
1600
1599
  url: `${absoluteListUrl}/items(${itemId})/ValidateUpdateListItem()`,
1601
1600
  headers: {
@@ -176,7 +176,7 @@ export const urlUtil = {
176
176
  getTargetSiteAbsoluteUrl(webUrl, url) {
177
177
  const fullUrl = url.startsWith('https://') ? url : urlUtil.getAbsoluteUrl(webUrl, url);
178
178
  // Pattern to match SharePoint URLs
179
- const urlPattern = /https:\/\/[\w\-]+\.sharepoint\.com\/(teams|sites|personal)\/([\w\-]+)/;
179
+ const urlPattern = /https:\/\/[\w-]+\.sharepoint\.com\/(teams|sites|personal)\/([\w-]+)/;
180
180
  const match = fullUrl.match(urlPattern);
181
181
  if (match) {
182
182
  // If a match is found, return the matched URL
@@ -309,7 +309,7 @@ export const validation = {
309
309
  return false;
310
310
  }
311
311
  const hasInvalidProperties = validThemeProperties.map((property) => {
312
- return theme.hasOwnProperty(property);
312
+ return Object.prototype.hasOwnProperty.call(theme, property);
313
313
  }).includes(false);
314
314
  if (hasInvalidProperties) {
315
315
  return false;
@@ -19,7 +19,7 @@ export const vivaEngage = {
19
19
  };
20
20
  const community = await request.get(requestOptions);
21
21
  if (!community) {
22
- throw `The specified Viva Engage community with ID '${communityId}' does not exist.`;
22
+ throw new Error(`The specified Viva Engage community with ID '${communityId}' does not exist.`);
23
23
  }
24
24
  return community;
25
25
  },
@@ -32,7 +32,7 @@ export const vivaEngage = {
32
32
  async getCommunityByDisplayName(displayName, selectProperties) {
33
33
  const communities = await odata.getAllItems(`https://graph.microsoft.com/v1.0/employeeExperience/communities?$filter=displayName eq '${formatting.encodeQueryParameter(displayName)}'&$select=${selectProperties.join(',')}`);
34
34
  if (communities.length === 0) {
35
- throw `The specified Viva Engage community '${displayName}' does not exist.`;
35
+ throw new Error(`The specified Viva Engage community '${displayName}' does not exist.`);
36
36
  }
37
37
  if (communities.length > 1) {
38
38
  const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', communities);
@@ -53,7 +53,7 @@ export const vivaEngage = {
53
53
  const communities = await odata.getAllItems(`https://graph.microsoft.com/v1.0/employeeExperience/communities?$select=${properties.join(',')}`);
54
54
  const filteredCommunity = communities.find(c => c.groupId === entraGroupId);
55
55
  if (!filteredCommunity) {
56
- throw `The Microsoft Entra group with id '${entraGroupId}' is not associated with any Viva Engage community.`;
56
+ throw new Error(`The Microsoft Entra group with id '${entraGroupId}' is not associated with any Viva Engage community.`);
57
57
  }
58
58
  return filteredCommunity;
59
59
  },
@@ -59,6 +59,20 @@ Creates an enterprise application for a registered Entra app with the specified
59
59
  m365 entra enterpriseapp add --objectId b2307a39-e878-458b-bc90-03bc578531d6
60
60
  ```
61
61
 
62
+ ## Permissions
63
+ <Tabs>
64
+ <TabItem value="Delegated">
65
+ | Resource | Permissions |
66
+ |-----------------|---------------------------|
67
+ | Microsoft Graph | Application.ReadWrite.All |
68
+ </TabItem>
69
+ <TabItem value="Application">
70
+ | Resource | Permissions |
71
+ |-----------------|---------------------------|
72
+ | Microsoft Graph | Application.ReadWrite.All |
73
+ </TabItem>
74
+ </Tabs>
75
+
62
76
  ## Response
63
77
 
64
78
  <Tabs>
@@ -57,6 +57,21 @@ Return details about the enterprise application with the specified ObjectId.
57
57
  m365 entra enterpriseapp get --objectId b2307a39-e878-458b-bc90-03bc578531dd
58
58
  ```
59
59
 
60
+ ## Permissions
61
+
62
+ <Tabs>
63
+ <TabItem value="Delegated">
64
+ | Resource | Permissions |
65
+ |-----------------|----------------------|
66
+ | Microsoft Graph | Application.Read.All |
67
+ </TabItem>
68
+ <TabItem value="Application">
69
+ | Resource | Permissions |
70
+ |-----------------|----------------------|
71
+ | Microsoft Graph | Application.Read.All |
72
+ </TabItem>
73
+ </Tabs>
74
+
60
75
  ## Response
61
76
 
62
77
  <Tabs>
@@ -44,6 +44,20 @@ Returns a list of all enterprise applications that comply with the specified dis
44
44
  m365 entra enterpriseapp list --displayName "My custom enterprise application" --tag "WindowsAzureActiveDirectoryIntegratedApp"
45
45
  ```
46
46
 
47
+ ## Permissions
48
+ <Tabs>
49
+ <TabItem value="Delegated">
50
+ | Resource | Permissions |
51
+ |-----------------|----------------------|
52
+ | Microsoft Graph | Application.Read.All |
53
+ </TabItem>
54
+ <TabItem value="Application">
55
+ | Resource | Permissions |
56
+ |-----------------|----------------------|
57
+ | Microsoft Graph | Application.Read.All |
58
+ </TabItem>
59
+ </Tabs>
60
+
47
61
  ## Response
48
62
 
49
63
  <Tabs>
@@ -56,6 +56,20 @@ Delete an enterprise application by object ID.
56
56
  m365 entra enterpriseapp remove --objectId b2307a39-e878-458b-bc90-03bc578531dd
57
57
  ```
58
58
 
59
+ ## Permissions
60
+ <Tabs>
61
+ <TabItem value="Delegated">
62
+ | Resource | Permissions |
63
+ |-----------------|---------------------------|
64
+ | Microsoft Graph | Application.ReadWrite.All |
65
+ </TabItem>
66
+ <TabItem value="Application">
67
+ | Resource | Permissions |
68
+ |-----------------|---------------------------|
69
+ | Microsoft Graph | Application.ReadWrite.All |
70
+ </TabItem>
71
+ </Tabs>
72
+
59
73
  ## Response
60
74
 
61
75
  The command won't return a response on success.
@@ -21,6 +21,25 @@ m365 entra groupsetting add [options]
21
21
 
22
22
  <Global />
23
23
 
24
+ ## Permissions
25
+
26
+ <Tabs>
27
+ <TabItem value="Delegated">
28
+
29
+ | Resource | Permissions |
30
+ |-----------------|-----------------------------|
31
+ | Microsoft Graph | GroupSettings.ReadWrite.All |
32
+
33
+ </TabItem>
34
+ <TabItem value="Application">
35
+
36
+ | Resource | Permissions |
37
+ |-----------------|-----------------------------|
38
+ | Microsoft Graph | GroupSettings.ReadWrite.All |
39
+
40
+ </TabItem>
41
+ </Tabs>
42
+
24
43
  ## Remarks
25
44
 
26
45
  To create a group setting, you have to specify the ID of the group setting template that should be used to create the setting. You can retrieve the ID of the template using the [entra groupsettingtemplate list](../groupsettingtemplate/groupsettingtemplate-list.mdx) command.
@@ -21,6 +21,25 @@ m365 entra groupsetting get [options]
21
21
 
22
22
  <Global />
23
23
 
24
+ ## Permissions
25
+
26
+ <Tabs>
27
+ <TabItem value="Delegated">
28
+
29
+ | Resource | Permissions |
30
+ |-----------------|------------------------|
31
+ | Microsoft Graph | GroupSettings.Read.All |
32
+
33
+ </TabItem>
34
+ <TabItem value="Application">
35
+
36
+ | Resource | Permissions |
37
+ |-----------------|------------------------|
38
+ | Microsoft Graph | GroupSettings.Read.All |
39
+
40
+ </TabItem>
41
+ </Tabs>
42
+
24
43
  ## Examples
25
44
 
26
45
  Get information about the group setting with id _1caf7dcd-7e83-4c3a-94f7-932a1299c844_
@@ -16,6 +16,25 @@ m365 entra groupsetting 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 | GroupSettings.Read.All |
27
+
28
+ </TabItem>
29
+ <TabItem value="Application">
30
+
31
+ | Resource | Permissions |
32
+ |-----------------|------------------------|
33
+ | Microsoft Graph | GroupSettings.Read.All |
34
+
35
+ </TabItem>
36
+ </Tabs>
37
+
19
38
  ## Examples
20
39
 
21
40
  List all group settings in the tenant
@@ -1,4 +1,6 @@
1
1
  import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra groupsetting remove
4
6
 
@@ -22,6 +24,25 @@ m365 entra groupsetting remove [options]
22
24
 
23
25
  <Global />
24
26
 
27
+ ## Permissions
28
+
29
+ <Tabs>
30
+ <TabItem value="Delegated">
31
+
32
+ | Resource | Permissions |
33
+ |-----------------|-----------------------------|
34
+ | Microsoft Graph | GroupSettings.ReadWrite.All |
35
+
36
+ </TabItem>
37
+ <TabItem value="Application">
38
+
39
+ | Resource | Permissions |
40
+ |-----------------|-----------------------------|
41
+ | Microsoft Graph | GroupSettings.ReadWrite.All |
42
+
43
+ </TabItem>
44
+ </Tabs>
45
+
25
46
  ## Remarks
26
47
 
27
48
  If the specified _id_ doesn't refer to an existing group setting, you will get a `Resource does not exist` error.
@@ -1,4 +1,6 @@
1
1
  import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra groupsetting set
4
6
 
@@ -19,6 +21,25 @@ m365 entra groupsetting set [options]
19
21
 
20
22
  <Global />
21
23
 
24
+ ## Permissions
25
+
26
+ <Tabs>
27
+ <TabItem value="Delegated">
28
+
29
+ | Resource | Permissions |
30
+ |-----------------|-----------------------------|
31
+ | Microsoft Graph | GroupSettings.ReadWrite.All |
32
+
33
+ </TabItem>
34
+ <TabItem value="Application">
35
+
36
+ | Resource | Permissions |
37
+ |-----------------|-----------------------------|
38
+ | Microsoft Graph | GroupSettings.ReadWrite.All |
39
+
40
+ </TabItem>
41
+ </Tabs>
42
+
22
43
  ## Remarks
23
44
 
24
45
  To update a group setting, you have to specify the ID of the group setting. You can retrieve the ID of the group setting using the [entra groupsetting list](./groupsetting-list.mdx) command.
@@ -66,6 +66,25 @@ Public | Anyone can join the group without needing owner permission. Anyone can
66
66
  Private | Owner permission is needed to join the group. Anyone can view the attributes of the group. Anyone can see the members of the group.
67
67
  HiddenMembership | Owner permission is needed to join the group. Guest users cannot view the attributes of the group. Non-members cannot see the members of the group. Administrators (global, company, user, and helpdesk) can view the membership of the group. The group appears in the global address book (GAL).
68
68
 
69
+ ## Permissions
70
+
71
+ <Tabs>
72
+ <TabItem value="Delegated">
73
+
74
+ | Resource | Permissions |
75
+ |-----------------|---------------------|
76
+ | Microsoft Graph | Group.ReadWrite.All |
77
+
78
+ </TabItem>
79
+ <TabItem value="Application">
80
+
81
+ | Resource | Permissions |
82
+ |-----------------|--------------|
83
+ | Microsoft Graph | Group.Create |
84
+
85
+ </TabItem>
86
+ </Tabs>
87
+
69
88
  ## Examples
70
89
 
71
90
  Create a public Microsoft 365 Group.
@@ -27,6 +27,25 @@ m365 entra m365group get [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.Read.All |
38
+
39
+ </TabItem>
40
+ <TabItem value="Application">
41
+
42
+ | Resource | Permissions |
43
+ |-----------------|----------------|
44
+ | Microsoft Graph | Group.Read.All |
45
+
46
+ </TabItem>
47
+ </Tabs>
48
+
30
49
  ## Examples
31
50
 
32
51
  Get information about the Microsoft 365 Group with id _1caf7dcd-7e83-4c3a-94f7-932a1299c844_.
@@ -30,6 +30,25 @@ m365 entra m365group 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 | Group.Read.All |
41
+
42
+ </TabItem>
43
+ <TabItem value="Application">
44
+
45
+ | Resource | Permissions |
46
+ |-----------------|----------------|
47
+ | Microsoft Graph | Group.Read.All |
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
33
52
  ## Remarks
34
53
 
35
54
  Using the `--withSiteUrl` option, you can retrieve the URL of the site associated with the particular Microsoft 365 Group. If you however retrieve too many groups and will try to get their site URLs, you will most likely get an error as the command will get throttled, issuing too many requests, too frequently. If you get an error, consider narrowing down the result set using the `--displayName` and `--mailNickname` filters.
@@ -1,4 +1,6 @@
1
1
  import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra m365group remove
4
6
 
@@ -28,6 +30,25 @@ m365 entra m365group 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 | Group.ReadWrite.All |
41
+
42
+ </TabItem>
43
+ <TabItem value="Application">
44
+
45
+ | Resource | Permissions |
46
+ |-----------------|---------------------|
47
+ | Microsoft Graph | Group.ReadWrite.All |
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
31
52
  ## Remarks
32
53
 
33
54
  If the specified _id_ doesn't refer to an existing group, you will get a `Resource does not exist` error. Additionally, if you do not have access to the group or the associated group-connected site, you will get an `Access denied` error.
@@ -1,4 +1,6 @@
1
1
  import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra m365group renew
4
6
 
@@ -22,6 +24,25 @@ m365 entra m365group renew [options]
22
24
 
23
25
  <Global />
24
26
 
27
+ ## Permissions
28
+
29
+ <Tabs>
30
+ <TabItem value="Delegated">
31
+
32
+ | Resource | Permissions |
33
+ |-----------------|---------------------|
34
+ | Microsoft Graph | Group.ReadWrite.All |
35
+
36
+ </TabItem>
37
+ <TabItem value="Application">
38
+
39
+ | Resource | Permissions |
40
+ |-----------------|---------------------|
41
+ | Microsoft Graph | Group.ReadWrite.All |
42
+
43
+ </TabItem>
44
+ </Tabs>
45
+
25
46
  ## Remarks
26
47
 
27
48
  If the specified _id_ doesn't refer to an existing group, you will get a `The remote server returned an error: (404) Not Found.` error.
@@ -1,4 +1,6 @@
1
1
  import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra m365group set
4
6
 
@@ -58,6 +60,25 @@ m365 entra m365group set [options]
58
60
 
59
61
  <Global />
60
62
 
63
+ ## Permissions
64
+
65
+ <Tabs>
66
+ <TabItem value="Delegated">
67
+
68
+ | Resource | Permissions |
69
+ |-----------------|---------------------|
70
+ | Microsoft Graph | Group.ReadWrite.All |
71
+
72
+ </TabItem>
73
+ <TabItem value="Application">
74
+
75
+ | Resource | Permissions |
76
+ |-----------------|---------------------|
77
+ | Microsoft Graph | Group.ReadWrite.All |
78
+
79
+ </TabItem>
80
+ </Tabs>
81
+
61
82
  ## Remarks
62
83
 
63
84
  When updating group's owners and members, the command will remove existing owners/members from the group, and the specified users will be added.
@@ -1,4 +1,6 @@
1
1
  import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra m365group teamify
4
6
 
@@ -25,6 +27,23 @@ m365 entra m365group teamify [options]
25
27
 
26
28
  <Global />
27
29
 
30
+ <Tabs>
31
+ <TabItem value="Delegated">
32
+
33
+ | Resource | Permissions |
34
+ |-----------------|---------------------|
35
+ | Microsoft Graph | Group.ReadWrite.All |
36
+
37
+ </TabItem>
38
+ <TabItem value="Application">
39
+
40
+ | Resource | Permissions |
41
+ |-----------------|---------------------|
42
+ | Microsoft Graph | Group.ReadWrite.All |
43
+
44
+ </TabItem>
45
+ </Tabs>
46
+
28
47
  ## Examples
29
48
 
30
49
  Creates a new Microsoft Teams team under existing Microsoft 365 group with the specified id.
@@ -42,7 +42,7 @@ function capitalizeWord(word, capitalized) {
42
42
  return word.substr(0, 1).toUpperCase() + word.substr(1).toLowerCase();
43
43
  }
44
44
 
45
- function breakWords(longWord, dictionary) {
45
+ function breakWords(longWord, dictionary) {
46
46
  const words = [];
47
47
  for (let i = 0; i < dictionary.length; i++) {
48
48
  if (longWord.indexOf(dictionary[i]) === 0) {
@@ -72,7 +72,23 @@ module.exports = {
72
72
  fixable: 'code',
73
73
  messages: {
74
74
  invalidName: "'{{ actualClassName }}' is not a valid command class name. Expected '{{ expectedClassName }}'"
75
- }
75
+ },
76
+ schema: [
77
+ {
78
+ type: 'array',
79
+ items: { type: 'string' },
80
+ uniqueItems: true,
81
+ title: 'dictionary',
82
+ description: 'List of known word parts used to break long command names into words.'
83
+ },
84
+ {
85
+ type: 'array',
86
+ items: { type: 'string' },
87
+ uniqueItems: true,
88
+ title: 'capitalized',
89
+ description: 'List of known word parts that should be capitalized.'
90
+ }
91
+ ]
76
92
  },
77
93
  create: context => {
78
94
  return {