/app/ SPA (source in ui/, embedded at build via just ui-build)
talks to the same /api/ surface every other client uses. This page
is the load-bearing map — a future SPA release, a third-party client
that wants “everything the SPA does,” or an agent that needs to
approximate a UI can read this and know exactly which endpoints to
wire.
Every row here is shipped. When a new backend surface lands for the
SPA it gets added here in the same PR that ships it.
Auth + profile
Documents core
Taxonomy
Activity + counters
Automations + approvals
Search + share
Setup (admin, first-boot)
What lives outside this page
- Mobile-compat handshake (
/api/remote_version/,/api/next_asn/) — mobile-only, not the SPA. - Agent surface (
/api/tasks/POST/claim/complete +agent/webhooks) — programmatic clients. - MCP tooling — see
docs/mcp.mdx.
Adding a new endpoint the SPA needs
- Ship the backend endpoint with tests +
schema.jsonentry +docs/api.mdxrow. - Add a row here in the same PR.
- Consume it in the SPA. If the SPA release lags, the backend row here still describes reality — that’s the point.
docs-claims.md pre-release checklist grep-verifies that
every row here corresponds to a real registered route.