@pnp/cli-microsoft365 11.10.0-beta.6474466 → 11.10.0-beta.68e3b93

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.
Files changed (44) hide show
  1. package/.devcontainer/Dockerfile +1 -1
  2. package/Dockerfile +1 -1
  3. package/allCommands.json +1 -1
  4. package/allCommandsFull.json +1 -1
  5. package/dist/Auth.js +4 -2
  6. package/dist/m365/outlook/commands/event/event-get.js +77 -0
  7. package/dist/m365/outlook/commands.js +1 -0
  8. package/dist/m365/pp/commands/website/Webrole.js +2 -0
  9. package/dist/m365/pp/commands/website/website-remove.js +80 -0
  10. package/dist/m365/pp/commands/website/website-webrole-list.js +61 -0
  11. package/dist/m365/pp/commands.js +3 -1
  12. package/dist/m365/spo/commands/web/{web-alert-list.js → web-rule-list.js} +7 -4
  13. package/dist/m365/spo/commands/web/{web-alert-remove.js → web-rule-remove.js} +7 -4
  14. package/dist/m365/spo/commands.js +2 -0
  15. package/dist/utils/powerPlatform.js +20 -0
  16. package/docs/docs/cmd/outlook/event/event-get.mdx +280 -0
  17. package/docs/docs/cmd/pp/website/website-remove.mdx +89 -0
  18. package/docs/docs/cmd/pp/website/website-webrole-list.mdx +139 -0
  19. package/docs/docs/cmd/spo/field/field-add.mdx +19 -0
  20. package/docs/docs/cmd/spo/field/field-get.mdx +19 -0
  21. package/docs/docs/cmd/spo/field/field-list.mdx +19 -0
  22. package/docs/docs/cmd/spo/field/field-remove.mdx +21 -0
  23. package/docs/docs/cmd/spo/field/field-set.mdx +21 -0
  24. package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +21 -0
  25. package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +21 -0
  26. package/docs/docs/cmd/spo/file/file-retentionlabel-remove.mdx +21 -0
  27. package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +21 -0
  28. package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +21 -0
  29. package/docs/docs/cmd/spo/file/file-roleinheritance-break.mdx +21 -0
  30. package/docs/docs/cmd/spo/file/file-roleinheritance-reset.mdx +21 -0
  31. package/docs/docs/cmd/spo/file/file-sharinginfo-get.mdx +19 -0
  32. package/docs/docs/cmd/spo/hubsite/hubsite-connect.mdx +21 -0
  33. package/docs/docs/cmd/spo/hubsite/hubsite-data-get.mdx +19 -0
  34. package/docs/docs/cmd/spo/hubsite/hubsite-disconnect.mdx +21 -0
  35. package/docs/docs/cmd/spo/hubsite/hubsite-get.mdx +19 -0
  36. package/docs/docs/cmd/spo/hubsite/hubsite-list.mdx +19 -0
  37. package/docs/docs/cmd/spo/hubsite/hubsite-register.mdx +19 -0
  38. package/docs/docs/cmd/spo/hubsite/hubsite-rights-grant.mdx +21 -0
  39. package/docs/docs/cmd/spo/hubsite/hubsite-rights-revoke.mdx +21 -0
  40. package/docs/docs/cmd/spo/hubsite/hubsite-set.mdx +19 -0
  41. package/docs/docs/cmd/spo/hubsite/hubsite-unregister.mdx +21 -0
  42. package/docs/docs/cmd/spo/web/{web-alert-list.mdx → web-rule-list.mdx} +13 -7
  43. package/docs/docs/cmd/spo/web/{web-alert-remove.mdx → web-rule-remove.mdx} +10 -4
  44. package/package.json +1 -1
package/dist/Auth.js CHANGED
@@ -361,7 +361,7 @@ export class Auth {
361
361
  if (response.message) {
362
362
  await logger.logToStderr(`🌶️ ${response.message}`);
363
363
  }
364
- if (cli.getSettingWithDefaultValue(settingsNames.autoOpenLinksInBrowser, false)) {
364
+ if (cli.getSettingWithDefaultValue(settingsNames.autoOpenLinksInBrowser, false) && response.verificationUri !== undefined) {
365
365
  await browserUtil.open(response.verificationUri);
366
366
  }
367
367
  if (cli.getSettingWithDefaultValue(settingsNames.copyDeviceCodeToClipboard, false)) {
@@ -372,7 +372,9 @@ export class Auth {
372
372
  if (!this._clipboardy) {
373
373
  this._clipboardy = (await import('clipboardy')).default;
374
374
  }
375
- this._clipboardy.writeSync(response.userCode);
375
+ if (response.userCode !== undefined) {
376
+ this._clipboardy.writeSync(response.userCode);
377
+ }
376
378
  }
377
379
  }
378
380
  async ensureAccessTokenWithPassword(resource, logger, debug) {
@@ -0,0 +1,77 @@
1
+ import { z } from 'zod';
2
+ import GraphCommand from '../../../base/GraphCommand.js';
3
+ import commands from '../../commands.js';
4
+ import { validation } from '../../../../utils/validation.js';
5
+ import { globalOptionsZod } from '../../../../Command.js';
6
+ import request from '../../../../request.js';
7
+ import { calendar } from '../../../../utils/calendar.js';
8
+ import { formatting } from '../../../../utils/formatting.js';
9
+ export const options = z.strictObject({
10
+ ...globalOptionsZod.shape,
11
+ id: z.string().alias('i'),
12
+ userId: z.string().refine(id => validation.isValidGuid(id), {
13
+ error: e => `'${e.input}' is not a valid GUID.`
14
+ }).optional(),
15
+ userName: z.string().refine(name => validation.isValidUserPrincipalName(name), {
16
+ error: e => `'${e.input}' is not a valid UPN.`
17
+ }).optional(),
18
+ calendarId: z.string().optional(),
19
+ calendarName: z.string().optional(),
20
+ timeZone: z.string().optional()
21
+ });
22
+ class OutlookEventGetCommand extends GraphCommand {
23
+ get name() {
24
+ return commands.EVENT_GET;
25
+ }
26
+ get description() {
27
+ return `Retrieve an event from a specific calendar of a user`;
28
+ }
29
+ get schema() {
30
+ return options;
31
+ }
32
+ getRefinedSchema(schema) {
33
+ return schema
34
+ .refine(options => [options.userId, options.userName].filter(x => x !== undefined).length === 1, {
35
+ error: 'Specify either userId or userName, but not both'
36
+ })
37
+ .refine(options => !(options.calendarId && options.calendarName), {
38
+ error: 'Specify either calendarId or calendarName, but not both.'
39
+ });
40
+ }
41
+ async commandAction(logger, args) {
42
+ const userIdentifier = args.options.userId ?? args.options.userName;
43
+ if (this.verbose) {
44
+ await logger.logToStderr(`Retrieving event ${args.options.id} for user ${userIdentifier}...`);
45
+ }
46
+ let calendarId = args.options.calendarId;
47
+ if (args.options.calendarName) {
48
+ calendarId = (await calendar.getUserCalendarByName(userIdentifier, args.options.calendarName)).id;
49
+ }
50
+ let requestUrl = `${this.resource}/v1.0/users('${formatting.encodeQueryParameter(userIdentifier)}')`;
51
+ if (calendarId) {
52
+ requestUrl += `/calendars/${calendarId}/events/${args.options.id}`;
53
+ }
54
+ else {
55
+ requestUrl += `/events/${args.options.id}`;
56
+ }
57
+ const requestOptions = {
58
+ url: requestUrl,
59
+ headers: {
60
+ accept: 'application/json;odata.metadata=none'
61
+ },
62
+ responseType: 'json'
63
+ };
64
+ if (args.options.timeZone) {
65
+ requestOptions.headers.Prefer = `outlook.timezone="${args.options.timeZone}"`;
66
+ }
67
+ try {
68
+ const result = await request.get(requestOptions);
69
+ await logger.log(result);
70
+ }
71
+ catch (err) {
72
+ this.handleRejectedODataJsonPromise(err);
73
+ }
74
+ }
75
+ }
76
+ export default new OutlookEventGetCommand();
77
+ //# sourceMappingURL=event-get.js.map
@@ -10,6 +10,7 @@ export default {
10
10
  CALENDARGROUP_REMOVE: `${prefix} calendargroup remove`,
11
11
  CALENDARGROUP_SET: `${prefix} calendargroup set`,
12
12
  EVENT_CANCEL: `${prefix} event cancel`,
13
+ EVENT_GET: `${prefix} event get`,
13
14
  EVENT_LIST: `${prefix} event list`,
14
15
  EVENT_REMOVE: `${prefix} event remove`,
15
16
  MAIL_SEARCHFOLDER_ADD: `${prefix} mail searchfolder add`,
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Webrole.js.map
@@ -0,0 +1,80 @@
1
+ import { globalOptionsZod } from '../../../../Command.js';
2
+ import { powerPlatform } from '../../../../utils/powerPlatform.js';
3
+ import { validation } from '../../../../utils/validation.js';
4
+ import PowerPlatformCommand from '../../../base/PowerPlatformCommand.js';
5
+ import commands from '../../commands.js';
6
+ import { z } from 'zod';
7
+ import request from '../../../../request.js';
8
+ import { cli } from '../../../../cli/cli.js';
9
+ export const options = z.strictObject({
10
+ ...globalOptionsZod.shape,
11
+ url: z.string().optional()
12
+ .refine(url => url === undefined || validation.isValidPowerPagesUrl(url) === true, {
13
+ error: e => `'${e.input}' is not a valid Power Pages URL.`
14
+ })
15
+ .alias('u'),
16
+ id: z.uuid().optional().alias('i'),
17
+ name: z.string().optional().alias('n'),
18
+ environmentName: z.string().alias('e'),
19
+ force: z.boolean().optional().alias('f')
20
+ });
21
+ class PpWebSiteRemoveCommand extends PowerPlatformCommand {
22
+ get name() {
23
+ return commands.WEBSITE_REMOVE;
24
+ }
25
+ get description() {
26
+ return 'Removes the specified Power Pages website from the list of active sites.';
27
+ }
28
+ get schema() {
29
+ return options;
30
+ }
31
+ getRefinedSchema(schema) {
32
+ return schema
33
+ .refine(options => [options.url, options.id, options.name].filter(x => x !== undefined).length === 1, {
34
+ error: `Specify either url, id or name, but not multiple.`
35
+ });
36
+ }
37
+ async commandAction(logger, args) {
38
+ if (args.options.verbose) {
39
+ await logger.logToStderr(`Removing website '${args.options.id || args.options.name || args.options.url}'...`);
40
+ }
41
+ if (args.options.force) {
42
+ await this.deleteWebsite(args);
43
+ }
44
+ else {
45
+ const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove website '${args.options.id || args.options.name || args.options.url}'?` });
46
+ if (result) {
47
+ await this.deleteWebsite(args);
48
+ }
49
+ }
50
+ }
51
+ async getWebsiteId(args) {
52
+ if (args.options.id) {
53
+ return args.options.id;
54
+ }
55
+ if (args.options.name) {
56
+ const website = await powerPlatform.getWebsiteByName(args.options.environmentName, args.options.name);
57
+ return website.id;
58
+ }
59
+ const website = await powerPlatform.getWebsiteByUrl(args.options.environmentName, args.options.url);
60
+ return website.id;
61
+ }
62
+ async deleteWebsite(args) {
63
+ try {
64
+ const websiteId = await this.getWebsiteId(args);
65
+ const requestOptions = {
66
+ url: `https://api.powerplatform.com/powerpages/environments/${args.options.environmentName}/websites/${websiteId}?api-version=2022-03-01-preview`,
67
+ headers: {
68
+ accept: 'application/json;odata.metadata=none'
69
+ },
70
+ responseType: 'json'
71
+ };
72
+ await request.delete(requestOptions);
73
+ }
74
+ catch (err) {
75
+ this.handleRejectedODataJsonPromise(err);
76
+ }
77
+ }
78
+ }
79
+ export default new PpWebSiteRemoveCommand();
80
+ //# sourceMappingURL=website-remove.js.map
@@ -0,0 +1,61 @@
1
+ import { globalOptionsZod } from '../../../../Command.js';
2
+ import { powerPlatform } from '../../../../utils/powerPlatform.js';
3
+ import PowerPlatformCommand from '../../../base/PowerPlatformCommand.js';
4
+ import commands from '../../commands.js';
5
+ import { odata } from '../../../../utils/odata.js';
6
+ import { z } from 'zod';
7
+ export const options = z.strictObject({
8
+ ...globalOptionsZod.shape,
9
+ websiteId: z.uuid().optional(),
10
+ websiteName: z.string().optional(),
11
+ environmentName: z.string().alias('e'),
12
+ asAdmin: z.boolean().optional()
13
+ });
14
+ class PpWebSiteWebRoleListCommand extends PowerPlatformCommand {
15
+ get name() {
16
+ return commands.WEBSITE_WEBROLE_LIST;
17
+ }
18
+ get description() {
19
+ return 'Lists all webroles for the specified Power Pages website.';
20
+ }
21
+ get schema() {
22
+ return options;
23
+ }
24
+ defaultProperties() {
25
+ return ['mspp_webroleid', 'mspp_name', 'statuscode'];
26
+ }
27
+ getRefinedSchema(schema) {
28
+ return schema
29
+ .refine(options => [options.websiteId, options.websiteName].filter(x => x !== undefined).length === 1, {
30
+ error: `Specify either websiteId or websiteName, but not both.`
31
+ });
32
+ }
33
+ async commandAction(logger, args) {
34
+ if (this.verbose) {
35
+ await logger.logToStderr(`Retrieving the webroles for '${args.options.websiteId || args.options.websiteName}'...`);
36
+ }
37
+ try {
38
+ const dynamicsApiUrl = await powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
39
+ const websiteRecordId = await this.getWebsiteRecordId(args, dynamicsApiUrl);
40
+ const roles = await this.getWebsiteRoles(dynamicsApiUrl, websiteRecordId);
41
+ await logger.log(roles);
42
+ }
43
+ catch (err) {
44
+ this.handleRejectedODataJsonPromise(err);
45
+ }
46
+ }
47
+ async getWebsiteRecordId(args, dynamicsApiUrl) {
48
+ if (args.options.websiteId) {
49
+ const website = await powerPlatform.getWebsiteById(args.options.environmentName, args.options.websiteId);
50
+ return website.websiteRecordId;
51
+ }
52
+ return powerPlatform.getWebsiteIdByUniqueName(dynamicsApiUrl, args.options.websiteName);
53
+ }
54
+ async getWebsiteRoles(dynamicsApiUrl, websiteId) {
55
+ const requestUrl = `${dynamicsApiUrl}/api/data/v9.2/mspp_webroles?$filter=_mspp_websiteid_value eq ${websiteId}`;
56
+ const result = await odata.getAllItems(requestUrl);
57
+ return result;
58
+ }
59
+ }
60
+ export default new PpWebSiteWebRoleListCommand();
61
+ //# sourceMappingURL=website-webrole-list.js.map
@@ -27,6 +27,8 @@ export default {
27
27
  SOLUTION_PUBLISHER_REMOVE: `${prefix} solution publisher remove`,
28
28
  TENANT_SETTINGS_LIST: `${prefix} tenant settings list`,
29
29
  TENANT_SETTINGS_SET: `${prefix} tenant settings set`,
30
- WEBSITE_GET: `${prefix} website get`
30
+ WEBSITE_GET: `${prefix} website get`,
31
+ WEBSITE_REMOVE: `${prefix} website remove`,
32
+ WEBSITE_WEBROLE_LIST: `${prefix} website webrole list`
31
33
  };
32
34
  //# sourceMappingURL=commands.js.map
@@ -22,13 +22,16 @@ export const options = z.strictObject({
22
22
  }),
23
23
  userId: z.uuid().optional()
24
24
  });
25
- class SpoWebAlertListCommand extends SpoCommand {
25
+ class SpoWebRuleListCommand extends SpoCommand {
26
26
  get name() {
27
- return commands.WEB_ALERT_LIST;
27
+ return commands.WEB_RULE_LIST;
28
28
  }
29
29
  get description() {
30
30
  return 'Lists all SharePoint list alerts';
31
31
  }
32
+ alias() {
33
+ return [commands.WEB_ALERT_LIST];
34
+ }
32
35
  defaultProperties() {
33
36
  return ['ID', 'Title', 'UserPrincipalName'];
34
37
  }
@@ -104,5 +107,5 @@ class SpoWebAlertListCommand extends SpoCommand {
104
107
  }
105
108
  }
106
109
  }
107
- export default new SpoWebAlertListCommand();
108
- //# sourceMappingURL=web-alert-list.js.map
110
+ export default new SpoWebRuleListCommand();
111
+ //# sourceMappingURL=web-rule-list.js.map
@@ -15,13 +15,16 @@ const options = z.strictObject({
15
15
  id: z.uuid(),
16
16
  force: z.boolean().optional().alias('f')
17
17
  });
18
- class SpoWebAlertRemoveCommand extends SpoCommand {
18
+ class SpoWebRuleRemoveCommand extends SpoCommand {
19
19
  get name() {
20
- return commands.WEB_ALERT_REMOVE;
20
+ return commands.WEB_RULE_REMOVE;
21
21
  }
22
22
  get description() {
23
23
  return 'Removes an alert from a SharePoint list';
24
24
  }
25
+ alias() {
26
+ return [commands.WEB_ALERT_REMOVE];
27
+ }
25
28
  get schema() {
26
29
  return options;
27
30
  }
@@ -50,5 +53,5 @@ class SpoWebAlertRemoveCommand extends SpoCommand {
50
53
  }
51
54
  }
52
55
  }
53
- export default new SpoWebAlertRemoveCommand();
54
- //# sourceMappingURL=web-alert-remove.js.map
56
+ export default new SpoWebRuleRemoveCommand();
57
+ //# sourceMappingURL=web-rule-remove.js.map
@@ -379,6 +379,8 @@ export default {
379
379
  WEB_ROLEASSIGNMENT_ADD: `${prefix} web roleassignment add`,
380
380
  WEB_ROLEINHERITANCE_BREAK: `${prefix} web roleinheritance break`,
381
381
  WEB_ROLEINHERITANCE_RESET: `${prefix} web roleinheritance reset`,
382
+ WEB_RULE_LIST: `${prefix} web rule list`,
383
+ WEB_RULE_REMOVE: `${prefix} web rule remove`,
382
384
  WEB_SET: `${prefix} web set`
383
385
  };
384
386
  //# sourceMappingURL=commands.js.map
@@ -63,6 +63,26 @@ export const powerPlatform = {
63
63
  }
64
64
  return items[0];
65
65
  },
66
+ /**
67
+ * Get a website record ID by unique name
68
+ * Returns the powerpagesiteid of the website
69
+ * @param dynamicsApiUrl The dynamics api url of the environment
70
+ * @param websiteUniqueName The unique name of the Power Pages website
71
+ */
72
+ async getWebsiteIdByUniqueName(dynamicsApiUrl, websiteUniqueName) {
73
+ const requestOptions = {
74
+ url: `${dynamicsApiUrl}/api/data/v9.2/powerpagesites?$filter=name eq '${websiteUniqueName}'`,
75
+ headers: {
76
+ accept: 'application/json;odata.metadata=none'
77
+ },
78
+ responseType: 'json'
79
+ };
80
+ const result = await request.get(requestOptions);
81
+ if (result.value.length === 0) {
82
+ throw Error(`The specified website '${websiteUniqueName}' does not exist.`);
83
+ }
84
+ return result.value[0].powerpagesiteid;
85
+ },
66
86
  /**
67
87
  * Get a card by name
68
88
  * Returns a card object
@@ -0,0 +1,280 @@
1
+ import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
4
+
5
+ # outlook event get
6
+
7
+ Retrieve an event from a specific calendar of a user
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 outlook event get [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. Specify either `userId` or `userName`, but not both.
23
+
24
+ `--userName [userName]`
25
+ : UPN of the user. Specify either `userId` or `userName`, but not both.
26
+
27
+ `--calendarId [calendarId]`
28
+ : ID of the calendar. Specify either `calendarId` or `calendarName`, but not both.
29
+
30
+ `--calendarName [calendarName]`
31
+ : Name of the calendar. Specify either `calendarId` or `calendarName`, but not both.
32
+
33
+ `--timeZone [timeZone]`
34
+ : The time zone for the event start and end times. If not specified, the start and end times are in UTC.
35
+ ```
36
+
37
+ <Global />
38
+
39
+ ## Permissions
40
+
41
+ <Tabs>
42
+ <TabItem value="Delegated">
43
+
44
+ | Resource | Permissions |
45
+ |-----------------|-------------------------------------|
46
+ | Microsoft Graph | Calendars.ReadBasic, Calendars.Read |
47
+
48
+ </TabItem>
49
+ <TabItem value="Application">
50
+
51
+ | Resource | Permissions |
52
+ |-----------------|-------------------------------------|
53
+ | Microsoft Graph | Calendars.ReadBasic, Calendars.Read |
54
+
55
+ </TabItem>
56
+ </Tabs>
57
+
58
+ :::note
59
+
60
+ When you specify a value for timeZone, consider the options of the [time zone list](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11#time-zones), or [additional time zone list](https://learn.microsoft.com/en-us/graph/api/resources/datetimetimezone?view=graph-rest-1.0#additional-time-zones).
61
+
62
+ :::
63
+
64
+ ## Examples
65
+
66
+ Get an event for the current signed-in user from a calendar specified by id.
67
+
68
+ ```sh
69
+ m365 outlook event get --id "AAMkAGVmMDEzMTM4L" --userId "@meId" --calendarId "AAMkAGRkZ"
70
+ ```
71
+
72
+ Get an event for the user from a calendar specified by id and return event times in Pacific Standard Time time zone.
73
+
74
+ ```sh
75
+ m365 outlook event get --id "AAMkAGVmMDEzMTM4L" --userName "john.doe@contoso.com" --calendarId "AAMkAGRkZ" --timeZone 'Pacific Standard Time'
76
+ ```
77
+
78
+ ## Response
79
+
80
+ <Tabs>
81
+ <TabItem value="JSON">
82
+
83
+ ```json
84
+ {
85
+ "id": "AQMkAGYzNjMxYTU4LTJjZjYtNDlhMi1iMzQ2LWVmMTU3YmUzOGM5MABGAAADMN-7V4K8g0q_adetip1DygcAxMBBaLl1lk_dAn8KkjfXKQAAAgENAAAAxMBBaLl1lk_dAn8KkjfXKQAGMVCCQQAAAA==",
86
+ "createdDateTime": "2026-04-04T11:03:22.881996Z",
87
+ "lastModifiedDateTime": "2026-04-04T11:05:26.2216557Z",
88
+ "changeKey": "xMBBaLl1lk+dAn8KkjfXKQAGLmp8jA==",
89
+ "categories": [],
90
+ "transactionId": "localevent:93639269-b1b2-d604-5170-283b0e470da5",
91
+ "originalStartTimeZone": "UTC",
92
+ "originalEndTimeZone": "UTC",
93
+ "iCalUId": "040000008200E00074C5B7101A82E0080000000051EE49A722C4DC0100000000000000001000000065853ABD35D4FE438112E0B9CF451ABF",
94
+ "uid": "040000008200E00074C5B7101A82E0080000000051EE49A722C4DC0100000000000000001000000065853ABD35D4FE438112E0B9CF451ABF",
95
+ "reminderMinutesBeforeStart": 15,
96
+ "isReminderOn": true,
97
+ "hasAttachments": false,
98
+ "subject": "New Product Regulations Touchpoint",
99
+ "bodyPreview": "New Product Regulations Strategy Online Touchpoint Meeting\r\\\n\r\\\nYou're receiving this message because you're a member of the Engineering group. If you don't want to receive any messages or events from this group, stop following it in your inbox.\r\\\n\r\\\n________",
100
+ "importance": "normal",
101
+ "sensitivity": "normal",
102
+ "isAllDay": false,
103
+ "isCancelled": false,
104
+ "isOrganizer": true,
105
+ "responseRequested": true,
106
+ "seriesMasterId": null,
107
+ "showAs": "busy",
108
+ "type": "singleInstance",
109
+ "webLink": "https://outlook.office365.com/owa/?itemid=AQMkAGYzNjMxYTU4LTJjZjYtNDlhMi1iMzQ2LWVmMTU3YmUzOGM5MABGAAADMN%2F7V4K8g0q%2Badetip1DygcAxMBBaLl1lk%2BdAn8KkjfXKQAAAgENAAAAxMBBaLl1lk%2BdAn8KkjfXKQAGMVCCQQAAAA%3D%3D&exvsurl=1&path=/calendar/item",
110
+ "onlineMeetingUrl": null,
111
+ "isOnlineMeeting": true,
112
+ "onlineMeetingProvider": "teamsForBusiness",
113
+ "allowNewTimeProposals": true,
114
+ "occurrenceId": null,
115
+ "isDraft": false,
116
+ "hideAttendees": false,
117
+ "responseStatus": {
118
+ "response": "organizer",
119
+ "time": "0001-01-01T00:00:00Z"
120
+ },
121
+ "body": {
122
+ "contentType": "html",
123
+ "content": "<html>\r\\\n<head>\r\\\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\\\n</head>\r\\\n<body>\r\\\n<div style=\"font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)\">\r\\\nNew Product Regulations Strategy Online Touchpoint Meeting</div>\r\\\n<div style=\"font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)\">\r\\\n<br>\r\\\n</div>\r\\\n<div style=\"font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)\">\r\\\nYou're receiving this message because you're a member of the Engineering group. If you don't want to receive any messages or events from this group, stop following it in&nbsp;your inbox.</div>\r\\\n<br>\r\\\n<div class=\"me-email-text\" lang=\"en-US\" style=\"max-width:1024px; color:#242424; font-family:'Segoe UI','Helvetica Neue',Helvetica,Arial,sans-serif\">\r\\\n<div aria-hidden=\"true\" style=\"margin-bottom:24px; overflow:hidden; white-space:nowrap\">\r\\\n________________________________________________________________________________</div>\r\\\n<div style=\"margin-bottom:12px\"><span class=\"me-email-text\" style=\"font-size:20px; color:#242424; font-weight:600\">Microsoft Teams meeting</span>\r\\\n</div>\r\\\n<div style=\"margin-bottom:6px\"><span class=\"me-email-text\" style=\"font-size:20px; color:#242424; font-weight:600\">Join:\r\\\n</span><a href=\"https://teams.microsoft.com/meet/48803137263631?p=YXe9K6OhVD94VIC23M\" id=\"meet_invite_block.action.join_link\" title=\"Meeting join\" aria-label=\"Meeting join\" class=\"me-email-link\" style=\"font-size:20px; text-decoration:underline; color:#5B5FC7\">https://teams.microsoft.com/meet/48803137263631?p=YXe9K6OhVD94VIC23M</a>\r\\\n</div>\r\\\n<div style=\"margin-bottom:6px\"><span class=\"me-email-text-secondary\" style=\"font-size:14px; color:#616161\">Meeting ID:\r\\\n</span><span class=\"me-email-text\" style=\"font-size:14px; color:#242424\">488 031 372 636 31</span>\r\\\n</div>\r\\\n<div style=\"margin-bottom:32px\"><span class=\"me-email-text-secondary\" style=\"font-size:14px; color:#616161\">Passcode:\r\\\n</span><span class=\"me-email-text\" style=\"font-size:14px; color:#242424\">uN2Np6PN</span>\r\\\n</div>\r\\\n<div style=\"margin-bottom:12px; max-width:1024px\">\r\\\n<hr style=\"border:0; background:#616161; height:1px\">\r\\\n</div>\r\\\n<div style=\"margin-bottom:24px\"><a href=\"https://aka.ms/JoinTeamsMeeting?omkt=en-US\" id=\"meet_invite_block.action.help\" class=\"me-email-link\" style=\"font-size:14px; text-decoration:underline; color:#5B5FC7\">Need help?</a>\r\\\n<span style=\"color:#616161\">|</span> <a href=\"https://teams.microsoft.com/l/meetup-join/19%3ameeting_ZjE4ZGNmODktODg3ZS00MTRjLTg4ZmMtZWMzMjBkZTE5YjBl%40thread.v2/0?context=%7b%22Tid%22%3a%22f2c94a41-d33d-4b60-bb3d-0bed4cdf9855%22%2c%22Oid%22%3a%229bd29c6c-181e-41f5-a1b6-bc30bbf652d3%22%7d\" id=\"meet_invite_block.action.join_link_compatibility\" class=\"me-email-link\" style=\"font-size:14px; text-decoration:underline; color:#5B5FC7\">\r\\\nSystem reference</a> </div>\r\\\n<div><span class=\"me-email-text-secondary\" style=\"font-size:14px; color:#616161\">For organizers:\r\\\n</span><a href=\"https://teams.microsoft.com/meetingOptions/?organizerId=9bd29c6c-181e-41f5-a1b6-bc30bbf652d3&amp;tenantId=f2c94a41-d33d-4b60-bb3d-0bed4cdf9855&amp;threadId=19_meeting_ZjE4ZGNmODktODg3ZS00MTRjLTg4ZmMtZWMzMjBkZTE5YjBl@thread.v2&amp;messageId=0&amp;language=en-US\" id=\"meet_invite_block.action.organizer_meet_options\" class=\"me-email-link\" style=\"font-size:14px; text-decoration:underline; color:#5B5FC7\">Meeting\r\\\n options</a> </div>\r\\\n<div style=\"margin-top:24px; margin-bottom:6px\"></div>\r\\\n<div style=\"margin-bottom:24px\"></div>\r\\\n<div aria-hidden=\"true\" style=\"margin-bottom:24px; overflow:hidden; white-space:nowrap\">\r\\\n________________________________________________________________________________</div>\r\\\n</div>\r\\\n</body>\r\\\n</html>\r\\\n"
124
+ },
125
+ "start": {
126
+ "dateTime": "2026-04-04T11:30:00.0000000",
127
+ "timeZone": "UTC"
128
+ },
129
+ "end": {
130
+ "dateTime": "2026-04-04T12:00:00.0000000",
131
+ "timeZone": "UTC"
132
+ },
133
+ "location": {
134
+ "displayName": "Microsoft Teams Meeting",
135
+ "locationType": "default",
136
+ "uniqueId": "Microsoft Teams Meeting",
137
+ "uniqueIdType": "private"
138
+ },
139
+ "locations": [
140
+ {
141
+ "displayName": "Microsoft Teams Meeting",
142
+ "locationType": "default",
143
+ "uniqueId": "Microsoft Teams Meeting",
144
+ "uniqueIdType": "private"
145
+ }
146
+ ],
147
+ "recurrence": null,
148
+ "attendees": [
149
+ {
150
+ "type": "required",
151
+ "status": {
152
+ "response": "none",
153
+ "time": "0001-01-01T00:00:00Z"
154
+ },
155
+ "emailAddress": {
156
+ "name": "Debra Berger",
157
+ "address": "debraB@contoso.com"
158
+ }
159
+ }
160
+ ],
161
+ "organizer": {
162
+ "emailAddress": {
163
+ "name": "John Doe",
164
+ "address": "john.doe@contoso.com"
165
+ }
166
+ },
167
+ "onlineMeeting": {
168
+ "joinUrl": "https://teams.microsoft.com/l/meetup-join/19%3ameeting_ZjE4ZGNmODktODg3ZS00MTRjLTg4ZmMtZWMzMjBkZTE5YjBl%40thread.v2/0?context=%7b%22Tid%22%3a%22f2c94a41-d33d-4b60-bb3d-0bed4cdf9855%22%2c%22Oid%22%3a%229bd29c6c-181e-41f5-a1b6-bc30bbf652d3%22%7d"
169
+ }
170
+ }
171
+ ```
172
+
173
+ </TabItem>
174
+ <TabItem value="Text">
175
+
176
+ ```text
177
+ allowNewTimeProposals : true
178
+ attendees : [{"type":"required","status":{"response":"none","time":"0001-01-01T00:00:00Z"},"emailAddress":{"name":"Debra Berger","address":"debraB@contoso.com"}}]
179
+ body : {"contentType":"html","content":"<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\n<div style=\"font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)\">\r\nNew Product Regulations Strategy Online Touchpoint Meeting</div>\r\n<div style=\"font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)\">\r\n<br>\r\n</div>\r\n<div style=\"font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)\">\r\nYou're receiving this message because you're a member of the Engineering group. If you don't want to receive any messages or events from this group, stop following it in&nbsp;your inbox.</div>\r\n<br>\r\n<div class=\"me-email-text\" lang=\"en-US\" style=\"max-width:1024px; color:#242424; font-family:'Segoe UI','Helvetica Neue',Helvetica,Arial,sans-serif\">\r\n<div aria-hidden=\"true\" style=\"margin-bottom:24px; overflow:hidden; white-space:nowrap\">\r\n________________________________________________________________________________</div>\r\n<div style=\"margin-bottom:12px\"><span class=\"me-email-text\" style=\"font-size:20px; color:#242424; font-weight:600\">Microsoft Teams meeting</span>\r\n</div>\r\n<div style=\"margin-bottom:6px\"><span class=\"me-email-text\" style=\"font-size:20px; color:#242424; font-weight:600\">Join:\r\n</span><a href=\"https://teams.microsoft.com/meet/48803137263631?p=YXe9K6OhVD94VIC23M\" id=\"meet_invite_block.action.join_link\" title=\"Meeting join\" aria-label=\"Meeting join\" class=\"me-email-link\" style=\"font-size:20px; text-decoration:underline; color:#5B5FC7\">https://teams.microsoft.com/meet/48803137263631?p=YXe9K6OhVD94VIC23M</a>\r\n</div>\r\n<div style=\"margin-bottom:6px\"><span class=\"me-email-text-secondary\" style=\"font-size:14px; color:#616161\">Meeting ID:\r\n</span><span class=\"me-email-text\" style=\"font-size:14px; color:#242424\">488 031 372 636 31</span>\r\n</div>\r\n<div style=\"margin-bottom:32px\"><span class=\"me-email-text-secondary\" style=\"font-size:14px; color:#616161\">Passcode:\r\n</span><span class=\"me-email-text\" style=\"font-size:14px; color:#242424\">uN2Np6PN</span>\r\n</div>\r\n<div style=\"margin-bottom:12px; max-width:1024px\">\r\n<hr style=\"border:0; background:#616161; height:1px\">\r\n</div>\r\n<div style=\"margin-bottom:24px\"><a href=\"https://aka.ms/JoinTeamsMeeting?omkt=en-US\" id=\"meet_invite_block.action.help\" class=\"me-email-link\" style=\"font-size:14px; text-decoration:underline; color:#5B5FC7\">Need help?</a>\r\n<span style=\"color:#616161\">|</span> <a href=\"https://teams.microsoft.com/l/meetup-join/19%3ameeting_ZjE4ZGNmODktODg3ZS00MTRjLTg4ZmMtZWMzMjBkZTE5YjBl%40thread.v2/0?context=%7b%22Tid%22%3a%22f2c94a41-d33d-4b60-bb3d-0bed4cdf9855%22%2c%22Oid%22%3a%229bd29c6c-181e-41f5-a1b6-bc30bbf652d3%22%7d\" id=\"meet_invite_block.action.join_link_compatibility\" class=\"me-email-link\" style=\"font-size:14px; text-decoration:underline; color:#5B5FC7\">\r\nSystem reference</a> </div>\r\n<div><span class=\"me-email-text-secondary\" style=\"font-size:14px; color:#616161\">For organizers:\r\n</span><a href=\"https://teams.microsoft.com/meetingOptions/?organizerId=9bd29c6c-181e-41f5-a1b6-bc30bbf652d3&amp;tenantId=f2c94a41-d33d-4b60-bb3d-0bed4cdf9855&amp;threadId=19_meeting_ZjE4ZGNmODktODg3ZS00MTRjLTg4ZmMtZWMzMjBkZTE5YjBl@thread.v2&amp;messageId=0&amp;language=en-US\" id=\"meet_invite_block.action.organizer_meet_options\" class=\"me-email-link\" style=\"font-size:14px; text-decoration:underline; color:#5B5FC7\">Meeting\r\n options</a> </div>\r\n<div style=\"margin-top:24px; margin-bottom:6px\"></div>\r\n<div style=\"margin-bottom:24px\"></div>\r\n<div aria-hidden=\"true\" style=\"margin-bottom:24px; overflow:hidden; white-space:nowrap\">\r\n________________________________________________________________________________</div>\r\n</div>\r\n</body>\r\n</html>\r\n"}
180
+ bodyPreview : New Product Regulations Strategy Online Touchpoint Meeting
181
+
182
+ You're receiving this message because you're a member of the Engineering group. If you don't want to receive any messages or events from this group, stop following it in your inbox.
183
+
184
+ ________
185
+ categories : []
186
+ changeKey : xMBBaLl1lk+dAn8KkjfXKQAGLmp8jA==
187
+ createdDateTime : 2026-04-04T11:03:22.881996Z
188
+ end : {"dateTime":"2026-04-04T12:00:00.0000000","timeZone":"UTC"}
189
+ hasAttachments : false
190
+ hideAttendees : false
191
+ iCalUId : 040000008200E00074C5B7101A82E0080000000051EE49A722C4DC0100000000000000001000000065853ABD35D4FE438112E0B9CF451ABF
192
+ id : AQMkAGYzNjMxYTU4LTJjZjYtNDlhMi1iMzQ2LWVmMTU3YmUzOGM5MABGAAADMN-7V4K8g0q_adetip1DygcAxMBBaLl1lk_dAn8KkjfXKQAAAgENAAAAxMBBaLl1lk_dAn8KkjfXKQAGMVCCQQAAAA==
193
+ importance : normal
194
+ isAllDay : false
195
+ isCancelled : false
196
+ isDraft : false
197
+ isOnlineMeeting : true
198
+ isOrganizer : true
199
+ isReminderOn : true
200
+ lastModifiedDateTime : 2026-04-04T11:05:26.2216557Z
201
+ location : {"displayName":"Microsoft Teams Meeting","locationType":"default","uniqueId":"Microsoft Teams Meeting","uniqueIdType":"private"}
202
+ locations : [{"displayName":"Microsoft Teams Meeting","locationType":"default","uniqueId":"Microsoft Teams Meeting","uniqueIdType":"private"}]
203
+ occurrenceId : null
204
+ onlineMeeting : {"joinUrl":"https://teams.microsoft.com/l/meetup-join/19%3ameeting_ZjE4ZGNmODktODg3ZS00MTRjLTg4ZmMtZWMzMjBkZTE5YjBl%40thread.v2/0?context=%7b%22Tid%22%3a%22f2c94a41-d33d-4b60-bb3d-0bed4cdf9855%22%2c%22Oid%22%3a%229bd29c6c-181e-41f5-a1b6-bc30bbf652d3%22%7d"}
205
+ onlineMeetingProvider : teamsForBusiness
206
+ onlineMeetingUrl : null
207
+ organizer : {"emailAddress":{"name":"John Doe","address":"john.doe@contoso.com"}}
208
+ originalEndTimeZone : UTC
209
+ originalStartTimeZone : UTC
210
+ recurrence : null
211
+ reminderMinutesBeforeStart: 15
212
+ responseRequested : true
213
+ responseStatus : {"response":"organizer","time":"0001-01-01T00:00:00Z"}
214
+ sensitivity : normal
215
+ seriesMasterId : null
216
+ showAs : busy
217
+ start : {"dateTime":"2026-04-04T11:30:00.0000000","timeZone":"UTC"}
218
+ subject : New Product Regulations Touchpoint
219
+ transactionId : localevent:93639269-b1b2-d604-5170-283b0e470da5
220
+ type : singleInstance
221
+ uid : 040000008200E00074C5B7101A82E0080000000051EE49A722C4DC0100000000000000001000000065853ABD35D4FE438112E0B9CF451ABF
222
+ webLink : https://outlook.office365.com/owa/?itemid=AQMkAGYzNjMxYTU4LTJjZjYtNDlhMi1iMzQ2LWVmMTU3YmUzOGM5MABGAAADMN%2F7V4K8g0q%2Badetip1DygcAxMBBaLl1lk%2BdAn8KkjfXKQAAAgENAAAAxMBBaLl1lk%2BdAn8KkjfXKQAGMVCCQQAAAA%3D%3D&exvsurl=1&path=/calendar/item
223
+ ```
224
+
225
+ </TabItem>
226
+ <TabItem value="CSV">
227
+
228
+ ```csv
229
+ id,createdDateTime,lastModifiedDateTime,changeKey,transactionId,originalStartTimeZone,originalEndTimeZone,iCalUId,uid,reminderMinutesBeforeStart,isReminderOn,hasAttachments,subject,bodyPreview,importance,sensitivity,isAllDay,isCancelled,isOrganizer,responseRequested,seriesMasterId,showAs,type,webLink,onlineMeetingUrl,isOnlineMeeting,onlineMeetingProvider,allowNewTimeProposals,occurrenceId,isDraft,hideAttendees,recurrence
230
+ AQMkAGYzNjMxYTU4LTJjZjYtNDlhMi1iMzQ2LWVmMTU3YmUzOGM5MABGAAADMN-7V4K8g0q_adetip1DygcAxMBBaLl1lk_dAn8KkjfXKQAAAgENAAAAxMBBaLl1lk_dAn8KkjfXKQAGMVCCQQAAAA==,2026-04-04T11:03:22.881996Z,2026-04-04T11:05:26.2216557Z,xMBBaLl1lk+dAn8KkjfXKQAGLmp8jA==,localevent:93639269-b1b2-d604-5170-283b0e470da5,UTC,UTC,040000008200E00074C5B7101A82E0080000000051EE49A722C4DC0100000000000000001000000065853ABD35D4FE438112E0B9CF451ABF,040000008200E00074C5B7101A82E0080000000051EE49A722C4DC0100000000000000001000000065853ABD35D4FE438112E0B9CF451ABF,15,1,0,New Product Regulations Touchpoint,"New Product Regulations Strategy Online Touchpoint Meeting
231
+
232
+ You're receiving this message because you're a member of the Engineering group. If you don't want to receive any messages or events from this group, stop following it in your inbox.
233
+
234
+ ________",normal,normal,0,0,1,1,,busy,singleInstance,https://outlook.office365.com/owa/?itemid=AQMkAGYzNjMxYTU4LTJjZjYtNDlhMi1iMzQ2LWVmMTU3YmUzOGM5MABGAAADMN%2F7V4K8g0q%2Badetip1DygcAxMBBaLl1lk%2BdAn8KkjfXKQAAAgENAAAAxMBBaLl1lk%2BdAn8KkjfXKQAGMVCCQQAAAA%3D%3D&exvsurl=1&path=/calendar/item,,1,teamsForBusiness,1,,0,0,
235
+ ```
236
+
237
+ </TabItem>
238
+ <TabItem value="Markdown">
239
+
240
+ ```md
241
+ # outlook event get --debug "false" --verbose "false" --id "AQMkAGYzNjMxYTU4LTJjZjYtNDlhMi1iMzQ2LWVmMTU3YmUzOGM5MABGAAADMN-7V4K8g0q_adetip1DygcAxMBBaLl1lk_dAn8KkjfXKQAAAgENAAAAxMBBaLl1lk_dAn8KkjfXKQAGMVCCQQAAAA==" --userId "9bd29c6c-181e-41f5-a1b6-bc30bbf652d3" --calendarName "Calendar"
242
+
243
+ Date: 4/4/2026
244
+
245
+ ## AQMkAGYzNjMxYTU4LTJjZjYtNDlhMi1iMzQ2LWVmMTU3YmUzOGM5MABGAAADMN-7V4K8g0q_adetip1DygcAxMBBaLl1lk_dAn8KkjfXKQAAAgENAAAAxMBBaLl1lk_dAn8KkjfXKQAGMVCCQQAAAA==
246
+
247
+ Property | Value
248
+ ---------|-------
249
+ id | AQMkAGYzNjMxYTU4LTJjZjYtNDlhMi1iMzQ2LWVmMTU3YmUzOGM5MABGAAADMN-7V4K8g0q\_adetip1DygcAxMBBaLl1lk\_dAn8KkjfXKQAAAgENAAAAxMBBaLl1lk\_dAn8KkjfXKQAGMVCCQQAAAA==
250
+ createdDateTime | 2026-04-04T11:03:22.881996Z
251
+ lastModifiedDateTime | 2026-04-04T11:05:26.2216557Z
252
+ changeKey | xMBBaLl1lk+dAn8KkjfXKQAGLmp8jA==
253
+ transactionId | localevent:93639269-b1b2-d604-5170-283b0e470da5
254
+ originalStartTimeZone | UTC
255
+ originalEndTimeZone | UTC
256
+ iCalUId | 040000008200E00074C5B7101A82E0080000000051EE49A722C4DC0100000000000000001000000065853ABD35D4FE438112E0B9CF451ABF
257
+ uid | 040000008200E00074C5B7101A82E0080000000051EE49A722C4DC0100000000000000001000000065853ABD35D4FE438112E0B9CF451ABF
258
+ reminderMinutesBeforeStart | 15
259
+ isReminderOn | true
260
+ hasAttachments | false
261
+ subject | New Product Regulations Touchpoint
262
+ <br>You're receiving this message because you're a member of the Engineering group. If you don't want to receive any messages or events from thi<br>\_\_\_\_\_\_\_\_ing it in your inbox.
263
+ importance | normal
264
+ sensitivity | normal
265
+ isAllDay | false
266
+ isCancelled | false
267
+ isOrganizer | true
268
+ responseRequested | true
269
+ showAs | busy
270
+ type | singleInstance
271
+ webLink | https://outlook.office365.com/owa/?itemid=AQMkAGYzNjMxYTU4LTJjZjYtNDlhMi1iMzQ2LWVmMTU3YmUzOGM5MABGAAADMN%2F7V4K8g0q%2Badetip1DygcAxMBBaLl1lk%2BdAn8KkjfXKQAAAgENAAAAxMBBaLl1lk%2BdAn8KkjfXKQAGMVCCQQAAAA%3D%3D&exvsurl=1&path=/calendar/item
272
+ isOnlineMeeting | true
273
+ onlineMeetingProvider | teamsForBusiness
274
+ allowNewTimeProposals | true
275
+ isDraft | false
276
+ hideAttendees | false
277
+ ```
278
+
279
+ </TabItem>
280
+ </Tabs>