Public/Get-SCAPolicy.ps1

# .ExternalHelp IdentityCommand.SCA-help.xml
function Get-SCAPolicy {
    [CmdletBinding(DefaultParameterSetName = 'List')]
    param(
        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = 'ById'
        )]
        [Alias('policyId')]
        [String]$policy_id,

        [parameter(
            Mandatory = $false,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = 'List'
        )]
        [ValidateSet('Active', 'Expired', 'Error', 'Validating')]
        [String]$status,

        [parameter(
            Mandatory = $false,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = 'List'
        )]
        [String]$free_text,

        [parameter(
            Mandatory = $false,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = 'List'
        )]
        [ValidateSet('AWS', 'GCP', 'AZURE', 'AWS_IDC', 'AZURE_ENTRA_ID')]
        [String]$cloud_provider
    )

    begin { }#begin

    process {

        $URI = "$($ISPSSSession.tenant_url)/api/policies"

        if ($PSCmdlet.ParameterSetName -eq 'ById') {

            $URI = Add-QueryString -URI "$URI/$policy_id" -SupportsDebug

        } else {

            $boundParameters = $PSBoundParameters | Get-Parameter

            #The API filters on the numeric value of these fields
            if ($PSBoundParameters.ContainsKey('status')) {
                $boundParameters['status'] = ConvertTo-SCAApiValue -Name PolicyStatus -Value $status
            }

            if ($PSBoundParameters.ContainsKey('cloud_provider')) {
                $boundParameters['cloud_provider'] = ConvertTo-SCAApiValue -Name CloudProvider -Value $cloud_provider
            }

            $URI = Add-QueryString -URI $URI -Parameter $boundParameters -SupportsDebug

        }

        #Send Request
        $result = Invoke-IDRestMethod -Uri $URI -Method GET -Headers $(Get-SCAPolicyApiHeader)

        if ($null -ne $result) {

            if ($PSCmdlet.ParameterSetName -eq 'ById') { $result }
            else { $result.hits }

        }

    }#process

    end { }#end

}