@pnp/cli-microsoft365 9.0.0-beta.f2c5f82 → 9.1.0-beta.2d61838

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 (197) hide show
  1. package/allCommands.json +1 -1
  2. package/allCommandsFull.json +1 -1
  3. package/dist/Auth.js +17 -16
  4. package/dist/AuthServer.js +7 -7
  5. package/dist/Command.js +5 -4
  6. package/dist/api.js +1 -1
  7. package/dist/cli/cli.js +57 -8
  8. package/dist/config.js +61 -5
  9. package/dist/m365/app/commands/permission/permission-add.js +9 -9
  10. package/dist/m365/base/PowerAutomateCommand.js +1 -1
  11. package/dist/m365/base/SpoCommand.js +1 -1
  12. package/dist/m365/cli/commands/cli-consent.js +9 -5
  13. package/dist/m365/cli/commands/cli-doctor.js +2 -2
  14. package/dist/m365/cli/commands/cli-reconsent.js +2 -3
  15. package/dist/m365/cli/commands/config/config-set.js +12 -3
  16. package/dist/m365/commands/login.js +38 -14
  17. package/dist/m365/commands/setup.js +256 -33
  18. package/dist/m365/commands/status.js +2 -2
  19. package/dist/m365/connection/commands/connection-list.js +4 -4
  20. package/dist/m365/entra/commands/app/app-add.js +52 -288
  21. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-add.js +13 -13
  22. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-get.js +18 -18
  23. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-list.js +1 -1
  24. package/dist/m365/entra/commands/group/group-user-list.js +4 -4
  25. package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +4 -4
  26. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-list.js +3 -3
  27. package/dist/m365/entra/commands/m365group/m365group-user-list.js +9 -6
  28. package/dist/m365/external/commands/item/item-add.js +2 -5
  29. package/dist/m365/file/commands/file-move.js +135 -0
  30. package/dist/m365/file/commands.js +2 -1
  31. package/dist/m365/flow/commands/environment/environment-get.js +1 -1
  32. package/dist/m365/flow/commands/environment/environment-list.js +1 -1
  33. package/dist/m365/flow/commands/flow-disable.js +1 -1
  34. package/dist/m365/flow/commands/flow-enable.js +1 -1
  35. package/dist/m365/flow/commands/flow-export.js +17 -16
  36. package/dist/m365/flow/commands/flow-get.js +1 -1
  37. package/dist/m365/flow/commands/flow-list.js +1 -1
  38. package/dist/m365/flow/commands/flow-remove.js +1 -1
  39. package/dist/m365/flow/commands/owner/owner-ensure.js +1 -1
  40. package/dist/m365/flow/commands/owner/owner-list.js +1 -1
  41. package/dist/m365/flow/commands/owner/owner-remove.js +1 -1
  42. package/dist/m365/flow/commands/recyclebinitem/recyclebinitem-list.js +47 -0
  43. package/dist/m365/flow/commands/recyclebinitem/recyclebinitem-restore.js +48 -0
  44. package/dist/m365/flow/commands/run/run-cancel.js +1 -1
  45. package/dist/m365/flow/commands/run/run-get.js +1 -1
  46. package/dist/m365/flow/commands/run/run-list.js +1 -1
  47. package/dist/m365/flow/commands/run/run-resubmit.js +2 -2
  48. package/dist/m365/flow/commands.js +2 -0
  49. package/dist/m365/onenote/commands/notebook/notebook-add.js +132 -0
  50. package/dist/m365/onenote/commands.js +1 -0
  51. package/dist/m365/outlook/commands/message/message-get.js +11 -11
  52. package/dist/m365/spfx/commands/project/DeployWorkflow.js +1 -1
  53. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.20.0-rc.1.js +25 -0
  54. package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
  55. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +10 -1
  56. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.20.0-rc.1.js +57 -0
  57. package/dist/m365/spfx/commands/project/project-upgrade.js +16 -13
  58. package/dist/m365/spfx/commands/spfx-doctor.js +15 -0
  59. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-get.js +1 -0
  60. package/dist/m365/spo/commands/file/file-copy.js +34 -55
  61. package/dist/m365/spo/commands/file/file-roleassignment-add.js +17 -54
  62. package/dist/m365/spo/commands/file/file-roleassignment-remove.js +13 -40
  63. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +5 -13
  64. package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +5 -13
  65. package/dist/m365/spo/commands/folder/folder-set.js +4 -0
  66. package/dist/m365/spo/commands/folder/folder-sharinglink-add.js +143 -0
  67. package/dist/m365/spo/commands/folder/folder-sharinglink-clear.js +111 -0
  68. package/dist/m365/spo/commands/folder/folder-sharinglink-remove.js +95 -0
  69. package/dist/m365/spo/commands/list/list-get.js +17 -4
  70. package/dist/m365/spo/commands/list/list-list.js +4 -1
  71. package/dist/m365/spo/commands/page/page-remove.js +37 -16
  72. package/dist/m365/spo/commands/page/page-section-add.js +185 -34
  73. package/dist/m365/spo/commands/site/SiteAdmin.js +2 -0
  74. package/dist/m365/spo/commands/site/site-admin-add.js +252 -0
  75. package/dist/m365/spo/commands/site/site-admin-list.js +10 -36
  76. package/dist/m365/spo/commands/site/site-admin-remove.js +194 -0
  77. package/dist/m365/spo/commands/site/site-appcatalog-remove.js +24 -48
  78. package/dist/m365/spo/commands/site/site-get.js +12 -16
  79. package/dist/m365/spo/commands/site/site-remove.js +7 -1
  80. package/dist/m365/spo/commands/site/site-sharingpermission-set.js +68 -0
  81. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-restore.js +22 -2
  82. package/dist/m365/spo/commands/user/user-get.js +67 -9
  83. package/dist/m365/spo/commands.js +7 -0
  84. package/dist/m365/spp/commands/contentcenter/contentcenter-list.js +56 -0
  85. package/dist/m365/spp/commands.js +5 -0
  86. package/dist/m365/teams/MeetingTranscript.js +2 -0
  87. package/dist/m365/teams/commands/meeting/meeting-transcript-get.js +152 -0
  88. package/dist/m365/teams/commands.js +1 -0
  89. package/dist/m365/viva/commands/engage/Community.js +2 -0
  90. package/dist/m365/viva/commands/engage/engage-community-list.js +28 -0
  91. package/dist/m365/viva/commands/engage/engage-group-list.js +5 -0
  92. package/dist/m365/viva/commands/engage/engage-group-user-add.js +5 -0
  93. package/dist/m365/viva/commands/engage/engage-group-user-remove.js +5 -0
  94. package/dist/m365/viva/commands/engage/engage-message-add.js +5 -0
  95. package/dist/m365/viva/commands/engage/engage-message-get.js +5 -0
  96. package/dist/m365/viva/commands/engage/engage-message-like-set.js +5 -0
  97. package/dist/m365/viva/commands/engage/engage-message-list.js +5 -0
  98. package/dist/m365/viva/commands/engage/engage-message-remove.js +5 -0
  99. package/dist/m365/viva/commands/engage/engage-network-list.js +5 -0
  100. package/dist/m365/viva/commands/engage/engage-report-activitycounts.js +8 -0
  101. package/dist/m365/viva/commands/engage/engage-report-activityusercounts.js +8 -0
  102. package/dist/m365/viva/commands/engage/engage-report-activityuserdetail.js +8 -0
  103. package/dist/m365/viva/commands/engage/engage-report-deviceusagedistributionusercounts.js +8 -0
  104. package/dist/m365/viva/commands/engage/engage-report-deviceusageusercounts.js +8 -0
  105. package/dist/m365/viva/commands/engage/engage-report-deviceusageuserdetail.js +8 -0
  106. package/dist/m365/viva/commands/engage/engage-report-groupsactivitycounts.js +8 -0
  107. package/dist/m365/viva/commands/engage/engage-report-groupsactivitydetail.js +8 -0
  108. package/dist/m365/viva/commands/engage/engage-report-groupsactivitygroupcounts.js +8 -0
  109. package/dist/m365/viva/commands/engage/engage-search.js +5 -0
  110. package/dist/m365/viva/commands/engage/engage-user-get.js +5 -0
  111. package/dist/m365/viva/commands/engage/engage-user-list.js +5 -0
  112. package/dist/m365/viva/commands/engage/yammerCommands.js +25 -0
  113. package/dist/m365/viva/commands.js +1 -0
  114. package/dist/request.js +46 -61
  115. package/dist/settingsNames.js +7 -1
  116. package/dist/utils/driveUtil.js +51 -0
  117. package/dist/utils/entraApp.js +283 -0
  118. package/dist/utils/spo.js +58 -66
  119. package/dist/utils/timersUtil.js +12 -0
  120. package/dist/utils/urlUtil.js +8 -0
  121. package/dist/utils/zod.js +1 -1
  122. package/docs/docs/_clisettings.mdx +6 -0
  123. package/docs/docs/cmd/app/permission/permission-add.mdx +5 -5
  124. package/docs/docs/cmd/cli/cli-consent.mdx +1 -1
  125. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-add.mdx +12 -12
  126. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-get.mdx +14 -14
  127. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-list.mdx +5 -5
  128. package/docs/docs/cmd/entra/group/group-user-list.mdx +7 -7
  129. package/docs/docs/cmd/entra/m365group/m365group-conversation-post-list.mdx +5 -5
  130. package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-list.mdx +3 -3
  131. package/docs/docs/cmd/entra/m365group/m365group-report-activitystorage.mdx +2 -2
  132. package/docs/docs/cmd/entra/m365group/m365group-user-list.mdx +1 -1
  133. package/docs/docs/cmd/external/item/item-add.mdx +3 -3
  134. package/docs/docs/cmd/file/file-move.mdx +79 -0
  135. package/docs/docs/cmd/flow/recyclebinitem/recyclebinitem-list.mdx +132 -0
  136. package/docs/docs/cmd/flow/recyclebinitem/recyclebinitem-restore.mdx +55 -0
  137. package/docs/docs/cmd/onenote/notebook/notebook-add.mdx +169 -0
  138. package/docs/docs/cmd/outlook/message/message-get.mdx +5 -5
  139. package/docs/docs/cmd/setup.mdx +16 -3
  140. package/docs/docs/cmd/spfx/project/project-github-workflow-add.mdx +12 -11
  141. package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-get.mdx +5 -6
  142. package/docs/docs/cmd/spo/cdn/cdn-get.mdx +1 -1
  143. package/docs/docs/cmd/spo/cdn/cdn-origin-add.mdx +1 -1
  144. package/docs/docs/cmd/spo/cdn/cdn-origin-list.mdx +1 -1
  145. package/docs/docs/cmd/spo/cdn/cdn-origin-remove.mdx +1 -1
  146. package/docs/docs/cmd/spo/cdn/cdn-policy-list.mdx +1 -1
  147. package/docs/docs/cmd/spo/cdn/cdn-policy-set.mdx +1 -1
  148. package/docs/docs/cmd/spo/externaluser/externaluser-list.mdx +1 -1
  149. package/docs/docs/cmd/spo/file/file-copy.mdx +12 -119
  150. package/docs/docs/cmd/spo/folder/folder-set.mdx +6 -0
  151. package/docs/docs/cmd/spo/folder/folder-sharinglink-add.mdx +125 -0
  152. package/docs/docs/cmd/spo/folder/folder-sharinglink-clear.mdx +50 -0
  153. package/docs/docs/cmd/spo/folder/folder-sharinglink-remove.mdx +50 -0
  154. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-get.mdx +1 -1
  155. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-set.mdx +1 -1
  156. package/docs/docs/cmd/spo/homesite/homesite-remove.mdx +1 -1
  157. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-get.mdx +1 -1
  158. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-remove.mdx +1 -1
  159. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-set.mdx +1 -1
  160. package/docs/docs/cmd/spo/list/list-list.mdx +7 -5
  161. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-add.mdx +1 -1
  162. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-list.mdx +1 -1
  163. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-remove.mdx +1 -1
  164. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-list.mdx +1 -1
  165. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-remove.mdx +1 -1
  166. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-set.mdx +1 -1
  167. package/docs/docs/cmd/spo/page/page-remove.mdx +30 -12
  168. package/docs/docs/cmd/spo/page/page-section-add.mdx +57 -2
  169. package/docs/docs/cmd/spo/site/site-admin-add.mdx +67 -0
  170. package/docs/docs/cmd/spo/site/site-admin-list.mdx +64 -12
  171. package/docs/docs/cmd/spo/site/site-admin-remove.mdx +67 -0
  172. package/docs/docs/cmd/spo/site/site-appcatalog-add.mdx +1 -1
  173. package/docs/docs/cmd/spo/site/site-appcatalog-remove.mdx +3 -12
  174. package/docs/docs/cmd/spo/site/site-commsite-enable.mdx +1 -1
  175. package/docs/docs/cmd/spo/site/site-list.mdx +6 -4
  176. package/docs/docs/cmd/spo/site/site-remove.mdx +3 -0
  177. package/docs/docs/cmd/spo/site/site-set.mdx +1 -1
  178. package/docs/docs/cmd/spo/site/site-sharingpermission-set.mdx +58 -0
  179. package/docs/docs/cmd/spo/storageentity/storageentity-remove.mdx +1 -1
  180. package/docs/docs/cmd/spo/storageentity/storageentity-set.mdx +1 -1
  181. package/docs/docs/cmd/spo/tenant/tenant-appcatalog-add.mdx +1 -1
  182. package/docs/docs/cmd/spo/tenant/tenant-appcatalogurl-get.mdx +1 -1
  183. package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-list.mdx +1 -1
  184. package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-remove.mdx +1 -1
  185. package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-restore.mdx +49 -2
  186. package/docs/docs/cmd/spo/tenant/tenant-settings-list.mdx +1 -1
  187. package/docs/docs/cmd/spo/theme/theme-apply.mdx +1 -1
  188. package/docs/docs/cmd/spo/theme/theme-get.mdx +1 -1
  189. package/docs/docs/cmd/spo/theme/theme-list.mdx +1 -1
  190. package/docs/docs/cmd/spo/theme/theme-remove.mdx +1 -1
  191. package/docs/docs/cmd/spo/theme/theme-set.mdx +1 -1
  192. package/docs/docs/cmd/spo/user/user-get.mdx +35 -9
  193. package/docs/docs/cmd/spp/contentcenter/contentcenter-list.mdx +287 -0
  194. package/docs/docs/cmd/teams/meeting/meeting-transcript-get.mdx +132 -0
  195. package/docs/docs/cmd/viva/engage/engage-community-list.mdx +81 -0
  196. package/npm-shrinkwrap.json +205 -377
  197. package/package.json +16 -17
@@ -31,6 +31,9 @@ class EntraM365GroupUserListCommand extends GraphCommand {
31
31
  async commandAction(logger, args) {
32
32
  await this.showDeprecationWarning(logger, aadCommands.M365GROUP_USER_LIST, commands.M365GROUP_USER_LIST);
33
33
  try {
34
+ if (args.options.role === 'Guest') {
35
+ await this.warn(logger, `Value 'Guest' for the option role is deprecated. Use --filter "userType eq 'Guest'" instead.`);
36
+ }
34
37
  const groupId = await this.getGroupId(args.options, logger);
35
38
  const isUnifiedGroup = await entraGroup.isUnifiedGroup(groupId);
36
39
  if (!isUnifiedGroup) {
@@ -39,9 +42,9 @@ class EntraM365GroupUserListCommand extends GraphCommand {
39
42
  let users = [];
40
43
  if (!args.options.role || args.options.role === 'Owner') {
41
44
  const owners = await this.getUsers(args.options, 'Owners', groupId, logger);
42
- owners.forEach(owner => users.push({ ...owner, roles: ['Owner'] }));
45
+ owners.forEach(owner => users.push({ ...owner, roles: ['Owner'], userType: 'Owner' }));
43
46
  }
44
- if (!args.options.role || args.options.role === 'Member') {
47
+ if (!args.options.role || args.options.role === 'Member' || args.options.role === 'Guest') {
45
48
  const members = await this.getUsers(args.options, 'Members', groupId, logger);
46
49
  members.forEach((member) => {
47
50
  const user = users.find((u) => u.id === member.id);
@@ -54,7 +57,7 @@ class EntraM365GroupUserListCommand extends GraphCommand {
54
57
  });
55
58
  }
56
59
  if (args.options.role) {
57
- users = users.filter(i => i.roles.indexOf(args.options.role) > -1);
60
+ users = users.filter(i => i.userType === args.options.role);
58
61
  }
59
62
  await logger.log(users);
60
63
  }
@@ -125,7 +128,7 @@ _EntraM365GroupUserListCommand_instances = new WeakSet(), _EntraM365GroupUserLis
125
128
  option: "-n, --groupDisplayName [groupDisplayName]"
126
129
  }, {
127
130
  option: "-r, --role [type]",
128
- autocomplete: ["Owner", "Member"]
131
+ autocomplete: ["Owner", "Member", "Guest"]
129
132
  }, {
130
133
  option: "-p, --properties [properties]"
131
134
  }, {
@@ -141,8 +144,8 @@ _EntraM365GroupUserListCommand_instances = new WeakSet(), _EntraM365GroupUserLis
141
144
  return `${args.options.groupId} is not a valid GUID`;
142
145
  }
143
146
  if (args.options.role) {
144
- if (['Owner', 'Member'].indexOf(args.options.role) === -1) {
145
- return `${args.options.role} is not a valid role value. Allowed values Owner|Member`;
147
+ if (['Owner', 'Member', 'Guest'].indexOf(args.options.role) === -1) {
148
+ return `${args.options.role} is not a valid role value. Allowed values Owner|Member|Guest`;
146
149
  }
147
150
  }
148
151
  return true;
@@ -45,8 +45,7 @@ class ExternalItemAddCommand extends GraphCommand {
45
45
  properties: {}
46
46
  };
47
47
  // we need to rewrite the @odata properties to the correct format
48
- // because . in @odata.type is interpreted by minimist as a child property
49
- // we also need to extract multiple values for collections into arrays
48
+ // to extract multiple values for collections into arrays
50
49
  this.rewriteCollectionProperties(args.options);
51
50
  this.addUnknownOptionsToPayload(requestBody.properties, args.options);
52
51
  const requestOptions = {
@@ -81,11 +80,9 @@ class ExternalItemAddCommand extends GraphCommand {
81
80
  }
82
81
  rewriteCollectionProperties(options) {
83
82
  Object.getOwnPropertyNames(options).forEach(name => {
84
- if (!name.endsWith('@odata')) {
83
+ if (!name.includes('@odata')) {
85
84
  return;
86
85
  }
87
- options[`${name}.type`] = options[name].type;
88
- delete options[name];
89
86
  // convert the value of a collection to an array
90
87
  const nameWithoutOData = name.substring(0, name.indexOf('@odata'));
91
88
  if (options[nameWithoutOData]) {
@@ -0,0 +1,135 @@
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 _FileMoveCommand_instances, _FileMoveCommand_initTelemetry, _FileMoveCommand_initOptions, _FileMoveCommand_initValidators;
7
+ import GraphCommand from '../../base/GraphCommand.js';
8
+ import { setTimeout } from 'timers/promises';
9
+ import commands from '../commands.js';
10
+ import request from '../../../request.js';
11
+ import { spo } from '../../../utils/spo.js';
12
+ import { urlUtil } from '../../../utils/urlUtil.js';
13
+ import { driveUtil } from '../../../utils/driveUtil.js';
14
+ import { validation } from '../../../utils/validation.js';
15
+ class FileMoveCommand extends GraphCommand {
16
+ get name() {
17
+ return commands.MOVE;
18
+ }
19
+ get description() {
20
+ return 'Moves a file to another location using the Microsoft Graph';
21
+ }
22
+ constructor() {
23
+ super();
24
+ _FileMoveCommand_instances.add(this);
25
+ this.pollingInterval = 10000;
26
+ this.nameConflictBehaviorOptions = ['fail', 'replace', 'rename'];
27
+ __classPrivateFieldGet(this, _FileMoveCommand_instances, "m", _FileMoveCommand_initTelemetry).call(this);
28
+ __classPrivateFieldGet(this, _FileMoveCommand_instances, "m", _FileMoveCommand_initOptions).call(this);
29
+ __classPrivateFieldGet(this, _FileMoveCommand_instances, "m", _FileMoveCommand_initValidators).call(this);
30
+ }
31
+ async commandAction(logger, args) {
32
+ try {
33
+ const { webUrl, sourceUrl, targetUrl, nameConflictBehavior, newName, verbose } = args.options;
34
+ const sourcePath = this.getAbsoluteUrl(webUrl, sourceUrl);
35
+ const destinationPath = this.getAbsoluteUrl(webUrl, targetUrl);
36
+ const { driveId, itemId } = await this.getDriveIdAndItemId(webUrl, sourcePath, sourceUrl, logger, verbose);
37
+ const targetSiteUrl = urlUtil.getTargetSiteAbsoluteUrl(webUrl, targetUrl);
38
+ const targetFolderUrl = this.getAbsoluteUrl(targetSiteUrl, targetUrl);
39
+ const { driveId: targetDriveId, itemId: targetItemId } = await this.getDriveIdAndItemId(targetSiteUrl, targetFolderUrl, targetUrl, logger, verbose);
40
+ const requestOptions = this.getRequestOptions(driveId, itemId, targetDriveId, targetItemId, newName, sourcePath, nameConflictBehavior);
41
+ if (verbose) {
42
+ await logger.logToStderr(`Moving file '${sourcePath}' to '${destinationPath}'...`);
43
+ }
44
+ if (driveId === targetDriveId) {
45
+ await request.patch(requestOptions);
46
+ }
47
+ else {
48
+ const response = await request.post(requestOptions);
49
+ await this.waitUntilCopyOperationCompleted(response.headers.location, logger);
50
+ const itemUrl = `${this.resource}/v1.0/drives/${driveId}/items/${itemId}`;
51
+ await request.delete({ url: itemUrl, headers: requestOptions.headers });
52
+ }
53
+ }
54
+ catch (err) {
55
+ this.handleRejectedODataJsonPromise(err);
56
+ }
57
+ }
58
+ getAbsoluteUrl(webUrl, url) {
59
+ return url.startsWith('https://') ? url : urlUtil.getAbsoluteUrl(webUrl, url);
60
+ }
61
+ async getDriveIdAndItemId(webUrl, folderUrl, sourceUrl, logger, verbose) {
62
+ const siteId = await spo.getSiteId(webUrl, logger, verbose);
63
+ const drive = await driveUtil.getDriveByUrl(siteId, new URL(folderUrl));
64
+ const itemId = await driveUtil.getDriveItemId(drive, new URL(folderUrl));
65
+ return { driveId: drive.id, itemId };
66
+ }
67
+ getRequestOptions(sourceDriveId, sourceItemId, targetDriveId, targetItemId, newName, sourcePath, nameConflictBehavior) {
68
+ const apiUrl = sourceDriveId === targetDriveId
69
+ ? `${this.resource}/v1.0/drives/${sourceDriveId}/items/${sourceItemId}`
70
+ : `${this.resource}/v1.0/drives/${sourceDriveId}/items/${sourceItemId}/copy`;
71
+ const queryParameters = nameConflictBehavior && nameConflictBehavior !== 'fail'
72
+ ? `@microsoft.graph.conflictBehavior=${nameConflictBehavior}`
73
+ : '';
74
+ const urlWithQuery = `${apiUrl}${queryParameters ? `?${queryParameters}` : ''}`;
75
+ const requestOptions = {
76
+ url: urlWithQuery,
77
+ headers: { accept: 'application/json;odata.metadata=none' },
78
+ responseType: 'json',
79
+ fullResponse: true,
80
+ data: { parentReference: { driveId: targetDriveId, id: targetItemId } }
81
+ };
82
+ if (newName) {
83
+ const sourceFileName = sourcePath.substring(sourcePath.lastIndexOf('/') + 1);
84
+ const sourceFileExtension = sourceFileName.includes('.') ? sourceFileName.substring(sourceFileName.lastIndexOf('.')) : '';
85
+ const newNameExtension = newName.includes('.') ? newName.substring(newName.lastIndexOf('.')) : '';
86
+ requestOptions.data.name = newNameExtension ? `${newName.replace(newNameExtension, "")}${sourceFileExtension}` : `${newName}${sourceFileExtension}`;
87
+ }
88
+ return requestOptions;
89
+ }
90
+ async waitUntilCopyOperationCompleted(monitorUrl, logger) {
91
+ const requestOptions = {
92
+ url: monitorUrl,
93
+ responseType: 'json'
94
+ };
95
+ const response = await request.get(requestOptions);
96
+ if (response.status === 'completed') {
97
+ if (this.verbose) {
98
+ await logger.logToStderr('Copy operation completed succesfully. Returning...');
99
+ }
100
+ return;
101
+ }
102
+ else if (response.status === 'failed') {
103
+ throw response.error.message;
104
+ }
105
+ else {
106
+ if (this.verbose) {
107
+ await logger.logToStderr(`Still copying. Retrying in ${this.pollingInterval / 1000} seconds...`);
108
+ }
109
+ await setTimeout(this.pollingInterval);
110
+ await this.waitUntilCopyOperationCompleted(monitorUrl, logger);
111
+ }
112
+ }
113
+ }
114
+ _FileMoveCommand_instances = new WeakSet(), _FileMoveCommand_initTelemetry = function _FileMoveCommand_initTelemetry() {
115
+ this.telemetry.push((args) => {
116
+ Object.assign(this.telemetryProperties, {
117
+ webUrl: typeof args.options.webUrl !== 'undefined',
118
+ sourceUrl: typeof args.options.sourceUrl !== 'undefined',
119
+ targetUrl: typeof args.options.targetUrl !== 'undefined',
120
+ newName: typeof args.options.newName !== 'undefined',
121
+ nameConflictBehavior: typeof args.options.nameConflictBehavior !== 'undefined'
122
+ });
123
+ });
124
+ }, _FileMoveCommand_initOptions = function _FileMoveCommand_initOptions() {
125
+ this.options.unshift({ option: '-u, --webUrl <webUrl>' }, { option: '-s, --sourceUrl <sourceUrl>' }, { option: '-t, --targetUrl <targetUrl>' }, { option: '--newName [newName]' }, { option: '--nameConflictBehavior [nameConflictBehavior]', autocomplete: this.nameConflictBehaviorOptions });
126
+ }, _FileMoveCommand_initValidators = function _FileMoveCommand_initValidators() {
127
+ this.validators.push(async (args) => {
128
+ if (args.options.nameConflictBehavior && this.nameConflictBehaviorOptions.indexOf(args.options.nameConflictBehavior) === -1) {
129
+ return `${args.options.nameConflictBehavior} is not a valid nameConflictBehavior value. Allowed values: ${this.nameConflictBehaviorOptions.join(', ')}.`;
130
+ }
131
+ return validation.isValidSharePointUrl(args.options.webUrl);
132
+ });
133
+ };
134
+ export default new FileMoveCommand();
135
+ //# sourceMappingURL=file-move.js.map
@@ -3,6 +3,7 @@ export default {
3
3
  ADD: `${prefix} add`,
4
4
  CONVERT_PDF: `${prefix} convert pdf`,
5
5
  COPY: `${prefix} copy`,
6
- LIST: `${prefix} list`
6
+ LIST: `${prefix} list`,
7
+ MOVE: `${prefix} move`
7
8
  };
8
9
  //# sourceMappingURL=commands.js.map
@@ -28,7 +28,7 @@ class FlowEnvironmentGetCommand extends PowerAutomateCommand {
28
28
  if (this.verbose) {
29
29
  await logger.logToStderr(`Retrieving information about Microsoft Flow environment ${args.options.name ?? ''}...`);
30
30
  }
31
- let requestUrl = `${this.resource}/providers/Microsoft.ProcessSimple/environments/`;
31
+ let requestUrl = `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/environments/`;
32
32
  if (args.options.name) {
33
33
  requestUrl += `${formatting.encodeQueryParameter(args.options.name)}`;
34
34
  }
@@ -16,7 +16,7 @@ class FlowEnvironmentListCommand extends PowerAutomateCommand {
16
16
  await logger.logToStderr(`Retrieving list of Microsoft Flow environments...`);
17
17
  }
18
18
  try {
19
- const res = await odata.getAllItems(`${this.resource}/providers/Microsoft.ProcessSimple/environments?api-version=2016-11-01`);
19
+ const res = await odata.getAllItems(`${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/environments?api-version=2016-11-01`);
20
20
  if (res.length > 0) {
21
21
  if (args.options.output !== 'json') {
22
22
  res.forEach(e => {
@@ -26,7 +26,7 @@ class FlowDisableCommand extends PowerAutomateCommand {
26
26
  await logger.logToStderr(`Disables Microsoft Flow ${args.options.name}...`);
27
27
  }
28
28
  const requestOptions = {
29
- url: `${this.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}/stop?api-version=2016-11-01`,
29
+ url: `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}/stop?api-version=2016-11-01`,
30
30
  headers: {
31
31
  accept: 'application/json'
32
32
  },
@@ -26,7 +26,7 @@ class FlowEnableCommand extends PowerAutomateCommand {
26
26
  await logger.logToStderr(`Enables Microsoft Flow ${args.options.name}...`);
27
27
  }
28
28
  const requestOptions = {
29
- url: `${this.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}/start?api-version=2016-11-01`,
29
+ url: `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}/start?api-version=2016-11-01`,
30
30
  headers: {
31
31
  accept: 'application/json'
32
32
  },
@@ -11,6 +11,7 @@ import { formatting } from '../../../utils/formatting.js';
11
11
  import { validation } from '../../../utils/validation.js';
12
12
  import PowerPlatformCommand from '../../base/PowerPlatformCommand.js';
13
13
  import commands from '../commands.js';
14
+ import PowerAutomateCommand from '../../base/PowerAutomateCommand.js';
14
15
  class FlowExportCommand extends PowerPlatformCommand {
15
16
  get name() {
16
17
  return commands.EXPORT;
@@ -27,15 +28,15 @@ class FlowExportCommand extends PowerPlatformCommand {
27
28
  }
28
29
  async commandAction(logger, args) {
29
30
  let filenameFromApi = '';
30
- const formatArgument = args.options.format ? args.options.format.toLowerCase() : '';
31
+ const formatArgument = args.options.format?.toLowerCase() || '';
31
32
  if (this.verbose) {
32
33
  await logger.logToStderr(`Retrieving package resources for Microsoft Flow ${args.options.name}...`);
33
34
  }
34
35
  try {
35
36
  let res;
36
37
  if (formatArgument === 'json') {
37
- if (this.debug) {
38
- await logger.logToStderr('format = json, skipping listing package resources step');
38
+ if (this.verbose) {
39
+ await logger.logToStderr('format = json, skipping listing package resources step.');
39
40
  }
40
41
  }
41
42
  else {
@@ -61,7 +62,7 @@ class FlowExportCommand extends PowerPlatformCommand {
61
62
  }
62
63
  let requestOptions = {
63
64
  url: formatArgument === 'json' ?
64
- `https://management.azure.com/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}?api-version=2016-11-01`
65
+ `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}?api-version=2016-11-01`
65
66
  : `${this.resource}/providers/Microsoft.BusinessAppPlatform/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/exportPackage?api-version=2016-11-01`,
66
67
  headers: {
67
68
  accept: 'application/json'
@@ -76,17 +77,17 @@ class FlowExportCommand extends PowerPlatformCommand {
76
77
  ? res.resources[key].suggestedCreationType = 'Update'
77
78
  : res.resources[key].suggestedCreationType = 'Existing';
78
79
  });
79
- requestOptions['data'] = {
80
- "includedResourceIds": [
80
+ requestOptions.data = {
81
+ includedResourceIds: [
81
82
  `/providers/Microsoft.Flow/flows/${args.options.name}`
82
83
  ],
83
- "details": {
84
- "displayName": args.options.packageDisplayName,
85
- "description": args.options.packageDescription,
86
- "creator": args.options.packageCreatedBy,
87
- "sourceEnvironment": args.options.packageSourceEnvironment
84
+ details: {
85
+ displayName: args.options.packageDisplayName,
86
+ description: args.options.packageDescription,
87
+ creator: args.options.packageCreatedBy,
88
+ sourceEnvironment: args.options.packageSourceEnvironment
88
89
  },
89
- "resources": res.resources
90
+ resources: res.resources
90
91
  };
91
92
  }
92
93
  res = formatArgument === 'json' ? await request.get(requestOptions) : await request.post(requestOptions);
@@ -99,13 +100,13 @@ class FlowExportCommand extends PowerPlatformCommand {
99
100
  // Replace all illegal characters from the file name
100
101
  const illegalCharsRegEx = /[\\\/:*?"<>|]/g;
101
102
  filenameFromApi = filenameFromApi.replace(illegalCharsRegEx, '_');
102
- if (this.debug) {
103
- await logger.logToStderr(`Filename from PowerApps API: ${filenameFromApi}`);
103
+ if (this.verbose) {
104
+ await logger.logToStderr(`Filename from PowerApps API: ${filenameFromApi}.`);
104
105
  await logger.logToStderr('');
105
106
  }
106
107
  requestOptions = {
107
108
  url: formatArgument === 'json' ?
108
- `https://management.azure.com/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}/exportToARMTemplate?api-version=2016-11-01`
109
+ `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}/exportToARMTemplate?api-version=2016-11-01`
109
110
  : downloadFileUrl,
110
111
  // Set responseType to arraybuffer, otherwise binary data will be encoded
111
112
  // to utf8 and binary data is corrupt
@@ -124,7 +125,7 @@ class FlowExportCommand extends PowerPlatformCommand {
124
125
  fs.writeFileSync(path, file, 'binary');
125
126
  if (!args.options.path || this.verbose) {
126
127
  if (this.verbose) {
127
- await logger.logToStderr(`File saved to path '${path}'`);
128
+ await logger.logToStderr(`File saved to path '${path}'.`);
128
129
  }
129
130
  else {
130
131
  await logger.log(path);
@@ -29,7 +29,7 @@ class FlowGetCommand extends PowerAutomateCommand {
29
29
  await logger.logToStderr(`Retrieving information about Microsoft Flow ${args.options.name}...`);
30
30
  }
31
31
  const requestOptions = {
32
- url: `${this.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}?api-version=2016-11-01&$expand=swagger,properties.connectionreferences.apidefinition,properties.definitionsummary.operations.apioperation,operationDefinition,plan,properties.throttleData,properties.estimatedsuspensiondata,properties.licenseData`,
32
+ url: `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}?api-version=2016-11-01&$expand=swagger,properties.connectionreferences.apidefinition,properties.definitionsummary.operations.apioperation,operationDefinition,plan,properties.throttleData,properties.estimatedsuspensiondata,properties.licenseData`,
33
33
  headers: {
34
34
  accept: 'application/json'
35
35
  },
@@ -67,7 +67,7 @@ class FlowListCommand extends PowerAutomateCommand {
67
67
  }
68
68
  }
69
69
  getApiUrl(environmentName, asAdmin, includeSolutionFlows, filter) {
70
- const baseEndpoint = `${this.resource}/providers/Microsoft.ProcessSimple`;
70
+ const baseEndpoint = `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple`;
71
71
  const environmentSegment = `/environments/${formatting.encodeQueryParameter(environmentName)}`;
72
72
  const adminSegment = `/scopes/admin${environmentSegment}/v2`;
73
73
  const flowsEndpoint = '/flows?api-version=2016-11-01';
@@ -30,7 +30,7 @@ class FlowRemoveCommand extends PowerAutomateCommand {
30
30
  }
31
31
  const removeFlow = async () => {
32
32
  const requestOptions = {
33
- url: `${this.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}?api-version=2016-11-01`,
33
+ url: `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.name)}?api-version=2016-11-01`,
34
34
  fullResponse: true,
35
35
  headers: {
36
36
  accept: 'application/json'
@@ -52,7 +52,7 @@ class FlowOwnerEnsureCommand extends PowerAutomateCommand {
52
52
  type = 'Group';
53
53
  }
54
54
  const requestOptions = {
55
- url: `${this.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/modifyPermissions?api-version=2016-11-01`,
55
+ url: `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/modifyPermissions?api-version=2016-11-01`,
56
56
  headers: {
57
57
  accept: 'application/json'
58
58
  },
@@ -32,7 +32,7 @@ class FlowOwnerListCommand extends PowerAutomateCommand {
32
32
  if (this.verbose) {
33
33
  await logger.logToStderr(`Listing owners for flow ${args.options.flowName} in environment ${args.options.environmentName}`);
34
34
  }
35
- const response = await odata.getAllItems(`${this.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/permissions?api-version=2016-11-01`);
35
+ const response = await odata.getAllItems(`${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/permissions?api-version=2016-11-01`);
36
36
  if (!cli.shouldTrimOutput(args.options.output)) {
37
37
  await logger.log(response);
38
38
  }
@@ -47,7 +47,7 @@ class FlowOwnerRemoveCommand extends PowerAutomateCommand {
47
47
  idToRemove = await entraGroup.getGroupIdByDisplayName(args.options.groupName);
48
48
  }
49
49
  const requestOptions = {
50
- url: `${this.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/modifyPermissions?api-version=2016-11-01`,
50
+ url: `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/modifyPermissions?api-version=2016-11-01`,
51
51
  headers: {
52
52
  accept: 'application/json'
53
53
  },
@@ -0,0 +1,47 @@
1
+ import PowerAutomateCommand from '../../../base/PowerAutomateCommand.js';
2
+ import { globalOptionsZod } from '../../../../Command.js';
3
+ import { z } from 'zod';
4
+ import { zod } from '../../../../utils/zod.js';
5
+ import commands from '../../commands.js';
6
+ import { formatting } from '../../../../utils/formatting.js';
7
+ import { odata } from '../../../../utils/odata.js';
8
+ import { cli } from '../../../../cli/cli.js';
9
+ const options = globalOptionsZod
10
+ .extend({
11
+ environmentName: zod.alias('e', z.string())
12
+ })
13
+ .strict();
14
+ class FlowRecycleBinItemListCommand extends PowerAutomateCommand {
15
+ get name() {
16
+ return commands.RECYCLEBINITEM_LIST;
17
+ }
18
+ get description() {
19
+ return 'Lists all soft-deleted Power Automate flows within an environment';
20
+ }
21
+ defaultProperties() {
22
+ return ['name', 'displayName'];
23
+ }
24
+ get schema() {
25
+ return options;
26
+ }
27
+ async commandAction(logger, args) {
28
+ try {
29
+ if (this.verbose) {
30
+ await logger.logToStderr(`Getting list of soft-deleted flows in environment ${args.options.environmentName}...`);
31
+ }
32
+ const flows = await odata.getAllItems(`${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/scopes/admin/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/v2/flows?api-version=2016-11-01&include=softDeletedFlows`);
33
+ const deletedFlows = flows.filter(flow => flow.properties.state === 'Deleted');
34
+ if (cli.shouldTrimOutput(args.options.output)) {
35
+ deletedFlows.forEach(flow => {
36
+ flow.displayName = flow.properties.displayName;
37
+ });
38
+ }
39
+ await logger.log(deletedFlows);
40
+ }
41
+ catch (err) {
42
+ this.handleRejectedODataJsonPromise(err);
43
+ }
44
+ }
45
+ }
46
+ export default new FlowRecycleBinItemListCommand();
47
+ //# sourceMappingURL=recyclebinitem-list.js.map
@@ -0,0 +1,48 @@
1
+ import PowerAutomateCommand from '../../../base/PowerAutomateCommand.js';
2
+ import { globalOptionsZod } from '../../../../Command.js';
3
+ import { z } from 'zod';
4
+ import { zod } from '../../../../utils/zod.js';
5
+ import commands from '../../commands.js';
6
+ import { validation } from '../../../../utils/validation.js';
7
+ import { formatting } from '../../../../utils/formatting.js';
8
+ import request from '../../../../request.js';
9
+ const options = globalOptionsZod
10
+ .extend({
11
+ environmentName: zod.alias('e', z.string()),
12
+ flowName: zod.alias('n', z.string()
13
+ .refine(name => validation.isValidGuid(name), name => ({
14
+ message: `'${name}' is not a valid GUID.`
15
+ })))
16
+ })
17
+ .strict();
18
+ class FlowRecycleBinItemRestoreCommand extends PowerAutomateCommand {
19
+ get name() {
20
+ return commands.RECYCLEBINITEM_RESTORE;
21
+ }
22
+ get description() {
23
+ return 'Restores a soft-deleted Power Automate flow';
24
+ }
25
+ get schema() {
26
+ return options;
27
+ }
28
+ async commandAction(logger, args) {
29
+ try {
30
+ if (this.verbose) {
31
+ await logger.logToStderr(`Restoring soft-deleted flow ${args.options.flowName} from environment ${args.options.environmentName}...`);
32
+ }
33
+ const requestOptions = {
34
+ url: `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/scopes/admin/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${args.options.flowName}/restore?api-version=2016-11-01`,
35
+ headers: {
36
+ accept: 'application/json'
37
+ },
38
+ responseType: 'json'
39
+ };
40
+ await request.post(requestOptions);
41
+ }
42
+ catch (err) {
43
+ this.handleRejectedODataJsonPromise(err);
44
+ }
45
+ }
46
+ }
47
+ export default new FlowRecycleBinItemRestoreCommand();
48
+ //# sourceMappingURL=recyclebinitem-restore.js.map
@@ -30,7 +30,7 @@ class FlowRunCancelCommand extends PowerAutomateCommand {
30
30
  }
31
31
  const cancelFlow = async () => {
32
32
  const requestOptions = {
33
- url: `${this.resource}/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/runs/${formatting.encodeQueryParameter(args.options.name)}/cancel?api-version=2016-11-01`,
33
+ url: `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/runs/${formatting.encodeQueryParameter(args.options.name)}/cancel?api-version=2016-11-01`,
34
34
  headers: {
35
35
  accept: 'application/json'
36
36
  },
@@ -35,7 +35,7 @@ class FlowRunGetCommand extends PowerAutomateCommand {
35
35
  }
36
36
  const actionsParameter = args.options.withActions ? '$expand=properties%2Factions&' : '';
37
37
  const requestOptions = {
38
- url: `${this.resource}/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/runs/${formatting.encodeQueryParameter(args.options.name)}?${actionsParameter}api-version=2016-11-01`,
38
+ url: `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/runs/${formatting.encodeQueryParameter(args.options.name)}?${actionsParameter}api-version=2016-11-01`,
39
39
  headers: {
40
40
  accept: 'application/json'
41
41
  },
@@ -32,7 +32,7 @@ class FlowRunListCommand extends PowerAutomateCommand {
32
32
  if (this.verbose) {
33
33
  await logger.logToStderr(`Retrieving list of runs for Microsoft Flow ${args.options.flowName}...`);
34
34
  }
35
- let url = `${this.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/runs?api-version=2016-11-01`;
35
+ let url = `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/runs?api-version=2016-11-01`;
36
36
  const filters = this.getFilters(args.options);
37
37
  if (filters.length > 0) {
38
38
  url += `&$filter=${filters.join(' and ')}`;
@@ -36,7 +36,7 @@ class FlowRunResubmitCommand extends PowerAutomateCommand {
36
36
  await logger.logToStderr(chalk.yellow(`Retrieved trigger: ${triggerName}`));
37
37
  }
38
38
  const requestOptions = {
39
- url: `${this.resource}/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/triggers/${formatting.encodeQueryParameter(triggerName)}/histories/${formatting.encodeQueryParameter(args.options.name)}/resubmit?api-version=2016-11-01`,
39
+ url: `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting.encodeQueryParameter(args.options.flowName)}/triggers/${formatting.encodeQueryParameter(triggerName)}/histories/${formatting.encodeQueryParameter(args.options.name)}/resubmit?api-version=2016-11-01`,
40
40
  headers: {
41
41
  accept: 'application/json'
42
42
  },
@@ -60,7 +60,7 @@ class FlowRunResubmitCommand extends PowerAutomateCommand {
60
60
  }
61
61
  async getTriggerName(environment, flow) {
62
62
  const requestOptions = {
63
- url: `${this.resource}/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(environment)}/flows/${formatting.encodeQueryParameter(flow)}/triggers?api-version=2016-11-01`,
63
+ url: `${PowerAutomateCommand.resource}/providers/Microsoft.ProcessSimple/environments/${formatting.encodeQueryParameter(environment)}/flows/${formatting.encodeQueryParameter(flow)}/triggers?api-version=2016-11-01`,
64
64
  headers: {
65
65
  accept: 'application/json'
66
66
  },
@@ -12,6 +12,8 @@ export default {
12
12
  OWNER_ENSURE: `${prefix} owner ensure`,
13
13
  OWNER_LIST: `${prefix} owner list`,
14
14
  OWNER_REMOVE: `${prefix} owner remove`,
15
+ RECYCLEBINITEM_LIST: `${prefix} recyclebinitem list`,
16
+ RECYCLEBINITEM_RESTORE: `${prefix} recyclebinitem restore`,
15
17
  REMOVE: `${prefix} remove`,
16
18
  RUN_CANCEL: `${prefix} run cancel`,
17
19
  RUN_GET: `${prefix} run get`,