Public/Get-InfisicalTag.ps1
|
# Get-InfisicalTag.ps1 # Retrieves tags from an Infisical project. # Called by: User directly. # Dependencies: InfisicalSession class, InfisicalTag class, Invoke-InfisicalApi, Get-InfisicalSession function Get-InfisicalTag { <# .SYNOPSIS Retrieves tags from an Infisical project. .DESCRIPTION Fetches tags from the specified project. Tags are used to categorize and filter secrets. Use -Id or -Slug to retrieve a specific tag. .PARAMETER Id The tag ID to retrieve. .PARAMETER Slug The tag slug to retrieve. .PARAMETER ProjectId The project/workspace ID. Overrides the session default if specified. .EXAMPLE Get-InfisicalTag Returns all tags in the current project. .EXAMPLE Get-InfisicalTag -Slug 'production' Returns the tag with slug "production". .EXAMPLE Get-InfisicalTag -Id 'tag-abc-123' Returns a specific tag by ID. .OUTPUTS [InfisicalTag] or [InfisicalTag[]] .LINK New-InfisicalTag .LINK Set-InfisicalTag .LINK Remove-InfisicalTag #> [CmdletBinding(DefaultParameterSetName = 'List')] [OutputType([InfisicalTag], [InfisicalTag[]])] param( [Parameter(Mandatory, ParameterSetName = 'ById', Position = 0)] [ValidateNotNullOrEmpty()] [string] $Id, [Parameter(Mandatory, ParameterSetName = 'BySlug')] [ValidateNotNullOrEmpty()] [string] $Slug, [Parameter()] [string] $ProjectId ) $session = Get-InfisicalSession $resolvedProjectId = if ([string]::IsNullOrEmpty($ProjectId)) { $session.ProjectId } else { $ProjectId } switch ($PSCmdlet.ParameterSetName) { 'ById' { $response = Invoke-InfisicalApi -Method GET -Endpoint "/api/v1/projects/$resolvedProjectId/tags/$Id" -Session $session if ($null -eq $response -or $null -eq $response.tag) { $errorRecord = [System.Management.Automation.ErrorRecord]::new( [System.Management.Automation.ItemNotFoundException]::new("Tag '$Id' not found."), 'InfisicalTagNotFound', [System.Management.Automation.ErrorCategory]::ObjectNotFound, $Id ) $PSCmdlet.WriteError($errorRecord) return } return ConvertTo-InfisicalTag -TagData $response.tag -ProjectId $resolvedProjectId } 'BySlug' { $encodedSlug = [System.Uri]::EscapeDataString($Slug) $response = Invoke-InfisicalApi -Method GET -Endpoint "/api/v1/projects/$resolvedProjectId/tags/slug/$encodedSlug" -Session $session if ($null -eq $response -or $null -eq $response.tag) { $errorRecord = [System.Management.Automation.ErrorRecord]::new( [System.Management.Automation.ItemNotFoundException]::new("Tag with slug '$Slug' not found."), 'InfisicalTagNotFound', [System.Management.Automation.ErrorCategory]::ObjectNotFound, $Slug ) $PSCmdlet.WriteError($errorRecord) return } return ConvertTo-InfisicalTag -TagData $response.tag -ProjectId $resolvedProjectId } default { # List all tags $response = Invoke-InfisicalApi -Method GET -Endpoint "/api/v1/projects/$resolvedProjectId/tags" -Session $session if ($null -eq $response -or $null -eq $response.tags) { return } foreach ($tagData in $response.tags) { ConvertTo-InfisicalTag -TagData $tagData -ProjectId $resolvedProjectId } } } } |