Public/RoomControls/Restart-ZoomRoom.ps1

<#
 
.SYNOPSIS
Restart Zoom Room client.
.DESCRIPTION
Restart Zoom Room client.
.PARAMETER RoomId
The ID of the room that is restarting.
.PARAMETER JsonRPC
A string specifying the version of the JSON-RPC protocol. Default is 2.0.
.PARAMETER ApiKey
The Api Key.
.PARAMETER ApiSecret
The Api Secret.
.OUTPUTS
JSON object that looks like:
{
  "jsonrpc": "2.0",
  "result": {
    "room_id": "63UtYMhSQZaBRPCNRXrD8A",
    "send_at": "2017-09-15T01:26:05Z"
  },
  "id": "49cf01a4-517e-4a49-b4d6-07237c38b749"
}
.LINK
https://marketplace.zoom.us/docs/guides/zoom-rooms/zoom-rooms-api
.EXAMPLE
Restart-ZoomRoom dEaS6ZJZTOCBKL1oeyc9rA
.EXAMPLE
Restart-ZoomRoom -RoomId dEaS6ZJZTOCBKL1oeyc9rA
.EXAMPLE
Restart all Zoom rooms:
Get-ZoomRooms | Restart-ZoomRoom
 
#>


function Restart-ZoomRoom {
    [CmdletBinding()]
    param (
        [Parameter(
            Mandatory = $True, 
            ValueFromPipeline = $True, 
            ValueFromPipelineByPropertyName = $True,
            Position = 0
        )]
        [Alias('zr_id', 'roomids')]
        [string[]]$RoomId,

        [string]$JsonRPC = '2.0',

        [string]$Method = 'restart',

        [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 $RoomId) {
            $Request = [System.UriBuilder]"https://api.zoom.us/v2/rooms/$Id/zrclient"  

            $RequestBody = @{
                'jsonrpc' = $JsonRpc
                'method'  = $Method
            }
            
            $RequestBody = ConvertTo-Json $RequestBody -Depth 2
    
            try {
                $response = Invoke-RestMethod -Uri $Request.Uri -Headers $Headers -Body $RequestBody -Method POST
             } catch {
                 Write-Error -Message "$($_.Exception.Message)" -ErrorId $_.Exception.Code -Category InvalidOperation
             }
    
            Write-Output $response
        }
    }
}