Public/Acronis/Invoke-AcronisApi.ps1

function Invoke-AcronisApi {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory)]
        [string]$Uri,

        [Parameter()]
        [Microsoft.PowerShell.Commands.WebRequestMethod]
        $Method = 'Get',

        [Parameter()]
        $Body,

        [Parameter()]
        $RawBody = $null,

        [Parameter()]
        [string]$ContentType = 'application/x-www-form-urlencoded'
    )

    try {
        # Get access token
        $token = Get-AcronisAccessToken
        $baseURI = 'https://dk01-cloud.acronis.com/'

        $params = @{
            Uri = $baseURI + $Uri
            Method = $Method
            Headers = @{
                Authorization = 'Bearer ' + $token.AccessToken
                'Content-Type' = $ContentType
            }
        }

        if ($Body) {
            $params.Body = $Body | ConvertTo-Json -Depth 100
        }
        elseif ($RawBody) {
            $params.Body = $RawBody
        }
        Write-ModuleLog -Message "Invoking Acronis API at $($params.Uri) with method $($params.Method)" -Level Verbose -Component 'AcronisApi'
        $response = Invoke-RestMethod @params

        return $response
    }
    catch {
        throw
    }
}