@pnp/cli-microsoft365 6.2.0-beta.d5442a1 → 6.2.0-beta.edaa477
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.
- package/dist/m365/onenote/commands/page/page-list.js +137 -0
- package/dist/m365/onenote/commands.js +2 -1
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +143 -0
- package/dist/m365/purview/commands.js +1 -0
- package/dist/m365/spo/commands/file/file-sharinglink-get.js +116 -0
- package/dist/m365/spo/commands/file/file-sharinglink-list.js +17 -4
- package/dist/m365/spo/commands/file/file-sharinglink-remove.js +135 -0
- package/dist/m365/spo/commands/group/group-member-add.js +33 -6
- package/dist/m365/spo/commands/term/term-list.js +99 -29
- package/dist/m365/spo/commands.js +2 -0
- package/docs/docs/cmd/onenote/page/page-list.md +140 -0
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.md +128 -0
- package/docs/docs/cmd/spo/file/file-sharinglink-get.md +107 -0
- package/docs/docs/cmd/spo/file/file-sharinglink-list.md +16 -7
- package/docs/docs/cmd/spo/file/file-sharinglink-remove.md +52 -0
- package/docs/docs/cmd/spo/group/group-member-add.md +22 -4
- package/docs/docs/cmd/spo/term/term-list.md +138 -0
- package/package.json +1 -1
|
@@ -20,6 +20,7 @@ const request_1 = require("../../../../request");
|
|
|
20
20
|
const formatting_1 = require("../../../../utils/formatting");
|
|
21
21
|
const validation_1 = require("../../../../utils/validation");
|
|
22
22
|
const AadUserGetCommand = require("../../../aad/commands/user/user-get");
|
|
23
|
+
const AadGroupGetCommand = require("../../../aad/commands/group/group-get");
|
|
23
24
|
const SpoUserGetCommand = require("../user/user-get");
|
|
24
25
|
const SpoCommand_1 = require("../../../base/SpoCommand");
|
|
25
26
|
const commands_1 = require("../../commands");
|
|
@@ -47,7 +48,7 @@ class SpoGroupMemberAddCommand extends SpoCommand_1.default {
|
|
|
47
48
|
const groupId = yield this.getGroupId(args, logger);
|
|
48
49
|
const resolvedUsernameList = yield this.getValidUsers(args, logger);
|
|
49
50
|
if (this.verbose) {
|
|
50
|
-
logger.logToStderr(`Adding user(s) to SharePoint Group ${args.options.groupId
|
|
51
|
+
logger.logToStderr(`Adding user(s) to SharePoint Group ${args.options.groupId || args.options.groupName}`);
|
|
51
52
|
}
|
|
52
53
|
const data = {
|
|
53
54
|
url: args.options.webUrl,
|
|
@@ -104,15 +105,19 @@ class SpoGroupMemberAddCommand extends SpoCommand_1.default {
|
|
|
104
105
|
}
|
|
105
106
|
const validUserNames = [];
|
|
106
107
|
const invalidUserNames = [];
|
|
107
|
-
const userIdentifiers = args.options.userName || args.options.email || args.options.userId.toString();
|
|
108
|
+
const userIdentifiers = args.options.userName || args.options.email || args.options.aadGroupId || args.options.aadGroupName || args.options.userId.toString();
|
|
108
109
|
return Promise
|
|
109
110
|
.all(userIdentifiers.split(',').map((userIdentifier) => __awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
const user = userIdentifier.trim();
|
|
110
112
|
try {
|
|
111
113
|
if (args.options.userId) {
|
|
112
|
-
yield this.spoUserGet(args.options,
|
|
114
|
+
yield this.spoUserGet(args.options, user, logger, validUserNames);
|
|
115
|
+
}
|
|
116
|
+
else if (args.options.aadGroupId || args.options.aadGroupName) {
|
|
117
|
+
yield this.aadGroupGet(args.options, user, logger, validUserNames);
|
|
113
118
|
}
|
|
114
119
|
else {
|
|
115
|
-
yield this.aadUserGet(args.options,
|
|
120
|
+
yield this.aadUserGet(args.options, user, logger, validUserNames);
|
|
116
121
|
}
|
|
117
122
|
}
|
|
118
123
|
catch (err) {
|
|
@@ -141,6 +146,19 @@ class SpoGroupMemberAddCommand extends SpoCommand_1.default {
|
|
|
141
146
|
validUserNames.push(JSON.parse(aadUserGetOutput.stdout).userPrincipalName);
|
|
142
147
|
});
|
|
143
148
|
}
|
|
149
|
+
aadGroupGet(options, userIdentifier, logger, validUserNames) {
|
|
150
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
151
|
+
if (this.verbose) {
|
|
152
|
+
logger.logToStderr(`Get UPN from Azure AD for group ${userIdentifier}`);
|
|
153
|
+
}
|
|
154
|
+
const aadUserGetCommandoptions = Object.assign(Object.assign(Object.assign({}, (options.aadGroupId && { id: userIdentifier })), (options.aadGroupName && { title: userIdentifier })), { output: 'json', debug: options.debug, verbose: options.verbose });
|
|
155
|
+
const aadGroupGetOutput = yield Cli_1.Cli.executeCommandWithOutput(AadGroupGetCommand, { options: Object.assign(Object.assign({}, aadUserGetCommandoptions), { _: [] }) });
|
|
156
|
+
if (this.debug) {
|
|
157
|
+
logger.logToStderr(aadGroupGetOutput.stderr);
|
|
158
|
+
}
|
|
159
|
+
validUserNames.push(JSON.parse(aadGroupGetOutput.stdout).mail);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
144
162
|
spoUserGet(options, userIdentifier, logger, validUserNames) {
|
|
145
163
|
return __awaiter(this, void 0, void 0, function* () {
|
|
146
164
|
if (this.verbose) {
|
|
@@ -174,7 +192,9 @@ _SpoGroupMemberAddCommand_instances = new WeakSet(), _SpoGroupMemberAddCommand_i
|
|
|
174
192
|
groupName: typeof args.options.groupName !== 'undefined',
|
|
175
193
|
userName: typeof args.options.userName !== 'undefined',
|
|
176
194
|
email: typeof args.options.email !== 'undefined',
|
|
177
|
-
userId: typeof args.options.userId !== 'undefined'
|
|
195
|
+
userId: typeof args.options.userId !== 'undefined',
|
|
196
|
+
aadGroupId: typeof args.options.aadGroupId !== 'undefined',
|
|
197
|
+
aadGroupName: typeof args.options.aadGroupName !== 'undefined'
|
|
178
198
|
});
|
|
179
199
|
});
|
|
180
200
|
}, _SpoGroupMemberAddCommand_initOptions = function _SpoGroupMemberAddCommand_initOptions() {
|
|
@@ -190,6 +210,10 @@ _SpoGroupMemberAddCommand_instances = new WeakSet(), _SpoGroupMemberAddCommand_i
|
|
|
190
210
|
option: '--email [email]'
|
|
191
211
|
}, {
|
|
192
212
|
option: '--userId [userId]'
|
|
213
|
+
}, {
|
|
214
|
+
option: '--aadGroupId [aadGroupId]'
|
|
215
|
+
}, {
|
|
216
|
+
option: '--aadGroupName [aadGroupName]'
|
|
193
217
|
});
|
|
194
218
|
}, _SpoGroupMemberAddCommand_initValidators = function _SpoGroupMemberAddCommand_initValidators() {
|
|
195
219
|
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -210,10 +234,13 @@ _SpoGroupMemberAddCommand_instances = new WeakSet(), _SpoGroupMemberAddCommand_i
|
|
|
210
234
|
if (args.options.email && args.options.email.split(',').some(e => !validation_1.validation.isValidUserPrincipalName(e))) {
|
|
211
235
|
return `${args.options.email} contains one or more invalid email addresses`;
|
|
212
236
|
}
|
|
237
|
+
if (args.options.aadGroupId && args.options.aadGroupId.split(',').some(e => !validation_1.validation.isValidGuid(e))) {
|
|
238
|
+
return `${args.options.aadGroupId} contains one or more invalid GUIDs`;
|
|
239
|
+
}
|
|
213
240
|
return true;
|
|
214
241
|
}));
|
|
215
242
|
}, _SpoGroupMemberAddCommand_initOptionSets = function _SpoGroupMemberAddCommand_initOptionSets() {
|
|
216
|
-
this.optionSets.push({ options: ['groupId', 'groupName'] }, { options: ['userName', 'email', 'userId'] });
|
|
243
|
+
this.optionSets.push({ options: ['groupId', 'groupName'] }, { options: ['userName', 'email', 'userId', 'aadGroupId', 'aadGroupName'] });
|
|
217
244
|
};
|
|
218
245
|
module.exports = new SpoGroupMemberAddCommand();
|
|
219
246
|
//# sourceMappingURL=group-member-add.js.map
|
|
@@ -30,7 +30,7 @@ class SpoTermListCommand extends SpoCommand_1.default {
|
|
|
30
30
|
return 'Lists taxonomy terms from the given term set';
|
|
31
31
|
}
|
|
32
32
|
defaultProperties() {
|
|
33
|
-
return ['Id', 'Name'];
|
|
33
|
+
return ['Id', 'Name', 'ParentTermId'];
|
|
34
34
|
}
|
|
35
35
|
constructor() {
|
|
36
36
|
super();
|
|
@@ -50,27 +50,47 @@ class SpoTermListCommand extends SpoCommand_1.default {
|
|
|
50
50
|
}
|
|
51
51
|
const termGroupQuery = args.options.termGroupId ? `<Method Id="77" ParentId="75" Name="GetById"><Parameters><Parameter Type="Guid">{${args.options.termGroupId}}</Parameter></Parameters></Method>` : `<Method Id="77" ParentId="75" Name="GetByName"><Parameters><Parameter Type="String">${formatting_1.formatting.escapeXml(args.options.termGroupName)}</Parameter></Parameters></Method>`;
|
|
52
52
|
const termSetQuery = args.options.termSetId ? `<Method Id="82" ParentId="80" Name="GetById"><Parameters><Parameter Type="Guid">{${args.options.termSetId}}</Parameter></Parameters></Method>` : `<Method Id="82" ParentId="80" Name="GetByName"><Parameters><Parameter Type="String">${formatting_1.formatting.escapeXml(args.options.termSetName)}</Parameter></Parameters></Method>`;
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
'X-RequestDigest': res.FormDigestValue
|
|
57
|
-
},
|
|
58
|
-
data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config_1.default.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="70" ObjectPathId="69" /><ObjectIdentityQuery Id="71" ObjectPathId="69" /><ObjectPath Id="73" ObjectPathId="72" /><ObjectIdentityQuery Id="74" ObjectPathId="72" /><ObjectPath Id="76" ObjectPathId="75" /><ObjectPath Id="78" ObjectPathId="77" /><ObjectIdentityQuery Id="79" ObjectPathId="77" /><ObjectPath Id="81" ObjectPathId="80" /><ObjectPath Id="83" ObjectPathId="82" /><ObjectIdentityQuery Id="84" ObjectPathId="82" /><ObjectPath Id="86" ObjectPathId="85" /><Query Id="87" ObjectPathId="85"><Query SelectAllProperties="false"><Properties /></Query><ChildItemQuery SelectAllProperties="true"><Properties><Property Name="Name" ScalarProperty="true" /><Property Name="Id" ScalarProperty="true" /></Properties></ChildItemQuery></Query></Actions><ObjectPaths><StaticMethod Id="69" Name="GetTaxonomySession" TypeId="{981cbc68-9edc-4f8d-872f-71146fcbb84f}" /><Method Id="72" ParentId="69" Name="GetDefaultSiteCollectionTermStore" /><Property Id="75" ParentId="72" Name="Groups" />${termGroupQuery}<Property Id="80" ParentId="77" Name="TermSets" />${termSetQuery}<Property Id="85" ParentId="82" Name="Terms" /></ObjectPaths></Request>`
|
|
59
|
-
};
|
|
60
|
-
const processQuery = yield request_1.default.post(requestOptions);
|
|
61
|
-
const json = JSON.parse(processQuery);
|
|
62
|
-
const response = json[0];
|
|
63
|
-
if (response.ErrorInfo) {
|
|
64
|
-
throw response.ErrorInfo.ErrorMessage;
|
|
65
|
-
}
|
|
66
|
-
const result = json[json.length - 1];
|
|
53
|
+
const data = `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config_1.default.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="70" ObjectPathId="69" /><ObjectIdentityQuery Id="71" ObjectPathId="69" /><ObjectPath Id="73" ObjectPathId="72" /><ObjectIdentityQuery Id="74" ObjectPathId="72" /><ObjectPath Id="76" ObjectPathId="75" /><ObjectPath Id="78" ObjectPathId="77" /><ObjectIdentityQuery Id="79" ObjectPathId="77" /><ObjectPath Id="81" ObjectPathId="80" /><ObjectPath Id="83" ObjectPathId="82" /><ObjectIdentityQuery Id="84" ObjectPathId="82" /><ObjectPath Id="86" ObjectPathId="85" /><Query Id="87" ObjectPathId="85"><Query SelectAllProperties="false"><Properties /></Query><ChildItemQuery SelectAllProperties="true"><Properties><Property Name="Name" ScalarProperty="true" /><Property Name="Id" ScalarProperty="true" /></Properties></ChildItemQuery></Query></Actions><ObjectPaths><StaticMethod Id="69" Name="GetTaxonomySession" TypeId="{981cbc68-9edc-4f8d-872f-71146fcbb84f}" /><Method Id="72" ParentId="69" Name="GetDefaultSiteCollectionTermStore" /><Property Id="75" ParentId="72" Name="Groups" />${termGroupQuery}<Property Id="80" ParentId="77" Name="TermSets" />${termSetQuery}<Property Id="85" ParentId="82" Name="Terms" /></ObjectPaths></Request>`;
|
|
54
|
+
const result = yield this.executeCsomCall(data, spoAdminUrl, res);
|
|
55
|
+
const terms = [];
|
|
67
56
|
if (result._Child_Items_ && result._Child_Items_.length > 0) {
|
|
68
|
-
result._Child_Items_
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
57
|
+
for (const term of result._Child_Items_) {
|
|
58
|
+
this.setTermDetails(term);
|
|
59
|
+
terms.push(term);
|
|
60
|
+
if (args.options.includeChildTerms && term.TermsCount > 0) {
|
|
61
|
+
yield this.getChildTerms(spoAdminUrl, res, term);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (!args.options.output || args.options.output === 'json') {
|
|
66
|
+
logger.log(terms);
|
|
67
|
+
}
|
|
68
|
+
else if (!args.options.includeChildTerms) {
|
|
69
|
+
// Converted to text friendly output
|
|
70
|
+
logger.log(terms.map(i => {
|
|
71
|
+
return {
|
|
72
|
+
Id: i.Id,
|
|
73
|
+
Name: i.Name
|
|
74
|
+
};
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// Converted to text friendly output
|
|
79
|
+
const friendlyOutput = [];
|
|
80
|
+
terms.forEach(term => {
|
|
81
|
+
term.ParentTermId = '';
|
|
82
|
+
friendlyOutput.push(term);
|
|
83
|
+
if (term.Children && term.Children.length > 0) {
|
|
84
|
+
this.getFriendlyChildTerms(term, friendlyOutput);
|
|
85
|
+
}
|
|
72
86
|
});
|
|
73
|
-
logger.log(
|
|
87
|
+
logger.log(friendlyOutput.map(i => {
|
|
88
|
+
return {
|
|
89
|
+
Id: i.Id,
|
|
90
|
+
Name: i.Name,
|
|
91
|
+
ParentTermId: i.ParentTermId
|
|
92
|
+
};
|
|
93
|
+
}));
|
|
74
94
|
}
|
|
75
95
|
}
|
|
76
96
|
catch (err) {
|
|
@@ -78,6 +98,57 @@ class SpoTermListCommand extends SpoCommand_1.default {
|
|
|
78
98
|
}
|
|
79
99
|
});
|
|
80
100
|
}
|
|
101
|
+
getFriendlyChildTerms(term, friendlyOutput) {
|
|
102
|
+
term.Children.forEach(childTerm => {
|
|
103
|
+
childTerm.ParentTermId = term.Id;
|
|
104
|
+
friendlyOutput.push(childTerm);
|
|
105
|
+
if (childTerm.Children && childTerm.Children.length > 0) {
|
|
106
|
+
this.getFriendlyChildTerms(childTerm, friendlyOutput);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
getChildTerms(spoAdminUrl, res, parentTerm) {
|
|
111
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
parentTerm.Children = [];
|
|
113
|
+
const data = `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config_1.default.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="20" ObjectPathId="19" /><Query Id="21" ObjectPathId="19"><Query SelectAllProperties="false"><Properties /></Query><ChildItemQuery SelectAllProperties="true"><Properties><Property Name="CustomSortOrder" ScalarProperty="true" /><Property Name="CustomProperties" ScalarProperty="true" /><Property Name="LocalCustomProperties" ScalarProperty="true" /></Properties></ChildItemQuery></Query></Actions><ObjectPaths><Property Id="19" ParentId="16" Name="Terms" /><Identity Id="16" Name="${parentTerm._ObjectIdentity_}" /></ObjectPaths></Request>`;
|
|
114
|
+
const result = yield this.executeCsomCall(data, spoAdminUrl, res);
|
|
115
|
+
if (result._Child_Items_ && result._Child_Items_.length > 0) {
|
|
116
|
+
for (const term of result._Child_Items_) {
|
|
117
|
+
this.setTermDetails(term);
|
|
118
|
+
parentTerm.Children.push(term);
|
|
119
|
+
if (term.TermsCount > 0) {
|
|
120
|
+
yield this.getChildTerms(spoAdminUrl, res, term);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
setTermDetails(term) {
|
|
127
|
+
term.CreatedDate = this.parseTermDateToIsoString(term.CreatedDate);
|
|
128
|
+
term.Id = term.Id.replace('/Guid(', '').replace(')/', '');
|
|
129
|
+
term.LastModifiedDate = this.parseTermDateToIsoString(term.LastModifiedDate);
|
|
130
|
+
}
|
|
131
|
+
parseTermDateToIsoString(dateAsString) {
|
|
132
|
+
return new Date(Number(dateAsString.replace('/Date(', '').replace(')/', ''))).toISOString();
|
|
133
|
+
}
|
|
134
|
+
executeCsomCall(data, spoAdminUrl, res) {
|
|
135
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
136
|
+
const requestOptions = {
|
|
137
|
+
url: `${spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
|
|
138
|
+
headers: {
|
|
139
|
+
'X-RequestDigest': res.FormDigestValue
|
|
140
|
+
},
|
|
141
|
+
data: data
|
|
142
|
+
};
|
|
143
|
+
const processQuery = yield request_1.default.post(requestOptions);
|
|
144
|
+
const json = JSON.parse(processQuery);
|
|
145
|
+
const response = json[0];
|
|
146
|
+
if (response.ErrorInfo) {
|
|
147
|
+
throw response.ErrorInfo.ErrorMessage;
|
|
148
|
+
}
|
|
149
|
+
return json[json.length - 1];
|
|
150
|
+
});
|
|
151
|
+
}
|
|
81
152
|
}
|
|
82
153
|
_SpoTermListCommand_instances = new WeakSet(), _SpoTermListCommand_initTelemetry = function _SpoTermListCommand_initTelemetry() {
|
|
83
154
|
this.telemetry.push((args) => {
|
|
@@ -85,7 +156,8 @@ _SpoTermListCommand_instances = new WeakSet(), _SpoTermListCommand_initTelemetry
|
|
|
85
156
|
termGroupId: typeof args.options.termGroupId !== 'undefined',
|
|
86
157
|
termGroupName: typeof args.options.termGroupName !== 'undefined',
|
|
87
158
|
termSetId: typeof args.options.termSetId !== 'undefined',
|
|
88
|
-
termSetName: typeof args.options.termSetName !== 'undefined'
|
|
159
|
+
termSetName: typeof args.options.termSetName !== 'undefined',
|
|
160
|
+
includeChildTerms: !!args.options.includeChildTerms
|
|
89
161
|
});
|
|
90
162
|
});
|
|
91
163
|
}, _SpoTermListCommand_initOptions = function _SpoTermListCommand_initOptions() {
|
|
@@ -97,18 +169,16 @@ _SpoTermListCommand_instances = new WeakSet(), _SpoTermListCommand_initTelemetry
|
|
|
97
169
|
option: '--termSetId [termSetId]'
|
|
98
170
|
}, {
|
|
99
171
|
option: '--termSetName [termSetName]'
|
|
172
|
+
}, {
|
|
173
|
+
option: '--includeChildTerms'
|
|
100
174
|
});
|
|
101
175
|
}, _SpoTermListCommand_initValidators = function _SpoTermListCommand_initValidators() {
|
|
102
176
|
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
103
|
-
if (args.options.termGroupId) {
|
|
104
|
-
|
|
105
|
-
return `${args.options.termGroupId} is not a valid GUID`;
|
|
106
|
-
}
|
|
177
|
+
if (args.options.termGroupId && !validation_1.validation.isValidGuid(args.options.termGroupId)) {
|
|
178
|
+
return `${args.options.termGroupId} is not a valid GUID`;
|
|
107
179
|
}
|
|
108
|
-
if (args.options.termSetId) {
|
|
109
|
-
|
|
110
|
-
return `${args.options.termSetId} is not a valid GUID`;
|
|
111
|
-
}
|
|
180
|
+
if (args.options.termSetId && !validation_1.validation.isValidGuid(args.options.termSetId)) {
|
|
181
|
+
return `${args.options.termSetId} is not a valid GUID`;
|
|
112
182
|
}
|
|
113
183
|
return true;
|
|
114
184
|
}));
|
|
@@ -62,7 +62,9 @@ exports.default = {
|
|
|
62
62
|
FILE_ROLEINHERITANCE_BREAK: `${prefix} file roleinheritance break`,
|
|
63
63
|
FILE_ROLEINHERITANCE_RESET: `${prefix} file roleinheritance reset`,
|
|
64
64
|
FILE_SHARINGINFO_GET: `${prefix} file sharinginfo get`,
|
|
65
|
+
FILE_SHARINGLINK_GET: `${prefix} file sharinglink get`,
|
|
65
66
|
FILE_SHARINGLINK_LIST: `${prefix} file sharinglink list`,
|
|
67
|
+
FILE_SHARINGLINK_REMOVE: `${prefix} file sharinglink remove`,
|
|
66
68
|
FILE_VERSION_CLEAR: `${prefix} file version clear`,
|
|
67
69
|
FILE_VERSION_GET: `${prefix} file version get`,
|
|
68
70
|
FILE_VERSION_LIST: `${prefix} file version list`,
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# onenote page list
|
|
2
|
+
|
|
3
|
+
Retrieve a list of OneNote pages.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
m365 onenote page list [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
`--userId [userId]`
|
|
14
|
+
: Id of the user. Use either `userId`, `userName`, `groupId`, `groupName` or `webUrl` but not multiple.
|
|
15
|
+
|
|
16
|
+
`--userName [userName]`
|
|
17
|
+
: Name of the user. Use either `userId`, `userName`, `groupId`, `groupName` or `webUrl` but not multiple.
|
|
18
|
+
|
|
19
|
+
`--groupId [groupId]`
|
|
20
|
+
: Id of the SharePoint group. Use either `userId`, `userName`, `groupId`, `groupName` or `webUrl` but not multiple.
|
|
21
|
+
|
|
22
|
+
`--groupName [groupName]`
|
|
23
|
+
: Name of the SharePoint group. Use either `userId`, `userName`, `groupId`, `groupName` or `webUrl` but not multiple.
|
|
24
|
+
|
|
25
|
+
`-u, --webUrl [webUrl]`
|
|
26
|
+
: URL of the SharePoint site. Use either `userId`, `userName`, `groupId`, `groupName` or `webUrl` but not multiple.
|
|
27
|
+
|
|
28
|
+
--8<-- "docs/cmd/_global.md"
|
|
29
|
+
|
|
30
|
+
## Remarks
|
|
31
|
+
|
|
32
|
+
When we don't specify either `userId`, `userName`, `groupId`, `groupName` or `webUrl`, the OneNote pages will be retrieved of the currently logged in user.
|
|
33
|
+
|
|
34
|
+
## Examples
|
|
35
|
+
|
|
36
|
+
List Microsoft OneNote pages for the currently logged in user
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
m365 onenote page list
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
List Microsoft OneNote pages in a specific group specified by id
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
m365 onenote page list --groupId 233e43d0-dc6a-482e-9b4e-0de7a7bce9b4
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
List Microsoft OneNote pages in a specific group specified by name
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
m365 onenote page list --groupName "MyGroup"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
List Microsoft OneNote pages for a specific user specified by name
|
|
55
|
+
|
|
56
|
+
```sh
|
|
57
|
+
m365 onenote page list --userName user1@contoso.onmicrosoft.com
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
List Microsoft OneNote pages for a specific user specified by id
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
m365 onenote page list --userId 2609af39-7775-4f94-a3dc-0dd67657e900
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
List Microsoft OneNote pages for a specific site
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
m365 onenote page list --webUrl https://contoso.sharepoint.com/sites/testsite
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Response
|
|
73
|
+
|
|
74
|
+
=== "JSON"
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
[
|
|
78
|
+
{
|
|
79
|
+
"id": "1-a26aaec43ed348bd82edf4eb44e73d6c!68-3eb21088-b613-4698-98df-92a7d34e0678",
|
|
80
|
+
"self": "https://graph.microsoft.com/v1.0/users/john@contoso.com/onenote/pages/1-a26aaec43ed348bd82edf4eb44e73d6c!68-3eb21088-b613-4698-98df-92a7d34e0678",
|
|
81
|
+
"createdDateTime": "2023-01-07T10:57:15Z",
|
|
82
|
+
"title": "Page B",
|
|
83
|
+
"createdByAppId": "",
|
|
84
|
+
"contentUrl": "https://graph.microsoft.com/v1.0/users/john@contoso.com/onenote/pages/1-a26aaec43ed348bd82edf4eb44e73d6c!68-3eb21088-b613-4698-98df-92a7d34e0678/content",
|
|
85
|
+
"lastModifiedDateTime": "2023-01-07T10:57:17Z",
|
|
86
|
+
"links": {
|
|
87
|
+
"oneNoteClientUrl": {
|
|
88
|
+
"href": "onenote:https://contoso-my.sharepoint.com/personal/john_contoso_com/Documents/Notitieblokken/My%20OneNote/Test.one#Page%20B§ion-id=94cacaca-d6b5-428d-b967-d3cf01b95c28&page-id=46a1b220-7ffd-4512-a571-55322097c08d&end"
|
|
89
|
+
},
|
|
90
|
+
"oneNoteWebUrl": {
|
|
91
|
+
"href": "https://contoso-my.sharepoint.com/personal/john_contoso_com/Documents/Notitieblokken/My%20OneNote?wd=target%28Test.one%7C94cacaca-d6b5-428d-b967-d3cf01b95c28%2FPage%20B%7C46a1b220-7ffd-4512-a571-55322097c08d%2F%29"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"parentSection": {
|
|
95
|
+
"id": "1-3eb21088-b613-4698-98df-92a7d34e0678",
|
|
96
|
+
"displayName": "Test",
|
|
97
|
+
"self": "https://graph.microsoft.com/v1.0/users/john@contoso.com/onenote/sections/1-3eb21088-b613-4698-98df-92a7d34e0678"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
=== "Text"
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
createdDateTime title id
|
|
107
|
+
-------------------- ------ --------------------------------------------------------------------------
|
|
108
|
+
2023-01-07T10:57:15Z Page B 1-a26aaec43ed348bd82edf4eb44e73d6c!68-3eb21088-b613-4698-98df-92a7d34e0678
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
=== "CSV"
|
|
112
|
+
|
|
113
|
+
```csv
|
|
114
|
+
createdDateTime,title,id
|
|
115
|
+
2023-01-07T10:57:15Z,Page B,1-a26aaec43ed348bd82edf4eb44e73d6c!68-3eb21088-b613-4698-98df-92a7d34e0678
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
=== "Markdown"
|
|
119
|
+
|
|
120
|
+
```md
|
|
121
|
+
# onenote page list --userName "mathijs@mathijsdev2.onmicrosoft.com"
|
|
122
|
+
|
|
123
|
+
Date: 07/01/2023
|
|
124
|
+
|
|
125
|
+
## Page A (1-a26aaec43ed348bd82edf4eb44e73d6c!14-3eb21088-b613-4698-98df-92a7d34e0678)
|
|
126
|
+
|
|
127
|
+
## Page B (1-a26aaec43ed348bd82edf4eb44e73d6c!68-3eb21088-b613-4698-98df-92a7d34e0678)
|
|
128
|
+
|
|
129
|
+
Property | Value
|
|
130
|
+
---------|-------
|
|
131
|
+
id | 1-a26aaec43ed348bd82edf4eb44e73d6c!68-3eb21088-b613-4698-98df-92a7d34e0678
|
|
132
|
+
self | https://graph.microsoft.com/v1.0/users/john@contoso.com/onenote/pages/1-a26aaec43ed348bd82edf4eb44e73d6c!68-3eb21088-b613-4698-98df-92a7d34e0678
|
|
133
|
+
createdDateTime | 2023-01-07T10:57:15Z
|
|
134
|
+
title | Page B
|
|
135
|
+
createdByAppId |
|
|
136
|
+
contentUrl | https://graph.microsoft.com/v1.0/users/john@contoso.com/onenote/pages/1-a26aaec43ed348bd82edf4eb44e73d6c!68-3eb21088-b613-4698-98df-92a7d34e0678/content
|
|
137
|
+
lastModifiedDateTime | 2023-01-07T10:57:17Z
|
|
138
|
+
links | { "oneNoteClientUrl": { "href": "onenote:https://contoso-my.sharepoint.com/personal/john_contoso_com/Documents/Notitieblokken/My%20OneNote/Test.one#Page%20B& -id=94cacaca-d6b5-428d-b967-d3cf01b95c28&page-id=46a1b220-7ffd-4512-a571-55322097c08d&end" }, "oneNoteWebUrl": { "href": "https://contoso-my.sharepoint.com/personal/john_contoso_com/Documents/Notitieblokken/My%20OneNote?wd=target%28Test.one%7C94cacaca-d6b5-428d-b967-d3cf01b95c28%2FPage%20B%7C46a1b220-7ffd-4512-a571-55322097c08d%2F%29"}}
|
|
139
|
+
parentSection | {"id":"1-3eb21088-b613-4698-98df-92a7d34e0678","displayName":"Test","self":"https://graph.microsoft.com/v1.0/users/john@contoso.com/onenote/sections/1-3eb21088-b613-4698-98df-92a7d34e0678"}
|
|
140
|
+
```
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# purview retentionlabel add
|
|
2
|
+
|
|
3
|
+
Create a retention label
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
m365 purview retentionlabel add [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
`-n, --displayName <displayName>`
|
|
14
|
+
: The display name of the label.
|
|
15
|
+
|
|
16
|
+
`--behaviorDuringRetentionPeriod <behaviorDuringRetentionPeriod>`
|
|
17
|
+
: Specifies how the behavior of a document with this label should be during the retention period. Allowed values: `doNotRetain`, `retain`, `retainAsRecord`, `retainAsRegulatoryRecord`.
|
|
18
|
+
|
|
19
|
+
`--actionAfterRetentionPeriod <actionAfterRetentionPeriod>`
|
|
20
|
+
: Specifies the action to take on a document with this label applied after the retention period. Allowed values: `none`, `delete`, `startDispositionReview`.
|
|
21
|
+
|
|
22
|
+
`--retentionDuration <retentionDuration>`
|
|
23
|
+
: The number of days to retain the content.
|
|
24
|
+
|
|
25
|
+
`-t, --retentionTrigger [retentionTrigger]`
|
|
26
|
+
: Specifies whether the retention duration is calculated from the content creation date, labeled date, or last modification date. Allowed values: `dateLabeled`, `dateCreated`, `dateModified`, `dateOfEvent`. Defaults to `dateLabeled`.
|
|
27
|
+
|
|
28
|
+
`--defaultRecordBehavior [defaultRecordBehavior]`
|
|
29
|
+
: Specifies the locked or unlocked state of a record label when it is created. Allowed values: `startLocked`, `startUnlocked`, Defaults to `startLocked`.
|
|
30
|
+
|
|
31
|
+
`--descriptionForUsers [descriptionForUsers]`
|
|
32
|
+
: The label information for the user.
|
|
33
|
+
|
|
34
|
+
`--descriptionForAdmins [descriptionForAdmins]`
|
|
35
|
+
: The label information for the admin.
|
|
36
|
+
|
|
37
|
+
`--labelToBeApplied [labelToBeApplied]`
|
|
38
|
+
: Specifies the replacement label to be applied automatically after the retention period of the current label ends.
|
|
39
|
+
|
|
40
|
+
--8<-- "docs/cmd/_global.md"
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
|
|
44
|
+
Create a retention label that retains documents and deletes them after one year.
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
m365 purview retentionlabel add --displayName 'some label' --behaviorDuringRetentionPeriod retain --actionAfterRetentionPeriod delete --retentionDuration 365
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Create a retention label that retains documents as records and does not take any action one year after the last modification date.
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
m365 purview retentionlabel add --displayName 'some label' --behaviorDuringRetentionPeriod retainAsRecord --actionAfterRetentionPeriod none --retentionDuration 365 --retentionTrigger dateModified
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Remarks
|
|
57
|
+
|
|
58
|
+
!!! attention
|
|
59
|
+
This command is based on a Microsoft Graph API that is currently in preview and is subject to change once the API reached general availability.
|
|
60
|
+
|
|
61
|
+
## More information
|
|
62
|
+
|
|
63
|
+
- Create retentionLabel: [https://learn.microsoft.com/en-us/graph/api/security-retentionlabel-post?view=graph-rest-beta&tabs=http](https://learn.microsoft.com/en-us/graph/api/security-retentionlabel-post?view=graph-rest-beta&tabs=http)
|
|
64
|
+
|
|
65
|
+
## Response
|
|
66
|
+
|
|
67
|
+
=== "JSON"
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"displayName": "some label",
|
|
72
|
+
"descriptionForAdmins": "Description for admins",
|
|
73
|
+
"descriptionForUsers": "Description for users",
|
|
74
|
+
"isInUse": false,
|
|
75
|
+
"retentionTrigger": "dateLabeled",
|
|
76
|
+
"behaviorDuringRetentionPeriod": "retain",
|
|
77
|
+
"actionAfterRetentionPeriod": "delete",
|
|
78
|
+
"createdDateTime": "2022-12-21T09:28:37Z",
|
|
79
|
+
"lastModifiedDateTime": "2022-12-21T09:28:37Z",
|
|
80
|
+
"labelToBeApplied": "another label",
|
|
81
|
+
"defaultRecordBehavior": "startLocked",
|
|
82
|
+
"id": "f7e05955-210b-4a8e-a5de-3c64cfa6d9be",
|
|
83
|
+
"retentionDuration": {
|
|
84
|
+
"days": 365
|
|
85
|
+
},
|
|
86
|
+
"createdBy": {
|
|
87
|
+
"user": {
|
|
88
|
+
"id": null,
|
|
89
|
+
"displayName": "John Doe"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"lastModifiedBy": {
|
|
93
|
+
"user": {
|
|
94
|
+
"id": null,
|
|
95
|
+
"displayName": "John Doe"
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"dispositionReviewStages": []
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
=== "Text"
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
actionAfterRetentionPeriod : delete
|
|
106
|
+
behaviorDuringRetentionPeriod: retain
|
|
107
|
+
createdBy : {"user":{"id":null,"displayName":"John Doe"}}
|
|
108
|
+
createdDateTime : 2022-12-21T09:32:38Z
|
|
109
|
+
defaultRecordBehavior : startLocked
|
|
110
|
+
descriptionForAdmins : Description for admins
|
|
111
|
+
descriptionForUsers : Description for users
|
|
112
|
+
displayName : some label
|
|
113
|
+
dispositionReviewStages : []
|
|
114
|
+
id : 3b388f3c-541b-4696-ad0e-83f960695d89
|
|
115
|
+
isInUse : false
|
|
116
|
+
labelToBeApplied : another label
|
|
117
|
+
lastModifiedBy : {"user":{"id":null,"displayName":"John Doe"}}
|
|
118
|
+
lastModifiedDateTime : 2022-12-21T09:32:38Z
|
|
119
|
+
retentionDuration : {"days":365}
|
|
120
|
+
retentionTrigger : dateLabeled
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
=== "CSV"
|
|
124
|
+
|
|
125
|
+
```csv
|
|
126
|
+
displayName,descriptionForAdmins,descriptionForUsers,isInUse,retentionTrigger,behaviorDuringRetentionPeriod,actionAfterRetentionPeriod,createdDateTime,lastModifiedDateTime,labelToBeApplied,defaultRecordBehavior,id,retentionDuration,createdBy,lastModifiedBy,dispositionReviewStages
|
|
127
|
+
some label,Description for admins,Description for users,,dateLabeled,retain,delete,2022-12-21T09:33:32Z,2022-12-21T09:33:32Z,another label,startLocked,cfc8b132-7aef-45f4-9fcf-3c199090ba2a,"{""days"":365}","{""user"":{""id"":null,""displayName"":""John Doe""}}","{""user"":{""id"":null,""displayName"":""John Doe""}}",[]
|
|
128
|
+
```
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# spo file sharinglink get
|
|
2
|
+
|
|
3
|
+
Gets details about a specific sharing link of a file
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
m365 spo file sharinglink get [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
`-u, --webUrl <webUrl>`
|
|
14
|
+
: The URL of the site where the file is located.
|
|
15
|
+
|
|
16
|
+
`--fileUrl [fileUrl]`
|
|
17
|
+
: The server-relative (decoded) URL of the file. Specify either `fileUrl` or `fileId` but not both.
|
|
18
|
+
|
|
19
|
+
`--fileId [fileId]`
|
|
20
|
+
: The UniqueId (GUID) of the file. Specify either `fileUrl` or `fileId` but not both.
|
|
21
|
+
|
|
22
|
+
`-i, --id <id>`
|
|
23
|
+
: The ID of the sharing link.
|
|
24
|
+
|
|
25
|
+
--8<-- "docs/cmd/_global.md"
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
Gets a specific sharing link of a file by id.
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
m365 spo file sharinglink get --webUrl 'https://contoso.sharepoint.com/sites/demo' --fileId daebb04b-a773-4baa-b1d1-3625418e3234 --id 1ba739c5-e693-4c16-9dfa-042e4ec62972
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Gets a specific sharing link of a file by a specified site-relative URL.
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
m365 spo file sharinglink get --webUrl 'https://contoso.sharepoint.com/sites/demo' --fileUrl 'Shared Documents/document.docx' --id 1ba739c5-e693-4c16-9dfa-042e4ec62972
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Gets a specific sharing link of a file by a specified server-relative URL.
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
m365 spo file sharinglink get --webUrl 'https://contoso.sharepoint.com/sites/demo' --fileUrl '/sites/demo/Shared Documents/document.docx' --id 1ba739c5-e693-4c16-9dfa-042e4ec62972
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Response
|
|
48
|
+
|
|
49
|
+
=== "JSON"
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"id": "1ba739c5-e693-4c16-9dfa-042e4ec62972",
|
|
54
|
+
"roles": [
|
|
55
|
+
"write"
|
|
56
|
+
],
|
|
57
|
+
"hasPassword": false,
|
|
58
|
+
"grantedToIdentitiesV2": [
|
|
59
|
+
{
|
|
60
|
+
"user": {
|
|
61
|
+
"displayName": "John Doe",
|
|
62
|
+
"email": "john@contoso.onmicrosoft.com",
|
|
63
|
+
"id": "04355ecd-2124-4097-bc2b-c2295a71d7a3"
|
|
64
|
+
},
|
|
65
|
+
"siteUser": {
|
|
66
|
+
"displayName": "John Doe",
|
|
67
|
+
"email": "john@contoso.onmicrosoft.com",
|
|
68
|
+
"id": "11",
|
|
69
|
+
"loginName": "i:0#.f|membership|john@contoso.onmicrosoft.com"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"grantedToIdentities": [
|
|
74
|
+
{
|
|
75
|
+
"user": {
|
|
76
|
+
"displayName": "John Doe",
|
|
77
|
+
"email": "john@contoso.onmicrosoft.com",
|
|
78
|
+
"id": "04355ecd-2124-4097-bc2b-c2295a71d7a3"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"link": {
|
|
83
|
+
"scope": "organization",
|
|
84
|
+
"type": "edit",
|
|
85
|
+
"webUrl": "https://contoso.sharepoint.com/:w:/s/demo/EecoJa3lri9Hu9NWp-W0aBQB8ZqmGqA5tdIiaab4o-6BZw",
|
|
86
|
+
"preventsDownload": false
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
=== "Text"
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
grantedToIdentities : [{"user":{"displayName":"John Doe","email":"john@contoso.onmicrosoft.com","id":"04355ecd-2124-4097-bc2b-c2295a71d7a3"}}]
|
|
95
|
+
grantedToIdentitiesV2: [{"user":{"displayName":"John Doe","email":"john@contoso.onmicrosoft.com","id":"04355ecd-2124-4097-bc2b-c2295a71d7a3"},"siteUser":{"displayName":"John Doe","email":"john@contoso.onmicrosoft.com","id":"11","loginName":"i:0#.f|membership|john@contoso.onmicrosoft.com"}}]
|
|
96
|
+
hasPassword : false
|
|
97
|
+
id : 1ba739c5-e693-4c16-9dfa-042e4ec62972
|
|
98
|
+
link : {"scope":"organization","type":"edit","webUrl":"https://contoso.sharepoint.com/:w:/s/demo/EecoJa3lri9Hu9NWp-W0aBQB8ZqmGqA5tdIiaab4o-6BZw","preventsDownload":false}
|
|
99
|
+
roles : ["write"]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
=== "CSV"
|
|
103
|
+
|
|
104
|
+
```csv
|
|
105
|
+
id,roles,hasPassword,grantedToIdentitiesV2,grantedToIdentities,link
|
|
106
|
+
1ba739c5-e693-4c16-9dfa-042e4ec62972,"[""write""]",,"[{""user"":{""displayName"":""John Doe"",""email"":""john@contoso.onmicrosoft.com"",""id"":""04355ecd-2124-4097-bc2b-c2295a71d7a3""},""siteUser"":{""displayName"":""John Doe"",""email"":""john@contoso.onmicrosoft.com"",""id"":""11"",""loginName"":""i:0#.f|membership|john@contoso.onmicrosoft.com""}}]","[{""user"":{""displayName"":""John Doe"",""email"":""john@contoso.onmicrosoft.com"",""id"":""04355ecd-2124-4097-bc2b-c2295a71d7a3""}}]","{""scope"":""organization"",""type"":""edit"",""webUrl"":""https://contoso.sharepoint.com/:w:/s/demo/EecoJa3lri9Hu9NWp-W0aBQB8ZqmGqA5tdIiaab4o-6BZw"",""preventsDownload"":false}"
|
|
107
|
+
```
|