@pnp/cli-microsoft365 6.4.0-beta.3946b02 → 6.4.0-beta.99d3881

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.
@@ -0,0 +1,118 @@
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 _SpoTenantApplicationCustomizerGetCommand_instances, _SpoTenantApplicationCustomizerGetCommand_initTelemetry, _SpoTenantApplicationCustomizerGetCommand_initOptions, _SpoTenantApplicationCustomizerGetCommand_initValidators, _SpoTenantApplicationCustomizerGetCommand_initOptionSets;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const Command_1 = require("../../../../Command");
19
+ const request_1 = require("../../../../request");
20
+ const formatting_1 = require("../../../../utils/formatting");
21
+ const spo_1 = require("../../../../utils/spo");
22
+ const urlUtil_1 = require("../../../../utils/urlUtil");
23
+ const validation_1 = require("../../../../utils/validation");
24
+ const SpoCommand_1 = require("../../../base/SpoCommand");
25
+ const commands_1 = require("../../commands");
26
+ class SpoTenantApplicationCustomizerGetCommand extends SpoCommand_1.default {
27
+ get name() {
28
+ return commands_1.default.TENANT_APPLICATIONCUSTOMIZER_GET;
29
+ }
30
+ get description() {
31
+ return 'Get an application customizer that is installed tenant wide';
32
+ }
33
+ constructor() {
34
+ super();
35
+ _SpoTenantApplicationCustomizerGetCommand_instances.add(this);
36
+ __classPrivateFieldGet(this, _SpoTenantApplicationCustomizerGetCommand_instances, "m", _SpoTenantApplicationCustomizerGetCommand_initTelemetry).call(this);
37
+ __classPrivateFieldGet(this, _SpoTenantApplicationCustomizerGetCommand_instances, "m", _SpoTenantApplicationCustomizerGetCommand_initOptions).call(this);
38
+ __classPrivateFieldGet(this, _SpoTenantApplicationCustomizerGetCommand_instances, "m", _SpoTenantApplicationCustomizerGetCommand_initValidators).call(this);
39
+ __classPrivateFieldGet(this, _SpoTenantApplicationCustomizerGetCommand_instances, "m", _SpoTenantApplicationCustomizerGetCommand_initOptionSets).call(this);
40
+ }
41
+ commandAction(logger, args) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ const appCatalogUrl = yield spo_1.spo.getTenantAppCatalogUrl(logger, this.debug);
44
+ if (!appCatalogUrl) {
45
+ throw new Command_1.CommandError('No app catalog URL found');
46
+ }
47
+ let filter = '';
48
+ if (args.options.title) {
49
+ filter = `Title eq '${args.options.title}'`;
50
+ }
51
+ else if (args.options.id) {
52
+ filter = `GUID eq '${args.options.id}'`;
53
+ }
54
+ else if (args.options.clientSideComponentId) {
55
+ filter = `TenantWideExtensionComponentId eq '${args.options.clientSideComponentId}'`;
56
+ }
57
+ const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(appCatalogUrl, '/lists/TenantWideExtensions');
58
+ const reqOptions = {
59
+ url: `${appCatalogUrl}/_api/web/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')/items?$filter=${filter}`,
60
+ headers: {
61
+ 'accept': 'application/json;odata=nometadata'
62
+ },
63
+ responseType: 'json'
64
+ };
65
+ let listItemInstances;
66
+ try {
67
+ listItemInstances = yield request_1.default.get(reqOptions);
68
+ }
69
+ catch (err) {
70
+ return this.handleRejectedODataJsonPromise(err);
71
+ }
72
+ if (listItemInstances) {
73
+ if (listItemInstances.value.length === 0) {
74
+ throw new Command_1.CommandError('The specified application customizer was not found');
75
+ }
76
+ if (listItemInstances.value.length > 1) {
77
+ throw new Command_1.CommandError(`Multiple application customizers with ${args.options.title || args.options.clientSideComponentId} were found. Please disambiguate (IDs): ${listItemInstances.value.map(item => item.GUID).join(', ')}`);
78
+ }
79
+ listItemInstances.value.forEach(v => delete v['ID']);
80
+ logger.log(listItemInstances.value[0]);
81
+ }
82
+ else {
83
+ throw new Command_1.CommandError('The specified application customizer was not found');
84
+ }
85
+ });
86
+ }
87
+ }
88
+ _SpoTenantApplicationCustomizerGetCommand_instances = new WeakSet(), _SpoTenantApplicationCustomizerGetCommand_initTelemetry = function _SpoTenantApplicationCustomizerGetCommand_initTelemetry() {
89
+ this.telemetry.push((args) => {
90
+ Object.assign(this.telemetryProperties, {
91
+ title: typeof args.options.title !== 'undefined',
92
+ id: typeof args.options.id !== 'undefined',
93
+ clientSideComponentId: typeof args.options.clientSideComponentId !== 'undefined'
94
+ });
95
+ });
96
+ }, _SpoTenantApplicationCustomizerGetCommand_initOptions = function _SpoTenantApplicationCustomizerGetCommand_initOptions() {
97
+ this.options.unshift({
98
+ option: '-t, --title [title]'
99
+ }, {
100
+ option: '-i, --id [id]'
101
+ }, {
102
+ option: '-c, --clientSideComponentId [clientSideComponentId]'
103
+ });
104
+ }, _SpoTenantApplicationCustomizerGetCommand_initValidators = function _SpoTenantApplicationCustomizerGetCommand_initValidators() {
105
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
106
+ if (args.options.id && !validation_1.validation.isValidGuid(args.options.id)) {
107
+ return `${args.options.id} is not a valid GUID`;
108
+ }
109
+ if (args.options.clientSideComponentId && !validation_1.validation.isValidGuid(args.options.clientSideComponentId)) {
110
+ return `${args.options.clientSideComponentId} is not a valid GUID`;
111
+ }
112
+ return true;
113
+ }));
114
+ }, _SpoTenantApplicationCustomizerGetCommand_initOptionSets = function _SpoTenantApplicationCustomizerGetCommand_initOptionSets() {
115
+ this.optionSets.push({ options: ['title', 'id', 'clientSideComponentId'] });
116
+ };
117
+ module.exports = new SpoTenantApplicationCustomizerGetCommand();
118
+ //# sourceMappingURL=tenant-applicationcustomizer-get.js.map
@@ -279,6 +279,7 @@ exports.default = {
279
279
  TENANT_APPCATALOG_ADD: `${prefix} tenant appcatalog add`,
280
280
  TENANT_APPCATALOGURL_GET: `${prefix} tenant appcatalogurl get`,
281
281
  TENANT_APPLICATIONCUSTOMIZER_ADD: `${prefix} tenant applicationcustomizer add`,
282
+ TENANT_APPLICATIONCUSTOMIZER_GET: `${prefix} tenant applicationcustomizer get`,
282
283
  TENANT_RECYCLEBINITEM_LIST: `${prefix} tenant recyclebinitem list`,
283
284
  TENANT_RECYCLEBINITEM_REMOVE: `${prefix} tenant recyclebinitem remove`,
284
285
  TENANT_RECYCLEBINITEM_RESTORE: `${prefix} tenant recyclebinitem restore`,
@@ -53,6 +53,24 @@ exports.aadGroup = {
53
53
  }
54
54
  return groups[0];
55
55
  });
56
+ },
57
+ /**
58
+ * Get id of a group by its display name.
59
+ * @param displayName Group display name.
60
+ * @throws Error when group was not found.
61
+ * @throws Error when multiple groups with the same name were found.
62
+ */
63
+ getGroupIdByDisplayName(displayName) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ const groups = yield odata_1.odata.getAllItems(`${graphResource}/v1.0/groups?$filter=displayName eq '${formatting_1.formatting.encodeQueryParameter(displayName)}'&$select=id`);
66
+ if (!groups.length) {
67
+ throw Error(`The specified group '${displayName}' does not exist.`);
68
+ }
69
+ if (groups.length > 1) {
70
+ throw Error(`Multiple groups with name '${displayName}' found: ${groups.map(x => x.id).join(',')}.`);
71
+ }
72
+ return groups[0].id;
73
+ });
56
74
  }
57
75
  };
58
76
  //# sourceMappingURL=aadGroup.js.map
package/dist/utils/spo.js CHANGED
@@ -536,6 +536,20 @@ exports.spo = {
536
536
  const customActionOnSite = yield getById(webUrl, id, "Site");
537
537
  return customActionOnSite;
538
538
  });
539
+ },
540
+ getTenantAppCatalogUrl(logger, debug) {
541
+ return __awaiter(this, void 0, void 0, function* () {
542
+ const spoUrl = yield exports.spo.getSpoUrl(logger, debug);
543
+ const requestOptions = {
544
+ url: `${spoUrl}/_api/SP_TenantSettings_Current`,
545
+ headers: {
546
+ accept: 'application/json;odata=nometadata'
547
+ },
548
+ responseType: 'json'
549
+ };
550
+ const result = yield request_1.default.get(requestOptions);
551
+ return result.CorporateCatalogUrl;
552
+ });
539
553
  }
540
554
  };
541
555
  //# sourceMappingURL=spo.js.map
@@ -0,0 +1,61 @@
1
+ # flow owner add
2
+
3
+ Assigns permissions to a Power Automate flow
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 flow owner add [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ `-e, --environmentName <environmentName>`
14
+ : The name of the environment.
15
+
16
+ `-f, --flowName <flowName>`
17
+ : The name of the Power Automate flow.
18
+
19
+ `--userId [userId]`
20
+ : The ID of the user. Specify either `userId`, `userName`, `groupId` or `groupName`.
21
+
22
+ `--userName [userName]`
23
+ : User principal name of the user. Specify either `userId`, `userName`, `groupId` or `groupName`.
24
+
25
+ `--groupId [groupId]`
26
+ : The ID of the group. Specify either `userId`, `userName`, `groupId` or `groupName`.
27
+
28
+ `--groupName [groupName]`
29
+ : The name of the group. Specify either `userId`, `userName`, `groupId` or `groupName`.
30
+
31
+ `--roleName <roleName>`
32
+ : Access level for the user on the flow. Valid options are `CanView` or `CanEdit`.
33
+
34
+ `--asAdmin`
35
+ : Run the command as admin.
36
+
37
+ --8<-- "docs/cmd/_global.md"
38
+
39
+ ## Examples
40
+
41
+ Assign owner permissions to a specific Power Automate flow for a user with ID
42
+
43
+ ```sh
44
+ m365 flow owner add --userId 5c241023-2ba5-4ea8-a516-a2481a3e6c51 --environmentName Default-c5a5d746-3520-453f-8a69-780f8e44917e --flowName 72f2be4a-78c1-4220-a048-dbf557296a72 --roleName CanEdit
45
+ ```
46
+
47
+ Assign owner permissions to a specific Power Automate flow for a user with UPN
48
+
49
+ ```sh
50
+ m365 flow owner add --userName "john.doe@contoso.com" --environmentName Default-c5a5d746-3520-453f-8a69-780f8e44917e --flowName 72f2be4a-78c1-4220-a048-dbf557296a72 --roleName CanEdit
51
+ ```
52
+
53
+ Assign owner permissions to a specific Power Automate flow for a group
54
+
55
+ ```sh
56
+ m365 flow owner add --groupId 8d4d9f32-1ab0-4f81-9054-efbb1759e8e6 --environmentName Default-c5a5d746-3520-453f-8a69-780f8e44917e --flowName 72f2be4a-78c1-4220-a048-dbf557296a72 --roleName CanEdit
57
+ ```
58
+
59
+ ## Response
60
+
61
+ The command won't return a response on success.
@@ -0,0 +1,67 @@
1
+ # flow owner remove
2
+
3
+ Removes owner permissions to a Power Automate flow
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 flow owner remove [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ `-e, --environmentName <environmentName>`
14
+ : The name of the environment.
15
+
16
+ `-f, --flowName <flowName>`
17
+ : The name of the Power Automate flow.
18
+
19
+ `--userId [userId]`
20
+ : The ID of the user. Specify either `userId`, `userName`, `groupId` or `groupName`.
21
+
22
+ `--userName [userName]`
23
+ : User principal name of the user. Specify either `userId`, `userName`, `groupId` or `groupName`.
24
+
25
+ `--groupId [groupId]`
26
+ : The ID of the group. Specify either `userId`, `userName`, `groupId` or `groupName`.
27
+
28
+ `--groupName [groupName]`
29
+ : The name of the group. Specify either `userId`, `userName`, `groupId` or `groupName`.
30
+
31
+ `--asAdmin`
32
+ : Run the command as admin.
33
+
34
+ `--confirm`
35
+ : Don't prompt for confirmation.
36
+
37
+ --8<-- "docs/cmd/_global.md"
38
+
39
+ ## Examples
40
+
41
+ Remove owner permissions from a specific Power Automate flow for a user by ID without prompting for confirmation
42
+
43
+ ```sh
44
+ m365 flow owner remove --userId 5c241023-2ba5-4ea8-a516-a2481a3e6c51 --environmentName Default-c5a5d746-3520-453f-8a69-780f8e44917e --flowName 72f2be4a-78c1-4220-a048-dbf557296a72 --confirm
45
+ ```
46
+
47
+ Remove owner permissions from a specific Power Automate flow for a user by UPN as admin
48
+
49
+ ```sh
50
+ m365 flow owner remove --userName john.doe@contoso.com --environmentName Default-c5a5d746-3520-453f-8a69-780f8e44917e --flowName 72f2be4a-78c1-4220-a048-dbf557296a72 --asAdmin
51
+ ```
52
+
53
+ Remove owner permissions from a specific Power Automate flow for a group by ID
54
+
55
+ ```sh
56
+ m365 flow owner remove --groupId 5c241023-2ba5-4ea8-a516-a2481a3e6c51 --environmentName Default-c5a5d746-3520-453f-8a69-780f8e44917e --flowName 72f2be4a-78c1-4220-a048-dbf557296a72
57
+ ```
58
+
59
+ Remove owner permissions from a specific Power Automate flow for a group by name as admin
60
+
61
+ ```sh
62
+ m365 flow owner remove --groupName "Test group" --environmentName Default-c5a5d746-3520-453f-8a69-780f8e44917e --flowName 72f2be4a-78c1-4220-a048-dbf557296a72 --asAdmin
63
+ ```
64
+
65
+ ## Response
66
+
67
+ The command won't return a response on success.
@@ -25,6 +25,9 @@ m365 flow run list [options]
25
25
  `--triggerEndTime [triggerEndTime]`
26
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
27
 
28
+ `--asAdmin`
29
+ : Run the command as admin. Use this flag when targeting flows you don't own.
30
+
28
31
  --8<-- "docs/cmd/_global.md"
29
32
 
30
33
  ## Remarks
@@ -56,6 +59,12 @@ List runs of the specified Microsoft Flow between a specific time range
56
59
  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
60
  ```
58
61
 
62
+ List runs of the specified Microsoft Flow owned by another user
63
+
64
+ ```sh
65
+ m365 flow run list --environmentName Default-d87a7535-dd31-4437-bfe1-95340acd55c5 --flowName 5923cb07-ce1a-4a5c-ab81-257ce820109a --asAdmin
66
+ ```
67
+
59
68
  ## Response
60
69
 
61
70
  ### Standard response
@@ -123,3 +132,22 @@ m365 flow run list --environmentName Default-d87a7535-dd31-4437-bfe1-95340acd55c
123
132
  name,startTime,status
124
133
  08585329112602833828909892130CU17,2022-11-17T14:33:45.2763872Z,Running
125
134
  ```
135
+
136
+ === "Markdown"
137
+
138
+ ```md
139
+ # flow run list --environmentName "Default-de348bc7-1aeb-4406-8cb3-97db021cadb4" --flowName "08585329112602833828909892130CU17"
140
+
141
+ Date: 1/3/2023
142
+
143
+ ## 08585329112602833828909892130CU17 (/providers/Microsoft.ProcessSimple/environments/Default-de348bc7-1aeb-4406-8cb3-97db021cadb4/flows/170fb67e-a514-4d84-8727-582022bd13a9/runs/08585329112602833828909892130CU17)
144
+
145
+ Property | Value
146
+ ---------|-------
147
+ name | 08585329112602833828909892130CU17
148
+ id | /providers/Microsoft.ProcessSimple/environments/Default-de348bc7-1aeb-4406-8cb3-97db021cadb4/flows/170fb67e-a514-4d84-8727-582022bd13a9/runs/08585329112602833828909892130CU17
149
+ type | Microsoft.ProcessSimple/environments/flows/runs
150
+ properties | {"startTime":"2022-11-17T14:33:45.2763872Z","status":"Running","correlation":{"clientTrackingId":"08585329112602833829909892130CU00"},"trigger":{"name":"When_a_new_response_is_submitted","inputsLink":{"uri":"https://prod-08.centralindia.logic.azure.com:443/workflows/f7bf8f6b5c494e63bfc21b54087a596e/runs/08585329112602833828909892130CU17/contents/TriggerInputs?api-version=2016-06-01&se=2022-11-17T18%3A00%3A00.0000000Z&sp=%2Fruns%2F08585329112602833828909892130CU17%2Fcontents%2FTriggerInputs%2Fread&sv=1.0&sig=jmdMRWvY7uGoxTmqd3_a2bJtegXuVyuKTKKUVLiwh38","contentVersion":"6ZrBBE+MJg7IvhMgyJLMmA==","contentSize":349,"contentHash":{"algorithm":"md5","value":"6ZrBBE+MJg7IvhMgyJLMmA=="}},"outputsLink":{"uri":"https://prod-08.centralindia.logic.azure.com:443/workflows/f7bf8f6b5c494e63bfc21b54087a596e/runs/08585329112602833828909892130CU17/contents/TriggerOutputs?api-version=2016-06-01&se=2022-11-17T18%3A00%3A00.0000000Z&sp=%2Fruns%2F08585329112602833828909892130CU17%2Fcontents%2FTriggerOutputs%2Fread&sv=1.0&sig=Y3qqjuWrrcQJrmF7uvm6LVzQy5w-dNOFWJ8Yt8khXvA","contentVersion":"Z/4a8tfYygNAR1xpc44iww==","contentSize":493,"contentHash":{"algorithm":"md5","value":"Z/4a8tfYygNAR1xpc44iww=="}},"startTime":"2022-11-17T14:33:45.1914506Z","endTime":"2022-11-17T14:33:45.1914506Z","originHistoryName":"08585329112602833829909892130CU00","correlation":{"clientTrackingId":"08585329112602833829909892130CU00"},"status":"Succeeded"}}
151
+ startTime | 2022-11-17T14:33:45.2763872Z
152
+ status | Running
153
+ ```
@@ -0,0 +1,87 @@
1
+ # planner roster member get
2
+
3
+ Gets a member of the specified Microsoft Planner Roster
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 planner roster member get [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ `--rosterId <rosterId>`
14
+ : ID of the Planner Roster.
15
+
16
+ `--userId [userId]`
17
+ : User's Azure AD ID. Specify either `userId` or `userName` but not both.
18
+
19
+ `--userName [userName]`
20
+ : User's UPN (user principal name, e.g. johndoe@example.com). Specify either `userId` or `userName` but not both.
21
+
22
+ --8<-- "docs/cmd/_global.md"
23
+
24
+ ## Remarks
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
+ Gets a specific user by user name as member of the Planner Roster
32
+
33
+ ```sh
34
+ m365 planner roster member get --rosterId tYqYlNd6eECmsNhN_fcq85cAGAnd --userName john.doe@contoso.com
35
+ ```
36
+
37
+ Gets a specific user by ID as member of the Planner Roster
38
+
39
+ ```sh
40
+ m365 planner roster member get --rosterId tYqYlNd6eECmsNhN_fcq85cAGAnd --userId d049a857-f1c3-4fb3-a629-d8cfb3bd7275
41
+ ```
42
+
43
+ ## Response
44
+
45
+ === "JSON"
46
+
47
+ ```json
48
+ {
49
+ "id": "b3a1be03-54a5-43d2-b4fb-6562fe9bec0b",
50
+ "userId": "2056d2f6-3257-4253-8cfc-b73393e414e5",
51
+ "tenantId": "5b7b813c-2339-48cd-8c51-bd4fcb269420",
52
+ "roles": []
53
+ }
54
+ ```
55
+
56
+ === "Text"
57
+
58
+ ```text
59
+ id : b3a1be03-54a5-43d2-b4fb-6562fe9bec0b
60
+ roles : []
61
+ tenantId: 5b7b813c-2339-48cd-8c51-bd4fcb269420
62
+ userId : 2056d2f6-3257-4253-8cfc-b73393e414e5
63
+ ```
64
+
65
+ === "CSV"
66
+
67
+ ```csv
68
+ id,userId,tenantId,roles
69
+ b3a1be03-54a5-43d2-b4fb-6562fe9bec0b,2056d2f6-3257-4253-8cfc-b73393e414e5,5b7b813c-2339-48cd-8c51-bd4fcb269420,[]
70
+ ```
71
+
72
+ === "Markdown"
73
+
74
+ ```md
75
+ # planner roster member get --rosterId "tYqYlNd6eECmsNhN_fcq85cAGAnd" --userId "2056d2f6-3257-4253-8cfc-b73393e414e5"
76
+
77
+ Date: 18/2/2023
78
+
79
+ ## b3a1be03-54a5-43d2-b4fb-6562fe9bec0b
80
+
81
+ Property | Value
82
+ ---------|-------
83
+ id | b3a1be03-54a5-43d2-b4fb-6562fe9bec0b
84
+ userId | 2056d2f6-3257-4253-8cfc-b73393e414e5
85
+ tenantId | 5b7b813c-2339-48cd-8c51-bd4fcb269420
86
+ roles | []
87
+ ```
@@ -11,10 +11,13 @@ m365 spo customaction get [options]
11
11
  ## Options
12
12
 
13
13
  `-i, --id [id]`
14
- : ID of the user custom action to retrieve information for. Specify either `id` or `title`
14
+ : ID of the user custom action to retrieve information for. Specify either `id`, `title` or `clientSideComponentId`
15
15
 
16
16
  `-t, --title [title]`
17
- : Title of the user custom action to retrieve information for. Specify either `id` or `title`
17
+ : Title of the user custom action to retrieve information for. Specify either `id`, `title` or `clientSideComponentId`
18
+
19
+ `-c, --clientSideComponentId [clientSideComponentId]`
20
+ : clientSideComponentId of the user custom action to retrieve information for. Specify either `id`, `title` or `clientSideComponentId`
18
21
 
19
22
  `-u, --webUrl <webUrl>`
20
23
  : Url of the site or site collection to retrieve the custom action from
@@ -26,34 +29,133 @@ m365 spo customaction get [options]
26
29
 
27
30
  ## Remarks
28
31
 
29
- If the command finds multiple user custom actions with the specified title, it will prompt you to disambiguate which user custom action it should use, listing the discovered IDs.
32
+ If the command finds multiple user custom actions with the specified `title` or `clientSideComponentId`, it will prompt you to disambiguate which user custom action it should get, listing the discovered IDs.
30
33
 
31
34
  ## Examples
32
35
 
33
- Return details about the user custom action with ID _058140e3-0e37-44fc-a1d3-79c487d371a3_ located in site or site collection _https://contoso.sharepoint.com/sites/test_
36
+ Return details about the user custom action based on the id and a given url
34
37
 
35
38
  ```sh
36
39
  m365 spo customaction get --id 058140e3-0e37-44fc-a1d3-79c487d371a3 --webUrl https://contoso.sharepoint.com/sites/test
37
40
  ```
38
41
 
39
- Return details about the user custom action with Title _YourAppCustomizer_ located in site or site collection _https://contoso.sharepoint.com/sites/test_
42
+ Return details about the user custom action based on the title and a given url
40
43
 
41
44
  ```sh
42
45
  m365 spo customaction get --title "YourAppCustomizer" --webUrl https://contoso.sharepoint.com/sites/test
43
46
  ```
44
47
 
45
- Return details about the user custom action with ID _058140e3-0e37-44fc-a1d3-79c487d371a3_ located in site collection _https://contoso.sharepoint.com/sites/test_
48
+ Return details about the user custom action based on the clientSideComponentId and a given url
49
+
50
+ ```sh
51
+ m365 spo customaction get --clientSideComponentId "34a019f9-6198-4053-a3b6-fbdea9a107fd" --webUrl https://contoso.sharepoint.com/sites/test
52
+ ```
53
+
54
+ Return details about the user custom action based on the id and a given url and the scope
46
55
 
47
56
  ```sh
48
- m365 spo customaction get --id 058140e3-0e37-44fc-a1d3-79c487d371a3 --webUrl https://contoso.sharepoint.com/sites/test --scope Site
57
+ m365 spo customaction get --id "058140e3-0e37-44fc-a1d3-79c487d371a3" --webUrl https://contoso.sharepoint.com/sites/test --scope Site
49
58
  ```
50
59
 
51
- Return details about the user custom action with ID _058140e3-0e37-44fc-a1d3-79c487d371a3_ located in site _https://contoso.sharepoint.com/sites/test_
60
+ Return details about the user custom action based on the id and a given url and the scope
52
61
 
53
62
  ```sh
54
- m365 spo customaction get --id 058140e3-0e37-44fc-a1d3-79c487d371a3 --webUrl https://contoso.sharepoint.com/sites/test --scope Web
63
+ m365 spo customaction get --id "058140e3-0e37-44fc-a1d3-79c487d371a3" --webUrl https://contoso.sharepoint.com/sites/test --scope Web
55
64
  ```
56
65
 
57
- ## More information
66
+ Return details about the user custom action based on the id and a given url and the scope
67
+
68
+ ```sh
69
+ m365 spo customaction get --id "058140e3-0e37-44fc-a1d3-79c487d371a3" --webUrl https://contoso.sharepoint.com/sites/test --scope Web
70
+ ```
58
71
 
59
- - UserCustomAction REST API resources: [https://msdn.microsoft.com/en-us/library/office/dn531432.aspx#bk_UserCustomAction](https://msdn.microsoft.com/en-us/library/office/dn531432.aspx#bk_UserCustomAction)
72
+ ## Response
73
+
74
+ === "JSON"
75
+
76
+ ```json
77
+ {
78
+ "ClientSideComponentId": "34a019f9-6198-4053-a3b6-fbdea9a107fd",
79
+ "ClientSideComponentProperties": "{\"sampleTextOne\":\"One item is selected in the list.\", \"sampleTextTwo\":\"This command is always visible.\"}",
80
+ "CommandUIExtension": null,
81
+ "Description": null,
82
+ "Group": null,
83
+ "Id": "158cb0d1-8703-4a36-866d-84aed8233bd3",
84
+ "ImageUrl": null,
85
+ "Location": "ClientSideExtension.ListViewCommandSet.CommandBar",
86
+ "Name": "{158cb0d1-8703-4a36-866d-84aed8233bd3}",
87
+ "RegistrationId": "100",
88
+ "RegistrationType": 1,
89
+ "Rights": "{\"High\":0,\"Low\":0}",
90
+ "Scope": "Web",
91
+ "ScriptBlock": null,
92
+ "ScriptSrc": null,
93
+ "Sequence": 65536,
94
+ "Title": "ExtensionTraining",
95
+ "Url": null,
96
+ "VersionOfUserCustomAction": "1.0.1.0"
97
+ }
98
+ ```
99
+
100
+ === "Text"
101
+
102
+ ```text
103
+ ClientSideComponentId : 34a019f9-6198-4053-a3b6-fbdea9a107fd
104
+ ClientSideComponentProperties: {"sampleTextOne":"One item is selected in the list.", "sampleTextTwo":"This command is always visible."}
105
+ CommandUIExtension : null
106
+ Description : null
107
+ Group : null
108
+ Id : 158cb0d1-8703-4a36-866d-84aed8233bd3
109
+ ImageUrl : null
110
+ Location : ClientSideExtension.ListViewCommandSet.CommandBar
111
+ Name : {158cb0d1-8703-4a36-866d-84aed8233bd3}
112
+ RegistrationId : 100
113
+ RegistrationType : 1
114
+ Rights : {"High":0,"Low":0}
115
+ Scope : Web
116
+ ScriptBlock : null
117
+ ScriptSrc : null
118
+ Sequence : 65536
119
+ Title : ExtensionTraining
120
+ Url : null
121
+ VersionOfUserCustomAction : 1.0.1.0
122
+ ```
123
+
124
+ === "CSV"
125
+
126
+ ```csv
127
+ ClientSideComponentId,ClientSideComponentProperties,CommandUIExtension,Description,Group,Id,ImageUrl,Location,Name,RegistrationId,RegistrationType,Rights,Scope,ScriptBlock,ScriptSrc,Sequence,Title,Url,VersionOfUserCustomAction
128
+ 34a019f9-6198-4053-a3b6-fbdea9a107fd,"{""sampleTextOne"":""One item is selected in the list."", ""sampleTextTwo"":""This command is always visible.""}",,,,158cb0d1-8703-4a36-866d-84aed8233bd3,,ClientSideExtension.ListViewCommandSet.CommandBar,{158cb0d1-8703-4a36-866d-84aed8233bd3},100,1,"{""High"":0,""Low"":0}",Web,,,65536,ExtensionTraining,,1.0.1.0
129
+ ```
130
+
131
+ === "Markdown"
132
+
133
+ ```md
134
+ # spo customaction get --webUrl "https://contoso.sharepoint.com" --clientSideComponentId "34a019f9-6198-4053-a3b6-fbdea9a107fd" --scope "Web"
135
+
136
+ Date: 27/1/2023
137
+
138
+ ## ExtensionTraining (158cb0d1-8703-4a36-866d-84aed8233bd3)
139
+
140
+ Property | Value
141
+ ---------|-------
142
+ ClientSideComponentId | 34a019f9-6198-4053-a3b6-fbdea9a107fd
143
+ ClientSideComponentProperties | {"sampleTextOne":"One item is selected in the list.", "sampleTextTwo":"This command is always visible."}
144
+ CommandUIExtension | null
145
+ Description | null
146
+ Group | null
147
+ Id | 158cb0d1-8703-4a36-866d-84aed8233bd3
148
+ ImageUrl | null
149
+ Location | ClientSideExtension.ListViewCommandSet.CommandBar
150
+ Name | {158cb0d1-8703-4a36-866d-84aed8233bd3}
151
+ RegistrationId | 100
152
+ RegistrationType | 1
153
+ Rights | {"High":0,"Low":0}
154
+ Scope | Web
155
+ ScriptBlock | null
156
+ ScriptSrc | null
157
+ Sequence | 65536
158
+ Title | ExtensionTraining
159
+ Url | null
160
+ VersionOfUserCustomAction | 1.0.1.0
161
+ ```
@@ -13,8 +13,8 @@ m365 spo list add [options]
13
13
  `-t, --title <title>`
14
14
  : Title of the list to add.
15
15
 
16
- `--baseTemplate <baseTemplate>`
17
- : The list definition type on which the list is based. Allowed values `Announcements`, `Contacts`, `CustomGrid`, `DataSources`,`DiscussionBoard`, `DocumentLibrary`, `Events`, `GanttTasks`, `GenericList`, `IssuesTracking`, `Links`, `NoCodeWorkflows`,`PictureLibrary`, `Survey`, `Tasks`, `WebPageLibrary`, `WorkflowHistory`, `WorkflowProcess`, `XmlForm`. Default `GenericList`.
16
+ `--baseTemplate [baseTemplate]`
17
+ : The list definition type on which the list is based. Allowed values `Announcements`, `Contacts`, `CustomGrid`, `DataSources`,`DiscussionBoard`, `DocumentLibrary`, `Events`, `GanttTasks`, `GenericList`, `IssuesTracking`, `Links`, `NoCodeWorkflows`,`PictureLibrary`, `Survey`, `Tasks`, `WebPageLibrary`, `WorkflowHistory`, `WorkflowProcess`, `XmlForm`. Default value is `GenericList`.
18
18
 
19
19
  `-u, --webUrl <webUrl>`
20
20
  : URL of the site where the list should be added.
@@ -59,7 +59,7 @@ m365 spo list set [options]
59
59
  : Property for assigning or retrieving grid editing on the list. Valid values are `true`, `false`.
60
60
 
61
61
  `--draftVersionVisibility [draftVersionVisibility]`
62
- : Value that specifies the minimum permission required to view minor versions and drafts within the list. Allowed values `Reader`, `Author`, `Approver`. Default `Reader`.
62
+ : Value that specifies the minimum permission required to view minor versions and drafts within the list. Allowed values `Reader`, `Author`, `Approver`.
63
63
 
64
64
  `--emailAlias [emailAlias]`
65
65
  : If e-mail notification is enabled, gets or sets the e-mail address to use tonotify to the owner of an item when an assignment has changed or the item has been updated.
@@ -137,7 +137,7 @@ m365 spo list set [options]
137
137
  : Indicates whether this list should be treated as a top level navigation object or not.
138
138
 
139
139
  `--listExperienceOptions [listExperienceOptions]`
140
- : Gets or sets the list experience for the list. Allowed values `Auto`, `NewExperience`, `ClassicExperience`. Default `Auto`.
140
+ : Gets or sets the list experience for the list. Allowed values `Auto`, `NewExperience`, `ClassicExperience`.
141
141
 
142
142
  `--majorVersionLimit [majorVersionLimit]`
143
143
  : Gets or sets the maximum number of major versions allowed for an item in a document library that uses version control with major versions only.