Private/Assert-InfisicalApiVersion.ps1
|
# Assert-InfisicalApiVersion.ps1 # Checks that the connected Infisical server supports the required API version. # Throws a terminating error with clear guidance if the endpoint is unsupported. # Called by: Invoke-InfisicalApi when a version-specific endpoint is used. # Dependencies: InfisicalSession class function Assert-InfisicalApiVersion { [CmdletBinding()] param( [Parameter(Mandatory)] [string] $Endpoint, [Parameter(Mandatory)] [InfisicalSession] $Session ) # Only check if capabilities have been probed (populated during Connect-Infisical) if ($null -eq $Session.ApiCapabilities -or $Session.ApiCapabilities.Count -eq 0) { return } # Map endpoint version prefixes to capability keys if ($Endpoint -match '^/api/v4/secrets') { if (-not $Session.ApiCapabilities['SecretsV4']) { $errorRecord = [System.Management.Automation.ErrorRecord]::new( [System.NotSupportedException]::new( "Your Infisical server does not support API v4 secret endpoints (required by this version of PSInfisical). " + "Upgrade your Infisical instance, or use PSInfisical v0.1.x which uses the v3 API." ), 'InfisicalApiVersionUnsupported', [System.Management.Automation.ErrorCategory]::InvalidOperation, $Endpoint ) $PSCmdlet.ThrowTerminatingError($errorRecord) } } elseif ($Endpoint -match '^/api/v3/secrets') { if (-not $Session.ApiCapabilities['SecretsV3']) { $errorRecord = [System.Management.Automation.ErrorRecord]::new( [System.NotSupportedException]::new( "Your Infisical server does not support API v3 secret endpoints. " + "This indicates a very old Infisical version. Please upgrade your Infisical instance." ), 'InfisicalApiVersionUnsupported', [System.Management.Automation.ErrorCategory]::InvalidOperation, $Endpoint ) $PSCmdlet.ThrowTerminatingError($errorRecord) } } } |