@pnp/cli-microsoft365 12.0.0-beta.10c5833 → 12.0.0-beta.235caf5
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.
- package/.devproxy/generate-openapi-spec.json +1 -1
- package/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- package/dist/Auth.js +19 -2
- package/dist/cli/cli.js +3 -0
- package/dist/config.js +1 -0
- package/dist/googleAnalytics.js +96 -0
- package/dist/m365/cli/commands/cli-consent.js +9 -2
- package/dist/m365/entra/commands/agent/agent-blueprint-list.js +52 -0
- package/dist/m365/entra/commands/m365group/m365group-add.js +52 -97
- package/dist/m365/entra/commands/m365group/m365group-conversation-list.js +20 -33
- package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +20 -39
- package/dist/m365/entra/commands/m365group/m365group-get.js +20 -41
- package/dist/m365/entra/commands/m365group/m365group-list.js +11 -31
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-clear.js +8 -22
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-list.js +9 -25
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-remove.js +21 -43
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-restore.js +21 -41
- package/dist/m365/entra/commands/m365group/m365group-remove.js +25 -46
- package/dist/m365/entra/commands/m365group/m365group-renew.js +19 -32
- package/dist/m365/entra/commands/m365group/m365group-set.js +86 -141
- package/dist/m365/entra/commands/m365group/m365group-teamify.js +20 -43
- package/dist/m365/entra/commands/m365group/m365group-user-add.js +44 -77
- package/dist/m365/entra/commands/m365group/m365group-user-list.js +28 -55
- package/dist/m365/entra/commands/m365group/m365group-user-remove.js +37 -74
- package/dist/m365/entra/commands/m365group/m365group-user-set.js +45 -77
- package/dist/m365/entra/commands.js +1 -0
- package/dist/m365/graph/commands/schemaextension/schemaextension-list.js +14 -16
- package/dist/m365/outlook/commands/calendargroup/calendargroup-add.js +97 -0
- package/dist/m365/outlook/commands/event/event-add.js +324 -0
- package/dist/m365/outlook/commands.js +2 -0
- package/dist/m365/spe/commands/container/container-permission-add.js +114 -0
- package/dist/m365/spe/commands/container/container-permission-remove.js +94 -0
- package/dist/m365/spe/commands/container/container-permission-set.js +90 -0
- package/dist/m365/spe/commands.js +3 -0
- package/dist/m365/spfx/commands/SpfxCompatibilityMatrix.js +15 -0
- package/dist/m365/spfx/commands/project/project-doctor/doctor-1.24.0.js +19 -0
- package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN012021_TSC_excludeDirectories.js +43 -0
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN027002_OVERRIDES_qs.js +33 -0
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN027003_OVERRIDES_uuid.js +33 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.24.0.js +77 -0
- package/dist/m365/spfx/commands/project/project-upgrade.js +2 -1
- package/dist/m365/spo/commands/app/app-add.js +35 -56
- package/dist/m365/spo/commands/app/app-deploy.js +41 -59
- package/dist/m365/spo/commands/app/app-get.js +40 -56
- package/dist/m365/spo/commands/app/app-install.js +20 -41
- package/dist/m365/spo/commands/app/app-instance-list.js +12 -24
- package/dist/m365/spo/commands/app/app-list.js +26 -44
- package/dist/m365/spo/commands/app/app-remove.js +32 -52
- package/dist/m365/spo/commands/app/app-retract.js +32 -51
- package/dist/m365/spo/commands/app/app-teamspackage-download.js +35 -54
- package/dist/m365/spo/commands/app/app-uninstall.js +21 -44
- package/dist/m365/spo/commands/app/app-upgrade.js +20 -41
- package/dist/m365/spo/commands/commandset/commandset-add.js +17 -59
- package/dist/m365/spo/commands/commandset/commandset-get.js +24 -62
- package/dist/m365/spo/commands/commandset/commandset-list.js +11 -34
- package/dist/m365/spo/commands/commandset/commandset-remove.js +21 -54
- package/dist/m365/spo/commands/commandset/commandset-set.js +30 -83
- package/dist/m365/spo/commands/contenttype/contenttype-add.js +22 -51
- package/dist/m365/spo/commands/contenttype/contenttype-field-list.js +38 -62
- package/dist/m365/spo/commands/contenttype/contenttype-field-remove.js +25 -54
- package/dist/m365/spo/commands/contenttype/contenttype-field-set.js +20 -43
- package/dist/m365/spo/commands/contenttype/contenttype-get.js +29 -54
- package/dist/m365/spo/commands/contenttype/contenttype-list.js +13 -30
- package/dist/m365/spo/commands/contenttype/contenttype-remove.js +24 -39
- package/dist/m365/spo/commands/contenttype/contenttype-set.js +42 -63
- package/dist/m365/spo/commands/contenttype/contenttype-sync.js +37 -59
- package/dist/m365/spo/commands/contenttypehub/contenttypehub-get.js +5 -0
- package/dist/m365/spo/commands/customaction/customaction-add.js +124 -145
- package/dist/m365/spo/commands/customaction/customaction-clear.js +12 -43
- package/dist/m365/spo/commands/customaction/customaction-get.js +28 -59
- package/dist/m365/spo/commands/customaction/customaction-list.js +12 -42
- package/dist/m365/spo/commands/customaction/customaction-remove.js +26 -54
- package/dist/m365/spo/commands/customaction/customaction-set.js +75 -132
- package/dist/m365/spo/commands/externaluser/externaluser-list.js +5 -14
- package/dist/m365/spo/commands/feature/feature-disable.js +20 -50
- package/dist/m365/spo/commands/feature/feature-enable.js +22 -50
- package/dist/m365/spo/commands/feature/feature-list.js +11 -36
- package/dist/m365/spo/commands/field/field-add.js +33 -62
- package/dist/m365/spo/commands/field/field-get.js +30 -57
- package/dist/m365/spo/commands/field/field-list.js +21 -46
- package/dist/m365/spo/commands/field/field-remove.js +32 -63
- package/dist/m365/spo/commands/field/field-set.js +34 -66
- package/dist/m365/spo/commands/file/file-get.js +4 -3
- package/dist/m365/spo/commands/folder/folder-unarchive.js +90 -0
- package/dist/m365/spo/commands/hubsite/hubsite-connect.js +38 -63
- package/dist/m365/spo/commands/hubsite/hubsite-data-get.js +11 -27
- package/dist/m365/spo/commands/hubsite/hubsite-disconnect.js +25 -47
- package/dist/m365/spo/commands/hubsite/hubsite-get.js +25 -37
- package/dist/m365/spo/commands/hubsite/hubsite-list.js +12 -24
- package/dist/m365/spo/commands/hubsite/hubsite-register.js +10 -18
- package/dist/m365/spo/commands/hubsite/hubsite-rights-grant.js +14 -32
- package/dist/m365/spo/commands/hubsite/hubsite-rights-revoke.js +12 -29
- package/dist/m365/spo/commands/hubsite/hubsite-set.js +19 -46
- package/dist/m365/spo/commands/hubsite/hubsite-unregister.js +11 -27
- package/dist/m365/spo/commands/knowledgehub/knowledgehub-get.js +5 -0
- package/dist/m365/spo/commands/knowledgehub/knowledgehub-remove.js +8 -22
- package/dist/m365/spo/commands/knowledgehub/knowledgehub-set.js +10 -18
- package/dist/m365/spo/commands/listitem/listitem-add.js +27 -55
- package/dist/m365/spo/commands/listitem/listitem-attachment-add.js +30 -58
- package/dist/m365/spo/commands/listitem/listitem-attachment-get.js +27 -52
- package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +26 -50
- package/dist/m365/spo/commands/listitem/listitem-attachment-remove.js +28 -55
- package/dist/m365/spo/commands/listitem/listitem-attachment-set.js +30 -57
- package/dist/m365/spo/commands/listitem/listitem-batch-add.js +36 -58
- package/dist/m365/spo/commands/listitem/listitem-batch-remove.js +68 -92
- package/dist/m365/spo/commands/listitem/listitem-batch-set.js +37 -57
- package/dist/m365/spo/commands/listitem/listitem-get.js +45 -79
- package/dist/m365/spo/commands/listitem/listitem-isrecord.js +31 -55
- package/dist/m365/spo/commands/listitem/listitem-list.js +47 -81
- package/dist/m365/spo/commands/listitem/listitem-record-declare.js +37 -60
- package/dist/m365/spo/commands/listitem/listitem-record-lock.js +30 -52
- package/dist/m365/spo/commands/listitem/listitem-record-undeclare.js +31 -52
- package/dist/m365/spo/commands/listitem/listitem-record-unlock.js +30 -52
- package/dist/m365/spo/commands/listitem/listitem-remove.js +33 -61
- package/dist/m365/spo/commands/listitem/listitem-retentionlabel-ensure.js +46 -67
- package/dist/m365/spo/commands/listitem/listitem-retentionlabel-remove.js +33 -56
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-add.js +55 -98
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +48 -74
- package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +33 -56
- package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +31 -53
- package/dist/m365/spo/commands/listitem/listitem-set.js +33 -58
- package/dist/m365/spo/commands/navigation/navigation-node-add.js +74 -120
- package/dist/m365/spo/commands/navigation/navigation-node-get.js +4 -13
- package/dist/m365/spo/commands/navigation/navigation-node-list.js +7 -5
- package/dist/m365/spo/commands/navigation/navigation-node-remove.js +13 -47
- package/dist/m365/spo/commands/navigation/navigation-node-set.js +53 -114
- package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-list.js +1 -1
- package/dist/m365/spo/commands/page/page-column-list.js +7 -8
- package/dist/m365/spo/commands/page/page-section-list.js +15 -17
- package/dist/m365/spo/commands/page/page-unpublish.js +53 -0
- package/dist/m365/spo/commands/sitescript/sitescript-add.js +22 -37
- package/dist/m365/spo/commands/sitescript/sitescript-get.js +9 -26
- package/dist/m365/spo/commands/sitescript/sitescript-list.js +5 -0
- package/dist/m365/spo/commands/sitescript/sitescript-remove.js +9 -33
- package/dist/m365/spo/commands/sitescript/sitescript-set.js +29 -56
- package/dist/m365/spo/commands/spo-search.js +43 -116
- package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-add.js +8 -1
- package/dist/m365/spo/commands/tenant/tenant-commandset-add.js +8 -1
- package/dist/m365/spo/commands/term/term-group-list.js +7 -8
- package/dist/m365/spo/commands/term/term-set-list.js +6 -9
- package/dist/m365/spo/commands.js +3 -1
- package/dist/m365/spp/commands/contentcenter/contentcenter-list.js +5 -0
- package/dist/m365/spp/commands/model/model-get.js +25 -45
- package/dist/m365/spp/commands/model/model-list.js +12 -23
- package/dist/m365/spp/commands/model/model-remove.js +25 -45
- package/dist/m365/teams/commands/app/app-install.js +35 -44
- package/dist/m365/teams/commands/app/app-list.js +8 -33
- package/dist/m365/teams/commands/app/app-publish.js +21 -27
- package/dist/m365/teams/commands/app/app-remove.js +22 -39
- package/dist/m365/teams/commands/app/app-uninstall.js +12 -34
- package/dist/m365/teams/commands/app/app-update.js +35 -45
- package/dist/m365/teams/commands/channel/channel-add.js +46 -57
- package/dist/m365/teams/commands/channel/channel-get.js +41 -48
- package/dist/m365/teams/commands/channel/channel-list.js +28 -42
- package/dist/m365/teams/commands/channel/channel-member-add.js +53 -54
- package/dist/m365/teams/commands/channel/channel-member-list.js +47 -55
- package/dist/m365/teams/commands/channel/channel-member-remove.js +62 -62
- package/dist/m365/teams/commands/channel/channel-member-set.js +61 -65
- package/dist/m365/teams/commands/channel/channel-remove.js +47 -49
- package/dist/m365/teams/commands/channel/channel-set.js +47 -54
- package/dist/m365/teams/commands/chat/chat-get.js +30 -45
- package/dist/m365/teams/commands/chat/chat-list.js +22 -42
- package/dist/m365/teams/commands/chat/chat-member-add.js +43 -64
- package/dist/m365/teams/commands/chat/chat-member-list.js +10 -23
- package/dist/m365/teams/commands/chat/chat-member-remove.js +28 -50
- package/dist/m365/teams/commands/chat/chat-message-send.js +32 -55
- package/dist/m365/teams/commands/funsettings/funsettings-list.js +12 -23
- package/dist/m365/teams/commands/funsettings/funsettings-set.js +18 -54
- package/dist/m365/teams/commands/guestsettings/guestsettings-list.js +12 -23
- package/dist/m365/teams/commands/guestsettings/guestsettings-set.js +15 -40
- package/dist/m365/teams/commands/meeting/meeting-add.js +57 -68
- package/dist/m365/teams/commands/meeting/meeting-attendancereport-get.js +33 -58
- package/dist/m365/teams/commands/meeting/meeting-attendancereport-list.js +14 -38
- package/dist/m365/teams/commands/meeting/meeting-get.js +14 -38
- package/dist/m365/teams/commands/meeting/meeting-list.js +34 -59
- package/dist/m365/teams/commands/meeting/meeting-transcript-get.js +34 -58
- package/dist/m365/teams/commands/meeting/meeting-transcript-list.js +29 -50
- package/dist/m365/teams/commands/membersettings/membersettings-list.js +12 -23
- package/dist/m365/teams/commands/membersettings/membersettings-set.js +18 -49
- package/dist/m365/teams/commands/message/message-get.js +19 -30
- package/dist/m365/teams/commands/message/message-list.js +26 -43
- package/dist/m365/teams/commands/message/message-remove.js +43 -58
- package/dist/m365/teams/commands/message/message-reply-list.js +19 -30
- package/dist/m365/teams/commands/message/message-restore.js +40 -50
- package/dist/m365/teams/commands/message/message-send.js +19 -30
- package/dist/m365/teams/commands/messagingsettings/messagingsettings-list.js +12 -23
- package/dist/m365/teams/commands/messagingsettings/messagingsettings-set.js +18 -60
- package/dist/m365/teams/commands/report/report-deviceusagedistributionusercounts.js +10 -0
- package/dist/m365/teams/commands/report/report-deviceusageusercounts.js +10 -0
- package/dist/m365/teams/commands/report/report-deviceusageuserdetail.js +22 -0
- package/dist/m365/teams/commands/report/report-directroutingcalls.js +19 -39
- package/dist/m365/teams/commands/report/report-pstncalls.js +19 -39
- package/dist/m365/teams/commands/report/report-useractivitycounts.js +10 -0
- package/dist/m365/teams/commands/report/report-useractivityusercounts.js +10 -0
- package/dist/m365/teams/commands/report/report-useractivityuserdetail.js +22 -0
- package/dist/m365/teams/commands/tab/tab-add.js +23 -49
- package/dist/m365/teams/commands/tab/tab-get.js +55 -56
- package/dist/m365/teams/commands/tab/tab-list.js +17 -28
- package/dist/m365/teams/commands/tab/tab-remove.js +23 -42
- package/dist/m365/teams/commands/team/team-add.js +76 -114
- package/dist/m365/teams/commands/team/team-app-list.js +23 -36
- package/dist/m365/teams/commands/team/team-archive.js +24 -39
- package/dist/m365/teams/commands/team/team-clone.js +28 -62
- package/dist/m365/teams/commands/team/team-get.js +23 -36
- package/dist/m365/teams/commands/team/team-list.js +43 -57
- package/dist/m365/teams/commands/team/team-remove.js +24 -37
- package/dist/m365/teams/commands/team/team-set.js +23 -52
- package/dist/m365/teams/commands/team/team-unarchive.js +23 -28
- package/dist/m365/teams/commands/user/user-app-add.js +40 -49
- package/dist/m365/teams/commands/user/user-app-list.js +26 -39
- package/dist/m365/teams/commands/user/user-app-remove.js +37 -49
- package/dist/m365/teams/commands/user/user-app-upgrade.js +36 -52
- package/dist/m365/teams/commands/user/user-list.js +17 -39
- package/dist/m365/tenant/commands/report/report-activeusercounts.js +2 -1
- package/dist/m365/tenant/commands/report/report-activeuserdetail.js +2 -1
- package/dist/m365/tenant/commands/report/report-office365activationcounts.js +9 -0
- package/dist/m365/tenant/commands/report/report-office365activationsusercounts.js +9 -0
- package/dist/m365/tenant/commands/report/report-office365activationsuserdetail.js +9 -0
- package/dist/m365/tenant/commands/report/report-servicesusercounts.js +2 -1
- package/dist/m365/tenant/commands/report/report-settings-get.js +5 -0
- package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-health-get.js +9 -20
- package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-health-list.js +8 -20
- package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-healthissue-get.js +8 -15
- package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-healthissue-list.js +8 -15
- package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-message-get.js +12 -26
- package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-message-list.js +8 -22
- package/dist/m365/util/commands/accesstoken/accesstoken-get.js +10 -28
- package/dist/telemetry.js +7 -11
- package/dist/utils/calendar.js +1 -1
- package/dist/utils/formatting.js +16 -0
- package/dist/utils/pid.js +7 -16
- package/dist/utils/spe.js +1 -1
- package/dist/utils/spo.js +40 -3
- package/dist/utils/urlUtil.js +2 -2
- package/dist/utils/validation.js +24 -0
- package/dist/utils/zod.js +17 -7
- package/docs/docs/cmd/entra/agent/agent-blueprint-list.mdx +175 -0
- package/docs/docs/cmd/login.mdx +15 -2
- package/docs/docs/cmd/outlook/calendargroup/calendargroup-add.mdx +126 -0
- package/docs/docs/cmd/outlook/event/event-add.mdx +390 -0
- package/docs/docs/cmd/spe/container/container-add.mdx +0 -8
- package/docs/docs/cmd/spe/container/container-list.mdx +0 -8
- package/docs/docs/cmd/spe/container/container-permission-add.mdx +140 -0
- package/docs/docs/cmd/spe/container/container-permission-remove.mdx +78 -0
- package/docs/docs/cmd/spe/container/container-permission-set.mdx +78 -0
- package/docs/docs/cmd/spe/container/container-recyclebinitem-list.mdx +0 -8
- package/docs/docs/cmd/spe/container/container-recyclebinitem-restore.mdx +0 -8
- package/docs/docs/cmd/spe/container/container-remove.mdx +0 -8
- package/docs/docs/cmd/spe/containertype/containertype-add.mdx +1 -1
- package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
- package/docs/docs/cmd/spo/externaluser/externaluser-list.mdx +17 -30
- package/docs/docs/cmd/spo/file/file-archive.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-checkin.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-checkout.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-copy.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-get.mdx +6 -6
- package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-retentionlabel-remove.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-roleinheritance-break.mdx +3 -3
- package/docs/docs/cmd/spo/file/file-roleinheritance-reset.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-sharinginfo-get.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-sharinglink-add.mdx +22 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-clear.mdx +24 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-get.mdx +22 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-list.mdx +22 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-remove.mdx +24 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-set.mdx +22 -1
- package/docs/docs/cmd/spo/file/file-unarchive.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-clear.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-get.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-keep.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-list.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-remove.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-restore.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-archive.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-copy.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-get.mdx +2 -2
- package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-retentionlabel-remove.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-sharinglink-add.mdx +22 -1
- package/docs/docs/cmd/spo/folder/folder-sharinglink-clear.mdx +23 -0
- package/docs/docs/cmd/spo/folder/folder-sharinglink-get.mdx +21 -0
- package/docs/docs/cmd/spo/folder/folder-sharinglink-list.mdx +22 -1
- package/docs/docs/cmd/spo/folder/folder-sharinglink-remove.mdx +24 -1
- package/docs/docs/cmd/spo/folder/folder-sharinglink-set.mdx +21 -0
- package/docs/docs/cmd/spo/folder/folder-unarchive.mdx +76 -0
- package/docs/docs/cmd/spo/listitem/listitem-get.mdx +0 -6
- package/docs/docs/cmd/spo/navigation/navigation-node-add.mdx +45 -30
- package/docs/docs/cmd/spo/navigation/navigation-node-get.mdx +64 -42
- package/docs/docs/cmd/spo/navigation/navigation-node-list.mdx +37 -27
- package/docs/docs/cmd/spo/navigation/navigation-node-set.mdx +10 -8
- package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-list.mdx +0 -21
- package/docs/docs/cmd/spo/page/page-unpublish.mdx +63 -0
- package/docs/docs/cmd/spp/model/model-get.mdx +1 -1
- package/docs/docs/cmd/spp/model/model-remove.mdx +1 -1
- package/docs/docs/cmd/teams/tab/tab-add.mdx +19 -0
- package/docs/docs/cmd/teams/tab/tab-get.mdx +19 -0
- package/docs/docs/cmd/teams/tab/tab-list.mdx +19 -0
- package/docs/docs/cmd/teams/tab/tab-remove.mdx +21 -0
- package/docs/docs/cmd/viva/engage/engage-message-add.mdx +17 -0
- package/docs/docs/cmd/viva/engage/engage-message-get.mdx +17 -0
- package/docs/docs/cmd/viva/engage/engage-message-list.mdx +17 -0
- package/docs/docs/cmd/viva/engage/engage-message-remove.mdx +19 -0
- package/npm-shrinkwrap.json +702 -3230
- package/package.json +21 -38
- package/dist/appInsights.js +0 -43
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
-
};
|
|
6
|
-
var _TenantServiceAnnouncementMessageGetCommand_instances, _TenantServiceAnnouncementMessageGetCommand_initOptions, _TenantServiceAnnouncementMessageGetCommand_initValidators;
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
7
3
|
import request from '../../../../request.js';
|
|
8
4
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
9
5
|
import commands from '../../commands.js';
|
|
6
|
+
export const options = z.strictObject({
|
|
7
|
+
...globalOptionsZod.shape,
|
|
8
|
+
id: z.string()
|
|
9
|
+
.refine(val => (/MC\d{6}/).test(val), {
|
|
10
|
+
message: 'The value is not a valid message ID'
|
|
11
|
+
})
|
|
12
|
+
.alias('i')
|
|
13
|
+
});
|
|
10
14
|
class TenantServiceAnnouncementMessageGetCommand extends GraphCommand {
|
|
11
15
|
get name() {
|
|
12
16
|
return commands.SERVICEANNOUNCEMENT_MESSAGE_GET;
|
|
@@ -14,11 +18,8 @@ class TenantServiceAnnouncementMessageGetCommand extends GraphCommand {
|
|
|
14
18
|
get description() {
|
|
15
19
|
return 'Retrieves a specified service update message for the tenant';
|
|
16
20
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
_TenantServiceAnnouncementMessageGetCommand_instances.add(this);
|
|
20
|
-
__classPrivateFieldGet(this, _TenantServiceAnnouncementMessageGetCommand_instances, "m", _TenantServiceAnnouncementMessageGetCommand_initOptions).call(this);
|
|
21
|
-
__classPrivateFieldGet(this, _TenantServiceAnnouncementMessageGetCommand_instances, "m", _TenantServiceAnnouncementMessageGetCommand_initValidators).call(this);
|
|
21
|
+
get schema() {
|
|
22
|
+
return options;
|
|
22
23
|
}
|
|
23
24
|
async commandAction(logger, args) {
|
|
24
25
|
if (this.verbose) {
|
|
@@ -39,21 +40,6 @@ class TenantServiceAnnouncementMessageGetCommand extends GraphCommand {
|
|
|
39
40
|
this.handleRejectedODataJsonPromise(err);
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
|
-
isValidId(id) {
|
|
43
|
-
return (/MC\d{6}/).test(id);
|
|
44
|
-
}
|
|
45
43
|
}
|
|
46
|
-
_TenantServiceAnnouncementMessageGetCommand_instances = new WeakSet(), _TenantServiceAnnouncementMessageGetCommand_initOptions = function _TenantServiceAnnouncementMessageGetCommand_initOptions() {
|
|
47
|
-
this.options.unshift({
|
|
48
|
-
option: '-i, --id <id>'
|
|
49
|
-
});
|
|
50
|
-
}, _TenantServiceAnnouncementMessageGetCommand_initValidators = function _TenantServiceAnnouncementMessageGetCommand_initValidators() {
|
|
51
|
-
this.validators.push(async (args) => {
|
|
52
|
-
if (!this.isValidId(args.options.id)) {
|
|
53
|
-
return `${args.options.id} is not a valid message ID`;
|
|
54
|
-
}
|
|
55
|
-
return true;
|
|
56
|
-
});
|
|
57
|
-
};
|
|
58
44
|
export default new TenantServiceAnnouncementMessageGetCommand();
|
|
59
45
|
//# sourceMappingURL=serviceannouncement-message-get.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
-
};
|
|
6
|
-
var _TenantServiceAnnouncementMessageListCommand_instances, _TenantServiceAnnouncementMessageListCommand_initTelemetry, _TenantServiceAnnouncementMessageListCommand_initOptions;
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
7
3
|
import { formatting } from '../../../../utils/formatting.js';
|
|
8
4
|
import { odata } from '../../../../utils/odata.js';
|
|
9
5
|
import GraphCommand from '../../../base/GraphCommand.js';
|
|
10
6
|
import commands from '../../commands.js';
|
|
7
|
+
export const options = z.strictObject({
|
|
8
|
+
...globalOptionsZod.shape,
|
|
9
|
+
service: z.string().optional().alias('s')
|
|
10
|
+
});
|
|
11
11
|
class TenantServiceAnnouncementMessageListCommand extends GraphCommand {
|
|
12
12
|
get name() {
|
|
13
13
|
return commands.SERVICEANNOUNCEMENT_MESSAGE_LIST;
|
|
@@ -18,11 +18,8 @@ class TenantServiceAnnouncementMessageListCommand extends GraphCommand {
|
|
|
18
18
|
defaultProperties() {
|
|
19
19
|
return ['id', 'title'];
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
_TenantServiceAnnouncementMessageListCommand_instances.add(this);
|
|
24
|
-
__classPrivateFieldGet(this, _TenantServiceAnnouncementMessageListCommand_instances, "m", _TenantServiceAnnouncementMessageListCommand_initTelemetry).call(this);
|
|
25
|
-
__classPrivateFieldGet(this, _TenantServiceAnnouncementMessageListCommand_instances, "m", _TenantServiceAnnouncementMessageListCommand_initOptions).call(this);
|
|
21
|
+
get schema() {
|
|
22
|
+
return options;
|
|
26
23
|
}
|
|
27
24
|
async commandAction(logger, args) {
|
|
28
25
|
let endpoint = `${this.resource}/v1.0/admin/serviceAnnouncement/messages`;
|
|
@@ -38,16 +35,5 @@ class TenantServiceAnnouncementMessageListCommand extends GraphCommand {
|
|
|
38
35
|
}
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
|
-
_TenantServiceAnnouncementMessageListCommand_instances = new WeakSet(), _TenantServiceAnnouncementMessageListCommand_initTelemetry = function _TenantServiceAnnouncementMessageListCommand_initTelemetry() {
|
|
42
|
-
this.telemetry.push((args) => {
|
|
43
|
-
Object.assign(this.telemetryProperties, {
|
|
44
|
-
service: typeof args.options.service !== 'undefined'
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
}, _TenantServiceAnnouncementMessageListCommand_initOptions = function _TenantServiceAnnouncementMessageListCommand_initOptions() {
|
|
48
|
-
this.options.unshift({
|
|
49
|
-
option: '-s, --service [service]'
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
38
|
export default new TenantServiceAnnouncementMessageListCommand();
|
|
53
39
|
//# sourceMappingURL=serviceannouncement-message-list.js.map
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
-
};
|
|
6
|
-
var _UtilAccessTokenGetCommand_instances, _UtilAccessTokenGetCommand_initTelemetry, _UtilAccessTokenGetCommand_initOptions;
|
|
1
|
+
import { z } from 'zod';
|
|
7
2
|
import auth, { Auth } from '../../../../Auth.js';
|
|
8
|
-
import Command from '../../../../Command.js';
|
|
3
|
+
import Command, { globalOptionsZod } from '../../../../Command.js';
|
|
9
4
|
import commands from '../../commands.js';
|
|
10
5
|
import { accessToken } from '../../../../utils/accessToken.js';
|
|
6
|
+
export const options = z.strictObject({
|
|
7
|
+
...globalOptionsZod.shape,
|
|
8
|
+
resource: z.string().alias('r'),
|
|
9
|
+
new: z.boolean().optional(),
|
|
10
|
+
decoded: z.boolean().optional()
|
|
11
|
+
});
|
|
11
12
|
class UtilAccessTokenGetCommand extends Command {
|
|
12
13
|
get name() {
|
|
13
14
|
return commands.ACCESSTOKEN_GET;
|
|
@@ -15,11 +16,8 @@ class UtilAccessTokenGetCommand extends Command {
|
|
|
15
16
|
get description() {
|
|
16
17
|
return 'Gets access token for the specified resource';
|
|
17
18
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
_UtilAccessTokenGetCommand_instances.add(this);
|
|
21
|
-
__classPrivateFieldGet(this, _UtilAccessTokenGetCommand_instances, "m", _UtilAccessTokenGetCommand_initTelemetry).call(this);
|
|
22
|
-
__classPrivateFieldGet(this, _UtilAccessTokenGetCommand_instances, "m", _UtilAccessTokenGetCommand_initOptions).call(this);
|
|
19
|
+
get schema() {
|
|
20
|
+
return options;
|
|
23
21
|
}
|
|
24
22
|
async commandAction(logger, args) {
|
|
25
23
|
let resource = args.options.resource;
|
|
@@ -49,21 +47,5 @@ class UtilAccessTokenGetCommand extends Command {
|
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
|
-
_UtilAccessTokenGetCommand_instances = new WeakSet(), _UtilAccessTokenGetCommand_initTelemetry = function _UtilAccessTokenGetCommand_initTelemetry() {
|
|
53
|
-
this.telemetry.push((args) => {
|
|
54
|
-
Object.assign(this.telemetryProperties, {
|
|
55
|
-
new: args.options.new,
|
|
56
|
-
decoded: args.options.decoded
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
}, _UtilAccessTokenGetCommand_initOptions = function _UtilAccessTokenGetCommand_initOptions() {
|
|
60
|
-
this.options.unshift({
|
|
61
|
-
option: '-r, --resource <resource>'
|
|
62
|
-
}, {
|
|
63
|
-
option: '--new'
|
|
64
|
-
}, {
|
|
65
|
-
option: '--decoded'
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
50
|
export default new UtilAccessTokenGetCommand();
|
|
69
51
|
//# sourceMappingURL=accesstoken-get.js.map
|
package/dist/telemetry.js
CHANGED
|
@@ -1,25 +1,21 @@
|
|
|
1
|
-
import appInsights from './appInsights.js';
|
|
2
1
|
import { cli } from './cli/cli.js';
|
|
2
|
+
import { googleAnalytics } from './googleAnalytics.js';
|
|
3
3
|
import { settingsNames } from './settingsNames.js';
|
|
4
4
|
import { pid } from './utils/pid.js';
|
|
5
5
|
import { session } from './utils/session.js';
|
|
6
6
|
async function trackTelemetry(object) {
|
|
7
7
|
try {
|
|
8
8
|
const { commandName, properties, exception } = object;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
const context = {
|
|
10
|
+
shell: pid.getProcessName(process.ppid) || '',
|
|
11
|
+
sessionId: session.getId(process.ppid)
|
|
12
|
+
};
|
|
11
13
|
if (exception) {
|
|
12
|
-
|
|
13
|
-
exception
|
|
14
|
-
});
|
|
14
|
+
await googleAnalytics.trackException(exception, context);
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
|
-
|
|
18
|
-
name: commandName,
|
|
19
|
-
properties
|
|
20
|
-
});
|
|
17
|
+
await googleAnalytics.trackEvent(commandName, properties, context);
|
|
21
18
|
}
|
|
22
|
-
await appInsights.flush();
|
|
23
19
|
}
|
|
24
20
|
catch {
|
|
25
21
|
// Do nothing
|
package/dist/utils/calendar.js
CHANGED
|
@@ -18,7 +18,7 @@ export const calendar = {
|
|
|
18
18
|
return await request.get(requestOptions);
|
|
19
19
|
},
|
|
20
20
|
async getUserCalendarByName(userId, name, calendarGroupId, properties) {
|
|
21
|
-
let url = `https://graph.microsoft.com/v1.0/users('${userId}')/${calendarGroupId ? `calendarGroups/${calendarGroupId}/` : ''}calendars?$filter=name eq '${formatting.encodeQueryParameter(name)}'`;
|
|
21
|
+
let url = `https://graph.microsoft.com/v1.0/users('${formatting.encodeQueryParameter(userId)}')/${calendarGroupId ? `calendarGroups/${calendarGroupId}/` : ''}calendars?$filter=name eq '${formatting.encodeQueryParameter(name)}'`;
|
|
22
22
|
if (properties) {
|
|
23
23
|
url += `&$select=${properties}`;
|
|
24
24
|
}
|
package/dist/utils/formatting.js
CHANGED
|
@@ -189,6 +189,22 @@ export const formatting = {
|
|
|
189
189
|
const guidPattern = /\/Guid\(([0-9a-f-]+)\)\//i;
|
|
190
190
|
const match = str.match(guidPattern);
|
|
191
191
|
return match ? match[1] : str;
|
|
192
|
+
},
|
|
193
|
+
/**
|
|
194
|
+
* Converts a CSOM date string to an ISO 8601 date string.
|
|
195
|
+
* @param str The string to extract the date from
|
|
196
|
+
* @description The string should be in the format /Date(year,month,day,hours,minutes,seconds,milliseconds)/ where month is 0-based. Escaped slashes (\/Date(...)\/) are supported as well. The date parts are interpreted as UTC.
|
|
197
|
+
* @returns The date as an ISO 8601 string or the original string if no match is found
|
|
198
|
+
* @example /Date(2026,8,21,12,24,45,997)/ => 2026-09-21T12:24:45.997Z
|
|
199
|
+
*/
|
|
200
|
+
extractCsomDate(str) {
|
|
201
|
+
const datePattern = /^\\?\/Date\((\d+(?:,\d+){2,6})\)\\?\/$/i;
|
|
202
|
+
const match = str.trim().match(datePattern);
|
|
203
|
+
if (!match) {
|
|
204
|
+
return str;
|
|
205
|
+
}
|
|
206
|
+
const [year, month, day, hours = 0, minutes = 0, seconds = 0, milliseconds = 0] = match[1].split(',').map(Number);
|
|
207
|
+
return new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds)).toISOString();
|
|
192
208
|
}
|
|
193
209
|
};
|
|
194
210
|
//# sourceMappingURL=formatting.js.map
|
package/dist/utils/pid.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import child_process from 'child_process';
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import os from 'os';
|
|
4
|
+
import path from 'path';
|
|
4
5
|
import { cache } from './cache.js';
|
|
5
6
|
function getProcessNameOnMacOs(pid) {
|
|
6
7
|
const res = child_process.spawnSync('ps', ['-o', 'comm=', pid.toString()], { encoding: 'utf8' });
|
|
@@ -21,24 +22,14 @@ function getProcessNameOnLinux(pid) {
|
|
|
21
22
|
return procName;
|
|
22
23
|
}
|
|
23
24
|
function getProcessNameOnWindows(pid) {
|
|
24
|
-
const
|
|
25
|
-
|
|
25
|
+
const tasklist = path.join(process.env.SystemRoot || 'C:\\Windows', 'System32', 'tasklist.exe');
|
|
26
|
+
const res = child_process.spawnSync(tasklist, ['/FI', `PID eq ${pid}`, '/FO', 'CSV', '/NH'], { encoding: 'utf8' });
|
|
27
|
+
if (res.error || res.status !== 0) {
|
|
26
28
|
return undefined;
|
|
27
29
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
input: findProcess.stdout,
|
|
32
|
-
// must include or passing quoted "Caption" will fail
|
|
33
|
-
windowsVerbatimArguments: true
|
|
34
|
-
});
|
|
35
|
-
if (getPid.error || getPid.stderr) {
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
return getPid.stdout.trim();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
30
|
+
// "pwsh.exe","12345","Console","1","98,765 K"
|
|
31
|
+
const match = res.stdout.match(/^"([^"]+)","(\d+)"/m);
|
|
32
|
+
return match && match[2] === pid.toString() ? match[1] : undefined;
|
|
42
33
|
}
|
|
43
34
|
export const pid = {
|
|
44
35
|
getProcessName(pid) {
|
package/dist/utils/spe.js
CHANGED
|
@@ -9,7 +9,7 @@ export const spe = {
|
|
|
9
9
|
* @returns ID of the container type
|
|
10
10
|
*/
|
|
11
11
|
async getContainerTypeIdByName(name) {
|
|
12
|
-
const containerTypes = await odata.getAllItems(`${graphResource}/
|
|
12
|
+
const containerTypes = await odata.getAllItems(`${graphResource}/v1.0/storage/fileStorage/containerTypes?$select=id,name&$filter=name eq '${formatting.encodeQueryParameter(name)}'`);
|
|
13
13
|
if (containerTypes.length === 0) {
|
|
14
14
|
throw new Error(`The specified container type '${name}' does not exist.`);
|
|
15
15
|
}
|
package/dist/utils/spo.js
CHANGED
|
@@ -576,6 +576,45 @@ export const spo = {
|
|
|
576
576
|
return request.post(requestOptions);
|
|
577
577
|
},
|
|
578
578
|
/**
|
|
579
|
+
* Retrieves the navigation node with the specified key.
|
|
580
|
+
* Returns the node along with the menu state that contains it.
|
|
581
|
+
* @param webUrl Web url
|
|
582
|
+
* @param key Key (ID) of the navigation node
|
|
583
|
+
* @param location Navigation to search. When not specified, searches the quick launch first and then the top navigation
|
|
584
|
+
*/
|
|
585
|
+
async getMenuStateNodeByKey(webUrl, key, location) {
|
|
586
|
+
const locations = location ? [location] : ['QuickLaunch', 'TopNavigationBar'];
|
|
587
|
+
for (const navigationLocation of locations) {
|
|
588
|
+
const menuState = navigationLocation === 'TopNavigationBar'
|
|
589
|
+
? await this.getTopNavigationMenuState(webUrl)
|
|
590
|
+
: await this.getQuickLaunchMenuState(webUrl);
|
|
591
|
+
const node = this.findMenuStateNode(menuState.Nodes, key);
|
|
592
|
+
if (node) {
|
|
593
|
+
return { menuState, node };
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
throw location
|
|
597
|
+
? `Navigation node with id '${key}' not found in ${location}.`
|
|
598
|
+
: `Navigation node with id '${key}' not found.`;
|
|
599
|
+
},
|
|
600
|
+
/**
|
|
601
|
+
* Recursively searches the specified menu state nodes for the node with the specified key.
|
|
602
|
+
* @param nodes Menu state nodes to search
|
|
603
|
+
* @param key Key (ID) of the navigation node
|
|
604
|
+
*/
|
|
605
|
+
findMenuStateNode(nodes, key) {
|
|
606
|
+
for (const node of nodes) {
|
|
607
|
+
if (node.Key === key) {
|
|
608
|
+
return node;
|
|
609
|
+
}
|
|
610
|
+
const childNode = this.findMenuStateNode(node.Nodes, key);
|
|
611
|
+
if (childNode) {
|
|
612
|
+
return childNode;
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
return undefined;
|
|
616
|
+
},
|
|
617
|
+
/**
|
|
579
618
|
* Retrieves the spo group by name.
|
|
580
619
|
* Returns a group object
|
|
581
620
|
* @param webUrl Web url
|
|
@@ -1250,9 +1289,7 @@ export const spo = {
|
|
|
1250
1289
|
// Neither properties nor contentTypeName provided, no need to proceed
|
|
1251
1290
|
throw 'Either properties or contentTypeName must be provided for systemUpdateListItem.';
|
|
1252
1291
|
}
|
|
1253
|
-
const
|
|
1254
|
-
const serverRelativeSiteMatch = absoluteListUrl.match(new RegExp('/sites/[^/]+'));
|
|
1255
|
-
const webUrl = `${parsedUrl.protocol}//${parsedUrl.host}${serverRelativeSiteMatch ?? ''}`;
|
|
1292
|
+
const webUrl = absoluteListUrl.substring(0, absoluteListUrl.indexOf('/_api/'));
|
|
1256
1293
|
if (verbose && logger) {
|
|
1257
1294
|
await logger.logToStderr(`Getting list id...`);
|
|
1258
1295
|
}
|
package/dist/utils/urlUtil.js
CHANGED
|
@@ -165,8 +165,8 @@ export const urlUtil = {
|
|
|
165
165
|
*/
|
|
166
166
|
getTargetSiteAbsoluteUrl(webUrl, url) {
|
|
167
167
|
const fullUrl = url.startsWith('https://') ? url : urlUtil.getAbsoluteUrl(webUrl, url);
|
|
168
|
-
// Pattern to match SharePoint URLs
|
|
169
|
-
const urlPattern =
|
|
168
|
+
// Pattern to match SharePoint site collection URLs on any of the supported managed paths
|
|
169
|
+
const urlPattern = /^https:\/\/[\w-]+\.sharepoint\.com\/(teams|sites|personal)\/[^/?#]+/i;
|
|
170
170
|
const match = fullUrl.match(urlPattern);
|
|
171
171
|
if (match) {
|
|
172
172
|
// If a match is found, return the matched URL
|
package/dist/utils/validation.js
CHANGED
|
@@ -100,6 +100,30 @@ export const validation = {
|
|
|
100
100
|
}
|
|
101
101
|
return false;
|
|
102
102
|
},
|
|
103
|
+
isValidGraphDateTime(dateTime) {
|
|
104
|
+
const graphDateTimeRegEx = new RegExp(/^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])$/);
|
|
105
|
+
if (!graphDateTimeRegEx.test(dateTime)) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
const [date] = dateTime.split('T');
|
|
109
|
+
const [year, month, day] = date.split('-').map(Number);
|
|
110
|
+
const isLeapYear = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
111
|
+
const daysInMonth = [
|
|
112
|
+
31,
|
|
113
|
+
isLeapYear ? 29 : 28,
|
|
114
|
+
31,
|
|
115
|
+
30,
|
|
116
|
+
31,
|
|
117
|
+
30,
|
|
118
|
+
31,
|
|
119
|
+
31,
|
|
120
|
+
30,
|
|
121
|
+
31,
|
|
122
|
+
30,
|
|
123
|
+
31
|
|
124
|
+
];
|
|
125
|
+
return day <= daysInMonth[month - 1];
|
|
126
|
+
},
|
|
103
127
|
isValidBoolean(value) {
|
|
104
128
|
return value.toLowerCase() === 'true' || value.toLowerCase() === 'false';
|
|
105
129
|
},
|
package/dist/utils/zod.js
CHANGED
|
@@ -3,6 +3,10 @@ z.ZodType.prototype.alias = function (name) {
|
|
|
3
3
|
this.def.alias = name;
|
|
4
4
|
return this;
|
|
5
5
|
};
|
|
6
|
+
z.ZodType.prototype.autocomplete = function (values) {
|
|
7
|
+
this.def.autocomplete = values;
|
|
8
|
+
return this;
|
|
9
|
+
};
|
|
6
10
|
function parseObject(schema, options, _currentOption) {
|
|
7
11
|
for (const key in schema.properties) {
|
|
8
12
|
const property = schema.properties[key];
|
|
@@ -24,6 +28,9 @@ function parseString(schema, _options, currentOption) {
|
|
|
24
28
|
if (schema.enum) {
|
|
25
29
|
currentOption.autocomplete = schema.enum.map(e => String(e));
|
|
26
30
|
}
|
|
31
|
+
else if (schema['x-autocomplete']) {
|
|
32
|
+
currentOption.autocomplete = schema['x-autocomplete'];
|
|
33
|
+
}
|
|
27
34
|
}
|
|
28
35
|
return;
|
|
29
36
|
}
|
|
@@ -89,9 +96,12 @@ export const zod = {
|
|
|
89
96
|
schemaToOptionInfo(schema) {
|
|
90
97
|
const jsonSchema = z.toJSONSchema(schema, {
|
|
91
98
|
override: s => {
|
|
92
|
-
const
|
|
93
|
-
if (alias) {
|
|
94
|
-
s.jsonSchema['x-alias'] = alias;
|
|
99
|
+
const definition = s.zodSchema.def;
|
|
100
|
+
if (definition.alias) {
|
|
101
|
+
s.jsonSchema['x-alias'] = definition.alias;
|
|
102
|
+
}
|
|
103
|
+
if (definition.autocomplete) {
|
|
104
|
+
s.jsonSchema['x-autocomplete'] = definition.autocomplete;
|
|
95
105
|
}
|
|
96
106
|
},
|
|
97
107
|
unrepresentable: 'any'
|
|
@@ -110,14 +120,14 @@ export const zod = {
|
|
|
110
120
|
});
|
|
111
121
|
return options;
|
|
112
122
|
},
|
|
113
|
-
coercedEnum: (e) => z.preprocess(val => {
|
|
114
|
-
const target = String(val)
|
|
123
|
+
coercedEnum: (e) => z.string().pipe(z.preprocess(val => {
|
|
124
|
+
const target = String(val).toLowerCase();
|
|
115
125
|
for (const k of Object.values(e)) {
|
|
116
|
-
if (String(k)
|
|
126
|
+
if (String(k).toLowerCase() === target) {
|
|
117
127
|
return k;
|
|
118
128
|
}
|
|
119
129
|
}
|
|
120
130
|
return null;
|
|
121
|
-
}, z.enum(e))
|
|
131
|
+
}, z.enum(e)))
|
|
122
132
|
};
|
|
123
133
|
//# sourceMappingURL=zod.js.map
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import Global from '../../_global.mdx';
|
|
2
|
+
import Tabs from '@theme/Tabs';
|
|
3
|
+
import TabItem from '@theme/TabItem';
|
|
4
|
+
|
|
5
|
+
# entra agent blueprint list
|
|
6
|
+
|
|
7
|
+
Retrieves a list of templates defining the agent identity type
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
m365 entra agent blueprint list [options]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Options
|
|
16
|
+
|
|
17
|
+
```md definition-list
|
|
18
|
+
`-p, --properties [properties]`
|
|
19
|
+
: Comma-separated list of properties to retrieve.
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
<Global />
|
|
23
|
+
|
|
24
|
+
## Remarks
|
|
25
|
+
|
|
26
|
+
Using the --properties option, you can specify a comma-separated list of agent blueprint properties to retrieve from Microsoft Graph. If you don't specify any properties, Microsoft Graph returns its default property set, as shown in the response examples. The CLI's default properties are used only for text output.
|
|
27
|
+
|
|
28
|
+
:::note
|
|
29
|
+
|
|
30
|
+
A principal who creates a blueprint or blueprint principal is assigned as the owner. Owners can create agent identities and modify only the resources they own, even if they aren't assigned an Agent ID role.
|
|
31
|
+
|
|
32
|
+
For nonowners to call this API in delegated scenarios using work or school accounts, the admin must be assigned a supported [Microsoft Entra role](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference). This operation supports the following built-in roles, which provide only the least privilege necessary:
|
|
33
|
+
|
|
34
|
+
- **Agent ID Administrator**.
|
|
35
|
+
- **Agent ID Developer** - Create agent identity blueprints and blueprint principals.
|
|
36
|
+
|
|
37
|
+
:::
|
|
38
|
+
|
|
39
|
+
## Permissions
|
|
40
|
+
|
|
41
|
+
<Tabs>
|
|
42
|
+
<TabItem value="Delegated">
|
|
43
|
+
|
|
44
|
+
| Resource | Permissions |
|
|
45
|
+
|-----------------|---------------------------------|
|
|
46
|
+
| Microsoft Graph | AgentIdentityBlueprint.Read.All |
|
|
47
|
+
|
|
48
|
+
</TabItem>
|
|
49
|
+
<TabItem value="Application">
|
|
50
|
+
|
|
51
|
+
| Resource | Permissions |
|
|
52
|
+
|-----------------|---------------------------------|
|
|
53
|
+
| Microsoft Graph | AgentIdentityBlueprint.Read.All |
|
|
54
|
+
|
|
55
|
+
</TabItem>
|
|
56
|
+
</Tabs>
|
|
57
|
+
|
|
58
|
+
## Examples
|
|
59
|
+
|
|
60
|
+
Retrieve all agent blueprint templates
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
m365 entra agent blueprint list
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Retrieve id and name of agent blueprint templates
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
m365 entra agent blueprint list --properties 'id,displayName'
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Response
|
|
73
|
+
|
|
74
|
+
<Tabs>
|
|
75
|
+
<TabItem value="JSON">
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
[
|
|
79
|
+
{
|
|
80
|
+
"appId": "0e81af7f-b058-470a-84be-3a4f5a8014ca",
|
|
81
|
+
"createdByAppId": "14d82eec-204b-4c2f-b7e8-296a70dab67e",
|
|
82
|
+
"createdDateTime": "2025-11-20T07:47:39Z",
|
|
83
|
+
"defaultRedirectUri": null,
|
|
84
|
+
"description": null,
|
|
85
|
+
"disabledByMicrosoftStatus": null,
|
|
86
|
+
"displayName": "OcnAgentBluePrint02",
|
|
87
|
+
"groupMembershipClaims": null,
|
|
88
|
+
"identifierUris": [],
|
|
89
|
+
"managerApplications": [],
|
|
90
|
+
"publisherDomain": "contoso.onmicrosoft.com",
|
|
91
|
+
"serviceManagementReference": null,
|
|
92
|
+
"signInAudience": "AzureADMyOrg",
|
|
93
|
+
"tags": [],
|
|
94
|
+
"tokenEncryptionKeyId": null,
|
|
95
|
+
"uniqueName": null,
|
|
96
|
+
"id": "0e81af7f-b058-470a-84be-3a4f5a8014ca",
|
|
97
|
+
"certification": null,
|
|
98
|
+
"optionalClaims": null,
|
|
99
|
+
"api": {
|
|
100
|
+
"acceptMappedClaims": null,
|
|
101
|
+
"knownClientApplications": [],
|
|
102
|
+
"requestedAccessTokenVersion": 2,
|
|
103
|
+
"oauth2PermissionScopes": [],
|
|
104
|
+
"preAuthorizedApplications": []
|
|
105
|
+
},
|
|
106
|
+
"appRoles": [],
|
|
107
|
+
"info": {
|
|
108
|
+
"logoUrl": null,
|
|
109
|
+
"marketingUrl": null,
|
|
110
|
+
"privacyStatementUrl": null,
|
|
111
|
+
"supportUrl": null,
|
|
112
|
+
"termsOfServiceUrl": null
|
|
113
|
+
},
|
|
114
|
+
"keyCredentials": [],
|
|
115
|
+
"passwordCredentials": [],
|
|
116
|
+
"requiredResourceAccess": [],
|
|
117
|
+
"verifiedPublisher": {
|
|
118
|
+
"displayName": null,
|
|
119
|
+
"verifiedPublisherId": null,
|
|
120
|
+
"addedDateTime": null
|
|
121
|
+
},
|
|
122
|
+
"web": {
|
|
123
|
+
"homePageUrl": null,
|
|
124
|
+
"logoutUrl": null,
|
|
125
|
+
"redirectUris": [],
|
|
126
|
+
"implicitGrantSettings": {
|
|
127
|
+
"enableAccessTokenIssuance": false,
|
|
128
|
+
"enableIdTokenIssuance": false
|
|
129
|
+
},
|
|
130
|
+
"redirectUriSettings": []
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
</TabItem>
|
|
137
|
+
<TabItem value="Text">
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
appId : 0e81af7f-b058-470a-84be-3a4f5a8014ca
|
|
141
|
+
displayName: OcnAgentBluePrint02
|
|
142
|
+
id : 0e81af7f-b058-470a-84be-3a4f5a8014ca
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
</TabItem>
|
|
146
|
+
<TabItem value="CSV">
|
|
147
|
+
|
|
148
|
+
```csv
|
|
149
|
+
appId,createdByAppId,createdDateTime,defaultRedirectUri,description,disabledByMicrosoftStatus,displayName,groupMembershipClaims,publisherDomain,serviceManagementReference,signInAudience,tokenEncryptionKeyId,uniqueName,id,certification,optionalClaims
|
|
150
|
+
0e81af7f-b058-470a-84be-3a4f5a8014ca,14d82eec-204b-4c2f-b7e8-296a70dab67e,2025-11-20T07:47:39Z,,,,OcnAgentBluePrint02,,contoso.onmicrosoft.com,,AzureADMyOrg,,,0e81af7f-b058-470a-84be-3a4f5a8014ca,,
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
</TabItem>
|
|
154
|
+
<TabItem value="Markdown">
|
|
155
|
+
|
|
156
|
+
```md
|
|
157
|
+
# entra agent blueprint list --debug "false" --verbose "false"
|
|
158
|
+
|
|
159
|
+
Date: 6/5/2026
|
|
160
|
+
|
|
161
|
+
## OcnAgentBluePrint02 (0e81af7f-b058-470a-84be-3a4f5a8014ca)
|
|
162
|
+
|
|
163
|
+
Property | Value
|
|
164
|
+
---------|-------
|
|
165
|
+
appId | 0e81af7f-b058-470a-84be-3a4f5a8014ca
|
|
166
|
+
createdByAppId | 14d82eec-204b-4c2f-b7e8-296a70dab67e
|
|
167
|
+
createdDateTime | 2025-11-20T07:47:39Z
|
|
168
|
+
displayName | OcnAgentBluePrint02
|
|
169
|
+
publisherDomain | contoso.onmicrosoft.com
|
|
170
|
+
signInAudience | AzureADMyOrg
|
|
171
|
+
id | 0e81af7f-b058-470a-84be-3a4f5a8014ca
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
</TabItem>
|
|
175
|
+
</Tabs>
|
package/docs/docs/cmd/login.mdx
CHANGED
|
@@ -78,7 +78,20 @@ When logging in to Microsoft 365 using the user name and password, next to the a
|
|
|
78
78
|
|
|
79
79
|
When logging in to Microsoft 365 using a certificate, the CLI for Microsoft 365 will store the contents of the certificate so that it can automatically re-authenticate if necessary. The contents of the certificate are removed by re-authenticating using the device code or by calling the [logout](logout.mdx) command.
|
|
80
80
|
|
|
81
|
-
Federated Identity is currently supported in GitHub Actions. To use this you need to set `authType` to `federatedIdentity` and specify `appId` and `tenant` to the values of the app registration you've configured a federated credential on.
|
|
81
|
+
Federated Identity is currently supported in GitHub Actions, Azure DevOps and GitLab CI/CD. To use this you need to set `authType` to `federatedIdentity` and specify `appId` and `tenant` to the values of the app registration you've configured a federated credential on.
|
|
82
|
+
|
|
83
|
+
To use Federated Identity in GitLab CI/CD, the job must request an ID token named `GITLAB_OIDC_TOKEN` with audience `api://AzureADTokenExchange`, for example:
|
|
84
|
+
|
|
85
|
+
```yaml
|
|
86
|
+
job:
|
|
87
|
+
id_tokens:
|
|
88
|
+
GITLAB_OIDC_TOKEN:
|
|
89
|
+
aud: "api://AzureADTokenExchange"
|
|
90
|
+
script:
|
|
91
|
+
- m365 login --authType federatedIdentity --appId eb96cfd0-abfa-4477-8d1d-c6dfde3efb19 --tenant 9a1a1bbd-e158-4cf5-967d-a53b8e85c628
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The corresponding federated credential on the Microsoft Entra app registration must have issuer `https://gitlab.com` (or your self-managed GitLab instance URL) and a subject matching the GitLab OIDC claim for the job, for example `project_path:<group>/<project>:ref_type:branch:ref:<branch>`.
|
|
82
95
|
|
|
83
96
|
To log in to Microsoft 365 using a certificate or secret, you will typically [create a custom Microsoft Entra application](../user-guide/using-own-identity.mdx). To use this application with the CLI for Microsoft 365, you will set the `CLIMICROSOFT365_ENTRAAPPID` environment variable to the application's ID and the `CLIMICROSOFT365_TENANT` environment variable to the ID of the Microsoft Entra tenant, where you created the Microsoft Entra application. Also, please make sure to read about [the caveats when using the certificate login option](../user-guide/cli-certificate-caveats.mdx).
|
|
84
97
|
|
|
@@ -202,7 +215,7 @@ Log in to Microsoft 365 using a user-assigned managed identity with `clientId` s
|
|
|
202
215
|
m365 login --authType identity --userName ac9fbed5-804c-4362-a369-21a4ec51109e
|
|
203
216
|
```
|
|
204
217
|
|
|
205
|
-
Log in to Microsoft 365 using a federated identity. Can currently only be used in GitHub Actions.
|
|
218
|
+
Log in to Microsoft 365 using a federated identity. Can currently only be used in GitHub Actions, Azure DevOps and GitLab CI/CD.
|
|
206
219
|
|
|
207
220
|
```sh
|
|
208
221
|
m365 login --authType federatedIdentity --appId eb96cfd0-abfa-4477-8d1d-c6dfde3efb19 --tenant 9a1a1bbd-e158-4cf5-967d-a53b8e85c628
|