functions/public/Invoke-FarmApi.ps1

function Invoke-FarmApi {
    [CmdletBinding()]
    Param(
        [Parameter()]
        [String]
        $farmname
    )

    end {
        switch ($Method) {
            'GET' {
                if ($farmname) {
                    $decodedName = [uri]::UnescapeDataString($farmname)
                    
                    $result = Get-Farm -FarmName $decodedName
                    
                    if (-not $result) {
                        return New-PSUApiResponse -StatusCode 404 -Body (@{
                            error = "Farm '$farmname' not found"
                            receivedParameter = $farmname
                        } | ConvertTo-Json)
                    }
                    
                    return $result
                }
                else {
                    Get-Farm -All
                }
            }
            'POST' {
                $AvailableKeys = @(
                    'FarmName',
                    'Address',
                    'City',
                    'State',
                    'ZipCode',
                    'PhoneNumber',
                    'Email',
                    'ContactPerson',
                    'Notes'
                )

                $payload = $Body | ConvertFrom-Json -AsHashtable
                $payload.GetEnumerator() | Foreach-Object {
                    if ($_.key -notin $AvailableKeys) {
                        throw "$($_.Key) is not a valid parameter. Valid parameters: $AvailableKeys"
                    }

                    Add-CattleRecord @payload
                }


            }
        }
    }
}