Private/Invoke-GreenhouseJobBoardRequest.ps1

function Invoke-GreenhouseJobBoardRequest {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [string]$BoardToken,

        [Parameter]
        [string]$Path,

        [hashtable]$Query,

        [ValidateSet('Get')]
        [string]$Method = 'Get'
    )

    If ($Path){
        $baseUri = "https://boards-api.greenhouse.io/v1/boards/$BoardToken/$Path"
    } Else {
        $baseUri = "https://boards-api.greenhouse.io/v1/boards/$BoardToken"
    }
    $builder = [System.UriBuilder]::new($baseUri)

    if ($Query) {
        $pairs = foreach ($entry in $Query.GetEnumerator()) {
            $key = [System.Uri]::EscapeDataString([string]$entry.Key)
            $value = [System.Uri]::EscapeDataString([string]$entry.Value)
            "$key=$value"
        }
        $builder.Query = ($pairs -join '&')
    }

    Invoke-RestMethod -Uri $builder.Uri -Method $Method
}