Skip to content

KrinosAI — API Inventory

Template ID: TPL-06-04 | Stage: 06-Build-and-Document | Version: 0.3
Record: KAI-VORAL-APII-001 — retrospective draft for Visionary Oral. Not approved.

Purpose: List every API endpoint, webhook and event actually present in code, with owner, auth and verification date.

Required inputs: Source code at a pinned SHA; API contracts; gateway configuration.

Document control

Field Required entry
Document ID KAI-VORAL-APII-001
Template used TPL-06-04 API Inventory v0.3
Product / project / software version or commit SHA VORAL (Visionary Oral) / PRJ-001 / a6b4429e3165 (branch app_dev of AI-Dental-Project/Visionary_Oral)
Record status and version Draft v0.1
Author / technical reviewer / quality reviewer Claude Code (drafted with Claude Code for KrinosAI) / Tech Lead (name to be assigned) / Security & Privacy Officer (name to be assigned)
Created / updated / approved dates 2026-10-27 / 2026-10-27 / Pending
Applicable SOP and revision SOP-LC-06 v0.3
Related issue, commit, requirement and evidence links KAI-VORAL-APC-001 (operation IDs); docs/lifecycle/_evidence/api-inventory-a6b4429.md
Approver and decision record Pending

Applicability and evidence baseline

Product / system boundary: Web app and API (dentalapp/), doctor/admin mobile app (mobile/), PDF Lambda (dentalapp/pdf-lambda/) at a6b4429e3165, and the external services they call. Related approved requirements, risks and change records: None approved. Related drafts are listed in document control. Retrospective record? Yes — follows the Retrospective Documentation Protocol (KrinosAI lifecycle pack, 05-References/). Items are labelled Observed (code or Git at a6b4429), Measured (dated run), Stated (named person, dated) or Not recorded. Observed in code and Git at a6b4429. 97 operations in 75 route files; IDs match KAI-VORAL-APC-001. Acceptable evidence: an implementation reference (file:line at a commit SHA), a dated test record, a signed decision, a vendor agreement, or another independently verifiable artifact. Never invent approvals, clinical results, measurements or performance data.

1. Unique API ID and consumer

API ID Consumers
API-001 (APC) Web
API-002 (APC) Web
API-003 (APC) Web
API-004 (APC) Mobile app, web
API-005 (APC) Mobile app, web
API-006 (APC) Mobile app, web
API-007 (APC) Mobile app, web
API-008 (APC) Mobile app, web
API-009 (APC) Mobile app, web
API-010 (APC) Mobile app, web
API-011 (APC) Mobile app, web
API-012 (APC) Mobile app, web
API-013 (APC) Mobile app, web
API-014 (APC) Mobile app, web
API-015 (APC) Mobile app, web
API-016 (APC) Mobile app, web
API-017 (APC) Mobile app, web
API-018 (APC) Web
API-019 (APC) Mobile app, web
API-020 (APC) Web
API-021 (APC) Web
API-022 (APC) Mobile app, web
API-023 (APC) Mobile app, web
API-024 (APC) Mobile app, web
API-025 (APC) Mobile app, web
API-026 (APC) Mobile app, web
API-027 (APC) Mobile app, web
API-028 (APC) Mobile app, web
API-029 (APC) Web
API-030 (APC) Web
API-031 (APC) Web
API-032 (APC) Web
API-033 (APC) Web
API-034 (APC) Web
API-035 (APC) Web
API-036 (APC) Web
API-037 (APC) Web
API-038 (APC) Web
API-039 (APC) Web
API-040 (APC) Web
API-041 (APC) Web
API-042 (APC) Web
API-043 (APC) Web
API-044 (APC) Mobile app, web
API-045 (APC) Mobile app, web
API-046 (APC) Mobile app, web
API-047 (APC) Web
API-048 (APC) Web
API-049 (APC) Web
API-050 (APC) Web
API-051 (APC) Web
API-052 (APC) Web
API-053 (APC) Web
API-054 (APC) Web
API-055 (APC) Web
API-056 (APC) Mobile app, web
API-057 (APC) Web
API-058 (APC) Web
API-059 (APC) Mobile app, web
API-060 (APC) Mobile app, web
API-061 (APC) Mobile app, web
API-062 (APC) Mobile app, web
API-063 (APC) Mobile app, web
API-064 (APC) Mobile app, web
API-065 (APC) Mobile app, web
API-066 (APC) Web
API-067 (APC) Web
API-068 (APC) Web
API-069 (APC) Web
API-070 (APC) Web
API-071 (APC) Web
API-072 (APC) Web
API-073 (APC) Web
API-074 (APC) Web
API-075 (APC) Mobile app, web
API-076 (APC) Mobile app, web
API-077 (APC) Mobile app, web
API-078 (APC) Mobile app, web
API-079 (APC) Mobile app, web
API-080 (APC) Mobile app, web
API-081 (APC) Mobile app, web
API-082 (APC) Web
API-083 (APC) Web
API-084 (APC) Web
API-085 (APC) Web
API-086 (APC) Web
API-087 (APC) Web
API-088 (APC) Web
API-089 (APC) Mobile app, web
API-090 (APC) Mobile app, web
API-091 (APC) Mobile app, web
API-092 (APC) Mobile app, web
API-093 (APC) Mobile app, web
API-094 (APC) Web
API-095 (APC) Vendors (webhooks)
API-096 (APC) Vendors (webhooks)
API-097 (APC) Vendors (webhooks)

2. HTTP method route and service

API ID Method Route Service
API-001 (APC) GET /api/admin/api-usage Web app API (DES-02)
API-002 (APC) POST /api/admin/auth Web app API (DES-02)
API-003 (APC) GET /api/admin/doctor-api-usage Web app API (DES-02)
API-004 (APC) POST /api/admin/doctors/[clerkId]/approve Web app API (DES-02)
API-005 (APC) GET /api/admin/doctors/[clerkId]/offline-days Web app API (DES-02)
API-006 (APC) POST /api/admin/doctors/[clerkId]/offline-days Web app API (DES-02)
API-007 (APC) GET /api/admin/doctors/[clerkId]/patients Web app API (DES-02)
API-008 (APC) PATCH /api/admin/doctors/[clerkId]/recalculate Web app API (DES-02)
API-009 (APC) DELETE /api/admin/doctors/[clerkId] Web app API (DES-02)
API-010 (APC) GET /api/admin/doctors/[clerkId] Web app API (DES-02)
API-011 (APC) POST /api/admin/doctors/[clerkId]/suspend Web app API (DES-02)
API-012 (APC) POST /api/admin/doctors/[clerkId]/unsuspend Web app API (DES-02)
API-013 (APC) DELETE /api/admin/doctors/patients/[patientId] Web app API (DES-02)
API-014 (APC) GET /api/admin/doctors Web app API (DES-02)
API-015 (APC) POST /api/admin/doctors Web app API (DES-02)
API-016 (APC) PUT /api/admin/doctors Web app API (DES-02)
API-017 (APC) DELETE /api/admin/doctors Web app API (DES-02)
API-018 (APC) GET /api/admin/global-stats Web app API (DES-02)
API-019 (APC) POST /api/admin/invitations/[invitationId]/resend-invitation Web app API (DES-02)
API-020 (APC) POST /api/admin/logout Web app API (DES-02)
API-021 (APC) GET /api/admin/patient-sample Web app API (DES-02)
API-022 (APC) PATCH /api/admin/patients/[clerkId]/recalculate Web app API (DES-02)
API-023 (APC) DELETE /api/admin/patients/[clerkId] Web app API (DES-02)
API-024 (APC) POST /api/admin/patients/[clerkId]/suspend Web app API (DES-02)
API-025 (APC) POST /api/admin/patients/[clerkId]/unsuspend Web app API (DES-02)
API-026 (APC) POST /api/admin/patients/invitations/[invitationId]/resend-invitation Web app API (DES-02)
API-027 (APC) POST /api/admin/patients/invite Web app API (DES-02)
API-028 (APC) GET /api/admin/patients Web app API (DES-02)
API-029 (APC) GET /api/admin/payments Web app API (DES-02)
API-030 (APC) GET /api/admin/plans Web app API (DES-02)
API-031 (APC) POST /api/admin/plans Web app API (DES-02)
API-032 (APC) PATCH /api/admin/plans Web app API (DES-02)
API-033 (APC) DELETE /api/admin/plans Web app API (DES-02)
API-034 (APC) POST /api/admin/signup Web app API (DES-02)
API-035 (APC) GET /api/admin/users Web app API (DES-02)
API-036 (APC) POST /api/analyze-gemini Web app API (DES-02)
API-037 (APC) GET /api/billing/plans Web app API (DES-02)
API-038 (APC) POST /api/billing/subscription/cancel Web app API (DES-02)
API-039 (APC) POST /api/billing/subscription/create Web app API (DES-02)
API-040 (APC) POST /api/billing/subscription/redirect-handler Web app API (DES-02)
API-041 (APC) GET /api/billing/subscription/redirect-handler Web app API (DES-02)
API-042 (APC) POST /api/billing/subscription/retry Web app API (DES-02)
API-043 (APC) GET /api/billing/subscription/verify Web app API (DES-02)
API-044 (APC) POST /api/clinic/generate-qr Web app API (DES-02)
API-045 (APC) POST /api/clinic/update Web app API (DES-02)
API-046 (APC) POST /api/clinic/upload-logo Web app API (DES-02)
API-047 (APC) POST /api/detect-gemini Web app API (DES-02)
API-048 (APC) POST /api/doctor/feedback Web app API (DES-02)
API-049 (APC) GET /api/doctor/feedback Web app API (DES-02)
API-050 (APC) GET /api/doctor/notifications Web app API (DES-02)
API-051 (APC) PATCH /api/doctor/notifications Web app API (DES-02)
API-052 (APC) GET /api/download-report Web app API (DES-02)
API-053 (APC) GET /api/image Web app API (DES-02)
API-054 (APC) GET /api/invitations/metadata Web app API (DES-02)
API-055 (APC) GET /api/invitations/token-metadata Web app API (DES-02)
API-056 (APC) POST /api/onboarding Web app API (DES-02)
API-057 (APC) GET /api/patient-onboarding Web app API (DES-02)
API-058 (APC) POST /api/patient-onboarding Web app API (DES-02)
API-059 (APC) GET /api/patients/[id] Web app API (DES-02)
API-060 (APC) PUT /api/patients/[id] Web app API (DES-02)
API-061 (APC) DELETE /api/patients/[id] Web app API (DES-02)
API-062 (APC) GET /api/patients/me Web app API (DES-02)
API-063 (APC) PATCH /api/patients/me Web app API (DES-02)
API-064 (APC) GET /api/patients Web app API (DES-02)
API-065 (APC) POST /api/patients Web app API (DES-02)
API-066 (APC) POST /api/payments/create-order Web app API (DES-02)
API-067 (APC) GET /api/payments/history Web app API (DES-02)
API-068 (APC) GET /api/payments/verify Web app API (DES-02)
API-069 (APC) POST /api/personalized-analysis Web app API (DES-02)
API-070 (APC) POST /api/public/create-scan-session Web app API (DES-02)
API-071 (APC) POST /api/public/patient-registration Web app API (DES-02)
API-072 (APC) GET /api/public/session Web app API (DES-02)
API-073 (APC) POST /api/retry-email Web app API (DES-02)
API-074 (APC) GET /api/retry-email Web app API (DES-02)
API-075 (APC) POST /api/scans/analysis Web app API (DES-02)
API-076 (APC) GET /api/scans/me Web app API (DES-02)
API-077 (APC) GET /api/scans/pdf Web app API (DES-02)
API-078 (APC) POST /api/scans Web app API (DES-02)
API-079 (APC) GET /api/scans Web app API (DES-02)
API-080 (APC) PATCH /api/scans Web app API (DES-02)
API-081 (APC) DELETE /api/scans Web app API (DES-02)
API-082 (APC) POST /api/send-email Web app API (DES-02)
API-083 (APC) POST /api/speech-to-text Web app API (DES-02)
API-084 (APC) GET /api/support/messages Web app API (DES-02)
API-085 (APC) POST /api/support/messages Web app API (DES-02)
API-086 (APC) POST /api/support Web app API (DES-02)
API-087 (APC) GET /api/support/tickets Web app API (DES-02)
API-088 (APC) PATCH /api/support/tickets Web app API (DES-02)
API-089 (APC) POST /api/upload Web app API (DES-02)
API-090 (APC) GET /api/user/account-status Web app API (DES-02)
API-091 (APC) POST /api/user/offline-limit-exceeded Web app API (DES-02)
API-092 (APC) GET /api/user/profile Web app API (DES-02)
API-093 (APC) GET /api/user/role Web app API (DES-02)
API-094 (APC) POST /api/validate-scan Web app API (DES-02)
API-095 (APC) POST /api/webhooks/cashfree-subscription Web app API (DES-02)
API-096 (APC) POST /api/webhooks/cashfree Web app API (DES-02)
API-097 (APC) POST /api/webhooks/clerk Web app API (DES-02)

3. Controller source file and commit

API ID Handler SHA
API-001 (APC) dentalapp/src/app/api/admin/api-usage/route.js:6 a6b4429
API-002 (APC) dentalapp/src/app/api/admin/auth/route.js:8 a6b4429
API-003 (APC) dentalapp/src/app/api/admin/doctor-api-usage/route.js:8 a6b4429
API-004 (APC) dentalapp/src/app/api/admin/doctors/[clerkId]/approve/route.js:13 a6b4429
API-005 (APC) dentalapp/src/app/api/admin/doctors/[clerkId]/offline-days/route.js:22 a6b4429
API-006 (APC) dentalapp/src/app/api/admin/doctors/[clerkId]/offline-days/route.js:66 a6b4429
API-007 (APC) dentalapp/src/app/api/admin/doctors/[clerkId]/patients/route.js:7 a6b4429
API-008 (APC) dentalapp/src/app/api/admin/doctors/[clerkId]/recalculate/route.js:7 a6b4429
API-009 (APC) dentalapp/src/app/api/admin/doctors/[clerkId]/route.js:20 a6b4429
API-010 (APC) dentalapp/src/app/api/admin/doctors/[clerkId]/route.js:173 a6b4429
API-011 (APC) dentalapp/src/app/api/admin/doctors/[clerkId]/suspend/route.js:14 a6b4429
API-012 (APC) dentalapp/src/app/api/admin/doctors/[clerkId]/unsuspend/route.js:12 a6b4429
API-013 (APC) dentalapp/src/app/api/admin/doctors/patients/[patientId]/route.js:7 a6b4429
API-014 (APC) dentalapp/src/app/api/admin/doctors/route.js:10 a6b4429
API-015 (APC) dentalapp/src/app/api/admin/doctors/route.js:208 a6b4429
API-016 (APC) dentalapp/src/app/api/admin/doctors/route.js:470 a6b4429
API-017 (APC) dentalapp/src/app/api/admin/doctors/route.js:645 a6b4429
API-018 (APC) dentalapp/src/app/api/admin/global-stats/route.js:7 a6b4429
API-019 (APC) dentalapp/src/app/api/admin/invitations/[invitationId]/resend-invitation/route.js:12 a6b4429
API-020 (APC) dentalapp/src/app/api/admin/logout/route.js:3 a6b4429
API-021 (APC) dentalapp/src/app/api/admin/patient-sample/route.js:5 a6b4429
API-022 (APC) dentalapp/src/app/api/admin/patients/[clerkId]/recalculate/route.js:15 a6b4429
API-023 (APC) dentalapp/src/app/api/admin/patients/[clerkId]/route.js:19 a6b4429
API-024 (APC) dentalapp/src/app/api/admin/patients/[clerkId]/suspend/route.js:12 a6b4429
API-025 (APC) dentalapp/src/app/api/admin/patients/[clerkId]/unsuspend/route.js:11 a6b4429
API-026 (APC) dentalapp/src/app/api/admin/patients/invitations/[invitationId]/resend-invitation/route.js:18 a6b4429
API-027 (APC) dentalapp/src/app/api/admin/patients/invite/route.js:19 a6b4429
API-028 (APC) dentalapp/src/app/api/admin/patients/route.js:20 a6b4429
API-029 (APC) dentalapp/src/app/api/admin/payments/route.js:5 a6b4429
API-030 (APC) dentalapp/src/app/api/admin/plans/route.js:23 a6b4429
API-031 (APC) dentalapp/src/app/api/admin/plans/route.js:43 a6b4429
API-032 (APC) dentalapp/src/app/api/admin/plans/route.js:87 a6b4429
API-033 (APC) dentalapp/src/app/api/admin/plans/route.js:135 a6b4429
API-034 (APC) dentalapp/src/app/api/admin/signup/route.js:14 a6b4429
API-035 (APC) dentalapp/src/app/api/admin/users/route.js:10 a6b4429
API-036 (APC) dentalapp/src/app/api/analyze-gemini/route.js:475 a6b4429
API-037 (APC) dentalapp/src/app/api/billing/plans/route.js:4 a6b4429
API-038 (APC) dentalapp/src/app/api/billing/subscription/cancel/route.js:7 a6b4429
API-039 (APC) dentalapp/src/app/api/billing/subscription/create/route.js:8 a6b4429
API-040 (APC) dentalapp/src/app/api/billing/subscription/redirect-handler/route.js:3 a6b4429
API-041 (APC) dentalapp/src/app/api/billing/subscription/redirect-handler/route.js:36 a6b4429
API-042 (APC) dentalapp/src/app/api/billing/subscription/retry/route.js:8 a6b4429
API-043 (APC) dentalapp/src/app/api/billing/subscription/verify/route.js:4 a6b4429
API-044 (APC) dentalapp/src/app/api/clinic/generate-qr/route.js:6 a6b4429
API-045 (APC) dentalapp/src/app/api/clinic/update/route.js:5 a6b4429
API-046 (APC) dentalapp/src/app/api/clinic/upload-logo/route.js:7 a6b4429
API-047 (APC) dentalapp/src/app/api/detect-gemini/route.js:305 a6b4429
API-048 (APC) dentalapp/src/app/api/doctor/feedback/route.js:6 a6b4429
API-049 (APC) dentalapp/src/app/api/doctor/feedback/route.js:56 a6b4429
API-050 (APC) dentalapp/src/app/api/doctor/notifications/route.js:6 a6b4429
API-051 (APC) dentalapp/src/app/api/doctor/notifications/route.js:28 a6b4429
API-052 (APC) dentalapp/src/app/api/download-report/route.js:9 a6b4429
API-053 (APC) dentalapp/src/app/api/image/route.js:19 a6b4429
API-054 (APC) dentalapp/src/app/api/invitations/metadata/route.js:11 a6b4429
API-055 (APC) dentalapp/src/app/api/invitations/token-metadata/route.js:11 a6b4429
API-056 (APC) dentalapp/src/app/api/onboarding/route.js:8 a6b4429
API-057 (APC) dentalapp/src/app/api/patient-onboarding/route.js:17 a6b4429
API-058 (APC) dentalapp/src/app/api/patient-onboarding/route.js:95 a6b4429
API-059 (APC) dentalapp/src/app/api/patients/[id]/route.js:70 a6b4429
API-060 (APC) dentalapp/src/app/api/patients/[id]/route.js:127 a6b4429
API-061 (APC) dentalapp/src/app/api/patients/[id]/route.js:322 a6b4429
API-062 (APC) dentalapp/src/app/api/patients/me/route.js:57 a6b4429
API-063 (APC) dentalapp/src/app/api/patients/me/route.js:116 a6b4429
API-064 (APC) dentalapp/src/app/api/patients/route.js:42 a6b4429
API-065 (APC) dentalapp/src/app/api/patients/route.js:163 a6b4429
API-066 (APC) dentalapp/src/app/api/payments/create-order/route.js:8 a6b4429
API-067 (APC) dentalapp/src/app/api/payments/history/route.js:5 a6b4429
API-068 (APC) dentalapp/src/app/api/payments/verify/route.js:5 a6b4429
API-069 (APC) dentalapp/src/app/api/personalized-analysis/route.js:77 a6b4429
API-070 (APC) dentalapp/src/app/api/public/create-scan-session/route.js:6 a6b4429
API-071 (APC) dentalapp/src/app/api/public/patient-registration/route.js:30 a6b4429
API-072 (APC) dentalapp/src/app/api/public/session/route.js:5 a6b4429
API-073 (APC) dentalapp/src/app/api/retry-email/route.js:37 a6b4429
API-074 (APC) dentalapp/src/app/api/retry-email/route.js:290 a6b4429
API-075 (APC) dentalapp/src/app/api/scans/analysis/route.js:37 a6b4429
API-076 (APC) dentalapp/src/app/api/scans/me/route.js:11 a6b4429
API-077 (APC) dentalapp/src/app/api/scans/pdf/route.js:10 a6b4429
API-078 (APC) dentalapp/src/app/api/scans/route.js:19 a6b4429
API-079 (APC) dentalapp/src/app/api/scans/route.js:167 a6b4429
API-080 (APC) dentalapp/src/app/api/scans/route.js:513 a6b4429
API-081 (APC) dentalapp/src/app/api/scans/route.js:632 a6b4429
API-082 (APC) dentalapp/src/app/api/send-email/route.js:11 a6b4429
API-083 (APC) dentalapp/src/app/api/speech-to-text/route.js:9 a6b4429
API-084 (APC) dentalapp/src/app/api/support/messages/route.js:17 a6b4429
API-085 (APC) dentalapp/src/app/api/support/messages/route.js:52 a6b4429
API-086 (APC) dentalapp/src/app/api/support/route.js:20 a6b4429
API-087 (APC) dentalapp/src/app/api/support/tickets/route.js:5 a6b4429
API-088 (APC) dentalapp/src/app/api/support/tickets/route.js:48 a6b4429
API-089 (APC) dentalapp/src/app/api/upload/route.js:121 a6b4429
API-090 (APC) dentalapp/src/app/api/user/account-status/route.js:9 a6b4429
API-091 (APC) dentalapp/src/app/api/user/offline-limit-exceeded/route.js:21 a6b4429
API-092 (APC) dentalapp/src/app/api/user/profile/route.js:9 a6b4429
API-093 (APC) dentalapp/src/app/api/user/role/route.js:14 a6b4429
API-094 (APC) dentalapp/src/app/api/validate-scan/route.js:8 a6b4429
API-095 (APC) dentalapp/src/app/api/webhooks/cashfree-subscription/route.js:65 a6b4429
API-096 (APC) dentalapp/src/app/api/webhooks/cashfree/route.js:5 a6b4429
API-097 (APC) dentalapp/src/app/api/webhooks/clerk/route.js:27 a6b4429

4. Authz required and sensitive fields

API ID Auth Sensitive fields
API-001 (APC) NONE — unprotected (OPEN-026) Doctor data (DAT-08)
API-002 (APC) NONE — unprotected (OPEN-026) Doctor data (DAT-08)
API-003 (APC) admin Doctor data (DAT-08)
API-004 (APC) admin, clerk Doctor data (DAT-08)
API-005 (APC) admin Doctor data (DAT-08)
API-006 (APC) admin Doctor data (DAT-08)
API-007 (APC) admin Patient data (DAT-01–06)
API-008 (APC) admin Doctor data (DAT-08)
API-009 (APC) admin, clerk Doctor data (DAT-08)
API-010 (APC) admin, clerk Doctor data (DAT-08)
API-011 (APC) admin, clerk Doctor data (DAT-08)
API-012 (APC) admin, clerk Doctor data (DAT-08)
API-013 (APC) admin Patient data (DAT-01–06)
API-014 (APC) admin Doctor data (DAT-08)
API-015 (APC) admin Doctor data (DAT-08)
API-016 (APC) admin Doctor data (DAT-08)
API-017 (APC) admin Doctor data (DAT-08)
API-018 (APC) admin Doctor data (DAT-08)
API-019 (APC) admin Doctor data (DAT-08)
API-020 (APC) NONE — unprotected (OPEN-026) Doctor data (DAT-08)
API-021 (APC) NONE — unprotected (OPEN-026) Doctor data (DAT-08)
API-022 (APC) admin Patient data (DAT-01–06)
API-023 (APC) admin, clerk Patient data (DAT-01–06)
API-024 (APC) admin, clerk Patient data (DAT-01–06)
API-025 (APC) admin, clerk Patient data (DAT-01–06)
API-026 (APC) admin Patient data (DAT-01–06)
API-027 (APC) admin Patient data (DAT-01–06)
API-028 (APC) admin Patient data (DAT-01–06)
API-029 (APC) admin Doctor data (DAT-08)
API-030 (APC) clerk Doctor data (DAT-08)
API-031 (APC) clerk Doctor data (DAT-08)
API-032 (APC) clerk Doctor data (DAT-08)
API-033 (APC) clerk Doctor data (DAT-08)
API-034 (APC) NONE — unprotected (OPEN-026) Doctor data (DAT-08)
API-035 (APC) admin Doctor data (DAT-08)
API-036 (APC) public-session Patient data (DAT-01–06)
API-037 (APC) NONE — unprotected (OPEN-026) —
API-038 (APC) clerk —
API-039 (APC) clerk —
API-040 (APC) NONE — unprotected (OPEN-026) —
API-041 (APC) NONE — unprotected (OPEN-026) —
API-042 (APC) clerk —
API-043 (APC) NONE — unprotected (OPEN-026) —
API-044 (APC) clerk Doctor data (DAT-08)
API-045 (APC) clerk Doctor data (DAT-08)
API-046 (APC) clerk Patient data (DAT-01–06)
API-047 (APC) NONE — unprotected (OPEN-026) Patient data (DAT-01–06)
API-048 (APC) doctor —
API-049 (APC) doctor —
API-050 (APC) doctor —
API-051 (APC) doctor —
API-052 (APC) public-session Patient data (DAT-01–06)
API-053 (APC) clerk Patient data (DAT-01–06)
API-054 (APC) NONE — unprotected (OPEN-026) —
API-055 (APC) NONE — unprotected (OPEN-026) —
API-056 (APC) clerk —
API-057 (APC) clerk —
API-058 (APC) clerk —
API-059 (APC) doctor Patient data (DAT-01–06)
API-060 (APC) doctor Patient data (DAT-01–06)
API-061 (APC) doctor Patient data (DAT-01–06)
API-062 (APC) patient, clerk Patient data (DAT-01–06)
API-063 (APC) patient, clerk Patient data (DAT-01–06)
API-064 (APC) doctor Patient data (DAT-01–06)
API-065 (APC) doctor Patient data (DAT-01–06)
API-066 (APC) clerk —
API-067 (APC) clerk —
API-068 (APC) clerk —
API-069 (APC) patient, public-session Patient data (DAT-01–06)
API-070 (APC) NONE — unprotected (OPEN-026) Patient data (DAT-01–06)
API-071 (APC) NONE — unprotected (OPEN-026) Patient data (DAT-01–06)
API-072 (APC) NONE — unprotected (OPEN-026) Patient data (DAT-01–06)
API-073 (APC) clerk —
API-074 (APC) clerk —
API-075 (APC) doctor Patient data (DAT-01–06)
API-076 (APC) patient Patient data (DAT-01–06)
API-077 (APC) NONE — unprotected (OPEN-026) Patient data (DAT-01–06)
API-078 (APC) admin, doctor, patient, public-session Patient data (DAT-01–06)
API-079 (APC) admin, doctor, patient, public-session Patient data (DAT-01–06)
API-080 (APC) admin, doctor, patient, public-session Patient data (DAT-01–06)
API-081 (APC) admin, doctor, patient, public-session Patient data (DAT-01–06)
API-082 (APC) public-session —
API-083 (APC) NONE — unprotected (OPEN-026) —
API-084 (APC) NONE — unprotected (OPEN-026) —
API-085 (APC) NONE — unprotected (OPEN-026) —
API-086 (APC) NONE — unprotected (OPEN-026) —
API-087 (APC) NONE — unprotected (OPEN-026) —
API-088 (APC) NONE — unprotected (OPEN-026) —
API-089 (APC) patient, clerk, public-session Patient data (DAT-01–06)
API-090 (APC) clerk Doctor data (DAT-08)
API-091 (APC) clerk Doctor data (DAT-08)
API-092 (APC) clerk Doctor data (DAT-08)
API-093 (APC) clerk Doctor data (DAT-08)
API-094 (APC) NONE — unprotected (OPEN-026) —
API-095 (APC) webhook-signature —
API-096 (APC) webhook-signature —
API-097 (APC) webhook-signature —

5. Request response and error schema references

API ID OpenAPI operationId
API-001 (APC) No OpenAPI — OPEN-036
API-002 (APC) No OpenAPI — OPEN-036
API-003 (APC) No OpenAPI — OPEN-036
API-004 (APC) No OpenAPI — OPEN-036
API-005 (APC) No OpenAPI — OPEN-036
API-006 (APC) No OpenAPI — OPEN-036
API-007 (APC) No OpenAPI — OPEN-036
API-008 (APC) No OpenAPI — OPEN-036
API-009 (APC) No OpenAPI — OPEN-036
API-010 (APC) No OpenAPI — OPEN-036
API-011 (APC) No OpenAPI — OPEN-036
API-012 (APC) No OpenAPI — OPEN-036
API-013 (APC) No OpenAPI — OPEN-036
API-014 (APC) No OpenAPI — OPEN-036
API-015 (APC) No OpenAPI — OPEN-036
API-016 (APC) No OpenAPI — OPEN-036
API-017 (APC) No OpenAPI — OPEN-036
API-018 (APC) No OpenAPI — OPEN-036
API-019 (APC) No OpenAPI — OPEN-036
API-020 (APC) No OpenAPI — OPEN-036
API-021 (APC) No OpenAPI — OPEN-036
API-022 (APC) No OpenAPI — OPEN-036
API-023 (APC) No OpenAPI — OPEN-036
API-024 (APC) No OpenAPI — OPEN-036
API-025 (APC) No OpenAPI — OPEN-036
API-026 (APC) No OpenAPI — OPEN-036
API-027 (APC) No OpenAPI — OPEN-036
API-028 (APC) No OpenAPI — OPEN-036
API-029 (APC) No OpenAPI — OPEN-036
API-030 (APC) No OpenAPI — OPEN-036
API-031 (APC) No OpenAPI — OPEN-036
API-032 (APC) No OpenAPI — OPEN-036
API-033 (APC) No OpenAPI — OPEN-036
API-034 (APC) No OpenAPI — OPEN-036
API-035 (APC) No OpenAPI — OPEN-036
API-036 (APC) No OpenAPI — OPEN-036
API-037 (APC) No OpenAPI — OPEN-036
API-038 (APC) No OpenAPI — OPEN-036
API-039 (APC) No OpenAPI — OPEN-036
API-040 (APC) No OpenAPI — OPEN-036
API-041 (APC) No OpenAPI — OPEN-036
API-042 (APC) No OpenAPI — OPEN-036
API-043 (APC) No OpenAPI — OPEN-036
API-044 (APC) No OpenAPI — OPEN-036
API-045 (APC) No OpenAPI — OPEN-036
API-046 (APC) No OpenAPI — OPEN-036
API-047 (APC) No OpenAPI — OPEN-036
API-048 (APC) No OpenAPI — OPEN-036
API-049 (APC) No OpenAPI — OPEN-036
API-050 (APC) No OpenAPI — OPEN-036
API-051 (APC) No OpenAPI — OPEN-036
API-052 (APC) No OpenAPI — OPEN-036
API-053 (APC) No OpenAPI — OPEN-036
API-054 (APC) No OpenAPI — OPEN-036
API-055 (APC) No OpenAPI — OPEN-036
API-056 (APC) No OpenAPI — OPEN-036
API-057 (APC) No OpenAPI — OPEN-036
API-058 (APC) No OpenAPI — OPEN-036
API-059 (APC) No OpenAPI — OPEN-036
API-060 (APC) No OpenAPI — OPEN-036
API-061 (APC) No OpenAPI — OPEN-036
API-062 (APC) No OpenAPI — OPEN-036
API-063 (APC) No OpenAPI — OPEN-036
API-064 (APC) No OpenAPI — OPEN-036
API-065 (APC) No OpenAPI — OPEN-036
API-066 (APC) No OpenAPI — OPEN-036
API-067 (APC) No OpenAPI — OPEN-036
API-068 (APC) No OpenAPI — OPEN-036
API-069 (APC) No OpenAPI — OPEN-036
API-070 (APC) No OpenAPI — OPEN-036
API-071 (APC) No OpenAPI — OPEN-036
API-072 (APC) No OpenAPI — OPEN-036
API-073 (APC) No OpenAPI — OPEN-036
API-074 (APC) No OpenAPI — OPEN-036
API-075 (APC) No OpenAPI — OPEN-036
API-076 (APC) No OpenAPI — OPEN-036
API-077 (APC) No OpenAPI — OPEN-036
API-078 (APC) No OpenAPI — OPEN-036
API-079 (APC) No OpenAPI — OPEN-036
API-080 (APC) No OpenAPI — OPEN-036
API-081 (APC) No OpenAPI — OPEN-036
API-082 (APC) No OpenAPI — OPEN-036
API-083 (APC) No OpenAPI — OPEN-036
API-084 (APC) No OpenAPI — OPEN-036
API-085 (APC) No OpenAPI — OPEN-036
API-086 (APC) No OpenAPI — OPEN-036
API-087 (APC) No OpenAPI — OPEN-036
API-088 (APC) No OpenAPI — OPEN-036
API-089 (APC) No OpenAPI — OPEN-036
API-090 (APC) No OpenAPI — OPEN-036
API-091 (APC) No OpenAPI — OPEN-036
API-092 (APC) No OpenAPI — OPEN-036
API-093 (APC) No OpenAPI — OPEN-036
API-094 (APC) No OpenAPI — OPEN-036
API-095 (APC) No OpenAPI — OPEN-036
API-096 (APC) No OpenAPI — OPEN-036
API-097 (APC) No OpenAPI — OPEN-036

6. Version owner status and last verified date

API ID Version Owner Status Verified
API-001 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-002 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-003 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-004 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-005 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-006 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-007 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-008 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-009 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-010 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-011 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-012 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-013 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-014 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-015 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-016 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-017 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-018 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-019 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-020 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-021 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-022 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-023 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-024 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-025 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-026 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-027 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-028 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-029 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-030 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-031 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-032 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-033 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-034 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-035 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-036 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-037 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-038 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-039 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-040 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-041 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-042 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-043 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-044 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-045 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-046 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-047 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-048 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-049 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-050 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-051 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-052 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-053 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-054 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-055 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-056 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-057 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-058 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-059 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-060 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-061 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-062 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-063 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-064 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-065 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-066 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-067 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-068 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-069 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-070 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-071 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-072 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-073 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-074 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-075 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-076 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-077 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-078 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-079 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-080 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-081 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-082 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-083 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-084 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-085 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-086 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-087 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-088 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-089 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-090 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-091 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-092 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-093 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-094 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-095 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-096 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)
API-097 (APC) Unversioned Backend Lead Active 2026-10-27 (code read)

Open issues and decisions

ID Specific gap or decision Responsible owner Due date Blocks gate? Evidence required Status
OPEN-001 Tracker project ID, named requester and sponsor, and named reviewers are not recorded Product Owner 2026-11-10 (proposed) Yes Tracker entry; names with roles Open
OPEN-026 Critical: 20 API routes have no authentication check, incl. /api/admin/patient-sample (patient emails) and /api/admin/api-usage (doctor names and emails), support tickets/messages, and paid AI routes (/api/detect-gemini, /api/speech-to-text, /api/validate-scan) — see docs/lifecycle/_evidence/api-inventory-a6b4429.md Backend Lead 2026-10-31 (proposed) Yes Auth added to each route; re-run of the inventory shows none unprotected Open
OPEN-036 No OpenAPI specification and no contract tests for the 75 API route files Backend Lead 2026-12-15 (proposed) No OpenAPI file and contract tests in CI Open

Review and approval

Review role Named individual Decision Date Signed / controlled record
Author Claude Code (drafted with Claude Code) Draft 2026-10-27 This file at the commit that adds it
Technical reviewer Tech Lead (name to be assigned) Pending Pending Pending
Quality / regulatory reviewer (if applicable) Qualified regulatory reviewer (name to be assigned) Pending Pending Pending
Authorized approver Tech Lead (name to be assigned) Pending Pending Pending