Private/Invoke/Invoke-CWMGetMaster.ps1

function Invoke-CWMGetMaster {
    [CmdletBinding()]
    param (
        $Arguments,
        [string]$Endpoint
    )

    if ($Arguments.id) { $Endpoint = Join-Url $Endpoint $id }

    if ($Arguments.count.IsPresent) { $Endpoint = Join-Url $Endpoint '/count' }

    if ($Arguments.condition) {
        $condition = [System.Web.HttpUtility]::UrlEncode($Arguments.condition)
        $URLParameters += "&conditions=$condition"
    }

    if ($Arguments.childConditions) {
        $childConditions = [System.Web.HttpUtility]::UrlEncode($Arguments.childConditions)
        $URLParameters += "&childConditions=$childConditions"
    }

    if ($Arguments.customFieldConditions) {
        $customFieldConditions = [System.Web.HttpUtility]::UrlEncode($Arguments.customFieldConditions)
        $URLParameters += "&customFieldConditions=$customFieldConditions"
    }

    if ($Arguments.Fields) {
        $fields = [System.Web.HttpUtility]::UrlEncode($($Arguments.Fields -join ','))
        $URLParameters += "&fields=$fields"
    }

    if ($Arguments.orderBy) {
        $orderBy = [System.Web.HttpUtility]::UrlEncode($Arguments.orderBy)
        $URLParameters += "&orderBy=$orderBy"
    }

    $URI = New-CWMUrl -Endpoint $Endpoint -URLParameters $URLParameters

    $WebRequestArguments = @{
        Uri    = $URI
        Method = 'GET'
    }

    if ($Arguments.all -and !$Arguments.count.IsPresent) { $Result = Invoke-CWMAllResult -Arguments $WebRequestArguments }
    else {
        if ($Arguments.pageSize) { $WebRequestArguments.URI += "&pageSize=$pageSize" }
        if ($Arguments.page) { $WebRequestArguments.URI += "&page=$page" }

        $Result = Invoke-CWMWebRequest -Arguments $WebRequestArguments
        if ($Result.content) {
            try { $Result = $Result.content | ConvertFrom-Json }
            catch {
                Write-Error 'There was an issue converting the results from JSON.'
                $_
            }
        }
    }

    if ($Arguments.count.IsPresent -and $Result.PSObject.Properties.count) { $Result = $Result.count }

    $Result | Write-Output
}