Unified KV Secret Lifecycle (Required Core)
Use one API to create, update, read, delete, destroy, list, and describe secrets independent of the underlying provider.
Open Secrets Language
A capability-driven abstraction API for secrets, leases, rotation, and sync workflows across heterogeneous providers. Build one client. Run it against Vault-class backends, cloud secret managers, and operator-driven sync systems without guessing what’s supported.
GET /osl/v1/capabilities/get (clients adapt safely at runtime)put|get|delete|destroy|list|describe + taint|untaint|is-taintedkv.versioning, lease.issue, rotation.policy / rotation.rotate, sync.manageUse one API to create, update, read, delete, destroy, list, and describe secrets independent of the underlying provider.
Every client starts by calling GET /osl/v1/get-capabilities, then enables features only when the server and selected backend advertise them.
Extend beyond static KV with capability-gated modules: Versioning, Dynamic credentials, Rotation, Sync/materialization
OSL exists because secrets providers don’t share a single feature set. Some support versioning, some support dynamic credentials, others specialize in Kubernetes materialization or rotation. Developers want a single standard with a simple API. Security teams want a single integration surface that enables consolidation.
/osl/v1/...), snake_case fields, and a standard error envelopeOSL v1.0.0 is designed to map cleanly onto systems including:
Exact capabilities vary by backend; clients should rely on get-capabilities.
GET /osl/v1/get-capabilities once, cache it, and drive client behavior from that resultThese endpoints MUST be implemented by an OSL v1 server:
POST /osl/v1/put-secretPOST /osl/v1/get-secretPOST /osl/v1/delete-secretPOST /osl/v1/destroy-secretPOST /osl/v1/list-secretsPOST /osl/v1/describe-secretPOST /osl/v1/taint-secretPOST /osl/v1/untaint-secretPOST /osl/v1/is-secret-taintedkv.versioning)POST /osl/v1/list-secret-versionsPOST /osl/v1/get-secret-versionlease.issue)POST /osl/v1/issue-credentialPOST /osl/v1/renew-credentialPOST /osl/v1/revoke-credentialrotation.policy and/or rotation.rotate)POST /osl/v1/put-rotation-policyPOST /osl/v1/rotate-secretsync.manage)POST /osl/v1/put-syncPOST /osl/v1/run-syncPOST /osl/v1/get-sync-statusPOST /osl/v1/list-syncsPOST /osl/v1/delete-syncOSL standardizes responses so clients can be strict and predictable:
osl-version and resultfeature-not-supported errorFor inventory-style workflows, OSL also includes:
GET /osl/v1/list-appsGET /osl/v1/list-backendsGet OSL updates, implementation guides, and release notes.
Frontend-only Listmonk form. Update params.newsletter in hugo.toml to match your existing Listmonk installation.