custom/generated/Get-JcSdkGraphApplicationTraverseUserGroup.ps1
<# .Synopsis This endpoint will return all Users Groups bound to an Application, either directly or indirectly, essentially traversing the JumpCloud Graph for your Organization.\n\nEach element will contain the group's type, id, attributes and paths.\n\nThe `attributes` object is a key/value hash of compiled graph attributes for all paths followed.\n\nThe `paths` array enumerates each path from this Application to the corresponding User Group; this array represents all grouping and/or associations that would have to be removed to deprovision the User Group from this Application.\n\nSee `/members` and `/associations` endpoints to manage those collections.\n\n#### Sample Request\n```\ncurl -X GET https://console.jumpcloud.com/api/v2/applications/{Application_ID}/usergroups \\\n -H 'accept: application/json' \\\n -H 'content-type: application/json' \\\n -H 'x-api-key: {API_KEY}'\n``` .Description This endpoint will return all Users Groups bound to an Application, either directly or indirectly, essentially traversing the JumpCloud Graph for your Organization.\n\nEach element will contain the group's type, id, attributes and paths.\n\nThe `attributes` object is a key/value hash of compiled graph attributes for all paths followed.\n\nThe `paths` array enumerates each path from this Application to the corresponding User Group; this array represents all grouping and/or associations that would have to be removed to deprovision the User Group from this Application.\n\nSee `/members` and `/associations` endpoints to manage those collections.\n\n#### Sample Request\n```\ncurl -X GET https://console.jumpcloud.com/api/v2/applications/{Application_ID}/usergroups \\\n -H 'accept: application/json' \\\n -H 'content-type: application/json' \\\n -H 'x-api-key: {API_KEY}'\n``` .Example PS C:\> {{ Add code here }} {{ Add output here }} .Example PS C:\> {{ Add code here }} {{ Add output here }} .Outputs JumpCloud.SDK.V2.Models.IGraphObjectWithPaths .Link https://github.com/TheJumpCloud/jcapi-powershell/tree/master/SDKs/PowerShell/JumpCloud.SDK.V2/docs/exports/Get-JcSdkGraphApplicationTraverseUserGroup.md #> Function Get-JcSdkGraphApplicationTraverseUserGroup { [OutputType([JumpCloud.SDK.V2.Models.IGraphObjectWithPaths])] [CmdletBinding(DefaultParameterSetName='List', PositionalBinding=$false)] Param( [Parameter(Mandatory)] [JumpCloud.SDK.V2.Category('Path')] [System.String] # ObjectID of the Application. ${ApplicationId}, [Parameter()] [JumpCloud.SDK.V2.Category('Query')] [System.String[]] # Supported operators are: eq, ne, gt, ge, lt, le, between, search, in ${Filter}, [Parameter(DontShow)] [System.Boolean] # Set to $true to return all results. This will overwrite any skip and limit parameter. $Paginate = $true ) Begin { $Results = @() $PSBoundParameters.Add('HttpPipelineAppend', { param($req, $callback, $next) # call the next step in the Pipeline $ResponseTask = $next.SendAsync($req, $callback) $global:JCHttpRequest = $req $global:JCHttpRequestContent = If (-not [System.String]::IsNullOrEmpty($req.Content)) { $req.Content.ReadAsStringAsync() } $global:JCHttpResponse = $ResponseTask Return $ResponseTask } ) } Process { If ($Paginate -and $PSCmdlet.ParameterSetName -in ('List')) { $PSBoundParameters.Remove('Paginate') | Out-Null If ([System.String]::IsNullOrEmpty($PSBoundParameters.Limit)) { $PSBoundParameters.Add('Limit', 100) } If ([System.String]::IsNullOrEmpty($PSBoundParameters.Skip)) { $PSBoundParameters.Add('Skip', 0) } Do { Write-Debug ("Limit: $($PSBoundParameters.Limit); "); Write-Debug ("Skip: $($PSBoundParameters.Skip); "); $Result = JumpCloud.SDK.V2.internal\Get-JcSdkInternalGraphApplicationTraverseUserGroup @PSBoundParameters Write-Debug ('HttpRequest: ' + $JCHttpRequest); Write-Debug ('HttpRequestContent: ' + $JCHttpRequestContent.Result); Write-Debug ('HttpResponse: ' + $JCHttpResponse.Result); $Result = If ('Results' -in $Result.PSObject.Properties.Name) { $Result.results } Else { $Result } If (-not [System.String]::IsNullOrEmpty($Result)) { $ResultCount = ($Result | Measure-Object).Count; $Results += $Result; $PSBoundParameters.Skip += $ResultCount } } While ($ResultCount -eq $PSBoundParameters.Limit -and -not [System.String]::IsNullOrEmpty($Result)) } Else { $PSBoundParameters.Remove('Paginate') | Out-Null $Result = JumpCloud.SDK.V2.internal\Get-JcSdkInternalGraphApplicationTraverseUserGroup @PSBoundParameters Write-Debug ('HttpRequest: ' + $JCHttpRequest); Write-Debug ('HttpRequestContent: ' + $JCHttpRequestContent.Result); Write-Debug ('HttpResponse: ' + $JCHttpResponse.Result); $Result = If ('Results' -in $Result.PSObject.Properties.Name) { $Result.results } Else { $Result } If (-not [System.String]::IsNullOrEmpty($Result)) { $Results += $Result; } } } End { # Clean up global variables $GlobalVars = @('JCHttpRequest', 'JCHttpRequestContent', 'JCHttpResponse') $GlobalVars | ForEach-Object { If ((Get-Variable -Scope:('Global')).Where( { $_.Name -eq $_ })) { Remove-Variable -Name:($_) -Scope:('Global') } } Return $Results } } |