Public/Get-GCAuthorizationRoles.ps1

<#
.SYNOPSIS
    Retrieves a list of authorization roles.

.DESCRIPTION
    Returns a paginated list of roles from the Genesys Cloud authorization system.
    Uses the GET /api/v2/authorization/roles endpoint.

.PARAMETER PageSize
    The number of results per page. Defaults to 25.

.PARAMETER PageNumber
    The page number to retrieve. Defaults to 1.

.PARAMETER SortBy
    The field to sort results by.

.PARAMETER SortOrder
    The sort direction: ascending or descending.

.PARAMETER Name
    Filter roles by name.

.PARAMETER Permission
    Filter roles by permission(s).

.EXAMPLE
    Get-GCAuthorizationRoles

.EXAMPLE
    Get-GCAuthorizationRoles -PageSize 50 -Name 'Admin'

.EXAMPLE
    Get-GCAuthorizationRoles -Permission @('admin', 'user')

.NOTES
    Genesys Cloud API: GET /api/v2/authorization/roles
#>

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

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

        [Parameter()]
        [string]$SortBy,

        [Parameter()]
        [string]$SortOrder,

        [Parameter()]
        [string]$Name,

        [Parameter()]
        [string[]]$Permission
    )

    $endpoint = "authorization/roles"
    $queryParams = @{
        pageSize   = $PageSize
        pageNumber = $PageNumber
    }

    if ($SortBy)     { $queryParams['sortBy'] = $SortBy }
    if ($SortOrder)  { $queryParams['sortOrder'] = $SortOrder }
    if ($Name)       { $queryParams['name'] = $Name }
    if ($Permission) { $queryParams['permission'] = $Permission -join ',' }

    return Invoke-GCApiRequest -Endpoint $endpoint -Method GET -QueryParameters $queryParams
}