@pnp/cli-microsoft365 6.3.0-beta.1140b31 → 6.3.0-beta.a991329

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 (62) hide show
  1. package/dist/Command.js +12 -1
  2. package/dist/cli/Cli.js +4 -1
  3. package/dist/m365/aad/commands/group/group-list.js +2 -1
  4. package/dist/m365/flow/commands/run/run-list.js +55 -3
  5. package/dist/m365/graph/commands/changelog/changelog-list.js +3 -2
  6. package/dist/m365/onenote/commands/notebook/notebook-list.js +51 -40
  7. package/dist/m365/planner/commands/plan/plan-add.js +20 -6
  8. package/dist/m365/planner/commands/plan/plan-remove.js +1 -1
  9. package/dist/m365/planner/commands/roster/roster-add.js +47 -0
  10. package/dist/m365/planner/commands/roster/roster-remove.js +88 -0
  11. package/dist/m365/planner/commands/task/task-checklistitem-add.js +2 -1
  12. package/dist/m365/planner/commands/task/task-checklistitem-list.js +2 -1
  13. package/dist/m365/planner/commands.js +2 -0
  14. package/dist/m365/pp/commands/solution/solution-get.js +2 -1
  15. package/dist/m365/pp/commands/solution/solution-list.js +2 -1
  16. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-get.js +70 -0
  17. package/dist/m365/purview/commands.js +1 -0
  18. package/dist/m365/spfx/commands/project/WebApiPermissionRequests.js +3 -0
  19. package/dist/m365/spfx/commands/project/project-permissions-grant.js +81 -0
  20. package/dist/m365/spfx/commands.js +3 -2
  21. package/dist/m365/spo/commands/app/app-add.js +2 -1
  22. package/dist/m365/spo/commands/file/file-sharinginfo-get.js +2 -1
  23. package/dist/m365/spo/commands/file/file-sharinglink-list.js +2 -1
  24. package/dist/m365/spo/commands/group/group-list.js +2 -1
  25. package/dist/m365/spo/commands/hubsite/hubsite-get.js +1 -1
  26. package/dist/m365/spo/commands/listitem/listitem-list.js +2 -1
  27. package/dist/m365/spo/commands/navigation/navigation-node-add.js +17 -3
  28. package/dist/m365/spo/commands/navigation/navigation-node-list.js +4 -7
  29. package/dist/m365/spo/commands/navigation/navigation-node-set.js +118 -0
  30. package/dist/m365/spo/commands/page/page-column-get.js +2 -1
  31. package/dist/m365/spo/commands/page/page-column-list.js +2 -1
  32. package/dist/m365/spo/commands/page/page-section-get.js +2 -1
  33. package/dist/m365/spo/commands/page/page-section-list.js +2 -1
  34. package/dist/m365/spo/commands/spo-search.js +2 -1
  35. package/dist/m365/spo/commands/term/term-list.js +2 -1
  36. package/dist/m365/spo/commands/userprofile/userprofile-get.js +2 -2
  37. package/dist/m365/spo/commands/web/web-set.js +11 -4
  38. package/dist/m365/spo/commands.js +1 -0
  39. package/dist/m365/teams/commands/meeting/meeting-list.js +1 -1
  40. package/dist/m365/teams/commands/team/team-app-list.js +1 -1
  41. package/dist/m365/teams/commands/user/user-app-list.js +2 -1
  42. package/dist/m365/todo/commands/task/task-get.js +2 -1
  43. package/dist/m365/todo/commands/task/task-list.js +2 -1
  44. package/dist/m365/yammer/commands/yammer-search.js +2 -1
  45. package/dist/utils/planner.js +4 -4
  46. package/docs/docs/cmd/aad/app/app-list.md +3 -0
  47. package/docs/docs/cmd/aad/user/user-set.md +1 -1
  48. package/docs/docs/cmd/flow/run/run-list.md +21 -0
  49. package/docs/docs/cmd/planner/plan/plan-add.md +17 -6
  50. package/docs/docs/cmd/planner/plan/plan-remove.md +4 -0
  51. package/docs/docs/cmd/planner/roster/roster-add.md +60 -0
  52. package/docs/docs/cmd/planner/roster/roster-remove.md +48 -0
  53. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.md +100 -0
  54. package/docs/docs/cmd/spfx/project/project-permissions-grant.md +65 -0
  55. package/docs/docs/cmd/spo/listitem/listitem-attachment-list.md +2 -2
  56. package/docs/docs/cmd/spo/listitem/listitem-isrecord.md +2 -2
  57. package/docs/docs/cmd/spo/navigation/navigation-node-add.md +18 -3
  58. package/docs/docs/cmd/spo/navigation/navigation-node-list.md +30 -0
  59. package/docs/docs/cmd/spo/navigation/navigation-node-remove.md +1 -1
  60. package/docs/docs/cmd/spo/navigation/navigation-node-set.md +59 -0
  61. package/docs/docs/cmd/spo/web/web-set.md +9 -0
  62. package/package.json +1 -1
@@ -62,6 +62,9 @@ class SpoWebSetCommand extends SpoCommand_1.default {
62
62
  if (typeof args.options.footerEnabled !== 'undefined') {
63
63
  payload.FooterEnabled = args.options.footerEnabled;
64
64
  }
65
+ if (typeof args.options.navAudienceTargetingEnabled !== 'undefined') {
66
+ payload.NavAudienceTargetingEnabled = args.options.navAudienceTargetingEnabled;
67
+ }
65
68
  if (typeof args.options.searchScope !== 'undefined') {
66
69
  const searchScope = args.options.searchScope.toLowerCase();
67
70
  payload.SearchScope = SpoWebSetCommand.searchScopeOptions.indexOf(searchScope);
@@ -96,11 +99,12 @@ _SpoWebSetCommand_instances = new WeakSet(), _SpoWebSetCommand_initTelemetry = f
96
99
  description: typeof args.options.description !== 'undefined',
97
100
  headerEmphasis: typeof args.options.headerEmphasis !== 'undefined',
98
101
  headerLayout: typeof args.options.headerLayout !== 'undefined',
99
- megaMenuEnabled: args.options.megaMenuEnabled,
102
+ megaMenuEnabled: typeof args.options.megaMenuEnabled !== 'undefined',
100
103
  siteLogoUrl: typeof args.options.siteLogoUrl !== 'undefined',
101
104
  title: typeof args.options.title !== 'undefined',
102
- quickLaunchEnabled: args.options.quickLaunchEnabled,
103
- footerEnabled: args.options.footerEnabled,
105
+ quickLaunchEnabled: typeof args.options.quickLaunchEnabled !== 'undefined',
106
+ footerEnabled: typeof args.options.footerEnabled !== 'undefined',
107
+ navAudienceTargetingEnabled: typeof args.options.navAudienceTargetingEnabled !== 'undefined',
104
108
  searchScope: args.options.searchScope !== 'undefined'
105
109
  });
106
110
  this.trackUnknownOptions(this.telemetryProperties, args.options);
@@ -129,12 +133,15 @@ _SpoWebSetCommand_instances = new WeakSet(), _SpoWebSetCommand_initTelemetry = f
129
133
  }, {
130
134
  option: '--footerEnabled [footerEnabled]',
131
135
  autocomplete: ['true', 'false']
136
+ }, {
137
+ option: '--navAudienceTargetingEnabled [navAudienceTargetingEnabled]',
138
+ autocomplete: ['true', 'false']
132
139
  }, {
133
140
  option: '--searchScope [searchScope]',
134
141
  autocomplete: SpoWebSetCommand.searchScopeOptions
135
142
  });
136
143
  }, _SpoWebSetCommand_initTypes = function _SpoWebSetCommand_initTypes() {
137
- this.types.boolean.push('megaMenuEnabled', 'footerEnabled', 'quickLaunchEnabled');
144
+ this.types.boolean.push('megaMenuEnabled', 'footerEnabled', 'quickLaunchEnabled', 'navAudienceTargetingEnabled');
138
145
  }, _SpoWebSetCommand_initValidators = function _SpoWebSetCommand_initValidators() {
139
146
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
140
147
  const isValidSharePointUrl = validation_1.validation.isValidSharePointUrl(args.options.url);
@@ -167,6 +167,7 @@ exports.default = {
167
167
  NAVIGATION_NODE_ADD: `${prefix} navigation node add`,
168
168
  NAVIGATION_NODE_LIST: `${prefix} navigation node list`,
169
169
  NAVIGATION_NODE_REMOVE: `${prefix} navigation node remove`,
170
+ NAVIGATION_NODE_SET: `${prefix} navigation node set`,
170
171
  ORGASSETSLIBRARY_ADD: `${prefix} orgassetslibrary add`,
171
172
  ORGASSETSLIBRARY_LIST: `${prefix} orgassetslibrary list`,
172
173
  ORGASSETSLIBRARY_REMOVE: `${prefix} orgassetslibrary remove`,
@@ -79,7 +79,7 @@ class TeamsMeetingListCommand extends GraphCommand_1.default {
79
79
  }
80
80
  const res = yield odata_1.odata.getAllItems(requestUrl);
81
81
  const resFiltered = res.filter(y => y.isOnlineMeeting);
82
- if (!args.options.output || args.options.output === 'json') {
82
+ if (!args.options.output || !Cli_1.Cli.shouldTrimOutput(args.options.output)) {
83
83
  logger.log(resFiltered);
84
84
  }
85
85
  else {
@@ -47,7 +47,7 @@ class TeamsTeamAppListCommand extends GraphCommand_1.default {
47
47
  }
48
48
  const teamId = yield this.getTeamId(args);
49
49
  const res = yield odata_1.odata.getAllItems(`${this.resource}/v1.0/teams/${teamId}/installedApps?$expand=teamsApp,teamsAppDefinition`);
50
- if (args.options.output === 'json') {
50
+ if (!Cli_1.Cli.shouldTrimOutput(args.options.output)) {
51
51
  logger.log(res);
52
52
  }
53
53
  else {
@@ -15,6 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  };
16
16
  var _TeamsUserAppListCommand_instances, _TeamsUserAppListCommand_initTelemetry, _TeamsUserAppListCommand_initOptions, _TeamsUserAppListCommand_initValidators, _TeamsUserAppListCommand_initOptionSets;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ const Cli_1 = require("../../../../cli/Cli");
18
19
  const request_1 = require("../../../../request");
19
20
  const formatting_1 = require("../../../../utils/formatting");
20
21
  const odata_1 = require("../../../../utils/odata");
@@ -47,7 +48,7 @@ class TeamsUserAppListCommand extends GraphCommand_1.default {
47
48
  const appId = userAppId.substr(userAppId.indexOf("##") + 2, userAppId.length - userId.length - 2);
48
49
  i.appId = appId;
49
50
  });
50
- if (args.options.output === 'json') {
51
+ if (!Cli_1.Cli.shouldTrimOutput(args.options.output)) {
51
52
  logger.log(items);
52
53
  }
53
54
  else {
@@ -15,6 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  };
16
16
  var _TodoTaskGetCommand_instances, _TodoTaskGetCommand_initTelemetry, _TodoTaskGetCommand_initOptions, _TodoTaskGetCommand_initOptionSets;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ const Cli_1 = require("../../../../cli/Cli");
18
19
  const request_1 = require("../../../../request");
19
20
  const GraphCommand_1 = require("../../../base/GraphCommand");
20
21
  const commands_1 = require("../../commands");
@@ -67,7 +68,7 @@ class TodoTaskGetCommand extends GraphCommand_1.default {
67
68
  responseType: 'json'
68
69
  };
69
70
  const item = yield request_1.default.get(requestOptions);
70
- if (args.options.output === 'json') {
71
+ if (!Cli_1.Cli.shouldTrimOutput(args.options.output)) {
71
72
  logger.log(item);
72
73
  }
73
74
  else {
@@ -15,6 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  };
16
16
  var _TodoTaskListCommand_instances, _TodoTaskListCommand_initTelemetry, _TodoTaskListCommand_initOptions, _TodoTaskListCommand_initOptionSets;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ const Cli_1 = require("../../../../cli/Cli");
18
19
  const request_1 = require("../../../../request");
19
20
  const odata_1 = require("../../../../utils/odata");
20
21
  const GraphCommand_1 = require("../../../base/GraphCommand");
@@ -62,7 +63,7 @@ class TodoTaskListCommand extends GraphCommand_1.default {
62
63
  const listId = yield this.getTodoListId(args);
63
64
  const endpoint = `${this.resource}/v1.0/me/todo/lists/${listId}/tasks`;
64
65
  const items = yield odata_1.odata.getAllItems(endpoint);
65
- if (args.options.output === 'json') {
66
+ if (!Cli_1.Cli.shouldTrimOutput(args.options.output)) {
66
67
  logger.log(items);
67
68
  }
68
69
  else {
@@ -15,6 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  };
16
16
  var _YammerSearchCommand_instances, _YammerSearchCommand_initTelemetry, _YammerSearchCommand_initOptions, _YammerSearchCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ const Cli_1 = require("../../../cli/Cli");
18
19
  const request_1 = require("../../../request");
19
20
  const formatting_1 = require("../../../utils/formatting");
20
21
  const YammerCommand_1 = require("../../base/YammerCommand");
@@ -129,7 +130,7 @@ class YammerSearchCommand extends YammerCommand_1.default {
129
130
  this.users = [];
130
131
  try {
131
132
  yield this.getAllItems(logger, args, 1);
132
- if (args.options.output === 'json') {
133
+ if (!Cli_1.Cli.shouldTrimOutput(args.options.output)) {
133
134
  logger.log({
134
135
  summary: this.summary,
135
136
  messages: this.messages,
@@ -41,17 +41,17 @@ exports.planner = {
41
41
  * Get all Planner plans for a specific group.
42
42
  * @param groupId Group ID.
43
43
  */
44
- getPlansByGroupId(groupId) {
45
- return odata_1.odata.getAllItems(`${graphResource}/v1.0/groups/${groupId}/planner/plans`, 'none');
44
+ getPlansByGroupId(groupId, metadata = 'none') {
45
+ return odata_1.odata.getAllItems(`${graphResource}/v1.0/groups/${groupId}/planner/plans`, metadata);
46
46
  },
47
47
  /**
48
48
  * Get Planner plan by title in a specific group.
49
49
  * @param title Title of the Planner plan. Case insensitive.
50
50
  * @param groupId Owner group ID .
51
51
  */
52
- getPlanByTitle(title, groupId) {
52
+ getPlanByTitle(title, groupId, metadata = 'none') {
53
53
  return __awaiter(this, void 0, void 0, function* () {
54
- const plans = yield this.getPlansByGroupId(groupId);
54
+ const plans = yield this.getPlansByGroupId(groupId, metadata);
55
55
  const filteredPlans = plans.filter(p => p.title && p.title.toLowerCase() === title.toLowerCase());
56
56
  if (!filteredPlans.length) {
57
57
  throw Error(`The specified plan '${title}' does not exist.`);
@@ -23,6 +23,7 @@ m365 aad app list
23
23
  ## Response
24
24
 
25
25
  === "JSON"
26
+
26
27
  ```json
27
28
  [
28
29
  {
@@ -136,6 +137,7 @@ m365 aad app list
136
137
  ```
137
138
 
138
139
  === "Text"
140
+
139
141
  ```text
140
142
  appId id displayName signInAudience
141
143
  ------------------------------------ ------------------------------------ ----------------------------------------------------------------------- ----------------------------------
@@ -143,6 +145,7 @@ m365 aad app list
143
145
  ```
144
146
 
145
147
  === "CSV"
148
+
146
149
  ```csv
147
150
  appId,id,displayName,signInAudience
148
151
  61ed4fab-a861-4307-bb87-a6a53dbe39f5,ff2798f7-1c7a-4607-8a7b-3d5e0c18c756,TestAppPermissions,AzureADMyOrg
@@ -83,6 +83,6 @@ Change password of the currently logged in user
83
83
  m365 aad user set --objectId 1caf7dcd-7e83-4c3a-94f7-932a1299c844 --currentPassword SLBF5gnRtyYc --newPassword 6NLUId79Lc24
84
84
  ```
85
85
 
86
- ### Response
86
+ ## Response
87
87
 
88
88
  The command won't return a response on success.
@@ -16,6 +16,15 @@ m365 flow run list [options]
16
16
  `-e, --environmentName <environmentName>`
17
17
  : The name of the environment to which the flow belongs
18
18
 
19
+ `--status [status]`
20
+ : Filter the results to only flow runs with a given status: `Succeeded`, `Running`, `Failed` or `Cancelled`. By default all flow runs are listed.
21
+
22
+ `--triggerStartTime [triggerStartTime]`
23
+ : Time indicating the inclusive start of a time range of flow runs to return. This should be defined as a valid ISO 8601 string (2021-12-16T18:28:48.6964197Z).
24
+
25
+ `--triggerEndTime [triggerEndTime]`
26
+ : Time indicating the exclusive end of a time range of flow runs to return. This should be defined as a valid ISO 8601 string (2021-12-16T18:28:48.6964197Z).
27
+
19
28
  --8<-- "docs/cmd/_global.md"
20
29
 
21
30
  ## Remarks
@@ -35,6 +44,18 @@ List runs of the specified Microsoft Flow
35
44
  m365 flow run list --environmentName Default-d87a7535-dd31-4437-bfe1-95340acd55c5 --flowName 5923cb07-ce1a-4a5c-ab81-257ce820109a
36
45
  ```
37
46
 
47
+ List runs of the specified Microsoft Flow with a specific status
48
+
49
+ ```sh
50
+ m365 flow run list --environmentName Default-d87a7535-dd31-4437-bfe1-95340acd55c5 --flowName 5923cb07-ce1a-4a5c-ab81-257ce820109a --status Running
51
+ ```
52
+
53
+ List runs of the specified Microsoft Flow between a specific time range
54
+
55
+ ```sh
56
+ m365 flow run list --environmentName Default-d87a7535-dd31-4437-bfe1-95340acd55c5 --flowName 5923cb07-ce1a-4a5c-ab81-257ce820109a --triggerStartTime 2023-01-21T18:19:00Z --triggerEndTime 2023-01-22T00:00:00Z
57
+ ```
58
+
38
59
  ## Response
39
60
 
40
61
  ### Standard response
@@ -14,10 +14,13 @@ m365 planner plan add [options]
14
14
  : Title of the plan to add.
15
15
 
16
16
  `--ownerGroupId [ownerGroupId]`
17
- : ID of the Group that owns the plan. A valid group must exist before this option can be set. Specify either `ownerGroupId` or `ownerGroupName` but not both.
17
+ : ID of the Group that owns the plan. A valid group must exist before this option can be set. Specify either `ownerGroupId`, `ownerGroupName` or `rosterId`.
18
18
 
19
19
  `--ownerGroupName [ownerGroupName]`
20
- : Name of the Group that owns the plan. A valid group must exist before this option can be set. Specify either `ownerGroupId` or `ownerGroupName` but not both.
20
+ : Name of the Group that owns the plan. A valid group must exist before this option can be set. Specify either `ownerGroupId`, `ownerGroupName` or `rosterId`.
21
+
22
+ `--rosterId [rosterId]`
23
+ : ID of the Planner Roster. Specify either `ownerGroupId`, `ownerGroupName` or `rosterId`.
21
24
 
22
25
  `--shareWithUserIds [shareWithUserIds]`
23
26
  : The comma-separated IDs of the users with whom you want to share the plan. Specify either `shareWithUserIds` or `shareWithUserNames` but not both.
@@ -29,23 +32,31 @@ m365 planner plan add [options]
29
32
 
30
33
  ## Remarks
31
34
 
32
- Related to the options `--shareWithUserIds` and `--shareWithUserNames`. If you are leveraging Microsoft 365 groups, use the `aad o365group user` commands to manage group membership to share the [group's](https://pnp.github.io/cli-microsoft365/cmd/aad/o365group/o365group-user-add/) plan. You can also add existing members of the group to this collection though it is not required for them to access the plan owned by the group.
35
+ - Related to the options `--shareWithUserIds` and `--shareWithUserNames`. If you are leveraging Microsoft 365 groups, use the `aad o365group user` commands to manage group membership to share the [group's](https://pnp.github.io/cli-microsoft365/cmd/aad/o365group/o365group-user-add/) plan. You can also add existing members of the group to this collection though it is not required for them to access the plan owned by the group.
36
+
37
+ - Hint: Unlike for groups, a Planner Roster can contain only 1 plan.
33
38
 
34
39
  ## Examples
35
40
 
36
- Adds a Microsoft Planner plan with the name _My Planner Plan_ for Group _233e43d0-dc6a-482e-9b4e-0de7a7bce9b4_
41
+ Adds a Microsoft Planner plan with a Group by id
37
42
 
38
43
  ```sh
39
44
  m365 planner plan add --title 'My Planner Plan' --ownerGroupId '233e43d0-dc6a-482e-9b4e-0de7a7bce9b4'
40
45
  ```
41
46
 
42
- Adds a Microsoft Planner plan with the name _My Planner Plan_ for Group _My Planner Group_
47
+ Adds a Microsoft Planner plan with with a Group by name
43
48
 
44
49
  ```sh
45
50
  m365 planner plan add --title 'My Planner Plan' --ownerGroupName 'My Planner Group'
46
51
  ```
47
52
 
48
- Adds a Microsoft Planner plan with the name _My Planner Plan_ for Group _My Planner Group_ and share it with the users _Allan.Carroll@contoso.com_ and _Ida.Stevens@contoso.com_
53
+ Adds a Microsoft Planner plan with a Roster by id
54
+
55
+ ```sh
56
+ m365 planner plan add --title 'My Planner Plan' --rosterId 'tYqYlNd6eECmsNhN_fcq85cAGAnd'
57
+ ```
58
+
59
+ Adds a Microsoft Planner plan with with a Group by name and share it with the given users
49
60
 
50
61
  ```sh
51
62
  m365 planner plan add --title 'My Planner Plan' --ownerGroupName 'My Planner Group' --shareWithUserNames 'Allan.Carroll@contoso.com,Ida.Stevens@contoso.com'
@@ -27,6 +27,10 @@ m365 planner plan remove [options]
27
27
 
28
28
  --8<-- "docs/cmd/_global.md"
29
29
 
30
+ ## Remarks
31
+
32
+ If you wish to delete a Planner plan contained within a Planner Roster, you'll have to remove the roster using [planner roster remove](../roster/roster-remove.md).
33
+
30
34
  ## Examples
31
35
 
32
36
  Removes the Microsoft Planner plan by ID
@@ -0,0 +1,60 @@
1
+ # planner roster add
2
+
3
+ Creates a new Microsoft Planner Roster
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 planner roster add [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ --8<-- "docs/cmd/_global.md"
14
+
15
+ ## Remarks
16
+
17
+ !!! attention
18
+ The Roster will be automatically deleted when it doesn't contain a plan 24 hours after its creation. Membership information will be completely erased within 30 days of this deletion.
19
+
20
+ !!! attention
21
+ This command is based on an API that is currently in preview and is subject to change once the API reached general availability.
22
+
23
+ !!! important
24
+ To be able to create a new Roster, the Planner Roster creation tenant setting should be enabled. Use the [planner tenant settings list](../tenant/tenant-settings-list.md) command to check if this setting is enabled for your tenant.
25
+
26
+ ## Examples
27
+
28
+ Creates a new Microsoft Planner Roster
29
+
30
+ ```sh
31
+ m365 planner roster add
32
+ ```
33
+
34
+ ## Response
35
+
36
+ === "JSON"
37
+
38
+ ```json
39
+ {
40
+ "id": "e6fmvM_yi0OJgvmepE5uj5cAE6qX",
41
+ "assignedSensitivityLabel": null
42
+ }
43
+ ```
44
+
45
+ === "Text"
46
+
47
+ ```text
48
+ assignedSensitivityLabel: null
49
+ id : e6fmvM_yi0OJgvmepE5uj5cAE6qX
50
+ ```
51
+
52
+ === "CSV"
53
+
54
+ ```csv
55
+ id,assignedSensitivityLabel
56
+ e6fmvM_yi0OJgvmepE5uj5cAE6qX,
57
+ ```
58
+
59
+ ## Additional information
60
+ Rosters are a new type of container for Microsoft Planner plans. This enables users to create a Planner plan without the need to create a new Microsoft 365 group (with a mailbox, SharePoint site, ...). Access to Roster-contained plans is controlled by the members on the Roster. A Planner Roster can contain only 1 plan.
@@ -0,0 +1,48 @@
1
+ # planner roster remove
2
+
3
+ Removes a Microsoft Planner Roster
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 planner roster remove [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ `--id <id>`
14
+ : ID of the Planner Roster.
15
+
16
+ `--confirm`
17
+ : Don't prompt for confirmation.
18
+
19
+ --8<-- "docs/cmd/_global.md"
20
+
21
+ ## Remarks
22
+
23
+ !!! attention
24
+ Deleting a Planner Roster will also delete the plan within the Roster.
25
+
26
+ !!! attention
27
+ This command is based on an API that is currently in preview and is subject to change once the API reached general availability.
28
+
29
+ ## Examples
30
+
31
+ Removes a Planner Roster
32
+
33
+ ```sh
34
+ m365 planner roster remove --id tYqYlNd6eECmsNhN_fcq85cAGAnd
35
+ ```
36
+
37
+ Removes a Planner Roster without confirmation prompt
38
+
39
+ ```sh
40
+ m365 planner roster remove --id tYqYlNd6eECmsNhN_fcq85cAGAnd --confirm
41
+ ```
42
+
43
+ ## Response
44
+
45
+ The command won't return a response on success.
46
+
47
+ ## Additional information
48
+ Rosters are a new type of container for Microsoft Planner plans. This enables users to create a Planner plan without the need to create a new Microsoft 365 group (with a mailbox, SharePoint site, ...). Access to Roster-contained plans is controlled by the members on the Roster. A Planner Roster can contain only 1 plan.
@@ -0,0 +1,100 @@
1
+ # purview retentioneventtype get
2
+
3
+ Get a retention event type
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 purview retentioneventtype get [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ `-i, --id <id>`
14
+ : The Id of the retention event type.
15
+
16
+ --8<-- "docs/cmd/_global.md"
17
+
18
+ ## Examples
19
+
20
+ Get a retention event type by id
21
+
22
+ ```sh
23
+ m365 purview retentioneventtype get --id c37d695e-d581-4ae9-82a0-9364eba4291e
24
+ ```
25
+
26
+ ## Remarks
27
+
28
+ !!! attention
29
+ This command is based on an API that is currently in preview and is subject to change once the API reached general availability.
30
+
31
+ ## More information
32
+
33
+ This command is part of a series of commands that have to do with event-based retention. Event-based retention is about starting a retention period when a specific event occurs, instead of the moment a document was labeled or created.
34
+
35
+ [Read more on event-based retention here](https://learn.microsoft.com/en-us/microsoft-365/compliance/event-driven-retention?view=o365-worldwide)
36
+
37
+ ## Response
38
+
39
+ === "JSON"
40
+
41
+ ```json
42
+ {
43
+ "displayName": "Test retention event type",
44
+ "description": "Description for the retention event type",
45
+ "createdDateTime": "2023-01-29T09:30:42Z",
46
+ "lastModifiedDateTime": "2023-01-29T09:30:42Z",
47
+ "id": "c37d695e-d581-4ae9-82a0-9364eba4291e",
48
+ "createdBy": {
49
+ "user": {
50
+ "id": null,
51
+ "displayName": "John Doe"
52
+ }
53
+ },
54
+ "lastModifiedBy": {
55
+ "user": {
56
+ "id": null,
57
+ "displayName": "John Doe"
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ === "Text"
64
+
65
+ ```text
66
+ createdBy : {"user":{"id":null,"displayName":"John Doe"}}
67
+ createdDateTime : 2023-01-29T09:30:42Z
68
+ description : Description for the retention event type
69
+ displayName : Test retention event type
70
+ id : c37d695e-d581-4ae9-82a0-9364eba4291e
71
+ lastModifiedBy : {"user":{"id":null,"displayName":"John Doe"}}
72
+ lastModifiedDateTime: 2023-01-29T09:30:42Z
73
+ ```
74
+
75
+ === "CSV"
76
+
77
+ ```csv
78
+ displayName,description,createdDateTime,lastModifiedDateTime,id,createdBy,lastModifiedBy
79
+ Test retention event type,Description for the retention event type,2023-01-29T09:30:42Z,2023-01-29T09:30:42Z,c37d695e-d581-4ae9-82a0-9364eba4291e,"{""user"":{""id"":null,""displayName"":""John Doe""}}","{""user"":{""id"":null,""displayName"":""John Doe""}}"
80
+ ```
81
+
82
+ === "Markdown"
83
+
84
+ ```md
85
+ # purview retentioneventtype get --id "c37d695e-d581-4ae9-82a0-9364eba4291e"
86
+
87
+ Date: 1/29/2023
88
+
89
+ ## Test retention event type (c37d695e-d581-4ae9-82a0-9364eba4291e)
90
+
91
+ Property | Value
92
+ ---------|-------
93
+ displayName | Test retention event type
94
+ description | Description for the retention event type
95
+ createdDateTime | 2023-01-29T09:30:42Z
96
+ lastModifiedDateTime | 2023-01-29T09:30:42Z
97
+ id | c37d695e-d581-4ae9-82a0-9364eba4291e
98
+ createdBy | {"user":{"id":null,"displayName":"John Doe"}}
99
+ lastModifiedBy | {"user":{"id":null,"displayName":"John Doe"}}
100
+ ```
@@ -0,0 +1,65 @@
1
+ # spfx project permissions grant
2
+
3
+ Grant API permissions defined in the current SPFx project
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 spfx project permissions grant [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ --8<-- "docs/cmd/_global.md"
14
+
15
+ ## Remarks
16
+
17
+ !!! important
18
+ Run this command in the folder where the project is located from where you want to grant the permissions.
19
+
20
+ This command grant the permissions defined in: _package-solution.json_.
21
+
22
+ ## Examples
23
+
24
+ Grant API permissions requested in the current SPFx project
25
+
26
+ ```sh
27
+ m365 spfx project permissions grant
28
+ ```
29
+
30
+ ## Response
31
+
32
+ === "JSON"
33
+
34
+ ```json
35
+ {
36
+ "ClientId": "6004a642-185c-479a-992a-15d1c23e2229",
37
+ "ConsentType": "AllPrincipals",
38
+ "IsDomainIsolated": false,
39
+ "ObjectId": "QqYEYFwYmkeZKhXRwj4iKRcAa6TiIbFNvGnKY1dqONY",
40
+ "PackageName": null,
41
+ "Resource": "Microsoft Graph",
42
+ "ResourceId": "a46b0017-21e2-4db1-bc69-ca63576a38d6",
43
+ "Scope": "Mail.Read"
44
+ }
45
+ ```
46
+
47
+ === "Text"
48
+
49
+ ```text
50
+ ClientId : 6004a642-185c-479a-992a-15d1c23e2229
51
+ ConsentType : AllPrincipals
52
+ IsDomainIsolated: false
53
+ ObjectId : QqYEYFwYmkeZKhXRwj4iKRcAa6TiIbFNvGnKY1dqONY
54
+ PackageName : null
55
+ Resource : Microsoft Graph
56
+ ResourceId : a46b0017-21e2-4db1-bc69-ca63576a38d6
57
+ Scope : Mail.Read
58
+ ```
59
+
60
+ === "CSV"
61
+
62
+ ```csv
63
+ ClientId,ConsentType,IsDomainIsolated,ObjectId,PackageName,Resource,ResourceId,Scope
64
+ 6004a642-185c-479a-992a-15d1c23e2229,AllPrincipals,,QqYEYFwYmkeZKhXRwj4iKRcAa6TiIbFNvGnKY1dqONY,,Microsoft Graph,a46b0017-21e2-4db1-bc69-ca63576a38d6,Mail.Read
65
+ ```
@@ -14,10 +14,10 @@ m365 spo listitem attachment list [options]
14
14
  URL of the site from which the item should be retrieved
15
15
 
16
16
  `--listId [listId]`
17
- : ID of the list where the item should be added. Specify either `listTitle`, `listId` or `listUrl`
17
+ : ID of the list where the item should be retrieved. Specify either `listTitle`, `listId` or `listUrl`
18
18
 
19
19
  `--listTitle [listTitle]`
20
- : Title of the list where the item should be added. Specify either `listTitle`, `listId` or `listUrl`
20
+ : Title of the list where the item should be retrieved. Specify either `listTitle`, `listId` or `listUrl`
21
21
 
22
22
  `--listUrl [listUrl]`
23
23
  : Server- or site-relative URL of the list. Specify either `listTitle`, `listId` or `listUrl`
@@ -17,10 +17,10 @@ m365 spo listitem isrecord [options]
17
17
  : The ID of the list item to check if it is a record
18
18
 
19
19
  `-l, --listId [listId]`
20
- : ID of the list where the item should be added. Specify either `listTitle`, `listId` or `listUrl`
20
+ : ID of the list where the item should be checked. Specify either `listTitle`, `listId` or `listUrl`
21
21
 
22
22
  `-t, --listTitle [listTitle]`
23
- : Title of the list where the item should be added. Specify either `listTitle`, `listId` or `listUrl`
23
+ : Title of the list where the item should be checked. Specify either `listTitle`, `listId` or `listUrl`
24
24
 
25
25
  `--listUrl [listUrl]`
26
26
  : Server- or site-relative URL of the list. Specify either `listTitle`, `listId` or `listUrl`
@@ -28,8 +28,15 @@ m365 spo navigation node add [options]
28
28
  `--isExternal`
29
29
  : Set, if the navigation node points to an external URL.
30
30
 
31
+ `--audienceIds [audienceIds]`
32
+ : Comma separated list of group IDs that will be used for audience targeting. The limit is 10 ids per navigation node.
33
+
31
34
  --8<-- "docs/cmd/_global.md"
32
35
 
36
+ ## Remarks
37
+
38
+ To enable/disable audience targeting for the navigation bar, use the [`spo web set`](../web/web-set.md) command.
39
+
33
40
  ## Examples
34
41
 
35
42
  Add a navigation node pointing to a SharePoint page to the top navigation
@@ -50,13 +57,21 @@ Add a navigation node below an existing node
50
57
  m365 spo navigation node add --webUrl https://contoso.sharepoint.com/sites/team-a --parentNodeId 2010 --title About --url /sites/team-s/sitepages/about.aspx
51
58
  ```
52
59
 
60
+ Add a navigation node to the top navigation which is audience targetted
61
+
62
+ ```sh
63
+ m365 spo navigation node add --webUrl https://contoso.sharepoint.com/sites/team-a --location TopNavigationBar --title About --url /sites/team-s/sitepages/about.aspx --audienceIds "7aa4a1ca-4035-4f2f-bac7-7beada59b5ba,4bbf236f-a131-4019-b4a2-315902fcfa3a"
64
+ ```
65
+
53
66
  ## Response
54
67
 
55
68
  === "JSON"
56
69
 
57
70
  ```json
58
71
  {
59
- "AudienceIds": null,
72
+ "AudienceIds": [
73
+ "7aa4a1ca-4035-4f2f-bac7-7beada59b5ba"
74
+ ],
60
75
  "CurrentLCID": 1033,
61
76
  "Id": 2030,
62
77
  "IsDocLib": true,
@@ -71,7 +86,7 @@ m365 spo navigation node add --webUrl https://contoso.sharepoint.com/sites/team-
71
86
  === "Text"
72
87
 
73
88
  ```text
74
- AudienceIds : null
89
+ AudienceIds : ["7aa4a1ca-4035-4f2f-bac7-7beada59b5ba"]
75
90
  CurrentLCID : 1033
76
91
  Id : 2031
77
92
  IsDocLib : true
@@ -86,5 +101,5 @@ m365 spo navigation node add --webUrl https://contoso.sharepoint.com/sites/team-
86
101
 
87
102
  ```csv
88
103
  AudienceIds,CurrentLCID,Id,IsDocLib,IsExternal,IsVisible,ListTemplateType,Title,Url
89
- ,1033,2032,1,1,1,0,Navigation Link,https://contoso.sharepoint.com
104
+ "[""7aa4a1ca-4035-4f2f-bac7-7beada59b5ba""]",1033,2032,1,1,1,0,Navigation Link,https://contoso.sharepoint.com
90
105
  ```