@pnp/cli-microsoft365 6.3.0-beta.4c3b2c9 → 6.3.0-beta.655c566

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 (30) hide show
  1. package/.eslintrc.js +2 -0
  2. package/dist/m365/context/commands/option/option-list.js +54 -0
  3. package/dist/m365/context/commands.js +1 -0
  4. package/dist/m365/planner/commands/plan/plan-set.js +21 -10
  5. package/dist/m365/planner/commands/roster/roster-get.js +61 -0
  6. package/dist/m365/planner/commands.js +1 -0
  7. package/dist/m365/purview/commands/retentionevent/retentionevent-get.js +76 -0
  8. package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +47 -0
  9. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-add.js +77 -0
  10. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-get.js +8 -8
  11. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +44 -0
  12. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-remove.js +97 -0
  13. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-set.js +90 -0
  14. package/dist/m365/purview/commands.js +7 -1
  15. package/dist/m365/spo/commands/listitem/listitem-add.js +2 -1
  16. package/dist/m365/spo/commands/navigation/navigation-node-get.js +73 -0
  17. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-add.js +179 -0
  18. package/dist/m365/spo/commands.js +2 -0
  19. package/docs/docs/cmd/context/option/option-list.md +63 -0
  20. package/docs/docs/cmd/planner/plan/plan-set.md +10 -4
  21. package/docs/docs/cmd/planner/roster/roster-get.md +73 -0
  22. package/docs/docs/cmd/purview/retentionevent/retentionevent-get.md +132 -0
  23. package/docs/docs/cmd/purview/retentionevent/retentionevent-list.md +107 -0
  24. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.md +106 -0
  25. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-list.md +97 -0
  26. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-remove.md +43 -0
  27. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-set.md +43 -0
  28. package/docs/docs/cmd/spo/navigation/navigation-node-get.md +91 -0
  29. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-add.md +59 -0
  30. package/package.json +1 -1
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var _PurviewRetentionEventTypeSetCommand_instances, _PurviewRetentionEventTypeSetCommand_initTelemetry, _PurviewRetentionEventTypeSetCommand_initOptions, _PurviewRetentionEventTypeSetCommand_initValidators;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const Auth_1 = require("../../../../Auth");
19
+ const validation_1 = require("../../../../utils/validation");
20
+ const request_1 = require("../../../../request");
21
+ const GraphCommand_1 = require("../../../base/GraphCommand");
22
+ const commands_1 = require("../../commands");
23
+ const accessToken_1 = require("../../../../utils/accessToken");
24
+ class PurviewRetentionEventTypeSetCommand extends GraphCommand_1.default {
25
+ get name() {
26
+ return commands_1.default.RETENTIONEVENTTYPE_SET;
27
+ }
28
+ get description() {
29
+ return 'Update a retention event type';
30
+ }
31
+ constructor() {
32
+ super();
33
+ _PurviewRetentionEventTypeSetCommand_instances.add(this);
34
+ __classPrivateFieldGet(this, _PurviewRetentionEventTypeSetCommand_instances, "m", _PurviewRetentionEventTypeSetCommand_initTelemetry).call(this);
35
+ __classPrivateFieldGet(this, _PurviewRetentionEventTypeSetCommand_instances, "m", _PurviewRetentionEventTypeSetCommand_initOptions).call(this);
36
+ __classPrivateFieldGet(this, _PurviewRetentionEventTypeSetCommand_instances, "m", _PurviewRetentionEventTypeSetCommand_initValidators).call(this);
37
+ }
38
+ commandAction(logger, args) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ if (accessToken_1.accessToken.isAppOnlyAccessToken(Auth_1.default.service.accessTokens[this.resource].accessToken)) {
41
+ this.handleError('This command does not support application permissions.');
42
+ }
43
+ if (this.verbose) {
44
+ logger.log(`Updating retention event type with id ${args.options.id}`);
45
+ }
46
+ try {
47
+ const requestBody = {
48
+ description: args.options.description
49
+ };
50
+ const requestOptions = {
51
+ url: `${this.resource}/beta/security/triggerTypes/retentionEventTypes/${args.options.id}`,
52
+ headers: {
53
+ accept: 'application/json'
54
+ },
55
+ responseType: 'json',
56
+ data: requestBody
57
+ };
58
+ yield request_1.default.patch(requestOptions);
59
+ }
60
+ catch (err) {
61
+ this.handleRejectedODataJsonPromise(err);
62
+ }
63
+ });
64
+ }
65
+ }
66
+ _PurviewRetentionEventTypeSetCommand_instances = new WeakSet(), _PurviewRetentionEventTypeSetCommand_initTelemetry = function _PurviewRetentionEventTypeSetCommand_initTelemetry() {
67
+ this.telemetry.push((args) => {
68
+ Object.assign(this.telemetryProperties, {
69
+ description: typeof args.options.description !== 'undefined'
70
+ });
71
+ });
72
+ }, _PurviewRetentionEventTypeSetCommand_initOptions = function _PurviewRetentionEventTypeSetCommand_initOptions() {
73
+ this.options.unshift({
74
+ option: '-i, --id <id>'
75
+ }, {
76
+ option: '-d, --description [description]'
77
+ });
78
+ }, _PurviewRetentionEventTypeSetCommand_initValidators = function _PurviewRetentionEventTypeSetCommand_initValidators() {
79
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
80
+ if (!validation_1.validation.isValidGuid(args.options.id)) {
81
+ return `'${args.options.id}' is not a valid GUID.`;
82
+ }
83
+ if (!args.options.description) {
84
+ return 'Specify at least one option to update.';
85
+ }
86
+ return true;
87
+ }));
88
+ };
89
+ module.exports = new PurviewRetentionEventTypeSetCommand();
90
+ //# sourceMappingURL=retentioneventtype-set.js.map
@@ -2,8 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const prefix = 'purview';
4
4
  exports.default = {
5
- RETENTIONEVENTTYPE_GET: `${prefix} retentioneventtype get`,
6
5
  AUDITLOG_LIST: `${prefix} auditlog list`,
6
+ RETENTIONEVENT_GET: `${prefix} retentionevent get`,
7
+ RETENTIONEVENT_LIST: `${prefix} retentionevent list`,
8
+ RETENTIONEVENTTYPE_ADD: `${prefix} retentioneventtype add`,
9
+ RETENTIONEVENTTYPE_GET: `${prefix} retentioneventtype get`,
10
+ RETENTIONEVENTTYPE_LIST: `${prefix} retentioneventtype list`,
11
+ RETENTIONEVENTTYPE_REMOVE: `${prefix} retentioneventtype remove`,
12
+ RETENTIONEVENTTYPE_SET: `${prefix} retentioneventtype set`,
7
13
  RETENTIONLABEL_ADD: `${prefix} retentionlabel add`,
8
14
  RETENTIONLABEL_GET: `${prefix} retentionlabel get`,
9
15
  RETENTIONLABEL_LIST: `${prefix} retentionlabel list`,
@@ -176,7 +176,8 @@ class SpoListItemAddCommand extends SpoCommand_1.default {
176
176
  'folder',
177
177
  'debug',
178
178
  'verbose',
179
- 'output'
179
+ 'output',
180
+ '_'
180
181
  ];
181
182
  Object.keys(options).forEach(key => {
182
183
  if (excludeOptions.indexOf(key) === -1) {
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var _SpoNavigationNodeGetCommand_instances, _SpoNavigationNodeGetCommand_initOptions, _SpoNavigationNodeGetCommand_initValidators;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const request_1 = require("../../../../request");
19
+ const validation_1 = require("../../../../utils/validation");
20
+ const SpoCommand_1 = require("../../../base/SpoCommand");
21
+ const commands_1 = require("../../commands");
22
+ class SpoNavigationNodeGetCommand extends SpoCommand_1.default {
23
+ get name() {
24
+ return commands_1.default.NAVIGATION_NODE_GET;
25
+ }
26
+ get description() {
27
+ return 'Retrieve information about a specific navigation node';
28
+ }
29
+ constructor() {
30
+ super();
31
+ _SpoNavigationNodeGetCommand_instances.add(this);
32
+ __classPrivateFieldGet(this, _SpoNavigationNodeGetCommand_instances, "m", _SpoNavigationNodeGetCommand_initOptions).call(this);
33
+ __classPrivateFieldGet(this, _SpoNavigationNodeGetCommand_instances, "m", _SpoNavigationNodeGetCommand_initValidators).call(this);
34
+ }
35
+ commandAction(logger, args) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ if (this.verbose) {
38
+ logger.logToStderr(`Retrieving information about navigation node with id ${args.options.id}`);
39
+ }
40
+ const requestOptions = {
41
+ url: `${args.options.webUrl}/_api/web/navigation/GetNodeById(${args.options.id})`,
42
+ headers: {
43
+ 'accept': 'application/json;odata=nometadata'
44
+ },
45
+ responseType: 'json'
46
+ };
47
+ try {
48
+ const listInstance = yield request_1.default.get(requestOptions);
49
+ logger.log(listInstance);
50
+ }
51
+ catch (err) {
52
+ this.handleRejectedODataJsonPromise(err);
53
+ }
54
+ });
55
+ }
56
+ }
57
+ _SpoNavigationNodeGetCommand_instances = new WeakSet(), _SpoNavigationNodeGetCommand_initOptions = function _SpoNavigationNodeGetCommand_initOptions() {
58
+ this.options.unshift({
59
+ option: '-u, --webUrl <webUrl>'
60
+ }, {
61
+ option: '--id <id>'
62
+ });
63
+ }, _SpoNavigationNodeGetCommand_initValidators = function _SpoNavigationNodeGetCommand_initValidators() {
64
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
65
+ const id = parseInt(args.options.id);
66
+ if (isNaN(id)) {
67
+ return `${args.options.id} is not a valid number`;
68
+ }
69
+ return validation_1.validation.isValidSharePointUrl(args.options.webUrl);
70
+ }));
71
+ };
72
+ module.exports = new SpoNavigationNodeGetCommand();
73
+ //# sourceMappingURL=navigation-node-get.js.map
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var _SpoTenantApplicationCustomizerAddCommand_instances, _SpoTenantApplicationCustomizerAddCommand_initTelemetry, _SpoTenantApplicationCustomizerAddCommand_initOptions, _SpoTenantApplicationCustomizerAddCommand_initValidators;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const validation_1 = require("../../../../utils/validation");
19
+ const SpoCommand_1 = require("../../../base/SpoCommand");
20
+ const commands_1 = require("../../commands");
21
+ const Cli_1 = require("../../../../cli/Cli");
22
+ const spoTenantAppCatalogUrlGetCommand = require("../tenant/tenant-appcatalogurl-get");
23
+ const spoListItemAddCommand = require("../listitem/listitem-add");
24
+ const spoListItemListCommand = require("../listitem/listitem-list");
25
+ const urlUtil_1 = require("../../../../utils/urlUtil");
26
+ class SpoTenantApplicationCustomizerAddCommand extends SpoCommand_1.default {
27
+ get name() {
28
+ return commands_1.default.TENANT_APPLICATIONCUSTOMIZER_ADD;
29
+ }
30
+ get description() {
31
+ return 'Add an application customizer as a tenant wide extension.';
32
+ }
33
+ constructor() {
34
+ super();
35
+ _SpoTenantApplicationCustomizerAddCommand_instances.add(this);
36
+ __classPrivateFieldGet(this, _SpoTenantApplicationCustomizerAddCommand_instances, "m", _SpoTenantApplicationCustomizerAddCommand_initTelemetry).call(this);
37
+ __classPrivateFieldGet(this, _SpoTenantApplicationCustomizerAddCommand_instances, "m", _SpoTenantApplicationCustomizerAddCommand_initOptions).call(this);
38
+ __classPrivateFieldGet(this, _SpoTenantApplicationCustomizerAddCommand_instances, "m", _SpoTenantApplicationCustomizerAddCommand_initValidators).call(this);
39
+ }
40
+ commandAction(logger, args) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ try {
43
+ const appCatalogUrl = yield this.getAppCatalogUrl(logger);
44
+ const componentManifest = yield this.getComponentManifest(appCatalogUrl, args.options.clientSideComponentId, logger);
45
+ const clientComponentManifest = JSON.parse(componentManifest.ClientComponentManifest);
46
+ if (clientComponentManifest.extensionType !== "ApplicationCustomizer") {
47
+ throw `The extension type of this component is not of type 'ApplicationCustomizer' but of type '${clientComponentManifest.extensionType}'`;
48
+ }
49
+ const solution = yield this.getSolutionFromAppCatalog(appCatalogUrl, componentManifest.SolutionId, logger);
50
+ if (!solution.ContainsTenantWideExtension) {
51
+ throw `The solution does not contain an extension that can be deployed to all sites. Make sure that you've entered the correct component Id.`;
52
+ }
53
+ else if (!solution.SkipFeatureDeployment) {
54
+ throw 'The solution has not been deployed to all sites. Make sure to deploy this solution to all sites.';
55
+ }
56
+ yield this.addTenantWideExtension(appCatalogUrl, args.options, logger);
57
+ }
58
+ catch (err) {
59
+ this.handleRejectedODataJsonPromise(err);
60
+ }
61
+ });
62
+ }
63
+ getAppCatalogUrl(logger) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ const spoTenantAppCatalogUrlGetCommandOutput = yield Cli_1.Cli.executeCommandWithOutput(spoTenantAppCatalogUrlGetCommand, { options: { output: 'text', _: [] } });
66
+ if (this.verbose) {
67
+ logger.logToStderr(spoTenantAppCatalogUrlGetCommandOutput.stderr);
68
+ }
69
+ const appCatalogUrl = spoTenantAppCatalogUrlGetCommandOutput.stdout;
70
+ if (!appCatalogUrl) {
71
+ throw 'Cannot add tenant-wide application customizer as app catalog cannot be found';
72
+ }
73
+ if (this.verbose) {
74
+ logger.logToStderr(`Got tenant app catalog url: ${appCatalogUrl}`);
75
+ }
76
+ return appCatalogUrl;
77
+ });
78
+ }
79
+ getComponentManifest(appCatalogUrl, clientSideComponentId, logger) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ if (this.verbose) {
82
+ logger.logToStderr('Retrieving component manifest item from the ComponentManifests list on the app catalog site so that we get the solution id');
83
+ }
84
+ const camlQuery = `<View><ViewFields><FieldRef Name='ClientComponentId'></FieldRef><FieldRef Name='SolutionId'></FieldRef><FieldRef Name='ClientComponentManifest'></FieldRef></ViewFields><Query><Where><Eq><FieldRef Name='ClientComponentId' /><Value Type='Guid'>${clientSideComponentId}</Value></Eq></Where></Query></View>`;
85
+ const commandOptions = {
86
+ webUrl: appCatalogUrl,
87
+ listUrl: `${urlUtil_1.urlUtil.getServerRelativeSiteUrl(appCatalogUrl)}/Lists/ComponentManifests`,
88
+ camlQuery: camlQuery,
89
+ verbose: this.verbose,
90
+ debug: this.debug,
91
+ output: 'json'
92
+ };
93
+ const output = yield Cli_1.Cli.executeCommandWithOutput(spoListItemListCommand, { options: Object.assign(Object.assign({}, commandOptions), { _: [] }) });
94
+ if (this.verbose) {
95
+ logger.logToStderr(output.stderr);
96
+ }
97
+ const outputParsed = JSON.parse(output.stdout);
98
+ if (outputParsed.length === 0) {
99
+ throw 'No component found with the specified clientSideComponentId found in the component manifest list. Make sure that the application is added to the application catalog';
100
+ }
101
+ return outputParsed[0];
102
+ });
103
+ }
104
+ getSolutionFromAppCatalog(appCatalogUrl, solutionId, logger) {
105
+ return __awaiter(this, void 0, void 0, function* () {
106
+ if (this.verbose) {
107
+ logger.logToStderr(`Retrieving solution with id ${solutionId} from the application catalog`);
108
+ }
109
+ const camlQuery = `<View><ViewFields><FieldRef Name='SkipFeatureDeployment'></FieldRef><FieldRef Name='ContainsTenantWideExtension'></FieldRef></ViewFields><Query><Where><Eq><FieldRef Name='AppProductID' /><Value Type='Guid'>${solutionId}</Value></Eq></Where></Query></View>`;
110
+ const commandOptions = {
111
+ webUrl: appCatalogUrl,
112
+ listUrl: `${urlUtil_1.urlUtil.getServerRelativeSiteUrl(appCatalogUrl)}/AppCatalog`,
113
+ camlQuery: camlQuery,
114
+ verbose: this.verbose,
115
+ debug: this.debug,
116
+ output: 'json'
117
+ };
118
+ const output = yield Cli_1.Cli.executeCommandWithOutput(spoListItemListCommand, { options: Object.assign(Object.assign({}, commandOptions), { _: [] }) });
119
+ if (this.verbose) {
120
+ logger.logToStderr(output.stderr);
121
+ }
122
+ const outputParsed = JSON.parse(output.stdout);
123
+ if (outputParsed.length === 0) {
124
+ throw `No component found with the solution id ${solutionId}. Make sure that the solution is available in the app catalog`;
125
+ }
126
+ return outputParsed[0];
127
+ });
128
+ }
129
+ addTenantWideExtension(appCatalogUrl, options, logger) {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ if (this.verbose) {
132
+ logger.logToStderr('Pre-checks finished. Adding tenant wide extension to the TenantWideExtensions list');
133
+ }
134
+ const commandOptions = {
135
+ webUrl: appCatalogUrl,
136
+ listUrl: `${urlUtil_1.urlUtil.getServerRelativeSiteUrl(appCatalogUrl)}/Lists/TenantWideExtensions`,
137
+ Title: options.title,
138
+ TenantWideExtensionComponentId: options.clientSideComponentId,
139
+ TenantWideExtensionLocation: 'ClientSideExtension.ApplicationCustomizer',
140
+ TenantWideExtensionSequence: 0,
141
+ TenantWideExtensionListTemplate: 0,
142
+ TenantWideExtensionComponentProperties: options.clientSideComponentProperties || '',
143
+ TenantWideExtensionWebTemplate: options.webTemplate || '',
144
+ TenantWideExtensionDisabled: false,
145
+ verbose: this.verbose,
146
+ debug: this.debug,
147
+ output: options.output
148
+ };
149
+ yield Cli_1.Cli.executeCommand(spoListItemAddCommand, { options: Object.assign(Object.assign({}, commandOptions), { _: [] }) });
150
+ });
151
+ }
152
+ }
153
+ _SpoTenantApplicationCustomizerAddCommand_instances = new WeakSet(), _SpoTenantApplicationCustomizerAddCommand_initTelemetry = function _SpoTenantApplicationCustomizerAddCommand_initTelemetry() {
154
+ this.telemetry.push((args) => {
155
+ Object.assign(this.telemetryProperties, {
156
+ clientSideComponentProperties: typeof args.options.clientSideComponentProperties !== 'undefined',
157
+ webTemplate: typeof args.options.webTemplate !== 'undefined'
158
+ });
159
+ });
160
+ }, _SpoTenantApplicationCustomizerAddCommand_initOptions = function _SpoTenantApplicationCustomizerAddCommand_initOptions() {
161
+ this.options.unshift({
162
+ option: '-t, --title <title>'
163
+ }, {
164
+ option: '-i, --clientSideComponentId <clientSideComponentId>'
165
+ }, {
166
+ option: '-p, --clientSideComponentProperties [clientSideComponentProperties]'
167
+ }, {
168
+ option: '-w, --webTemplate [webTemplate]'
169
+ });
170
+ }, _SpoTenantApplicationCustomizerAddCommand_initValidators = function _SpoTenantApplicationCustomizerAddCommand_initValidators() {
171
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
172
+ if (!validation_1.validation.isValidGuid(args.options.clientSideComponentId)) {
173
+ return `${args.options.clientSideComponentId} is not a valid GUID`;
174
+ }
175
+ return true;
176
+ }));
177
+ };
178
+ module.exports = new SpoTenantApplicationCustomizerAddCommand();
179
+ //# sourceMappingURL=tenant-applicationcustomizer-add.js.map
@@ -168,6 +168,7 @@ exports.default = {
168
168
  LISTITEM_SET: `${prefix} listitem set`,
169
169
  MAIL_SEND: `${prefix} mail send`,
170
170
  NAVIGATION_NODE_ADD: `${prefix} navigation node add`,
171
+ NAVIGATION_NODE_GET: `${prefix} navigation node get`,
171
172
  NAVIGATION_NODE_LIST: `${prefix} navigation node list`,
172
173
  NAVIGATION_NODE_REMOVE: `${prefix} navigation node remove`,
173
174
  NAVIGATION_NODE_SET: `${prefix} navigation node set`,
@@ -277,6 +278,7 @@ exports.default = {
277
278
  STORAGEENTITY_REMOVE: `${prefix} storageentity remove`,
278
279
  TENANT_APPCATALOG_ADD: `${prefix} tenant appcatalog add`,
279
280
  TENANT_APPCATALOGURL_GET: `${prefix} tenant appcatalogurl get`,
281
+ TENANT_APPLICATIONCUSTOMIZER_ADD: `${prefix} tenant applicationcustomizer add`,
280
282
  TENANT_RECYCLEBINITEM_LIST: `${prefix} tenant recyclebinitem list`,
281
283
  TENANT_RECYCLEBINITEM_REMOVE: `${prefix} tenant recyclebinitem remove`,
282
284
  TENANT_RECYCLEBINITEM_RESTORE: `${prefix} tenant recyclebinitem restore`,
@@ -0,0 +1,63 @@
1
+ # context option list
2
+
3
+ List all options added to the context
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 context option list [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ --8<-- "docs/cmd/_global.md"
14
+
15
+ ## Examples
16
+
17
+ List all options added to the context
18
+
19
+ ```sh
20
+ m365 context option list
21
+ ```
22
+
23
+ ## Response
24
+
25
+ The responses below are an example. The output may differ based on the contents of the context file
26
+
27
+ === "JSON"
28
+
29
+ ```json
30
+ {
31
+ "url": "https://contoso.sharepoint.com",
32
+ "list": "list name"
33
+ }
34
+ ```
35
+
36
+ === "Text"
37
+
38
+ ```text
39
+ list: list name
40
+ url : https://contoso.sharepoint.com
41
+ ```
42
+
43
+ === "CSV"
44
+
45
+ ```csv
46
+ url,list
47
+ https://contoso.sharepoint.com,list name
48
+ ```
49
+
50
+ === "Markdown"
51
+
52
+ ```md
53
+ # context option list
54
+
55
+ Date: 7/2/2023
56
+
57
+ ## https://contoso.sharepoint.com
58
+
59
+ Property | Value
60
+ ---------|-------
61
+ url | https://contoso.sharepoint.com
62
+ list | list name
63
+ ```
@@ -11,16 +11,19 @@ m365 planner plan set [options]
11
11
  ## Options
12
12
 
13
13
  `-i, --id [id]`
14
- : ID of the plan. Specify either `id` or `title` but not both.
14
+ : ID of the plan. Specify either `id`, `title` or `rosterId` but not multiple.
15
15
 
16
16
  `-t, --title [title]`
17
- : Title of the plan. Specify either `id` or `title` but not both.
17
+ : Title of the plan. Specify either `id`, `title` or `rosterId` but not multiple.
18
+
19
+ `--rosterId [rosterId]`
20
+ : ID of the Planner Roster. Specify either `id`, `title` or `rosterId` but not multiple.
18
21
 
19
22
  `--ownerGroupId [ownerGroupId]`
20
- : ID of the group to which the plan belongs. Specify either `ownerGroupId` or `ownerGroupName` when using `title`.
23
+ : ID of the group to which the plan belongs. Specify either `ownerGroupId` or `ownerGroupName` when using `title` but not both.
21
24
 
22
25
  `--ownerGroupName [ownerGroupName]`
23
- : Name of the Group to which the plan belongs. Specify either `ownerGroupId` or `ownerGroupName` when using `title`.
26
+ : Name of the Group to which the plan belongs. Specify either `ownerGroupId` or `ownerGroupName` when using `title` but not both.
24
27
 
25
28
  `--newTitle [newTitle]`
26
29
  : New title of the plan.
@@ -40,6 +43,9 @@ This command allows using unknown options.
40
43
  `--category1 [category1]`
41
44
  : New label for a category. Define the category key within your option to update the related label. Category 1 to 25 are available. E.g., `--category4`, `--category12`.
42
45
 
46
+ !!! attention
47
+ When using `rosterId`, the command is based on an API that is currently in preview and is subject to change once the API reached general availability.
48
+
43
49
  ## Examples
44
50
 
45
51
  Updates a Microsoft Planner plan title to New Title
@@ -0,0 +1,73 @@
1
+ # planner roster get
2
+
3
+ Gets information about the specific Microsoft Planner Roster.
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 planner roster get [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ `--id <id>`
14
+ : ID of the Planner Roster.
15
+
16
+ --8<-- "docs/cmd/_global.md"
17
+
18
+ ## Remarks
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
+ ## Examples
24
+
25
+ Gets information about a specific Planner Roster.
26
+
27
+ ```sh
28
+ m365 planner roster get --id tYqYlNd6eECmsNhN_fcq85cAGAnd
29
+ ```
30
+
31
+ ## Response
32
+
33
+ === "JSON"
34
+
35
+ ```json
36
+ {
37
+ "id": "tYqYlNd6eECmsNhN_fcq85cAGAnd",
38
+ "assignedSensitivityLabel": null
39
+ }
40
+ ```
41
+
42
+ === "Text"
43
+
44
+ ```text
45
+ assignedSensitivityLabel: null
46
+ id : tYqYlNd6eECmsNhN_fcq85cAGAnd
47
+ ```
48
+
49
+ === "CSV"
50
+
51
+ ```csv
52
+ id,assignedSensitivityLabel
53
+ tYqYlNd6eECmsNhN_fcq85cAGAnd,
54
+ ```
55
+
56
+ === "Markdown"
57
+
58
+ ```md
59
+ # planner roster get --id "tYqYlNd6eECmsNhN_fcq85cAGAnd"
60
+
61
+ Date: 1/30/2023
62
+
63
+ ## undefined (tYqYlNd6eECmsNhN_fcq85cAGAnd)
64
+
65
+ Property | Value
66
+ ---------|-------
67
+ id | tYqYlNd6eECmsNhN_fcq85cAGAnd
68
+ assignedSensitivityLabel | null
69
+ ```
70
+
71
+ ## Additional information
72
+
73
+ 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.