Saltar al contenido principal

Referencia de la API

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étodoRutaPropósitoAcceso
GET/healthEstado del servidor (usado por el health-gate de Tauri).Público
POST/api/auth/loginInicia sesión (email + contraseña); devuelve JWT. Con rate-limit.Público
GET/api/auth/meDevuelve el usuario actual; revalida que siga activo.Token
GET/api/setup/status¿La app necesita configuración inicial? (sin usuarios).Público
POST/api/setupCrea 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étodoRutaPropósitoAcceso
GET/api/membersLista miembros (filtros archived, search); marca pagos pendientes.Token
GET/api/members/:idDetalle del miembro con pagos y mensajes WhatsApp.Token
POST/api/membersAlta con plan inicial + primer pago (transacción atómica).Token
PATCH/api/members/:idEdita datos básicos; archivar requiere gerente.Token / 🔒
POST/api/members/:id/renewRenueva la membresía (aplica reglas de fecha).Token

Membresías (planes)

MétodoRutaPropósitoAcceso
GET/api/membershipsLista planes activos.Token
POST/api/membershipsCrea un plan.🔒
PATCH/api/memberships/:idEdita un plan.🔒
DELETE/api/memberships/:idBorra/desactiva un plan (lógico si tiene miembros).🔒

Pagos y transacciones

MétodoRutaPropósitoAcceso
POST/api/payments/:id/confirmConfirma un pago pendiente (registra ID externo, dispara WhatsApp).🔒
GET/api/transactionsLista movimientos (filtros tipo/periodo/estado/búsqueda).Token
POST/api/transactionsRegistra un movimiento; gastos requieren gerente.Token / 🔒
POST/api/transactions/:id/confirmConfirma una venta pendiente (tarjeta/transferencia).Token
POST/api/transactions/:id/voidAnula un movimiento confirmado (crea gemela compensatoria).🔒
GET/api/categoriesLista categorías (`kind=productexpense`).

Productos y ventas

MétodoRutaPropósitoAcceso
GET/api/productsLista productos del inventario.Token
POST/api/productsCrea un producto.🔒
PATCH/api/products/:idEdita un producto.🔒
DELETE/api/products/:idBorra/desactiva un producto.🔒
POST/api/categoriesCrea una categoría (producto o gasto).🔒
DELETE/api/categories/:idBorra una categoría.🔒
POST/api/salesRegistra 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étodoRutaPropósitoAcceso
GET/api/reports/monthlyReporte de 6 meses + desgloses del mes (legacy).Token
GET/api/reports/rangeReporte por rango from/to; deltas, serie, desgloses.Token
GET/api/dashboard/summaryResumen para el tablero principal.Token

Gimnasio, usuarios y configuración

MétodoRutaPropósitoAcceso
GET/api/gymDatos del gimnasio (nombre, dirección, logo…).Token
PATCH/api/gymEdita los datos del gimnasio.🔒
GET/api/usersLista usuarios del sistema.🔒
POST/api/usersCrea un usuario (gerente/recepción).🔒
PATCH/api/users/:idEdita/activa/desactiva un usuario.🔒
DELETE/api/users/:idElimina un usuario.🔒
GET/api/settingsLee configuración de infraestructura (carpeta de respaldo).🔒
PATCH/api/settingsEdita 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étodoRutaPropósitoAcceso
GET/api/wa/templatesLista plantillas de mensajes.🔒
POST/api/wa/templatesCrea una plantilla.🔒
PATCH/api/wa/templates/:idEdita una plantilla.🔒
DELETE/api/wa/templates/:idElimina una plantilla.🔒
GET/api/wa/logBitácora de mensajes enviados (filtro por estado).🔒
GET/api/wa/configConfiguración de Twilio (sin exponer el token).🔒
PATCH/api/wa/configEdita config de Twilio (cifra el token at-rest).🔒
POST/api/wa/pingVerifica credenciales de Twilio sin enviar.🔒
POST/api/wa/testEnvío de prueba a un número arbitrario.🔒
POST/api/wa/sendEnvía una plantilla a un miembro real y registra en bitácora.Token
POST/api/wa/trigger-nowDispara los recordatorios diarios manualmente.🔒
POST/api/wa/webhookWebhook de Twilio: valida firma y actualiza estado de entrega.Público

Bitácora y respaldo

MétodoRutaPropósitoAcceso
GET/api/auditBitácora administrativa (últimas 200 acciones, con actor).🔒
GET/api/backup/statusEstado del último respaldo.🔒
POST/api/backup/nowRespalda ahora (snapshot manual).🔒
POST/api/backup/restorePrepara una restauración (se aplica al reiniciar).🔒