workspace_id is on every Postgres row and every Redis key. Keys, policy, connections, approvals, receipts, and usage all hang off one. See Tenancy and identity for the model.
Every route on this page requires an operator session. See Authentication.
Workspace object
string
required
Workspace id, prefixed
ws_.string
required
The organization that owns the workspace.
string
required
Human-readable name, unique within the organization.
string
required
One of
dev, stage, prod. Environment is enforced downstream: a dev key can never reach a prod connection.boolean
required
When true, every action outside
workspace.read, audit.read, and usage.read answers 409.integer
required
The workspace’s policy-snapshot version. Incremented when a new snapshot is staged for the gateway.
Create a workspace
POST /api/v1/workspaces
Requires membership in the target organization. Returns 201.
Creation grants the creator an owner membership in the same transaction, so a workspace never exists without someone accountable for it. It also writes version-1 snapshot-publication intent in that transaction, then publishes the snapshot after the commit.
Body
string
required
The organization to create in, 1–64 characters. The operator must already be a member of a workspace in this organization. A first-time operator gets their organization from
GET /api/v1/me, which provisions one.string
required
1–128 characters. Must be unique within the organization.
string
default:"dev"
One of
dev, stage, prod.Errors
A snapshot-publication failure after the commit is not an error the caller can act on and is not surfaced: the workspace exists, its
pending publication row is durable, and the reconciliation sweep converges it.List workspaces
GET /api/v1/workspaces
Returns every workspace the signed-in operator is a member of.
Query parameters
string
Narrow the result to one organization. Omitting it returns memberships across all organizations.
Response
array
required
Workspace objects. Empty when the operator has no memberships matching the filter.
Get a workspace
GET /api/v1/workspaces/{workspace_id}
Requires the workspace.read action, which every role holds.
Path parameters
string
required
Workspace id, prefixed
ws_.