Public/Get-BBUserRoles.ps1

Function Get-BBUserRoles {
    <#
    .SYNOPSIS
        Get the list of userroles as they are known in the GoBright Meet-Work-Visit API
    .DESCRIPTION
        Get the list of userroles as they are known in the GoBright Meet-Work-Visit API
    .PARAMETER BrightBookingApiUrl
        Address of the GoBright Meet-Work-Visit API, e.g.: https://t1b.gobright.cloud/ (please get this from the 'General Settings' page of the portal)
    .PARAMETER BrightBookingApiToken
        A valid token to access the api
    .EXAMPLE
        Get-BBUserRoles -BrightBookingApiUrl "https://t1b.gobright.cloud/" -BrightBookingApiToken "[already retreived api token]"
    .LINK
        https://support.gobright.com/
    #>


    [CmdletBinding()]
    Param(
      [Parameter(Mandatory=$True)]
       [string]$BrightBookingApiUrl,

      [Parameter(Mandatory=$True)]
       [string]$BrightBookingApiToken
    )
    Process {
        $pathandquery = "/api/user-roles/sync";

        $resturi = [System.Uri]::new([System.Uri]::new($BrightBookingApiUrl), $pathandquery)
        
        $hdrs = @{}
        $hdrs.Add("Authorization", "Bearer "+ $BrightBookingApiToken)

        Try
        {
            $response = Invoke-WebRequest -TimeoutSec 1200 -Uri $resturi -Method Get -Headers $hdrs -UseBasicParsing
        
            If ($response.StatusCode -eq 200 -or $response.StatusCode -eq 201)
            {
                $jsonresponse = $response.Content | ConvertFrom-Json
            } else {
                throw "Failed to get user sync status from the API. (statuscode: $response.StatusCode)"
            }
        }
        Catch 
        {
            $statusCode = $_.Exception.Response.StatusCode.Value__
            $responseText = $_
                        
            Try
            {
                $jsonresponse = $responseText | ConvertFrom-Json
                If ($jsonresponse.SyncRoot)
                {
                    $statusMessage = $jsonresponse.SyncRoot
                }
                Else
                {
                    $statusMessage = $responseText
                }
            } 
            Catch 
            {
                $statusMessage = $responseText
            }
            
            throw "Failed to get user sync status from the API. (statuscode: $statusCode, message: $statusMessage)"
        }
        
        return $jsonresponse
    }
}