EMA Clinic expone 53 rutas API agrupadas en quince dominios
funcionales. Todas requieren Authorization: Bearer <jwt> salvo
las marcadas explícitamente como públicas. La autorización por rol
se aplica a nivel de handler con requireRole(...), lo que permite
que cada endpoint declare su propio allowlist en lugar de depender
de un patrón monolítico de RBAC. Esta página presenta el inventario
completo agrupado por dominio.
| Método | Path | Auth | Rol | Qué hace |
|---|
| POST | /auth/login | público | — | Email + password |
| POST | /auth/login-google | público | — | OAuth Google |
| POST | /auth/login-microsoft | público | — | OAuth Microsoft |
| POST | /auth/logout | bearer | cualquiera | Invalida sesión |
| POST | /auth/callback/:provider | público | — | Callback OAuth |
| POST | /auth/refresh | bearer | cualquiera | Refresh token |
| POST | /auth/reset-password | público | — | Flow reset password |
| GET | /api/auth-config/:slug | público | — | Config auth providers del tenant (F122) |
| Método | Path | Rol | Qué hace |
|---|
| GET | /api/patients | medico, enfermera, secretaria, admin | List paginada (filtros) |
| POST | /api/patients | medico, enfermera, secretaria, admin | Crear |
| GET | /api/patients/:id | medico, enfermera, secretaria, admin | Detalle (demo + history) |
| PATCH | /api/patients/:id | medico, secretaria, admin | Actualizar demografía |
| DELETE | /api/patients/:id | admin | Soft delete |
| Método | Path | Rol | Qué hace |
|---|
| GET | /api/encounters | medico, enfermera, secretaria, admin | Worklist (status filters) |
| POST | /api/encounters | secretaria, admin | Crear (de Appointment o ad-hoc) |
| GET | /api/encounters/:id | medico, enfermera, profesional, admin | Detalle + diagnóstico + obs |
| PATCH | /api/encounters/:id | medico, profesional | Update status, agregar diagnosis |
| POST | /api/encounters/:id/close-validation | medico | Pre-close validation (state machine) |
| Método | Path | Rol | Qué hace |
|---|
| GET | /api/schedule | cualquiera | List schedules |
| GET | /api/schedule/:id | cualquiera | Detail + availability |
| POST | /api/schedule/$find | cualquiera | Find slots (multi-actor intersection) |
| GET | /api/appointments | cualquiera | List appointments |
| POST | /api/appointments | secretaria, medico, admin | Crear |
| GET | /api/appointments/:id | cualquiera | Detalle |
| PATCH | /api/appointments/:id | secretaria, medico, admin | Update status, slot |
| POST | /api/appointments/:id/cancel | secretaria, medico, admin | Cancel + exception queue |
| GET | /api/schedules | admin | CRUD schedules |
| POST | /api/schedules/generate-slots | admin | Generate from RRULE pattern (F101) |
| POST | /api/schedules/:id/overrides | admin | Crear override |
| GET | /api/schedules/:id/exceptions | admin | Rescheduling queue |
| Método | Path | Rol | Qué hace |
|---|
| GET | /api/invoices | cajero, admin | List (filtros) |
| POST | /api/invoices | cajero, admin | Crear (desde encounter) |
| GET | /api/invoices/:id | cajero, admin | Detalle |
| PATCH | /api/invoices/:id | cajero, admin | Update status (draft→issued→balanced) |
| POST | /api/caja/movements | cajero | Log cash movement |
| GET | /api/caja/movements | cajero, admin | List (date range, method) |
| GET | /api/caja/reconciliation | cajero, admin | Daily reconciliation report |
| POST | /api/pricing/compute | cualquiera | Compute price (test endpoint) |
| GET | /api/healthcare-services | cualquiera | Servicios agendables (pricing anchor, F78) |
| Método | Path | Rol | Qué hace |
|---|
| GET | /api/service-requests | medico, enfermera, profesional | List orders |
| POST | /api/service-requests | medico, profesional | Crear (standalone) |
| POST | /api/service-requests/from-catalog | medico, profesional | Crear desde ActivityDefinition / order-set (F111) |
| GET | /api/service-requests/:id | medico, enfermera, profesional | Detalle |
| PATCH | /api/service-requests/:id | medico, profesional | Update status, add result reference |
| GET | /api/activity-definitions | medico, profesional | Catalog (lab, imaging, procedures) |
| GET | /api/diagnostic-reports | medico, enfermera, profesional | Results list |
| POST | /api/diagnostic-reports | sistema (HL7v2 integration) | Crear report |
Estos endpoints implementan los flujos del plug-in regulatorio del
país operativo. Los nombres de ruta —ges, eno— corresponden a
los catálogos chilenos productivos; en otros países, el plug-in
correspondiente reemplaza el contenido de los catálogos manteniendo
la misma estructura de endpoints.
| Método | Path | Rol | Qué hace |
|---|
| GET | /api/ges | medico, admin | List de patología priorizada (screenings y declaraciones) |
| POST | /api/ges/declare | medico | Declarar (Flag, Communication y Task) |
| GET | /api/ges/:id | medico, admin | Detalle de declaración |
| GET | /api/eno/notifications | medico, admin | Notificaciones obligatorias (Task list, F63) |
| POST | /api/eno/notify | medico | Crear notificación obligatoria |
| Método | Path | Rol | Qué hace |
|---|
| GET | /api/conditions | medico, profesional | Conditions del paciente |
| POST | /api/conditions | medico, profesional · sistema | Crear (usualmente auto-detection) |
| GET | /api/conditions/:id | medico, profesional | Detalle |
| PATCH | /api/conditions/:id | medico | Update verificationStatus (provisional→confirmed) |
| Método | Path | Rol | Qué hace |
|---|
| GET | /api/medications | medico, profesional | Catálogo + autocomplete |
| GET | /api/prescriptions | medico, profesional | Prescripciones del paciente |
| POST | /api/prescriptions | medico, profesional | Crear (MedicationRequest) |
| PATCH | /api/prescriptions/:id | medico, profesional | Update |
| Método | Path | Rol | Qué hace |
|---|
| GET | /api/settings/profile | cualquiera | Perfil del usuario actual |
| PATCH | /api/settings/profile | cualquiera | Update propio perfil |
| GET | /api/settings/users | admin | List users del tenant |
| POST | /api/settings/users | admin | Invite user |
| PATCH | /api/settings/users/:id | admin | Update rol |
| DELETE | /api/settings/users/:id | admin | Deactivate user |
| GET | /api/settings/organization | cualquiera | Tenant config (read open) |
| PATCH | /api/settings/organization | admin | Update org config |
| Método | Path | Rol | Qué hace |
|---|
| GET | /api/questionnaires | medico, profesional | List (GES + custom) |
| GET | /api/questionnaires/:id | medico, profesional | Detail + structure |
| POST | /api/questionnaire-responses | medico, profesional | Submit response (F60, extract.ts procesa) |
| Método | Path | Rol | Qué hace |
|---|
| GET | /api/dashboard | cualquiera | Aggregate stats (widgets filtrados por rol) |
| GET | /api/reports/audit | admin | Audit log export |
| GET | /api/reports/cash-reconciliation | cajero, admin | Caja report |
| GET | /api/reports/ges-declarations | admin | GES report |
| GET | /api/reports/rem | admin | Reporte estadístico mensual a la autoridad sanitaria del país (en Chile, REM al MINSAL — Excel, F207) |
| Método | Path | Auth | Rol | Qué hace |
|---|
| POST | /api/public/booking/:slug/* | público | — | Booking público (Hono nested router, scoped por slug) |
| POST | /api/portal/auth/signin | público | — | OTP login (paciente) |
| GET | /api/portal/data/me | OTP token | paciente | Perfil del paciente |
| GET | /api/portal/data/appointments | OTP token | paciente | Sus appointments |
| GET | /api/portal/data/results | OTP token | paciente | Sus lab/imaging results |
| Método | Path | Rol | Qué hace |
|---|
| POST | /api/emi/chat | cualquiera | Proxy a emi.emahealth.io (S9 v2.0) |
| GET | /api/emi/access | cualquiera | Check tenant_emi_access.is_active |
Los endpoints de facturación electrónica delegan al worker emadte
la integración con el organismo fiscal del país (en Chile, el SII;
en otros países, el equivalente). Vault gestiona la configuración
fiscal por tenant y Clinic invoca a emadte con la API key
correspondiente.
| Método | Path | Rol | Qué hace |
|---|
| POST | /api/dte/issue | cajero, admin | Emitir documento fiscal (llama emadte worker) |
| GET | /api/dte/status/:documentId | cajero, admin | Verificar estado del documento |
| Método | Path | Auth | Qué hace |
|---|
| POST | /api/platform/tenants | X-Platform-Key | Provisioning de tenant (desde emavault) |
| POST | /api/platform/tenants/:id/aidbox-credentials | X-Platform-Key | Almacenar credenciales encriptadas (S9) |
| Método | Path | Auth | Qué hace |
|---|
| GET | /api/health | público | Health check |
| GET | /api/config | público | Public Supabase config (bootstrap SPA) |