@pnp/cli-microsoft365 6.0.0-beta.42305df → 6.0.0-beta.48a730d

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 (203) hide show
  1. package/.eslintrc.js +15 -2
  2. package/README.md +5 -0
  3. package/dist/Command.js +16 -2
  4. package/dist/m365/aad/commands/app/app-add.js +36 -13
  5. package/dist/m365/aad/commands/app/app-list.js +38 -0
  6. package/dist/m365/aad/commands/user/user-guest-add.js +103 -0
  7. package/dist/m365/aad/commands.js +2 -0
  8. package/dist/m365/commands/status.js +6 -1
  9. package/dist/m365/outlook/commands/mail/mail-send.js +55 -31
  10. package/dist/m365/outlook/commands/message/message-get.js +97 -0
  11. package/dist/m365/outlook/commands.js +1 -0
  12. package/dist/m365/planner/commands/bucket/bucket-get.js +1 -1
  13. package/dist/m365/planner/commands/plan/plan-get.js +5 -20
  14. package/dist/m365/pp/commands/Environment.js +3 -0
  15. package/dist/m365/pp/commands/card/card-get.js +110 -0
  16. package/dist/m365/pp/commands/card/card-list.js +68 -0
  17. package/dist/m365/pp/commands/card/card-remove.js +130 -0
  18. package/dist/m365/pp/commands/dataverse/dataverse-table-list.js +6 -12
  19. package/dist/m365/pp/commands/environment/environment-get.js +75 -0
  20. package/dist/m365/pp/commands/gateway/gateway-get.js +70 -0
  21. package/dist/m365/pp/commands/solution/Solution.js +3 -0
  22. package/dist/m365/pp/commands/solution/solution-get.js +117 -0
  23. package/dist/m365/pp/commands/solution/solution-list.js +87 -0
  24. package/dist/m365/pp/commands.js +7 -0
  25. package/dist/m365/spfx/commands/project/project-doctor.js +4 -1
  26. package/dist/m365/spfx/commands/project/project-externalize.js +4 -1
  27. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010001_YORC_version.js +2 -1
  28. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010002_YORC_isCreatingSolution.js +2 -1
  29. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010003_YORC_packageManager.js +2 -1
  30. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010004_YORC_componentType.js +2 -1
  31. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010005_YORC_environment.js +2 -1
  32. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010006_YORC_framework.js +3 -2
  33. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010007_YORC_isDomainIsolated.js +2 -1
  34. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010008_YORC_nodeVersion.js +2 -1
  35. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010009_YORC_sdkVersions_microsoft_graph_client.js +56 -0
  36. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010010_YORC_sdkVersions_teams_js.js +56 -0
  37. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.14.0.js +0 -2
  38. package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.16.0-beta.1.js → upgrade-1.16.0-beta.2.js} +44 -28
  39. package/dist/m365/spfx/commands/project/project-upgrade.js +5 -2
  40. package/dist/m365/spfx/commands/spfx-doctor.js +39 -9
  41. package/dist/m365/spo/commands/contenttype/contenttype-add.js +82 -43
  42. package/dist/m365/spo/commands/contenttype/contenttype-field-remove.js +53 -21
  43. package/dist/m365/spo/commands/contenttype/contenttype-get.js +35 -14
  44. package/dist/m365/spo/commands/eventreceiver/EventReceiver.js +3 -0
  45. package/dist/m365/spo/commands/eventreceiver/eventreceiver-remove.js +182 -0
  46. package/dist/m365/spo/commands/field/field-add.js +26 -1
  47. package/dist/m365/spo/commands/field/field-set.js +23 -13
  48. package/dist/m365/spo/commands/file/file-copy.js +25 -39
  49. package/dist/m365/spo/commands/file/file-move.js +24 -37
  50. package/dist/m365/spo/commands/file/file-rename.js +19 -16
  51. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +129 -0
  52. package/dist/m365/spo/commands/folder/folder-list.js +35 -12
  53. package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +168 -0
  54. package/dist/m365/spo/commands/folder/folder-roleinheritance-break.js +11 -1
  55. package/dist/m365/spo/commands/folder/folder-roleinheritance-reset.js +12 -1
  56. package/dist/m365/spo/commands/group/AssociatedGroupPropertiesCollection.js +3 -0
  57. package/dist/m365/spo/commands/group/group-list.js +49 -10
  58. package/dist/m365/spo/commands/list/list-contenttype-add.js +21 -18
  59. package/dist/m365/spo/commands/list/list-contenttype-default-set.js +59 -47
  60. package/dist/m365/spo/commands/list/list-contenttype-list.js +16 -8
  61. package/dist/m365/spo/commands/list/list-contenttype-remove.js +16 -8
  62. package/dist/m365/spo/commands/list/list-roleassignment-add.js +10 -10
  63. package/dist/m365/spo/commands/list/list-roleassignment-remove.js +8 -8
  64. package/dist/m365/spo/commands/list/list-roleinheritance-break.js +14 -6
  65. package/dist/m365/spo/commands/list/list-roleinheritance-reset.js +14 -6
  66. package/dist/m365/spo/commands/list/list-webhook-add.js +19 -11
  67. package/dist/m365/spo/commands/list/list-webhook-get.js +17 -10
  68. package/dist/m365/spo/commands/list/list-webhook-list.js +17 -42
  69. package/dist/m365/spo/commands/list/list-webhook-remove.js +19 -11
  70. package/dist/m365/spo/commands/list/list-webhook-set.js +27 -20
  71. package/dist/m365/spo/commands/listitem/listitem-add.js +24 -14
  72. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +18 -8
  73. package/dist/m365/spo/commands/listitem/listitem-get.js +18 -8
  74. package/dist/m365/spo/commands/listitem/listitem-isrecord.js +20 -10
  75. package/dist/m365/spo/commands/listitem/listitem-list.js +21 -11
  76. package/dist/m365/spo/commands/listitem/listitem-record-declare.js +19 -12
  77. package/dist/m365/spo/commands/listitem/listitem-record-undeclare.js +24 -21
  78. package/dist/m365/spo/commands/listitem/listitem-remove.js +19 -11
  79. package/dist/m365/spo/commands/listitem/listitem-roleassignment-add.js +239 -0
  80. package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +8 -8
  81. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +13 -5
  82. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +13 -5
  83. package/dist/m365/spo/commands/listitem/listitem-set.js +52 -44
  84. package/dist/m365/spo/commands/roledefinition/roledefinition-list.js +15 -2
  85. package/dist/m365/spo/commands/site/site-add.js +4 -11
  86. package/dist/m365/spo/commands/{hubsite/hubsite-connect.js → site/site-hubsite-connect.js} +10 -10
  87. package/dist/m365/spo/commands/{hubsite/hubsite-disconnect.js → site/site-hubsite-disconnect.js} +13 -13
  88. package/dist/m365/spo/commands/{hubsite/hubsite-theme-sync.js → site/site-hubsite-theme-sync.js} +11 -11
  89. package/dist/m365/spo/commands/web/web-roleassignment-add.js +10 -10
  90. package/dist/m365/spo/commands/web/web-roleassignment-remove.js +8 -8
  91. package/dist/m365/spo/commands/web/web-roleinheritance-break.js +100 -0
  92. package/dist/m365/spo/commands.js +8 -3
  93. package/dist/m365/teams/commands/channel/channel-add.js +9 -9
  94. package/dist/m365/teams/commands/team/team-set.js +0 -7
  95. package/dist/m365/todo/commands/list/list-get.js +89 -0
  96. package/dist/m365/todo/commands/task/task-add.js +55 -3
  97. package/dist/m365/todo/commands/task/task-get.js +108 -0
  98. package/dist/m365/todo/commands/task/task-set.js +53 -1
  99. package/dist/m365/todo/commands.js +2 -0
  100. package/dist/utils/md.js +8 -1
  101. package/docs/docs/_clisettings.md +18 -0
  102. package/docs/docs/cmd/aad/app/app-list.md +149 -0
  103. package/docs/docs/cmd/aad/user/user-guest-add.md +107 -0
  104. package/docs/docs/cmd/adaptivecard/adaptivecard-send.md +3 -0
  105. package/docs/docs/cmd/graph/schemaextension/schemaextension-add.md +4 -11
  106. package/docs/docs/cmd/graph/schemaextension/schemaextension-set.md +4 -10
  107. package/docs/docs/cmd/outlook/mail/mail-send.md +13 -0
  108. package/docs/docs/cmd/outlook/message/message-get.md +48 -0
  109. package/docs/docs/cmd/planner/bucket/bucket-add.md +29 -0
  110. package/docs/docs/cmd/planner/bucket/bucket-get.md +29 -0
  111. package/docs/docs/cmd/planner/bucket/bucket-list.md +30 -0
  112. package/docs/docs/cmd/planner/bucket/bucket-remove.md +4 -0
  113. package/docs/docs/cmd/planner/bucket/bucket-set.md +4 -0
  114. package/docs/docs/cmd/planner/plan/plan-add.md +123 -0
  115. package/docs/docs/cmd/planner/plan/plan-get.md +75 -6
  116. package/docs/docs/cmd/planner/plan/plan-list.md +45 -0
  117. package/docs/docs/cmd/planner/plan/plan-remove.md +4 -0
  118. package/docs/docs/cmd/planner/task/task-get.md +0 -3
  119. package/docs/docs/cmd/pp/card/card-get.md +51 -0
  120. package/docs/docs/cmd/pp/card/card-list.md +33 -0
  121. package/docs/docs/cmd/pp/card/card-remove.md +82 -0
  122. package/docs/docs/cmd/pp/dataverse/dataverse-table-list.md +2 -2
  123. package/docs/docs/cmd/pp/environment/environment-get.md +38 -0
  124. package/docs/docs/cmd/pp/environment/environment-list.md +1 -1
  125. package/docs/docs/cmd/pp/gateway/gateway-get.md +24 -0
  126. package/docs/docs/cmd/pp/solution/solution-get.md +51 -0
  127. package/docs/docs/cmd/pp/solution/solution-list.md +33 -0
  128. package/docs/docs/cmd/spfx/project/project-rename.md +1 -14
  129. package/docs/docs/cmd/spfx/project/project-upgrade.md +1 -1
  130. package/docs/docs/cmd/spfx/spfx-doctor.md +10 -1
  131. package/docs/docs/cmd/spo/contenttype/contenttype-add.md +20 -2
  132. package/docs/docs/cmd/spo/contenttype/contenttype-field-remove.md +22 -4
  133. package/docs/docs/cmd/spo/contenttype/contenttype-get.md +21 -3
  134. package/docs/docs/cmd/spo/customaction/customaction-add.md +3 -0
  135. package/docs/docs/cmd/spo/customaction/customaction-set.md +3 -2
  136. package/docs/docs/cmd/spo/eventreceiver/eventreceiver-get.md +2 -2
  137. package/docs/docs/cmd/spo/eventreceiver/eventreceiver-remove.md +69 -0
  138. package/docs/docs/cmd/spo/field/field-add.md +20 -2
  139. package/docs/docs/cmd/spo/field/field-set.md +15 -3
  140. package/docs/docs/cmd/spo/file/file-roleinheritance-break.md +54 -0
  141. package/docs/docs/cmd/spo/folder/folder-list.md +45 -0
  142. package/docs/docs/cmd/spo/folder/folder-roleassignment-remove.md +57 -0
  143. package/docs/docs/cmd/spo/folder/folder-roleinheritance-break.md +6 -0
  144. package/docs/docs/cmd/spo/folder/folder-roleinheritance-reset.md +6 -0
  145. package/docs/docs/cmd/spo/group/group-list.md +10 -1
  146. package/docs/docs/cmd/spo/hubsite/hubsite-register.md +2 -2
  147. package/docs/docs/cmd/spo/hubsite/hubsite-unregister.md +2 -2
  148. package/docs/docs/cmd/spo/list/list-contenttype-add.md +15 -6
  149. package/docs/docs/cmd/spo/list/list-contenttype-default-set.md +16 -7
  150. package/docs/docs/cmd/spo/list/list-contenttype-list.md +15 -6
  151. package/docs/docs/cmd/spo/list/list-contenttype-remove.md +16 -7
  152. package/docs/docs/cmd/spo/list/list-roleinheritance-break.md +11 -8
  153. package/docs/docs/cmd/spo/list/list-roleinheritance-reset.md +16 -7
  154. package/docs/docs/cmd/spo/list/list-view-set.md +14 -3
  155. package/docs/docs/cmd/spo/list/list-webhook-add.md +15 -16
  156. package/docs/docs/cmd/spo/list/list-webhook-get.md +16 -7
  157. package/docs/docs/cmd/spo/list/list-webhook-list.md +13 -10
  158. package/docs/docs/cmd/spo/list/list-webhook-remove.md +12 -10
  159. package/docs/docs/cmd/spo/list/list-webhook-set.md +21 -12
  160. package/docs/docs/cmd/spo/listitem/listitem-add.md +11 -2
  161. package/docs/docs/cmd/spo/listitem/listitem-attachment-list.md +11 -2
  162. package/docs/docs/cmd/spo/listitem/listitem-get.md +11 -2
  163. package/docs/docs/cmd/spo/listitem/listitem-isrecord.md +12 -2
  164. package/docs/docs/cmd/spo/listitem/listitem-list.md +10 -1
  165. package/docs/docs/cmd/spo/listitem/listitem-record-declare.md +7 -4
  166. package/docs/docs/cmd/spo/listitem/listitem-record-undeclare.md +11 -2
  167. package/docs/docs/cmd/spo/listitem/listitem-remove.md +11 -2
  168. package/docs/docs/cmd/spo/listitem/listitem-roleassignment-add.md +81 -0
  169. package/docs/docs/cmd/spo/listitem/listitem-roleinheritance-break.md +7 -4
  170. package/docs/docs/cmd/spo/listitem/listitem-roleinheritance-reset.md +8 -5
  171. package/docs/docs/cmd/spo/listitem/listitem-set.md +7 -4
  172. package/docs/docs/cmd/spo/page/page-clientsidewebpart-add.md +5 -10
  173. package/docs/docs/cmd/spo/page/page-control-set.md +2 -1
  174. package/docs/docs/cmd/spo/site/site-add.md +0 -3
  175. package/docs/docs/cmd/spo/{hubsite/hubsite-connect.md → site/site-hubsite-connect.md} +4 -4
  176. package/docs/docs/cmd/spo/{hubsite/hubsite-disconnect.md → site/site-hubsite-disconnect.md} +7 -7
  177. package/docs/docs/cmd/spo/{hubsite/hubsite-theme-sync.md → site/site-hubsite-theme-sync.md} +5 -5
  178. package/docs/docs/cmd/spo/term/term-add.md +5 -0
  179. package/docs/docs/cmd/spo/term/term-set-add.md +6 -1
  180. package/docs/docs/cmd/spo/web/web-roleinheritance-break.md +44 -0
  181. package/docs/docs/cmd/teams/channel/channel-add.md +4 -4
  182. package/docs/docs/cmd/teams/team/team-clone.md +0 -3
  183. package/docs/docs/cmd/teams/team/team-set.md +0 -3
  184. package/docs/docs/cmd/tenant/id/id-get.md +20 -0
  185. package/docs/docs/cmd/tenant/report/report-activeusercounts.md +35 -0
  186. package/docs/docs/cmd/tenant/report/report-activeuserdetail.md +49 -0
  187. package/docs/docs/cmd/tenant/report/report-office365activationcounts.md +32 -0
  188. package/docs/docs/cmd/tenant/report/report-office365activationsusercounts.md +30 -0
  189. package/docs/docs/cmd/tenant/report/report-office365activationsuserdetail.md +36 -0
  190. package/docs/docs/cmd/tenant/report/report-servicesusercounts.md +41 -0
  191. package/docs/docs/cmd/tenant/security/security-alerts-list.md +105 -0
  192. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-health-get.md +87 -0
  193. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-health-list.md +91 -0
  194. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-get.md +62 -0
  195. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-list.md +51 -0
  196. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-get.md +64 -0
  197. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-list.md +52 -0
  198. package/docs/docs/cmd/todo/list/list-get.md +61 -0
  199. package/docs/docs/cmd/todo/task/task-add.md +32 -5
  200. package/docs/docs/cmd/todo/task/task-get.md +75 -0
  201. package/docs/docs/cmd/todo/task/task-set.md +29 -2
  202. package/package.json +13 -3
  203. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN006006_CFG_PS_features.js +0 -60
@@ -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`
package/dist/utils/md.js CHANGED
@@ -45,10 +45,16 @@ function convertHyperlinks(md) {
45
45
  return `${label} (${url})`;
46
46
  });
47
47
  }
48
+ function convertContentTabs(md) {
49
+ const regex = new RegExp('^=== "(.+?)"(?:\r\n|\n){2}((?:^ (?:.*?(?:\r\n|\n))?)+)', 'gms');
50
+ return md.replace(regex, (match, title, content) => {
51
+ return ` ${title}${os_1.EOL}${os_1.EOL}${content.replace(/^ /gms, '')}`;
52
+ });
53
+ }
48
54
  function convertCodeFences(md) {
49
55
  const regex = new RegExp('^```.*?(?:\r\n|\n)(.*?)```(?:\r\n|\n)', 'gms');
50
56
  return md.replace(regex, (match, code) => {
51
- return ` ${code}${os_1.EOL}`;
57
+ return `${code.replace(/^(.+)$/gm, ' $1')}${os_1.EOL}`;
52
58
  });
53
59
  }
54
60
  function removeInlineMarkup(md) {
@@ -65,6 +71,7 @@ const convertFunctions = [
65
71
  convertAdmonitions,
66
72
  convertDd,
67
73
  convertHyperlinks,
74
+ convertContentTabs,
68
75
  convertCodeFences,
69
76
  removeInlineMarkup,
70
77
  removeTooManyEmptyLines
@@ -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
+ ```