Public/Get-GCRoutingQueues.ps1

<#
.SYNOPSIS
    Retrieves a list of routing queues from Genesys Cloud.

.DESCRIPTION
    Queries the Genesys Cloud API to retrieve a paginated list of routing queues.
    Supports filtering by name and active status, and sorting.
    API Endpoint: GET /api/v2/routing/queues

.PARAMETER PageSize
    The number of results per page. Default is 25.

.PARAMETER PageNumber
    The page number to retrieve. Default is 1.

.PARAMETER SortOrder
    The sort order for results. Valid values are 'ascending' or 'descending'.

.PARAMETER Name
    Filter queues by name. Supports partial matching.

.PARAMETER Active
    Filter queues by active status. Set to $true for active queues or $false for inactive.

.EXAMPLE
    Get-GCRoutingQueues
    Retrieves the first page of routing queues with default page size.

.EXAMPLE
    Get-GCRoutingQueues -Name 'Support' -Active $true -PageSize 50
    Retrieves active queues matching 'Support' with 50 results per page.

.NOTES
    Genesys Cloud API: GET /api/v2/routing/queues
#>

function Get-GCRoutingQueues {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $false)]
        [int]$PageSize = 25,

        [Parameter(Mandatory = $false)]
        [int]$PageNumber = 1,

        [Parameter(Mandatory = $false)]
        [string]$SortOrder,

        [Parameter(Mandatory = $false)]
        [string]$Name,

        [Parameter(Mandatory = $false)]
        [bool]$Active
    )

    $queryParams = @{
        pageSize   = $PageSize
        pageNumber = $PageNumber
    }

    if ($SortOrder) { $queryParams['sortOrder'] = $SortOrder }
    if ($Name) { $queryParams['name'] = $Name }
    if ($PSBoundParameters.ContainsKey('Active')) { $queryParams['active'] = $Active }

    $endpoint = "routing/queues"
    return Invoke-GCApiRequest -Endpoint $endpoint -Method GET -QueryParameters $queryParams
}