Documentation menu
These are pre-release docs from the main branch.

API reference

12 operations in passwords. Raw spec: openapi.json.

GET/api/v1/passwords

GET /api/passwords — vault browser rows; never carries secrets.

Parameters

NameInTypeRequiredDescription
client_idquery—No
globalquery—No`true` = org-level entries only.

Responses

StatusDescription
200

Security: bearer

POST/api/v1/passwords

POST /api/passwords — instant-first (IF1/IF2); seals the secret before the claim so a crypto failure never consumes an idempotency key.

Request body

CreatePasswordRequest

Responses

StatusDescription
200
409idempotency key reused
422title/secret rejected

Security: bearer

GET/api/v1/passwords/{id}

GET /api/passwords/{id}

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200
404entry not visible in scope

Security: bearer

PATCH/api/v1/passwords/{id}

PATCH /api/passwords/{id} — instant-first; a present `secret` rotates the ciphertext and archives the previous one to history in-commit.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

UpdatePasswordRequest

Responses

StatusDescription
200
404entry not visible in scope
409idempotency key reused
422validation error

Security: bearer

DELETE/api/v1/passwords/{id}

DELETE /api/passwords/{id} — the vault is deletion-capable; history cascade-deletes. Emits `password.deleted`.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200deleted
404entry not visible in scope

Security: bearer

GET/api/v1/passwords/{id}/history

GET /api/passwords/{id}/history — change ledger metadata (the ciphertexts are retained for forensic re-derivation, never exposed).

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200

Security: bearer

POST/api/v1/passwords/{id}/reveal

POST /api/passwords/{id}/reveal — the ONLY plaintext path. Requires `passwords:edit`, runs inside the org tx so the reveal event commits atomically with the read, and the response is the sole carrier of the decrypted secret.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200
403reveal requires passwords:edit
404entry not visible in scope

Security: bearer