Public/ApiKeys/Remove-JIMApiKey.ps1
|
# Copyright (c) Tetron Limited. All rights reserved. # Licensed under the Tetron Commercial License. See LICENSE file in the project root. function Remove-JIMApiKey { <# .SYNOPSIS Removes an API Key from JIM. .DESCRIPTION Permanently deletes an API Key. Any requests using this key will fail immediately after deletion. .PARAMETER Id The unique identifier (GUID) of the API Key to delete. .PARAMETER InputObject API Key object to delete (from pipeline). .PARAMETER Force Suppresses confirmation prompts. .PARAMETER PassThru If specified, returns the deleted API Key object. .OUTPUTS If -PassThru is specified, returns the deleted API Key object. .EXAMPLE Remove-JIMApiKey -Id $keyId Removes the API Key with the specified ID (prompts for confirmation). .EXAMPLE Remove-JIMApiKey -Id $keyId -Force Removes the API Key without confirmation. .EXAMPLE Get-JIMApiKey | Where-Object { $_.name -like "Test*" } | Remove-JIMApiKey -Force Removes all API Keys with names starting with "Test". .LINK Get-JIMApiKey New-JIMApiKey Set-JIMApiKey #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High', DefaultParameterSetName = 'ById')] [OutputType([PSCustomObject])] param( [Parameter(Mandatory, ParameterSetName = 'ById', ValueFromPipelineByPropertyName)] [Guid]$Id, [Parameter(Mandatory, ParameterSetName = 'ByInputObject', ValueFromPipeline)] [PSCustomObject]$InputObject, [switch]$Force, [switch]$PassThru ) process { # Check connection first if (-not $script:JIMConnection) { Write-Error "You are not connected to JIM. Run Connect-JIM -Url <your JIM URL> to authenticate, then try again." return } $keyId = if ($InputObject) { $InputObject.id } else { $Id } # Get the key first for confirmation message and PassThru $existing = $null try { $existing = Invoke-JIMApi -Endpoint "/api/v1/apikeys/$keyId" } catch { Write-Error "API Key not found: $keyId" return } $confirmMessage = "Delete API Key '$($existing.name)' ($keyId)?" if ($Force -or $PSCmdlet.ShouldProcess($existing.name, "Delete API Key")) { Write-Verbose "Deleting API Key: $keyId" try { Invoke-JIMApi -Endpoint "/api/v1/apikeys/$keyId" -Method 'DELETE' Write-Verbose "Deleted API Key: $keyId" if ($PassThru) { $existing } } catch { Write-Error "Failed to delete API Key: $_" } } } } |