API reference
The API is served by apps/api/ (NestJS 11) at:
- Production โ
https://api.clinloop.ca - Staging โ
https://api-staging.clinloop.ca(behind Cloudflare Zero Trust Access)
Live OpenAPI rendering
This page will eventually embed a Scalar viewer
hydrated from apps/docs/src/content/api/openapi.json, generated by the
new apps/api/src/swagger-gen.ts script during the docs build.
That work is Phase 2 of the docs site plan
(docs/docs-site-plan.md). Until it lands, refer directly to the
controllers under apps/api/src/<domain>/.
Auth
All non-@Public() routes require a Bearer <jwt> header. Tokens are
issued by POST /auth/otp/verify after a 6-digit OTP exchange. Refresh
flow is POST /auth/refresh.
See Authentication for the full handshake.