Sekret.Client
0.1.0
dotnet add package Sekret.Client --version 0.1.0
NuGet\Install-Package Sekret.Client -Version 0.1.0
<PackageReference Include="Sekret.Client" Version="0.1.0" />
<PackageVersion Include="Sekret.Client" Version="0.1.0" />
<PackageReference Include="Sekret.Client" />
paket add Sekret.Client --version 0.1.0
#r "nuget: Sekret.Client, 0.1.0"
#:package Sekret.Client@0.1.0
#addin nuget:?package=Sekret.Client&version=0.1.0
#tool nuget:?package=Sekret.Client&version=0.1.0
Sekret.Client
Strongly-typed .NET SDK for the Sekret secret-management server. Used by
every Operaro .NET host through Sekret.Extensions.Configuration to load
secrets at startup.
Available services
var client = new SekretClient(new SekretOptions { ... });
await client.Secrets.GetAsync("DATABASE_URL");
await client.Projects.ListAsync();
await client.Environments.ListAsync(project: "operaro");
await client.Tokens.CreateAsync(...);
await client.Audit.GetEventsAsync(...);
await client.Webhooks.RegisterAsync(...);
await client.Rotations.CreateAsync(...); // W3.32
Rotation API (W3.32)
The rotation surface mirrors the Go server's
/api/v1/projects/{project}/rotations/* endpoints. Each rotation
configuration binds a secret key in a project + environment to a provider
(currently postgres, redis, rabbitmq) and an interval; the server
runs an internal scheduler that flips the underlying credential and
updates the secret value in lockstep.
// 1. Define a rotation: rotate POSTGRES_PASSWORD every 90 days.
var created = await client.Rotations.CreateAsync(
project: "operaro",
new CreateRotationRequest
{
SecretKey = "POSTGRES_PASSWORD",
EnvironmentName = "production",
ProviderType = "postgres",
IntervalDays = 90,
ConnectionConfig = JsonSerializer.SerializeToElement(new
{
host = "operaro-postgres",
port = 5432,
user = "rotator",
db = "postgres",
}),
});
// 2. Trigger an immediate manual rotation (e.g. responding to incident).
await client.Rotations.RotateAsync("operaro", created.Id);
// 3. Poll status until the scheduler reports success.
var status = await client.Rotations.GetStatusAsync("operaro", created.Id);
// status.RotationStatusValue ∈ { idle, running, succeeded, failed }
Recommended rotation cadence
| Secret type | Interval | Notes |
|---|---|---|
| Database password | 90 days | Pair with pgbouncer / connection pooler restart |
| Redis password | 90 days | Stateless — no app-level orchestration needed |
| RabbitMQ password | 90 days | Same |
ABP DefaultPassPhrase |
Annual | Manual re-encryption required — see docs/audit/2026-04-17/encryption-key-rotation.md |
| OAuth provider secret | Per provider policy | Cannot automate — provider's UI |
Adding a new provider type
Implementations live on the Go server under
internal/rotation/providers/*. The C# SDK is purely a transport client —
adding a new provider type only requires the server change plus picking the
new string for CreateRotationRequest.ProviderType.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Sekret.Client:
| Package | Downloads |
|---|---|
|
Sekret.Extensions.Configuration
ASP.NET Core IConfigurationProvider for Sekret secrets management |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 259 | 5/2/2026 |