GET/v1/break-the-glass/activeList Active Break The Glass Grants
Grants vigentes de la institución.
Quien tenga ``EMERGENCY_ACCESS`` + ``VIEW`` (auditoría/seguridad, admins) ve
los de toda la institución; cualquier otro usuario ve solo los suyos, que es
lo que necesita el banner "estás usando un acceso de emergencia".
Parámetros
| Nombre | En | Tipo | Obl. |
|---|
userId | query | string o nulo | No |
tenant_id | query | string o nulo | No |
Respuestas
| Código | Descripción | Devuelve |
|---|
| 200 | Respuesta correcta | lista de BreakTheGlassGrantOut |
| 422 | Error de validación | HTTPValidationError |
GET/v1/break-the-glass/historyList Break The Glass History
Historial de accesos de emergencia, paginado y filtrable (CR-236).
A diferencia de ``/active``, aquí entran TODAS las filas —vigentes, caducadas
y revocadas—: es el registro para revisar después, no el estado de ahora.
El alcance es el mismo que el de ``/active`` y a propósito: quien supervisa
(``EMERGENCY_ACCESS`` + ``VIEW``) ve la institución entera; cualquier otro ve
**solo lo suyo**. Un clínico tiene derecho a revisar sus propios accesos sin
que eso le abra los de sus compañeros, y tener dos reglas de alcance
distintas en dos rutas del mismo módulo es como se cuelan los agujeros.
Las fechas filtran por ``otorgadoAt``, que es cuándo ocurrió el acceso. Es lo
que se busca al revisar («qué pasó el martes»), no cuándo caducó.
Parámetros
| Nombre | En | Tipo | Obl. |
|---|
userId | query | string o nulo | No |
patientId | query | string o nulo | No |
dateFrom | query | string (date-time) o nulo | No |
dateTo | query | string (date-time) o nulo | No |
page | query | integer | No |
pageSize | query | integer | No |
tenant_id | query | string o nulo | No |
Respuestas
| Código | Descripción | Devuelve |
|---|
| 200 | Respuesta correcta | BreakTheGlassHistoryOut |
| 422 | Error de validación | HTTPValidationError |
POST/v1/break-the-glass/{grant_id}/revokeRevoke Break The Glass Grant
Cortar un acceso de emergencia antes de que caduque (CR-236).
Hasta aquí el único control vivo era enterarse: el grant caducaba solo y nadie
podía pararlo. Con esto la supervisión deja de ser solo lectura.
**Quién**: ``EMERGENCY_ACCESS`` + ``AUDIT``. No es el mismo permiso que ver el
panel (``VIEW``): mirar y cortar son decisiones distintas. Y nadie puede
llegar a este permiso rompiendo el vidrio — ``EMERGENCY_ACCESS`` no está en
``EMERGENCY_ACCESS_ALLOWED_MODULES``, así que un grant jamás concede el
módulo que gobierna los grants.
**Efecto inmediato**: la revocación escribe ``revocadoAt``, y la vigencia la
define ``active_emergency_grants`` con ``revocadoAt IS NULL``. El siguiente
chequeo RBAC ya no ve la fila; no hay caché que invalidar ni ventana en la
que el acceso siga en pie.
Parámetros
| Nombre | En | Tipo | Obl. |
|---|
grant_id | path | string | Sí |
tenant_id | query | string o nulo | No |
Cuerpo obligatorio BreakTheGlassRevokeIn
| Campo | Tipo | Obl. |
|---|
motivo | string | Sí |
Respuestas
| Código | Descripción | Devuelve |
|---|
| 200 | Respuesta correcta | BreakTheGlassGrantOut |
| 422 | Error de validación | HTTPValidationError |