@pnp/cli-microsoft365 5.9.0-beta.c14dbbc → 5.9.0-beta.c3fe008
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/pp/commands/card/card-list.js +68 -0
- package/dist/m365/pp/commands/dataverse/dataverse-table-list.js +6 -12
- package/dist/m365/pp/commands.js +1 -0
- package/dist/m365/spo/commands/file/file-roleinheritance-break.js +129 -0
- package/dist/m365/spo/commands.js +1 -0
- package/dist/m365/teams/commands/channel/channel-add.js +9 -9
- package/docs/docs/cmd/pp/card/card-list.md +33 -0
- package/docs/docs/cmd/spo/file/file-roleinheritance-break.md +54 -0
- package/docs/docs/cmd/teams/channel/channel-add.md +4 -4
- package/package.json +2 -1
|
@@ -0,0 +1,68 @@
|
|
|
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 _PpCardListCommand_instances, _PpCardListCommand_initTelemetry, _PpCardListCommand_initOptions;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const odata_1 = require("../../../../utils/odata");
|
|
19
|
+
const powerPlatform_1 = require("../../../../utils/powerPlatform");
|
|
20
|
+
const PowerPlatformCommand_1 = require("../../../base/PowerPlatformCommand");
|
|
21
|
+
const commands_1 = require("../../commands");
|
|
22
|
+
class PpCardListCommand extends PowerPlatformCommand_1.default {
|
|
23
|
+
constructor() {
|
|
24
|
+
super();
|
|
25
|
+
_PpCardListCommand_instances.add(this);
|
|
26
|
+
__classPrivateFieldGet(this, _PpCardListCommand_instances, "m", _PpCardListCommand_initTelemetry).call(this);
|
|
27
|
+
__classPrivateFieldGet(this, _PpCardListCommand_instances, "m", _PpCardListCommand_initOptions).call(this);
|
|
28
|
+
}
|
|
29
|
+
get name() {
|
|
30
|
+
return commands_1.default.CARD_LIST;
|
|
31
|
+
}
|
|
32
|
+
get description() {
|
|
33
|
+
return 'Lists Microsoft Power Platform cards in the specified Power Platform environment.';
|
|
34
|
+
}
|
|
35
|
+
defaultProperties() {
|
|
36
|
+
return ['name', 'cardid', 'publishdate', 'createdon', 'modifiedon'];
|
|
37
|
+
}
|
|
38
|
+
commandAction(logger, args) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
if (this.verbose) {
|
|
41
|
+
logger.logToStderr(`Retrieving list of cards`);
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
|
|
45
|
+
const items = yield odata_1.odata.getAllItems(`${dynamicsApiUrl}/api/data/v9.1/cards?$expand=owninguser($select=azureactivedirectoryobjectid,fullname)`);
|
|
46
|
+
logger.log(items);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
this.handleRejectedODataJsonPromise(err);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
_PpCardListCommand_instances = new WeakSet(), _PpCardListCommand_initTelemetry = function _PpCardListCommand_initTelemetry() {
|
|
55
|
+
this.telemetry.push((args) => {
|
|
56
|
+
Object.assign(this.telemetryProperties, {
|
|
57
|
+
asAdmin: !!args.options.asAdmin
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}, _PpCardListCommand_initOptions = function _PpCardListCommand_initOptions() {
|
|
61
|
+
this.options.unshift({
|
|
62
|
+
option: '-e, --environment <environment>'
|
|
63
|
+
}, {
|
|
64
|
+
option: '-a, --asAdmin'
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
module.exports = new PpCardListCommand();
|
|
68
|
+
//# sourceMappingURL=card-list.js.map
|
|
@@ -15,7 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
15
15
|
};
|
|
16
16
|
var _PpDataverseTableListCommand_instances, _PpDataverseTableListCommand_initTelemetry, _PpDataverseTableListCommand_initOptions;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
const
|
|
18
|
+
const odata_1 = require("../../../../utils/odata");
|
|
19
19
|
const powerPlatform_1 = require("../../../../utils/powerPlatform");
|
|
20
20
|
const PowerPlatformCommand_1 = require("../../../base/PowerPlatformCommand");
|
|
21
21
|
const commands_1 = require("../../commands");
|
|
@@ -33,24 +33,18 @@ class PpDataverseTableListCommand extends PowerPlatformCommand_1.default {
|
|
|
33
33
|
return 'Lists dataverse tables in a given environment';
|
|
34
34
|
}
|
|
35
35
|
defaultProperties() {
|
|
36
|
-
return ['SchemaName', 'EntitySetName', 'IsManaged'];
|
|
36
|
+
return ['SchemaName', 'EntitySetName', 'LogicalName', 'IsManaged'];
|
|
37
37
|
}
|
|
38
38
|
commandAction(logger, args) {
|
|
39
39
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40
40
|
if (this.verbose) {
|
|
41
41
|
logger.logToStderr(`Retrieving list of tables for which the user is an admin...`);
|
|
42
42
|
}
|
|
43
|
-
const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
|
|
44
|
-
const requestOptions = {
|
|
45
|
-
url: `${dynamicsApiUrl}/api/data/v9.0/EntityDefinitions?$select=MetadataId,IsCustomEntity,IsManaged,SchemaName,IconVectorName,LogicalName,EntitySetName,IsActivity,DataProviderId,IsRenameable,IsCustomizable,CanCreateForms,CanCreateViews,CanCreateCharts,CanCreateAttributes,CanChangeTrackingBeEnabled,CanModifyAdditionalSettings,CanChangeHierarchicalRelationship,CanEnableSyncToExternalSearchIndex&$filter=(IsIntersect eq false and IsLogicalEntity eq false and%0APrimaryNameAttribute ne null and PrimaryNameAttribute ne %27%27 and ObjectTypeCode gt 0 and%0AObjectTypeCode ne 4712 and ObjectTypeCode ne 4724 and ObjectTypeCode ne 9933 and ObjectTypeCode ne 9934 and%0AObjectTypeCode ne 9935 and ObjectTypeCode ne 9947 and ObjectTypeCode ne 9945 and ObjectTypeCode ne 9944 and%0AObjectTypeCode ne 9942 and ObjectTypeCode ne 9951 and ObjectTypeCode ne 2016 and ObjectTypeCode ne 9949 and%0AObjectTypeCode ne 9866 and ObjectTypeCode ne 9867 and ObjectTypeCode ne 9868) and (IsCustomizable/Value eq true or IsCustomEntity eq true or IsManaged eq false or IsMappable/Value eq true or IsRenameable/Value eq true)&api-version=9.1`,
|
|
46
|
-
headers: {
|
|
47
|
-
accept: 'application/json;odata.metadata=none'
|
|
48
|
-
},
|
|
49
|
-
responseType: 'json'
|
|
50
|
-
};
|
|
51
43
|
try {
|
|
52
|
-
const
|
|
53
|
-
|
|
44
|
+
const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
|
|
45
|
+
const endpoint = `${dynamicsApiUrl}/api/data/v9.0/EntityDefinitions?$select=MetadataId,IsCustomEntity,IsManaged,SchemaName,IconVectorName,LogicalName,EntitySetName,IsActivity,DataProviderId,IsRenameable,IsCustomizable,CanCreateForms,CanCreateViews,CanCreateCharts,CanCreateAttributes,CanChangeTrackingBeEnabled,CanModifyAdditionalSettings,CanChangeHierarchicalRelationship,CanEnableSyncToExternalSearchIndex&$filter=(IsIntersect eq false and IsLogicalEntity eq false and%0APrimaryNameAttribute ne null and PrimaryNameAttribute ne %27%27 and ObjectTypeCode gt 0 and%0AObjectTypeCode ne 4712 and ObjectTypeCode ne 4724 and ObjectTypeCode ne 9933 and ObjectTypeCode ne 9934 and%0AObjectTypeCode ne 9935 and ObjectTypeCode ne 9947 and ObjectTypeCode ne 9945 and ObjectTypeCode ne 9944 and%0AObjectTypeCode ne 9942 and ObjectTypeCode ne 9951 and ObjectTypeCode ne 2016 and ObjectTypeCode ne 9949 and%0AObjectTypeCode ne 9866 and ObjectTypeCode ne 9867 and ObjectTypeCode ne 9868) and (IsCustomizable/Value eq true or IsCustomEntity eq true or IsManaged eq false or IsMappable/Value eq true or IsRenameable/Value eq true)&api-version=9.1`;
|
|
46
|
+
const res = yield odata_1.odata.getAllItems(endpoint);
|
|
47
|
+
logger.log(res);
|
|
54
48
|
}
|
|
55
49
|
catch (err) {
|
|
56
50
|
this.handleRejectedODataJsonPromise(err);
|
package/dist/m365/pp/commands.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const prefix = 'pp';
|
|
4
4
|
exports.default = {
|
|
5
|
+
CARD_LIST: `${prefix} card list`,
|
|
5
6
|
DATAVERSE_TABLE_LIST: `${prefix} dataverse table list`,
|
|
6
7
|
ENVIRONMENT_LIST: `${prefix} environment list`,
|
|
7
8
|
GATEWAY_LIST: `${prefix} gateway list`,
|
|
@@ -0,0 +1,129 @@
|
|
|
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 _SpoFileRoleInheritanceBreakCommand_instances, _SpoFileRoleInheritanceBreakCommand_initTelemetry, _SpoFileRoleInheritanceBreakCommand_initOptions, _SpoFileRoleInheritanceBreakCommand_initValidators, _SpoFileRoleInheritanceBreakCommand_initOptionSets;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const Cli_1 = require("../../../../cli/Cli");
|
|
19
|
+
const request_1 = require("../../../../request");
|
|
20
|
+
const validation_1 = require("../../../../utils/validation");
|
|
21
|
+
const formatting_1 = require("../../../../utils/formatting");
|
|
22
|
+
const SpoCommand_1 = require("../../../base/SpoCommand");
|
|
23
|
+
const commands_1 = require("../../commands");
|
|
24
|
+
const SpoFileGetCommand = require("./file-get");
|
|
25
|
+
class SpoFileRoleInheritanceBreakCommand extends SpoCommand_1.default {
|
|
26
|
+
constructor() {
|
|
27
|
+
super();
|
|
28
|
+
_SpoFileRoleInheritanceBreakCommand_instances.add(this);
|
|
29
|
+
__classPrivateFieldGet(this, _SpoFileRoleInheritanceBreakCommand_instances, "m", _SpoFileRoleInheritanceBreakCommand_initTelemetry).call(this);
|
|
30
|
+
__classPrivateFieldGet(this, _SpoFileRoleInheritanceBreakCommand_instances, "m", _SpoFileRoleInheritanceBreakCommand_initOptions).call(this);
|
|
31
|
+
__classPrivateFieldGet(this, _SpoFileRoleInheritanceBreakCommand_instances, "m", _SpoFileRoleInheritanceBreakCommand_initValidators).call(this);
|
|
32
|
+
__classPrivateFieldGet(this, _SpoFileRoleInheritanceBreakCommand_instances, "m", _SpoFileRoleInheritanceBreakCommand_initOptionSets).call(this);
|
|
33
|
+
}
|
|
34
|
+
get name() {
|
|
35
|
+
return commands_1.default.FILE_ROLEINHERITANCE_BREAK;
|
|
36
|
+
}
|
|
37
|
+
get description() {
|
|
38
|
+
return 'Breaks inheritance of a file. Keeping existing permissions is the default behavior.';
|
|
39
|
+
}
|
|
40
|
+
commandAction(logger, args) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const breakFileRoleInheritance = () => __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
try {
|
|
44
|
+
const fileURL = yield this.getFileURL(args);
|
|
45
|
+
const keepExistingPermissions = !args.options.clearExistingPermissions;
|
|
46
|
+
const requestOptions = {
|
|
47
|
+
url: `${args.options.webUrl}/_api/web/GetFileByServerRelativeUrl('${formatting_1.formatting.encodeQueryParameter(fileURL)}')/ListItemAllFields/breakroleinheritance(${keepExistingPermissions})`,
|
|
48
|
+
headers: {
|
|
49
|
+
accept: 'application/json;odata=nometadata'
|
|
50
|
+
},
|
|
51
|
+
responseType: 'json'
|
|
52
|
+
};
|
|
53
|
+
yield request_1.default.post(requestOptions);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
this.handleRejectedODataJsonPromise(err);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
if (args.options.confirm) {
|
|
60
|
+
yield breakFileRoleInheritance();
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const result = yield Cli_1.Cli.prompt({
|
|
64
|
+
type: 'confirm',
|
|
65
|
+
name: 'continue',
|
|
66
|
+
default: false,
|
|
67
|
+
message: `Are you sure you want to break the role inheritance of file ${args.options.fileUrl || args.options.fileId} located in site ${args.options.webUrl}?`
|
|
68
|
+
});
|
|
69
|
+
if (result.continue) {
|
|
70
|
+
yield breakFileRoleInheritance();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
getFileURL(args) {
|
|
76
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
if (args.options.fileUrl) {
|
|
78
|
+
return args.options.fileUrl;
|
|
79
|
+
}
|
|
80
|
+
const options = {
|
|
81
|
+
webUrl: args.options.webUrl,
|
|
82
|
+
id: args.options.fileId,
|
|
83
|
+
output: 'json',
|
|
84
|
+
debug: this.debug,
|
|
85
|
+
verbose: this.verbose
|
|
86
|
+
};
|
|
87
|
+
const output = yield Cli_1.Cli.executeCommandWithOutput(SpoFileGetCommand, { options: Object.assign(Object.assign({}, options), { _: [] }) });
|
|
88
|
+
const getFileOutput = JSON.parse(output.stdout);
|
|
89
|
+
return getFileOutput.ServerRelativeUrl;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
_SpoFileRoleInheritanceBreakCommand_instances = new WeakSet(), _SpoFileRoleInheritanceBreakCommand_initTelemetry = function _SpoFileRoleInheritanceBreakCommand_initTelemetry() {
|
|
94
|
+
this.telemetry.push((args) => {
|
|
95
|
+
Object.assign(this.telemetryProperties, {
|
|
96
|
+
fileUrl: typeof args.options.fileUrl !== 'undefined',
|
|
97
|
+
fileId: typeof args.options.fileId !== 'undefined',
|
|
98
|
+
clearExistingPermissions: !!args.options.clearExistingPermissions,
|
|
99
|
+
confirm: !!args.options.confirm
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
}, _SpoFileRoleInheritanceBreakCommand_initOptions = function _SpoFileRoleInheritanceBreakCommand_initOptions() {
|
|
103
|
+
this.options.unshift({
|
|
104
|
+
option: '-u, --webUrl <webUrl>'
|
|
105
|
+
}, {
|
|
106
|
+
option: '--fileUrl [fileUrl]'
|
|
107
|
+
}, {
|
|
108
|
+
option: 'i, --fileId [fileId]'
|
|
109
|
+
}, {
|
|
110
|
+
option: '-c, --clearExistingPermissions'
|
|
111
|
+
}, {
|
|
112
|
+
option: '--confirm'
|
|
113
|
+
});
|
|
114
|
+
}, _SpoFileRoleInheritanceBreakCommand_initValidators = function _SpoFileRoleInheritanceBreakCommand_initValidators() {
|
|
115
|
+
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
const isValidSharePointUrl = validation_1.validation.isValidSharePointUrl(args.options.webUrl);
|
|
117
|
+
if (isValidSharePointUrl !== true) {
|
|
118
|
+
return isValidSharePointUrl;
|
|
119
|
+
}
|
|
120
|
+
if (args.options.fileId && !validation_1.validation.isValidGuid(args.options.fileId)) {
|
|
121
|
+
return `${args.options.fileId} is not a valid GUID`;
|
|
122
|
+
}
|
|
123
|
+
return true;
|
|
124
|
+
}));
|
|
125
|
+
}, _SpoFileRoleInheritanceBreakCommand_initOptionSets = function _SpoFileRoleInheritanceBreakCommand_initOptionSets() {
|
|
126
|
+
this.optionSets.push(['fileId', 'fileUrl']);
|
|
127
|
+
};
|
|
128
|
+
module.exports = new SpoFileRoleInheritanceBreakCommand();
|
|
129
|
+
//# sourceMappingURL=file-roleinheritance-break.js.map
|
|
@@ -59,6 +59,7 @@ exports.default = {
|
|
|
59
59
|
FILE_RENAME: `${prefix} file rename`,
|
|
60
60
|
FILE_ROLEASSIGNMENT_ADD: `${prefix} file roleassignment add`,
|
|
61
61
|
FILE_ROLEASSIGNMENT_REMOVE: `${prefix} file roleassignment remove`,
|
|
62
|
+
FILE_ROLEINHERITANCE_BREAK: `${prefix} file roleinheritance break`,
|
|
62
63
|
FILE_ROLEINHERITANCE_RESET: `${prefix} file roleinheritance reset`,
|
|
63
64
|
FILE_SHARINGINFO_GET: `${prefix} file sharinginfo get`,
|
|
64
65
|
FOLDER_ADD: `${prefix} folder add`,
|
|
@@ -73,8 +73,8 @@ class TeamsChannelAddCommand extends GraphCommand_1.default {
|
|
|
73
73
|
},
|
|
74
74
|
responseType: 'json'
|
|
75
75
|
};
|
|
76
|
-
if (args.options.type === 'private') {
|
|
77
|
-
// Private channels must have at least 1 owner
|
|
76
|
+
if (args.options.type === 'private' || args.options.type === 'shared') {
|
|
77
|
+
// Private and Shared channels must have at least 1 owner
|
|
78
78
|
requestOptions.data.members = [
|
|
79
79
|
{
|
|
80
80
|
'@odata.type': '#microsoft.graph.aadUserConversationMember',
|
|
@@ -119,7 +119,7 @@ _TeamsChannelAddCommand_instances = new WeakSet(), _TeamsChannelAddCommand_initT
|
|
|
119
119
|
option: '-d, --description [description]'
|
|
120
120
|
}, {
|
|
121
121
|
option: '--type [type]',
|
|
122
|
-
autocomplete: ['standard', 'private']
|
|
122
|
+
autocomplete: ['standard', 'private', 'shared']
|
|
123
123
|
}, {
|
|
124
124
|
option: '--owner [owner]'
|
|
125
125
|
});
|
|
@@ -128,14 +128,14 @@ _TeamsChannelAddCommand_instances = new WeakSet(), _TeamsChannelAddCommand_initT
|
|
|
128
128
|
if (args.options.teamId && !validation_1.validation.isValidGuid(args.options.teamId)) {
|
|
129
129
|
return `${args.options.teamId} is not a valid GUID`;
|
|
130
130
|
}
|
|
131
|
-
if (args.options.type && ['standard', 'private'].indexOf(args.options.type) === -1) {
|
|
132
|
-
return `${args.options.type} is not a valid type value. Allowed values standard|private.`;
|
|
131
|
+
if (args.options.type && ['standard', 'private', 'shared'].indexOf(args.options.type) === -1) {
|
|
132
|
+
return `${args.options.type} is not a valid type value. Allowed values standard|private|shared.`;
|
|
133
133
|
}
|
|
134
|
-
if (args.options.type === 'private' && !args.options.owner) {
|
|
135
|
-
return
|
|
134
|
+
if ((args.options.type === 'private' || args.options.type === 'shared') && !args.options.owner) {
|
|
135
|
+
return `Specify owner when creating a ${args.options.type} channel.`;
|
|
136
136
|
}
|
|
137
|
-
if (args.options.type !== 'private' && args.options.owner) {
|
|
138
|
-
return
|
|
137
|
+
if ((args.options.type !== 'private' && args.options.type !== 'shared') && args.options.owner) {
|
|
138
|
+
return `Specify owner only when creating a private or shared channel.`;
|
|
139
139
|
}
|
|
140
140
|
return true;
|
|
141
141
|
}));
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# pp card list
|
|
2
|
+
|
|
3
|
+
Lists Microsoft Power Platform cards in the specified Power Platform environment.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
pp card list [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
`-e, --environment <environment>`
|
|
14
|
+
: The name of the environment.
|
|
15
|
+
|
|
16
|
+
`-a, --asAdmin`
|
|
17
|
+
: Run the command as admin for environments you do not have explicitly assigned permissions to.
|
|
18
|
+
|
|
19
|
+
--8<-- "docs/cmd/_global.md"
|
|
20
|
+
|
|
21
|
+
## Examples
|
|
22
|
+
|
|
23
|
+
List cards in a specific environment.
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
m365 pp card list --environment "Default-d87a7535-dd31-4437-bfe1-95340acd55c5"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
List cards in a specific environment as admin.
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
m365 pp card list --environment "Default-d87a7535-dd31-4437-bfe1-95340acd55c5" --asAdmin
|
|
33
|
+
```
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# spo file roleinheritance break
|
|
2
|
+
|
|
3
|
+
Breaks inheritance of a file. Keeping existing permissions is the default behavior.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
m365 spo file roleinheritance break [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
`-u, --webUrl <webUrl>`
|
|
14
|
+
: URL of the site where the file is located
|
|
15
|
+
|
|
16
|
+
`--fileUrl [fileUrl]`
|
|
17
|
+
: The server-relative URL of the file. Specify either `fileUrl` or `fileId` but not both
|
|
18
|
+
|
|
19
|
+
`i, --fileId [fileId]`
|
|
20
|
+
: The UniqueId (GUID) of the file. Specify either `fileUrl` or `fileId` but not both
|
|
21
|
+
|
|
22
|
+
`-c, --clearExistingPermissions`
|
|
23
|
+
: Clear all existing permissions from the file
|
|
24
|
+
|
|
25
|
+
`--confirm`
|
|
26
|
+
: Don't prompt for confirmation
|
|
27
|
+
|
|
28
|
+
--8<-- "docs/cmd/_global.md"
|
|
29
|
+
|
|
30
|
+
## Examples
|
|
31
|
+
|
|
32
|
+
Break the inheritance of a file with a specific id (UniqueId).
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
m365 spo file roleinheritance break --webUrl "https://contoso.sharepoint.com/sites/project-x" --fileId "b2307a39-e878-458b-bc90-03bc578531d6"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Break the inheritance of a file with a specific id (UniqueId) and clear all existing permissions.
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
m365 spo file roleinheritance break --webUrl "https://contoso.sharepoint.com/sites/project-x" --fileId "b2307a39-e878-458b-bc90-03bc578531d6" --clearExistingPermissions
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Break the inheritance of a file with a specific server-relative URL.
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
m365 spo file roleinheritance break --webUrl "https://contoso.sharepoint.com/sites/project-x" --fileUrl "/sites/project-x/documents/Test1.docx"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Break the inheritance of a file with a specific server-relative URL and clear all existing permissions.
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
m365 spo file roleinheritance break --webUrl "https://contoso.sharepoint.com/sites/project-x" --fileUrl "/sites/project-x/documents/Test1.docx" --clearExistingPermissions
|
|
54
|
+
```
|
|
@@ -23,10 +23,10 @@ m365 teams channel add [options]
|
|
|
23
23
|
: The description of the channel to add
|
|
24
24
|
|
|
25
25
|
`--type [type]`
|
|
26
|
-
: Type of channel to create: `standard
|
|
26
|
+
: Type of channel to create: `standard`, `private`, `shared`. Default `standard`.
|
|
27
27
|
|
|
28
28
|
`--owner [owner]`
|
|
29
|
-
: User with this ID or UPN will be added as owner of the
|
|
29
|
+
: User with this ID or UPN will be added as owner of the channel. This option is required when type is `private` or `shared`.
|
|
30
30
|
|
|
31
31
|
--8<-- "docs/cmd/_global.md"
|
|
32
32
|
|
|
@@ -54,8 +54,8 @@ Add private channel to the specified Microsoft Teams team with owner UPN
|
|
|
54
54
|
m365 teams channel add --teamName "Team Name" --name climicrosoft365 --type private --owner john.doe@contoso.com
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
Add
|
|
57
|
+
Add shared channel to the specified Microsoft Teams team with owner ID
|
|
58
58
|
|
|
59
59
|
```sh
|
|
60
|
-
m365 teams channel add --teamId 6703ac8a-c49b-4fd4-8223-28f0ac3a6402 --name climicrosoft365 --type
|
|
60
|
+
m365 teams channel add --teamId 6703ac8a-c49b-4fd4-8223-28f0ac3a6402 --name climicrosoft365 --type shared --owner cc693a7d-4833-4911-a89a-f0fe6e49bf69
|
|
61
61
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnp/cli-microsoft365",
|
|
3
|
-
"version": "5.9.0-beta.
|
|
3
|
+
"version": "5.9.0-beta.c3fe008",
|
|
4
4
|
"description": "Manage Microsoft 365 and SharePoint Framework projects on any platform",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./dist/api.js",
|
|
@@ -116,6 +116,7 @@
|
|
|
116
116
|
"Calabro, David <davej.calabro@gmail.com>",
|
|
117
117
|
"Choudhary, Karnail Singh <pradhankarnail@gmail.com>",
|
|
118
118
|
"Connell, Andrew <me@andrewconnell.com>",
|
|
119
|
+
"Conor O'Callaghan <brioscaibriste@gmail.com>",
|
|
119
120
|
"Deshpande, Vardhaman <vardhaman.rd@gmail.com>",
|
|
120
121
|
"Dyjas, Robert <15113729+robdy@users.noreply.github.com>",
|
|
121
122
|
"Faleel, Mohamed Ashiq <ashiqf@gmail.com>",
|