Files
whatsapp/modules/soporte/docs/tecnica/90-endpoints.md
T
Lizandro GuarnizoandClaude Opus 5 32c209710c Documentación completa del proyecto en el módulo Soporte
21 documentos en cuatro secciones, escritos sobre el comportamiento real del
sistema —incluidos los casos que costaron diagnosticar esta semana.

Manual de usuario (visible para todos): primeros pasos, recepción, toma de
muestras, portal del enfermero y administración. Orientado a tareas concretas,
no a describir pantallas.

Documentación técnica: índice de módulos, turnero, formularios y firma digital,
WhatsApp y bot, domicilios, webhook (migrado de WEBHOOK_ENDPOINTS.md) e
inventario de endpoints.

Arquitectura: visión general, enrutamiento y registro de módulos, roles y
permisos, modelo de datos, integración con WhatsApp, y decisiones tomadas con
su deuda técnica asociada.

Operación: runbook de incidentes ordenado por síntoma, configuraciones críticas
—incluido qué vive en Meta y no en la base— y despliegue.

Se documentan explícitamente las trampas conocidas: role/role_id que hay que
mantener sincronizados, las columnas can_* que el control de acceso no lee, las
URL de plantilla que no se cambian desde el código, y las columnas históricas
que quedaron en NULL sin forma de recuperarlas.

README_DOCS.md apunta al módulo y explica cómo agregar páginas.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 10:14:32 -05:00

1.5 KiB

Endpoints

Inventario de los endpoints de todos los módulos, generado del filesystem en cada carga. La descripción sale del comentario de cabecera de cada archivo.

Convenciones

Los endpoints son archivos PHP sueltos que devuelven JSON. No pasan por el enrutador: se invocan por su ruta real.

modules/turnero/api/get_historial.php
api/lab/save_domicilio.php

Cada módulo tiene su api/_helpers.php con lo común. Los archivos que empiezan con guión bajo son internos y no se listan acá.

Helpers típicos

Función Qué hace
db() Conexión PDO
inputJson() Cuerpo de la petición como arreglo
jsonOk($datos) Respuesta correcta
jsonError($msg, $codigo) Error con código HTTP
adminId() Id del usuario de la sesión
requireMethod('POST') Corta si el método no coincide
requireTurnero() Corta si no tiene acceso al turnero

Reglas al agregar uno

  1. Verificá permisos en el propio endpoint. Que la vista haya ocultado el botón no protege nada.
  2. Resolvé la identidad en el servidor. Para saber quién hace una acción, usá adminId(), no un valor que mande el navegador.
  3. Consultas preparadas siempre.
  4. Dejá un comentario de cabecera describiendo qué hace y qué recibe: es lo que aparece en la tabla de abajo.

Inventario

{{endpoints}}

Endpoints fuera de módulos

api/lab/ agrupa los del laboratorio de la generación anterior — domicilios, pacientes, formularios, configuración. Siguen las mismas convenciones y usan api/lab/_helpers.php.