- /api (v1) answers 410 API_V1_REMOVED, except provider webhooks (/api/webhooks/*, /api/whatsapp/webhook) and links in sent messages (308s, one-click POST). 43 v1 route files and deprecation.ts removed; /docs redirects to /docs/v2; API_DOCUMENTATION.md points there. - Read-only and impersonation lists name v2 paths only. The campus scope route test now runs over v2 routes (v2CampusScope.test.ts). - Passwords hashed with Argon2id (@node-rs/argon2); bcrypt hashes still sign in and are re-hashed at the next sign-in. - e2e on /api/v2 only (v2() helper); Playwright waits on /api/v2. - MIGRATING-TO-2.md with the full v1 -> v2 table. - Two documented response shapes corrected. Backend 690 tests and e2e 102/102 (PayFast sandbox skipped) pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
975 B
975 B
Cross Events — API Documentation
Since 2.0 the API is /api/v2 only, described by OpenAPI 3.1 generated from the route
declarations (backend/src/v2/), so it is never out of date:
- Reference:
/docs/v2on the running backend (admin token). - Document:
GET /api/v2/openapi.json(admin); the frontend's copy isfrontend/src/lib/api-v2/openapi.json(regenerate withnpm run api:typesin the repo root).
Every answer is { "data": … }; lists add meta: { page, limit, total, pages } (?page=&limit=);
errors are { "error": { "code", "message", "reason"?, "fields"? } }. Send the sign-in token as
Authorization: Bearer <token> (POST /api/v2/auth/login).
Version 1 (/api/…) was removed in 2.0 and answers 410 Gone, except the incoming webhooks and the
links in messages already sent. What changed and the full v1 → v2 table are in
MIGRATING-TO-2.md. The old v1 reference is in git history (tag v1.52.3).