runlot
ReferenceAPI

Secrets

Covers the 3 API operations in the secrets category.

MethodPathDescription
GET/v1/orgs/{orgSlug}/projects/{projectName}/secretsList secret names and versions (runlot secret list)
PUT/v1/orgs/{orgSlug}/projects/{projectName}/secrets/{secretName}Create or update a secret (runlot secret set)
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/secrets/{secretName}Delete a secret (runlot secret delete)

GET /v1/orgs/{orgSlug}/projects/{projectName}/secrets

The value is in no response. The only path out for a value is the worker's env.<NAME> (docs/phase6.md B3·B4). Requires member or above.

operationId listSecrets

StatusDescriptionResponse body
200ListSecretList
403
404

PUT /v1/orgs/{orgSlug}/projects/{projectName}/secrets/{secretName}

Not idempotent — every call raises version, and at the next convergence the node performs a zero-downtime swap of that project's workerd onto the new environment (the same path as a deploy). No redeploy is needed.

cp-public does not store the value. cp-core seals it with the master key (docs/phase6.md B1). The audit event secret.set carries the name only.

Requires member or above.

operationId setSecret

Request body: application/json · object

StatusDescriptionResponse body
200The stored name and versionSecretMeta
400The name does not match the rules (bad_request) or is a reserved name (reserved_name: DB, ASSETS, RUNLOT_* — the uppercase counterparts of the bindings env.db·env.assets, and the node prefix)Error
403
404

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/secrets/{secretName}

A name that does not exist is a 404 — we do not keep an answer that reports a deletion while deleting nothing. Requires member or above. Audit secret.delete.

operationId deleteSecret

StatusDescriptionResponse body
204Deleted
403
404

On this page