You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
docs/API_INTEGRATION.md documents 8 of 22 live routes #207
Found while closing #164. docs/API_INTEGRATION.md is current but incomplete: it documents 8 of the 22 live routes at 74c248f (6 in its endpoint table, plus POST /api/auth/login and /api/auth/oidc in prose). It is linked from README.md:146, docs/QUICKSTART.md:7,299,310 and docs/STARTER_GUIDE.md, and a reader will reasonably take it as the endpoint list.
Routes not documented (14)
Area
Routes
Auth
GET /api/auth/me, POST /api/auth/logout, POST /api/auth/password, POST /api/auth/users/{username}/password
Audit
GET /api/audit/log, GET /api/audit/verify
T&E
GET /api/te/tables
Review (M4)
GET /api/csv/uploads, GET /api/csv/uploads/{upload_id}, GET /api/csv/uploads/{upload_id}/original, GET /api/csv/uploads/{upload_id}/rows, GET /api/csv/uploads/{upload_id}/rows/{row_number}/history, PUT /api/csv/uploads/{upload_id}/rows/{row_number}/cells/{column}, PUT /api/csv/uploads/{upload_id}/rows/{row_number}/decision
Route inventory taken from the @router/@app decorators in api/routers/*.py and api/main.py.
Options
(a) Add the 14 routes to the endpoint table, with auth and tenant-scope notes.
(b) Cut the endpoint table down to a pointer at the OpenAPI schema (/api/docs) so there is one source of truth that cannot drift.
(b) is smaller and removes the drift risk, but loses the prose on guards and known gaps that makes the file worth keeping. Product owner's call.
Done when
Option chosen and recorded in a comment
Every live route is either documented or the file explicitly defers to /api/docs
Optional: a test that fails when a route is added without a doc entry
Per the owner's decision: the API_INTEGRATION.md endpoint table is replaced with a pointer to the generated OpenAPI schema. The auth section, findings and migrations sections stay. #206 now has Closes #207.
Correction to this issue's body: it said /api/docs. That path 404s. FastAPI is served with default settings (no docs_url in api/main.py), so the correct paths are /docs (Swagger UI) and /openapi.json. Checked with TestClient against the real app: /docs 200, /openapi.json 200 with 22 operations, /api/docs 404. Neither needs a key (auth is per-router). The wrong path had come from #164's text; it was also in earlier revisions of #206 and is fixed in 295c450.
Not done: the "optional test that fails when a route is added without a doc entry" is moot under (b), since there is no hand-kept list to drift.
Resolved by #206 (merged as 016329e): option (b), route table replaced with a pointer to /docs and /openapi.json. Closing manually because GitHub only auto-closed #166 from the "Closes #166 and #207" wording.
Activity
docs: replace API_INTEGRATION.md route table with pointer to /docs (#207
amar-python commentedon Nov 9, 2026
Option (b) implemented in #206
Per the owner's decision: the
API_INTEGRATION.mdendpoint table is replaced with a pointer to the generated OpenAPI schema. The auth section, findings and migrations sections stay. #206 now hasCloses #207.Correction to this issue's body: it said
/api/docs. That path 404s. FastAPI is served with default settings (nodocs_urlinapi/main.py), so the correct paths are/docs(Swagger UI) and/openapi.json. Checked withTestClientagainst the real app:/docs200,/openapi.json200 with 22 operations,/api/docs404. Neither needs a key (auth is per-router). The wrong path had come from #164's text; it was also in earlier revisions of #206 and is fixed in295c450.Not done: the "optional test that fails when a route is added without a doc entry" is moot under (b), since there is no hand-kept list to drift.
Claude Code
Generated by Claude Code
amar-python commentedon Nov 9, 2026
Resolved by #206 (merged as 016329e): option (b), route table replaced with a pointer to
/docsand/openapi.json. Closing manually because GitHub only auto-closed #166 from the "Closes #166 and #207" wording.Generated by Claude Code