@pnp/cli-microsoft365 6.3.0-beta.a991329 → 6.3.0-beta.ad6d08e
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/.eslintrc.js +8 -0
- package/dist/Command.js +4 -4
- package/dist/cli/Cli.js +38 -0
- package/dist/m365/aad/commands/user/user-recyclebinitem-clear.js +103 -0
- package/dist/m365/aad/commands/user/user-recyclebinitem-remove.js +92 -0
- package/dist/m365/aad/commands.js +2 -0
- package/dist/m365/base/O365MgmtCommand.js +10 -0
- package/dist/m365/context/commands/option/option-list.js +54 -0
- package/dist/m365/context/commands.js +1 -0
- package/dist/m365/pa/commands/environment/environment-get.js +13 -5
- package/dist/m365/planner/commands/plan/plan-get.js +40 -26
- package/dist/m365/planner/commands/plan/plan-list.js +24 -14
- package/dist/m365/planner/commands/plan/plan-set.js +21 -10
- package/dist/m365/planner/commands/roster/roster-get.js +61 -0
- package/dist/m365/planner/commands/roster/roster-member-add.js +113 -0
- package/dist/m365/planner/commands/roster/roster-member-list.js +54 -0
- package/dist/m365/planner/commands/roster/roster-member-remove.js +140 -0
- package/dist/m365/planner/commands/task/task-add.js +3 -0
- package/dist/m365/planner/commands.js +4 -0
- package/dist/m365/pp/commands/environment/environment-get.js +18 -9
- package/dist/m365/purview/commands/auditlog/auditlog-list.js +205 -0
- package/dist/m365/purview/commands/retentionevent/retentionevent-get.js +75 -0
- package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +46 -0
- package/dist/m365/purview/commands/retentionevent/retentionevent-remove.js +97 -0
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-add.js +77 -0
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-get.js +13 -8
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +43 -0
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-remove.js +97 -0
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-set.js +90 -0
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +5 -0
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-get.js +5 -0
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-list.js +5 -0
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-remove.js +5 -0
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-set.js +11 -1
- package/dist/m365/purview/commands.js +8 -0
- package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-add.js +95 -0
- package/dist/m365/spo/commands/customaction/customaction-get.js +17 -66
- package/dist/m365/spo/commands/customaction/customaction-list.js +2 -36
- package/dist/m365/spo/commands/customaction/customaction-remove.js +11 -18
- package/dist/m365/spo/commands/file/GraphFileDetails.js +0 -1
- package/dist/m365/spo/commands/file/file-sharinglink-add.js +2 -22
- package/dist/m365/spo/commands/file/file-sharinglink-clear.js +137 -0
- package/dist/m365/spo/commands/file/file-sharinglink-get.js +2 -25
- package/dist/m365/spo/commands/file/file-sharinglink-list.js +7 -28
- package/dist/m365/spo/commands/file/file-sharinglink-remove.js +2 -25
- package/dist/m365/spo/commands/file/file-sharinglink-set.js +104 -0
- package/dist/m365/spo/commands/listitem/listitem-add.js +2 -1
- package/dist/m365/spo/commands/navigation/navigation-node-get.js +73 -0
- package/dist/m365/spo/commands/sitedesign/sitedesign-add.js +6 -0
- package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-add.js +179 -0
- package/dist/m365/spo/commands.js +5 -0
- package/dist/utils/aadUser.js +38 -0
- package/dist/utils/planner.js +13 -2
- package/dist/utils/spo.js +89 -0
- package/docs/docs/cmd/aad/user/user-recyclebinitem-clear.md +42 -0
- package/docs/docs/cmd/aad/user/user-recyclebinitem-remove.md +45 -0
- package/docs/docs/cmd/context/option/option-list.md +63 -0
- package/docs/docs/cmd/login.md +26 -0
- package/docs/docs/cmd/logout.md +4 -0
- package/docs/docs/cmd/pa/app/app-get.md +24 -0
- package/docs/docs/cmd/pa/app/app-list.md +21 -0
- package/docs/docs/cmd/pa/connector/connector-list.md +17 -0
- package/docs/docs/cmd/pa/environment/environment-get.md +26 -2
- package/docs/docs/cmd/pa/environment/environment-list.md +19 -0
- package/docs/docs/cmd/planner/plan/plan-get.md +21 -7
- package/docs/docs/cmd/planner/plan/plan-list.md +16 -2
- package/docs/docs/cmd/planner/plan/plan-set.md +10 -4
- package/docs/docs/cmd/planner/roster/roster-get.md +73 -0
- package/docs/docs/cmd/planner/roster/roster-member-add.md +87 -0
- package/docs/docs/cmd/planner/roster/roster-member-list.md +76 -0
- package/docs/docs/cmd/planner/roster/roster-member-remove.md +51 -0
- package/docs/docs/cmd/pp/aibuildermodel/aibuildermodel-get.md +43 -0
- package/docs/docs/cmd/pp/aibuildermodel/aibuildermodel-list.md +43 -0
- package/docs/docs/cmd/pp/card/card-clone.md +12 -0
- package/docs/docs/cmd/pp/card/card-get.md +49 -0
- package/docs/docs/cmd/pp/card/card-list.md +49 -0
- package/docs/docs/cmd/pp/chatbot/chatbot-get.md +55 -0
- package/docs/docs/cmd/pp/chatbot/chatbot-list.md +36 -0
- package/docs/docs/cmd/pp/dataverse/dataverse-table-get.md +30 -0
- package/docs/docs/cmd/pp/dataverse/dataverse-table-list.md +30 -0
- package/docs/docs/cmd/pp/dataverse/dataverse-table-row-list.md +30 -0
- package/docs/docs/cmd/pp/environment/environment-get.md +19 -0
- package/docs/docs/cmd/pp/environment/environment-list.md +19 -0
- package/docs/docs/cmd/pp/gateway/gateway-get.md +19 -0
- package/docs/docs/cmd/pp/gateway/gateway-list.md +19 -0
- package/docs/docs/cmd/pp/managementapp/managementapp-add.md +12 -0
- package/docs/docs/cmd/pp/managementapp/managementapp-list.md +12 -0
- package/docs/docs/cmd/pp/solution/solution-get.md +14 -0
- package/docs/docs/cmd/pp/solution/solution-list.md +14 -0
- package/docs/docs/cmd/pp/solution/solution-publisher-get.md +20 -1
- package/docs/docs/cmd/pp/solution/solution-publisher-list.md +18 -0
- package/docs/docs/cmd/pp/tenant/tenant-settings-list.md +21 -0
- package/docs/docs/cmd/purview/auditlog/auditlog-list.md +123 -0
- package/docs/docs/cmd/purview/retentionevent/retentionevent-get.md +132 -0
- package/docs/docs/cmd/purview/retentionevent/retentionevent-list.md +107 -0
- package/docs/docs/cmd/purview/retentionevent/retentionevent-remove.md +45 -0
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.md +106 -0
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.md +3 -0
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-list.md +97 -0
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-remove.md +43 -0
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-set.md +43 -0
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.md +3 -0
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-get.md +3 -0
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-list.md +3 -0
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-remove.md +3 -0
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-set.md +3 -0
- package/docs/docs/cmd/request.md +74 -0
- package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-add.md +56 -0
- package/docs/docs/cmd/spo/file/file-sharinglink-clear.md +46 -0
- package/docs/docs/cmd/spo/file/file-sharinglink-list.md +1 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-set.md +104 -0
- package/docs/docs/cmd/spo/list/list-contenttype-add.md +1 -1
- package/docs/docs/cmd/spo/list/list-contenttype-default-set.md +1 -1
- package/docs/docs/cmd/spo/list/list-contenttype-list.md +1 -1
- package/docs/docs/cmd/spo/list/list-contenttype-remove.md +1 -1
- package/docs/docs/cmd/spo/navigation/navigation-node-get.md +91 -0
- package/docs/docs/cmd/spo/sitedesign/sitedesign-add.md +3 -0
- package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-add.md +59 -0
- package/docs/docs/cmd/status.md +46 -0
- package/docs/docs/cmd/version.md +26 -0
- package/npm-shrinkwrap.json +911 -876
- package/package.json +12 -12
|
@@ -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
|
|
@@ -13,6 +13,7 @@ exports.default = {
|
|
|
13
13
|
APP_TEAMSPACKAGE_DOWNLOAD: `${prefix} app teamspackage download`,
|
|
14
14
|
APP_UNINSTALL: `${prefix} app uninstall`,
|
|
15
15
|
APP_UPGRADE: `${prefix} app upgrade`,
|
|
16
|
+
APPLICATIONCUSTOMIZER_ADD: `${prefix} applicationcustomizer add`,
|
|
16
17
|
APPPAGE_ADD: `${prefix} apppage add`,
|
|
17
18
|
APPPAGE_SET: `${prefix} apppage set`,
|
|
18
19
|
CDN_GET: `${prefix} cdn get`,
|
|
@@ -65,9 +66,11 @@ exports.default = {
|
|
|
65
66
|
FILE_ROLEINHERITANCE_RESET: `${prefix} file roleinheritance reset`,
|
|
66
67
|
FILE_SHARINGINFO_GET: `${prefix} file sharinginfo get`,
|
|
67
68
|
FILE_SHARINGLINK_ADD: `${prefix} file sharinglink add`,
|
|
69
|
+
FILE_SHARINGLINK_CLEAR: `${prefix} file sharinglink clear`,
|
|
68
70
|
FILE_SHARINGLINK_GET: `${prefix} file sharinglink get`,
|
|
69
71
|
FILE_SHARINGLINK_LIST: `${prefix} file sharinglink list`,
|
|
70
72
|
FILE_SHARINGLINK_REMOVE: `${prefix} file sharinglink remove`,
|
|
73
|
+
FILE_SHARINGLINK_SET: `${prefix} file sharinglink set`,
|
|
71
74
|
FILE_VERSION_CLEAR: `${prefix} file version clear`,
|
|
72
75
|
FILE_VERSION_GET: `${prefix} file version get`,
|
|
73
76
|
FILE_VERSION_LIST: `${prefix} file version list`,
|
|
@@ -165,6 +168,7 @@ exports.default = {
|
|
|
165
168
|
LISTITEM_SET: `${prefix} listitem set`,
|
|
166
169
|
MAIL_SEND: `${prefix} mail send`,
|
|
167
170
|
NAVIGATION_NODE_ADD: `${prefix} navigation node add`,
|
|
171
|
+
NAVIGATION_NODE_GET: `${prefix} navigation node get`,
|
|
168
172
|
NAVIGATION_NODE_LIST: `${prefix} navigation node list`,
|
|
169
173
|
NAVIGATION_NODE_REMOVE: `${prefix} navigation node remove`,
|
|
170
174
|
NAVIGATION_NODE_SET: `${prefix} navigation node set`,
|
|
@@ -274,6 +278,7 @@ exports.default = {
|
|
|
274
278
|
STORAGEENTITY_REMOVE: `${prefix} storageentity remove`,
|
|
275
279
|
TENANT_APPCATALOG_ADD: `${prefix} tenant appcatalog add`,
|
|
276
280
|
TENANT_APPCATALOGURL_GET: `${prefix} tenant appcatalogurl get`,
|
|
281
|
+
TENANT_APPLICATIONCUSTOMIZER_ADD: `${prefix} tenant applicationcustomizer add`,
|
|
277
282
|
TENANT_RECYCLEBINITEM_LIST: `${prefix} tenant recyclebinitem list`,
|
|
278
283
|
TENANT_RECYCLEBINITEM_REMOVE: `${prefix} tenant recyclebinitem remove`,
|
|
279
284
|
TENANT_RECYCLEBINITEM_RESTORE: `${prefix} tenant recyclebinitem restore`,
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.aadUser = void 0;
|
|
13
|
+
const request_1 = require("../request");
|
|
14
|
+
const formatting_1 = require("./formatting");
|
|
15
|
+
const graphResource = 'https://graph.microsoft.com';
|
|
16
|
+
exports.aadUser = {
|
|
17
|
+
/**
|
|
18
|
+
* Retrieve the id of a user by its UPN.
|
|
19
|
+
* @param upn User UPN.
|
|
20
|
+
*/
|
|
21
|
+
getUserIdByUpn(upn) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
const requestOptions = {
|
|
24
|
+
url: `${graphResource}/v1.0/users?$filter=userPrincipalName eq '${formatting_1.formatting.encodeQueryParameter(upn)}'&$select=Id`,
|
|
25
|
+
headers: {
|
|
26
|
+
accept: 'application/json;odata.metadata=none'
|
|
27
|
+
},
|
|
28
|
+
responseType: 'json'
|
|
29
|
+
};
|
|
30
|
+
const res = yield request_1.default.get(requestOptions);
|
|
31
|
+
if (res.value.length === 0) {
|
|
32
|
+
throw Error(`The specified user with user name ${upn} does not exist.`);
|
|
33
|
+
}
|
|
34
|
+
return res.value[0].id;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=aadUser.js.map
|
package/dist/utils/planner.js
CHANGED
|
@@ -44,14 +44,25 @@ exports.planner = {
|
|
|
44
44
|
getPlansByGroupId(groupId, metadata = 'none') {
|
|
45
45
|
return odata_1.odata.getAllItems(`${graphResource}/v1.0/groups/${groupId}/planner/plans`, metadata);
|
|
46
46
|
},
|
|
47
|
+
/**
|
|
48
|
+
* Get all Planner plans for a specific roster.
|
|
49
|
+
* @param rosterId Roster ID.
|
|
50
|
+
*/
|
|
51
|
+
getPlansByRosterId(rosterId, metadata = 'none') {
|
|
52
|
+
return odata_1.odata.getAllItems(`${graphResource}/beta/planner/rosters/${rosterId}/plans`, metadata);
|
|
53
|
+
},
|
|
47
54
|
/**
|
|
48
55
|
* Get Planner plan by title in a specific group.
|
|
49
56
|
* @param title Title of the Planner plan. Case insensitive.
|
|
50
|
-
* @param groupId Owner group ID
|
|
57
|
+
* @param groupId Owner group ID.
|
|
58
|
+
* @param rosterId Roster ID.
|
|
51
59
|
*/
|
|
52
60
|
getPlanByTitle(title, groupId, metadata = 'none') {
|
|
53
61
|
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
-
|
|
62
|
+
let plans = [];
|
|
63
|
+
if (groupId) {
|
|
64
|
+
plans = yield this.getPlansByGroupId(groupId, metadata);
|
|
65
|
+
}
|
|
55
66
|
const filteredPlans = plans.filter(p => p.title && p.title.toLowerCase() === title.toLowerCase());
|
|
56
67
|
if (!filteredPlans.length) {
|
|
57
68
|
throw Error(`The specified plan '${title}' does not exist.`);
|
package/dist/utils/spo.js
CHANGED
|
@@ -18,6 +18,7 @@ const config_1 = require("../config");
|
|
|
18
18
|
const base_permissions_1 = require("../m365/spo/base-permissions");
|
|
19
19
|
const request_1 = require("../request");
|
|
20
20
|
const formatting_1 = require("./formatting");
|
|
21
|
+
const odata_1 = require("./odata");
|
|
21
22
|
exports.spo = {
|
|
22
23
|
getRequestDigest(siteUrl) {
|
|
23
24
|
const requestOptions = {
|
|
@@ -456,6 +457,94 @@ exports.spo = {
|
|
|
456
457
|
reject('Cannot proceed. Folder _ObjectIdentity_ not found'); // this is not suppose to happen
|
|
457
458
|
}, (err) => { reject(err); });
|
|
458
459
|
});
|
|
460
|
+
},
|
|
461
|
+
/**
|
|
462
|
+
* Retrieves the SiteId, VroomItemId and VroomDriveId from a specific file.
|
|
463
|
+
* @param webUrl Web url
|
|
464
|
+
* @param fileId GUID ID of the file
|
|
465
|
+
* @param fileUrl Decoded URL of the file
|
|
466
|
+
*/
|
|
467
|
+
getVroomFileDetails(webUrl, fileId, fileUrl) {
|
|
468
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
469
|
+
let requestUrl = `${webUrl}/_api/web/`;
|
|
470
|
+
if (fileUrl) {
|
|
471
|
+
const fileServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(webUrl, fileUrl);
|
|
472
|
+
requestUrl += `GetFileByServerRelativePath(decodedUrl='${formatting_1.formatting.encodeQueryParameter(fileServerRelativeUrl)}')`;
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
requestUrl += `GetFileById('${fileId}')`;
|
|
476
|
+
}
|
|
477
|
+
requestUrl += '?$select=SiteId,VroomItemId,VroomDriveId';
|
|
478
|
+
const requestOptions = {
|
|
479
|
+
url: requestUrl,
|
|
480
|
+
headers: {
|
|
481
|
+
accept: 'application/json;odata=nometadata'
|
|
482
|
+
},
|
|
483
|
+
responseType: 'json'
|
|
484
|
+
};
|
|
485
|
+
const res = yield request_1.default.get(requestOptions);
|
|
486
|
+
return res;
|
|
487
|
+
});
|
|
488
|
+
},
|
|
489
|
+
/**
|
|
490
|
+
* Retrieves a list of Custom Actions from a SharePoint site.
|
|
491
|
+
* @param webUrl Web url
|
|
492
|
+
* @param scope The scope of custom actions to retrieve, allowed values "Site", "Web" or "All".
|
|
493
|
+
* @param filter An OData filter query to limit the results.
|
|
494
|
+
*/
|
|
495
|
+
getCustomActions(webUrl, scope, filter) {
|
|
496
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
497
|
+
if (scope && scope !== "All" && scope !== "Site" && scope !== "Web") {
|
|
498
|
+
throw `Invalid scope '${scope}'. Allowed values are 'Site', 'Web' or 'All'.`;
|
|
499
|
+
}
|
|
500
|
+
const queryString = filter ? `?$filter=${filter}` : "";
|
|
501
|
+
if (scope && scope !== "All") {
|
|
502
|
+
return yield odata_1.odata.getAllItems(`${webUrl}/_api/${scope}/UserCustomActions${queryString}`);
|
|
503
|
+
}
|
|
504
|
+
const customActions = [
|
|
505
|
+
...yield odata_1.odata.getAllItems(`${webUrl}/_api/Site/UserCustomActions${queryString}`),
|
|
506
|
+
...yield odata_1.odata.getAllItems(`${webUrl}/_api/Web/UserCustomActions${queryString}`)
|
|
507
|
+
];
|
|
508
|
+
return customActions;
|
|
509
|
+
});
|
|
510
|
+
},
|
|
511
|
+
/**
|
|
512
|
+
* Retrieves a Custom Actions from a SharePoint site by Id.
|
|
513
|
+
* @param webUrl Web url
|
|
514
|
+
* @param id The Id of the Custom Action
|
|
515
|
+
* @param scope The scope of custom actions to retrieve, allowed values "Site", "Web" or "All".
|
|
516
|
+
*/
|
|
517
|
+
getCustomActionById(webUrl, id, scope) {
|
|
518
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
519
|
+
if (scope && scope !== "All" && scope !== "Site" && scope !== "Web") {
|
|
520
|
+
throw `Invalid scope '${scope}'. Allowed values are 'Site', 'Web' or 'All'.`;
|
|
521
|
+
}
|
|
522
|
+
function getById(webUrl, id, scope) {
|
|
523
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
524
|
+
const requestOptions = {
|
|
525
|
+
url: `${webUrl}/_api/${scope}/UserCustomActions(guid'${id}')`,
|
|
526
|
+
headers: {
|
|
527
|
+
accept: 'application/json;odata=nometadata'
|
|
528
|
+
},
|
|
529
|
+
responseType: 'json'
|
|
530
|
+
};
|
|
531
|
+
const result = yield request_1.default.get(requestOptions);
|
|
532
|
+
if (result["odata.null"] === true) {
|
|
533
|
+
return undefined;
|
|
534
|
+
}
|
|
535
|
+
return result;
|
|
536
|
+
});
|
|
537
|
+
}
|
|
538
|
+
if (scope && scope !== "All") {
|
|
539
|
+
return yield getById(webUrl, id, scope);
|
|
540
|
+
}
|
|
541
|
+
const customActionOnWeb = yield getById(webUrl, id, "Web");
|
|
542
|
+
if (customActionOnWeb) {
|
|
543
|
+
return customActionOnWeb;
|
|
544
|
+
}
|
|
545
|
+
const customActionOnSite = yield getById(webUrl, id, "Site");
|
|
546
|
+
return customActionOnSite;
|
|
547
|
+
});
|
|
459
548
|
}
|
|
460
549
|
};
|
|
461
550
|
//# sourceMappingURL=spo.js.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# aad user recyclebinitem clear
|
|
2
|
+
|
|
3
|
+
Removes all users from the tenant recycle bin
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
m365 aad user recyclebinitem clear [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
`--confirm`
|
|
14
|
+
: Don't prompt for confirmation.
|
|
15
|
+
|
|
16
|
+
--8<-- "docs/cmd/_global.md"
|
|
17
|
+
|
|
18
|
+
## Remarks
|
|
19
|
+
|
|
20
|
+
!!! important
|
|
21
|
+
To use this command you must be a Global administrator, User administrator or Privileged Authentication administrator
|
|
22
|
+
|
|
23
|
+
!!! note
|
|
24
|
+
After running this command, it may take a minute before all deleted users are effectively removed from the tenant.
|
|
25
|
+
|
|
26
|
+
## Examples
|
|
27
|
+
|
|
28
|
+
Removes all users from the tenant recycle bin
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
m365 aad user recyclebinitem clear
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Removes all users from the tenant recycle bin without confirmation prompt
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
m365 aad user recyclebinitem clear --confirm
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Response
|
|
41
|
+
|
|
42
|
+
The command won't return a response on success.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# aad user recyclebinitem remove
|
|
2
|
+
|
|
3
|
+
Removes a user from the recycle bin in the current tenant
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
m365 aad user recyclebinitem remove [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
`--id <id>`
|
|
14
|
+
: ID of the deleted user.
|
|
15
|
+
|
|
16
|
+
`--confirm`
|
|
17
|
+
: Don't prompt for confirmation.
|
|
18
|
+
|
|
19
|
+
--8<-- "docs/cmd/_global.md"
|
|
20
|
+
|
|
21
|
+
## Remarks
|
|
22
|
+
|
|
23
|
+
!!! important
|
|
24
|
+
To use this command you must be a Global administrator, User administrator or Privileged Authentication administrator
|
|
25
|
+
|
|
26
|
+
!!! note
|
|
27
|
+
After running this command, it may take a minute before the deleted user is effectively removed from the tenant.
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
Removes a specific user from the recycle bin
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
m365 aad user recyclebinitem remove --id 59f80e08-24b1-41f8-8586-16765fd830d3
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Removes a specific user from the recycle bin without confirmation prompt
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
m365 aad user recyclebinitem remove --id 59f80e08-24b1-41f8-8586-16765fd830d3 --confirm
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Response
|
|
44
|
+
|
|
45
|
+
The command won't return a response on success.
|
|
@@ -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
|
+
```
|
package/docs/docs/cmd/login.md
CHANGED
|
@@ -159,3 +159,29 @@ Log in to Microsoft 365 using a client secret.
|
|
|
159
159
|
```sh
|
|
160
160
|
m365 login --authType secret --secret topSeCr3t@007
|
|
161
161
|
```
|
|
162
|
+
|
|
163
|
+
## Response
|
|
164
|
+
|
|
165
|
+
=== "JSON"
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code CQBMTLEFC to authenticate.
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
=== "Text"
|
|
172
|
+
|
|
173
|
+
```text
|
|
174
|
+
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code CQBMTLEFC to authenticate.
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
=== "CSV"
|
|
178
|
+
|
|
179
|
+
```csv
|
|
180
|
+
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code CQBMTLEFC to authenticate.
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
=== "Markdown"
|
|
184
|
+
|
|
185
|
+
```md
|
|
186
|
+
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code CQBMTLEFC to authenticate.
|
|
187
|
+
```
|
package/docs/docs/cmd/logout.md
CHANGED
|
@@ -222,3 +222,27 @@ m365 pa app get --displayName App
|
|
|
222
222
|
name,displayName,description,appVersion,owner
|
|
223
223
|
37ea6004-f07b-46ca-8ef3-a256b67b4dbb,PowerApps Application,App Description,2022-10-25T21:28:12Z,user@tenant.onmicrosoft.com
|
|
224
224
|
```
|
|
225
|
+
|
|
226
|
+
=== "Markdown"
|
|
227
|
+
|
|
228
|
+
```md
|
|
229
|
+
# pa app get --displayName "PowerApps Application"
|
|
230
|
+
|
|
231
|
+
Date: 9/1/2023
|
|
232
|
+
|
|
233
|
+
## PowerApps Application (/providers/Microsoft.PowerApps/apps/fe36f75e-c103-410b-a18a-2bf6df06ac3a)
|
|
234
|
+
|
|
235
|
+
Property | Value
|
|
236
|
+
---------|-------
|
|
237
|
+
name | fe36f75e-c103-410b-a18a-2bf6df06ac3a
|
|
238
|
+
id | /providers/Microsoft.PowerApps/apps/fe36f75e-c103-410b-a18a-2bf6df06ac3a
|
|
239
|
+
type | Microsoft.PowerApps/apps
|
|
240
|
+
tags | {"primaryDeviceWidth":"1366","primaryDeviceHeight":"768","supportsPortrait":"true","supportsLandscape":"true","primaryFormFactor":"Tablet","publisherVersion":"3.22102.32","minimumRequiredApiVersion":"2.2.0","hasComponent":"false","hasUnlockedComponent":"false","isUnifiedRootApp":"false","sienaVersion":"20221025T212812Z-3.22102.32.0"}
|
|
241
|
+
properties | {"appVersion":"2022-10-25T21:28:12Z","lastDraftVersion":"2022-10-25T21:28:12Z","lifeCycleId":"Published","status":"Ready","createdByClientVersion":{"major":3,"minor":22102,"build":32,"revision":0,"majorRevision":0,"minorRevision":0},"minClientVersion":{"major":3,"minor":22102,"build":32,"revision":0,"majorRevision":0,"minorRevision":0},"owner":{"id":"fe36f75e-c103-410b-a18a-2bf6df06ac3a","displayName":"contoso","email":"user@contoso.onmicrosoft.com","type":"User","tenantId":"e1dd4023-a656-480a-8a0e-c1b1eec51e1d","userPrincipalName":"user@contoso.onmicrosoft.com"},"createdBy":{"id":"fe36f75e-c103-410b-a18a-2bf6df06ac3a","displayName":"contoso","email":"user@contoso.onmicrosoft.com","type":"User","tenantId":"e1dd4023-a656-480a-8a0e-c1b1eec51e1d","userPrincipalName":"user@contoso.onmicrosoft.com"},"lastModifiedBy":{"id":"fe36f75e-c103-410b-a18a-2bf6df06ac3a","displayName":"contoso","email":"user@contoso.onmicrosoft.com","type":"User","tenantId":"e1dd4023-a656-480a-8a0e-c1b1eec51e1d","userPrincipalName":"user@contoso.onmicrosoft.com"},"lastPublishedBy":{"id":"fe36f75e-c103-410b-a18a-2bf6df06ac3a","displayName":"contoso","email":"user@contoso.onmicrosoft.com","type":"User","tenantId":"e1dd4023-a656-480a-8a0e-c1b1eec51e1d","userPrincipalName":"user@contoso.onmicrosoft.com"},"backgroundColor":"RGBA(0,176,240,1)","backgroundImageUri":"https://pafeblobprodam.blob.core.windows.net:443/20221025t000000zddd642012aba4021a4886c8e21a3e1cb/logoSmallFile?sv=2018-03-28&sr=c&sig=cOkbwChyhCO%2BEJpqMDRxrXaxRoPD1TbTy%2B%2BFkdJEOjI%3D&se=2022-12-24T10%3A06%3A27Z&sp=rl","teamsColorIconUrl":"https://pafeblobprodam.blob.core.windows.net:443/20221025t000000ze297221f3dc643ed9686b72b22d9a414/teamscoloricon.png?sv=2018-03-28&sr=c&sig=Fhk8E0LO4Lw0mHvNawCF5Ld7GHzPHo9l7RxvZbeZY48%3D&se=2022-12-24T10%3A06%3A27Z&sp=rl","teamsOutlineIconUrl":"https://pafeblobprodam.blob.core.windows.net:443/20221025t000000ze297221f3dc643ed9686b72b22d9a414/teamsoutlineicon.png?sv=2018-03-28&sr=c&sig=Fhk8E0LO4Lw0mHvNawCF5Ld7GHzPHo9l7RxvZbeZY48%3D&se=2022-12-24T10%3A06%3A27Z&sp=rl","displayName":"Test application","description":"","commitMessage":"","appUris":{"documentUri":{"value":"https://pafeblobprodam.blob.core.windows.net:443/20221025t000000zddd642012aba4021a4886c8e21a3e1cb/document.msapp?sv=2018-03-28&sr=c&sig=laSGdpZL03POyAABXvdsyxv8YDDB8JPZIBccztIe39Q%3D&se=2022-11-04T12%3A00%3A00Z&sp=rl","readonlyValue":"https://pafeblobprodam-secondary.blob.core.windows.net/20221025t000000zddd642012aba4021a4886c8e21a3e1cb/document.msapp?sv=2018-03-28&sr=c&sig=laSGdpZL03POyAABXvdsyxv8YDDB8JPZIBccztIe39Q%3D&se=2022-11-04T12%3A00%3A00Z&sp=rl"},"imageUris":[],"additionalUris":[]},"createdTime":"2022-10-25T21:28:12.7171469Z","lastModifiedTime":"2022-10-25T21:28:12.7456297Z","lastPublishTime":"2022-10-25T21:28:12Z","sharedGroupsCount":0,"sharedUsersCount":0,"appOpenProtocolUri":"ms-apps:///providers/Microsoft.PowerApps/apps/37ea6004-f07b-46ca-8ef3-a256b67b4dbb","appOpenUri":"https://apps.powerapps.com/play/e/Default-e1dd4023-a656-480a-8a0e-c1b1eec51e1d/a/37ea6004-f07b-46ca-8ef3-a256b67b4dbb?tenantId=e1dd4023-a656-480a-8a0e-c1b1eec51e1d&hint=296b0ef7-b4d0-4124-b835-f9c220a1f4bc","appPlayUri":"https://apps.powerapps.com/play/e/default-e1dd4023-a656-480a-8a0e-c1b1eec51e1d/a/37ea6004-f07b-46ca-8ef3-a256b67b4dbb?tenantId=e1dd4023-a656-480a-8a0e-c1b1eec51e1d","appPlayEmbeddedUri":"https://apps.powerapps.com/play/e/default-e1dd4023-a656-480a-8a0e-c1b1eec51e1d/a/37ea6004-f07b-46ca-8ef3-a256b67b4dbb?tenantId=e1dd4023-a656-480a-8a0e-c1b1eec51e1d&hint=296b0ef7-b4d0-4124-b835-f9c220a1f4bc&telemetryLocation=eu","appPlayTeamsUri":"https://apps.powerapps.com/play/e/default-e1dd4023-a656-480a-8a0e-c1b1eec51e1d/a/37ea6004-f07b-46ca-8ef3-a256b67b4dbb?tenantId=e1dd4023-a656-480a-8a0e-c1b1eec51e1d&source=teamstab&hint=296b0ef7-b4d0-4124-b835-f9c220a1f4bc&telemetryLocation=eu&locale={locale}&channelId={channelId}&channelType={channelType}&chatId={chatId}&groupId={groupId}&hostClientType={hostClientType}&isFullScreen={isFullScreen}&entityId={entityId}&subEntityId={subEntityId}&teamId={teamId}&teamType={teamType}&theme={theme}&userTeamRole={userTeamRole}","userAppMetadata":{"favorite":"NotSpecified","includeInAppsList":true},"isFeaturedApp":false,"bypassConsent":false,"isHeroApp":false,"environment":{"id":"/providers/Microsoft.PowerApps/environments/default-e1dd4023-a656-480a-8a0e-c1b1eec51e1d","name":"default-e1dd4023-a656-480a-8a0e-c1b1eec51e1d"},"appPackageDetails":{"playerPackage":{"value":"https://pafeblobprodam.blob.core.windows.net:443/20221025t000000zac5237a2672a4782ad5a7d71040c032b/5b38cd68-a930-4a14-be71-c622de887d1a/player.msappk?sv=2018-03-28&sr=c&sig=eztEkTd1pFaFEITA%2Bqqj2XCpxwgeujMC7FahMmEkujA%3D&se=2022-11-04T12%3A00%3A00Z&sp=rl","readonlyValue":"https://pafeblobprodam-secondary.blob.core.windows.net/20221025t000000zac5237a2672a4782ad5a7d71040c032b/5b38cd68-a930-4a14-be71-c622de887d1a/player.msappk?sv=2018-03-28&sr=c&sig=eztEkTd1pFaFEITA%2Bqqj2XCpxwgeujMC7FahMmEkujA%3D&se=2022-11-04T12%3A00%3A00Z&sp=rl"},"webPackage":{"value":"https://pafeblobprodam.blob.core.windows.net:443/20221025t000000zac5237a2672a4782ad5a7d71040c032b/5b38cd68-a930-4a14-be71-c622de887d1a/web/index.web.html?sv=2018-03-28&sr=c&sig=eztEkTd1pFaFEITA%2Bqqj2XCpxwgeujMC7FahMmEkujA%3D&se=2022-11-04T12%3A00%3A00Z&sp=rl","readonlyValue":"https://pafeblobprodam-secondary.blob.core.windows.net/20221025t000000zac5237a2672a4782ad5a7d71040c032b/5b38cd68-a930-4a14-be71-c622de887d1a/web/index.web.html?sv=2018-03-28&sr=c&sig=eztEkTd1pFaFEITA%2Bqqj2XCpxwgeujMC7FahMmEkujA%3D&se=2022-11-04T12%3A00%3A00Z&sp=rl"},"unauthenticatedWebPackage":{"value":"https://pafeblobprodam.blob.core.windows.net/alt20221025t000000z529d41282a634bf6b94383dde5a8d52c/20221025T212824Z/index.web.html"},"documentServerVersion":{"major":3,"minor":22102,"build":33,"revision":0,"majorRevision":0,"minorRevision":0},"appPackageResourcesKind":"Split","packagePropertiesJson":"{\"cdnUrl\":\"https://content.powerapps.com/resource/app\",\"preLoadIdx\":\"https://content.powerapps.com/resource/app/kdfj31mdao7t9/preloadindex.web.html\",\"id\":\"638023301009567627\",\"v\":2.1}","id":"20221025t000000zac5237a2672a4782ad5a7d71040c032bhttps://pafeblobprodam.blob.core.windows.net/20221025t000000zac5237a2672a4782ad5a7d71040c032b/5b38cd68-a930-4a14-be71-c622de887d1a/web/index.web.html?sv=2018-03-28&sr=c&sig=eztEkTd1pFaFEITA%2Bqqj2XCpxwgeujMC7FahMmEkujA%3D&se=2022-11-04T12%3A00%3A00Z&sp=rlhttps://pafeblobprodam.blob.core.windows.net/20221025t000000zac5237a2672a4782ad5a7d71040c032b/5b38cd68-a930-4a14-be71-c622de887d1a/player.msappk?sv=2018-03-28&sr=c&sig=eztEkTd1pFaFEITA%2Bqqj2XCpxwgeujMC7FahMmEkujA%3D&se=2022-11-04T12%3A00%3A00Z&sp=rlhttps://pafeblobprodam.blob.core.windows.net/alt20221025t000000z529d41282a634bf6b94383dde5a8d52c/20221025T212824Z/index.web.html"},"almMode":"Environment","performanceOptimizationEnabled":true,"unauthenticatedWebPackageHint":"296b0ef7-b4d0-4124-b835-f9c220a1f4bc","canConsumeAppPass":true,"enableModernRuntimeMode":false,"executionRestrictions":{"isTeamsOnly":false,"dataLossPreventionEvaluationResult":{"status":"Compliant","lastEvaluationDate":"2022-10-25T21:28:30.2281817Z","violations":[],"violationsByPolicy":[],"violationErrorMessage":"De app gebruikt de volgende connectors:."}},"appPlanClassification":"Standard","usesPremiumApi":false,"usesOnlyGrandfatheredPremiumApis":true,"usesCustomApi":false,"usesOnPremiseGateway":false,"usesPcfExternalServiceUsage":false,"isCustomizable":true}
|
|
242
|
+
appLocation | europe
|
|
243
|
+
appType | ClassicCanvasApp
|
|
244
|
+
displayName | PowerApps Application
|
|
245
|
+
description | App Description
|
|
246
|
+
appVersion | 2022-10-25T21:28:12Z
|
|
247
|
+
owner | user@tenant.onmicrosoft.com
|
|
248
|
+
```
|