Private/ConvertTo-SIARequestBody.ps1

function ConvertTo-SIARequestBody {
    <#
    Serializes a request body for Invoke-SIARequest. Every SIA JSON API takes a
    JSON body; only the platform token endpoint uses form encoding, so AsForm
    is the exception rather than the default.
    #>

    [CmdletBinding()]
    [OutputType([string])]
    param(
        [Parameter(Mandatory)]
        $InputObject,

        [switch]$AsForm
    )

    if ($AsForm) {
        $pairs = foreach ($key in $InputObject.Keys) {
            '{0}={1}' -f [uri]::EscapeDataString($key), [uri]::EscapeDataString([string]$InputObject[$key])
        }
        return $pairs -join '&'
    }

    $InputObject | ConvertTo-Json -Depth 10 -Compress
}