Skip to content

API conventions

The cross-cutting rules, in one table. The per-endpoint truth is the OpenAPI spec.

ConcernRule
Base URLhttps://api.quietdesk.dev/v1
AuthAuthorization: Bearer qd_live_… — token acts as its creator, in one org
Content typeapplication/json both ways; UTF-8
IDsPrefixed strings (snp_, crd_, …) — see the Glossary. Treat as opaque
Human refsCards/milestones also accept their ref (PS-117, SP-14) wherever an id is expected
TimestampsRFC 3339 UTC (2026-06-10T09:14:02Z); date-only fields are YYYY-MM-DD in the org timezone
Paginationcursor + limit (≤100); next_cursor absent on the last page
IdempotencyIdempotency-Key on writes; 24 h window; key+body mismatch ⇒ 409
Rate limitsPer token; 429 + Retry-After. Default 1,000 req/min
ErrorsOne envelope: code, http_status, user_message, request_id
Org scopingImplicit from the token. Objects outside your org 404 (never 403) — existence is not leaked
Gated movesAgent callers get 403 gated_move_requires_human; the attempt is audited
VersioningSnippets version on every save; other objects carry updated_at
AuditEvery write produces an evt_… with actor, door (ui·cli·mcp·http), and agent attribution
DeprecationBeta: breaking changes announced in Availability ≥14 days ahead
OpenAPI/docs/openapi.yaml — also feeds this site's operation pages and the LLM corpus

One vocabulary, every door.