Public/CloudRecording/Remove-ZoomMeetingRecordings.ps1

<#
 
.SYNOPSIS
Delete all recording files of a meeting.
 
.DESCRIPTION
Delete all recording files of a meeting.
 
.PARAMETER MeetingId
The meeting ID or meeting UUID. If the meeting ID is provided instead of UUID,the response will be for the latest
meeting instance. If a UUID starts with \"/\" or contains \"//\" (example: \"/ajXp112QmuoKj4854875==\"), you must
**double encode** the UUID before making an API request.
 
.PARAMETER Action
The recording delete action.
Trash - Move recording to trash. This is the default.
Delete - Delete recording permanently.
 
.OUTPUTS
An object with the Zoom API response.
 
.EXAMPLE
Send a meeting's recordings to the trash.
Remove-ZoomMeetingRecordings 123456789
 
.EXAMPLE
Send multiple meeting recordings to the trash.
Remove-ZoomMeetingRecordings 123456789,987654321
 
.LINK
https://marketplace.zoom.us/docs/api-reference/zoom-api/cloud-recording/recordingdelete
 
#>


function Remove-ZoomMeetingRecordings {
    [CmdletBinding(SupportsShouldProcess = $True, ConfirmImpact='Medium')]
    param (
        [Parameter(
            Mandatory = $True,
            ValueFromPipeline = $True,
            ValueFromPipelineByPropertyName = $True,
            Position = 0
        )]
        [Alias('meeting_id', 'meetingids', 'id', 'ids')]
        [string[]]$MeetingId,

        [ValidateSet('trash', 'delete')]
        [string]$Action = 'trash',

        [ValidateNotNullOrEmpty()]
        [string]$ApiKey,

        [ValidateNotNullOrEmpty()]
        [string]$ApiSecret
    )

    begin {
        #Generate Headers and JWT (JSON Web Token)
        $Headers = New-ZoomHeaders -ApiKey $ApiKey -ApiSecret $ApiSecret
    }

    process {
        foreach($Id in $MeetingId) {
            $Request = [System.UriBuilder]"https://api.zoom.us/v2/meetings/$Id/recordings"
            $query = [System.Web.HttpUtility]::ParseQueryString([String]::Empty)
            $query.Add('action', $Action)
            $Request.Query = $query.ToString()

            if ($PScmdlet.ShouldProcess($user, 'Remove')) {
                try {
                    $response = Invoke-RestMethod -Uri $request.Uri -Headers $Headers -Body $RequestBody -Method DELETE
                }
                catch {
                    Write-Error -Message "$($_.Exception.Message)" -ErrorId $_.Exception.Code -Category InvalidOperation
                }

                Write-Output $response
            }
        }
    }
}