Public/generated/Get-KriticalUtcmTeamsEventsPolicy.ps1

# Kritical.PS.UTCM | Microsoft Graph UTCM REST API toolkit
# (c) 2026 Kritical Pty Ltd | https://kritical.net
# Kritical brand banner is rendered at module load via Write-KriticalUtcmBanner.

function Get-KriticalUtcmTeamsEventsPolicy {
<#
.SYNOPSIS
    Kritical.UTCM shim for M365DSC resource TeamsEventsPolicy.

.DESCRIPTION

    Search-replace safe: callers that today invoke
        Get-M365DSCTeamsEventsPolicy -Credential $cred -TenantId $tid
    can rename to
        Get-KriticalUtcmTeamsEventsPolicy -Credential $cred -TenantId $tid
    with ZERO other edits. Parameter shape matches the M365DSC .schema.mof
    exactly. By default -PreferM365DscBehavior is true.

    Actual Graph dispatch is delegated to Invoke-KriticalUtcmM365DscSchemaBridge.
    Bridge maps resource → Graph endpoint per per-resource wave; where mapping
    is not yet shipped, bridge returns an object with Verdict='UNMAPPED'.

.NOTES
    Workload: Teams
    Param count: 31
#>

[CmdletBinding()]
param(
        # Identity of the Teams Events Policy.
[Parameter(Mandatory)] [string]$Identity,
        # Description of the Teams Events Policy.
[string]$Description,
        # This setting governs if a user is allowed to edit the communication emails in Teams Town Hall or Teams Webinar events.
[ValidateSet('Disabled','Enabled')] [string]$AllowEmailEditing,
        # This setting governs access to the integrations tab in the event creation workflow.
[bool]$AllowEventIntegrations,
        # Determines if webinars are allowed by the policy or not.
[ValidateSet('Disabled','Enabled')] [string]$AllowWebinars,
        # This setting governs if a user can create town halls using Teams Events.
[ValidateSet('Disabled','Enabled')] [string]$AllowTownhalls,
        # This setting governs which users in a tenant can add which registration form questions to an event registration page for attendees to answer when registering for the event.
[ValidateSet('DefaultOnly','DefaultAndPredefinedOnly','AllQuestions')] [string]$AllowedQuestionTypesInRegistrationForm,
        # This setting describes how IT admins can control which types of Town Hall attendees can have their recordings published.
[ValidateSet('None','InviteOnly','EveryoneInCompanyIncludingGuests','Everyone')] [string]$AllowedTownhallTypesForRecordingPublish,
        # This setting describes how IT admins can control which types of webinar attendees can have their recordings published.
[ValidateSet('None','InviteOnly','EveryoneInCompanyIncludingGuests','Everyone')] [string]$AllowedWebinarTypesForRecordingPublish,
        # TBD
[ValidateSet('Enabled','Disabled')] [string]$BackroomChat,
        # This setting will enable Tenant Admins to specify if an organizer of a Teams Premium town hall may add an app that is accessible by everyone, including attendees, in a broadcast style Event including a Town hall.
[ValidateSet('Enabled','Disabled')] [string]$BroadcastPremiumApps,
        # TBD
[ValidateSet('eOTP','None')] [string]$ExternalPresenterJoinVerification,
        # This setting governs if a user can create Immersive Events using Teams Events.
[ValidateSet('Enabled','Disabled')] [string]$ImmersiveEvents,
        # Determines whether recording is allowed in a user's townhall.
[ValidateSet('Enabled','Disabled')] [string]$RecordingForTownhall,
        # Determines whether recording is allowed in a user's webinar.
[ValidateSet('Enabled','Disabled')] [string]$RecordingForWebinar,
        # TBD
[ValidateSet('Enabled','Disabled')] [string]$Registration,
        # This setting governs what identity types may attend a Town hall that is scheduled by a particular person or group that is assigned this policy.
[ValidateSet('Everyone','EveryoneInOrganizationAndGuests')] [string]$TownhallEventAttendeeAccess,
        # Determines whether transcriptions are allowed in a user's townhall.
[ValidateSet('Enabled','Disabled')] [string]$TranscriptionForTownhall,
        # Determines whether transcriptions are allowed in a user's webinar.
[ValidateSet('Enabled','Disabled')] [string]$TranscriptionForWebinar,
        # Defines who is allowed to join the event.
[ValidateSet('Everyone','EveryoneInCompanyExcludingGuests')] [string]$EventAccessType,
        # Present ensures the policy exists, absent ensures it is removed.
[ValidateSet('Present','Absent')] [string]$Ensure,
        # This setting governs whether the user can enable the Comment Stream chat experience for Town Halls.
[ValidateSet('Optimized','None')] [string]$TownhallChatExperience,
        # This policy sets the maximum video resolution supported in Town hall events. Possible values are: Max720p: Town halls support video resolution up to 720p. Max1080p: Town halls support video resolution up to 1080p. MicrosoftManaged: Town halls will support video resolution up to 720p except for those customers whose networks have been assessed by Microsoft to support up to 1080p.
[ValidateSet('Max720p','Max1080p','MicrosoftManaged')] [string]$TownhallMaxResolution,
        # This setting governs whether the global admin disables this property and prevents the organizers from creating town halls that use Microsoft eCDN even though they have been assigned a Teams Premium license.
[bool]$UseMicrosoftECDN,
        # Credentials of the Teams Global Admin.
[string]$Credential,
        # Id of the Azure Active Directory application to authenticate with.
[string]$ApplicationId,
        # Name of the Azure Active Directory tenant used for authentication. Format contoso.onmicrosoft.com
[string]$TenantId,
        # Thumbprint of the Azure Active Directory application's authentication certificate to use for authentication.
[string]$CertificateThumbprint,
        # Username can be made up to anything but password will be used for CertificatePassword
[string]$CertificatePassword,
        # Path to certificate used in service principal usually a PFX file.
[string]$CertificatePath,
        # Managed ID being used for authentication.
[bool]$ManagedIdentity
)
    Invoke-KriticalUtcmM365DscSchemaBridge -ResourceName 'TeamsEventsPolicy' -Workload 'Teams' -Verb 'Get' -CallerParams $PSBoundParameters
}