Public/ApiClient.ps1
# # Copyright 2018-2020, Alexis La Goutte <alexis.lagoutte at gmail dot com> # # SPDX-License-Identifier: Apache-2.0 # function Add-ArubaCPApiClient { <# .SYNOPSIS Add an API Client on ClearPass .DESCRIPTION Add an API Client with client id, client secret, grand_types... .EXAMPLE Add-ArubaCPApiClient -client_id Client1 -grant_types client_credentials -profile_id 1 Add API Client Client1 type client_credentials with profile id 1 (Super Administrator) .EXAMPLE Add-ArubaCPApiClient -client_id Client2 -client_secret mySecret -client_description "Add via PowerArubaCP" -grant_types client_credentials -profile_id 1 Add API Client Client2 with Client Secret mySecret and client description "Add Via PowerArubaCP" .EXAMPLE Add-ArubaCPApiClient -client_id Client3 -grant_types client_credentials -profile_id 1 -enabled:$false Add API Client Client3 with enabled status to disabled #> Param( [Parameter (Mandatory = $false)] [int]$id, [Parameter (Mandatory = $true)] [string]$client_id, [Parameter (Mandatory = $false)] [string]$client_secret, [Parameter (Mandatory = $false)] [string]$client_description, [Parameter (Mandatory = $true)] [ValidateSet('client_credentials', 'password')] [string]$grant_types, [Parameter (Mandatory = $true)] [string]$profile_id, [Parameter (Mandatory = $false)] [switch]$enabled, [Parameter (Mandatory = $False)] [ValidateNotNullOrEmpty()] [PSObject]$connection = $DefaultArubaCPConnection ) Begin { } Process { $uri = "api/api-client" $_ac = new-Object -TypeName PSObject if ( $PsBoundParameters.ContainsKey('id') ) { $_ac | add-member -name "id" -membertype NoteProperty -Value $id } $_ac | add-member -name "client_id" -membertype NoteProperty -Value $client_id if ( $PsBoundParameters.ContainsKey('client_description') ) { $_ac | add-member -name "client_description" -membertype NoteProperty -Value $client_description } if ( $PsBoundParameters.ContainsKey('client_secret') ) { $_ac | add-member -name "client_secret" -membertype NoteProperty -Value $client_secret } $_ac | add-member -name "grant_types" -membertype NoteProperty -Value $grant_types $_ac | add-member -name "profile_id" -membertype NoteProperty -Value $profile_id if ( $PsBoundParameters.ContainsKey('enabled') ) { if ( $enabled ) { $_ac | add-member -name "enabled" -membertype NoteProperty -Value $True } else { $_ac | add-member -name "enabled" -membertype NoteProperty -Value $false } } $ac = invoke-ArubaCPRestMethod -method "POST" -body $_ac -uri $uri -connection $connection $ac } End { } } function Get-ArubaCPApiClient { <# .SYNOPSIS Get API Client info on CPPM .DESCRIPTION Get API Client (Client Id, Client Secret, Grand Types...) .EXAMPLE Get-ArubaCPApiClient Get ALL API Client on the Clearpass .EXAMPLE Get-ArubaCPApiClient -client_id PowerArubaCP Get info about API Client ID PowerArubaCP Aruba on the ClearPass .EXAMPLE Get-ArubaCPApiClient -grant_types client_cretendials Get info about API Client Grant Types equal client_credentials on the ClearPass .EXAMPLE Get-ArubaCApiClient -id 23 Get info about API id 23 on the ClearPass .EXAMPLE Get-ArubaCPApiClient -client_id PowerArubaCP -filter_type contains Get info about API Client where client_id contains PowerArubaCP #> [CmdLetBinding(DefaultParameterSetName = "Default")] Param( [Parameter (Mandatory = $false)] [Parameter (ParameterSetName = "id")] [int]$id, [Parameter (Mandatory = $false, Position = 1)] [Parameter (ParameterSetName = "client_id")] [string]$client_id, [Parameter (Mandatory = $false)] [Parameter (ParameterSetName = "grant_types")] [ValidateSet('client_credentials', 'password')] [string]$grant_types, [Parameter (Mandatory = $false)] [Parameter (ParameterSetName = "filter")] [string]$filter_attribute, [Parameter (Mandatory = $false)] [Parameter (ParameterSetName = "id")] [Parameter (ParameterSetName = "client_id")] [Parameter (ParameterSetName = "grant_types")] [Parameter (ParameterSetName = "filter")] [ValidateSet('equal', 'contains')] [string]$filter_type, [Parameter (Mandatory = $false)] [Parameter (ParameterSetName = "filter")] [psobject]$filter_value, [Parameter (Mandatory = $false)] [int]$limit, [Parameter (Mandatory = $False)] [ValidateNotNullOrEmpty()] [PSObject]$connection = $DefaultArubaCPConnection ) Begin { } Process { $invokeParams = @{ } if ( $PsBoundParameters.ContainsKey('limit') ) { $invokeParams.add( 'limit', $limit ) } switch ( $PSCmdlet.ParameterSetName ) { "id" { $filter_value = $id $filter_attribute = "id" } "client_id" { $filter_value = $client_id $filter_attribute = "client_id" } "grant_types" { $filter_value = $grant_types $filter_attribute = "grant_types" } default { } } if ( $PsBoundParameters.ContainsKey('filter_type') ) { switch ( $filter_type ) { "equal" { $filter_value = @{ "`$eq" = $filter_value } } "contains" { $filter_value = @{ "`$contains" = $filter_value } } default { } } } if ($filter_value -and $filter_attribute) { $filter = @{ $filter_attribute = $filter_value } $invokeParams.add( 'filter', $filter ) } $uri = "api/api-client" $ac = Invoke-ArubaCPRestMethod -method "GET" -uri $uri @invokeParams -connection $connection $ac._embedded.items } End { } } function Remove-ArubaCPApiClient { <# .SYNOPSIS Remove an ApiClient on ClearPass .DESCRIPTION Remove an ApiClient on ClearPass .EXAMPLE $ac = Get-ArubaCPApiClient -client_id PowerArubaCP PS C:\>$ac | Remove-ArubaCPApiClient Remove API Client with client id PowerArubaCP .EXAMPLE Remove-ArubaCPEndpoint -id 3001 -noconfirm Remove API Client with id 3001 and no confirmation #> Param( [Parameter (Mandatory = $true, ParameterSetName = "id")] [string]$id, [Parameter (Mandatory = $true, ValueFromPipeline = $true, Position = 1, ParameterSetName = "ac")] [ValidateScript( { Confirm-ArubaCPApiClient $_ })] [psobject]$ac, [Parameter(Mandatory = $false)] [switch]$noconfirm, [Parameter (Mandatory = $False)] [ValidateNotNullOrEmpty()] [PSObject]$connection = $DefaultArubaCPConnection ) Begin { } Process { #get ApiClient id from nad ps object if ($ac) { $id = $ac.client_id } $uri = "api/api-client/${id}" if ( -not ( $Noconfirm )) { $message = "Remove API Client on ClearPass" $question = "Proceed with removal of API Client ${id} ?" $choices = New-Object Collections.ObjectModel.Collection[Management.Automation.Host.ChoiceDescription] $choices.Add((New-Object Management.Automation.Host.ChoiceDescription -ArgumentList '&Yes')) $choices.Add((New-Object Management.Automation.Host.ChoiceDescription -ArgumentList '&No')) $decision = $Host.UI.PromptForChoice($message, $question, $choices, 1) } else { $decision = 0 } if ($decision -eq 0) { Write-Progress -activity "Remove API Client" Invoke-ArubaCPRestMethod -method "DELETE" -uri $uri -connection $connection Write-Progress -activity "Remove API Client" -completed } } End { } } |