UserRoles/Get-NcentralUserRoles.ps1
function Get-NcentralUserRoles { <# .SYNOPSIS Get a list of all N-Central user Roles created under a specific Organisation ID .DESCRIPTION This function gets a list of user roles for a given OrganisationID .PARAMETER orgUnitID Optional. The Organisation ID. Defaults to 50 if not specified. .PARAMETER UserRoleID Optional. If specified, it will get only that role .PARAMETER PageNumber Optional. Specifies which page of results to retrieve. Used when the total number of users exceeds the page size. Defaults to 1 if not specified .PARAMETER PageSize Optional. Specifies the number of user roles to retrieve per page. Defaults to 50 if not specified. .PARAMETER All Optional. If specified, retrieves all user roles across all pages .PARAMETER SortOrder Optional. Specifies the sort order of the results. Valid case-insensitive input is asc, ascending, desc, descending .EXAMPLE Get-NcentralUserRoles -orgUnitID 50 This example fetches all N-Central user roles for a customer with ID 50 #> [cmdletbinding(DefaultParameterSetName = 'Paged')] param( [Parameter(Mandatory = $false)] [int]$orgUnitID = 50, [Parameter(Mandatory = $false, ParameterSetName = 'UserRole')] [int]$UserRoleID, [Parameter(Mandatory = $false, ParameterSetName = 'Paged')] [int]$PageNumber = 1, [Parameter(Mandatory = $false, ParameterSetName = 'Paged')] [int]$PageSize = 50, [Parameter(Mandatory = $false, ParameterSetName = 'All')] [switch]$All, [Parameter(Mandatory = $false, ParameterSetName = 'Paged')] [Parameter(Mandatory = $false, ParameterSetName = 'All')] [ValidateSet("asc", "ascending", "desc", "descending", "natural", "reverse")] [string]$SortOrder ) Show-Warning if ($PSBoundParameters.ContainsKey('SortOrder')) { $SortOrder = $SortOrder.ToLower() } switch ($PsCmdlet.ParameterSetName) { 'All' { $uri = "$script:BaseUrl/api/org-units/$orgUnitID/user-roles?pageNumber=$PageNumber&pageSize=$PageSize" if ($PSBoundParameters.ContainsKey('SortOrder')) { $uri = "$uri&sortOrder=$SortOrder" } $RawData = Invoke-NcentralApi -Uri $uri -Method "GET" $Pages = $RawData.totalPages $Data = New-Object System.Collections.Generic.List[Object] $Data.AddRange($RawData.data) For ($PageNumber = 2; $PageNumber -le $Pages; $PageNumber++) { $uri = "$script:BaseUrl/api/org-units/$orgUnitID/user-roles?pageNumber=$PageNumber&pageSize=$PageSize" if ($PSBoundParameters.ContainsKey('SortOrder')) { $uri = "$uri&sortOrder=$SortOrder" } $Data.AddRange((Invoke-NcentralApi -Uri $uri -Method "GET").data) } return $Data } 'Paged' { $uri = "$script:BaseUrl/api/org-units/$orgUnitID/user-roles?pageNumber=$PageNumber&pageSize=$PageSize" if ($PSBoundParameters.ContainsKey('SortOrder')) { $uri = "$uri&sortOrder=$SortOrder" } return (Invoke-NcentralApi -Uri $uri -Method "GET").data } 'UserRole' { $uri = "$script:BaseUrl/api/org-units/$orgUnitID/user-roles/$UserRoleID" return (Invoke-NcentralApi -Uri $uri -Method "GET").data } } } |