@pnp/cli-microsoft365 7.4.0-beta.fce7b64 → 7.5.0-beta.0ae7da4

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 (348) hide show
  1. package/.devcontainer/Dockerfile +2 -2
  2. package/.eslintrc.cjs +7 -0
  3. package/Dockerfile +2 -5
  4. package/README.md +1 -1
  5. package/allCommands.json +1 -1
  6. package/allCommandsFull.json +1 -1
  7. package/dist/Auth.js +2 -1
  8. package/dist/appInsights.js +2 -0
  9. package/dist/cli/cli.js +1 -0
  10. package/dist/m365/app/commands/app-get.js +2 -2
  11. package/dist/m365/app/commands/permission/permission-list.js +1 -1
  12. package/dist/m365/{aad/commands.js → entra/aadCommands.js} +3 -1
  13. package/dist/m365/{aad → entra}/commands/administrativeunit/administrativeunit-add.js +12 -8
  14. package/dist/m365/{aad → entra}/commands/administrativeunit/administrativeunit-get.js +20 -16
  15. package/dist/m365/{aad → entra}/commands/administrativeunit/administrativeunit-list.js +6 -2
  16. package/dist/m365/{aad → entra}/commands/administrativeunit/administrativeunit-member-add.js +24 -20
  17. package/dist/m365/{aad → entra}/commands/administrativeunit/administrativeunit-member-get.js +18 -14
  18. package/dist/m365/{aad → entra}/commands/administrativeunit/administrativeunit-member-list.js +18 -14
  19. package/dist/m365/{aad → entra}/commands/administrativeunit/administrativeunit-remove.js +20 -16
  20. package/dist/m365/entra/commands/administrativeunit/administrativeunit-roleassignment-add.js +102 -0
  21. package/dist/m365/{aad → entra}/commands/app/app-add.js +25 -21
  22. package/dist/m365/{aad → entra}/commands/app/app-get.js +17 -13
  23. package/dist/m365/{aad → entra}/commands/app/app-list.js +7 -3
  24. package/dist/m365/{aad → entra}/commands/app/app-permission-add.js +19 -19
  25. package/dist/m365/entra/commands/app/app-permission-list.js +182 -0
  26. package/dist/m365/{aad → entra}/commands/app/app-remove.js +17 -13
  27. package/dist/m365/{aad → entra}/commands/app/app-role-add.js +18 -14
  28. package/dist/m365/{aad → entra}/commands/app/app-role-list.js +15 -11
  29. package/dist/m365/{aad → entra}/commands/app/app-role-remove.js +17 -13
  30. package/dist/m365/{aad → entra}/commands/app/app-set.js +18 -14
  31. package/dist/m365/{aad → entra}/commands/approleassignment/approleassignment-add.js +17 -13
  32. package/dist/m365/{aad → entra}/commands/approleassignment/approleassignment-list.js +16 -12
  33. package/dist/m365/{aad → entra}/commands/approleassignment/approleassignment-remove.js +17 -13
  34. package/dist/m365/entra/commands/group/group-add.js +224 -0
  35. package/dist/m365/{aad → entra}/commands/group/group-get.js +20 -16
  36. package/dist/m365/{aad → entra}/commands/group/group-list.js +16 -12
  37. package/dist/m365/{aad → entra}/commands/group/group-remove.js +21 -17
  38. package/dist/m365/entra/commands/group/group-user-add.js +145 -0
  39. package/dist/m365/{aad → entra}/commands/group/group-user-list.js +19 -15
  40. package/dist/m365/{aad → entra}/commands/groupsetting/groupsetting-add.js +12 -8
  41. package/dist/m365/{aad → entra}/commands/groupsetting/groupsetting-get.js +12 -8
  42. package/dist/m365/{aad → entra}/commands/groupsetting/groupsetting-list.js +7 -3
  43. package/dist/m365/{aad → entra}/commands/groupsetting/groupsetting-remove.js +14 -10
  44. package/dist/m365/{aad → entra}/commands/groupsetting/groupsetting-set.js +12 -8
  45. package/dist/m365/{aad → entra}/commands/groupsettingtemplate/groupsettingtemplate-get.js +17 -13
  46. package/dist/m365/{aad → entra}/commands/groupsettingtemplate/groupsettingtemplate-list.js +7 -3
  47. package/dist/m365/{aad → entra}/commands/license/license-list.js +6 -2
  48. package/dist/m365/{aad → entra}/commands/m365group/m365group-add.js +19 -15
  49. package/dist/m365/{aad → entra}/commands/m365group/m365group-conversation-list.js +14 -10
  50. package/dist/m365/{aad → entra}/commands/m365group/m365group-conversation-post-list.js +19 -15
  51. package/dist/m365/{aad → entra}/commands/m365group/m365group-get.js +15 -11
  52. package/dist/m365/{aad → entra}/commands/m365group/m365group-list.js +12 -8
  53. package/dist/m365/{aad → entra}/commands/m365group/m365group-recyclebinitem-clear.js +12 -8
  54. package/dist/m365/{aad → entra}/commands/m365group/m365group-recyclebinitem-list.js +12 -8
  55. package/dist/m365/{aad → entra}/commands/m365group/m365group-recyclebinitem-remove.js +16 -12
  56. package/dist/m365/{aad → entra}/commands/m365group/m365group-recyclebinitem-restore.js +16 -12
  57. package/dist/m365/{aad → entra}/commands/m365group/m365group-remove.js +19 -15
  58. package/dist/m365/{aad → entra}/commands/m365group/m365group-renew.js +14 -10
  59. package/dist/m365/{aad → entra}/commands/m365group/m365group-report-activitycounts.js +4 -0
  60. package/dist/m365/{aad → entra}/commands/m365group/m365group-report-activitydetail.js +4 -0
  61. package/dist/m365/{aad → entra}/commands/m365group/m365group-report-activityfilecounts.js +4 -0
  62. package/dist/m365/{aad → entra}/commands/m365group/m365group-report-activitygroupcounts.js +4 -0
  63. package/dist/m365/{aad → entra}/commands/m365group/m365group-report-activitystorage.js +4 -0
  64. package/dist/m365/{aad → entra}/commands/m365group/m365group-set.js +21 -17
  65. package/dist/m365/{aad → entra}/commands/m365group/m365group-teamify.js +18 -14
  66. package/dist/m365/{aad → entra}/commands/m365group/m365group-user-add.js +16 -15
  67. package/dist/m365/entra/commands/m365group/m365group-user-list.js +154 -0
  68. package/dist/m365/{aad → entra}/commands/m365group/m365group-user-remove.js +16 -15
  69. package/dist/m365/{aad → entra}/commands/m365group/m365group-user-set.js +16 -15
  70. package/dist/m365/{aad → entra}/commands/oauth2grant/oauth2grant-add.js +12 -8
  71. package/dist/m365/{aad → entra}/commands/oauth2grant/oauth2grant-list.js +12 -8
  72. package/dist/m365/{aad → entra}/commands/oauth2grant/oauth2grant-remove.js +10 -6
  73. package/dist/m365/{aad → entra}/commands/oauth2grant/oauth2grant-set.js +10 -6
  74. package/dist/m365/{aad → entra}/commands/policy/policy-list.js +16 -12
  75. package/dist/m365/{aad → entra}/commands/siteclassification/siteclassification-disable.js +12 -8
  76. package/dist/m365/{aad → entra}/commands/siteclassification/siteclassification-enable.js +12 -8
  77. package/dist/m365/{aad → entra}/commands/siteclassification/siteclassification-get.js +6 -2
  78. package/dist/m365/{aad → entra}/commands/siteclassification/siteclassification-set.js +14 -10
  79. package/dist/m365/{aad → entra}/commands/sp/sp-add.js +17 -13
  80. package/dist/m365/{aad → entra}/commands/sp/sp-get.js +16 -12
  81. package/dist/m365/{aad → entra}/commands/sp/sp-list.js +12 -8
  82. package/dist/m365/{aad → entra}/commands/user/user-add.js +18 -14
  83. package/dist/m365/entra/commands/user/user-get.js +115 -0
  84. package/dist/m365/{aad → entra}/commands/user/user-guest-add.js +12 -8
  85. package/dist/m365/{aad → entra}/commands/user/user-hibp.js +14 -10
  86. package/dist/m365/{aad → entra}/commands/user/user-license-add.js +16 -12
  87. package/dist/m365/{aad → entra}/commands/user/user-license-list.js +16 -12
  88. package/dist/m365/{aad → entra}/commands/user/user-license-remove.js +16 -12
  89. package/dist/m365/{aad → entra}/commands/user/user-list.js +12 -8
  90. package/dist/m365/{aad → entra}/commands/user/user-password-validate.js +10 -6
  91. package/dist/m365/{aad → entra}/commands/user/user-recyclebinitem-clear.js +12 -8
  92. package/dist/m365/{aad → entra}/commands/user/user-recyclebinitem-list.js +6 -2
  93. package/dist/m365/{aad → entra}/commands/user/user-recyclebinitem-remove.js +14 -10
  94. package/dist/m365/{aad → entra}/commands/user/user-recyclebinitem-restore.js +12 -8
  95. package/dist/m365/{aad → entra}/commands/user/user-remove.js +16 -12
  96. package/dist/m365/{aad → entra}/commands/user/user-set.js +18 -14
  97. package/dist/m365/{aad → entra}/commands/user/user-signin-list.js +15 -11
  98. package/dist/m365/entra/commands.js +89 -0
  99. package/dist/m365/external/commands/connection/connection-doctor.js +2 -1
  100. package/dist/m365/external/commands/connection/connection-urltoitemresolver-add.js +69 -0
  101. package/dist/m365/external/commands.js +1 -0
  102. package/dist/m365/file/commands/file-copy.js +151 -0
  103. package/dist/m365/file/commands.js +1 -0
  104. package/dist/m365/flow/commands/owner/owner-ensure.js +4 -4
  105. package/dist/m365/flow/commands/owner/owner-remove.js +4 -4
  106. package/dist/m365/flow/commands/run/run-get.js +52 -13
  107. package/dist/m365/onenote/commands/notebook/notebook-list.js +2 -2
  108. package/dist/m365/onenote/commands/page/page-list.js +2 -2
  109. package/dist/m365/pa/commands/app/app-get.js +26 -11
  110. package/dist/m365/pa/commands/app/app-owner-set.js +2 -2
  111. package/dist/m365/pa/commands/app/app-permission-ensure.js +4 -4
  112. package/dist/m365/pa/commands/app/app-permission-remove.js +4 -4
  113. package/dist/m365/pa/commands/app/app-remove.js +19 -2
  114. package/dist/m365/planner/commands/bucket/bucket-add.js +2 -2
  115. package/dist/m365/planner/commands/bucket/bucket-get.js +2 -2
  116. package/dist/m365/planner/commands/bucket/bucket-list.js +2 -2
  117. package/dist/m365/planner/commands/bucket/bucket-remove.js +2 -2
  118. package/dist/m365/planner/commands/bucket/bucket-set.js +2 -2
  119. package/dist/m365/planner/commands/plan/plan-add.js +2 -2
  120. package/dist/m365/planner/commands/plan/plan-get.js +2 -2
  121. package/dist/m365/planner/commands/plan/plan-list.js +2 -2
  122. package/dist/m365/planner/commands/plan/plan-remove.js +2 -2
  123. package/dist/m365/planner/commands/plan/plan-set.js +2 -2
  124. package/dist/m365/planner/commands/roster/roster-member-add.js +2 -2
  125. package/dist/m365/planner/commands/roster/roster-member-get.js +2 -2
  126. package/dist/m365/planner/commands/roster/roster-member-remove.js +2 -2
  127. package/dist/m365/planner/commands/task/task-add.js +2 -2
  128. package/dist/m365/planner/commands/task/task-get.js +2 -2
  129. package/dist/m365/planner/commands/task/task-list.js +2 -2
  130. package/dist/m365/planner/commands/task/task-remove.js +2 -2
  131. package/dist/m365/planner/commands/task/task-set.js +2 -2
  132. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +1 -1
  133. package/dist/m365/spo/commands/file/file-add.js +12 -8
  134. package/dist/m365/spo/commands/file/file-checkin.js +4 -1
  135. package/dist/m365/spo/commands/file/file-checkout-undo.js +5 -1
  136. package/dist/m365/spo/commands/file/file-checkout.js +4 -1
  137. package/dist/m365/spo/commands/file/file-copy.js +5 -1
  138. package/dist/m365/spo/commands/file/file-get.js +5 -1
  139. package/dist/m365/spo/commands/file/file-list.js +5 -1
  140. package/dist/m365/spo/commands/file/file-move.js +5 -1
  141. package/dist/m365/spo/commands/file/file-remove.js +5 -1
  142. package/dist/m365/spo/commands/file/file-rename.js +5 -1
  143. package/dist/m365/spo/commands/file/file-retentionlabel-ensure.js +4 -1
  144. package/dist/m365/spo/commands/file/file-retentionlabel-remove.js +5 -1
  145. package/dist/m365/spo/commands/file/file-roleassignment-add.js +4 -1
  146. package/dist/m365/spo/commands/file/file-roleassignment-remove.js +5 -1
  147. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +5 -1
  148. package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +5 -1
  149. package/dist/m365/spo/commands/file/file-sharinginfo-get.js +6 -3
  150. package/dist/m365/spo/commands/file/file-sharinglink-add.js +4 -1
  151. package/dist/m365/spo/commands/file/file-sharinglink-clear.js +5 -1
  152. package/dist/m365/spo/commands/file/file-sharinglink-get.js +4 -1
  153. package/dist/m365/spo/commands/file/file-sharinglink-list.js +4 -1
  154. package/dist/m365/spo/commands/file/file-sharinglink-remove.js +5 -1
  155. package/dist/m365/spo/commands/file/file-sharinglink-set.js +4 -1
  156. package/dist/m365/spo/commands/file/file-version-clear.js +6 -2
  157. package/dist/m365/spo/commands/file/file-version-get.js +1 -1
  158. package/dist/m365/spo/commands/file/file-version-list.js +4 -1
  159. package/dist/m365/spo/commands/file/file-version-remove.js +2 -1
  160. package/dist/m365/spo/commands/file/file-version-restore.js +2 -1
  161. package/dist/m365/spo/commands/folder/folder-add.js +4 -1
  162. package/dist/m365/spo/commands/folder/folder-copy.js +5 -1
  163. package/dist/m365/spo/commands/folder/folder-get.js +4 -1
  164. package/dist/m365/spo/commands/folder/folder-list.js +6 -2
  165. package/dist/m365/spo/commands/folder/folder-move.js +5 -1
  166. package/dist/m365/spo/commands/folder/folder-remove.js +5 -1
  167. package/dist/m365/spo/commands/folder/folder-rename.js +4 -1
  168. package/dist/m365/spo/commands/folder/folder-retentionlabel-ensure.js +4 -1
  169. package/dist/m365/spo/commands/folder/folder-retentionlabel-remove.js +5 -1
  170. package/dist/m365/spo/commands/folder/folder-roleassignment-add.js +4 -1
  171. package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +6 -2
  172. package/dist/m365/spo/commands/folder/folder-roleinheritance-break.js +5 -1
  173. package/dist/m365/spo/commands/folder/folder-roleinheritance-reset.js +5 -1
  174. package/dist/m365/spo/commands/group/group-member-add.js +25 -8
  175. package/dist/m365/spo/commands/group/group-member-remove.js +29 -12
  176. package/dist/m365/spo/commands/group/group-set.js +2 -2
  177. package/dist/m365/spo/commands/site/site-remove.js +2 -2
  178. package/dist/m365/spo/commands/site/site-set.js +2 -2
  179. package/dist/m365/spo/commands/user/user-ensure.js +17 -7
  180. package/dist/m365/teams/commands/app/app-install.js +2 -2
  181. package/dist/m365/teams/commands/channel/channel-get.js +2 -2
  182. package/dist/m365/teams/commands/channel/channel-list.js +2 -2
  183. package/dist/m365/teams/commands/channel/channel-member-add.js +2 -2
  184. package/dist/m365/teams/commands/channel/channel-member-list.js +2 -2
  185. package/dist/m365/teams/commands/channel/channel-member-remove.js +2 -2
  186. package/dist/m365/teams/commands/channel/channel-member-set.js +2 -2
  187. package/dist/m365/teams/commands/channel/channel-remove.js +2 -2
  188. package/dist/m365/teams/commands/channel/channel-set.js +2 -2
  189. package/dist/m365/teams/commands/meeting/meeting-add.js +2 -2
  190. package/dist/m365/teams/commands/meeting/meeting-attendancereport-list.js +2 -2
  191. package/dist/m365/teams/commands/meeting/meeting-get.js +3 -3
  192. package/dist/m365/teams/commands/meeting/meeting-list.js +2 -2
  193. package/dist/m365/teams/commands/meeting/meeting-transcript-list.js +2 -2
  194. package/dist/m365/teams/commands/tab/tab-get.js +2 -2
  195. package/dist/m365/teams/commands/team/team-add.js +6 -6
  196. package/dist/m365/teams/commands/team/team-archive.js +2 -2
  197. package/dist/m365/teams/commands/team/team-get.js +2 -2
  198. package/dist/m365/teams/commands/team/team-remove.js +2 -2
  199. package/dist/m365/teams/commands/team/team-unarchive.js +2 -2
  200. package/dist/m365/teams/commands/user/user-app-add.js +35 -3
  201. package/dist/request.js +16 -0
  202. package/dist/utils/{aadAdministrativeUnit.js → entraAdministrativeUnit.js} +2 -2
  203. package/dist/utils/{aadDevice.js → entraDevice.js} +2 -2
  204. package/dist/utils/{aadGroup.js → entraGroup.js} +2 -2
  205. package/dist/utils/{aadUser.js → entraUser.js} +38 -2
  206. package/dist/utils/md.js +2 -2
  207. package/dist/utils/roleAssignment.js +42 -0
  208. package/dist/utils/roleDefinition.js +24 -0
  209. package/dist/utils/spo.js +24 -2
  210. package/dist/utils/urlUtil.js +31 -0
  211. package/dist/utils/validation.js +8 -0
  212. package/docs/docs/cmd/adaptivecard/adaptivecard-send.mdx +1 -1
  213. package/docs/docs/cmd/{aad → entra}/administrativeunit/administrativeunit-add.mdx +10 -4
  214. package/docs/docs/cmd/{aad → entra}/administrativeunit/administrativeunit-get.mdx +9 -3
  215. package/docs/docs/cmd/{aad → entra}/administrativeunit/administrativeunit-list.mdx +9 -3
  216. package/docs/docs/cmd/{aad → entra}/administrativeunit/administrativeunit-member-add.mdx +13 -7
  217. package/docs/docs/cmd/{aad → entra}/administrativeunit/administrativeunit-member-get.mdx +9 -3
  218. package/docs/docs/cmd/{aad → entra}/administrativeunit/administrativeunit-member-list.mdx +16 -10
  219. package/docs/docs/cmd/{aad → entra}/administrativeunit/administrativeunit-remove.mdx +9 -3
  220. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-roleassignment-add.mdx +116 -0
  221. package/docs/docs/cmd/{aad → entra}/app/app-add.mdx +44 -38
  222. package/docs/docs/cmd/{aad → entra}/app/app-get.mdx +23 -17
  223. package/docs/docs/cmd/{aad → entra}/app/app-list.mdx +11 -5
  224. package/docs/docs/cmd/entra/app/app-permission-add.mdx +68 -0
  225. package/docs/docs/cmd/entra/app/app-permission-list.mdx +105 -0
  226. package/docs/docs/cmd/entra/app/app-remove.mdx +65 -0
  227. package/docs/docs/cmd/entra/app/app-role-add.mdx +74 -0
  228. package/docs/docs/cmd/{aad → entra}/app/app-role-list.mdx +20 -14
  229. package/docs/docs/cmd/entra/app/app-role-remove.mdx +84 -0
  230. package/docs/docs/cmd/entra/app/app-set.mdx +103 -0
  231. package/docs/docs/cmd/{aad → entra}/approleassignment/approleassignment-add.mdx +14 -8
  232. package/docs/docs/cmd/{aad → entra}/approleassignment/approleassignment-list.mdx +12 -6
  233. package/docs/docs/cmd/{aad → entra}/approleassignment/approleassignment-remove.mdx +13 -7
  234. package/docs/docs/cmd/entra/group/group-add.mdx +231 -0
  235. package/docs/docs/cmd/{aad → entra}/group/group-get.mdx +15 -9
  236. package/docs/docs/cmd/{aad → entra}/group/group-list.mdx +13 -7
  237. package/docs/docs/cmd/entra/group/group-remove.mdx +50 -0
  238. package/docs/docs/cmd/entra/group/group-user-add.mdx +62 -0
  239. package/docs/docs/cmd/{aad → entra}/group/group-user-list.mdx +17 -11
  240. package/docs/docs/cmd/{aad → entra}/groupsetting/groupsetting-add.mdx +11 -5
  241. package/docs/docs/cmd/{aad → entra}/groupsetting/groupsetting-get.mdx +9 -3
  242. package/docs/docs/cmd/{aad → entra}/groupsetting/groupsetting-list.mdx +10 -4
  243. package/docs/docs/cmd/{aad → entra}/groupsetting/groupsetting-remove.mdx +9 -3
  244. package/docs/docs/cmd/{aad → entra}/groupsetting/groupsetting-set.mdx +10 -4
  245. package/docs/docs/cmd/{aad → entra}/groupsettingtemplate/groupsettingtemplate-get.mdx +11 -5
  246. package/docs/docs/cmd/{aad → entra}/groupsettingtemplate/groupsettingtemplate-list.mdx +10 -4
  247. package/docs/docs/cmd/{aad → entra}/license/license-list.mdx +9 -3
  248. package/docs/docs/cmd/{aad → entra}/m365group/m365group-add.mdx +17 -11
  249. package/docs/docs/cmd/{aad → entra}/m365group/m365group-conversation-list.mdx +9 -3
  250. package/docs/docs/cmd/{aad → entra}/m365group/m365group-conversation-post-list.mdx +10 -4
  251. package/docs/docs/cmd/{aad → entra}/m365group/m365group-get.mdx +10 -4
  252. package/docs/docs/cmd/{aad → entra}/m365group/m365group-list.mdx +13 -7
  253. package/docs/docs/cmd/{aad → entra}/m365group/m365group-recyclebinitem-clear.mdx +9 -3
  254. package/docs/docs/cmd/{aad → entra}/m365group/m365group-recyclebinitem-list.mdx +12 -6
  255. package/docs/docs/cmd/{aad → entra}/m365group/m365group-recyclebinitem-remove.mdx +10 -4
  256. package/docs/docs/cmd/{aad → entra}/m365group/m365group-recyclebinitem-restore.mdx +10 -4
  257. package/docs/docs/cmd/{aad → entra}/m365group/m365group-remove.mdx +10 -4
  258. package/docs/docs/cmd/{aad → entra}/m365group/m365group-renew.mdx +8 -2
  259. package/docs/docs/cmd/{aad → entra}/m365group/m365group-report-activitycounts.mdx +10 -4
  260. package/docs/docs/cmd/{aad → entra}/m365group/m365group-report-activitydetail.mdx +11 -5
  261. package/docs/docs/cmd/{aad → entra}/m365group/m365group-report-activityfilecounts.mdx +10 -4
  262. package/docs/docs/cmd/{aad → entra}/m365group/m365group-report-activitygroupcounts.mdx +10 -4
  263. package/docs/docs/cmd/{aad → entra}/m365group/m365group-report-activitystorage.mdx +10 -4
  264. package/docs/docs/cmd/{aad → entra}/m365group/m365group-set.mdx +12 -6
  265. package/docs/docs/cmd/{aad → entra}/m365group/m365group-teamify.mdx +9 -3
  266. package/docs/docs/cmd/{aad → entra}/m365group/m365group-user-add.mdx +9 -3
  267. package/docs/docs/cmd/entra/m365group/m365group-user-list.mdx +131 -0
  268. package/docs/docs/cmd/{aad → entra}/m365group/m365group-user-remove.mdx +9 -5
  269. package/docs/docs/cmd/{aad → entra}/m365group/m365group-user-set.mdx +10 -6
  270. package/docs/docs/cmd/{aad → entra}/oauth2grant/oauth2grant-add.mdx +15 -9
  271. package/docs/docs/cmd/{aad → entra}/oauth2grant/oauth2grant-list.mdx +11 -5
  272. package/docs/docs/cmd/{aad → entra}/oauth2grant/oauth2grant-remove.mdx +13 -7
  273. package/docs/docs/cmd/{aad → entra}/oauth2grant/oauth2grant-set.mdx +12 -6
  274. package/docs/docs/cmd/{aad → entra}/policy/policy-list.mdx +14 -8
  275. package/docs/docs/cmd/{aad → entra}/siteclassification/siteclassification-disable.mdx +9 -3
  276. package/docs/docs/cmd/{aad → entra}/siteclassification/siteclassification-enable.mdx +10 -4
  277. package/docs/docs/cmd/{aad → entra}/siteclassification/siteclassification-get.mdx +9 -3
  278. package/docs/docs/cmd/{aad → entra}/siteclassification/siteclassification-set.mdx +11 -5
  279. package/docs/docs/cmd/{aad → entra}/sp/sp-add.mdx +25 -19
  280. package/docs/docs/cmd/{aad → entra}/sp/sp-get.mdx +12 -6
  281. package/docs/docs/cmd/{aad → entra}/sp/sp-list.mdx +10 -4
  282. package/docs/docs/cmd/{aad → entra}/user/user-add.mdx +12 -6
  283. package/docs/docs/cmd/{aad → entra}/user/user-get.mdx +16 -10
  284. package/docs/docs/cmd/{aad → entra}/user/user-guest-add.mdx +11 -5
  285. package/docs/docs/cmd/{aad → entra}/user/user-hibp.mdx +10 -4
  286. package/docs/docs/cmd/{aad → entra}/user/user-license-add.mdx +10 -4
  287. package/docs/docs/cmd/{aad → entra}/user/user-license-list.mdx +11 -5
  288. package/docs/docs/cmd/{aad → entra}/user/user-license-remove.mdx +9 -3
  289. package/docs/docs/cmd/{aad → entra}/user/user-list.mdx +12 -6
  290. package/docs/docs/cmd/{aad → entra}/user/user-password-validate.mdx +9 -3
  291. package/docs/docs/cmd/{aad → entra}/user/user-recyclebinitem-clear.mdx +9 -3
  292. package/docs/docs/cmd/{aad → entra}/user/user-recyclebinitem-list.mdx +9 -3
  293. package/docs/docs/cmd/{aad → entra}/user/user-recyclebinitem-remove.mdx +9 -3
  294. package/docs/docs/cmd/{aad → entra}/user/user-recyclebinitem-restore.mdx +8 -2
  295. package/docs/docs/cmd/{aad → entra}/user/user-remove.mdx +9 -3
  296. package/docs/docs/cmd/{aad → entra}/user/user-set.mdx +15 -9
  297. package/docs/docs/cmd/{aad → entra}/user/user-signin-list.mdx +19 -13
  298. package/docs/docs/cmd/external/connection/connection-urltoitemresolver-add.mdx +47 -0
  299. package/docs/docs/cmd/file/file-copy.mdx +68 -0
  300. package/docs/docs/cmd/flow/run/run-get.mdx +167 -4
  301. package/docs/docs/cmd/graph/schemaextension/schemaextension-add.mdx +1 -1
  302. package/docs/docs/cmd/graph/schemaextension/schemaextension-set.mdx +1 -1
  303. package/docs/docs/cmd/pa/app/app-get.mdx +15 -0
  304. package/docs/docs/cmd/pa/app/app-remove.mdx +14 -0
  305. package/docs/docs/cmd/planner/plan/plan-add.mdx +1 -1
  306. package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-add.mdx +1 -1
  307. package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-set.mdx +1 -1
  308. package/docs/docs/cmd/spo/commandset/commandset-add.mdx +1 -1
  309. package/docs/docs/cmd/spo/commandset/commandset-set.mdx +1 -1
  310. package/docs/docs/cmd/spo/contenttype/contenttype-set.mdx +1 -1
  311. package/docs/docs/cmd/spo/customaction/customaction-add.mdx +1 -1
  312. package/docs/docs/cmd/spo/customaction/customaction-set.mdx +1 -1
  313. package/docs/docs/cmd/spo/field/field-set.mdx +1 -1
  314. package/docs/docs/cmd/spo/group/group-member-add.mdx +19 -7
  315. package/docs/docs/cmd/spo/group/group-member-remove.mdx +12 -6
  316. package/docs/docs/cmd/spo/list/list-view-set.mdx +1 -1
  317. package/docs/docs/cmd/spo/listitem/listitem-add.mdx +1 -1
  318. package/docs/docs/cmd/spo/listitem/listitem-batch-add.mdx +1 -1
  319. package/docs/docs/cmd/spo/listitem/listitem-list.mdx +1 -1
  320. package/docs/docs/cmd/spo/listitem/listitem-set.mdx +1 -1
  321. package/docs/docs/cmd/spo/page/page-clientsidewebpart-add.mdx +1 -1
  322. package/docs/docs/cmd/spo/page/page-control-set.mdx +1 -1
  323. package/docs/docs/cmd/spo/page/page-set.mdx +2 -2
  324. package/docs/docs/cmd/spo/site/site-add.mdx +1 -1
  325. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-add.mdx +1 -1
  326. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-set.mdx +1 -1
  327. package/docs/docs/cmd/spo/tenant/tenant-commandset-add.mdx +1 -1
  328. package/docs/docs/cmd/spo/tenant/tenant-commandset-set.mdx +1 -1
  329. package/docs/docs/cmd/spo/term/term-add.mdx +1 -1
  330. package/docs/docs/cmd/spo/term/term-group-add.mdx +1 -1
  331. package/docs/docs/cmd/spo/term/term-set-add.mdx +1 -1
  332. package/docs/docs/cmd/spo/user/user-ensure.mdx +8 -5
  333. package/docs/docs/cmd/teams/team/team-add.mdx +1 -1
  334. package/docs/docs/cmd/teams/user/user-app-add.mdx +8 -5
  335. package/npm-shrinkwrap.json +298 -542
  336. package/package.json +21 -21
  337. package/dist/m365/aad/commands/m365group/m365group-user-list.js +0 -94
  338. package/dist/m365/aad/commands/user/user-get.js +0 -111
  339. package/docs/docs/cmd/aad/app/app-permission-add.mdx +0 -62
  340. package/docs/docs/cmd/aad/app/app-remove.mdx +0 -59
  341. package/docs/docs/cmd/aad/app/app-role-add.mdx +0 -68
  342. package/docs/docs/cmd/aad/app/app-role-remove.mdx +0 -78
  343. package/docs/docs/cmd/aad/app/app-set.mdx +0 -97
  344. package/docs/docs/cmd/aad/group/group-remove.mdx +0 -44
  345. package/docs/docs/cmd/aad/m365group/m365group-user-list.mdx +0 -99
  346. /package/dist/m365/{aad → entra}/commands/approleassignment/ServicePrincipal.js +0 -0
  347. /package/dist/m365/{aad → entra}/commands/m365group/GroupExtended.js +0 -0
  348. /package/dist/m365/{aad → entra}/commands/siteclassification/SiteClassificationSettings.js +0 -0
@@ -5,7 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
5
5
  };
6
6
  var _TeamsMeetingAddCommand_instances, _TeamsMeetingAddCommand_initTelemetry, _TeamsMeetingAddCommand_initOptions, _TeamsMeetingAddCommand_initValidators;
7
7
  import auth from '../../../../Auth.js';
8
- import { aadUser } from '../../../../utils/aadUser.js';
8
+ import { entraUser } from '../../../../utils/entraUser.js';
9
9
  import { accessToken } from '../../../../utils/accessToken.js';
10
10
  import { validation } from '../../../../utils/validation.js';
11
11
  import GraphCommand from "../../../base/GraphCommand.js";
@@ -53,7 +53,7 @@ class TeamsMeetingAddCommand extends GraphCommand {
53
53
  if (this.verbose) {
54
54
  await logger.logToStderr(`Retrieving Organizer Id...`);
55
55
  }
56
- const organizerId = await aadUser.getUserIdByEmail(options.organizerEmail);
56
+ const organizerId = await entraUser.getUserIdByEmail(options.organizerEmail);
57
57
  requestUrl = `${this.resource}/v1.0/users/${organizerId}`;
58
58
  }
59
59
  if (this.verbose) {
@@ -9,7 +9,7 @@ import { cli } from '../../../../cli/cli.js';
9
9
  import { accessToken } from '../../../../utils/accessToken.js';
10
10
  import { odata } from '../../../../utils/odata.js';
11
11
  import { validation } from '../../../../utils/validation.js';
12
- import aadUserGetCommand from '../../../aad/commands/user/user-get.js';
12
+ import entraUserGetCommand from '../../../entra/commands/user/user-get.js';
13
13
  import GraphCommand from "../../../base/GraphCommand.js";
14
14
  import commands from '../../commands.js';
15
15
  class TeamsMeetingAttendancereportListCommand extends GraphCommand {
@@ -71,7 +71,7 @@ class TeamsMeetingAttendancereportListCommand extends GraphCommand {
71
71
  debug: this.debug,
72
72
  verbose: this.verbose
73
73
  };
74
- const output = await cli.executeCommandWithOutput(aadUserGetCommand, { options: { ...options, _: [] } });
74
+ const output = await cli.executeCommandWithOutput(entraUserGetCommand, { options: { ...options, _: [] } });
75
75
  const getUserOutput = JSON.parse(output.stdout);
76
76
  return getUserOutput.id;
77
77
  }
@@ -6,7 +6,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
6
6
  var _TeamsMeetingGetCommand_instances, _TeamsMeetingGetCommand_initTelemetry, _TeamsMeetingGetCommand_initOptions, _TeamsMeetingGetCommand_initValidators;
7
7
  import auth from '../../../../Auth.js';
8
8
  import request from '../../../../request.js';
9
- import { aadUser } from '../../../../utils/aadUser.js';
9
+ import { entraUser } from '../../../../utils/entraUser.js';
10
10
  import { accessToken } from '../../../../utils/accessToken.js';
11
11
  import { formatting } from '../../../../utils/formatting.js';
12
12
  import { validation } from '../../../../utils/validation.js';
@@ -76,9 +76,9 @@ class TeamsMeetingGetCommand extends GraphCommand {
76
76
  return options.userId;
77
77
  }
78
78
  if (options.userName) {
79
- return aadUser.getUserIdByUpn(options.userName);
79
+ return entraUser.getUserIdByUpn(options.userName);
80
80
  }
81
- return aadUser.getUserIdByEmail(options.email);
81
+ return entraUser.getUserIdByEmail(options.email);
82
82
  }
83
83
  }
84
84
  _TeamsMeetingGetCommand_instances = new WeakSet(), _TeamsMeetingGetCommand_initTelemetry = function _TeamsMeetingGetCommand_initTelemetry() {
@@ -5,7 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
5
5
  };
6
6
  var _TeamsMeetingListCommand_instances, _TeamsMeetingListCommand_initTelemetry, _TeamsMeetingListCommand_initOptions, _TeamsMeetingListCommand_initValidators;
7
7
  import auth from '../../../../Auth.js';
8
- import { aadUser } from '../../../../utils/aadUser.js';
8
+ import { entraUser } from '../../../../utils/entraUser.js';
9
9
  import { accessToken } from '../../../../utils/accessToken.js';
10
10
  import { odata } from '../../../../utils/odata.js';
11
11
  import { validation } from '../../../../utils/validation.js';
@@ -60,7 +60,7 @@ class TeamsMeetingListCommand extends GraphCommand {
60
60
  requestUrl += `users/${options.userId || options.userName}`;
61
61
  }
62
62
  else if (options.email) {
63
- const userId = await aadUser.getUserIdByEmail(options.email);
63
+ const userId = await entraUser.getUserIdByEmail(options.email);
64
64
  requestUrl += `users/${userId}`;
65
65
  }
66
66
  else {
@@ -5,7 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
5
5
  };
6
6
  var _TeamsMeetingTranscriptListCommand_instances, _TeamsMeetingTranscriptListCommand_initTelemetry, _TeamsMeetingTranscriptListCommand_initOptions, _TeamsMeetingTranscriptListCommand_initValidators, _TeamsMeetingTranscriptListCommand_initOptionSets;
7
7
  import auth from '../../../../Auth.js';
8
- import { aadUser } from '../../../../utils/aadUser.js';
8
+ import { entraUser } from '../../../../utils/entraUser.js';
9
9
  import { accessToken } from '../../../../utils/accessToken.js';
10
10
  import { odata } from '../../../../utils/odata.js';
11
11
  import { validation } from '../../../../utils/validation.js';
@@ -51,7 +51,7 @@ class TeamsMeetingTranscriptListCommand extends GraphCommand {
51
51
  if (this.verbose) {
52
52
  await logger.logToStderr(`Getting user ID for user with email '${args.options.email}'.`);
53
53
  }
54
- const userId = await aadUser.getUserIdByEmail(args.options.email);
54
+ const userId = await entraUser.getUserIdByEmail(args.options.email);
55
55
  requestUrl += userId;
56
56
  }
57
57
  }
@@ -5,7 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
5
5
  };
6
6
  var _TeamsTabGetCommand_instances, _TeamsTabGetCommand_initTelemetry, _TeamsTabGetCommand_initOptions, _TeamsTabGetCommand_initValidators, _TeamsTabGetCommand_initOptionSets;
7
7
  import request from '../../../../request.js';
8
- import { aadGroup } from '../../../../utils/aadGroup.js';
8
+ import { entraGroup } from '../../../../utils/entraGroup.js';
9
9
  import { formatting } from '../../../../utils/formatting.js';
10
10
  import { validation } from '../../../../utils/validation.js';
11
11
  import GraphCommand from '../../../base/GraphCommand.js';
@@ -31,7 +31,7 @@ class TeamsTabGetCommand extends GraphCommand {
31
31
  if (args.options.teamId) {
32
32
  return args.options.teamId;
33
33
  }
34
- const group = await aadGroup.getGroupByDisplayName(args.options.teamName);
34
+ const group = await entraGroup.getGroupByDisplayName(args.options.teamName);
35
35
  if (group.resourceProvisioningOptions.indexOf('Team') === -1) {
36
36
  throw 'The specified team does not exist in the Microsoft Teams';
37
37
  }
@@ -6,7 +6,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
6
6
  var _TeamsTeamAddCommand_instances, _TeamsTeamAddCommand_initTelemetry, _TeamsTeamAddCommand_initOptions, _TeamsTeamAddCommand_initOptionSets;
7
7
  import { setTimeout } from 'timers/promises';
8
8
  import request from '../../../../request.js';
9
- import { aadGroup } from '../../../../utils/aadGroup.js';
9
+ import { entraGroup } from '../../../../utils/entraGroup.js';
10
10
  import GraphCommand from '../../../base/GraphCommand.js';
11
11
  import commands from '../../commands.js';
12
12
  class TeamsTeamAddCommand extends GraphCommand {
@@ -77,8 +77,8 @@ class TeamsTeamAddCommand extends GraphCommand {
77
77
  }
78
78
  else {
79
79
  await this.waitUntilTeamFinishedProvisioning(teamsAsyncOperation, requestOptions, logger);
80
- const aadGroup = await this.getAadGroup(teamsAsyncOperation.targetResourceId, logger);
81
- await logger.log(aadGroup);
80
+ const entraGroup = await this.getEntraGroup(teamsAsyncOperation.targetResourceId, logger);
81
+ await logger.log(entraGroup);
82
82
  }
83
83
  }
84
84
  catch (err) {
@@ -104,17 +104,17 @@ class TeamsTeamAddCommand extends GraphCommand {
104
104
  await this.waitUntilTeamFinishedProvisioning(teamsAsyncOperation, requestOptions, logger);
105
105
  }
106
106
  }
107
- async getAadGroup(id, logger) {
107
+ async getEntraGroup(id, logger) {
108
108
  let group;
109
109
  try {
110
- group = await aadGroup.getGroupById(id);
110
+ group = await entraGroup.getGroupById(id);
111
111
  }
112
112
  catch {
113
113
  if (this.verbose) {
114
114
  await logger.logToStderr(`Error occurred on retrieving the aad group. Retrying in ${this.pollingInterval / 1000} seconds.`);
115
115
  }
116
116
  await setTimeout(this.pollingInterval);
117
- return await this.getAadGroup(id, logger);
117
+ return await this.getEntraGroup(id, logger);
118
118
  }
119
119
  return group;
120
120
  }
@@ -5,7 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
5
5
  };
6
6
  var _TeamsTeamArchiveCommand_instances, _TeamsTeamArchiveCommand_initTelemetry, _TeamsTeamArchiveCommand_initOptions, _TeamsTeamArchiveCommand_initValidators, _TeamsTeamArchiveCommand_initOptionSets;
7
7
  import request from '../../../../request.js';
8
- import { aadGroup } from '../../../../utils/aadGroup.js';
8
+ import { entraGroup } from '../../../../utils/entraGroup.js';
9
9
  import { formatting } from '../../../../utils/formatting.js';
10
10
  import { validation } from '../../../../utils/validation.js';
11
11
  import GraphCommand from '../../../base/GraphCommand.js';
@@ -29,7 +29,7 @@ class TeamsTeamArchiveCommand extends GraphCommand {
29
29
  if (args.options.id) {
30
30
  return args.options.id;
31
31
  }
32
- const group = await aadGroup.getGroupByDisplayName(args.options.name);
32
+ const group = await entraGroup.getGroupByDisplayName(args.options.name);
33
33
  if (group.resourceProvisioningOptions.indexOf('Team') === -1) {
34
34
  throw 'The specified team does not exist in the Microsoft Teams';
35
35
  }
@@ -5,7 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
5
5
  };
6
6
  var _TeamsTeamGetCommand_instances, _TeamsTeamGetCommand_initTelemetry, _TeamsTeamGetCommand_initOptions, _TeamsTeamGetCommand_initValidators, _TeamsTeamGetCommand_initOptionSets;
7
7
  import request from '../../../../request.js';
8
- import { aadGroup } from '../../../../utils/aadGroup.js';
8
+ import { entraGroup } from '../../../../utils/entraGroup.js';
9
9
  import { formatting } from '../../../../utils/formatting.js';
10
10
  import { validation } from '../../../../utils/validation.js';
11
11
  import GraphCommand from '../../../base/GraphCommand.js';
@@ -29,7 +29,7 @@ class TeamsTeamGetCommand extends GraphCommand {
29
29
  if (args.options.id) {
30
30
  return args.options.id;
31
31
  }
32
- const group = await aadGroup.getGroupByDisplayName(args.options.name);
32
+ const group = await entraGroup.getGroupByDisplayName(args.options.name);
33
33
  if (group.resourceProvisioningOptions.indexOf('Team') === -1) {
34
34
  throw 'The specified team does not exist in the Microsoft Teams';
35
35
  }
@@ -6,7 +6,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
6
6
  var _TeamsTeamRemoveCommand_instances, _TeamsTeamRemoveCommand_initTelemetry, _TeamsTeamRemoveCommand_initOptions, _TeamsTeamRemoveCommand_initValidators, _TeamsTeamRemoveCommand_initOptionSets;
7
7
  import { cli } from '../../../../cli/cli.js';
8
8
  import request from '../../../../request.js';
9
- import { aadGroup } from '../../../../utils/aadGroup.js';
9
+ import { entraGroup } from '../../../../utils/entraGroup.js';
10
10
  import { formatting } from '../../../../utils/formatting.js';
11
11
  import { validation } from '../../../../utils/validation.js';
12
12
  import GraphCommand from '../../../base/GraphCommand.js';
@@ -30,7 +30,7 @@ class TeamsTeamRemoveCommand extends GraphCommand {
30
30
  if (args.options.id) {
31
31
  return args.options.id;
32
32
  }
33
- const group = await aadGroup.getGroupByDisplayName(args.options.name);
33
+ const group = await entraGroup.getGroupByDisplayName(args.options.name);
34
34
  if (group.resourceProvisioningOptions.indexOf('Team') === -1) {
35
35
  throw `The specified team does not exist in the Microsoft Teams`;
36
36
  }
@@ -5,7 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
5
5
  };
6
6
  var _TeamsTeamUnarchiveCommand_instances, _TeamsTeamUnarchiveCommand_initOptions, _TeamsTeamUnarchiveCommand_initValidators, _TeamsTeamUnarchiveCommand_initOptionSets;
7
7
  import request from '../../../../request.js';
8
- import { aadGroup } from '../../../../utils/aadGroup.js';
8
+ import { entraGroup } from '../../../../utils/entraGroup.js';
9
9
  import { formatting } from '../../../../utils/formatting.js';
10
10
  import { validation } from '../../../../utils/validation.js';
11
11
  import GraphCommand from '../../../base/GraphCommand.js';
@@ -28,7 +28,7 @@ class TeamsTeamUnarchiveCommand extends GraphCommand {
28
28
  if (args.options.id) {
29
29
  return args.options.id;
30
30
  }
31
- const group = await aadGroup.getGroupByDisplayName(args.options.name);
31
+ const group = await entraGroup.getGroupByDisplayName(args.options.name);
32
32
  if (group.resourceProvisioningOptions.indexOf('Team') === -1) {
33
33
  throw 'The specified team does not exist in the Microsoft Teams';
34
34
  }
@@ -4,6 +4,7 @@ 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 _TeamsUserAppAddCommand_instances, _TeamsUserAppAddCommand_initTelemetry, _TeamsUserAppAddCommand_initOptions, _TeamsUserAppAddCommand_initValidators, _TeamsUserAppAddCommand_initOptionSets;
7
+ import { cli } from '../../../../cli/cli.js';
7
8
  import request from '../../../../request.js';
8
9
  import { formatting } from '../../../../utils/formatting.js';
9
10
  import { validation } from '../../../../utils/validation.js';
@@ -25,8 +26,12 @@ class TeamsUserAppAddCommand extends GraphCommand {
25
26
  __classPrivateFieldGet(this, _TeamsUserAppAddCommand_instances, "m", _TeamsUserAppAddCommand_initOptionSets).call(this);
26
27
  }
27
28
  async commandAction(logger, args) {
29
+ const appId = await this.getAppId(args);
28
30
  const userId = (args.options.userId ?? args.options.userName);
29
31
  const endpoint = `${this.resource}/v1.0`;
32
+ if (this.verbose) {
33
+ await logger.logToStderr(`Removing app with ID ${appId} for user ${args.options.userId}`);
34
+ }
30
35
  const requestOptions = {
31
36
  url: `${endpoint}/users/${formatting.encodeQueryParameter(userId)}/teamwork/installedApps`,
32
37
  headers: {
@@ -35,7 +40,7 @@ class TeamsUserAppAddCommand extends GraphCommand {
35
40
  },
36
41
  responseType: 'json',
37
42
  data: {
38
- 'teamsApp@odata.bind': `${endpoint}/appCatalogs/teamsApps/${args.options.id}`
43
+ 'teamsApp@odata.bind': `${endpoint}/appCatalogs/teamsApps/${appId}`
39
44
  }
40
45
  };
41
46
  try {
@@ -45,17 +50,43 @@ class TeamsUserAppAddCommand extends GraphCommand {
45
50
  this.handleRejectedODataJsonPromise(err);
46
51
  }
47
52
  }
53
+ async getAppId(args) {
54
+ if (args.options.id) {
55
+ return args.options.id;
56
+ }
57
+ const requestOptions = {
58
+ url: `${this.resource}/v1.0/appCatalogs/teamsApps?$filter=displayName eq '${formatting.encodeQueryParameter(args.options.name)}'`,
59
+ headers: {
60
+ accept: 'application/json;odata.metadata=none'
61
+ },
62
+ responseType: 'json'
63
+ };
64
+ const response = await request.get(requestOptions);
65
+ if (response.value.length === 1) {
66
+ return response.value[0].id;
67
+ }
68
+ if (response.value.length === 0) {
69
+ throw `The specified Teams app does not exist`;
70
+ }
71
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', response.value);
72
+ const result = (await cli.handleMultipleResultsFound(`Multiple Teams apps with name '${args.options.name}' found.`, resultAsKeyValuePair));
73
+ return result.id;
74
+ }
48
75
  }
49
76
  _TeamsUserAppAddCommand_instances = new WeakSet(), _TeamsUserAppAddCommand_initTelemetry = function _TeamsUserAppAddCommand_initTelemetry() {
50
77
  this.telemetry.push((args) => {
51
78
  Object.assign(this.telemetryProperties, {
79
+ id: typeof args.options.id !== 'undefined',
80
+ name: typeof args.options.name !== 'undefined',
52
81
  userId: typeof args.options.userId !== 'undefined',
53
82
  userName: typeof args.options.userName !== 'undefined'
54
83
  });
55
84
  });
56
85
  }, _TeamsUserAppAddCommand_initOptions = function _TeamsUserAppAddCommand_initOptions() {
57
86
  this.options.unshift({
58
- option: '--id <id>'
87
+ option: '--id [id]'
88
+ }, {
89
+ option: '--name [name]'
59
90
  }, {
60
91
  option: '--userId [userId]'
61
92
  }, {
@@ -63,7 +94,7 @@ _TeamsUserAppAddCommand_instances = new WeakSet(), _TeamsUserAppAddCommand_initT
63
94
  });
64
95
  }, _TeamsUserAppAddCommand_initValidators = function _TeamsUserAppAddCommand_initValidators() {
65
96
  this.validators.push(async (args) => {
66
- if (!validation.isValidGuid(args.options.id)) {
97
+ if (args.options.id && !validation.isValidGuid(args.options.id)) {
67
98
  return `${args.options.id} is not a valid GUID`;
68
99
  }
69
100
  if (args.options.userId && !validation.isValidGuid(args.options.userId)) {
@@ -75,6 +106,7 @@ _TeamsUserAppAddCommand_instances = new WeakSet(), _TeamsUserAppAddCommand_initT
75
106
  return true;
76
107
  });
77
108
  }, _TeamsUserAppAddCommand_initOptionSets = function _TeamsUserAppAddCommand_initOptionSets() {
109
+ this.optionSets.push({ options: ['id', 'name'] });
78
110
  this.optionSets.push({ options: ['userId', 'userName'] });
79
111
  };
80
112
  export default new TeamsUserAppAddCommand();
package/dist/request.js CHANGED
@@ -154,6 +154,10 @@ class Request {
154
154
  options.headers.authorization = `Bearer ${accessToken}`;
155
155
  }
156
156
  }
157
+ const proxyUrl = process.env.HTTP_PROXY || process.env.HTTPS_PROXY;
158
+ if (proxyUrl) {
159
+ options.proxy = this.createProxyConfigFromUrl(proxyUrl);
160
+ }
157
161
  return this.req(options);
158
162
  })
159
163
  .then((res) => {
@@ -199,6 +203,18 @@ class Request {
199
203
  const cloudUrl = Auth.getEndpointForResource(hostname, cloudType);
200
204
  options.url = options.url.replace(hostname, cloudUrl);
201
205
  }
206
+ createProxyConfigFromUrl(url) {
207
+ const parsedUrl = new URL(url);
208
+ const port = parsedUrl.port || (url.toLowerCase().startsWith('https') ? 443 : 80);
209
+ let authObject = null;
210
+ if (parsedUrl.username && parsedUrl.password) {
211
+ authObject = {
212
+ username: parsedUrl.username,
213
+ password: parsedUrl.password
214
+ };
215
+ }
216
+ return { host: parsedUrl.hostname, port: Number(port), protocol: 'http', ...(authObject && { auth: authObject }) };
217
+ }
202
218
  }
203
219
  export default new Request();
204
220
  //# sourceMappingURL=request.js.map
@@ -1,7 +1,7 @@
1
1
  import { odata } from './odata.js';
2
2
  import { formatting } from './formatting.js';
3
3
  import { cli } from '../cli/cli.js';
4
- export const aadAdministrativeUnit = {
4
+ export const entraAdministrativeUnit = {
5
5
  /**
6
6
  * Get an administrative unit by its display name.
7
7
  * @param displayName Administrative unit display name.
@@ -22,4 +22,4 @@ export const aadAdministrativeUnit = {
22
22
  return administrativeUnits[0];
23
23
  }
24
24
  };
25
- //# sourceMappingURL=aadAdministrativeUnit.js.map
25
+ //# sourceMappingURL=entraAdministrativeUnit.js.map
@@ -2,7 +2,7 @@ import { odata } from "./odata.js";
2
2
  import { formatting } from "./formatting.js";
3
3
  import { cli } from "../cli/cli.js";
4
4
  const graphResource = 'https://graph.microsoft.com';
5
- export const aadDevice = {
5
+ export const entraDevice = {
6
6
  /**
7
7
  * Get a device by its display name.
8
8
  * @param displayName Device display name.
@@ -22,4 +22,4 @@ export const aadDevice = {
22
22
  return devices[0];
23
23
  }
24
24
  };
25
- //# sourceMappingURL=aadDevice.js.map
25
+ //# sourceMappingURL=entraDevice.js.map
@@ -3,7 +3,7 @@ import { formatting } from "./formatting.js";
3
3
  import { odata } from "./odata.js";
4
4
  import { cli } from '../cli/cli.js';
5
5
  const graphResource = 'https://graph.microsoft.com';
6
- export const aadGroup = {
6
+ export const entraGroup = {
7
7
  /**
8
8
  * Retrieve a single group.
9
9
  * @param id Group ID.
@@ -95,4 +95,4 @@ export const aadGroup = {
95
95
  return group.groupTypes.some(type => type === 'Unified');
96
96
  }
97
97
  };
98
- //# sourceMappingURL=aadGroup.js.map
98
+ //# sourceMappingURL=entraGroup.js.map
@@ -1,7 +1,7 @@
1
1
  import request from "../request.js";
2
2
  import { formatting } from "./formatting.js";
3
3
  const graphResource = 'https://graph.microsoft.com';
4
- export const aadUser = {
4
+ export const entraUser = {
5
5
  /**
6
6
  * Retrieve the id of a user by its UPN.
7
7
  * @param upn User UPN.
@@ -20,6 +20,42 @@ export const aadUser = {
20
20
  }
21
21
  return res.value[0].id;
22
22
  },
23
+ /**
24
+ * Retrieve the IDs of users by their UPNs. There is no guarantee that the order of the returned IDs will match the order of the specified UPNs.
25
+ * @param upns Array of user UPNs.
26
+ * @returns Array of user IDs.
27
+ */
28
+ async getUserIdsByUpns(upns) {
29
+ const userIds = [];
30
+ for (let i = 0; i < upns.length; i += 20) {
31
+ const upnsChunk = upns.slice(i, i + 20);
32
+ const requestOptions = {
33
+ url: `${graphResource}/v1.0/$batch`,
34
+ headers: {
35
+ accept: 'application/json;odata.metadata=none'
36
+ },
37
+ responseType: 'json',
38
+ data: {
39
+ requests: upnsChunk.map((upn, index) => ({
40
+ id: index + 1,
41
+ method: 'GET',
42
+ url: `/users/${formatting.encodeQueryParameter(upn)}?$select=id`,
43
+ headers: {
44
+ accept: 'application/json;odata.metadata=none'
45
+ }
46
+ }))
47
+ }
48
+ };
49
+ const res = await request.post(requestOptions);
50
+ for (const response of res.responses) {
51
+ if (response.status !== 200) {
52
+ throw Error(`The specified user with user name '${upnsChunk[response.id - 1]}' does not exist.`);
53
+ }
54
+ userIds.push(response.body.id);
55
+ }
56
+ }
57
+ return userIds;
58
+ },
23
59
  /**
24
60
  * Retrieve the ID of a user by its email.
25
61
  * @param mail User email.
@@ -54,4 +90,4 @@ export const aadUser = {
54
90
  return res.userPrincipalName;
55
91
  }
56
92
  };
57
- //# sourceMappingURL=aadUser.js.map
93
+ //# sourceMappingURL=entraUser.js.map
package/dist/utils/md.js CHANGED
@@ -13,8 +13,8 @@ function convertHeadings(md) {
13
13
  });
14
14
  }
15
15
  function convertAdmonitions(md) {
16
- const regex = new RegExp(/^:::(\w+)([\s\S]*?):::$/, 'gm');
17
- return md.replace(regex, (_, label, content) => label.toLocaleUpperCase() + EOL + EOL + content.trim());
16
+ const regex = new RegExp(/^:::(\w+)(?:\[([^\]]+)\])?([\s\S]*?):::$/, 'gm');
17
+ return md.replace(regex, (_, label, title, content) => label.toLocaleUpperCase() + (title ? EOL + EOL + title : '') + EOL + EOL + content.trim());
18
18
  }
19
19
  function includeContent(md, rootFolder) {
20
20
  const mdxImports = [
@@ -0,0 +1,42 @@
1
+ import request from '../request.js';
2
+ const getRequestOptions = (roleDefinitionId, principalId, directoryScopeId) => ({
3
+ url: `https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments`,
4
+ headers: {
5
+ accept: 'application/json;odata.metadata=none'
6
+ },
7
+ responseType: 'json',
8
+ data: {
9
+ roleDefinitionId: roleDefinitionId,
10
+ principalId: principalId,
11
+ directoryScopeId: directoryScopeId
12
+ }
13
+ });
14
+ /**
15
+ * Utils for RBAC.
16
+ * Supported RBAC providers:
17
+ * - Directory (Entra ID)
18
+ */
19
+ export const roleAssignment = {
20
+ /**
21
+ * Assigns a specific role to a principal with scope to an administrative unit
22
+ * @param roleDefinitionId Role which lists the actions that can be performed
23
+ * @param principalId Object that represents a user, group, service principal, or managed identity that is requesting access to resources
24
+ * @param administrativeUnitId Administrative unit which represents a current scope for a role assignment
25
+ * @returns Returns unified role assignment object that represents a role definition assigned to a principal with scope to an administrative unit
26
+ */
27
+ async createRoleAssignmentWithAdministrativeUnitScope(roleDefinitionId, principalId, administrativeUnitId) {
28
+ const requestOptions = getRequestOptions(roleDefinitionId, principalId, `/administrativeUnits/${administrativeUnitId}`);
29
+ return await request.post(requestOptions);
30
+ },
31
+ /**
32
+ * Assigns a specific role to a principal with scope to the whole tenant
33
+ * @param roleDefinitionId Role which lists the actions that can be performed
34
+ * @param principalId Object that represents a user, group, service principal, or managed identity that is requesting access to resources
35
+ * @returns Returns unified role assignment object that represents a role definition assigned to a principal with scope to the whole tenant
36
+ */
37
+ async createRoleAssignmentWithTenantScope(roleDefinitionId, principalId) {
38
+ const requestOptions = getRequestOptions(roleDefinitionId, principalId, '/');
39
+ return await request.post(requestOptions);
40
+ }
41
+ };
42
+ //# sourceMappingURL=roleAssignment.js.map
@@ -0,0 +1,24 @@
1
+ import { cli } from '../cli/cli.js';
2
+ import { formatting } from './formatting.js';
3
+ import { odata } from './odata.js';
4
+ export const roleDefinition = {
5
+ /**
6
+ * Get a directory (Microsoft Entra) role
7
+ * @param displayName Role definition display name.
8
+ * @returns The role definition.
9
+ * @throws Error when role definition was not found.
10
+ */
11
+ async getRoleDefinitionByDisplayName(displayName) {
12
+ const roleDefinitions = await odata.getAllItems(`https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions?$filter=displayName eq '${formatting.encodeQueryParameter(displayName)}'`);
13
+ if (roleDefinitions.length === 0) {
14
+ throw `The specified role definition '${displayName}' does not exist.`;
15
+ }
16
+ if (roleDefinitions.length > 1) {
17
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', roleDefinitions);
18
+ const selectedRoleDefinition = await cli.handleMultipleResultsFound(`Multiple role definitions with name '${displayName}' found.`, resultAsKeyValuePair);
19
+ return selectedRoleDefinition;
20
+ }
21
+ return roleDefinitions[0];
22
+ }
23
+ };
24
+ //# sourceMappingURL=roleDefinition.js.map
package/dist/utils/spo.js CHANGED
@@ -8,7 +8,7 @@ import request from "../request.js";
8
8
  import { formatting } from './formatting.js';
9
9
  import { odata } from './odata.js';
10
10
  import { RoleType } from '../m365/spo/commands/roledefinition/RoleType.js';
11
- import { aadGroup } from './aadGroup.js';
11
+ import { entraGroup } from './entraGroup.js';
12
12
  import { SharingCapabilities } from '../m365/spo/commands/site/SharingCapabilities.js';
13
13
  export const spo = {
14
14
  getRequestDigest(siteUrl) {
@@ -996,7 +996,7 @@ export const spo = {
996
996
  promises.push(request.post(requestOptions));
997
997
  }
998
998
  if (typeof isPublic !== 'undefined') {
999
- promises.push(aadGroup.setGroup(groupId, (isPublic === false), logger, verbose));
999
+ promises.push(entraGroup.setGroup(groupId, (isPublic === false), logger, verbose));
1000
1000
  }
1001
1001
  if (typeof owners !== 'undefined') {
1002
1002
  promises.push(spo.setGroupifiedSiteOwners(spoAdminUrl, groupId, owners, logger, verbose));
@@ -1312,6 +1312,28 @@ export const spo = {
1312
1312
  responseType: 'json'
1313
1313
  };
1314
1314
  await request.post(requestOptions);
1315
+ },
1316
+ /**
1317
+ * Retrieves the site ID for a given web URL.
1318
+ * @param webUrl The web URL for which to retrieve the site ID.
1319
+ * @param logger The logger object.
1320
+ * @param verbose Set for verbose logging
1321
+ * @returns A promise that resolves to the site ID.
1322
+ */
1323
+ async getSiteId(webUrl, logger, verbose) {
1324
+ if (verbose && logger) {
1325
+ logger.logToStderr(`Getting site id for URL: ${webUrl}...`);
1326
+ }
1327
+ const url = new URL(webUrl);
1328
+ const requestOptions = {
1329
+ url: `https://graph.microsoft.com/v1.0/sites/${formatting.encodeQueryParameter(url.host)}:${url.pathname}?$select=id`,
1330
+ headers: {
1331
+ accept: 'application/json;odata.metadata=none'
1332
+ },
1333
+ responseType: 'json'
1334
+ };
1335
+ const site = await request.get(requestOptions);
1336
+ return site.id;
1315
1337
  }
1316
1338
  };
1317
1339
  //# sourceMappingURL=spo.js.map
@@ -166,6 +166,37 @@ export const urlUtil = {
166
166
  relativeUrl = relativeUrl.substring(0, relativeUrl.length - 1);
167
167
  }
168
168
  return `${baseUrl}/${relativeUrl}`;
169
+ },
170
+ /**
171
+ * Get the absolute URL from the target SharePoint URL.
172
+ * @param {string} webUrl - The base web URL.
173
+ * @param {string} url - The target SharePoint URL.
174
+ * @returns {string} - The target site absolute URL.
175
+ *
176
+ * Example Scenarios:
177
+ * - webUrl = "https://contoso.sharepoint.com" and targetUrl = "/teams/sales/Shared Documents/temp/123/234",
178
+ * returns "https://contoso.sharepoint.com/teams/sales".
179
+ * - webUrl = "https://contoso.sharepoint.com" and targetUrl = "https://contoso-my.sharepoint.com/personal/john_contoso_onmicrosoft_com/Documents/123",
180
+ * returns "https://contoso-my.sharepoint.com/personal/john_contoso_onmicrosoft_com".
181
+ * - webUrl = "https://contoso.sharepoint.com/teams/sales" and targetUrl = "/Shared Documents/temp",
182
+ * returns "https://contoso.sharepoint.com".
183
+ * - webUrl = "https://contoso.sharepoint.com" and targetUrl = "/teams/sales/Shared Documents/temp",
184
+ * returns "https://contoso.sharepoint.com/teams/sales".
185
+ */
186
+ getTargetSiteAbsoluteUrl(webUrl, url) {
187
+ const fullUrl = url.startsWith('https://') ? url : urlUtil.getAbsoluteUrl(webUrl, url);
188
+ // Pattern to match SharePoint URLs
189
+ const urlPattern = /https:\/\/[\w\-]+\.sharepoint\.com\/(teams|sites|personal)\/([\w\-]+)/;
190
+ const match = fullUrl.match(urlPattern);
191
+ if (match) {
192
+ // If a match is found, return the matched URL
193
+ return match[0];
194
+ }
195
+ else {
196
+ // Extract the root URL
197
+ const rootUrl = new URL(fullUrl);
198
+ return rootUrl.origin;
199
+ }
169
200
  }
170
201
  };
171
202
  //# sourceMappingURL=urlUtil.js.map