Skip to main content
The /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

  1. Ship the backend endpoint with tests + schema.json entry + docs/api.mdx row.
  2. Add a row here in the same PR.
  3. Consume it in the SPA. If the SPA release lags, the backend row here still describes reality — that’s the point.
The docs-claims.md pre-release checklist grep-verifies that every row here corresponds to a real registered route.