@pnp/cli-microsoft365 7.0.0-beta.4ebf3ad → 7.0.0-beta.669444a

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 (167) hide show
  1. package/.eslintrc.cjs +1 -1
  2. package/dist/Auth.js +2 -1
  3. package/dist/Command.js +1 -1
  4. package/dist/cli/Cli.js +19 -2
  5. package/dist/m365/aad/commands/{o365group/o365group-add.js → m365group/m365group-add.js} +17 -17
  6. package/dist/m365/aad/commands/{o365group/o365group-conversation-list.js → m365group/m365group-conversation-list.js} +10 -10
  7. package/dist/m365/aad/commands/{o365group/o365group-conversation-post-list.js → m365group/m365group-conversation-post-list.js} +14 -14
  8. package/dist/m365/aad/commands/{o365group/o365group-get.js → m365group/m365group-get.js} +13 -10
  9. package/dist/m365/aad/commands/{o365group/o365group-list.js → m365group/m365group-list.js} +13 -28
  10. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-clear.js → m365group/m365group-recyclebinitem-clear.js} +15 -15
  11. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-list.js → m365group/m365group-recyclebinitem-list.js} +10 -10
  12. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-remove.js → m365group/m365group-recyclebinitem-remove.js} +14 -14
  13. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-restore.js → m365group/m365group-recyclebinitem-restore.js} +14 -14
  14. package/dist/m365/aad/commands/{o365group/o365group-remove.js → m365group/m365group-remove.js} +12 -12
  15. package/dist/m365/aad/commands/{o365group/o365group-renew.js → m365group/m365group-renew.js} +10 -10
  16. package/dist/m365/aad/commands/{o365group/o365group-report-activitycounts.js → m365group/m365group-report-activitycounts.js} +4 -4
  17. package/dist/m365/aad/commands/{o365group/o365group-report-activitydetail.js → m365group/m365group-report-activitydetail.js} +4 -4
  18. package/dist/m365/aad/commands/{o365group/o365group-report-activityfilecounts.js → m365group/m365group-report-activityfilecounts.js} +4 -4
  19. package/dist/m365/aad/commands/{o365group/o365group-report-activitygroupcounts.js → m365group/m365group-report-activitygroupcounts.js} +4 -4
  20. package/dist/m365/aad/commands/{o365group/o365group-report-activitystorage.js → m365group/m365group-report-activitystorage.js} +4 -4
  21. package/dist/m365/aad/commands/{o365group/o365group-set.js → m365group/m365group-set.js} +17 -17
  22. package/dist/m365/aad/commands/{o365group/o365group-teamify.js → m365group/m365group-teamify.js} +14 -14
  23. package/dist/m365/aad/commands/{o365group/o365group-user-add.js → m365group/m365group-user-add.js} +14 -14
  24. package/dist/m365/aad/commands/{o365group/o365group-user-list.js → m365group/m365group-user-list.js} +12 -12
  25. package/dist/m365/aad/commands/{o365group/o365group-user-remove.js → m365group/m365group-user-remove.js} +14 -14
  26. package/dist/m365/aad/commands/{o365group/o365group-user-set.js → m365group/m365group-user-set.js} +15 -15
  27. package/dist/m365/aad/commands.js +22 -22
  28. package/dist/m365/cli/commands/config/config-list.js +16 -0
  29. package/dist/m365/cli/commands.js +1 -0
  30. package/dist/m365/pa/commands/app/app-permission-ensure.js +162 -0
  31. package/dist/m365/pa/commands/app/app-permission-list.js +2 -2
  32. package/dist/m365/pa/commands/app/app-permission-remove.js +153 -0
  33. package/dist/m365/pa/commands.js +2 -0
  34. package/dist/m365/planner/commands/bucket/bucket-add.js +2 -2
  35. package/dist/m365/planner/commands/bucket/bucket-get.js +2 -2
  36. package/dist/m365/planner/commands/bucket/bucket-list.js +2 -2
  37. package/dist/m365/planner/commands/bucket/bucket-remove.js +2 -2
  38. package/dist/m365/planner/commands/bucket/bucket-set.js +2 -2
  39. package/dist/m365/planner/commands/plan/plan-get.js +1 -2
  40. package/dist/m365/planner/commands/plan/plan-list.js +4 -5
  41. package/dist/m365/planner/commands/plan/plan-set.js +2 -2
  42. package/dist/m365/spfx/commands/project/project-externalize/rules/PnPJsRule.js +2 -2
  43. package/dist/m365/spfx/commands/spfx-doctor.js +73 -103
  44. package/dist/m365/spo/commands/file/file-add.js +13 -13
  45. package/dist/m365/spo/commands/file/file-checkin.js +1 -1
  46. package/dist/m365/spo/commands/file/file-checkout.js +1 -1
  47. package/dist/m365/spo/commands/file/file-copy.js +36 -4
  48. package/dist/m365/spo/commands/file/file-list.js +4 -4
  49. package/dist/m365/spo/commands/file/file-move.js +74 -98
  50. package/dist/m365/spo/commands/file/file-remove.js +6 -6
  51. package/dist/m365/spo/commands/file/file-rename.js +2 -2
  52. package/dist/m365/spo/commands/file/file-retentionlabel-ensure.js +1 -1
  53. package/dist/m365/spo/commands/file/file-retentionlabel-remove.js +1 -1
  54. package/dist/m365/spo/commands/file/file-roleassignment-add.js +1 -1
  55. package/dist/m365/spo/commands/file/file-roleassignment-remove.js +1 -1
  56. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +1 -1
  57. package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +1 -1
  58. package/dist/m365/spo/commands/file/file-version-clear.js +1 -1
  59. package/dist/m365/spo/commands/file/file-version-get.js +1 -1
  60. package/dist/m365/spo/commands/file/file-version-list.js +1 -1
  61. package/dist/m365/spo/commands/file/file-version-remove.js +1 -1
  62. package/dist/m365/spo/commands/file/file-version-restore.js +1 -1
  63. package/dist/m365/spo/commands/folder/folder-add.js +2 -4
  64. package/dist/m365/spo/commands/folder/folder-copy.js +89 -45
  65. package/dist/m365/spo/commands/folder/folder-get.js +1 -1
  66. package/dist/m365/spo/commands/folder/folder-list.js +2 -2
  67. package/dist/m365/spo/commands/folder/folder-move.js +89 -47
  68. package/dist/m365/spo/commands/folder/folder-remove.js +7 -4
  69. package/dist/m365/spo/commands/folder/folder-rename.js +13 -17
  70. package/dist/m365/spo/commands/folder/folder-retentionlabel-ensure.js +1 -1
  71. package/dist/m365/spo/commands/folder/folder-retentionlabel-remove.js +1 -1
  72. package/dist/m365/spo/commands/folder/folder-roleassignment-add.js +1 -1
  73. package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +1 -1
  74. package/dist/m365/spo/commands/folder/folder-roleinheritance-break.js +1 -1
  75. package/dist/m365/spo/commands/folder/folder-roleinheritance-reset.js +1 -1
  76. package/dist/m365/spo/commands/group/group-list.js +0 -1
  77. package/dist/m365/spo/commands/navigation/navigation-node-set.js +2 -2
  78. package/dist/m365/spo/commands/site/site-set.js +2 -2
  79. package/dist/m365/spo/commands/theme/theme-list.js +1 -9
  80. package/dist/utils/planner.js +4 -3
  81. package/dist/utils/spo.js +13 -54
  82. package/docs/docs/cmd/aad/{o365group/o365group-add.mdx → m365group/m365group-add.mdx} +13 -13
  83. package/docs/docs/cmd/aad/{o365group/o365group-conversation-list.mdx → m365group/m365group-conversation-list.mdx} +4 -4
  84. package/docs/docs/cmd/aad/{o365group/o365group-conversation-post-list.mdx → m365group/m365group-conversation-post-list.mdx} +8 -8
  85. package/docs/docs/cmd/aad/{o365group/o365group-get.mdx → m365group/m365group-get.mdx} +6 -6
  86. package/docs/docs/cmd/aad/{o365group/o365group-list.mdx → m365group/m365group-list.mdx} +12 -29
  87. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-clear.mdx → m365group/m365group-recyclebinitem-clear.mdx} +5 -5
  88. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-list.mdx → m365group/m365group-recyclebinitem-list.mdx} +8 -8
  89. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-remove.mdx → m365group/m365group-recyclebinitem-remove.mdx} +6 -6
  90. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-restore.mdx → m365group/m365group-recyclebinitem-restore.mdx} +6 -6
  91. package/docs/docs/cmd/aad/{o365group/o365group-remove.mdx → m365group/m365group-remove.mdx} +6 -6
  92. package/docs/docs/cmd/aad/{o365group/o365group-renew.mdx → m365group/m365group-renew.mdx} +4 -4
  93. package/docs/docs/cmd/aad/{o365group/o365group-report-activitycounts.mdx → m365group/m365group-report-activitycounts.mdx} +6 -6
  94. package/docs/docs/cmd/aad/{o365group/o365group-report-activitydetail.mdx → m365group/m365group-report-activitydetail.mdx} +7 -7
  95. package/docs/docs/cmd/aad/{o365group/o365group-report-activityfilecounts.mdx → m365group/m365group-report-activityfilecounts.mdx} +6 -6
  96. package/docs/docs/cmd/aad/{o365group/o365group-report-activitygroupcounts.mdx → m365group/m365group-report-activitygroupcounts.mdx} +6 -6
  97. package/docs/docs/cmd/aad/{o365group/o365group-report-activitystorage.mdx → m365group/m365group-report-activitystorage.mdx} +6 -6
  98. package/docs/docs/cmd/aad/{o365group/o365group-set.mdx → m365group/m365group-set.mdx} +8 -8
  99. package/docs/docs/cmd/aad/{o365group/o365group-teamify.mdx → m365group/m365group-teamify.mdx} +5 -5
  100. package/docs/docs/cmd/aad/{o365group/o365group-user-add.mdx → m365group/m365group-user-add.mdx} +5 -5
  101. package/docs/docs/cmd/aad/{o365group/o365group-user-list.mdx → m365group/m365group-user-list.mdx} +7 -7
  102. package/docs/docs/cmd/aad/{o365group/o365group-user-remove.mdx → m365group/m365group-user-remove.mdx} +5 -5
  103. package/docs/docs/cmd/aad/{o365group/o365group-user-set.mdx → m365group/m365group-user-set.mdx} +5 -5
  104. package/docs/docs/cmd/aad/user/user-set.mdx +1 -1
  105. package/docs/docs/cmd/cli/config/config-list.mdx +78 -0
  106. package/docs/docs/cmd/flow/flow-enable.mdx +2 -2
  107. package/docs/docs/cmd/login.mdx +6 -0
  108. package/docs/docs/cmd/pa/app/app-permission-ensure.mdx +85 -0
  109. package/docs/docs/cmd/pa/app/app-permission-remove.mdx +74 -0
  110. package/docs/docs/cmd/planner/plan/plan-add.mdx +1 -1
  111. package/docs/docs/cmd/pp/dataverse/dataverse-table-get.mdx +2 -2
  112. package/docs/docs/cmd/pp/dataverse/dataverse-table-list.mdx +2 -2
  113. package/docs/docs/cmd/pp/dataverse/dataverse-table-remove.mdx +3 -3
  114. package/docs/docs/cmd/spo/file/file-add.mdx +1 -1
  115. package/docs/docs/cmd/spo/file/file-checkin.mdx +1 -1
  116. package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +1 -9
  117. package/docs/docs/cmd/spo/file/file-checkout.mdx +1 -1
  118. package/docs/docs/cmd/spo/file/file-copy.mdx +20 -16
  119. package/docs/docs/cmd/spo/file/file-get.mdx +1 -1
  120. package/docs/docs/cmd/spo/file/file-list.mdx +2 -2
  121. package/docs/docs/cmd/spo/file/file-move.mdx +36 -18
  122. package/docs/docs/cmd/spo/file/file-remove.mdx +8 -8
  123. package/docs/docs/cmd/spo/file/file-rename.mdx +3 -3
  124. package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +2 -2
  125. package/docs/docs/cmd/spo/file/file-retentionlabel-remove.mdx +3 -3
  126. package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +1 -1
  127. package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +1 -1
  128. package/docs/docs/cmd/spo/file/file-roleinheritance-break.mdx +1 -1
  129. package/docs/docs/cmd/spo/file/file-roleinheritance-reset.mdx +1 -1
  130. package/docs/docs/cmd/spo/file/file-sharinginfo-get.mdx +1 -1
  131. package/docs/docs/cmd/spo/file/file-sharinglink-add.mdx +1 -1
  132. package/docs/docs/cmd/spo/file/file-sharinglink-clear.mdx +1 -1
  133. package/docs/docs/cmd/spo/file/file-sharinglink-get.mdx +1 -1
  134. package/docs/docs/cmd/spo/file/file-sharinglink-list.mdx +1 -1
  135. package/docs/docs/cmd/spo/file/file-sharinglink-remove.mdx +1 -1
  136. package/docs/docs/cmd/spo/file/file-sharinglink-set.mdx +1 -1
  137. package/docs/docs/cmd/spo/file/file-version-clear.mdx +1 -1
  138. package/docs/docs/cmd/spo/file/file-version-get.mdx +1 -1
  139. package/docs/docs/cmd/spo/file/file-version-list.mdx +1 -1
  140. package/docs/docs/cmd/spo/file/file-version-remove.mdx +1 -1
  141. package/docs/docs/cmd/spo/file/file-version-restore.mdx +1 -1
  142. package/docs/docs/cmd/spo/folder/folder-add.mdx +76 -1
  143. package/docs/docs/cmd/spo/folder/folder-copy.mdx +39 -12
  144. package/docs/docs/cmd/spo/folder/folder-get.mdx +1 -1
  145. package/docs/docs/cmd/spo/folder/folder-list.mdx +1 -1
  146. package/docs/docs/cmd/spo/folder/folder-move.mdx +40 -13
  147. package/docs/docs/cmd/spo/folder/folder-remove.mdx +1 -1
  148. package/docs/docs/cmd/spo/folder/folder-rename.mdx +5 -1
  149. package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +1 -1
  150. package/docs/docs/cmd/spo/folder/folder-retentionlabel-remove.mdx +1 -1
  151. package/docs/docs/cmd/spo/folder/folder-roleassignment-add.mdx +2 -2
  152. package/docs/docs/cmd/spo/folder/folder-roleassignment-remove.mdx +1 -1
  153. package/docs/docs/cmd/spo/folder/folder-roleinheritance-break.mdx +1 -1
  154. package/docs/docs/cmd/spo/folder/folder-roleinheritance-reset.mdx +1 -1
  155. package/docs/docs/cmd/spo/listitem/listitem-attachment-list.mdx +1 -1
  156. package/docs/docs/cmd/spo/site/site-add.mdx +1 -1
  157. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-add.mdx +1 -1
  158. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-list.mdx +1 -1
  159. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-remove.mdx +1 -1
  160. package/docs/docs/cmd/spo/tenant/tenant-commandset-add.mdx +1 -1
  161. package/docs/docs/cmd/spo/tenant/tenant-commandset-remove.mdx +1 -1
  162. package/docs/docs/cmd/spo/tenant/tenant-commandset-set.mdx +1 -1
  163. package/docs/docs/cmd/teams/team/team-add.mdx +1 -1
  164. package/docs/docs/cmd/yammer/network/network-list.mdx +1 -1
  165. package/npm-shrinkwrap.json +142 -88
  166. package/package.json +13 -13
  167. /package/dist/m365/aad/commands/{o365group → m365group}/GroupExtended.js +0 -0
@@ -52,7 +52,7 @@ class SpoFolderListCommand extends SpoCommand {
52
52
  }
53
53
  const allFolders = [];
54
54
  const serverRelativeUrl = urlUtil.getServerRelativePath(args.options.webUrl, parentFolderUrl);
55
- const requestUrl = `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl(@url)/Folders?@url='${formatting.encodeQueryParameter(serverRelativeUrl)}'`;
55
+ const requestUrl = `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')/Folders`;
56
56
  const queryParams = [`$skip=${skip}`, `$top=${SpoFolderListCommand.pageSize}`];
57
57
  if (fieldProperties.expandProperties.length > 0) {
58
58
  queryParams.push(`$expand=${fieldProperties.expandProperties.join(',')}`);
@@ -64,7 +64,7 @@ class SpoFolderListCommand extends SpoCommand {
64
64
  queryParams.push(`$filter=${args.options.filter}`);
65
65
  }
66
66
  const requestOptions = {
67
- url: `${requestUrl}&${queryParams.join('&')}`,
67
+ url: `${requestUrl}?${queryParams.join('&')}`,
68
68
  method: 'GET',
69
69
  headers: {
70
70
  'accept': 'application/json;odata=nometadata'
@@ -3,10 +3,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
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
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _SpoFolderMoveCommand_instances, _SpoFolderMoveCommand_initTelemetry, _SpoFolderMoveCommand_initOptions, _SpoFolderMoveCommand_initValidators;
7
- import url from 'url';
6
+ var _SpoFolderMoveCommand_instances, _SpoFolderMoveCommand_initTelemetry, _SpoFolderMoveCommand_initOptions, _SpoFolderMoveCommand_initValidators, _SpoFolderMoveCommand_initOptionSets;
8
7
  import request from '../../../../request.js';
9
- import { spo } from '../../../../utils/spo.js';
10
8
  import { urlUtil } from '../../../../utils/urlUtil.js';
11
9
  import { validation } from '../../../../utils/validation.js';
12
10
  import SpoCommand from '../../../base/SpoCommand.js';
@@ -21,79 +19,123 @@ class SpoFolderMoveCommand extends SpoCommand {
21
19
  constructor() {
22
20
  super();
23
21
  _SpoFolderMoveCommand_instances.add(this);
22
+ this.nameConflictBehaviorOptions = ['fail', 'rename'];
24
23
  __classPrivateFieldGet(this, _SpoFolderMoveCommand_instances, "m", _SpoFolderMoveCommand_initTelemetry).call(this);
25
24
  __classPrivateFieldGet(this, _SpoFolderMoveCommand_instances, "m", _SpoFolderMoveCommand_initOptions).call(this);
26
25
  __classPrivateFieldGet(this, _SpoFolderMoveCommand_instances, "m", _SpoFolderMoveCommand_initValidators).call(this);
26
+ __classPrivateFieldGet(this, _SpoFolderMoveCommand_instances, "m", _SpoFolderMoveCommand_initOptionSets).call(this);
27
27
  }
28
28
  getExcludedOptionsWithUrls() {
29
29
  return ['targetUrl', 'sourceUrl'];
30
30
  }
31
31
  async commandAction(logger, args) {
32
- const webUrl = args.options.webUrl;
33
- const parsedUrl = url.parse(webUrl);
34
- const tenantUrl = `${parsedUrl.protocol}//${parsedUrl.hostname}`;
35
- const sourceRelUrl = urlUtil.getServerRelativePath(webUrl, args.options.sourceUrl);
36
- const sourceAbsoluteUrl = urlUtil.urlCombine(tenantUrl, sourceRelUrl);
37
- const allowSchemaMismatch = args.options.allowSchemaMismatch || false;
38
- const requestUrl = urlUtil.urlCombine(webUrl, '/_api/site/CreateCopyJobs');
39
- const requestOptions = {
40
- url: requestUrl,
41
- headers: {
42
- 'accept': 'application/json;odata=nometadata'
43
- },
44
- data: {
45
- exportObjectUris: [sourceAbsoluteUrl],
46
- destinationUri: urlUtil.urlCombine(tenantUrl, args.options.targetUrl),
47
- options: {
48
- "AllowSchemaMismatch": allowSchemaMismatch,
49
- "IgnoreVersionHistory": true,
50
- "IsMoveMode": true
51
- }
52
- },
53
- responseType: 'json'
54
- };
55
32
  try {
56
- const jobInfo = await request.post(requestOptions);
57
- const copyJobInfo = jobInfo.value[0];
58
- const progressPollInterval = 30 * 60; //used previously implemented interval. The API does not provide guidance on what value should be used.
59
- await new Promise((resolve, reject) => {
60
- setTimeout(() => {
61
- spo.waitUntilCopyJobFinished({
62
- copyJobInfo,
63
- siteUrl: webUrl,
64
- pollingInterval: progressPollInterval,
65
- resolve,
66
- reject,
67
- logger,
68
- debug: this.debug,
69
- verbose: this.verbose
70
- });
71
- }, progressPollInterval);
72
- });
33
+ const sourcePath = await this.getSourcePath(logger, args.options);
34
+ if (this.verbose) {
35
+ await logger.logToStderr(`Moving folder '${sourcePath}' to '${args.options.targetUrl}'...`);
36
+ }
37
+ const absoluteSourcePath = this.getAbsoluteUrl(args.options.webUrl, sourcePath);
38
+ let absoluteTargetPath = this.getAbsoluteUrl(args.options.webUrl, args.options.targetUrl) + '/';
39
+ if (args.options.newName) {
40
+ absoluteTargetPath += args.options.newName;
41
+ }
42
+ else {
43
+ // Keep the original file name
44
+ absoluteTargetPath += sourcePath.substring(sourcePath.lastIndexOf('/') + 1);
45
+ }
46
+ const requestOptions = {
47
+ url: `${args.options.webUrl}/_api/SP.MoveCopyUtil.MoveFolderByPath`,
48
+ headers: {
49
+ accept: 'application/json;odata=nometadata'
50
+ },
51
+ responseType: 'json',
52
+ data: {
53
+ srcPath: {
54
+ DecodedUrl: absoluteSourcePath
55
+ },
56
+ destPath: {
57
+ DecodedUrl: absoluteTargetPath
58
+ },
59
+ options: {
60
+ KeepBoth: args.options.nameConflictBehavior === 'rename',
61
+ ShouldBypassSharedLocks: !!args.options.bypassSharedLock,
62
+ RetainEditorAndModifiedOnMove: !!args.options.retainEditorAndModified
63
+ }
64
+ }
65
+ };
66
+ await request.post(requestOptions);
73
67
  }
74
68
  catch (err) {
75
69
  this.handleRejectedODataJsonPromise(err);
76
70
  }
77
71
  }
72
+ async getSourcePath(logger, options) {
73
+ if (options.sourceUrl) {
74
+ return urlUtil.getServerRelativePath(options.webUrl, options.sourceUrl);
75
+ }
76
+ if (this.verbose) {
77
+ await logger.logToStderr(`Retrieving server-relative path for folder with ID '${options.sourceId}'...`);
78
+ }
79
+ const requestOptions = {
80
+ url: `${options.webUrl}/_api/Web/GetFolderById('${options.sourceId}')?$select=ServerRelativePath`,
81
+ headers: {
82
+ accept: 'application/json;odata=nometadata'
83
+ },
84
+ responseType: 'json'
85
+ };
86
+ const file = await request.get(requestOptions);
87
+ return file.ServerRelativePath.DecodedUrl;
88
+ }
89
+ getAbsoluteUrl(webUrl, url) {
90
+ return url.startsWith('https://') ? url : urlUtil.getAbsoluteUrl(webUrl, url);
91
+ }
78
92
  }
79
93
  _SpoFolderMoveCommand_instances = new WeakSet(), _SpoFolderMoveCommand_initTelemetry = function _SpoFolderMoveCommand_initTelemetry() {
80
94
  this.telemetry.push((args) => {
81
95
  Object.assign(this.telemetryProperties, {
82
- allowSchemaMismatch: args.options.allowSchemaMismatch || false
96
+ sourceUrl: typeof args.options.sourceUrl !== 'undefined',
97
+ sourceId: typeof args.options.sourceId !== 'undefined',
98
+ newName: typeof args.options.newName !== 'undefined',
99
+ nameConflictBehavior: typeof args.options.nameConflictBehavior !== 'undefined',
100
+ retainEditorAndModified: !!args.options.retainEditorAndModified,
101
+ bypassSharedLock: !!args.options.bypassSharedLock
83
102
  });
84
103
  });
85
104
  }, _SpoFolderMoveCommand_initOptions = function _SpoFolderMoveCommand_initOptions() {
86
105
  this.options.unshift({
87
106
  option: '-u, --webUrl <webUrl>'
88
107
  }, {
89
- option: '-s, --sourceUrl <sourceUrl>'
108
+ option: '-s, --sourceUrl [sourceUrl]'
109
+ }, {
110
+ option: '-i, --sourceId [sourceId]'
90
111
  }, {
91
112
  option: '-t, --targetUrl <targetUrl>'
92
113
  }, {
93
- option: '--allowSchemaMismatch'
114
+ option: '--newName [newName]'
115
+ }, {
116
+ option: '--nameConflictBehavior [nameConflictBehavior]',
117
+ autocomplete: this.nameConflictBehaviorOptions
118
+ }, {
119
+ option: '--retainEditorAndModified'
120
+ }, {
121
+ option: '--bypassSharedLock'
94
122
  });
95
123
  }, _SpoFolderMoveCommand_initValidators = function _SpoFolderMoveCommand_initValidators() {
96
- this.validators.push(async (args) => validation.isValidSharePointUrl(args.options.webUrl));
124
+ this.validators.push(async (args) => {
125
+ const isValidSharePointUrl = validation.isValidSharePointUrl(args.options.webUrl);
126
+ if (isValidSharePointUrl !== true) {
127
+ return isValidSharePointUrl;
128
+ }
129
+ if (args.options.sourceId && !validation.isValidGuid(args.options.sourceId)) {
130
+ return `'${args.options.sourceId}' is not a valid GUID for sourceId.`;
131
+ }
132
+ if (args.options.nameConflictBehavior && this.nameConflictBehaviorOptions.indexOf(args.options.nameConflictBehavior) === -1) {
133
+ return `'${args.options.nameConflictBehavior}' is not a valid value for nameConflictBehavior. Allowed values are: ${this.nameConflictBehaviorOptions.join(', ')}.`;
134
+ }
135
+ return true;
136
+ });
137
+ }, _SpoFolderMoveCommand_initOptionSets = function _SpoFolderMoveCommand_initOptionSets() {
138
+ this.optionSets.push({ options: ['sourceUrl', 'sourceId'] });
97
139
  };
98
140
  export default new SpoFolderMoveCommand();
99
141
  //# sourceMappingURL=folder-move.js.map
@@ -25,6 +25,9 @@ class SpoFolderRemoveCommand extends SpoCommand {
25
25
  __classPrivateFieldGet(this, _SpoFolderRemoveCommand_instances, "m", _SpoFolderRemoveCommand_initOptions).call(this);
26
26
  __classPrivateFieldGet(this, _SpoFolderRemoveCommand_instances, "m", _SpoFolderRemoveCommand_initValidators).call(this);
27
27
  }
28
+ getExcludedOptionsWithUrls() {
29
+ return ['url'];
30
+ }
28
31
  async commandAction(logger, args) {
29
32
  if (args.options.force) {
30
33
  await this.removeFolder(logger, args.options);
@@ -45,8 +48,8 @@ class SpoFolderRemoveCommand extends SpoCommand {
45
48
  if (this.verbose) {
46
49
  await logger.logToStderr(`Removing folder in site at ${options.webUrl}...`);
47
50
  }
48
- const serverRelativeUrl = urlUtil.getServerRelativePath(options.webUrl, options.url);
49
- let requestUrl = `${options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
51
+ const serverRelativePath = urlUtil.getServerRelativePath(options.webUrl, options.url);
52
+ let requestUrl = `${options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativePath)}')`;
50
53
  if (options.recycle) {
51
54
  requestUrl += `/recycle()`;
52
55
  }
@@ -71,8 +74,8 @@ class SpoFolderRemoveCommand extends SpoCommand {
71
74
  _SpoFolderRemoveCommand_instances = new WeakSet(), _SpoFolderRemoveCommand_initTelemetry = function _SpoFolderRemoveCommand_initTelemetry() {
72
75
  this.telemetry.push((args) => {
73
76
  Object.assign(this.telemetryProperties, {
74
- recycle: (!(!args.options.recycle)).toString(),
75
- force: (!(!args.options.force)).toString()
77
+ recycle: !!args.options.recycle,
78
+ force: !!args.options.force
76
79
  });
77
80
  });
78
81
  }, _SpoFolderRemoveCommand_initOptions = function _SpoFolderRemoveCommand_initOptions() {
@@ -4,9 +4,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
6
  var _SpoFolderRenameCommand_instances, _SpoFolderRenameCommand_initOptions, _SpoFolderRenameCommand_initValidators;
7
- import config from '../../../../config.js';
8
7
  import request from '../../../../request.js';
9
- import { spo } from '../../../../utils/spo.js';
8
+ import { formatting } from '../../../../utils/formatting.js';
10
9
  import { urlUtil } from '../../../../utils/urlUtil.js';
11
10
  import { validation } from '../../../../utils/validation.js';
12
11
  import SpoCommand from '../../../base/SpoCommand.js';
@@ -29,32 +28,29 @@ class SpoFolderRenameCommand extends SpoCommand {
29
28
  }
30
29
  async commandAction(logger, args) {
31
30
  try {
32
- const contextResponse = await spo.getRequestDigest(args.options.webUrl);
33
- const formDigestValue = contextResponse.FormDigestValue;
34
- const webIdentityResp = await spo.getCurrentWebIdentity(args.options.webUrl, formDigestValue);
35
- const folderObjectIdentity = await spo.getFolderIdentity(webIdentityResp.objectIdentity, args.options.webUrl, args.options.url, formDigestValue);
36
31
  if (this.verbose) {
37
32
  await logger.logToStderr(`Renaming folder ${args.options.url} to ${args.options.name}`);
38
33
  }
39
34
  const serverRelativePath = urlUtil.getServerRelativePath(args.options.webUrl, args.options.url);
40
- const serverRelativeUrlWithoutOldFolder = serverRelativePath.substring(0, serverRelativePath.lastIndexOf('/'));
41
- const renamedServerRelativeUrl = `${serverRelativeUrlWithoutOldFolder}/${args.options.name}`;
42
35
  const requestOptions = {
43
- url: `${args.options.webUrl}/_vti_bin/client.svc/ProcessQuery`,
36
+ url: `${args.options.webUrl}/_api/Web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativePath)}')/ListItemAllFields`,
44
37
  headers: {
45
- 'X-RequestDigest': formDigestValue
38
+ accept: 'application/json;odata=nometadata',
39
+ 'if-match': '*'
46
40
  },
47
- data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><Method Name="MoveTo" Id="32" ObjectPathId="26"><Parameters><Parameter Type="String">${renamedServerRelativeUrl}</Parameter></Parameters></Method></Actions><ObjectPaths><Identity Id="26" Name="${folderObjectIdentity.objectIdentity}" /></ObjectPaths></Request>`
41
+ data: {
42
+ FileLeafRef: args.options.name,
43
+ Title: args.options.name
44
+ },
45
+ responseType: 'json'
48
46
  };
49
- const res = await request.post(requestOptions);
50
- const json = JSON.parse(res);
51
- const contents = json.find(x => { return x['ErrorInfo']; });
52
- if (contents && contents.ErrorInfo) {
53
- throw contents.ErrorInfo.ErrorMessage || 'ClientSvc unknown error';
47
+ const response = await request.patch(requestOptions);
48
+ if (response && response['odata.null'] === true) {
49
+ throw 'Folder not found.';
54
50
  }
55
51
  }
56
52
  catch (err) {
57
- this.handleRejectedPromise(err);
53
+ this.handleRejectedODataJsonPromise(err);
58
54
  }
59
55
  }
60
56
  }
@@ -75,7 +75,7 @@ class SpoFolderRetentionLabelEnsureCommand extends SpoCommand {
75
75
  }
76
76
  else {
77
77
  const serverRelativeUrl = urlUtil.getServerRelativePath(args.options.webUrl, args.options.folderUrl);
78
- requestUrl += `GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
78
+ requestUrl += `GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
79
79
  }
80
80
  const requestOptions = {
81
81
  url: `${requestUrl}?$expand=ListItemAllFields,ListItemAllFields/ParentList&$select=ServerRelativeUrl,ListItemAllFields/ParentList/Id,ListItemAllFields/Id`,
@@ -91,7 +91,7 @@ class SpoFolderRetentionLabelRemoveCommand extends SpoCommand {
91
91
  }
92
92
  else {
93
93
  const serverRelativeUrl = urlUtil.getServerRelativePath(args.options.webUrl, args.options.folderUrl);
94
- requestUrl += `GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
94
+ requestUrl += `GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
95
95
  }
96
96
  const requestOptions = {
97
97
  url: `${requestUrl}?$expand=ListItemAllFields,ListItemAllFields/ParentList&$select=ServerRelativeUrl,ListItemAllFields/ParentList/Id,ListItemAllFields/Id`,
@@ -41,7 +41,7 @@ class SpoFolderRoleAssignmentAddCommand extends SpoCommand {
41
41
  requestUrl += `GetList('${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
42
42
  }
43
43
  else {
44
- requestUrl += `GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(serverRelativeUrl)}')/ListItemAllFields`;
44
+ requestUrl += `GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')/ListItemAllFields`;
45
45
  }
46
46
  const roleDefinitionId = await this.getRoleDefinitionId(args.options);
47
47
  if (args.options.upn) {
@@ -33,7 +33,7 @@ class SpoFolderRoleAssignmentRemoveCommand extends SpoCommand {
33
33
  await logger.logToStderr(`Removing role assignment from folder in site at ${args.options.webUrl}...`);
34
34
  }
35
35
  const serverRelativeUrl = urlUtil.getServerRelativePath(args.options.webUrl, args.options.folderUrl);
36
- const requestUrl = `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(serverRelativeUrl)}')/ListItemAllFields`;
36
+ const requestUrl = `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')/ListItemAllFields`;
37
37
  try {
38
38
  if (args.options.upn) {
39
39
  args.options.principalId = await this.getUserPrincipalId(args.options);
@@ -36,7 +36,7 @@ class SpoFolderRoleInheritanceBreakCommand extends SpoCommand {
36
36
  requestUrl += `GetList('${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
37
37
  }
38
38
  else {
39
- requestUrl += `GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(serverRelativeUrl)}')/ListItemAllFields`;
39
+ requestUrl += `GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')/ListItemAllFields`;
40
40
  }
41
41
  const requestOptions = {
42
42
  url: `${requestUrl}/breakroleinheritance(${keepExistingPermissions})`,
@@ -35,7 +35,7 @@ class SpoFolderRoleInheritanceResetCommand extends SpoCommand {
35
35
  requestUrl += `GetList('${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
36
36
  }
37
37
  else {
38
- requestUrl += `GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(serverRelativeUrl)}')/ListItemAllFields`;
38
+ requestUrl += `GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')/ListItemAllFields`;
39
39
  }
40
40
  const requestOptions = {
41
41
  url: `${requestUrl}/resetroleinheritance`,
@@ -57,7 +57,6 @@ class SpoGroupListCommand extends SpoCommand {
57
57
  responseType: 'json'
58
58
  };
59
59
  const groupProperties = await request.get(requestOptions);
60
- await logger.log(groupProperties);
61
60
  if (!options.output || !Cli.shouldTrimOutput(options.output)) {
62
61
  await logger.log(groupProperties);
63
62
  }
@@ -119,8 +119,8 @@ _SpoNavigationNodeSetCommand_instances = new WeakSet(), _SpoNavigationNodeSetCom
119
119
  if (isValidSharePointUrl !== true) {
120
120
  return isValidSharePointUrl;
121
121
  }
122
- if (args.options.audienceIds === undefined && !args.options.url && args.options.isExternal === undefined && !args.options.title && args.options.openInNewWindow === undefined) {
123
- return `Please specify atleast one property to update.`;
122
+ if (args.options.audienceIds === undefined && args.options.url === undefined && args.options.isExternal === undefined && !args.options.title && args.options.openInNewWindow === undefined) {
123
+ return `Please specify at least one property to update.`;
124
124
  }
125
125
  if (args.options.audienceIds) {
126
126
  const audienceIdsSplitted = args.options.audienceIds.split(',');
@@ -12,7 +12,7 @@ import { formatting } from '../../../../utils/formatting.js';
12
12
  import { spo } from '../../../../utils/spo.js';
13
13
  import { urlUtil } from '../../../../utils/urlUtil.js';
14
14
  import { validation } from '../../../../utils/validation.js';
15
- import aadO365GroupSetCommand from '../../../aad/commands/o365group/o365group-set.js';
15
+ import aadM365GroupSetCommand from '../../../aad/commands/m365group/m365group-set.js';
16
16
  import SpoCommand from '../../../base/SpoCommand.js';
17
17
  import commands from '../../commands.js';
18
18
  import { SharingCapabilities } from '../site/SharingCapabilities.js';
@@ -238,7 +238,7 @@ class SpoSiteSetCommand extends SpoCommand {
238
238
  debug: this.debug,
239
239
  verbose: this.verbose
240
240
  };
241
- promises.push(Cli.executeCommand(aadO365GroupSetCommand, { options: { ...commandOptions, _: [] } }));
241
+ promises.push(Cli.executeCommand(aadM365GroupSetCommand, { options: { ...commandOptions, _: [] } }));
242
242
  }
243
243
  if (args.options.description) {
244
244
  promises.push(this.setGroupifiedSiteDescription(args.options.description));
@@ -26,15 +26,7 @@ class SpoThemeListCommand extends SpoCommand {
26
26
  responseType: 'json'
27
27
  };
28
28
  const rawRes = await request.post(requestOptions);
29
- const themePreviews = rawRes.themePreviews;
30
- if (themePreviews && themePreviews.length > 0) {
31
- await logger.log(themePreviews);
32
- }
33
- else {
34
- if (this.verbose) {
35
- await logger.logToStderr('No themes found');
36
- }
37
- }
29
+ await logger.log(rawRes.themePreviews);
38
30
  }
39
31
  catch (err) {
40
32
  this.handleRejectedODataJsonPromise(err);
@@ -31,11 +31,12 @@ export const planner = {
31
31
  return odata.getAllItems(`${graphResource}/v1.0/groups/${groupId}/planner/plans`, metadata);
32
32
  },
33
33
  /**
34
- * Get all Planner plans for a specific roster.
34
+ * Get the Planner plan for a specific Roster.
35
35
  * @param rosterId Roster ID.
36
36
  */
37
- getPlansByRosterId(rosterId, metadata = 'none') {
38
- return odata.getAllItems(`${graphResource}/beta/planner/rosters/${rosterId}/plans`, metadata);
37
+ async getPlanByRosterId(rosterId, metadata = 'none') {
38
+ const plans = await odata.getAllItems(`${graphResource}/beta/planner/rosters/${rosterId}/plans`, metadata);
39
+ return plans[0];
39
40
  },
40
41
  /**
41
42
  * Get Planner plan by title in a specific group.
package/dist/utils/spo.js CHANGED
@@ -93,47 +93,6 @@ export const spo = {
93
93
  }
94
94
  });
95
95
  },
96
- waitUntilCopyJobFinished({ copyJobInfo, siteUrl, pollingInterval, resolve, reject, logger, debug, verbose }) {
97
- const requestUrl = `${siteUrl}/_api/site/GetCopyJobProgress`;
98
- const requestOptions = {
99
- url: requestUrl,
100
- headers: {
101
- 'accept': 'application/json;odata=nometadata'
102
- },
103
- data: { "copyJobInfo": copyJobInfo },
104
- responseType: 'json'
105
- };
106
- request
107
- .post(requestOptions)
108
- .then(async (resp) => {
109
- if (debug) {
110
- await logger.logToStderr('getCopyJobProgress response...');
111
- await logger.logToStderr(resp);
112
- }
113
- for (const item of resp.Logs) {
114
- const log = JSON.parse(item);
115
- // reject if progress error
116
- if (log.Event === "JobError" || log.Event === "JobFatalError") {
117
- return reject(log.Message);
118
- }
119
- }
120
- // two possible scenarios
121
- // job done = success promise returned
122
- // job in progress = recursive call using setTimeout returned
123
- if (resp.JobState === 0) {
124
- // job done
125
- if (verbose) {
126
- process.stdout.write('\n');
127
- }
128
- resolve();
129
- }
130
- else {
131
- setTimeout(() => {
132
- spo.waitUntilCopyJobFinished({ copyJobInfo, siteUrl, pollingInterval, resolve, reject, logger, debug, verbose });
133
- }, pollingInterval);
134
- }
135
- });
136
- },
137
96
  async getSpoUrl(logger, debug) {
138
97
  if (auth.service.spoUrl) {
139
98
  if (debug) {
@@ -292,7 +251,7 @@ export const spo = {
292
251
  nextFolder += `/${folders[folderIndex]}`;
293
252
  const folderServerRelativeUrl = urlUtil.getServerRelativePath(webFullUrl, nextFolder);
294
253
  const requestOptions = {
295
- url: `${webFullUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folderServerRelativeUrl)}')`,
254
+ url: `${webFullUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folderServerRelativeUrl)}')`,
296
255
  headers: {
297
256
  'accept': 'application/json;odata=nometadata'
298
257
  }
@@ -619,12 +578,12 @@ export const spo = {
619
578
  return request.post(requestOptions);
620
579
  },
621
580
  /**
622
- * Retrieves the spo group by name.
623
- * @param webUrl Web url
624
- * @param name The name of the group
625
- * @param logger the Logger object
626
- * @param debug set if debug logging should be logged
627
- */
581
+ * Retrieves the spo group by name.
582
+ * @param webUrl Web url
583
+ * @param name The name of the group
584
+ * @param logger the Logger object
585
+ * @param debug set if debug logging should be logged
586
+ */
628
587
  async getGroupByName(webUrl, name, logger, debug) {
629
588
  if (debug) {
630
589
  await logger.logToStderr(`Retrieving the group by name ${name}`);
@@ -641,12 +600,12 @@ export const spo = {
641
600
  return groupInstance;
642
601
  },
643
602
  /**
644
- * Retrieves the role definition by name.
645
- * @param webUrl Web url
646
- * @param name the name of the role definition
647
- * @param logger the Logger object
648
- * @param debug set if debug logging should be logged
649
- */
603
+ * Retrieves the role definition by name.
604
+ * @param webUrl Web url
605
+ * @param name the name of the role definition
606
+ * @param logger the Logger object
607
+ * @param debug set if debug logging should be logged
608
+ */
650
609
  async getRoleDefinitionByName(webUrl, name, logger, debug) {
651
610
  if (debug) {
652
611
  await logger.logToStderr(`Retrieving the role definitions for ${name}`);
@@ -2,14 +2,14 @@ import Global from '/docs/cmd/_global.mdx';
2
2
  import Tabs from '@theme/Tabs';
3
3
  import TabItem from '@theme/TabItem';
4
4
 
5
- # aad o365group add
5
+ # aad m365group add
6
6
 
7
7
  Creates a Microsoft 365 Group
8
8
 
9
9
  ## Usage
10
10
 
11
11
  ```sh
12
- m365 aad o365group add [options]
12
+ m365 aad m365group add [options]
13
13
  ```
14
14
 
15
15
  ## Options
@@ -61,55 +61,55 @@ If an invalid user is provided in the comma-separated list of Owners or Members,
61
61
  Create a public Microsoft 365 Group
62
62
 
63
63
  ```sh
64
- m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance
64
+ m365 aad m365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance
65
65
  ```
66
66
 
67
67
  Create a private Microsoft 365 Group
68
68
 
69
69
  ```sh
70
- m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --isPrivate
70
+ m365 aad m365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --isPrivate
71
71
  ```
72
72
 
73
73
  Create a public Microsoft 365 Group and set specified users as its owners
74
74
 
75
75
  ```sh
76
- m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --owners "DebraB@contoso.onmicrosoft.com,DiegoS@contoso.onmicrosoft.com"
76
+ m365 aad m365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --owners "DebraB@contoso.onmicrosoft.com,DiegoS@contoso.onmicrosoft.com"
77
77
  ```
78
78
 
79
79
  Create a public Microsoft 365 Group and set specified users as its members
80
80
 
81
81
  ```sh
82
- m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --members "DebraB@contoso.onmicrosoft.com,DiegoS@contoso.onmicrosoft.com"
82
+ m365 aad m365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --members "DebraB@contoso.onmicrosoft.com,DiegoS@contoso.onmicrosoft.com"
83
83
  ```
84
84
 
85
85
  Create a public Microsoft 365 Group and allow only group members to be able to post conversations to the group.
86
86
 
87
87
  ```sh
88
- m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --allowMembersToPost
88
+ m365 aad m365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --allowMembersToPost
89
89
  ```
90
90
 
91
91
  Create a public Microsoft 365 Group and hide it from the Outlook experiences (web and client).
92
92
 
93
93
  ```sh
94
- m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --hideGroupInOutlook
94
+ m365 aad m365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --hideGroupInOutlook
95
95
  ```
96
96
 
97
97
  Create a public Microsoft 365 Group and subscribe all new group members to receive group conversation emails when new messages are posted in the group.
98
98
 
99
99
  ```sh
100
- m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --subscribeNewGroupMembers
100
+ m365 aad m365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --subscribeNewGroupMembers
101
101
  ```
102
102
 
103
103
  Create a public Microsoft 365 Group and set to not send welcome emails to new group members.
104
104
 
105
105
  ```sh
106
- m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --welcomeEmailDisabled
106
+ m365 aad m365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --welcomeEmailDisabled
107
107
  ```
108
108
 
109
109
  Create a public Microsoft 365 Group and set its logo
110
110
 
111
111
  ```sh
112
- m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --logoPath images/logo.png
112
+ m365 aad m365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --logoPath images/logo.png
113
113
  ```
114
114
 
115
115
  ## Response
@@ -208,7 +208,7 @@ m365 aad o365group add --displayName Finance --description "This is the Contoso
208
208
  <TabItem value="Markdown">
209
209
 
210
210
  ```md
211
- # aad o365group add --displayName "Finance" --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname "finance"
211
+ # aad m365group add --displayName "Finance" --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname "finance"
212
212
 
213
213
  Date: 2023-06-01
214
214
 
@@ -230,4 +230,4 @@ m365 aad o365group add --displayName Finance --description "This is the Contoso
230
230
  ```
231
231
 
232
232
  </TabItem>
233
- </Tabs>
233
+ </Tabs>