Tabla de rutas del sidecar Fastify (server/routes/). El servidor escucha solo
en 127.0.0.1:3001. Salvo las rutas públicas, todas exigen
Authorization: Bearer <JWT>; algunas exigen además el rol gerente
(marcadas con 🔒).
Esta tabla se extrajo del código real. Los cuerpos/parámetros se validan con
Zod en cada handler.
Autenticación y setup
| Método | Ruta | Propósito | Acceso |
|---|
| GET | /health | Estado del servidor (usado por el health-gate de Tauri). | Público |
| POST | /api/auth/login | Inicia sesión (email + contraseña); devuelve JWT. Con rate-limit. | Público |
| GET | /api/auth/me | Devuelve el usuario actual; revalida que siga activo. | Token |
| GET | /api/setup/status | ¿La app necesita configuración inicial? (sin usuarios). | Público |
| POST | /api/setup | Crea el primer gerente + datos del gym (solo con 0 usuarios). | Público* |
* Se auto-protege: responde 403 si ya existe algún usuario.
Miembros
| Método | Ruta | Propósito | Acceso |
|---|
| GET | /api/members | Lista miembros (filtros archived, search); marca pagos pendientes. | Token |
| GET | /api/members/:id | Detalle del miembro con pagos y mensajes WhatsApp. | Token |
| POST | /api/members | Alta con plan inicial + primer pago (transacción atómica). | Token |
| PATCH | /api/members/:id | Edita datos básicos; archivar requiere gerente. | Token / 🔒 |
| POST | /api/members/:id/renew | Renueva la membresía (aplica reglas de fecha). | Token |
Membresías (planes)
| Método | Ruta | Propósito | Acceso |
|---|
| GET | /api/memberships | Lista planes activos. | Token |
| POST | /api/memberships | Crea un plan. | 🔒 |
| PATCH | /api/memberships/:id | Edita un plan. | 🔒 |
| DELETE | /api/memberships/:id | Borra/desactiva un plan (lógico si tiene miembros). | 🔒 |
Pagos y transacciones
| Método | Ruta | Propósito | Acceso |
|---|
| POST | /api/payments/:id/confirm | Confirma un pago pendiente (registra ID externo, dispara WhatsApp). | 🔒 |
| GET | /api/transactions | Lista movimientos (filtros tipo/periodo/estado/búsqueda). | Token |
| POST | /api/transactions | Registra un movimiento; gastos requieren gerente. | Token / 🔒 |
| POST | /api/transactions/:id/confirm | Confirma una venta pendiente (tarjeta/transferencia). | Token |
| POST | /api/transactions/:id/void | Anula un movimiento confirmado (crea gemela compensatoria). | 🔒 |
| GET | /api/categories | Lista categorías (`kind=product | expense`). |
Productos y ventas
| Método | Ruta | Propósito | Acceso |
|---|
| GET | /api/products | Lista productos del inventario. | Token |
| POST | /api/products | Crea un producto. | 🔒 |
| PATCH | /api/products/:id | Edita un producto. | 🔒 |
| DELETE | /api/products/:id | Borra/desactiva un producto. | 🔒 |
| POST | /api/categories | Crea una categoría (producto o gasto). | 🔒 |
| DELETE | /api/categories/:id | Borra una categoría. | 🔒 |
| POST | /api/sales | Registra una venta de productos (POS, varios items, descuenta stock). | Token |
El propósito y los permisos exactos de las rutas de productos/ventas/categorías
se documentan según su uso en el frontend; verificar contra server/routes/products.ts
ante cualquier cambio. [POR CONFIRMAR] el rol exacto de POST /api/sales.
Reportes
| Método | Ruta | Propósito | Acceso |
|---|
| GET | /api/reports/monthly | Reporte de 6 meses + desgloses del mes (legacy). | Token |
| GET | /api/reports/range | Reporte por rango from/to; deltas, serie, desgloses. | Token |
| GET | /api/dashboard/summary | Resumen para el tablero principal. | Token |
Gimnasio, usuarios y configuración
| Método | Ruta | Propósito | Acceso |
|---|
| GET | /api/gym | Datos del gimnasio (nombre, dirección, logo…). | Token |
| PATCH | /api/gym | Edita los datos del gimnasio. | 🔒 |
| GET | /api/users | Lista usuarios del sistema. | 🔒 |
| POST | /api/users | Crea un usuario (gerente/recepción). | 🔒 |
| PATCH | /api/users/:id | Edita/activa/desactiva un usuario. | 🔒 |
| DELETE | /api/users/:id | Elimina un usuario. | 🔒 |
| GET | /api/settings | Lee configuración de infraestructura (carpeta de respaldo). | 🔒 |
| PATCH | /api/settings | Edita la configuración de infraestructura. | 🔒 |
El rol exacto de las rutas de gimnasio/usuarios/configuración se infiere del
patrón del proyecto (lecturas con token, escrituras solo gerente); verificar
contra server/routes/gym.ts, users.ts y settings.ts. [POR CONFIRMAR]
WhatsApp (Twilio)
| Método | Ruta | Propósito | Acceso |
|---|
| GET | /api/wa/templates | Lista plantillas de mensajes. | 🔒 |
| POST | /api/wa/templates | Crea una plantilla. | 🔒 |
| PATCH | /api/wa/templates/:id | Edita una plantilla. | 🔒 |
| DELETE | /api/wa/templates/:id | Elimina una plantilla. | 🔒 |
| GET | /api/wa/log | Bitácora de mensajes enviados (filtro por estado). | 🔒 |
| GET | /api/wa/config | Configuración de Twilio (sin exponer el token). | 🔒 |
| PATCH | /api/wa/config | Edita config de Twilio (cifra el token at-rest). | 🔒 |
| POST | /api/wa/ping | Verifica credenciales de Twilio sin enviar. | 🔒 |
| POST | /api/wa/test | Envío de prueba a un número arbitrario. | 🔒 |
| POST | /api/wa/send | Envía una plantilla a un miembro real y registra en bitácora. | Token |
| POST | /api/wa/trigger-now | Dispara los recordatorios diarios manualmente. | 🔒 |
| POST | /api/wa/webhook | Webhook de Twilio: valida firma y actualiza estado de entrega. | Público |
Bitácora y respaldo
| Método | Ruta | Propósito | Acceso |
|---|
| GET | /api/audit | Bitácora administrativa (últimas 200 acciones, con actor). | 🔒 |
| GET | /api/backup/status | Estado del último respaldo. | 🔒 |
| POST | /api/backup/now | Respalda ahora (snapshot manual). | 🔒 |
| POST | /api/backup/restore | Prepara una restauración (se aplica al reiniciar). | 🔒 |