Schema
There is no separate
contentNonce or keyNonce column — both nonces are prepended into the ciphertext/key fields. Labels and tags are stored in cleartext to allow listing without decryption.
The plaintext envelope
The plaintext that gets encrypted has a stable JSON shape:Kinds and standard fields
Each kind suggests the standard fields readers will look for. The fields themselves are free-form, but using the standard names enables single-field auto-delivery.
See Field delivery for the resolution rules when a reader requests a specific field.
Optimistic concurrency
Updates usecontentVersion for optimistic concurrency. Pass the current version with the update; the server rejects stale writes with STALE_VERSION. Re-fetch and retry.
Lifecycle
result: cascade audit entries.
Listing
Both operators and agents can list items, but the responses differ:GET /v1/items(session) returns metadata for every item the user can see in the active organization.GET /v1/items(agent) returns metadata only for items the calling agent has at least one permission row on. Agents without grants get an empty list.
POST /v1/access/{itemId}/read (or reserve a mount with POST /v1/access/{itemId}/use) with the appropriate capability.