@pnp/cli-microsoft365 11.7.0-beta.71e4ac5 → 11.7.0-beta.b9f508d
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/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- package/dist/m365/entra/commands/user/user-license-add.js +2 -1
- package/dist/m365/entra/commands/user/user-license-list.js +4 -9
- package/dist/m365/entra/commands/user/user-license-remove.js +2 -1
- package/dist/m365/outlook/commands/event/event-cancel.js +103 -0
- package/dist/m365/outlook/commands/event/event-remove.js +104 -0
- package/dist/m365/outlook/commands.js +2 -0
- package/dist/m365/spfx/commands/SpfxCompatibilityMatrix.js +628 -0
- package/dist/m365/spfx/commands/project/DeployWorkflow.js +2 -2
- package/dist/m365/spfx/commands/project/project-azuredevops-pipeline-add.js +13 -1
- package/dist/m365/spfx/commands/project/project-github-workflow-add.js +16 -1
- package/dist/m365/spfx/commands/spfx-doctor.js +5 -631
- package/dist/m365/teams/commands/chat/chat-message-list.js +43 -4
- package/dist/utils/entraApp.js +9 -2
- package/dist/utils/spfx.js +59 -0
- package/docs/docs/cmd/entra/license/license-list.mdx +19 -0
- package/docs/docs/cmd/entra/m365group/m365group-conversation-list.mdx +19 -0
- package/docs/docs/cmd/entra/m365group/m365group-conversation-post-list.mdx +19 -0
- package/docs/docs/cmd/entra/user/user-license-add.mdx +19 -0
- package/docs/docs/cmd/entra/user/user-license-list.mdx +18 -1
- package/docs/docs/cmd/entra/user/user-license-remove.mdx +21 -0
- package/docs/docs/cmd/outlook/event/event-cancel.mdx +85 -0
- package/docs/docs/cmd/outlook/event/event-remove.mdx +85 -0
- package/docs/docs/cmd/teams/chat/chat-message-list.mdx +23 -2
- package/package.json +2 -1
|
@@ -11,9 +11,24 @@ export const options = z.strictObject({
|
|
|
11
11
|
error: e => `'${e.input}' is not a valid value for option chatId.`
|
|
12
12
|
})
|
|
13
13
|
.alias('i'),
|
|
14
|
+
createdEndDateTime: z.string()
|
|
15
|
+
.refine(time => validation.isValidISODateTime(time), {
|
|
16
|
+
error: e => `'${e.input}' is not a valid ISO date-time string for option createdEndDateTime.`
|
|
17
|
+
})
|
|
18
|
+
.optional(),
|
|
14
19
|
endDateTime: z.string()
|
|
15
20
|
.refine(time => validation.isValidISODateTime(time), {
|
|
16
21
|
error: e => `'${e.input}' is not a valid ISO date-time string for option endDateTime.`
|
|
22
|
+
})
|
|
23
|
+
.optional(),
|
|
24
|
+
modifiedStartDateTime: z.string()
|
|
25
|
+
.refine(time => validation.isValidISODateTime(time), {
|
|
26
|
+
error: e => `'${e.input}' is not a valid ISO date-time string for option modifiedStartDateTime.`
|
|
27
|
+
})
|
|
28
|
+
.optional(),
|
|
29
|
+
modifiedEndDateTime: z.string()
|
|
30
|
+
.refine(time => validation.isValidISODateTime(time), {
|
|
31
|
+
error: e => `'${e.input}' is not a valid ISO date-time string for option modifiedEndDateTime.`
|
|
17
32
|
})
|
|
18
33
|
.optional()
|
|
19
34
|
});
|
|
@@ -30,13 +45,37 @@ class TeamsChatMessageListCommand extends GraphCommand {
|
|
|
30
45
|
get schema() {
|
|
31
46
|
return options;
|
|
32
47
|
}
|
|
48
|
+
getRefinedSchema(schema) {
|
|
49
|
+
return schema
|
|
50
|
+
.refine(options => !(options.endDateTime && options.createdEndDateTime), {
|
|
51
|
+
error: 'Specify either endDateTime or createdEndDateTime, but not both.'
|
|
52
|
+
})
|
|
53
|
+
.refine(options => !(options.createdEndDateTime && (options.modifiedStartDateTime || options.modifiedEndDateTime)), {
|
|
54
|
+
error: 'You cannot combine createdEndDateTime with modifiedStartDateTime or modifiedEndDateTime. These filters operate on different properties.'
|
|
55
|
+
})
|
|
56
|
+
.refine(options => !(options.endDateTime && (options.modifiedStartDateTime || options.modifiedEndDateTime)), {
|
|
57
|
+
error: 'You cannot combine endDateTime with modifiedStartDateTime or modifiedEndDateTime. These filters operate on different properties.'
|
|
58
|
+
});
|
|
59
|
+
}
|
|
33
60
|
async commandAction(logger, args) {
|
|
61
|
+
if (args.options.endDateTime) {
|
|
62
|
+
await this.warn(logger, `Option 'endDateTime' is deprecated. Please use 'createdEndDateTime' instead.`);
|
|
63
|
+
args.options.createdEndDateTime = args.options.endDateTime;
|
|
64
|
+
}
|
|
34
65
|
try {
|
|
35
66
|
let apiUrl = `${this.resource}/v1.0/chats/${args.options.chatId}/messages`;
|
|
36
|
-
if (args.options.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
67
|
+
if (args.options.createdEndDateTime) {
|
|
68
|
+
apiUrl += `?$filter=createdDateTime lt ${args.options.createdEndDateTime}&$orderby=createdDateTime desc`;
|
|
69
|
+
}
|
|
70
|
+
else if (args.options.modifiedStartDateTime || args.options.modifiedEndDateTime) {
|
|
71
|
+
const filters = [];
|
|
72
|
+
if (args.options.modifiedStartDateTime) {
|
|
73
|
+
filters.push(`lastModifiedDateTime gt ${args.options.modifiedStartDateTime}`);
|
|
74
|
+
}
|
|
75
|
+
if (args.options.modifiedEndDateTime) {
|
|
76
|
+
filters.push(`lastModifiedDateTime lt ${args.options.modifiedEndDateTime}`);
|
|
77
|
+
}
|
|
78
|
+
apiUrl += `?$filter=${filters.join(' and ')}&$orderby=lastModifiedDateTime desc`;
|
|
40
79
|
}
|
|
41
80
|
const items = await odata.getAllItems(apiUrl);
|
|
42
81
|
if (args.options.output && args.options.output !== 'json') {
|
package/dist/utils/entraApp.js
CHANGED
|
@@ -336,8 +336,15 @@ export const entraApp = {
|
|
|
336
336
|
},
|
|
337
337
|
responseType: 'json'
|
|
338
338
|
};
|
|
339
|
-
|
|
340
|
-
|
|
339
|
+
try {
|
|
340
|
+
return await request.get(requestOptions);
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
if (error?.response?.status === 404) {
|
|
344
|
+
throw Error(`App with objectId '${objectId}' not found in Microsoft Entra ID.`);
|
|
345
|
+
}
|
|
346
|
+
throw error;
|
|
347
|
+
}
|
|
341
348
|
}
|
|
342
349
|
};
|
|
343
350
|
//# sourceMappingURL=entraApp.js.map
|
package/dist/utils/spfx.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Range, coerce, gt, validRange } from 'semver';
|
|
1
2
|
export const spfx = {
|
|
2
3
|
isReactProject(project) {
|
|
3
4
|
return (typeof project.yoRcJson !== 'undefined' &&
|
|
@@ -11,6 +12,64 @@ export const spfx = {
|
|
|
11
12
|
typeof project.yoRcJson['@microsoft/generator-sharepoint'] !== 'undefined' &&
|
|
12
13
|
project.yoRcJson["@microsoft/generator-sharepoint"].framework === 'knockout') ||
|
|
13
14
|
typeof project.packageJson?.dependencies?.['knockout'] !== 'undefined';
|
|
15
|
+
},
|
|
16
|
+
getHighestNodeVersion(versionRange) {
|
|
17
|
+
if (!versionRange) {
|
|
18
|
+
throw new Error('Node version range was not provided.');
|
|
19
|
+
}
|
|
20
|
+
const ranges = versionRange
|
|
21
|
+
.split('||')
|
|
22
|
+
.map(range => range.trim())
|
|
23
|
+
.filter(range => range.length > 0);
|
|
24
|
+
let highestMajor = null;
|
|
25
|
+
let exactVersion = null;
|
|
26
|
+
const simpleVersionPattern = /^\d+(\.\d+(\.\d+)?)?$/;
|
|
27
|
+
if (ranges.every(r => simpleVersionPattern.test(r))) {
|
|
28
|
+
const highest = ranges.reduce((best, curr) => gt(coerce(curr), coerce(best)) ? curr : best);
|
|
29
|
+
const parts = highest.split('.');
|
|
30
|
+
if (parts.length >= 3) {
|
|
31
|
+
return highest;
|
|
32
|
+
}
|
|
33
|
+
if (parts.length === 2) {
|
|
34
|
+
return `${highest}.x`;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
for (const rangeString of ranges) {
|
|
38
|
+
const normalized = validRange(rangeString);
|
|
39
|
+
if (!normalized) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const rangeObj = new Range(normalized);
|
|
43
|
+
let maxMajor = 0;
|
|
44
|
+
// Analyze the range to find the maximum major version
|
|
45
|
+
for (const comparatorSet of rangeObj.set) {
|
|
46
|
+
for (const comparator of comparatorSet) {
|
|
47
|
+
if (comparator.operator === '<') {
|
|
48
|
+
// Exclusive upper bound: <17.0.0 means max major is 16
|
|
49
|
+
maxMajor = Math.max(maxMajor, comparator.semver.major - 1);
|
|
50
|
+
}
|
|
51
|
+
else if (comparator.operator === '<=') {
|
|
52
|
+
// Inclusive upper bound: <=17.0.0 means we can use exactly that version
|
|
53
|
+
maxMajor = Math.max(maxMajor, comparator.semver.major);
|
|
54
|
+
// Store the exact version for <= comparator
|
|
55
|
+
if (highestMajor === null || comparator.semver.major > highestMajor) {
|
|
56
|
+
exactVersion = comparator.semver.version;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else if (comparator.operator === '>=' || comparator.operator === '>') {
|
|
60
|
+
// For lower bounds use the major version
|
|
61
|
+
maxMajor = Math.max(maxMajor, comparator.semver.major);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Track the highest major version across all ranges
|
|
66
|
+
highestMajor = Math.max(highestMajor ?? 0, maxMajor);
|
|
67
|
+
}
|
|
68
|
+
if (highestMajor === null) {
|
|
69
|
+
throw new Error(`Unable to resolve the highest Node version for range '${versionRange}'.`);
|
|
70
|
+
}
|
|
71
|
+
// Return exact version if we have a <= comparator, otherwise use .x
|
|
72
|
+
return exactVersion || `${highestMajor}.x`;
|
|
14
73
|
}
|
|
15
74
|
};
|
|
16
75
|
//# sourceMappingURL=spfx.js.map
|
|
@@ -16,6 +16,25 @@ m365 entra license list [options]
|
|
|
16
16
|
|
|
17
17
|
<Global />
|
|
18
18
|
|
|
19
|
+
## Permissions
|
|
20
|
+
|
|
21
|
+
<Tabs>
|
|
22
|
+
<TabItem value="Delegated">
|
|
23
|
+
|
|
24
|
+
| Resource | Permissions |
|
|
25
|
+
|-----------------|----------------------------|
|
|
26
|
+
| Microsoft Graph | LicenseAssignment.Read.All |
|
|
27
|
+
|
|
28
|
+
</TabItem>
|
|
29
|
+
<TabItem value="Application">
|
|
30
|
+
|
|
31
|
+
| Resource | Permissions |
|
|
32
|
+
|-----------------|----------------------------|
|
|
33
|
+
| Microsoft Graph | LicenseAssignment.Read.All |
|
|
34
|
+
|
|
35
|
+
</TabItem>
|
|
36
|
+
</Tabs>
|
|
37
|
+
|
|
19
38
|
## Examples
|
|
20
39
|
|
|
21
40
|
List all licenses within the tenant.
|
|
@@ -24,6 +24,25 @@ m365 entra m365group conversation list [options]
|
|
|
24
24
|
|
|
25
25
|
<Global />
|
|
26
26
|
|
|
27
|
+
## Permissions
|
|
28
|
+
|
|
29
|
+
<Tabs>
|
|
30
|
+
<TabItem value="Delegated">
|
|
31
|
+
|
|
32
|
+
| Resource | Permissions |
|
|
33
|
+
|-----------------|-----------------------------|
|
|
34
|
+
| Microsoft Graph | Group-Conversation.Read.All |
|
|
35
|
+
|
|
36
|
+
</TabItem>
|
|
37
|
+
<TabItem value="Application">
|
|
38
|
+
|
|
39
|
+
| Resource | Permissions |
|
|
40
|
+
|-----------------|-----------------------------|
|
|
41
|
+
| Microsoft Graph | Group-Conversation.Read.All |
|
|
42
|
+
|
|
43
|
+
</TabItem>
|
|
44
|
+
</Tabs>
|
|
45
|
+
|
|
27
46
|
## Examples
|
|
28
47
|
|
|
29
48
|
Lists conversations for the Microsoft 365 group specified by id.
|
|
@@ -27,6 +27,25 @@ m365 entra m365group conversation post list [options]
|
|
|
27
27
|
|
|
28
28
|
<Global />
|
|
29
29
|
|
|
30
|
+
## Permissions
|
|
31
|
+
|
|
32
|
+
<Tabs>
|
|
33
|
+
<TabItem value="Delegated">
|
|
34
|
+
|
|
35
|
+
| Resource | Permissions |
|
|
36
|
+
|-----------------|-----------------------------|
|
|
37
|
+
| Microsoft Graph | Group-Conversation.Read.All |
|
|
38
|
+
|
|
39
|
+
</TabItem>
|
|
40
|
+
<TabItem value="Application">
|
|
41
|
+
|
|
42
|
+
| Resource | Permissions |
|
|
43
|
+
|-----------------|-----------------------------|
|
|
44
|
+
| Microsoft Graph | Group-Conversation.Read.All |
|
|
45
|
+
|
|
46
|
+
</TabItem>
|
|
47
|
+
</Tabs>
|
|
48
|
+
|
|
30
49
|
## Examples
|
|
31
50
|
|
|
32
51
|
Lists the posts of the specific conversation of Microsoft 365 group by groupId
|
|
@@ -35,6 +35,25 @@ The user must have a `usageLocation` value in order to assign a license to it.
|
|
|
35
35
|
|
|
36
36
|
:::
|
|
37
37
|
|
|
38
|
+
## Permissions
|
|
39
|
+
|
|
40
|
+
<Tabs>
|
|
41
|
+
<TabItem value="Delegated">
|
|
42
|
+
|
|
43
|
+
| Resource | Permissions |
|
|
44
|
+
|-----------------|---------------------------------|
|
|
45
|
+
| Microsoft Graph | LicenseAssignment.ReadWrite.All |
|
|
46
|
+
|
|
47
|
+
</TabItem>
|
|
48
|
+
<TabItem value="Application">
|
|
49
|
+
|
|
50
|
+
| Resource | Permissions |
|
|
51
|
+
|-----------------|---------------------------------|
|
|
52
|
+
| Microsoft Graph | LicenseAssignment.ReadWrite.All |
|
|
53
|
+
|
|
54
|
+
</TabItem>
|
|
55
|
+
</Tabs>
|
|
56
|
+
|
|
38
57
|
## Examples
|
|
39
58
|
|
|
40
59
|
Assign specific licenses to a specific user by UPN.
|
|
@@ -28,10 +28,27 @@ m365 entra user license list [options]
|
|
|
28
28
|
|
|
29
29
|
:::tip
|
|
30
30
|
|
|
31
|
-
If you don't specify any option, the command will list the license details of the current logged in user.
|
|
31
|
+
If you don't specify any option, the command will list the license details of the current logged in user.
|
|
32
32
|
|
|
33
33
|
:::
|
|
34
34
|
|
|
35
|
+
## Permissions
|
|
36
|
+
|
|
37
|
+
<Tabs>
|
|
38
|
+
<TabItem value="Delegated">
|
|
39
|
+
|
|
40
|
+
| Resource | Permissions |
|
|
41
|
+
|-----------------|----------------------------|
|
|
42
|
+
| Microsoft Graph | LicenseAssignment.Read.All |
|
|
43
|
+
|
|
44
|
+
</TabItem>
|
|
45
|
+
<TabItem value="Application">
|
|
46
|
+
|
|
47
|
+
This command does not support application permissions.
|
|
48
|
+
|
|
49
|
+
</TabItem>
|
|
50
|
+
</Tabs>
|
|
51
|
+
|
|
35
52
|
## Examples
|
|
36
53
|
|
|
37
54
|
List license details of the current logged in user.
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import Global from '../../_global.mdx';
|
|
2
|
+
import Tabs from '@theme/Tabs';
|
|
3
|
+
import TabItem from '@theme/TabItem';
|
|
2
4
|
|
|
3
5
|
# entra user license remove
|
|
4
6
|
|
|
@@ -28,6 +30,25 @@ m365 entra user license remove [options]
|
|
|
28
30
|
|
|
29
31
|
<Global />
|
|
30
32
|
|
|
33
|
+
## Permissions
|
|
34
|
+
|
|
35
|
+
<Tabs>
|
|
36
|
+
<TabItem value="Delegated">
|
|
37
|
+
|
|
38
|
+
| Resource | Permissions |
|
|
39
|
+
|-----------------|---------------------------------|
|
|
40
|
+
| Microsoft Graph | LicenseAssignment.ReadWrite.All |
|
|
41
|
+
|
|
42
|
+
</TabItem>
|
|
43
|
+
<TabItem value="Application">
|
|
44
|
+
|
|
45
|
+
| Resource | Permissions |
|
|
46
|
+
|-----------------|---------------------------------|
|
|
47
|
+
| Microsoft Graph | LicenseAssignment.ReadWrite.All |
|
|
48
|
+
|
|
49
|
+
</TabItem>
|
|
50
|
+
</Tabs>
|
|
51
|
+
|
|
31
52
|
## Examples
|
|
32
53
|
|
|
33
54
|
Remove specific licenses from a specific user by UPN.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import Global from '../../_global.mdx';
|
|
2
|
+
import TabItem from '@theme/TabItem';
|
|
3
|
+
import Tabs from '@theme/Tabs';
|
|
4
|
+
|
|
5
|
+
# outlook event cancel
|
|
6
|
+
|
|
7
|
+
Cancels a calendar event
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
m365 outlook event cancel [options]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Options
|
|
16
|
+
|
|
17
|
+
```md definition-list
|
|
18
|
+
`-i, --id <id>`
|
|
19
|
+
: ID of the event.
|
|
20
|
+
|
|
21
|
+
`--userId [userId]`
|
|
22
|
+
: ID of the user that owns the calendar. Specify either `userId` or `userName`, but not both. This option is required when using application permissions.
|
|
23
|
+
|
|
24
|
+
`--userName [userName]`
|
|
25
|
+
: UPN of the user that owns the calendar. Specify either `userId` or `userName`, but not both. This option is required when using application permissions.
|
|
26
|
+
|
|
27
|
+
`--comment [comment]`
|
|
28
|
+
: A comment about the cancellation sent to all the attendees.
|
|
29
|
+
|
|
30
|
+
`-f, --force`
|
|
31
|
+
: Don't prompt for confirmation.
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
<Global />
|
|
35
|
+
|
|
36
|
+
## Permissions
|
|
37
|
+
|
|
38
|
+
<Tabs>
|
|
39
|
+
<TabItem value="Delegated">
|
|
40
|
+
|
|
41
|
+
| Resource | Permissions |
|
|
42
|
+
|-----------------|---------------------|
|
|
43
|
+
| Microsoft Graph | Calendars.ReadWrite |
|
|
44
|
+
|
|
45
|
+
</TabItem>
|
|
46
|
+
<TabItem value="Application">
|
|
47
|
+
|
|
48
|
+
| Resource | Permissions |
|
|
49
|
+
|-----------------|---------------------|
|
|
50
|
+
| Microsoft Graph | Calendars.ReadWrite |
|
|
51
|
+
|
|
52
|
+
</TabItem>
|
|
53
|
+
</Tabs>
|
|
54
|
+
|
|
55
|
+
## Remarks
|
|
56
|
+
|
|
57
|
+
:::info
|
|
58
|
+
|
|
59
|
+
This action is only available to the organizer of the event.
|
|
60
|
+
|
|
61
|
+
:::
|
|
62
|
+
|
|
63
|
+
## Examples
|
|
64
|
+
|
|
65
|
+
Cancel a calendar event from the current logged-in user without a comment
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
m365 outlook event cancel --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Cancel a calendar event from a specific user with a comment
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
m365 outlook event cancel --userName "john.doe@contoso.com" --comment "Cancelling for this week due to all hands" --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Cancel a calendar event from a specific user specified by user ID
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
m365 outlook event cancel --userId 6799fd1a-723b-4eb7-8e52-41ae530274ca --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Response
|
|
84
|
+
|
|
85
|
+
The command won't return a response on success.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import Global from '../../_global.mdx';
|
|
2
|
+
import TabItem from '@theme/TabItem';
|
|
3
|
+
import Tabs from '@theme/Tabs';
|
|
4
|
+
|
|
5
|
+
# outlook event remove
|
|
6
|
+
|
|
7
|
+
Removes an event from a calendar
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
m365 outlook event remove [options]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Options
|
|
16
|
+
|
|
17
|
+
```md definition-list
|
|
18
|
+
`-i, --id <id>`
|
|
19
|
+
: ID of the event.
|
|
20
|
+
|
|
21
|
+
`--userId [userId]`
|
|
22
|
+
: ID of the user that owns the calendar. Specify either `userId` or `userName`, but not both. This option is required when using application permissions.
|
|
23
|
+
|
|
24
|
+
`--userName [userName]`
|
|
25
|
+
: UPN of the user that owns the calendar. Specify either `userId` or `userName`, but not both. This option is required when using application permissions.
|
|
26
|
+
|
|
27
|
+
`--permanent`
|
|
28
|
+
: Permanently remove the event, don't send it to the recycle bin.
|
|
29
|
+
|
|
30
|
+
`-f, --force`
|
|
31
|
+
: Don't prompt for confirmation.
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
<Global />
|
|
35
|
+
|
|
36
|
+
## Permissions
|
|
37
|
+
|
|
38
|
+
<Tabs>
|
|
39
|
+
<TabItem value="Delegated">
|
|
40
|
+
|
|
41
|
+
| Resource | Permissions |
|
|
42
|
+
|-----------------|---------------------|
|
|
43
|
+
| Microsoft Graph | Calendars.ReadWrite |
|
|
44
|
+
|
|
45
|
+
</TabItem>
|
|
46
|
+
<TabItem value="Application">
|
|
47
|
+
|
|
48
|
+
| Resource | Permissions |
|
|
49
|
+
|-----------------|---------------------|
|
|
50
|
+
| Microsoft Graph | Calendars.ReadWrite |
|
|
51
|
+
|
|
52
|
+
</TabItem>
|
|
53
|
+
</Tabs>
|
|
54
|
+
|
|
55
|
+
## Remarks
|
|
56
|
+
|
|
57
|
+
:::warning
|
|
58
|
+
|
|
59
|
+
When using the `--permanent` option, the event will be permanently deleted and cannot be recovered.
|
|
60
|
+
|
|
61
|
+
:::
|
|
62
|
+
|
|
63
|
+
## Examples
|
|
64
|
+
|
|
65
|
+
Remove a calendar event from the current logged-in user
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
m365 outlook event remove --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Permanently remove a calendar event from a specific user
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
m365 outlook event remove --userName "john.doe@contoso.com" --permanent --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Remove a calendar event from a specific user specified by user ID
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
m365 outlook event remove --userId 6799fd1a-723b-4eb7-8e52-41ae530274ca --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Response
|
|
84
|
+
|
|
85
|
+
The command won't return a response on success.
|
|
@@ -18,8 +18,17 @@ m365 teams chat message list [options]
|
|
|
18
18
|
`-i, --chatId <chatId>`
|
|
19
19
|
: The ID of the chat conversation.
|
|
20
20
|
|
|
21
|
-
`--
|
|
21
|
+
`--createdEndDateTime [createdEndDateTime]`
|
|
22
22
|
: Time indicating the exclusive end of a time range when the message was created.
|
|
23
|
+
|
|
24
|
+
`--endDateTime [endDateTime]`
|
|
25
|
+
: (deprecated. Use `createdEndDateTime` instead) Time indicating the exclusive end of a time range when the message was created.
|
|
26
|
+
|
|
27
|
+
`--modifiedStartDateTime [modifiedStartDateTime]`
|
|
28
|
+
: Time indicating the inclusive start of a time range when the message was last modified. Cannot be combined with `createdEndDateTime`.
|
|
29
|
+
|
|
30
|
+
`--modifiedEndDateTime [modifiedEndDateTime]`
|
|
31
|
+
: Time indicating the exclusive end of a time range when the message was last modified. Cannot be combined with `createdEndDateTime`.
|
|
23
32
|
```
|
|
24
33
|
|
|
25
34
|
<Global />
|
|
@@ -54,7 +63,19 @@ m365 teams chat message list --chatId 19:2da4c29f6d7041eca70b638b43d45437@thread
|
|
|
54
63
|
List messages from a Microsoft Teams chat conversation created before November 1, 2022
|
|
55
64
|
|
|
56
65
|
```sh
|
|
57
|
-
m365 teams chat message list --chatId 19:2da4c29f6d7041eca70b638b43d45437@thread.v2 --
|
|
66
|
+
m365 teams chat message list --chatId 19:2da4c29f6d7041eca70b638b43d45437@thread.v2 --createdEndDateTime 2022-11-01T00:00:00Z
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
List messages from a Microsoft Teams chat conversation modified after October 1, 2025
|
|
70
|
+
|
|
71
|
+
```sh
|
|
72
|
+
m365 teams chat message list --chatId 19:2da4c29f6d7041eca70b638b43d45437@thread.v2 --modifiedStartDateTime 2025-10-01T00:00:00Z
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
List messages from a Microsoft Teams chat conversation modified between October 1, 2025 and November 1, 2025
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
m365 teams chat message list --chatId 19:2da4c29f6d7041eca70b638b43d45437@thread.v2 --modifiedStartDateTime 2025-10-01T00:00:00Z --modifiedEndDateTime 2025-11-01T00:00:00Z
|
|
58
79
|
```
|
|
59
80
|
|
|
60
81
|
## Response
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnp/cli-microsoft365",
|
|
3
|
-
"version": "11.7.0-beta.
|
|
3
|
+
"version": "11.7.0-beta.b9f508d",
|
|
4
4
|
"description": "Manage Microsoft 365 and SharePoint Framework projects on any platform",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./dist/api.js",
|
|
@@ -253,6 +253,7 @@
|
|
|
253
253
|
"van Brug, Herco <hercovanbrug@hotmail.com>",
|
|
254
254
|
"Van de Voorde, Tim <tim.vdv1995@hotmail.com>",
|
|
255
255
|
"van Dijk, Mark <mark@ichicraft.com>",
|
|
256
|
+
"Van Horn, Matt <mvanhorn@users.noreply.github.com>",
|
|
256
257
|
"van Hunen, Erwin <erwin.van.hunen@outlook.com>",
|
|
257
258
|
"van Iersel, Cas <cvaniersel@portiva.nl>",
|
|
258
259
|
"van Rousselt, Rick <rick.vanrousselt@outlook.com>",
|