Swap Router API

Interactive docs are loading. If they do not appear, the renderer could not be fetched — the specification itself is always available at /openapi.json.

Every /v1/* route needs an X-API-Key header. /healthz, /readyz, /metrics and this page do not.