cffda99591
BREAKING CHANGES
- Connect-Infisical no longer accepts -ProjectId, -Environment, or -SecretPath.
- InfisicalConnection no longer carries ProjectId, Environment, or DefaultSecretPath.
- Every cmdlet that previously inherited those fields now requires -ProjectId
and/or -Environment as Mandatory=true. -SecretPath / -Path remain optional
and default to "/" at the client layer.
- INFISICAL_PROJECT_ID, INFISICAL_ENVIRONMENT, INFISICAL_SECRET_PATH env-var
scanning removed from Connect-Infisical.
- Resolve{ProjectId,Environment,SecretPath} helpers removed from
InfisicalCmdletBase. ResolveOrganizationId retained.
ADDED
- Get-InfisicalProject -Type <enum> filters the list by product surface
(secret-manager, cert-manager, kms, ssh, secret-scanning, pam, ai) with
IntelliSense via ValidateSet.
- Get-InfisicalProject -IncludeRoles switch maps to includeRoles=true/false
query parameter (always sent).
RATIONALE
- Implicit connection scoping caused 400 Bad Request when the active
connection's ProjectId belonged to a different product surface than the
cmdlet's target (e.g. secret-manager project id passed to /cert-manager/*).
- Explicit parameters make scope unambiguous and make scripts portable
across projects.
- The new -Type filter on Get-InfisicalProject lets callers discover the
correct project id for each subsequent CRUD invocation without needing
connection-level inheritance.
INTERNAL
- All client classes (Secrets / Folders / Environments / Tags / Projects /
Pki) now receive scoping as explicit arguments rather than reading the
InfisicalConnection object.
- Client-layer SecretPath / Path defaulting to "/" is preserved via
FirstNonEmpty(...).
- Help XML updated to remove all "session-pinned" / "active connection"
phrasing; OrderedDictionary splatting examples now include the mandatory
parameters.
- 216/216 unit tests passing.
32 lines
1.1 KiB
C#
32 lines
1.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Security;
|
|
using PSInfisicalAPI.Models;
|
|
|
|
namespace PSInfisicalAPI.Connections
|
|
{
|
|
public sealed class InfisicalConnection
|
|
{
|
|
public Uri BaseUri { get; set; }
|
|
public string ApiVersion { get; set; }
|
|
public string PinnedApiVersion { get; set; }
|
|
public InfisicalAuthType AuthType { get; set; }
|
|
public string OrganizationId { get; set; }
|
|
public DateTimeOffset ConnectedAtUtc { get; set; }
|
|
public DateTimeOffset? ExpiresAtUtc { get; set; }
|
|
public bool IsConnected { get; set; }
|
|
|
|
public Dictionary<string, string> ResolvedEndpointVersions { get; } = new Dictionary<string, string>(StringComparer.Ordinal);
|
|
|
|
internal SecureString AccessToken { get; set; }
|
|
|
|
public override string ToString()
|
|
{
|
|
return string.Concat(
|
|
"BaseUri=", BaseUri != null ? BaseUri.ToString() : "",
|
|
" AuthType=", AuthType.ToString(),
|
|
" Connected=", IsConnected ? "true" : "false");
|
|
}
|
|
}
|
|
}
|