@pnp/cli-microsoft365 6.0.0-beta.a008afc → 6.0.0-beta.a2ec37b

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 (161) hide show
  1. package/.eslintrc.js +4 -2
  2. package/dist/Command.js +16 -2
  3. package/dist/m365/aad/commands/app/app-add.js +36 -13
  4. package/dist/m365/aad/commands/app/app-list.js +38 -0
  5. package/dist/m365/aad/commands/user/user-guest-add.js +103 -0
  6. package/dist/m365/aad/commands.js +2 -0
  7. package/dist/m365/commands/status.js +6 -1
  8. package/dist/m365/outlook/commands/mail/mail-send.js +55 -31
  9. package/dist/m365/outlook/commands/message/message-get.js +97 -0
  10. package/dist/m365/outlook/commands.js +1 -0
  11. package/dist/m365/planner/commands/bucket/bucket-get.js +1 -1
  12. package/dist/m365/planner/commands/plan/plan-get.js +5 -20
  13. package/dist/m365/pp/commands/card/card-get.js +110 -0
  14. package/dist/m365/pp/commands/card/card-remove.js +130 -0
  15. package/dist/m365/pp/commands/gateway/gateway-get.js +70 -0
  16. package/dist/m365/pp/commands/solution/solution-get.js +117 -0
  17. package/dist/m365/pp/commands.js +4 -0
  18. package/dist/m365/spfx/commands/project/project-doctor.js +4 -1
  19. package/dist/m365/spfx/commands/project/project-externalize.js +4 -1
  20. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010001_YORC_version.js +2 -1
  21. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010002_YORC_isCreatingSolution.js +2 -1
  22. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010003_YORC_packageManager.js +2 -1
  23. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010004_YORC_componentType.js +2 -1
  24. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010005_YORC_environment.js +2 -1
  25. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010006_YORC_framework.js +3 -2
  26. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010007_YORC_isDomainIsolated.js +2 -1
  27. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010008_YORC_nodeVersion.js +2 -1
  28. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010009_YORC_sdkVersions_microsoft_graph_client.js +56 -0
  29. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010010_YORC_sdkVersions_teams_js.js +56 -0
  30. package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.16.0-beta.1.js → upgrade-1.16.0-beta.2.js} +44 -28
  31. package/dist/m365/spfx/commands/project/project-upgrade.js +1 -1
  32. package/dist/m365/spfx/commands/spfx-doctor.js +3 -3
  33. package/dist/m365/spo/commands/contenttype/contenttype-add.js +82 -43
  34. package/dist/m365/spo/commands/contenttype/contenttype-field-remove.js +53 -21
  35. package/dist/m365/spo/commands/contenttype/contenttype-get.js +35 -14
  36. package/dist/m365/spo/commands/field/field-add.js +26 -1
  37. package/dist/m365/spo/commands/field/field-set.js +23 -13
  38. package/dist/m365/spo/commands/folder/folder-list.js +35 -12
  39. package/dist/m365/spo/commands/folder/folder-roleinheritance-break.js +11 -1
  40. package/dist/m365/spo/commands/folder/folder-roleinheritance-reset.js +12 -1
  41. package/dist/m365/spo/commands/list/list-roleassignment-add.js +1 -1
  42. package/dist/m365/spo/commands/list/list-roleinheritance-break.js +14 -6
  43. package/dist/m365/spo/commands/list/list-roleinheritance-reset.js +14 -6
  44. package/dist/m365/spo/commands/list/list-webhook-add.js +19 -11
  45. package/dist/m365/spo/commands/list/list-webhook-get.js +17 -10
  46. package/dist/m365/spo/commands/list/list-webhook-list.js +17 -42
  47. package/dist/m365/spo/commands/list/list-webhook-remove.js +19 -11
  48. package/dist/m365/spo/commands/list/list-webhook-set.js +27 -20
  49. package/dist/m365/spo/commands/listitem/listitem-add.js +24 -14
  50. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +18 -8
  51. package/dist/m365/spo/commands/listitem/listitem-get.js +18 -8
  52. package/dist/m365/spo/commands/listitem/listitem-isrecord.js +20 -10
  53. package/dist/m365/spo/commands/listitem/listitem-list.js +21 -11
  54. package/dist/m365/spo/commands/listitem/listitem-record-declare.js +19 -12
  55. package/dist/m365/spo/commands/listitem/listitem-record-undeclare.js +24 -21
  56. package/dist/m365/spo/commands/listitem/listitem-remove.js +19 -11
  57. package/dist/m365/spo/commands/listitem/listitem-roleassignment-add.js +239 -0
  58. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +13 -5
  59. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +13 -5
  60. package/dist/m365/spo/commands/listitem/listitem-set.js +52 -44
  61. package/dist/m365/spo/commands/roledefinition/roledefinition-list.js +15 -2
  62. package/dist/m365/spo/commands/site/site-add.js +4 -11
  63. package/dist/m365/spo/commands/{hubsite/hubsite-connect.js → site/site-hubsite-connect.js} +10 -10
  64. package/dist/m365/spo/commands/{hubsite/hubsite-disconnect.js → site/site-hubsite-disconnect.js} +13 -13
  65. package/dist/m365/spo/commands/{hubsite/hubsite-theme-sync.js → site/site-hubsite-theme-sync.js} +11 -11
  66. package/dist/m365/spo/commands/web/web-roleinheritance-break.js +100 -0
  67. package/dist/m365/spo/commands.js +5 -3
  68. package/dist/m365/teams/commands/team/team-set.js +0 -7
  69. package/dist/m365/todo/commands/list/list-get.js +89 -0
  70. package/dist/m365/todo/commands/task/task-add.js +55 -3
  71. package/dist/m365/todo/commands/task/task-get.js +108 -0
  72. package/dist/m365/todo/commands/task/task-set.js +53 -1
  73. package/dist/m365/todo/commands.js +2 -0
  74. package/docs/docs/_clisettings.md +18 -0
  75. package/docs/docs/cmd/aad/app/app-list.md +149 -0
  76. package/docs/docs/cmd/aad/user/user-guest-add.md +107 -0
  77. package/docs/docs/cmd/adaptivecard/adaptivecard-send.md +3 -0
  78. package/docs/docs/cmd/graph/schemaextension/schemaextension-add.md +4 -11
  79. package/docs/docs/cmd/graph/schemaextension/schemaextension-set.md +4 -10
  80. package/docs/docs/cmd/outlook/mail/mail-send.md +13 -0
  81. package/docs/docs/cmd/outlook/message/message-get.md +48 -0
  82. package/docs/docs/cmd/planner/bucket/bucket-add.md +29 -0
  83. package/docs/docs/cmd/planner/bucket/bucket-get.md +29 -0
  84. package/docs/docs/cmd/planner/bucket/bucket-list.md +30 -0
  85. package/docs/docs/cmd/planner/bucket/bucket-remove.md +4 -0
  86. package/docs/docs/cmd/planner/bucket/bucket-set.md +4 -0
  87. package/docs/docs/cmd/planner/plan/plan-add.md +123 -0
  88. package/docs/docs/cmd/planner/plan/plan-get.md +75 -6
  89. package/docs/docs/cmd/planner/plan/plan-list.md +45 -0
  90. package/docs/docs/cmd/planner/plan/plan-remove.md +4 -0
  91. package/docs/docs/cmd/planner/task/task-get.md +0 -3
  92. package/docs/docs/cmd/pp/card/card-get.md +51 -0
  93. package/docs/docs/cmd/pp/card/card-remove.md +82 -0
  94. package/docs/docs/cmd/pp/gateway/gateway-get.md +24 -0
  95. package/docs/docs/cmd/pp/solution/solution-get.md +51 -0
  96. package/docs/docs/cmd/spfx/project/project-rename.md +1 -14
  97. package/docs/docs/cmd/spfx/project/project-upgrade.md +1 -1
  98. package/docs/docs/cmd/spo/contenttype/contenttype-add.md +20 -2
  99. package/docs/docs/cmd/spo/contenttype/contenttype-field-remove.md +22 -4
  100. package/docs/docs/cmd/spo/contenttype/contenttype-get.md +21 -3
  101. package/docs/docs/cmd/spo/customaction/customaction-add.md +3 -0
  102. package/docs/docs/cmd/spo/customaction/customaction-set.md +3 -2
  103. package/docs/docs/cmd/spo/eventreceiver/eventreceiver-get.md +2 -2
  104. package/docs/docs/cmd/spo/eventreceiver/eventreceiver-remove.md +2 -2
  105. package/docs/docs/cmd/spo/field/field-add.md +20 -2
  106. package/docs/docs/cmd/spo/field/field-set.md +15 -3
  107. package/docs/docs/cmd/spo/folder/folder-list.md +45 -0
  108. package/docs/docs/cmd/spo/folder/folder-roleinheritance-break.md +6 -0
  109. package/docs/docs/cmd/spo/folder/folder-roleinheritance-reset.md +6 -0
  110. package/docs/docs/cmd/spo/hubsite/hubsite-register.md +2 -2
  111. package/docs/docs/cmd/spo/hubsite/hubsite-unregister.md +2 -2
  112. package/docs/docs/cmd/spo/list/list-roleinheritance-break.md +11 -8
  113. package/docs/docs/cmd/spo/list/list-roleinheritance-reset.md +16 -7
  114. package/docs/docs/cmd/spo/list/list-view-set.md +14 -3
  115. package/docs/docs/cmd/spo/list/list-webhook-add.md +15 -16
  116. package/docs/docs/cmd/spo/list/list-webhook-get.md +16 -7
  117. package/docs/docs/cmd/spo/list/list-webhook-list.md +13 -10
  118. package/docs/docs/cmd/spo/list/list-webhook-remove.md +12 -10
  119. package/docs/docs/cmd/spo/list/list-webhook-set.md +21 -12
  120. package/docs/docs/cmd/spo/listitem/listitem-add.md +11 -2
  121. package/docs/docs/cmd/spo/listitem/listitem-attachment-list.md +11 -2
  122. package/docs/docs/cmd/spo/listitem/listitem-get.md +11 -2
  123. package/docs/docs/cmd/spo/listitem/listitem-isrecord.md +12 -2
  124. package/docs/docs/cmd/spo/listitem/listitem-list.md +10 -1
  125. package/docs/docs/cmd/spo/listitem/listitem-record-declare.md +7 -4
  126. package/docs/docs/cmd/spo/listitem/listitem-record-undeclare.md +11 -2
  127. package/docs/docs/cmd/spo/listitem/listitem-remove.md +11 -2
  128. package/docs/docs/cmd/spo/listitem/listitem-roleassignment-add.md +81 -0
  129. package/docs/docs/cmd/spo/listitem/listitem-roleinheritance-break.md +7 -4
  130. package/docs/docs/cmd/spo/listitem/listitem-roleinheritance-reset.md +8 -5
  131. package/docs/docs/cmd/spo/listitem/listitem-set.md +7 -4
  132. package/docs/docs/cmd/spo/page/page-clientsidewebpart-add.md +5 -10
  133. package/docs/docs/cmd/spo/page/page-control-set.md +2 -1
  134. package/docs/docs/cmd/spo/site/site-add.md +0 -3
  135. package/docs/docs/cmd/spo/{hubsite/hubsite-connect.md → site/site-hubsite-connect.md} +4 -4
  136. package/docs/docs/cmd/spo/{hubsite/hubsite-disconnect.md → site/site-hubsite-disconnect.md} +7 -7
  137. package/docs/docs/cmd/spo/{hubsite/hubsite-theme-sync.md → site/site-hubsite-theme-sync.md} +5 -5
  138. package/docs/docs/cmd/spo/term/term-add.md +5 -0
  139. package/docs/docs/cmd/spo/term/term-set-add.md +6 -1
  140. package/docs/docs/cmd/spo/web/web-roleinheritance-break.md +44 -0
  141. package/docs/docs/cmd/teams/team/team-clone.md +0 -3
  142. package/docs/docs/cmd/teams/team/team-set.md +0 -3
  143. package/docs/docs/cmd/tenant/id/id-get.md +20 -0
  144. package/docs/docs/cmd/tenant/report/report-activeusercounts.md +35 -0
  145. package/docs/docs/cmd/tenant/report/report-activeuserdetail.md +49 -0
  146. package/docs/docs/cmd/tenant/report/report-office365activationcounts.md +32 -0
  147. package/docs/docs/cmd/tenant/report/report-office365activationsusercounts.md +30 -0
  148. package/docs/docs/cmd/tenant/report/report-office365activationsuserdetail.md +36 -0
  149. package/docs/docs/cmd/tenant/report/report-servicesusercounts.md +41 -0
  150. package/docs/docs/cmd/tenant/security/security-alerts-list.md +105 -0
  151. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-health-get.md +87 -0
  152. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-health-list.md +91 -0
  153. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-get.md +62 -0
  154. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-list.md +51 -0
  155. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-get.md +64 -0
  156. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-list.md +52 -0
  157. package/docs/docs/cmd/todo/list/list-get.md +61 -0
  158. package/docs/docs/cmd/todo/task/task-add.md +32 -5
  159. package/docs/docs/cmd/todo/task/task-get.md +75 -0
  160. package/docs/docs/cmd/todo/task/task-set.md +29 -2
  161. package/package.json +13 -4
@@ -86,16 +86,13 @@ exports.default = {
86
86
  HOMESITE_GET: `${prefix} homesite get`,
87
87
  HOMESITE_REMOVE: `${prefix} homesite remove`,
88
88
  HOMESITE_SET: `${prefix} homesite set`,
89
- HUBSITE_CONNECT: `${prefix} hubsite connect`,
90
89
  HUBSITE_DATA_GET: `${prefix} hubsite data get`,
91
- HUBSITE_DISCONNECT: `${prefix} hubsite disconnect`,
92
90
  HUBSITE_GET: `${prefix} hubsite get`,
93
91
  HUBSITE_LIST: `${prefix} hubsite list`,
94
92
  HUBSITE_REGISTER: `${prefix} hubsite register`,
95
93
  HUBSITE_RIGHTS_GRANT: `${prefix} hubsite rights grant`,
96
94
  HUBSITE_RIGHTS_REVOKE: `${prefix} hubsite rights revoke`,
97
95
  HUBSITE_SET: `${prefix} hubsite set`,
98
- HUBSITE_THEME_SYNC: `${prefix} hubsite theme sync`,
99
96
  HUBSITE_UNREGISTER: `${prefix} hubsite unregister`,
100
97
  KNOWLEDGEHUB_GET: `${prefix} knowledgehub get`,
101
98
  KNOWLEDGEHUB_REMOVE: `${prefix} knowledgehub remove`,
@@ -137,6 +134,7 @@ exports.default = {
137
134
  LISTITEM_RECORD_DECLARE: `${prefix} listitem record declare`,
138
135
  LISTITEM_RECORD_UNDECLARE: `${prefix} listitem record undeclare`,
139
136
  LISTITEM_REMOVE: `${prefix} listitem remove`,
137
+ LISTITEM_ROLEASSIGNMENT_ADD: `${prefix} listitem roleassignment add`,
140
138
  LISTITEM_ROLEASSIGNMENT_REMOVE: `${prefix} listitem roleassignment remove`,
141
139
  LISTITEM_ROLEINHERITANCE_BREAK: `${prefix} listitem roleinheritance break`,
142
140
  LISTITEM_ROLEINHERITANCE_RESET: `${prefix} listitem roleinheritance reset`,
@@ -207,6 +205,9 @@ exports.default = {
207
205
  SITE_ENSURE: `${prefix} site ensure`,
208
206
  SITE_GET: `${prefix} site get`,
209
207
  SITE_GROUPIFY: `${prefix} site groupify`,
208
+ SITE_HUBSITE_CONNECT: `${prefix} site hubsite connect`,
209
+ SITE_HUBSITE_DISCONNECT: `${prefix} site hubsite disconnect`,
210
+ SITE_HUBSITE_THEME_SYNC: `${prefix} site hubsite theme sync`,
210
211
  SITE_LIST: `${prefix} site list`,
211
212
  SITE_INPLACERECORDSMANAGEMENT_SET: `${prefix} site inplacerecordsmanagement set`,
212
213
  SITE_RECYCLEBINITEM_LIST: `${prefix} site recyclebinitem list`,
@@ -280,6 +281,7 @@ exports.default = {
280
281
  WEB_REMOVE: `${prefix} web remove`,
281
282
  WEB_ROLEASSIGNMENT_REMOVE: `${prefix} web roleassignment remove`,
282
283
  WEB_ROLEASSIGNMENT_ADD: `${prefix} web roleassignment add`,
284
+ WEB_ROLEINHERITANCE_BREAK: `${prefix} web roleinheritance break`,
283
285
  WEB_ROLEINHERITANCE_RESET: `${prefix} web roleinheritance reset`,
284
286
  WEB_SET: `${prefix} web set`
285
287
  };
@@ -54,10 +54,6 @@ class TeamsTeamSetCommand extends GraphCommand_1.default {
54
54
  }
55
55
  commandAction(logger, args) {
56
56
  return __awaiter(this, void 0, void 0, function* () {
57
- if (args.options.displayName) {
58
- args.options.name = args.options.displayName;
59
- this.warn(logger, `Option 'displayName' is deprecated. Please use 'name' instead.`);
60
- }
61
57
  const data = this.mapRequestBody(args.options);
62
58
  const requestOptions = {
63
59
  url: `${this.resource}/v1.0/groups/${encodeURIComponent(args.options.id)}`,
@@ -87,8 +83,6 @@ _TeamsTeamSetCommand_instances = new WeakSet(), _TeamsTeamSetCommand_initTelemet
87
83
  option: '-i, --id [id]'
88
84
  }, {
89
85
  option: '-n, --name [name]'
90
- }, {
91
- option: '--displayName [displayName]'
92
86
  }, {
93
87
  option: '--description [description]'
94
88
  }, {
@@ -113,7 +107,6 @@ _TeamsTeamSetCommand_instances = new WeakSet(), _TeamsTeamSetCommand_initTelemet
113
107
  }));
114
108
  };
115
109
  TeamsTeamSetCommand.props = [
116
- 'displayName',
117
110
  'description',
118
111
  'mailNickName',
119
112
  'classification',
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var _TodoListGetCommand_instances, _TodoListGetCommand_initTelemetry, _TodoListGetCommand_initOptions, _TodoListGetCommand_initOptionSets;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const request_1 = require("../../../../request");
19
+ const formatting_1 = require("../../../../utils/formatting");
20
+ const GraphCommand_1 = require("../../../base/GraphCommand");
21
+ const commands_1 = require("../../commands");
22
+ class TodoListGetCommand extends GraphCommand_1.default {
23
+ constructor() {
24
+ super();
25
+ _TodoListGetCommand_instances.add(this);
26
+ __classPrivateFieldGet(this, _TodoListGetCommand_instances, "m", _TodoListGetCommand_initTelemetry).call(this);
27
+ __classPrivateFieldGet(this, _TodoListGetCommand_instances, "m", _TodoListGetCommand_initOptions).call(this);
28
+ __classPrivateFieldGet(this, _TodoListGetCommand_instances, "m", _TodoListGetCommand_initOptionSets).call(this);
29
+ }
30
+ get name() {
31
+ return commands_1.default.LIST_GET;
32
+ }
33
+ get description() {
34
+ return 'Gets a specific list of Microsoft To Do task lists';
35
+ }
36
+ defaultProperties() {
37
+ return ['displayName', 'id'];
38
+ }
39
+ commandAction(logger, args) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ try {
42
+ const item = yield this.getList(args.options);
43
+ logger.log(item);
44
+ }
45
+ catch (err) {
46
+ this.handleRejectedODataJsonPromise(err);
47
+ }
48
+ });
49
+ }
50
+ getList(options) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const requestOptions = {
53
+ headers: {
54
+ accept: 'application/json;odata.metadata=none'
55
+ },
56
+ responseType: 'json'
57
+ };
58
+ if (options.id) {
59
+ requestOptions.url = `${this.resource}/v1.0/me/todo/lists/${options.id}`;
60
+ const result = yield request_1.default.get(requestOptions);
61
+ return result;
62
+ }
63
+ requestOptions.url = `${this.resource}/v1.0/me/todo/lists?$filter=displayName eq '${formatting_1.formatting.encodeQueryParameter(options.name)}'`;
64
+ const result = yield request_1.default.get(requestOptions);
65
+ if (result.value.length === 0) {
66
+ throw `The specified list '${options.name}' does not exist.`;
67
+ }
68
+ return result.value[0];
69
+ });
70
+ }
71
+ }
72
+ _TodoListGetCommand_instances = new WeakSet(), _TodoListGetCommand_initTelemetry = function _TodoListGetCommand_initTelemetry() {
73
+ this.telemetry.push((args) => {
74
+ Object.assign(this.telemetryProperties, {
75
+ id: typeof args.options.id !== 'undefined',
76
+ name: typeof args.options.name !== 'undefined'
77
+ });
78
+ });
79
+ }, _TodoListGetCommand_initOptions = function _TodoListGetCommand_initOptions() {
80
+ this.options.unshift({
81
+ option: '-i, --id [id]'
82
+ }, {
83
+ option: '-n, --name [name]'
84
+ });
85
+ }, _TodoListGetCommand_initOptionSets = function _TodoListGetCommand_initOptionSets() {
86
+ this.optionSets.push(['id', 'name']);
87
+ };
88
+ module.exports = new TodoListGetCommand();
89
+ //# sourceMappingURL=list-get.js.map
@@ -13,9 +13,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
13
13
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
14
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
15
  };
16
- var _TodoTaskAddCommand_instances, _TodoTaskAddCommand_initTelemetry, _TodoTaskAddCommand_initOptions, _TodoTaskAddCommand_initOptionSets;
16
+ var _TodoTaskAddCommand_instances, _TodoTaskAddCommand_initTelemetry, _TodoTaskAddCommand_initOptions, _TodoTaskAddCommand_initValidators, _TodoTaskAddCommand_initOptionSets;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const request_1 = require("../../../../request");
19
+ const validation_1 = require("../../../../utils/validation");
19
20
  const GraphCommand_1 = require("../../../base/GraphCommand");
20
21
  const commands_1 = require("../../commands");
21
22
  class TodoTaskAddCommand extends GraphCommand_1.default {
@@ -24,6 +25,7 @@ class TodoTaskAddCommand extends GraphCommand_1.default {
24
25
  _TodoTaskAddCommand_instances.add(this);
25
26
  __classPrivateFieldGet(this, _TodoTaskAddCommand_instances, "m", _TodoTaskAddCommand_initTelemetry).call(this);
26
27
  __classPrivateFieldGet(this, _TodoTaskAddCommand_instances, "m", _TodoTaskAddCommand_initOptions).call(this);
28
+ __classPrivateFieldGet(this, _TodoTaskAddCommand_instances, "m", _TodoTaskAddCommand_initValidators).call(this);
27
29
  __classPrivateFieldGet(this, _TodoTaskAddCommand_instances, "m", _TodoTaskAddCommand_initOptionSets).call(this);
28
30
  }
29
31
  get name() {
@@ -33,6 +35,7 @@ class TodoTaskAddCommand extends GraphCommand_1.default {
33
35
  return 'Add a task to a Microsoft To Do task list';
34
36
  }
35
37
  commandAction(logger, args) {
38
+ var _a, _b;
36
39
  return __awaiter(this, void 0, void 0, function* () {
37
40
  const endpoint = `${this.resource}/v1.0`;
38
41
  try {
@@ -44,7 +47,14 @@ class TodoTaskAddCommand extends GraphCommand_1.default {
44
47
  'Content-Type': 'application/json'
45
48
  },
46
49
  data: {
47
- title: args.options.title
50
+ title: args.options.title,
51
+ body: {
52
+ content: args.options.bodyContent,
53
+ contentType: ((_a = args.options.bodyContentType) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || 'text'
54
+ },
55
+ importance: (_b = args.options.importance) === null || _b === void 0 ? void 0 : _b.toLowerCase(),
56
+ dueDateTime: this.getDateTimeTimeZone(args.options.dueDateTime),
57
+ reminderDateTime: this.getDateTimeTimeZone(args.options.reminderDateTime)
48
58
  },
49
59
  responseType: 'json'
50
60
  };
@@ -56,6 +66,15 @@ class TodoTaskAddCommand extends GraphCommand_1.default {
56
66
  }
57
67
  });
58
68
  }
69
+ getDateTimeTimeZone(dateTime) {
70
+ if (!dateTime) {
71
+ return undefined;
72
+ }
73
+ return {
74
+ dateTime: dateTime,
75
+ timeZone: 'Etc/GMT'
76
+ };
77
+ }
59
78
  getTodoListId(args) {
60
79
  if (args.options.listId) {
61
80
  return Promise.resolve(args.options.listId);
@@ -81,7 +100,12 @@ _TodoTaskAddCommand_instances = new WeakSet(), _TodoTaskAddCommand_initTelemetry
81
100
  this.telemetry.push((args) => {
82
101
  Object.assign(this.telemetryProperties, {
83
102
  listId: typeof args.options.listId !== 'undefined',
84
- listName: typeof args.options.listName !== 'undefined'
103
+ listName: typeof args.options.listName !== 'undefined',
104
+ bodyContent: typeof args.options.bodyContent !== 'undefined',
105
+ bodyContentType: args.options.bodyContentType,
106
+ dueDateTime: typeof args.options.dueDateTime !== 'undefined',
107
+ importance: args.options.importance,
108
+ reminderDateTime: typeof args.options.reminderDateTime !== 'undefined'
85
109
  });
86
110
  });
87
111
  }, _TodoTaskAddCommand_initOptions = function _TodoTaskAddCommand_initOptions() {
@@ -91,7 +115,35 @@ _TodoTaskAddCommand_instances = new WeakSet(), _TodoTaskAddCommand_initTelemetry
91
115
  option: '--listName [listName]'
92
116
  }, {
93
117
  option: '--listId [listId]'
118
+ }, {
119
+ option: '--bodyContent [bodyContent]'
120
+ }, {
121
+ option: '--bodyContentType [bodyContentType]',
122
+ autocomplete: ['text', 'html']
123
+ }, {
124
+ option: '--dueDateTime [dueDateTime]'
125
+ }, {
126
+ option: '--importance [importance]',
127
+ autocomplete: ['low', 'normal', 'high']
128
+ }, {
129
+ option: '--reminderDateTime [reminderDateTime]'
94
130
  });
131
+ }, _TodoTaskAddCommand_initValidators = function _TodoTaskAddCommand_initValidators() {
132
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
133
+ if (args.options.bodyContentType && ['text', 'html'].indexOf(args.options.bodyContentType.toLowerCase()) === -1) {
134
+ return `'${args.options.bodyContentType}' is not a valid value for the bodyContentType option. Allowed values are text|html`;
135
+ }
136
+ if (args.options.importance && ['low', 'normal', 'high'].indexOf(args.options.importance.toLowerCase()) === -1) {
137
+ return `'${args.options.importance}' is not a valid value for the importance option. Allowed values are low|normal|high`;
138
+ }
139
+ if (args.options.dueDateTime && !validation_1.validation.isValidISODateTime(args.options.dueDateTime)) {
140
+ return `'${args.options.dueDateTime}' is not a valid ISO date string`;
141
+ }
142
+ if (args.options.reminderDateTime && !validation_1.validation.isValidISODateTime(args.options.reminderDateTime)) {
143
+ return `'${args.options.reminderDateTime}' is not a valid ISO date string`;
144
+ }
145
+ return true;
146
+ }));
95
147
  }, _TodoTaskAddCommand_initOptionSets = function _TodoTaskAddCommand_initOptionSets() {
96
148
  this.optionSets.push(['listId', 'listName']);
97
149
  };
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var _TodoTaskGetCommand_instances, _TodoTaskGetCommand_initTelemetry, _TodoTaskGetCommand_initOptions, _TodoTaskGetCommand_initOptionSets;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const request_1 = require("../../../../request");
19
+ const GraphCommand_1 = require("../../../base/GraphCommand");
20
+ const commands_1 = require("../../commands");
21
+ class TodoTaskGetCommand extends GraphCommand_1.default {
22
+ constructor() {
23
+ super();
24
+ _TodoTaskGetCommand_instances.add(this);
25
+ __classPrivateFieldGet(this, _TodoTaskGetCommand_instances, "m", _TodoTaskGetCommand_initTelemetry).call(this);
26
+ __classPrivateFieldGet(this, _TodoTaskGetCommand_instances, "m", _TodoTaskGetCommand_initOptions).call(this);
27
+ __classPrivateFieldGet(this, _TodoTaskGetCommand_instances, "m", _TodoTaskGetCommand_initOptionSets).call(this);
28
+ }
29
+ get name() {
30
+ return commands_1.default.TASK_GET;
31
+ }
32
+ get description() {
33
+ return 'Get a specific task from a Microsoft To Do task list';
34
+ }
35
+ defaultProperties() {
36
+ return ['id', 'title', 'status', 'createdDateTime', 'lastModifiedDateTime'];
37
+ }
38
+ getTodoListId(args) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ if (args.options.listId) {
41
+ return args.options.listId;
42
+ }
43
+ const requestOptions = {
44
+ url: `${this.resource}/v1.0/me/todo/lists?$filter=displayName eq '${escape(args.options.listName)}'`,
45
+ headers: {
46
+ accept: 'application/json;odata.metadata=none'
47
+ },
48
+ responseType: 'json'
49
+ };
50
+ const response = yield request_1.default.get(requestOptions);
51
+ const taskList = response.value[0];
52
+ if (!taskList) {
53
+ throw `The specified task list does not exist`;
54
+ }
55
+ return taskList.id;
56
+ });
57
+ }
58
+ commandAction(logger, args) {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ try {
61
+ const listId = yield this.getTodoListId(args);
62
+ const requestOptions = {
63
+ url: `${this.resource}/v1.0/me/todo/lists/${listId}/tasks/${args.options.id}`,
64
+ headers: {
65
+ accept: 'application/json;odata.metadata=none'
66
+ },
67
+ responseType: 'json'
68
+ };
69
+ const item = yield request_1.default.get(requestOptions);
70
+ if (args.options.output === 'json') {
71
+ logger.log(item);
72
+ }
73
+ else {
74
+ logger.log({
75
+ id: item.id,
76
+ title: item.title,
77
+ status: item.status,
78
+ createdDateTime: item.createdDateTime,
79
+ lastModifiedDateTime: item.lastModifiedDateTime
80
+ });
81
+ }
82
+ }
83
+ catch (err) {
84
+ this.handleRejectedODataJsonPromise(err);
85
+ }
86
+ });
87
+ }
88
+ }
89
+ _TodoTaskGetCommand_instances = new WeakSet(), _TodoTaskGetCommand_initTelemetry = function _TodoTaskGetCommand_initTelemetry() {
90
+ this.telemetry.push((args) => {
91
+ Object.assign(this.telemetryProperties, {
92
+ listId: typeof args.options.listId !== 'undefined',
93
+ listName: typeof args.options.listName !== 'undefined'
94
+ });
95
+ });
96
+ }, _TodoTaskGetCommand_initOptions = function _TodoTaskGetCommand_initOptions() {
97
+ this.options.unshift({
98
+ option: '-i, --id <id>'
99
+ }, {
100
+ option: '--listName [listName]'
101
+ }, {
102
+ option: '--listId [listId]'
103
+ });
104
+ }, _TodoTaskGetCommand_initOptionSets = function _TodoTaskGetCommand_initOptionSets() {
105
+ this.optionSets.push(['listId', 'listName']);
106
+ };
107
+ module.exports = new TodoTaskGetCommand();
108
+ //# sourceMappingURL=task-get.js.map
@@ -16,6 +16,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
16
16
  var _TodoTaskSetCommand_instances, _TodoTaskSetCommand_initTelemetry, _TodoTaskSetCommand_initOptions, _TodoTaskSetCommand_initValidators, _TodoTaskSetCommand_initOptionSets;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const request_1 = require("../../../../request");
19
+ const validation_1 = require("../../../../utils/validation");
19
20
  const GraphCommand_1 = require("../../../base/GraphCommand");
20
21
  const commands_1 = require("../../commands");
21
22
  class TodoTaskSetCommand extends GraphCommand_1.default {
@@ -76,7 +77,14 @@ class TodoTaskSetCommand extends GraphCommand_1.default {
76
77
  return Promise.resolve(taskList.id);
77
78
  });
78
79
  }
80
+ getDateTimeTimeZone(dateTime) {
81
+ return {
82
+ dateTime: dateTime,
83
+ timeZone: 'Etc/GMT'
84
+ };
85
+ }
79
86
  mapRequestBody(options) {
87
+ var _a;
80
88
  const requestBody = {};
81
89
  if (options.status) {
82
90
  requestBody.status = options.status;
@@ -84,6 +92,21 @@ class TodoTaskSetCommand extends GraphCommand_1.default {
84
92
  if (options.title) {
85
93
  requestBody.title = options.title;
86
94
  }
95
+ if (options.importance) {
96
+ requestBody.importance = options.importance.toLowerCase();
97
+ }
98
+ if (options.bodyContentType || options.bodyContent) {
99
+ requestBody.body = {
100
+ content: options.bodyContent,
101
+ contentType: ((_a = options.bodyContentType) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || 'text'
102
+ };
103
+ }
104
+ if (options.dueDateTime) {
105
+ requestBody.dueDateTime = this.getDateTimeTimeZone(options.dueDateTime);
106
+ }
107
+ if (options.reminderDateTime) {
108
+ requestBody.reminderDateTime = this.getDateTimeTimeZone(options.reminderDateTime);
109
+ }
87
110
  return requestBody;
88
111
  }
89
112
  }
@@ -93,7 +116,12 @@ _TodoTaskSetCommand_instances = new WeakSet(), _TodoTaskSetCommand_initTelemetry
93
116
  listId: typeof args.options.listId !== 'undefined',
94
117
  listName: typeof args.options.listName !== 'undefined',
95
118
  status: typeof args.options.status !== 'undefined',
96
- title: typeof args.options.title !== 'undefined'
119
+ title: typeof args.options.title !== 'undefined',
120
+ bodyContent: typeof args.options.bodyContent !== 'undefined',
121
+ bodyContentType: args.options.bodyContentType,
122
+ dueDateTime: typeof args.options.dueDateTime !== 'undefined',
123
+ importance: args.options.importance,
124
+ reminderDateTime: typeof args.options.reminderDateTime !== 'undefined'
97
125
  });
98
126
  });
99
127
  }, _TodoTaskSetCommand_initOptions = function _TodoTaskSetCommand_initOptions() {
@@ -108,6 +136,18 @@ _TodoTaskSetCommand_instances = new WeakSet(), _TodoTaskSetCommand_initTelemetry
108
136
  option: '--listName [listName]'
109
137
  }, {
110
138
  option: '--listId [listId]'
139
+ }, {
140
+ option: '--bodyContent [bodyContent]'
141
+ }, {
142
+ option: '--bodyContentType [bodyContentType]',
143
+ autocomplete: ['text', 'html']
144
+ }, {
145
+ option: '--dueDateTime [dueDateTime]'
146
+ }, {
147
+ option: '--importance [importance]',
148
+ autocomplete: ['low', 'normal', 'high']
149
+ }, {
150
+ option: '--reminderDateTime [reminderDateTime]'
111
151
  });
112
152
  }, _TodoTaskSetCommand_initValidators = function _TodoTaskSetCommand_initValidators() {
113
153
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
@@ -119,6 +159,18 @@ _TodoTaskSetCommand_instances = new WeakSet(), _TodoTaskSetCommand_initTelemetry
119
159
  args.options.status !== 'deferred') {
120
160
  return `${args.options.status} is not a valid value. Allowed values are notStarted|inProgress|completed|waitingOnOthers|deferred`;
121
161
  }
162
+ if (args.options.bodyContentType && ['text', 'html'].indexOf(args.options.bodyContentType.toLowerCase()) === -1) {
163
+ return `'${args.options.bodyContentType}' is not a valid value for the bodyContentType option. Allowed values are text|html`;
164
+ }
165
+ if (args.options.importance && ['low', 'normal', 'high'].indexOf(args.options.importance.toLowerCase()) === -1) {
166
+ return `'${args.options.importance}' is not a valid value for the importance option. Allowed values are low|normal|high`;
167
+ }
168
+ if (args.options.dueDateTime && !validation_1.validation.isValidISODateTime(args.options.dueDateTime)) {
169
+ return `'${args.options.dueDateTime}' is not a valid ISO date string`;
170
+ }
171
+ if (args.options.reminderDateTime && !validation_1.validation.isValidISODateTime(args.options.reminderDateTime)) {
172
+ return `'${args.options.reminderDateTime}' is not a valid ISO date string`;
173
+ }
122
174
  return true;
123
175
  }));
124
176
  }, _TodoTaskSetCommand_initOptionSets = function _TodoTaskSetCommand_initOptionSets() {
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const prefix = 'todo';
4
4
  exports.default = {
5
5
  LIST_ADD: `${prefix} list add`,
6
+ LIST_GET: `${prefix} list get`,
6
7
  LIST_LIST: `${prefix} list list`,
7
8
  LIST_REMOVE: `${prefix} list remove`,
8
9
  LIST_SET: `${prefix} list set`,
9
10
  TASK_ADD: `${prefix} task add`,
11
+ TASK_GET: `${prefix} task get`,
10
12
  TASK_LIST: `${prefix} task list`,
11
13
  TASK_REMOVE: `${prefix} task remove`,
12
14
  TASK_SET: `${prefix} task set`
@@ -0,0 +1,18 @@
1
+ ## Available settings
2
+
3
+ Following is the list of configuration settings available in CLI for Microsoft 365.
4
+
5
+ Setting name|Definition|Default value
6
+ ------------|----------|-------------
7
+ `autoOpenLinksInBrowser`|Automatically open the browser for all commands which return a url and expect the user to copy paste this to the browser. For example when logging in, using `m365 login` in device code mode.|`false`
8
+ `copyDeviceCodeToClipboard`|Automatically copy the device code to the clipboard when running `m365 login` command in device code mode|`false`
9
+ `csvEscape`|Single character used for escaping; only apply to characters matching the quote and the escape options|`"`
10
+ `csvHeader`|Display the column names on the first line|`true`
11
+ `csvQuote`|The quote characters surrounding a field. An empty quote value will preserve the original field, whether it contains quotation marks or not.|` `
12
+ `csvQuoted`|Quote all the non-empty fields even if not required|`false`
13
+ `csvQuotedEmpty`|Quote empty strings and overrides quoted_string on empty strings when defined|`false`
14
+ `errorOutput`|Defines if errors should be written to `stdout` or `stderr`|`stderr`
15
+ `output`|Defines the default output when issuing a command|`json`
16
+ `printErrorsAsPlainText`|When output mode is set to `json`, print error messages as plain-text rather than JSON|`true`
17
+ `prompt`|Prompts for missing values in required options|`false`
18
+ `showHelpOnFailure`|Automatically display help when executing a command failed|`true`
@@ -0,0 +1,149 @@
1
+ # aad app list
2
+
3
+ Retrieves a list of Azure AD app registrations
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 aad app list [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ --8<-- "docs/cmd/_global.md"
14
+
15
+ ## Examples
16
+
17
+ Retrieve a list of Azure AD app registrations
18
+
19
+ ```sh
20
+ m365 aad app list
21
+ ```
22
+
23
+ ## Response
24
+
25
+ === "JSON"
26
+ ```json
27
+ [
28
+ {
29
+ "id": "ff2798f7-1c7a-4607-8a7b-3d5e0c18c756",
30
+ "deletedDateTime": null,
31
+ "appId": "61ed4fab-a861-4307-bb87-a6a53dbe39f5",
32
+ "applicationTemplateId": null,
33
+ "disabledByMicrosoftStatus": null,
34
+ "createdDateTime": "2021-03-16T14:51:28Z",
35
+ "displayName": "TestAppPermissions",
36
+ "description": null,
37
+ "groupMembershipClaims": null,
38
+ "identifierUris": [],
39
+ "isDeviceOnlyAuthSupported": null,
40
+ "isFallbackPublicClient": null,
41
+ "notes": null,
42
+ "publisherDomain": "Contoso.onmicrosoft.com",
43
+ "serviceManagementReference": null,
44
+ "signInAudience": "AzureADMyOrg",
45
+ "tags": [],
46
+ "tokenEncryptionKeyId": null,
47
+ "samlMetadataUrl": null,
48
+ "defaultRedirectUri": null,
49
+ "certification": null,
50
+ "optionalClaims": null,
51
+ "addIns": [],
52
+ "api": {
53
+ "acceptMappedClaims": null,
54
+ "knownClientApplications": [],
55
+ "requestedAccessTokenVersion": null,
56
+ "oauth2PermissionScopes": [],
57
+ "preAuthorizedApplications": []
58
+ },
59
+ "appRoles": [],
60
+ "info": {
61
+ "logoUrl": null,
62
+ "marketingUrl": null,
63
+ "privacyStatementUrl": null,
64
+ "supportUrl": null,
65
+ "termsOfServiceUrl": null
66
+ },
67
+ "keyCredentials": [
68
+ {
69
+ "customKeyIdentifier": "7D20AB8DD09B653E9A3880F9046314B76917EF62",
70
+ "displayName": "CN=TestCertificate",
71
+ "endDateTime": "2022-01-01T00:00:00Z",
72
+ "key": null,
73
+ "keyId": "8928a06f-fa2d-4d92-98c3-b0f544804f64",
74
+ "startDateTime": "2020-01-01T00:00:00Z",
75
+ "type": "AsymmetricX509Cert",
76
+ "usage": "Verify"
77
+ }
78
+ ],
79
+ "parentalControlSettings": {
80
+ "countriesBlockedForMinors": [],
81
+ "legalAgeGroupRule": "Allow"
82
+ },
83
+ "passwordCredentials": [
84
+ {
85
+ "customKeyIdentifier": null,
86
+ "displayName": "TestSecret",
87
+ "endDateTime": "2022-03-16T14:58:45.602Z",
88
+ "hint": "~03",
89
+ "keyId": "714c9628-4bb8-4f08-84b4-7fd8d7a7b8c5",
90
+ "secretText": null,
91
+ "startDateTime": "2021-03-16T14:59:07.642Z"
92
+ }
93
+ ],
94
+ "publicClient": {
95
+ "redirectUris": []
96
+ },
97
+ "requiredResourceAccess": [
98
+ {
99
+ "resourceAppId": "00000003-0000-0000-c000-000000000000",
100
+ "resourceAccess": [
101
+ {
102
+ "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
103
+ "type": "Scope"
104
+ },
105
+ {
106
+ "id": "18228521-a591-40f1-b215-5fad4488c117",
107
+ "type": "Role"
108
+ },
109
+ {
110
+ "id": "09850681-111b-4a89-9bed-3f2cae46d706",
111
+ "type": "Role"
112
+ }
113
+ ]
114
+ }
115
+ ],
116
+ "verifiedPublisher": {
117
+ "displayName": null,
118
+ "verifiedPublisherId": null,
119
+ "addedDateTime": null
120
+ },
121
+ "web": {
122
+ "homePageUrl": null,
123
+ "logoutUrl": null,
124
+ "redirectUris": [],
125
+ "implicitGrantSettings": {
126
+ "enableAccessTokenIssuance": false,
127
+ "enableIdTokenIssuance": false
128
+ },
129
+ "redirectUriSettings": []
130
+ },
131
+ "spa": {
132
+ "redirectUris": []
133
+ }
134
+ }
135
+ ]
136
+ ```
137
+
138
+ === "Text"
139
+ ```text
140
+ appId id displayName signInAudience
141
+ ------------------------------------ ------------------------------------ ----------------------------------------------------------------------- ----------------------------------
142
+ 61ed4fab-a861-4307-bb87-a6a53dbe39f5 ff2798f7-1c7a-4607-8a7b-3d5e0c18c756 TestAppPermissions AzureADMyOrg
143
+ ```
144
+
145
+ === "CSV"
146
+ ```csv
147
+ appId,id,displayName,signInAudience
148
+ 61ed4fab-a861-4307-bb87-a6a53dbe39f5,ff2798f7-1c7a-4607-8a7b-3d5e0c18c756,TestAppPermissions,AzureADMyOrg
149
+ ```