@pnp/cli-microsoft365 12.0.0-beta.235caf5 → 12.0.0-beta.445fe0a

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 (117) hide show
  1. package/allCommands.json +1 -1
  2. package/allCommandsFull.json +1 -1
  3. package/dist/Command.js +11 -8
  4. package/dist/cli/cli.js +31 -18
  5. package/dist/config.js +1 -0
  6. package/dist/m365/entra/commands/agent/agent-blueprintprincipal-list.js +56 -0
  7. package/dist/m365/entra/commands.js +1 -0
  8. package/dist/m365/spe/commands/container/container-activate.js +8 -16
  9. package/dist/m365/spe/commands/container/container-list.js +21 -42
  10. package/dist/m365/spe/commands/containertype/containertype-list.js +5 -0
  11. package/dist/m365/spfx/commands/SpfxCompatibilityMatrix.js +15 -0
  12. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.24.1.js +19 -0
  13. package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
  14. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN027004_OVERRIDES_serialize_javascript.js +34 -0
  15. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.24.1.js +57 -0
  16. package/dist/m365/spfx/commands/project/project-upgrade.js +2 -1
  17. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-add.js +38 -71
  18. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-get.js +25 -59
  19. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-list.js +11 -34
  20. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-remove.js +25 -54
  21. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-set.js +52 -83
  22. package/dist/m365/spo/commands/apppage/apppage-add.js +21 -39
  23. package/dist/m365/spo/commands/apppage/apppage-set.js +20 -30
  24. package/dist/m365/spo/commands/eventreceiver/eventreceiver-get.js +39 -65
  25. package/dist/m365/spo/commands/eventreceiver/eventreceiver-list.js +28 -56
  26. package/dist/m365/spo/commands/eventreceiver/eventreceiver-remove.js +40 -68
  27. package/dist/m365/spo/commands/externaluser/externaluser-list.js +24 -66
  28. package/dist/m365/spo/commands/group/group-add.js +19 -60
  29. package/dist/m365/spo/commands/group/group-get.js +32 -45
  30. package/dist/m365/spo/commands/group/group-list.js +13 -27
  31. package/dist/m365/spo/commands/group/group-member-add.js +52 -84
  32. package/dist/m365/spo/commands/group/group-member-list.js +24 -38
  33. package/dist/m365/spo/commands/group/group-member-remove.js +49 -68
  34. package/dist/m365/spo/commands/group/group-remove.js +25 -45
  35. package/dist/m365/spo/commands/group/group-set.js +36 -79
  36. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-add.js +15 -49
  37. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-list.js +5 -0
  38. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-remove.js +9 -17
  39. package/dist/m365/spo/commands/orgnewssite/orgnewssite-list.js +5 -0
  40. package/dist/m365/spo/commands/orgnewssite/orgnewssite-remove.js +11 -27
  41. package/dist/m365/spo/commands/orgnewssite/orgnewssite-set.js +10 -18
  42. package/dist/m365/spo/commands/propertybag/propertybag-get.js +14 -29
  43. package/dist/m365/spo/commands/propertybag/propertybag-list.js +13 -27
  44. package/dist/m365/spo/commands/propertybag/propertybag-remove.js +15 -32
  45. package/dist/m365/spo/commands/propertybag/propertybag-set.js +15 -31
  46. package/dist/m365/spo/commands/roledefinition/roledefinition-add.js +45 -44
  47. package/dist/m365/spo/commands/roledefinition/roledefinition-get.js +14 -25
  48. package/dist/m365/spo/commands/roledefinition/roledefinition-list.js +12 -18
  49. package/dist/m365/spo/commands/roledefinition/roledefinition-remove.js +15 -35
  50. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-grant-add.js +9 -17
  51. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-grant-list.js +5 -0
  52. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-grant-revoke.js +9 -17
  53. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-permissionrequest-approve.js +29 -39
  54. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-permissionrequest-deny.js +10 -23
  55. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-permissionrequest-list.js +5 -0
  56. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-set.js +19 -28
  57. package/dist/m365/spo/commands/sitedesign/sitedesign-add.js +24 -59
  58. package/dist/m365/spo/commands/sitedesign/sitedesign-apply.js +10 -34
  59. package/dist/m365/spo/commands/sitedesign/sitedesign-get.js +19 -36
  60. package/dist/m365/spo/commands/sitedesign/sitedesign-list.js +8 -0
  61. package/dist/m365/spo/commands/sitedesign/sitedesign-remove.js +9 -32
  62. package/dist/m365/spo/commands/sitedesign/sitedesign-rights-grant.js +10 -31
  63. package/dist/m365/spo/commands/sitedesign/sitedesign-rights-list.js +8 -23
  64. package/dist/m365/spo/commands/sitedesign/sitedesign-rights-revoke.js +10 -34
  65. package/dist/m365/spo/commands/sitedesign/sitedesign-run-list.js +9 -38
  66. package/dist/m365/spo/commands/sitedesign/sitedesign-run-status-get.js +9 -29
  67. package/dist/m365/spo/commands/sitedesign/sitedesign-set.js +27 -80
  68. package/dist/m365/spo/commands/sitedesign/sitedesign-task-get.js +8 -23
  69. package/dist/m365/spo/commands/sitedesign/sitedesign-task-list.js +8 -18
  70. package/dist/m365/spo/commands/sitedesign/sitedesign-task-remove.js +9 -32
  71. package/dist/m365/spo/commands/tenant/tenant-appcatalog-add.js +15 -46
  72. package/dist/m365/spo/commands/tenant/tenant-appcatalogurl-get.js +5 -0
  73. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-add.js +12 -56
  74. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-get.js +25 -49
  75. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-list.js +5 -1
  76. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-remove.js +25 -49
  77. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-set.js +47 -79
  78. package/dist/m365/spo/commands/tenant/tenant-commandset-add.js +15 -53
  79. package/dist/m365/spo/commands/tenant/tenant-commandset-get.js +25 -50
  80. package/dist/m365/spo/commands/tenant/tenant-commandset-list.js +5 -1
  81. package/dist/m365/spo/commands/tenant/tenant-commandset-remove.js +25 -49
  82. package/dist/m365/spo/commands/tenant/tenant-commandset-set.js +41 -65
  83. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-list.js +5 -0
  84. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-remove.js +10 -30
  85. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-restore.js +8 -21
  86. package/dist/m365/spo/commands/tenant/tenant-settings-list.js +5 -0
  87. package/dist/m365/spo/commands/tenant/tenant-settings-set.js +104 -386
  88. package/dist/m365/spo/commands/term/term-add.js +95 -110
  89. package/dist/m365/spo/commands/term/term-get.js +63 -75
  90. package/dist/m365/spo/commands/term/term-group-add.js +11 -41
  91. package/dist/m365/spo/commands/term/term-group-get.js +16 -47
  92. package/dist/m365/spo/commands/term/term-group-list.js +9 -34
  93. package/dist/m365/spo/commands/term/term-list.js +42 -57
  94. package/dist/m365/spo/commands/term/term-set-add.js +50 -71
  95. package/dist/m365/spo/commands/term/term-set-get.js +41 -58
  96. package/dist/m365/spo/commands/term/term-set-list.js +16 -47
  97. package/dist/m365/spo/commands/theme/theme-apply.js +27 -43
  98. package/dist/m365/spo/commands/theme/theme-get.js +8 -15
  99. package/dist/m365/spo/commands/theme/theme-list.js +5 -0
  100. package/dist/m365/spo/commands/theme/theme-remove.js +9 -24
  101. package/dist/m365/spo/commands/theme/theme-set.js +12 -34
  102. package/dist/m365/tenant/commands/id/id-get.js +8 -22
  103. package/dist/m365/tenant/commands/info/info-get.js +23 -36
  104. package/dist/m365/tenant/commands/people/people-profilecardproperty-add.js +67 -55
  105. package/dist/m365/tenant/commands/people/people-profilecardproperty-get.js +11 -24
  106. package/dist/m365/tenant/commands/people/people-profilecardproperty-list.js +5 -0
  107. package/dist/m365/tenant/commands/people/people-profilecardproperty-remove.js +12 -33
  108. package/dist/m365/tenant/commands/people/people-profilecardproperty-set.js +31 -51
  109. package/dist/m365/tenant/commands/people/people-pronouns-get.js +5 -0
  110. package/dist/m365/tenant/commands/people/profileCardProperties.js +10 -7
  111. package/dist/m365/tenant/commands/security/security-alerts-list.js +8 -20
  112. package/dist/utils/validation.js +12 -0
  113. package/dist/utils/zod.js +1 -0
  114. package/docs/docs/cmd/entra/agent/agent-blueprintprincipal-list.mdx +156 -0
  115. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  116. package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-set.mdx +1 -1
  117. package/package.json +1 -1
@@ -1,14 +1,19 @@
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 _TenantPeopleProfileCardPropertySetCommand_instances, _TenantPeopleProfileCardPropertySetCommand_initTelemetry, _TenantPeopleProfileCardPropertySetCommand_initOptions, _TenantPeopleProfileCardPropertySetCommand_initValidators, _TenantPeopleProfileCardPropertySetCommand_initTypes;
1
+ import { z } from 'zod';
2
+ import { globalOptionsZod } from '../../../../Command.js';
7
3
  import GraphCommand from '../../../base/GraphCommand.js';
8
4
  import request from '../../../../request.js';
9
- import { profileCardPropertyNames as allProfileCardPropertyNames } from './profileCardProperties.js';
5
+ import { customAttributePropertyNames } from './profileCardProperties.js';
10
6
  import commands from '../../commands.js';
11
7
  import { optionsUtils } from '../../../../utils/optionsUtils.js';
8
+ import { zod } from '../../../../utils/zod.js';
9
+ export const options = z.looseObject({
10
+ ...globalOptionsZod.shape,
11
+ name: z.string()
12
+ .transform(value => customAttributePropertyNames.find(p => p.toLowerCase() === value.toLowerCase()) ?? value)
13
+ .pipe(z.enum(customAttributePropertyNames))
14
+ .alias('n'),
15
+ displayName: z.string().alias('d')
16
+ });
12
17
  class TenantPeopleProfileCardPropertySetCommand extends GraphCommand {
13
18
  get name() {
14
19
  return commands.PEOPLE_PROFILECARDPROPERTY_SET;
@@ -16,25 +21,33 @@ class TenantPeopleProfileCardPropertySetCommand extends GraphCommand {
16
21
  get description() {
17
22
  return 'Updates a custom attribute to the profile card property';
18
23
  }
19
- constructor() {
20
- super();
21
- _TenantPeopleProfileCardPropertySetCommand_instances.add(this);
22
- this.profileCardPropertyNames = allProfileCardPropertyNames.filter(p => p.toLowerCase().startsWith('customattribute'));
23
- __classPrivateFieldGet(this, _TenantPeopleProfileCardPropertySetCommand_instances, "m", _TenantPeopleProfileCardPropertySetCommand_initTelemetry).call(this);
24
- __classPrivateFieldGet(this, _TenantPeopleProfileCardPropertySetCommand_instances, "m", _TenantPeopleProfileCardPropertySetCommand_initOptions).call(this);
25
- __classPrivateFieldGet(this, _TenantPeopleProfileCardPropertySetCommand_instances, "m", _TenantPeopleProfileCardPropertySetCommand_initValidators).call(this);
26
- __classPrivateFieldGet(this, _TenantPeopleProfileCardPropertySetCommand_instances, "m", _TenantPeopleProfileCardPropertySetCommand_initTypes).call(this);
27
- }
28
24
  allowUnknownOptions() {
29
25
  return true;
30
26
  }
27
+ get schema() {
28
+ return options;
29
+ }
30
+ getRefinedSchema(schema) {
31
+ return schema
32
+ .superRefine((opts, ctx) => {
33
+ const knownKeys = new Set([...Object.keys(globalOptionsZod.shape), 'name', 'displayName']);
34
+ const unknownKeys = Object.keys(opts).filter(k => !knownKeys.has(k));
35
+ const wronglyFormattedOptions = unknownKeys.filter(key => !key.toLowerCase().startsWith('displayname-'));
36
+ if (wronglyFormattedOptions.length > 0) {
37
+ ctx.addIssue({
38
+ code: 'custom',
39
+ message: `Wrong option format detected for the following option(s): ${wronglyFormattedOptions.join(', ')}'. When adding localizations for customAttributes, use the format displayName-<languageTag>.`
40
+ });
41
+ }
42
+ });
43
+ }
31
44
  async commandAction(logger, args) {
32
45
  try {
33
46
  if (this.verbose) {
34
47
  await logger.logToStderr(`Updating profile card property '${args.options.name}'...`);
35
48
  }
36
49
  // Get the right casing for the profile card property name
37
- const profileCardProperty = this.profileCardPropertyNames.find(p => p.toLowerCase() === args.options.name.toLowerCase());
50
+ const profileCardProperty = customAttributePropertyNames.find(p => p.toLowerCase() === args.options.name.toLowerCase());
38
51
  const requestOptions = {
39
52
  url: `${this.resource}/v1.0/admin/people/profileCardProperties/${profileCardProperty}`,
40
53
  headers: {
@@ -74,7 +87,7 @@ class TenantPeopleProfileCardPropertySetCommand extends GraphCommand {
74
87
  * @example Transform "--displayName-en-US 'Cost center'" to { languageTag: 'en-US', displayName: 'Cost center' }
75
88
  */
76
89
  getLocalizations(options) {
77
- const unknownOptions = optionsUtils.getUnknownOptions(options, this.options);
90
+ const unknownOptions = optionsUtils.getUnknownOptions(options, zod.schemaToOptions(this.schema));
78
91
  const result = Object.keys(unknownOptions).map(o => ({
79
92
  languageTag: o.substring(o.indexOf('-') + 1),
80
93
  displayName: unknownOptions[o]
@@ -82,38 +95,5 @@ class TenantPeopleProfileCardPropertySetCommand extends GraphCommand {
82
95
  return result;
83
96
  }
84
97
  }
85
- _TenantPeopleProfileCardPropertySetCommand_instances = new WeakSet(), _TenantPeopleProfileCardPropertySetCommand_initTelemetry = function _TenantPeopleProfileCardPropertySetCommand_initTelemetry() {
86
- this.telemetry.push((args) => {
87
- // Add unknown options to telemetry
88
- const unknownOptions = Object.keys(optionsUtils.getUnknownOptions(args.options, this.options));
89
- const unknownOptionsObj = unknownOptions.reduce((obj, key) => ({ ...obj, [key]: true }), {});
90
- Object.assign(this.telemetryProperties, {
91
- displayName: typeof args.options.displayName !== 'undefined',
92
- ...unknownOptionsObj
93
- });
94
- });
95
- }, _TenantPeopleProfileCardPropertySetCommand_initOptions = function _TenantPeopleProfileCardPropertySetCommand_initOptions() {
96
- this.options.unshift({
97
- option: '-n, --name <name>',
98
- autocomplete: this.profileCardPropertyNames
99
- }, {
100
- option: '-d, --displayName <displayName>'
101
- });
102
- }, _TenantPeopleProfileCardPropertySetCommand_initValidators = function _TenantPeopleProfileCardPropertySetCommand_initValidators() {
103
- this.validators.push(async (args) => {
104
- if (!this.profileCardPropertyNames.some(p => p.toLowerCase() === args.options.name.toLowerCase())) {
105
- return `'${args.options.name}' is not a valid value for option name. Allowed values are: ${this.profileCardPropertyNames.join(', ')}.`;
106
- }
107
- // Unknown options are allowed only if they start with 'displayName-'
108
- const unknownOptionKeys = Object.keys(optionsUtils.getUnknownOptions(args.options, this.options));
109
- const invalidOptionKey = unknownOptionKeys.find(o => !o.startsWith('displayName-'));
110
- if (invalidOptionKey) {
111
- return `Invalid option: '${invalidOptionKey}'`;
112
- }
113
- return true;
114
- });
115
- }, _TenantPeopleProfileCardPropertySetCommand_initTypes = function _TenantPeopleProfileCardPropertySetCommand_initTypes() {
116
- this.types.string.push('name', 'displayName');
117
- };
118
98
  export default new TenantPeopleProfileCardPropertySetCommand();
119
99
  //# sourceMappingURL=people-profilecardproperty-set.js.map
@@ -1,6 +1,8 @@
1
+ import { globalOptionsZod } from '../../../../Command.js';
1
2
  import request from '../../../../request.js';
2
3
  import GraphCommand from '../../../base/GraphCommand.js';
3
4
  import commands from '../../commands.js';
5
+ export const options = globalOptionsZod.strict();
4
6
  class TenantPeoplePronounsGetCommand extends GraphCommand {
5
7
  get name() {
6
8
  return commands.PEOPLE_PRONOUNS_GET;
@@ -8,6 +10,9 @@ class TenantPeoplePronounsGetCommand extends GraphCommand {
8
10
  get description() {
9
11
  return 'Retrieves information about pronouns settings for an organization';
10
12
  }
13
+ get schema() {
14
+ return options;
15
+ }
11
16
  async commandAction(logger) {
12
17
  try {
13
18
  if (this.verbose) {
@@ -1,10 +1,4 @@
1
- export const profileCardPropertyNames = [
2
- 'UserPrincipalName',
3
- 'Fax',
4
- 'StreetAddress',
5
- 'PostalCode',
6
- 'StateOrProvince',
7
- 'Alias',
1
+ export const customAttributePropertyNames = [
8
2
  'customAttribute1',
9
3
  'customAttribute2',
10
4
  'customAttribute3',
@@ -21,4 +15,13 @@ export const profileCardPropertyNames = [
21
15
  'customAttribute14',
22
16
  'customAttribute15'
23
17
  ];
18
+ export const profileCardPropertyNames = [
19
+ 'UserPrincipalName',
20
+ 'Fax',
21
+ 'StreetAddress',
22
+ 'PostalCode',
23
+ 'StateOrProvince',
24
+ 'Alias',
25
+ ...customAttributePropertyNames
26
+ ];
24
27
  //# sourceMappingURL=profileCardProperties.js.map
@@ -1,13 +1,13 @@
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 _TenantSecurityAlertsListCommand_instances, _TenantSecurityAlertsListCommand_initTelemetry, _TenantSecurityAlertsListCommand_initOptions;
1
+ import { z } from 'zod';
2
+ import { globalOptionsZod } from '../../../../Command.js';
7
3
  import request from '../../../../request.js';
8
4
  import { formatting } from '../../../../utils/formatting.js';
9
5
  import GraphCommand from '../../../base/GraphCommand.js';
10
6
  import commands from '../../commands.js';
7
+ export const options = z.strictObject({
8
+ ...globalOptionsZod.shape,
9
+ vendor: z.string().optional()
10
+ });
11
11
  class TenantSecurityAlertsListCommand extends GraphCommand {
12
12
  get name() {
13
13
  return commands.SECURITY_ALERTS_LIST;
@@ -18,11 +18,8 @@ class TenantSecurityAlertsListCommand extends GraphCommand {
18
18
  defaultProperties() {
19
19
  return ['id', 'title', 'severity'];
20
20
  }
21
- constructor() {
22
- super();
23
- _TenantSecurityAlertsListCommand_instances.add(this);
24
- __classPrivateFieldGet(this, _TenantSecurityAlertsListCommand_instances, "m", _TenantSecurityAlertsListCommand_initTelemetry).call(this);
25
- __classPrivateFieldGet(this, _TenantSecurityAlertsListCommand_instances, "m", _TenantSecurityAlertsListCommand_initOptions).call(this);
21
+ get schema() {
22
+ return options;
26
23
  }
27
24
  async commandAction(logger, args) {
28
25
  try {
@@ -64,14 +61,5 @@ class TenantSecurityAlertsListCommand extends GraphCommand {
64
61
  return alertList;
65
62
  }
66
63
  }
67
- _TenantSecurityAlertsListCommand_instances = new WeakSet(), _TenantSecurityAlertsListCommand_initTelemetry = function _TenantSecurityAlertsListCommand_initTelemetry() {
68
- this.telemetry.push((args) => {
69
- Object.assign(this.telemetryProperties, {
70
- vendor: typeof args.options.vendor !== 'undefined'
71
- });
72
- });
73
- }, _TenantSecurityAlertsListCommand_initOptions = function _TenantSecurityAlertsListCommand_initOptions() {
74
- this.options.unshift({ option: '--vendor [vendor]' });
75
- };
76
64
  export default new TenantSecurityAlertsListCommand();
77
65
  //# sourceMappingURL=security-alerts-list.js.map
@@ -385,6 +385,18 @@ export const validation = {
385
385
  isValidPowerPagesUrl(url) {
386
386
  const powerPagesUrlPattern = /^https:\/\/[a-zA-Z0-9-]+\.powerappsportals\.com$/;
387
387
  return powerPagesUrlPattern.test(url);
388
+ },
389
+ isValidJsonOrEmpty(value) {
390
+ if (value === '') {
391
+ return true;
392
+ }
393
+ try {
394
+ JSON.parse(value);
395
+ return true;
396
+ }
397
+ catch {
398
+ return false;
399
+ }
388
400
  }
389
401
  };
390
402
  //# sourceMappingURL=validation.js.map
package/dist/utils/zod.js CHANGED
@@ -14,6 +14,7 @@ function parseObject(schema, options, _currentOption) {
14
14
  name: key,
15
15
  long: key,
16
16
  short: property['x-alias'],
17
+ autocomplete: property['x-autocomplete'],
17
18
  required: schema.required?.includes(key) && property.default === undefined || false,
18
19
  type: 'string'
19
20
  };
@@ -0,0 +1,156 @@
1
+ import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
4
+
5
+ # entra agent blueprintprincipal list
6
+
7
+ Retrieves a list of agent blueprint principals
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 entra agent blueprintprincipal list [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ ```md definition-list
18
+ `-p, --properties [properties]`
19
+ : Comma-separated list of properties to retrieve.
20
+ ```
21
+
22
+ <Global />
23
+
24
+ ## Remarks
25
+
26
+ Using the `--properties` option, you can specify a comma-separated list of agent blueprint principal properties to retrieve from Microsoft Graph. If you don't specify any properties, Microsoft Graph returns its default property set. The CLI's default properties (`id`, `appDisplayName`, and `appId`) are used only for text output.
27
+
28
+ :::important
29
+
30
+ A principal who creates a blueprint or blueprint principal is assigned as the owner. Owners can create agent identities and modify only the resources they own, even if they aren't assigned an Agent ID role.
31
+
32
+ For nonowners to call this API in delegated scenarios using work or school accounts, the admin must be assigned a supported [Microsoft Entra role](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference?toc=%2Fgraph%2Ftoc.json). This operation supports the following built-in roles, which provide only the least privilege necessary:
33
+
34
+ - Agent ID Administrator.
35
+ - Agent ID Developer - Create agent identity blueprints and blueprint principals.
36
+
37
+ :::
38
+
39
+ ## Permissions
40
+
41
+ <Tabs>
42
+ <TabItem value="Delegated">
43
+
44
+ | Resource | Permissions |
45
+ |-----------------|------------------------------------------|
46
+ | Microsoft Graph | AgentIdentityBlueprintPrincipal.Read.All |
47
+
48
+ </TabItem>
49
+ <TabItem value="Application">
50
+
51
+ | Resource | Permissions |
52
+ |-----------------|------------------------------------------|
53
+ | Microsoft Graph | AgentIdentityBlueprintPrincipal.Read.All |
54
+
55
+ </TabItem>
56
+ </Tabs>
57
+
58
+ ## Examples
59
+
60
+ Retrieve all agent blueprint principals
61
+
62
+ ```sh
63
+ m365 entra agent blueprintprincipal list
64
+ ```
65
+
66
+ Retrieve id and name of agent blueprint principals
67
+
68
+ ```sh
69
+ m365 entra agent blueprintprincipal list --properties 'id,appDisplayName'
70
+ ```
71
+
72
+ ## Response
73
+
74
+ <Tabs>
75
+ <TabItem value="JSON">
76
+
77
+ ```json
78
+ [
79
+ {
80
+ "accountEnabled": true,
81
+ "appDescription": null,
82
+ "appDisplayName": "OcnAgentBluePrint02",
83
+ "appId": "0e81af7f-b058-470a-84be-3a4f5a8014ca",
84
+ "appOwnerOrganizationId": "70cf0eca-e1e8-4d78-9d03-62ecf811dfc2",
85
+ "appRoleAssignmentRequired": false,
86
+ "createdByAppId": "14d82eec-204b-4c2f-b7e8-296a70dab67e",
87
+ "disabledByMicrosoftStatus": null,
88
+ "displayName": "OcnAgentBluePrint02",
89
+ "servicePrincipalNames": [
90
+ "0e81af7f-b058-470a-84be-3a4f5a8014ca"
91
+ ],
92
+ "servicePrincipalType": "Application",
93
+ "signInAudience": "AzureADMyOrg",
94
+ "tags": [],
95
+ "id": "59246ef4-b832-48eb-a5e0-87748132e12c",
96
+ "appRoles": [],
97
+ "info": {
98
+ "logoUrl": null,
99
+ "marketingUrl": null,
100
+ "privacyStatementUrl": null,
101
+ "supportUrl": null,
102
+ "termsOfServiceUrl": null
103
+ },
104
+ "oauth2PermissionScopes": [],
105
+ "verifiedPublisher": {
106
+ "displayName": null,
107
+ "verifiedPublisherId": null,
108
+ "addedDateTime": null
109
+ }
110
+ }
111
+ ]
112
+ ```
113
+
114
+ </TabItem>
115
+ <TabItem value="Text">
116
+
117
+ ```text
118
+ appDisplayName: OcnAgentBluePrint02
119
+ appId : 0e81af7f-b058-470a-84be-3a4f5a8014ca
120
+ id : 59246ef4-b832-48eb-a5e0-87748132e12c
121
+ ```
122
+
123
+ </TabItem>
124
+ <TabItem value="CSV">
125
+
126
+ ```csv
127
+ accountEnabled,appDescription,appDisplayName,appId,appOwnerOrganizationId,appRoleAssignmentRequired,createdByAppId,disabledByMicrosoftStatus,displayName,servicePrincipalType,signInAudience,id
128
+ 1,,OcnAgentBluePrint02,0e81af7f-b058-470a-84be-3a4f5a8014ca,70cf0eca-e1e8-4d78-9d03-62ecf811dfc2,0,14d82eec-204b-4c2f-b7e8-296a70dab67e,,OcnAgentBluePrint02,Application,AzureADMyOrg,59246ef4-b832-48eb-a5e0-87748132e12c
129
+ ```
130
+
131
+ </TabItem>
132
+ <TabItem value="Markdown">
133
+
134
+ ```md
135
+ # entra agent blueprintprincipal list --debug "false" --verbose "false"
136
+
137
+ Date: 6/5/2026
138
+
139
+ ## OcnAgentBluePrint02 (59246ef4-b832-48eb-a5e0-87748132e12c)
140
+
141
+ Property | Value
142
+ ---------|-------
143
+ accountEnabled | true
144
+ appDisplayName | OcnAgentBluePrint02
145
+ appId | 0e81af7f-b058-470a-84be-3a4f5a8014ca
146
+ appOwnerOrganizationId | 70cf0eca-e1e8-4d78-9d03-62ecf811dfc2
147
+ appRoleAssignmentRequired | false
148
+ createdByAppId | 14d82eec-204b-4c2f-b7e8-296a70dab67e
149
+ displayName | OcnAgentBluePrint02
150
+ servicePrincipalType | Application
151
+ signInAudience | AzureADMyOrg
152
+ id | 59246ef4-b832-48eb-a5e0-87748132e12c
153
+ ```
154
+
155
+ </TabItem>
156
+ </Tabs>
@@ -45,7 +45,7 @@ m365 spfx project upgrade [options]
45
45
 
46
46
  ## Remarks
47
47
 
48
- The `spfx project upgrade` command helps you upgrade your SharePoint Framework project to the specified version. If no version is specified, the command will upgrade to the latest version of the SharePoint Framework it supports (v1.24.0).
48
+ The `spfx project upgrade` command helps you upgrade your SharePoint Framework project to the specified version. If no version is specified, the command will upgrade to the latest version of the SharePoint Framework it supports (v1.24.1).
49
49
 
50
50
  This command doesn't change your project files. Instead, it gives you a report with all steps necessary to upgrade your project to the specified version of the SharePoint Framework. Changing project files is error-prone, especially when it comes to updating your solution's code. This is why at this moment, this command produces a report that you can use yourself to perform the necessary updates and verify that everything is working as expected.
51
51
 
@@ -28,7 +28,7 @@ m365 spo applicationcustomizer set [options]
28
28
  : The Client Side Component Id (GUID) of the Application Customizer to update. Specify either `title`, `id` or `clientSideComponentId`.
29
29
 
30
30
  `--newTitle [newTitle]`
31
- : The new title of the Application Customizer.
31
+ : The new title of the Application Customizer. Specify an empty string to clear.
32
32
 
33
33
  `--description [description]`
34
34
  : Description of the Application Customizer. Specify an empty string to clear.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnp/cli-microsoft365",
3
- "version": "12.0.0-beta.235caf5",
3
+ "version": "12.0.0-beta.445fe0a",
4
4
  "description": "Manage Microsoft 365 and SharePoint Framework projects on any platform",
5
5
  "license": "MIT",
6
6
  "main": "./dist/api.js",