Root/Get-WS1AppCatalog.ps1

<#
.SYNOPSIS
Get a Catalog Application information using Hash as a sorting filter.
 
.PARAMETER Tenant
Mandatory: WS1 Access Tenant URL
 
.PARAMETER Token
Mandatory: oAuth2 AccessToken
 
.PARAMETER Filter
Mandatory: HashTable format filter
 
@{
    "nameFilter" = "Application Name"
    "categories" = @()
    "includeTypes" = @("Saml11", "Saml20", "WSFed12","WebAppLink")
    "includeAttributes" = @("labels", "uiCapabilities", "authInfo")
    "rootResource" = "false"
}
 
#>

function Get-WS1AppCatalog {
    [cmdletbinding()]
    param(
        [Parameter(Mandatory=$true)][string]$Tenant,
        [Parameter(Mandatory=$true)][string]$Token,
        [Parameter(Mandatory=$True,ValueFromPipeline=$True)][Hashtable]$Filter
    )
    Begin{}
    Process{
        $URI = "https://$($Tenant)/SAAS/jersey/manager/api/catalogitems/search"
        $Header = @{
            Host = $Tenant
            Authorization = "HZN $($Token)"
            'Content-Type' = 'application/vnd.vmware.horizon.manager.catalog.search+json'
            Accept = 'application/vnd.vmware.horizon.manager.catalog.item.list+json'
        }
        $Body = $Filter | ConvertTo-Json
        Write-Debug "Body(Filter): $Body"
        $IRMParams = @{
            Method = 'POST'
            Headers = $Header
            Body = $Body
            URI = $URI
        }
        Write-Debug $($IRMParams | out-string)
        $AppCatalog =  Invoke-RestMethod @IRMParams
        If($AppCatalog.items){
            Return $AppCatalog
        }
        Write-Warning "Application not found"
        Return $false
    }
}