@pnp/cli-microsoft365 10.3.0 → 10.4.0-beta.17b3a55

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/config.js CHANGED
@@ -35,8 +35,10 @@ export default {
35
35
  'https://graph.microsoft.com/Policy.Read.All',
36
36
  'https://graph.microsoft.com/RecordsManagement.ReadWrite.All',
37
37
  'https://graph.microsoft.com/Reports.ReadWrite.All',
38
+ 'https://graph.microsoft.com/ReportSettings.ReadWrite.All',
38
39
  'https://graph.microsoft.com/RoleAssignmentSchedule.ReadWrite.Directory',
39
40
  'https://graph.microsoft.com/RoleEligibilitySchedule.Read.Directory',
41
+ 'https://graph.microsoft.com/RoleManagement.Read.Directory',
40
42
  'https://graph.microsoft.com/SecurityEvents.Read.All',
41
43
  'https://graph.microsoft.com/ServiceHealth.Read.All',
42
44
  'https://graph.microsoft.com/ServiceMessage.Read.All',
@@ -0,0 +1,28 @@
1
+ import { odata } from '../../../../utils/odata.js';
2
+ import GraphCommand from '../../../base/GraphCommand.js';
3
+ import commands from '../../commands.js';
4
+ class EntraResourcenamespaceListCommand extends GraphCommand {
5
+ get name() {
6
+ return commands.RESOURCENAMESPACE_LIST;
7
+ }
8
+ get description() {
9
+ return 'Get a list of the RBAC resource namespaces and their properties';
10
+ }
11
+ defaultProperties() {
12
+ return ['id', 'name'];
13
+ }
14
+ async commandAction(logger) {
15
+ if (this.verbose) {
16
+ await logger.logToStderr('Getting a list of the RBAC resource namespaces and their properties...');
17
+ }
18
+ try {
19
+ const results = await odata.getAllItems(`${this.resource}/beta/roleManagement/directory/resourceNamespaces`);
20
+ await logger.log(results);
21
+ }
22
+ catch (err) {
23
+ this.handleRejectedODataJsonPromise(err);
24
+ }
25
+ }
26
+ }
27
+ export default new EntraResourcenamespaceListCommand();
28
+ //# sourceMappingURL=resourcenamespace-list.js.map
@@ -88,6 +88,7 @@ export default {
88
88
  PIM_ROLE_ASSIGNMENT_ELIGIBILITY_LIST: `${prefix} pim role assignment eligibility list`,
89
89
  PIM_ROLE_REQUEST_LIST: `${prefix} pim role request list`,
90
90
  POLICY_LIST: `${prefix} policy list`,
91
+ RESOURCENAMESPACE_LIST: `${prefix} resourcenamespace list`,
91
92
  ROLEDEFINITION_ADD: `${prefix} roledefinition add`,
92
93
  ROLEDEFINITION_LIST: `${prefix} roledefinition list`,
93
94
  ROLEDEFINITION_GET: `${prefix} roledefinition get`,
@@ -0,0 +1,71 @@
1
+ import { z } from 'zod';
2
+ import { globalOptionsZod } from '../../../../Command.js';
3
+ import { zod } from '../../../../utils/zod.js';
4
+ import GraphCommand from '../../../base/GraphCommand.js';
5
+ import commands from '../../commands.js';
6
+ import { validation } from '../../../../utils/validation.js';
7
+ import request from '../../../../request.js';
8
+ import { accessToken } from '../../../../utils/accessToken.js';
9
+ import auth from '../../../../Auth.js';
10
+ const options = globalOptionsZod
11
+ .extend({
12
+ userId: zod.alias('i', z.string().refine(id => validation.isValidGuid(id), id => ({
13
+ message: `'${id}' is not a valid GUID.`
14
+ })).optional()),
15
+ userName: zod.alias('n', z.string().refine(name => validation.isValidUserPrincipalName(name), name => ({
16
+ message: `'${name}' is not a valid UPN.`
17
+ })).optional())
18
+ })
19
+ .strict();
20
+ class OutlookMailboxSettingsGetCommand extends GraphCommand {
21
+ get name() {
22
+ return commands.MAILBOX_SETTINGS_GET;
23
+ }
24
+ get description() {
25
+ return `Get the user's mailbox settings`;
26
+ }
27
+ get schema() {
28
+ return options;
29
+ }
30
+ getRefinedSchema(schema) {
31
+ return schema
32
+ .refine(options => !(options.userId && options.userName), {
33
+ message: 'Specify either userId or userName, but not both'
34
+ });
35
+ }
36
+ async commandAction(logger, args) {
37
+ const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken);
38
+ let requestUrl = `${this.resource}/v1.0/me/mailboxSettings`;
39
+ if (isAppOnlyAccessToken) {
40
+ if (!args.options.userId && !args.options.userName) {
41
+ throw 'When running with application permissions either userId or userName is required';
42
+ }
43
+ const userIdentifier = args.options.userId ?? args.options.userName;
44
+ if (this.verbose) {
45
+ await logger.logToStderr(`Retrieving mailbox settings for user ${userIdentifier}...`);
46
+ }
47
+ requestUrl = `${this.resource}/v1.0/users('${userIdentifier}')/mailboxSettings`;
48
+ }
49
+ else {
50
+ if (args.options.userId || args.options.userName) {
51
+ throw 'You can retrieve mailbox settings of other users only if CLI is authenticated in app-only mode';
52
+ }
53
+ }
54
+ const requestOptions = {
55
+ url: requestUrl,
56
+ headers: {
57
+ accept: 'application/json;odata.metadata=none'
58
+ },
59
+ responseType: 'json'
60
+ };
61
+ try {
62
+ const result = await request.get(requestOptions);
63
+ await logger.log(result);
64
+ }
65
+ catch (err) {
66
+ this.handleRejectedODataJsonPromise(err);
67
+ }
68
+ }
69
+ }
70
+ export default new OutlookMailboxSettingsGetCommand();
71
+ //# sourceMappingURL=mailbox-settings-get.js.map
@@ -46,6 +46,9 @@ class OutlookMailboxSettingsSetCommand extends GraphCommand {
46
46
  }
47
47
  getRefinedSchema(schema) {
48
48
  return schema
49
+ .refine(options => !(options.userId && options.userName), {
50
+ message: 'Specify either userId or userName, but not both'
51
+ })
49
52
  .refine(options => [options.workingDays, options.workingHoursStartTime, options.workingHoursEndTime, options.workingHoursTimeZone,
50
53
  options.autoReplyStatus, options.autoReplyExternalAudience, options.autoReplyExternalMessage, options.autoReplyInternalMessage,
51
54
  options.autoReplyStartDateTime, options.autoReplyStartTimeZone, options.autoReplyEndDateTime, options.autoReplyEndTimeZone,
@@ -57,8 +60,8 @@ class OutlookMailboxSettingsSetCommand extends GraphCommand {
57
60
  const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken);
58
61
  let requestUrl = `${this.resource}/v1.0/me/mailboxSettings`;
59
62
  if (isAppOnlyAccessToken) {
60
- if (args.options.userId && args.options.userName) {
61
- throw 'When running with application permissions either userId or userName is required, but not both';
63
+ if (!args.options.userId && !args.options.userName) {
64
+ throw 'When running with application permissions either userId or userName is required';
62
65
  }
63
66
  const userIdentifier = args.options.userId ?? args.options.userName;
64
67
  if (this.verbose) {
@@ -1,6 +1,7 @@
1
1
  const prefix = 'outlook';
2
2
  export default {
3
3
  MAIL_SEND: `${prefix} mail send`,
4
+ MAILBOX_SETTINGS_GET: `${prefix} mailbox settings get`,
4
5
  MAILBOX_SETTINGS_SET: `${prefix} mailbox settings set`,
5
6
  MESSAGE_GET: `${prefix} message get`,
6
7
  MESSAGE_LIST: `${prefix} message list`,
@@ -8,6 +8,7 @@ import request from '../../../../request.js';
8
8
  import { validation } from '../../../../utils/validation.js';
9
9
  import SpoCommand from '../../../base/SpoCommand.js';
10
10
  import commands from '../../commands.js';
11
+ import outlookCommands from '../../../outlook/commands.js';
11
12
  class SpoMailSendCommand extends SpoCommand {
12
13
  get name() {
13
14
  return commands.MAIL_SEND;
@@ -23,6 +24,7 @@ class SpoMailSendCommand extends SpoCommand {
23
24
  __classPrivateFieldGet(this, _SpoMailSendCommand_instances, "m", _SpoMailSendCommand_initValidators).call(this);
24
25
  }
25
26
  async commandAction(logger, args) {
27
+ await this.showDeprecationWarning(logger, commands.MAIL_SEND, outlookCommands.MAIL_SEND);
26
28
  const params = {
27
29
  properties: {
28
30
  __metadata: { "type": "SP.Utilities.EmailProperties" },
@@ -1,15 +1,23 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- 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");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoPageGetCommand_instances, _SpoPageGetCommand_initOptions, _SpoPageGetCommand_initValidators;
1
+ import { z } from 'zod';
2
+ import { zod } from '../../../../utils/zod.js';
3
+ import { globalOptionsZod } from '../../../../Command.js';
7
4
  import request from '../../../../request.js';
8
5
  import { formatting } from '../../../../utils/formatting.js';
9
6
  import { urlUtil } from '../../../../utils/urlUtil.js';
10
7
  import { validation } from '../../../../utils/validation.js';
11
8
  import SpoCommand from '../../../base/SpoCommand.js';
12
9
  import commands from '../../commands.js';
10
+ const options = globalOptionsZod
11
+ .extend({
12
+ webUrl: zod.alias('u', z.string()
13
+ .refine(url => validation.isValidSharePointUrl(url) === true, url => ({
14
+ message: `'${url}' is not a valid SharePoint Online site URL.`
15
+ }))),
16
+ name: zod.alias('n', z.string()).optional(),
17
+ default: z.boolean().optional(),
18
+ metadataOnly: z.boolean().optional()
19
+ })
20
+ .strict();
13
21
  class SpoPageGetCommand extends SpoCommand {
14
22
  get name() {
15
23
  return commands.PAGE_GET;
@@ -20,21 +28,37 @@ class SpoPageGetCommand extends SpoCommand {
20
28
  defaultProperties() {
21
29
  return ['commentsDisabled', 'numSections', 'numControls', 'title', 'layoutType'];
22
30
  }
23
- constructor() {
24
- super();
25
- _SpoPageGetCommand_instances.add(this);
26
- __classPrivateFieldGet(this, _SpoPageGetCommand_instances, "m", _SpoPageGetCommand_initOptions).call(this);
27
- __classPrivateFieldGet(this, _SpoPageGetCommand_instances, "m", _SpoPageGetCommand_initValidators).call(this);
31
+ get schema() {
32
+ return options;
33
+ }
34
+ getRefinedSchema(schema) {
35
+ return schema
36
+ .refine(options => [options.name, options.default].filter(x => x !== undefined).length === 1, {
37
+ message: `Specify either name or default, but not both.`
38
+ });
28
39
  }
29
40
  async commandAction(logger, args) {
30
41
  if (this.verbose) {
31
42
  await logger.logToStderr(`Retrieving information about the page...`);
32
43
  }
33
- let pageName = args.options.name;
34
- if (args.options.name.indexOf('.aspx') < 0) {
35
- pageName += '.aspx';
36
- }
44
+ let pageName = '';
37
45
  try {
46
+ if (args.options.name) {
47
+ pageName = args.options.name.endsWith('.aspx')
48
+ ? args.options.name
49
+ : `${args.options.name}.aspx`;
50
+ }
51
+ else if (args.options.default) {
52
+ const requestOptions = {
53
+ url: `${args.options.webUrl}/_api/Web/RootFolder?$select=WelcomePage`,
54
+ headers: {
55
+ accept: 'application/json;odata=nometadata'
56
+ },
57
+ responseType: 'json'
58
+ };
59
+ const { WelcomePage } = await request.get(requestOptions);
60
+ pageName = WelcomePage.split('/').pop();
61
+ }
38
62
  let requestOptions = {
39
63
  url: `${args.options.webUrl}/_api/web/GetFileByServerRelativePath(DecodedUrl='${urlUtil.getServerRelativeSiteUrl(args.options.webUrl)}/SitePages/${formatting.encodeQueryParameter(pageName)}')?$expand=ListItemAllFields/ClientSideApplicationId,ListItemAllFields/PageLayoutType,ListItemAllFields/CommentsDisabled`,
40
64
  headers: {
@@ -45,7 +69,7 @@ class SpoPageGetCommand extends SpoCommand {
45
69
  };
46
70
  const page = await request.get(requestOptions);
47
71
  if (page.ListItemAllFields.ClientSideApplicationId !== 'b6917cb1-93a0-4b97-a84d-7cf49975d4ec') {
48
- throw `Page ${args.options.name} is not a modern page.`;
72
+ throw `Page ${pageName} is not a modern page.`;
49
73
  }
50
74
  let pageItemData = {};
51
75
  pageItemData = Object.assign({}, page);
@@ -80,16 +104,5 @@ class SpoPageGetCommand extends SpoCommand {
80
104
  }
81
105
  }
82
106
  }
83
- _SpoPageGetCommand_instances = new WeakSet(), _SpoPageGetCommand_initOptions = function _SpoPageGetCommand_initOptions() {
84
- this.options.unshift({
85
- option: '-n, --name <name>'
86
- }, {
87
- option: '-u, --webUrl <webUrl>'
88
- }, {
89
- option: '--metadataOnly'
90
- });
91
- }, _SpoPageGetCommand_initValidators = function _SpoPageGetCommand_initValidators() {
92
- this.validators.push(async (args) => validation.isValidSharePointUrl(args.options.webUrl));
93
- };
94
107
  export default new SpoPageGetCommand();
95
108
  //# sourceMappingURL=page-get.js.map
@@ -0,0 +1,32 @@
1
+ import GraphCommand from '../../../base/GraphCommand.js';
2
+ import commands from '../../commands.js';
3
+ import request from '../../../../request.js';
4
+ class TenantReportSettingsGetCommand extends GraphCommand {
5
+ get name() {
6
+ return commands.REPORT_SETTINGS_GET;
7
+ }
8
+ get description() {
9
+ return 'Get the tenant-level settings for Microsoft 365 reports';
10
+ }
11
+ async commandAction(logger) {
12
+ if (this.verbose) {
13
+ await logger.logToStderr('Getting tenant-level settings for Microsoft 365 reports...');
14
+ }
15
+ const requestOptions = {
16
+ url: `${this.resource}/v1.0/admin/reportSettings`,
17
+ headers: {
18
+ accept: 'application/json;odata.metadata=none'
19
+ },
20
+ responseType: 'json'
21
+ };
22
+ try {
23
+ const res = await request.get(requestOptions);
24
+ await logger.log(res);
25
+ }
26
+ catch (err) {
27
+ this.handleRejectedODataJsonPromise(err);
28
+ }
29
+ }
30
+ }
31
+ export default new TenantReportSettingsGetCommand();
32
+ //# sourceMappingURL=report-settings-get.js.map
@@ -15,6 +15,7 @@ export default {
15
15
  REPORT_OFFICE365ACTIVATIONSUSERDETAIL: `${prefix} report office365activationsuserdetail`,
16
16
  REPORT_OFFICE365ACTIVATIONSUSERCOUNTS: `${prefix} report office365activationsusercounts`,
17
17
  REPORT_SERVICESUSERCOUNTS: `${prefix} report servicesusercounts`,
18
+ REPORT_SETTINGS_GET: `${prefix} report settings get`,
18
19
  REPORT_SETTINGS_SET: `${prefix} report settings set`,
19
20
  SECURITY_ALERTS_LIST: `${prefix} security alerts list`,
20
21
  SERVICEANNOUNCEMENT_HEALTHISSUE_GET: `${prefix} serviceannouncement healthissue get`,
@@ -0,0 +1,96 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
4
+
5
+ # entra resourcenamespace list
6
+
7
+ Get a list of the RBAC resource namespaces and their properties
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 entra resourcenamespace list [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ <Global />
18
+
19
+ ## Remarks
20
+
21
+ :::warning
22
+
23
+ The command is based on an API that is currently in preview and is subject to change once the API reached general availability.
24
+
25
+ :::
26
+
27
+ ## Examples
28
+
29
+ Retrieve all resource namespaces.
30
+
31
+ ```sh
32
+ m365 entra resourcenamespace list
33
+ ```
34
+
35
+ ## Response
36
+
37
+ <Tabs>
38
+ <TabItem value="JSON">
39
+
40
+ ```json
41
+ [
42
+ {
43
+ "id": "microsoft.directory",
44
+ "name": "microsoft.directory"
45
+ },
46
+ {
47
+ "id": "microsoft.aad.b2c",
48
+ "name": "microsoft.aad.b2c"
49
+ }
50
+ ]
51
+ ```
52
+
53
+ </TabItem>
54
+ <TabItem value="Text">
55
+
56
+ ```text
57
+ id name
58
+ -------------------- --------------------
59
+ microsoft.directory microsoft.directory
60
+ microsoft.aad.b2c microsoft.aad.b2c
61
+ ```
62
+
63
+ </TabItem>
64
+ <TabItem value="CSV">
65
+
66
+ ```csv
67
+ id,name
68
+ microsoft.directory,microsoft.directory
69
+ microsoft.aad.b2c,microsoft.aad.b2c
70
+ ```
71
+
72
+ </TabItem>
73
+ <TabItem value="Markdown">
74
+
75
+ ```md
76
+ # entra resourcenamespace list
77
+
78
+ Date: 1/31/2025
79
+
80
+ ## microsoft.directory (microsoft.directory)
81
+
82
+ Property | Value
83
+ ---------|-------
84
+ id | microsoft.directory
85
+ name | microsoft.directory
86
+
87
+ ## microsoft.aad.b2c (microsoft.aad.b2c)
88
+
89
+ Property | Value
90
+ ---------|-------
91
+ id | microsoft.aad.b2c
92
+ name | microsoft.aad.b2c
93
+ ```
94
+
95
+ </TabItem>
96
+ </Tabs>
@@ -32,6 +32,8 @@ The command is based on an API that is currently in preview and is subject to ch
32
32
 
33
33
  :::
34
34
 
35
+ Use the `m365 entra resourcenamespace list` command to get a list of available resource namespaces.
36
+
35
37
  ## Examples
36
38
 
37
39
  Get a list of role permissions
@@ -0,0 +1,131 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
4
+
5
+ # outlook mailbox settings get
6
+
7
+ Get the user's mailbox settings
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 outlook mailbox settings get [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ ```md definition-list
18
+ `-i, --userId [userId]`
19
+ : The ID of the Microsoft Entra user for which you want to get mailbox settings. Specify either `userId` or `userName`, but not both. This option is required when using application permissions.
20
+
21
+ `-n, --userName [userName]`
22
+ : The UPN of the Microsoft Entra user for which you want to get mailbox settings. Specify either `userId` or `userName`, but not both. This option is required when using application permissions.
23
+ ```
24
+
25
+ <Global />
26
+
27
+ ## Examples
28
+
29
+ Get mailbox settings of the signed-in user
30
+
31
+ ```sh
32
+ m365 outlook mailbox settings get
33
+ ```
34
+
35
+ Get mailbox settings of a user specified by id
36
+
37
+ ```sh
38
+ m365 outlook mailbox settings get --userId 1caf7dcd-7e83-4c3a-94f7-932a1299c844
39
+ ```
40
+
41
+ ## Response
42
+
43
+ <Tabs>
44
+ <TabItem value="JSON">
45
+
46
+ ```json
47
+ {
48
+ "archiveFolder": "AQMkAGRlM2Y5YTkzLWI2NzAtNDczOS05YWMyLTJhZGY2MGExMGU0MgAuAAADSG3wPE27kUeySjmT5eRT8QEAfJKVL07sbkmIfHqjbDnRgQAAAgEMAAAA",
49
+ "timeZone": "Central Europe Standard Time",
50
+ "delegateMeetingMessageDeliveryOptions": "sendToDelegateOnly",
51
+ "dateFormat": "dd.MM.yyyy",
52
+ "timeFormat": "H:mm",
53
+ "userPurpose": "user",
54
+ "automaticRepliesSetting": {
55
+ "status": "disabled",
56
+ "externalAudience": "all",
57
+ "internalReplyMessage": "On vacation. Will be back.",
58
+ "externalReplyMessage": "Vacation",
59
+ "scheduledStartDateTime": {
60
+ "dateTime": "2025-01-20T08:00:00.0000000",
61
+ "timeZone": "UTC"
62
+ },
63
+ "scheduledEndDateTime": {
64
+ "dateTime": "2025-01-25T18:00:00.0000000",
65
+ "timeZone": "UTC"
66
+ }
67
+ },
68
+ "language": {
69
+ "locale": "en-US",
70
+ "displayName": "English (United States)"
71
+ },
72
+ "workingHours": {
73
+ "daysOfWeek": [
74
+ "monday",
75
+ "tuesday",
76
+ "wednesday",
77
+ "thursday",
78
+ "friday"
79
+ ],
80
+ "startTime": "08:00:00.0000000",
81
+ "endTime": "16:30:00.0000000",
82
+ "timeZone": {
83
+ "name": "Central Europe Standard Time"
84
+ }
85
+ }
86
+ }
87
+ ```
88
+
89
+ </TabItem>
90
+ <TabItem value="Text">
91
+
92
+ ```text
93
+ archiveFolder : AQMkAGRlM2Y5YTkzLWI2NzAtNDczOS05YWMyLTJhZGY2MGExMGU0MgAuAAADSG3wPE27kUeySjmT5eRT8QEAfJKVL07sbkmIfHqjbDnRgQAAAgEMAAAA
94
+ automaticRepliesSetting : {"status":"disabled","externalAudience":"all","internalReplyMessage":"","externalReplyMessage":"","scheduledStartDateTime":{"dateTime":"2025-01-20T08:00:00.0000000","timeZone":"UTC"},"scheduledEndDateTime":{"dateTime":"2025-01-25T18:00:00.0000000","timeZone":"UTC"}}
95
+ dateFormat : dd.MM.yyyy
96
+ delegateMeetingMessageDeliveryOptions: sendToDelegateOnly
97
+ language : {"locale":"en-US","displayName":"English (United States)"}
98
+ timeFormat : H:mm
99
+ timeZone : Central Europe Standard Time
100
+ userPurpose : user
101
+ workingHours : {"daysOfWeek":["monday","tuesday","wednesday","thursday","friday"],"startTime":"08:00:00.0000000","endTime":"16:30:00.0000000","timeZone":{"name":"Central Europe Standard Time"}}
102
+ ```
103
+
104
+ </TabItem>
105
+ <TabItem value="CSV">
106
+
107
+ ```csv
108
+ archiveFolder,timeZone,delegateMeetingMessageDeliveryOptions,dateFormat,timeFormat,userPurpose
109
+ AQMkAGRlM2Y5YTkzLWI2NzAtNDczOS05YWMyLTJhZGY2MGExMGU0MgAuAAADSG3wPE27kUeySjmT5eRT8QEAfJKVL07sbkmIfHqjbDnRgQAAAgEMAAAA,Central Europe Standard Time,sendToDelegateOnly,dd.MM.yyyy,H:mm,user
110
+ ```
111
+
112
+ </TabItem>
113
+ <TabItem value="Markdown">
114
+
115
+ ```md
116
+ # outlook mailbox settings get
117
+
118
+ Date: 1/17/2025
119
+
120
+ Property | Value
121
+ ---------|-------
122
+ archiveFolder | AQMkAGRlM2Y5YTkzLWI2NzAtNDczOS05YWMyLTJhZGY2MGExMGU0MgAuAAADSG3wPE27kUeySjmT5eRT8QEAfJKVL07sbkmIfHqjbDnRgQAAAgEMAAAA
123
+ timeZone | Central Europe Standard Time
124
+ delegateMeetingMessageDeliveryOptions | sendToDelegateOnly
125
+ dateFormat | dd.MM.yyyy
126
+ timeFormat | H:mm
127
+ userPurpose | user
128
+ ```
129
+
130
+ </TabItem>
131
+ </Tabs>
@@ -15,8 +15,11 @@ m365 spo page get [options]
15
15
  ## Options
16
16
 
17
17
  ```md definition-list
18
- `-n, --name <name>`
19
- : Name of the page to retrieve.
18
+ `-n, --name [name]`
19
+ : Name of the page to retrieve. Specify either `name` or `default`, but not both.
20
+
21
+ `--default`
22
+ : Get the homepage of a specific web. Specify either `name` or `default`, but not both.
20
23
 
21
24
  `-u, --webUrl <webUrl>`
22
25
  : URL of the site where the page to retrieve is located.
@@ -39,6 +42,12 @@ Get information about the modern page.
39
42
  m365 spo page get --webUrl https://contoso.sharepoint.com/sites/team-a --name home.aspx
40
43
  ```
41
44
 
45
+ Get information about the home page.
46
+
47
+ ```sh
48
+ m365 spo page get --webUrl https://contoso.sharepoint.com/sites/team-a --default
49
+ ```
50
+
42
51
  Get all the metadata from the modern page, without the section and control count information.
43
52
 
44
53
  ```sh
@@ -0,0 +1,67 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
4
+
5
+ # tenant report settings get
6
+
7
+ Get the tenant-level settings for Microsoft 365 reports
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 tenant report settings get [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ <Global />
18
+
19
+ ## Examples
20
+
21
+ Get the tenant-level settings for Microsoft 365 reports.
22
+
23
+ ```sh
24
+ m365 tenant report settings get
25
+ ```
26
+
27
+ ## Response
28
+
29
+ <Tabs>
30
+ <TabItem value="JSON">
31
+
32
+ ```json
33
+ {
34
+ "displayConcealedNames": true
35
+ }
36
+ ```
37
+
38
+ </TabItem>
39
+ <TabItem value="Text">
40
+
41
+ ```text
42
+ displayConcealedNames: true
43
+ ```
44
+
45
+ </TabItem>
46
+ <TabItem value="CSV">
47
+
48
+ ```csv
49
+ displayConcealedNames
50
+ 1
51
+ ```
52
+
53
+ </TabItem>
54
+ <TabItem value="Markdown">
55
+
56
+ ```md
57
+ # tenant report settings get
58
+
59
+ Date: 1/28/2025
60
+
61
+ Property | Value
62
+ ---------|-------
63
+ displayConcealedNames | true
64
+ ```
65
+
66
+ </TabItem>
67
+ </Tabs>
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@pnp/cli-microsoft365",
3
- "version": "10.3.0",
3
+ "version": "10.4.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@pnp/cli-microsoft365",
9
- "version": "10.3.0",
9
+ "version": "10.4.0",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@azure/msal-common": "^14.16.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnp/cli-microsoft365",
3
- "version": "10.3.0",
3
+ "version": "10.4.0-beta.17b3a55",
4
4
  "description": "Manage Microsoft 365 and SharePoint Framework projects on any platform",
5
5
  "license": "MIT",
6
6
  "main": "./dist/api.js",
@@ -312,4 +312,4 @@
312
312
  "sinon": "^19.0.2",
313
313
  "source-map-support": "^0.5.21"
314
314
  }
315
- }
315
+ }