| 2026-08-30 | UPDATE | /api/ventas/ | Ventas | Idempotencia rediseñada: UUID por ciclo de vida del carrito (no SHA-256). Triple protección: flag UI isProcessing, idempotency_key UUID, UNIQUE constraint en BD. Backend acepta key del cliente o genera UUID4 fallback. Logging de key en Java audit + backend logger |
| 2026-08-28 | GET | /api/productos/ | Productos | Header X-Total-Count: Total de productos en listado y búsquedas (search, search/nombre, categoria/:id) para paginación frontend |
| 2026-08-28 | GET | /api/ventas/ | Ventas | Header X-Total-Count: Total de ventas con filtros de fecha (fecha_desde, fecha_hasta, mes, anio) para paginación |
| 2026-08-28 | GET | /api/ventas/search | Ventas | Header X-Total-Count: Total de ventas que matchean búsqueda (q, tipo) para paginación |
| 2026-08-28 | GET | /api/clientes/ | Clientes | Header X-Total-Count: Total de clientes en listado y búsqueda por nombre para paginación |
| 2026-08-28 | GET | /api/caja/ | Finanzas / Caja | Header X-Total-Count: Total de cierres con filtros (desde, hasta, usuario) para paginación |
| 2026-08-28 | GET | /api/jornada/ | Finanzas / Jornadas | Header X-Total-Count: Total de jornadas para paginación |
| 2026-08-28 | GET | /api/egresos/ | Finanzas / Egresos | Header X-Total-Count: Total de egresos/ingresos con filtros de fecha para paginación |
| 2026-08-28 | GET | /api/saldo-inicial/ | Finanzas / Saldo Inicial | Header X-Total-Count: Total de saldos iniciales para paginación |
| 2026-08-28 | GET | /api/categorias/ | Productos / Categorías | Header X-Total-Count: Total de categorías para paginación |
| 2026-08-28 | GET | /api/impuestos/ | Finanzas / Impuestos | Header X-Total-Count: Total de impuestos para paginación |
| 2026-08-28 | GET | /api/proveedores/ | Core / Proveedores | Header X-Total-Count: Total de proveedores para paginación |
| 2026-08-28 | GET | /api/terminales/ | Core / Terminales | Header X-Total-Count: Total de terminales (por tenant o cross-tenant) para paginación |
| 2026-08-28 | GET | /api/tipos-usuario/ | Admin / Tipos Usuario | Header X-Total-Count: Total de tipos de usuario para paginación |
| 2026-08-28 | GET | /api/tenants/ | Admin / Tenants | Header X-Total-Count: Total de tenants (Solo Superadmin) para paginación |
| 2026-08-28 | GET | /api/usuarios/ | Admin / Usuarios | Header X-Total-Count: Total de usuarios (por tenant o cross-tenant) para paginación |
| 2026-08-28 | GET | /api/config/configuraciones | Admin / Config | Header X-Total-Count: Total de configuraciones key-value para paginación |
| 2026-08-28 | GET | /api/creditos/ | Créditos | Header X-Total-Count: Total de créditos con filtros (estado, activos, vencidos, por_vencer, factura_id) para paginación |
| 2026-08-28 | GET | /api/creditos/cliente/:id | Créditos | Header X-Total-Count: Total de créditos de un cliente para paginación |
| 2026-08-28 | GET | /api/cotizaciones/ | Ventas / Cotizaciones | Header X-Total-Count: Total de cotizaciones para paginación |
| 2026-08-28 | GET | /api/alertas/ | Alertas | Header X-Total-Count: Total de alertas de stock con filtro resuelta para paginación |
| 2026-08-28 | GET | /api/alertas-seguridad/ | Alertas Seguridad | Header X-Total-Count: Total de alertas de fuerza bruta con filtro resuelta para paginación |
| 2026-08-28 | GET | /api/incidentes/ | Incidentes | Header X-Total-Count: Total de incidentes con filtros resuelto/severidad/modulo para paginación |
| 2026-08-28 | GET | /api/logs/ | Logs Auditoría | Header X-Total-Count: Total de logs de auditoría con filtros fecha/modulo/nivel/tipo para paginación |
| 2026-08-28 | GET | /api/permisos/ | Admin / Permisos | Header X-Total-Count: Total de permisos por rol para paginación |
| 2026-08-26 | GET | /api/caja/count | Finanzas / Caja | Conteo de registros de caja con filtros (desde, hasta, usuario) — diseñado para paginación del panel de cierres |
| 2026-08-26 | POST | /api/ventas/ | Ventas | Idempotencia completa: HTTP 409 en duplicados, key estable SHA-256, terminal_id en ventas, fecha_hora en sync push, SELECT FOR UPDATE para serialización, X-Request-ID |
| 2026-08-26 | GET | /api/ventas/diario-por-usuario | Ventas | Resumen diario de ventas discriminado por vendedor: desglose por canal (Local/Electrónico) y medio de pago (Efectivo/Transferencia). Alimenta el dashboard de admin |
| 2026-08-26 | GET | /api/jornada/pendientes-cierre | Finanzas / Jornadas | Jornadas ABIERTAS de días anteriores sin cierre de caja. El POS lo consulta a primera hora para avisar al cajero que debe cerrar con conexión |
| 2026-08-26 | UPDATE | /api/caja/ | Finanzas / Caja | Filtros nuevos: desde, hasta, usuario para listado de cajas con rango de fechas y cajero |
| 2026-08-26 | UPDATE | /api/admin/tenants/:tenant_id/activity | Admin / Salud | Campos nuevos en respuesta: ingresos, total_ingresos, total_cierres, base_inicial_total, ultimo_cierre, ultimo_cierre_monto |
| 2026-08-17 | GET | /api/admin/tenants/:tenant_id/balance-caja | Admin / Salud | Balance de caja detallado por cajero: jornadas cerradas con montos (base, ventas, efectivo, transferencia, crédito, gastos, ingresos) y conciliación de efectivo esperado vs declarado (estado_conciliacion CUADRADO/SOBRANTE/FALTANTE con umbral de alerta). Superadmin cross-tenant; Admin solo su tenant |
| 2026-08-16 | POST | /api/sync/report | Sincronización | Telemetría de sync por terminal: el cliente POS reporta sus contadores acumulados (pushes/pulls/pendientes) y el panel los agrega. UPSERT idempotente por (tenant, terminal) + heartbeat. Alimenta la sección dispositivos de GET /api/sync/metrics |
| 2026-08-13 | GET | /api/admin/tenants/health | Admin / Salud | Visión de salud cross-tenant (Sprint 5): en línea, sync pendiente, incidentes/alertas, nivel de salud por tenant. Incluye motivos_salud: descripción del porqué del estado para el panel (Superadmin) |
| 2026-08-16 | GET | /api/admin/tenants/:tenant_id/activity | Admin / Salud | Análisis de transacciones del tenant por usuario: ventas, cierres/aperturas de caja, egresos e ingresos y abonos a créditos por usuario (Sprint 5) |
| 2026-08-16 | POST | /api/terminales/heartbeat | Core POS | Señal de vida del terminal POS: actualiza Terminal.ultimo_sync (estado real En línea/Desconectado en el panel de salud) |
| 2026-08-13 | GET | /api/admin/tenants/:tenant_id/health | Admin / Salud | Detalle de salud de un solo tenant (Sprint 5, Superadmin) con motivos_salud (porqué del estado) |
| 2026-08-13 | GET | /api/admin/tenants/:tenant_id/usage | Admin / Salud | Métricas de uso para gráfica: serie diaria de ventas, ticket promedio, totales usuarios/productos/clientes/créditos (Sprint 5) |
| 2026-08-13 | GET | /api/alertas-seguridad | Alertas de Seguridad | Lista alertas de seguridad del tenant (fuerza bruta) — permiso alertas_seguridad, leer |
| 2026-08-13 | GET | /api/alertas-seguridad/count | Alertas de Seguridad | Conteo de alertas del tenant (total, pendientes, resueltas) |
| 2026-08-13 | GET | /api/alertas-seguridad/:alerta_id | Alertas de Seguridad | Detalle de alerta de seguridad del tenant |
| 2026-08-13 | PATCH | /api/alertas-seguridad/:alerta_id/resolver | Alertas de Seguridad | Resolver alerta de seguridad del tenant (permiso actualizar) |
| 2026-08-13 | GET | /api/admin/alertas-seguridad | Alertas de Seguridad | Bandeja de soporte: todas las alertas de todos los tenants (Superadmin, filtros resuelta/tenant_id/nivel) |
| 2026-08-13 | GET | /api/admin/alertas-seguridad/count | Alertas de Seguridad | Conteo global de alertas cross-tenant (Superadmin) |
| 2026-08-13 | PATCH | /api/admin/alertas-seguridad/:alerta_id/resolver | Alertas de Seguridad | Resolver alerta de cualquier tenant (Superadmin/soporte) |
| 2026-08-10 | POST | /api/auth/login | Auth | Resolución de terminal sin fuga: prioridad terminal_id del cliente → terminal asignada al usuario → primera del tenant / CAJA1. Nunca se crea una terminal nueva por login |
| 2026-08-10 | PUT/POST | /api/usuarios/ | Usuarios | Campo terminal_id para asignar terminal al usuario (debe existir en el tenant; 400 si no) |
| 2026-08-10 | GET/POST/PUT | /api/tenants | Tenants | Campo limite_terminals (por defecto 5): Superadmin limita el número de terminales por tenant |
| 2026-08-10 | POST | /api/auth/login | Auth | Bloqueo temporal por fuerza bruta: 5 intentos fallidos → 5 min, 10 → 30 min (respuesta 429 con Retry-After); login correcto limpia el contador |
| 2026-08-10 | POST | /api/sync/push | Sincronización | Contrato endurecido: whitelist por entidad (campos fuera de la whitelist se descartan), stock protegido en UPDATE de productos, RBAC por entidad (modo auditoría; 403 con sync_rbac_strict=true) |
| 2026-08-11 | POST/PUT | /api/saldo-inicial/ | Saldo Inicial | Campo jornada_id (opcional) para amarrar el saldo a la jornada; el create/re-amarre sincroniza jornada_caja.base_inicial y caja.base (cierre contra base correcta) |
| 2026-08-10 | POST | /api/saldo-inicial/ | Saldo Inicial | Create idempotente: si ya existe (terminal_id + fecha) retorna el registro existente (200/201) en vez de 500 |
| 2026-08-10 | GET | /api/saldo-inicial/existe | Saldo Inicial | Consulta global por terminal_id + fecha (independiente del tenant), alineada con el constraint global |
| 2026-08-06 | GET | /api/creditos/dashboard | Créditos | Dashboard agregado en 1 llamada (resumen, créditos activos con próxima cuota, alertas) — reemplaza sobre-consulta |
| 2026-08-02 | GET | /api/auth/me | Auth | Datos completos del usuario logueado (usuario, permisos, tenant, fecha_registro) |
| 2026-08-02 | GET | /api/productos/count | Productos | Total de productos activos del tenant |
| 2026-07-31 | POST | /api/creditos/:credito_id/pagos | Créditos | Pago transaccional idempotente con distribución a cuotas |
| 2026-07-31 | POST | /api/creditos/:credito_id/reconciliar | Créditos | Recalcula saldo y estado desde movimientos/cuotas |
| 2026-07-31 | GET | /api/creditos/:credito_id/saldo | Créditos | Saldo pendiente actual del crédito |
| 2026-07-31 | GET | /api/cotizaciones/:cotizacion_id/detalles | Cotizaciones | Lista los detalles de una cotización |
| 2026-07-31 | GET | /api/ventas/medio-pago | Ventas | Métodos de pago válidos (cliente Java) |
| 2026-07-31 | GET | /api/ventas/tipo-pago | Ventas | Tipos de pago válidos (cliente Java) |
| 2026-07-31 | POST | /api/ventas/:venta_id/post-emision | Ventas | Procesos posteriores a la emisión de factura |
| 2026-07-31 | GET | /api/ventas/numero-factura/next | Ventas | Siguiente número de factura del tenant |
| 2026-07-31 | POST | /api/ventas/:venta_id/revert-stock | Ventas | Revierte stock de una venta eliminada |
| 2026-07-31 | GET | /api/ventas/next-id | Ventas | Siguiente ID de venta |
| 2026-07-31 | GET | /api/ventas/count | Ventas | Cuenta ventas con filtros |
| 2026-07-31 | GET | /api/ventas/search/count | Ventas | Conteo de la búsqueda de ventas |
| 2026-07-31 | GET | /api/ventas/search | Ventas | Búsqueda de ventas por término |
| 2026-07-31 | GET | /api/productos/search | Productos | Búsqueda de productos por término |
| 2026-07-31 | POST | /api/detalles/ | Detalles | Registra detalle de facturación (permiso ventas, crear) |
| 2026-07-31 | DELETE | /api/categorias-movimiento/:id | Core POS | Eliminar categoría de movimiento |
| 2026-07-31 | PUT | /api/categorias-movimiento/:id | Core POS | Actualizar categoría de movimiento |
| 2026-07-31 | POST | /api/categorias-movimiento/ | Core POS | Crear categoría de movimiento |
| 2026-07-31 | GET | /api/categorias-movimiento/:id | Core POS | Detalle de categoría de movimiento |
| 2026-07-31 | GET | /api/categorias-movimiento/ | Core POS | Lista categorías de movimiento |
| 2026-07-31 | PATCH | /api/alertas/resolver-todas | Core POS | Resolver todas las alertas |
| 2026-07-31 | PATCH | /api/alertas/:alerta_id/resolver | Core POS | Resolver alerta de stock |
| 2026-07-31 | GET | /api/alertas/:alerta_id | Core POS | Detalle de alerta |
| 2026-07-31 | GET | /api/alertas/por-producto | Core POS | Alertas agrupadas por producto |
| 2026-07-31 | GET | /api/alertas/count | Core POS | Conteo de alertas |
| 2026-07-31 | GET | /api/alertas/ | Core POS | Lista alertas de stock paginada |
| 2026-07-29 | GET | /api/tenants/current | Infraestructura | Info del tenant del usuario autenticado (accesible sin rol Superadmin) |
| 2026-07-29 | GET | /api/incidentes/ | Infraestructura | Lista incidentes paginada con filtros |
| 2026-07-29 | GET | /api/incidentes/count | Infraestructura | Conteo de incidentes con desglose |
| 2026-07-29 | GET | /api/incidentes/por-modulo | Infraestructura | Incidentes agrupados por módulo |
| 2026-07-29 | GET | /api/incidentes/:id | Infraestructura | Detalle de incidente |
| 2026-07-29 | POST | /api/incidentes/ | Infraestructura | Crear incidente |
| 2026-07-29 | PATCH | /api/incidentes/:id/resolver | Infraestructura | Resolver incidente |
| 2026-07-29 | GET | /api/terminales/ | Core POS | Lista terminales paginada |
| 2026-07-29 | GET | /api/terminales/:id | Core POS | Detalle de terminal |
| 2026-07-29 | POST | /api/terminales/ | Core POS | Crear terminal |
| 2026-07-29 | PUT | /api/terminales/:id | Core POS | Actualizar terminal |
| 2026-07-29 | DELETE | /api/terminales/:id | Core POS | Eliminar terminal |
| 2026-07-29 | PATCH | /api/terminales/:id/toggle | Core POS | Activar/desactivar terminal |
| 2026-07-28 | GET | /health | Infraestructura | Health check con estado de DB cloud, local, sync queue, disco |
| 2026-07-28 | GET | / | Infraestructura | Info básica de la API (versión, documentación) |
| 2026-07-28 | GET | /api/system/metrics | Admin | Métricas servidor: CPU, RAM, disco, uptime |
| 2026-07-28 | GET | /api/system/db/metrics | Admin | Métricas DB: conteo registros por tabla |
| 2026-07-28 | GET | /api/admin/dashboard/overview | Admin | Visión general cross-tenant para Superadmin |
| 2026-07-28 | GET | /api/sync/metrics | Sincronización | Métricas sync: throughput, conflictos, errores |
| 2026-07-28 | GET | /api/tenants/:id/metrics | Tenants | Métricas específicas por tenant |
| 2026-07-24 | GET | /api/creditos/?estado=…&activos=…&vencidos=…&por_vencer=…&factura_id=… | Créditos | Filtros opcionales en listado de créditos |
| 2026-07-24 | DELETE | /api/creditos/?factura_id=X | Créditos | Eliminar créditos por factura |
| 2026-07-24 | GET | /api/creditos/cuotas/por-vencer | Créditos | Cuotas por vencer en N días |
| 2026-07-24 | GET | /api/creditos/cuotas/:cuota_id | Créditos | Obtener cuota por ID |
| 2026-07-24 | POST | /api/creditos/:credito_id/cuotas | Créditos | Agregar cuota manual a un crédito |
| 2026-07-24 | GET | /api/creditos/:credito_id/movimientos | Créditos | Listar movimientos de un crédito |
| 2026-07-24 | PUT | /api/creditos/:credito_id/saldo | Créditos | Actualizar saldo pendiente |
| 2026-07-24 | PUT | /api/creditos/:credito_id/estado | Créditos | Actualizar estado del crédito |
| 2026-07-24 | GET | /api/creditos/config?clave=X | Créditos | Obtener config por query param (Java compat) |
| 2026-07-24 | GET | /api/egresos/total-ingresos-rango | Egresos | Suma ingresos (tipo_movimiento=INGRESO) en rango de fechas |
| 2026-07-24 | POST | /api/jornada/cerrar | Jornadas | Cierra la jornada activa de un usuario |
| 2026-07-24 | GET | /api/config/modo_venta | Configuración | Retorna la configuración modo_venta |
| 2026-07-24 | POST | /api/config/ | Configuración | Upsert de configuración clave-valor |
| — | POST | /api/sync/pull/apply | Sincronización | Obtiene y aplica cambios del cloud a la BD local |
| — | PUT | /api/ventas/:venta_id/abono | Ventas | Registra abono a una venta |
| — | GET | /api/cotizaciones/max-id | Cotizaciones | Obtiene el máximo ID de cotización |
| — | GET | /api/cotizaciones/count | Cotizaciones | Cuenta las cotizaciones |
| — | PUT | /api/cotizaciones/:id/estado | Cotizaciones | Cambia el estado de una cotización |
| — | PUT | /api/config/:clave | Configuración | Actualiza valor por clave |
| — | GET | /api/impuestos/codigo/:codigo_dian | Impuestos | Obtiene impuesto por código DIAN |
| — | GET | /api/impuestos/tipo/:tipo | Impuestos | Obtiene impuestos por tipo |
| — | GET | /api/logs/count | Logs | Cuenta los logs |
| — | GET | /api/logs/modulos | Logs | Lista módulos disponibles |
| — | POST | /api/logs/ | Logs | Registra un nuevo log |
| — | POST | /api/sync/push | Sincronización | Push de eventos al cloud |
| — | GET | /api/sync/pull | Sincronización | Pull de cambios desde el cloud |