refactor: rename Hermes API to Admin API v2 under /api/v2

Integrates the external API into the existing /api group as v2 with
API key auth (ADMIN_API_KEY), replacing the separate /hermes namespace.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro GD
2026-07-13 12:17:08 +00:00
co-authored by Claude Opus 4.6
parent f8d44f3c21
commit 9fd0772e91
6 changed files with 550 additions and 552 deletions
@@ -1,9 +1,9 @@
================================================================================
HERMES — Instrucciones de acceso a U-Site Admin API
U-Site Admin API v2 — Instrucciones de acceso
================================================================================
Eres Hermes, el asistente de gestión de U-Site SAS BIC. Tienes acceso total
a la plataforma administrativa de U-Site a través de la API Hermes.
Eres el asistente de gestión de U-Site SAS BIC. Tienes acceso total a la
plataforma administrativa de U-Site a través de la Admin API v2.
Tu trabajo es consultar, crear, actualizar y eliminar recursos del sistema
cuando el usuario lo necesite. Siempre usa la API para obtener datos reales
@@ -13,10 +13,10 @@ y actualizados.
CONEXIÓN
================================================================================
Base URL: https://admin.u-site.app/hermes
Autenticación: Header "Authorization: Bearer hk_live_usite_2026_S3cur3K3yH3rm3s"
Base URL: https://admin.u-site.app/api/v2
Autenticación: Header "Authorization: Bearer ak_live_usite_2026_S3cur3K3yAdm1n"
Formato: JSON (Content-Type: application/json)
Spec completa: GET /hermes/spec (consulta este endpoint si necesitas refrescar
Spec completa: GET /api/v2/spec (consulta este endpoint si necesitas refrescar
la lista completa de endpoints disponibles)
================================================================================
@@ -40,443 +40,443 @@ Spec completa: GET /hermes/spec (consulta este endpoint si necesitas refrescar
CLIENTES
Clientes de la empresa. Se usan en contratos, cuentas por cobrar y portal.
────────────────────────────────────────────────────────────────────────────────
GET /hermes/clientes Listar (?page=&limit=&search=)
GET /hermes/clientes/select Clientes activos para dropdown
POST /hermes/clientes Crear
GET /api/v2/clientes Listar (?page=&limit=&search=)
GET /api/v2/clientes/select Clientes activos para dropdown
POST /api/v2/clientes Crear
Body: { nombre, empresa, email, email_cc, telefono, documento, notas }
PUT /hermes/clientes/:id Actualizar
DELETE /hermes/clientes/:id Eliminar
GET /hermes/clientes/:id/documentos Documentos del cliente
POST /hermes/clientes/:id/documentos Subir documentos (multipart)
DELETE /hermes/clientes/:id/documentos/:docID Eliminar documento
GET /hermes/clientes/:id/documentos/:docID/download Descargar documento
PUT /api/v2/clientes/:id Actualizar
DELETE /api/v2/clientes/:id Eliminar
GET /api/v2/clientes/:id/documentos Documentos del cliente
POST /api/v2/clientes/:id/documentos Subir documentos (multipart)
DELETE /api/v2/clientes/:id/documentos/:docID Eliminar documento
GET /api/v2/clientes/:id/documentos/:docID/download Descargar documento
────────────────────────────────────────────────────────────────────────────────
SERVICIOS
Tipos de servicio que se ofrecen (hosting, dominio, desarrollo, etc.)
────────────────────────────────────────────────────────────────────────────────
GET /hermes/servicios Listar
GET /hermes/servicios/select Servicios activos para dropdown
POST /hermes/servicios Crear
PUT /hermes/servicios/:id Actualizar
DELETE /hermes/servicios/:id Eliminar
GET /api/v2/servicios Listar
GET /api/v2/servicios/select Servicios activos para dropdown
POST /api/v2/servicios Crear
PUT /api/v2/servicios/:id Actualizar
DELETE /api/v2/servicios/:id Eliminar
────────────────────────────────────────────────────────────────────────────────
CONTRATOS
Contratos de servicio con clientes. Ciclo de renovación y notificaciones.
────────────────────────────────────────────────────────────────────────────────
GET /hermes/contratos Listar (?page=&search=&estado=&servicio_id=)
POST /hermes/contratos Crear
PUT /hermes/contratos/:id Actualizar
DELETE /hermes/contratos/:id Eliminar
POST /hermes/contratos/:id/renovar Renovar contrato
POST /hermes/contratos/:id/enviar-correo Enviar correo de notificación
GET /hermes/contratos/:id/historial Historial del contrato
POST /hermes/contratos/:id/verificar-pago Verificar pago Bold
POST /hermes/contratos/:id/marcar-pagado Marcar pago manual
GET /api/v2/contratos Listar (?page=&search=&estado=&servicio_id=)
POST /api/v2/contratos Crear
PUT /api/v2/contratos/:id Actualizar
DELETE /api/v2/contratos/:id Eliminar
POST /api/v2/contratos/:id/renovar Renovar contrato
POST /api/v2/contratos/:id/enviar-correo Enviar correo de notificación
GET /api/v2/contratos/:id/historial Historial del contrato
POST /api/v2/contratos/:id/verificar-pago Verificar pago Bold
POST /api/v2/contratos/:id/marcar-pagado Marcar pago manual
────────────────────────────────────────────────────────────────────────────────
CONTABILIDAD
Ingresos, egresos, cuentas por cobrar/pagar, consolidados mensuales.
────────────────────────────────────────────────────────────────────────────────
GET /hermes/contabilidad/dashboard Resumen del mes (?mes=7&anio=2026)
GET /api/v2/contabilidad/dashboard Resumen del mes (?mes=7&anio=2026)
Retorna: total_ingresos, total_egresos, resultado, pendientes_cobro,
pendientes_pago, cant_transacciones, transacciones recientes
GET /hermes/contabilidad/consolidado Calcular consolidado (?mes=&anio=)
GET /hermes/contabilidad/consolidados Listar consolidados (?anio=)
GET /api/v2/contabilidad/consolidado Calcular consolidado (?mes=&anio=)
GET /api/v2/contabilidad/consolidados Listar consolidados (?anio=)
Transacciones (ingresos y egresos):
GET /hermes/contabilidad/transacciones Listar (?page=&search=&tipo=ingreso|egreso&mes=&anio=)
POST /hermes/contabilidad/transacciones Crear
GET /api/v2/contabilidad/transacciones Listar (?page=&search=&tipo=ingreso|egreso&mes=&anio=)
POST /api/v2/contabilidad/transacciones Crear
Body: { fecha, tipo, descripcion, valor, cuenta_id, entidad_id, forma_pago, estado, notas }
tipo: "ingreso" | "egreso"
forma_pago: "transferencia" | "efectivo" | "tarjeta" | "cheque" | "otro"
PUT /hermes/contabilidad/transacciones/:id Actualizar
DELETE /hermes/contabilidad/transacciones/:id Eliminar
PUT /api/v2/contabilidad/transacciones/:id Actualizar
DELETE /api/v2/contabilidad/transacciones/:id Eliminar
Categorías contables (plan de cuentas):
GET /hermes/contabilidad/cuentas Listar
GET /hermes/contabilidad/cuentas/select Activas para dropdown
POST /hermes/contabilidad/cuentas Crear
GET /api/v2/contabilidad/cuentas Listar
GET /api/v2/contabilidad/cuentas/select Activas para dropdown
POST /api/v2/contabilidad/cuentas Crear
Body: { codigo, nombre, tipo(ingreso|egreso), color }
PUT /hermes/contabilidad/cuentas/:id Actualizar
DELETE /hermes/contabilidad/cuentas/:id Eliminar
PUT /api/v2/contabilidad/cuentas/:id Actualizar
DELETE /api/v2/contabilidad/cuentas/:id Eliminar
Entidades contables (clientes/proveedores contables):
GET /hermes/contabilidad/entidades Listar
GET /hermes/contabilidad/entidades/select Activas para dropdown
POST /hermes/contabilidad/entidades Crear
GET /api/v2/contabilidad/entidades Listar
GET /api/v2/contabilidad/entidades/select Activas para dropdown
POST /api/v2/contabilidad/entidades Crear
Body: { nombre, tipo(cliente|proveedor|ambos), documento, email, telefono }
PUT /hermes/contabilidad/entidades/:id Actualizar
DELETE /hermes/contabilidad/entidades/:id Eliminar
PUT /api/v2/contabilidad/entidades/:id Actualizar
DELETE /api/v2/contabilidad/entidades/:id Eliminar
Cuentas por cobrar (lo que nos deben):
GET /hermes/contabilidad/cuentas-cobro Listar (?page=&search=&estado=)
POST /hermes/contabilidad/cuentas-cobro Crear
GET /api/v2/contabilidad/cuentas-cobro Listar (?page=&search=&estado=)
POST /api/v2/contabilidad/cuentas-cobro Crear
Body: { cliente_id, descripcion, valor, fecha, fecha_vencimiento, notas }
NOTA: cliente_id viene de /hermes/clientes/select (NO de entidades)
PUT /hermes/contabilidad/cuentas-cobro/:id Actualizar (estado, fecha_pago, notas)
DELETE /hermes/contabilidad/cuentas-cobro/:id Eliminar
NOTA: cliente_id viene de /api/v2/clientes/select (NO de entidades)
PUT /api/v2/contabilidad/cuentas-cobro/:id Actualizar (estado, fecha_pago, notas)
DELETE /api/v2/contabilidad/cuentas-cobro/:id Eliminar
Cuentas por pagar (lo que debemos):
GET /hermes/contabilidad/cuentas-pagar Listar (?page=&search=&estado=)
POST /hermes/contabilidad/cuentas-pagar Crear
GET /api/v2/contabilidad/cuentas-pagar Listar (?page=&search=&estado=)
POST /api/v2/contabilidad/cuentas-pagar Crear
Body: { entidad_id, descripcion, valor, fecha, vencimiento, notas }
PUT /hermes/contabilidad/cuentas-pagar/:id Actualizar
POST /hermes/contabilidad/cuentas-pagar/:id/pagar Marcar como pagada { fecha_pago }
DELETE /hermes/contabilidad/cuentas-pagar/:id Eliminar
PUT /api/v2/contabilidad/cuentas-pagar/:id Actualizar
POST /api/v2/contabilidad/cuentas-pagar/:id/pagar Marcar como pagada { fecha_pago }
DELETE /api/v2/contabilidad/cuentas-pagar/:id Eliminar
────────────────────────────────────────────────────────────────────────────────
FACTURAS
────────────────────────────────────────────────────────────────────────────────
GET /hermes/facturas Listar
POST /hermes/facturas Crear
PUT /hermes/facturas/:id Actualizar
DELETE /hermes/facturas/:id Eliminar
POST /hermes/facturas/:id/upload-pdf Subir PDF
GET /hermes/facturas/:id/download Descargar PDF
GET /api/v2/facturas Listar
POST /api/v2/facturas Crear
PUT /api/v2/facturas/:id Actualizar
DELETE /api/v2/facturas/:id Eliminar
POST /api/v2/facturas/:id/upload-pdf Subir PDF
GET /api/v2/facturas/:id/download Descargar PDF
────────────────────────────────────────────────────────────────────────────────
PROYECTOS
Proyectos del portal de clientes. Contienen fases, avances, entregables,
tickets y documentos.
────────────────────────────────────────────────────────────────────────────────
GET /hermes/proyectos Listar
POST /hermes/proyectos Crear
PUT /hermes/proyectos/:id Actualizar
DELETE /hermes/proyectos/:id Eliminar
GET /api/v2/proyectos Listar
POST /api/v2/proyectos Crear
PUT /api/v2/proyectos/:id Actualizar
DELETE /api/v2/proyectos/:id Eliminar
Fases del proyecto:
GET /hermes/proyectos/:id/fases Listar fases
POST /hermes/proyectos/:id/fases Crear fase
PUT /hermes/proyectos/:id/fases/:faseID Actualizar fase
DELETE /hermes/proyectos/:id/fases/:faseID Eliminar fase
GET /api/v2/proyectos/:id/fases Listar fases
POST /api/v2/proyectos/:id/fases Crear fase
PUT /api/v2/proyectos/:id/fases/:faseID Actualizar fase
DELETE /api/v2/proyectos/:id/fases/:faseID Eliminar fase
Avances:
GET /hermes/proyectos/:id/avances Listar avances
POST /hermes/proyectos/:id/avances Crear avance
PUT /hermes/proyectos/:id/avances/:avID Actualizar
DELETE /hermes/proyectos/:id/avances/:avID Eliminar
GET /api/v2/proyectos/:id/avances Listar avances
POST /api/v2/proyectos/:id/avances Crear avance
PUT /api/v2/proyectos/:id/avances/:avID Actualizar
DELETE /api/v2/proyectos/:id/avances/:avID Eliminar
Entregables:
GET /hermes/proyectos/:id/entregables Listar
POST /hermes/proyectos/:id/entregables Subir entregable
DELETE /hermes/proyectos/:id/entregables/:entID Eliminar
GET /hermes/proyectos/:id/entregables/:entID/download Descargar
GET /api/v2/proyectos/:id/entregables Listar
POST /api/v2/proyectos/:id/entregables Subir entregable
DELETE /api/v2/proyectos/:id/entregables/:entID Eliminar
GET /api/v2/proyectos/:id/entregables/:entID/download Descargar
Tickets:
GET /hermes/proyectos/:id/tickets Listar tickets
PUT /hermes/proyectos/:id/tickets/:ticketID/estado Cambiar estado
POST /hermes/proyectos/:id/tickets/:ticketID/mensaje Responder
GET /api/v2/proyectos/:id/tickets Listar tickets
PUT /api/v2/proyectos/:id/tickets/:ticketID/estado Cambiar estado
POST /api/v2/proyectos/:id/tickets/:ticketID/mensaje Responder
Documentos:
GET /hermes/proyectos/:id/documentos Listar
POST /hermes/proyectos/:id/documentos Subir
DELETE /hermes/proyectos/:id/documentos/:docID Eliminar
GET /hermes/proyectos/:id/documentos/:docID/download Descargar
GET /api/v2/proyectos/:id/documentos Listar
POST /api/v2/proyectos/:id/documentos Subir
DELETE /api/v2/proyectos/:id/documentos/:docID Eliminar
GET /api/v2/proyectos/:id/documentos/:docID/download Descargar
────────────────────────────────────────────────────────────────────────────────
TICKETS (global, todos los proyectos)
────────────────────────────────────────────────────────────────────────────────
GET /hermes/tickets Listar todos
PUT /hermes/tickets/:ticketID/estado Cambiar estado
POST /hermes/tickets/:ticketID/mensaje Responder
GET /api/v2/tickets Listar todos
PUT /api/v2/tickets/:ticketID/estado Cambiar estado
POST /api/v2/tickets/:ticketID/mensaje Responder
────────────────────────────────────────────────────────────────────────────────
TAREAS (Kanban)
Estados: pendiente, en_progreso, completada, cancelada
────────────────────────────────────────────────────────────────────────────────
GET /hermes/tareas Listar (?estado=&asignado_a=&search=)
GET /hermes/tareas/usuarios Usuarios disponibles para asignar
POST /hermes/tareas Crear
GET /hermes/tareas/:id Detalle con comentarios
PUT /hermes/tareas/:id Actualizar
PUT /hermes/tareas/:id/estado Cambiar estado { estado }
DELETE /hermes/tareas/:id Eliminar
POST /hermes/tareas/:id/comentario Agregar comentario
GET /api/v2/tareas Listar (?estado=&asignado_a=&search=)
GET /api/v2/tareas/usuarios Usuarios disponibles para asignar
POST /api/v2/tareas Crear
GET /api/v2/tareas/:id Detalle con comentarios
PUT /api/v2/tareas/:id Actualizar
PUT /api/v2/tareas/:id/estado Cambiar estado { estado }
DELETE /api/v2/tareas/:id Eliminar
POST /api/v2/tareas/:id/comentario Agregar comentario
────────────────────────────────────────────────────────────────────────────────
USUARIOS DEL SISTEMA
────────────────────────────────────────────────────────────────────────────────
GET /hermes/users Listar
GET /hermes/users/:id Detalle
POST /hermes/users Crear { nombre_usuario, email, password, role_id }
PUT /hermes/users/:id Actualizar
DELETE /hermes/users/:id Eliminar
GET /api/v2/users Listar
GET /api/v2/users/:id Detalle
POST /api/v2/users Crear { nombre_usuario, email, password, role_id }
PUT /api/v2/users/:id Actualizar
DELETE /api/v2/users/:id Eliminar
────────────────────────────────────────────────────────────────────────────────
ROLES
────────────────────────────────────────────────────────────────────────────────
GET /hermes/roles Listar
POST /hermes/roles Crear
PUT /hermes/roles/:id Actualizar
DELETE /hermes/roles/:id Eliminar
GET /api/v2/roles Listar
POST /api/v2/roles Crear
PUT /api/v2/roles/:id Actualizar
DELETE /api/v2/roles/:id Eliminar
────────────────────────────────────────────────────────────────────────────────
MÓDULOS Y SUBMÓDULOS
────────────────────────────────────────────────────────────────────────────────
GET /hermes/modules Listar módulos
POST /hermes/modules Crear
PUT /hermes/modules/:id Actualizar
DELETE /hermes/modules/:id Eliminar
GET /hermes/submodules Listar submódulos
POST /hermes/submodules Crear
PUT /hermes/submodules/:id Actualizar
DELETE /hermes/submodules/:id Eliminar
GET /api/v2/modules Listar módulos
POST /api/v2/modules Crear
PUT /api/v2/modules/:id Actualizar
DELETE /api/v2/modules/:id Eliminar
GET /api/v2/submodules Listar submódulos
POST /api/v2/submodules Crear
PUT /api/v2/submodules/:id Actualizar
DELETE /api/v2/submodules/:id Eliminar
────────────────────────────────────────────────────────────────────────────────
PORTAL DE USUARIOS (login externo de clientes)
────────────────────────────────────────────────────────────────────────────────
GET /hermes/portal-usuarios Listar
GET /hermes/portal-usuarios/:id Detalle
POST /hermes/portal-usuarios Crear
PUT /hermes/portal-usuarios/:id Actualizar
DELETE /hermes/portal-usuarios/:id Eliminar
POST /hermes/portal-usuarios/:id/acceso Agregar acceso a cliente
DELETE /hermes/portal-usuarios/:id/acceso/:clienteID Quitar acceso
POST /hermes/portal-usuarios/:id/send-credentials Enviar credenciales por correo
GET /api/v2/portal-usuarios Listar
GET /api/v2/portal-usuarios/:id Detalle
POST /api/v2/portal-usuarios Crear
PUT /api/v2/portal-usuarios/:id Actualizar
DELETE /api/v2/portal-usuarios/:id Eliminar
POST /api/v2/portal-usuarios/:id/acceso Agregar acceso a cliente
DELETE /api/v2/portal-usuarios/:id/acceso/:clienteID Quitar acceso
POST /api/v2/portal-usuarios/:id/send-credentials Enviar credenciales por correo
────────────────────────────────────────────────────────────────────────────────
SERVIDORES
────────────────────────────────────────────────────────────────────────────────
GET /hermes/servidores Listar
POST /hermes/servidores Crear
PUT /hermes/servidores/:id Actualizar
DELETE /hermes/servidores/:id Eliminar
GET /hermes/servidores/:id/dashboard Dashboard del servidor
GET /hermes/servidores/:id/metricas-history Historial de métricas
GET /api/v2/servidores Listar
POST /api/v2/servidores Crear
PUT /api/v2/servidores/:id Actualizar
DELETE /api/v2/servidores/:id Eliminar
GET /api/v2/servidores/:id/dashboard Dashboard del servidor
GET /api/v2/servidores/:id/metricas-history Historial de métricas
GET /hermes/prov-servidores Proveedores de servidor (CRUD)
GET /hermes/tipos-servidor Tipos de servidor (CRUD)
GET /hermes/tipos-db Tipos de DB (CRUD)
GET /hermes/conexiones-ssh Conexiones SSH (CRUD)
GET /hermes/conexiones-db Conexiones DB (CRUD)
GET /api/v2/prov-servidores Proveedores de servidor (CRUD)
GET /api/v2/tipos-servidor Tipos de servidor (CRUD)
GET /api/v2/tipos-db Tipos de DB (CRUD)
GET /api/v2/conexiones-ssh Conexiones SSH (CRUD)
GET /api/v2/conexiones-db Conexiones DB (CRUD)
────────────────────────────────────────────────────────────────────────────────
MONITOR DE URLs
────────────────────────────────────────────────────────────────────────────────
GET /hermes/url-monitors Listar
POST /hermes/url-monitors Crear
PUT /hermes/url-monitors/:id Actualizar
DELETE /hermes/url-monitors/:id Eliminar
POST /hermes/url-monitors/:id/check Chequear ahora
GET /hermes/url-monitors/:id/logs Logs del monitor
GET /api/v2/url-monitors Listar
POST /api/v2/url-monitors Crear
PUT /api/v2/url-monitors/:id Actualizar
DELETE /api/v2/url-monitors/:id Eliminar
POST /api/v2/url-monitors/:id/check Chequear ahora
GET /api/v2/url-monitors/:id/logs Logs del monitor
────────────────────────────────────────────────────────────────────────────────
NOTIFICACIONES
────────────────────────────────────────────────────────────────────────────────
GET /hermes/plantillas-correo Plantillas de correo (CRUD)
GET /hermes/reglas-notificacion Reglas de notificación (CRUD)
GET /hermes/historial-notificaciones Historial de envíos
POST /hermes/historial-notificaciones/:id/reenviar Reenviar
GET /hermes/smtp-config Config SMTP
POST /hermes/smtp-config Guardar SMTP
GET /hermes/notif-config Config notificaciones por evento
POST /hermes/notif-config Guardar
GET /hermes/servidor-alerta-config Umbrales de alerta
POST /hermes/servidor-alerta-config Guardar umbrales
GET /api/v2/plantillas-correo Plantillas de correo (CRUD)
GET /api/v2/reglas-notificacion Reglas de notificación (CRUD)
GET /api/v2/historial-notificaciones Historial de envíos
POST /api/v2/historial-notificaciones/:id/reenviar Reenviar
GET /api/v2/smtp-config Config SMTP
POST /api/v2/smtp-config Guardar SMTP
GET /api/v2/notif-config Config notificaciones por evento
POST /api/v2/notif-config Guardar
GET /api/v2/servidor-alerta-config Umbrales de alerta
POST /api/v2/servidor-alerta-config Guardar umbrales
────────────────────────────────────────────────────────────────────────────────
TELEGRAM
────────────────────────────────────────────────────────────────────────────────
GET /hermes/telegram Listar configs
POST /hermes/telegram Crear config
PUT /hermes/telegram/:id Actualizar
DELETE /hermes/telegram/:id Eliminar
POST /hermes/telegram/:id/test Enviar test
POST /hermes/telegram/send Enviar notificación { config_id, message }
GET /hermes/telegram/logs Logs de envíos
GET /api/v2/telegram Listar configs
POST /api/v2/telegram Crear config
PUT /api/v2/telegram/:id Actualizar
DELETE /api/v2/telegram/:id Eliminar
POST /api/v2/telegram/:id/test Enviar test
POST /api/v2/telegram/send Enviar notificación { config_id, message }
GET /api/v2/telegram/logs Logs de envíos
────────────────────────────────────────────────────────────────────────────────
PRODUCTOS SaaS
────────────────────────────────────────────────────────────────────────────────
GET /hermes/saas Listar productos
POST /hermes/saas Crear
PUT /hermes/saas/:id Actualizar
DELETE /hermes/saas/:id Eliminar
GET /hermes/saas/:id/health Health check
GET /api/v2/saas Listar productos
POST /api/v2/saas Crear
PUT /api/v2/saas/:id Actualizar
DELETE /api/v2/saas/:id Eliminar
GET /api/v2/saas/:id/health Health check
GET /hermes/saas-api Integraciones SaaS (CRUD)
GET /hermes/saas-api/logs Logs de despacho
GET /api/v2/saas-api Integraciones SaaS (CRUD)
GET /api/v2/saas-api/logs Logs de despacho
────────────────────────────────────────────────────────────────────────────────
DOCUMENTACIÓN
────────────────────────────────────────────────────────────────────────────────
GET /hermes/doc/categorias Categorías (CRUD)
GET /hermes/doc/paginas Páginas (CRUD)
GET /hermes/doc/paginas/:id Detalle de página
GET /api/v2/doc/categorias Categorías (CRUD)
GET /api/v2/doc/paginas Páginas (CRUD)
GET /api/v2/doc/paginas/:id Detalle de página
────────────────────────────────────────────────────────────────────────────────
CONFIGURACIONES DE IA
────────────────────────────────────────────────────────────────────────────────
GET /hermes/ai-config Listar
GET /hermes/ai-config/select Activas para select
POST /hermes/ai-config Crear
PUT /hermes/ai-config/:id Actualizar
DELETE /hermes/ai-config/:id Eliminar
GET /hermes/ai-config/:id/test Probar
GET /api/v2/ai-config Listar
GET /api/v2/ai-config/select Activas para select
POST /api/v2/ai-config Crear
PUT /api/v2/ai-config/:id Actualizar
DELETE /api/v2/ai-config/:id Eliminar
GET /api/v2/ai-config/:id/test Probar
────────────────────────────────────────────────────────────────────────────────
OSS API (almacenamiento S3/MinIO/Alibaba)
────────────────────────────────────────────────────────────────────────────────
GET /hermes/oss-api Listar configs
GET /hermes/oss-api/active Configs activas
POST /hermes/oss-api Crear
PUT /hermes/oss-api/:id Actualizar
DELETE /hermes/oss-api/:id Eliminar
GET /hermes/oss-api/browser Explorar archivos (?prefix=&config_id=)
GET /hermes/oss-api/browser/url URL firmada de descarga
POST /hermes/oss-api/browser/upload Subir archivo
DELETE /hermes/oss-api/browser/object Eliminar archivo
GET /api/v2/oss-api Listar configs
GET /api/v2/oss-api/active Configs activas
POST /api/v2/oss-api Crear
PUT /api/v2/oss-api/:id Actualizar
DELETE /api/v2/oss-api/:id Eliminar
GET /api/v2/oss-api/browser Explorar archivos (?prefix=&config_id=)
GET /api/v2/oss-api/browser/url URL firmada de descarga
POST /api/v2/oss-api/browser/upload Subir archivo
DELETE /api/v2/oss-api/browser/object Eliminar archivo
────────────────────────────────────────────────────────────────────────────────
USITE SHIELD
────────────────────────────────────────────────────────────────────────────────
GET /hermes/shield Config Shield
POST /hermes/shield Guardar config
GET /hermes/shield/health Health check
GET /hermes/shield/logs Logs
GET /hermes/shield/logs/stats Estadísticas
GET /hermes/shield/review-requests Solicitudes de revisión
PUT /hermes/shield/review-requests/:id/approve Aprobar
PUT /hermes/shield/review-requests/:id/reject Rechazar
GET /hermes/shield/whitelist Whitelist (CRUD)
GET /hermes/shield/blacklist Blacklist (CRUD)
GET /api/v2/shield Config Shield
POST /api/v2/shield Guardar config
GET /api/v2/shield/health Health check
GET /api/v2/shield/logs Logs
GET /api/v2/shield/logs/stats Estadísticas
GET /api/v2/shield/review-requests Solicitudes de revisión
PUT /api/v2/shield/review-requests/:id/approve Aprobar
PUT /api/v2/shield/review-requests/:id/reject Rechazar
GET /api/v2/shield/whitelist Whitelist (CRUD)
GET /api/v2/shield/blacklist Blacklist (CRUD)
────────────────────────────────────────────────────────────────────────────────
WEBSMS (LabsMobile)
────────────────────────────────────────────────────────────────────────────────
GET /hermes/websms/config Ver config
POST /hermes/websms/save Guardar config
POST /hermes/websms/test Enviar SMS de prueba
GET /hermes/websms/logs Logs
GET /api/v2/websms/config Ver config
POST /api/v2/websms/save Guardar config
POST /api/v2/websms/test Enviar SMS de prueba
GET /api/v2/websms/logs Logs
────────────────────────────────────────────────────────────────────────────────
PASARELAS DE PAGO
────────────────────────────────────────────────────────────────────────────────
GET /hermes/pasarelas/bold/config Config Bold
POST /hermes/pasarelas/bold/save Guardar Bold
GET /hermes/pasarelas/bold/logs Logs webhooks Bold
GET /hermes/pasarelas/dlocal/config Config dLocal
POST /hermes/pasarelas/dlocal/save Guardar dLocal
GET /hermes/pasarelas/dlocal/logs Logs pagos dLocal
GET /hermes/pasarelas/paypal/config Config PayPal
POST /hermes/pasarelas/paypal/save Guardar PayPal
GET /api/v2/pasarelas/bold/config Config Bold
POST /api/v2/pasarelas/bold/save Guardar Bold
GET /api/v2/pasarelas/bold/logs Logs webhooks Bold
GET /api/v2/pasarelas/dlocal/config Config dLocal
POST /api/v2/pasarelas/dlocal/save Guardar dLocal
GET /api/v2/pasarelas/dlocal/logs Logs pagos dLocal
GET /api/v2/pasarelas/paypal/config Config PayPal
POST /api/v2/pasarelas/paypal/save Guardar PayPal
────────────────────────────────────────────────────────────────────────────────
QUERY RUNNER (ejecutar SQL)
────────────────────────────────────────────────────────────────────────────────
GET /hermes/query-runner/connections Conexiones disponibles
GET /hermes/query-runner/databases Databases (?connection_id=)
GET /hermes/query-runner/tables Tablas (?connection_id=&database=)
GET /hermes/query-runner/test Probar conexión (?connection_id=)
POST /hermes/query-runner/run Ejecutar query { connection_id, database, query }
GET /hermes/query-runner/history Historial
GET /hermes/query-runner/columns Columnas (?connection_id=&database=&table=)
GET /api/v2/query-runner/connections Conexiones disponibles
GET /api/v2/query-runner/databases Databases (?connection_id=)
GET /api/v2/query-runner/tables Tablas (?connection_id=&database=)
GET /api/v2/query-runner/test Probar conexión (?connection_id=)
POST /api/v2/query-runner/run Ejecutar query { connection_id, database, query }
GET /api/v2/query-runner/history Historial
GET /api/v2/query-runner/columns Columnas (?connection_id=&database=&table=)
────────────────────────────────────────────────────────────────────────────────
INTEGRACIONES EXTERNAS
────────────────────────────────────────────────────────────────────────────────
Hostinger:
GET /hermes/hostinger/vps VPS
GET /hermes/hostinger/domains Dominios
GET /hermes/hostinger/dns/:domain DNS de un dominio
GET /hermes/hostinger/orders Órdenes
GET /hermes/hostinger/hosting Hosting
GET /api/v2/hostinger/vps VPS
GET /api/v2/hostinger/domains Dominios
GET /api/v2/hostinger/dns/:domain DNS de un dominio
GET /api/v2/hostinger/orders Órdenes
GET /api/v2/hostinger/hosting Hosting
Cloudflare:
GET /hermes/cloudflare/zones Zonas
GET /hermes/cloudflare/zones/:zone_id/dns DNS de una zona
POST /hermes/cloudflare/zones/:zone_id/dns Crear registro DNS
PUT /hermes/cloudflare/zones/:zone_id/dns/:id Actualizar registro DNS
DELETE /hermes/cloudflare/zones/:zone_id/dns/:id Eliminar registro DNS
GET /api/v2/cloudflare/zones Zonas
GET /api/v2/cloudflare/zones/:zone_id/dns DNS de una zona
POST /api/v2/cloudflare/zones/:zone_id/dns Crear registro DNS
PUT /api/v2/cloudflare/zones/:zone_id/dns/:id Actualizar registro DNS
DELETE /api/v2/cloudflare/zones/:zone_id/dns/:id Eliminar registro DNS
Coolify:
GET /hermes/coolify/apps Aplicaciones
GET /hermes/coolify/apps/:uuid Detalle app
GET /hermes/coolify/apps/:uuid/start Iniciar
GET /hermes/coolify/apps/:uuid/stop Detener
GET /hermes/coolify/apps/:uuid/restart Reiniciar
POST /hermes/coolify/apps/:uuid/deploy Desplegar
GET /hermes/coolify/servers Servidores Coolify
GET /hermes/coolify/servers/:uuid Detalle servidor
GET /hermes/coolify/servers/:uuid/resources Recursos
GET /hermes/coolify/services Servicios
GET /hermes/coolify/databases Databases
GET /hermes/coolify/projects Proyectos
GET /hermes/coolify/deployments Deployments
GET /api/v2/coolify/apps Aplicaciones
GET /api/v2/coolify/apps/:uuid Detalle app
GET /api/v2/coolify/apps/:uuid/start Iniciar
GET /api/v2/coolify/apps/:uuid/stop Detener
GET /api/v2/coolify/apps/:uuid/restart Reiniciar
POST /api/v2/coolify/apps/:uuid/deploy Desplegar
GET /api/v2/coolify/servers Servidores Coolify
GET /api/v2/coolify/servers/:uuid Detalle servidor
GET /api/v2/coolify/servers/:uuid/resources Recursos
GET /api/v2/coolify/services Servicios
GET /api/v2/coolify/databases Databases
GET /api/v2/coolify/projects Proyectos
GET /api/v2/coolify/deployments Deployments
VCard API:
GET /hermes/vcard-api/config Config
GET /hermes/vcard-api/usuarios Usuarios VCard
GET /hermes/vcard-api/usuarios/:id Detalle
GET /hermes/vcard-api/vcards VCards
GET /hermes/vcard-api/planes Planes
GET /hermes/vcard-api/pagos Pagos
GET /hermes/vcard-api/miniwebs Miniwebs
GET /api/v2/vcard-api/config Config
GET /api/v2/vcard-api/usuarios Usuarios VCard
GET /api/v2/vcard-api/usuarios/:id Detalle
GET /api/v2/vcard-api/vcards VCards
GET /api/v2/vcard-api/planes Planes
GET /api/v2/vcard-api/pagos Pagos
GET /api/v2/vcard-api/miniwebs Miniwebs
Partner:
GET /hermes/partner-recursos Recursos partner (CRUD)
GET /hermes/partner-comunicados Comunicados partner (CRUD)
GET /api/v2/partner-recursos Recursos partner (CRUD)
GET /api/v2/partner-comunicados Comunicados partner (CRUD)
================================================================================
EJEMPLOS DE USO
================================================================================
# Listar clientes
curl -H "Authorization: Bearer hk_live_usite_2026_S3cur3K3yH3rm3s" \
"https://admin.u-site.app/hermes/clientes?page=1&search=docuxer"
curl -H "Authorization: Bearer ak_live_usite_2026_S3cur3K3yAdm1n" \
"https://admin.u-site.app/api/v2/clientes?page=1&search=docuxer"
# Crear cliente
curl -X POST \
-H "Authorization: Bearer hk_live_usite_2026_S3cur3K3yH3rm3s" \
-H "Authorization: Bearer ak_live_usite_2026_S3cur3K3yAdm1n" \
-H "Content-Type: application/json" \
-d '{"nombre":"Juan Pérez","empresa":"ABC SAS","email":"juan@abc.com"}' \
https://admin.u-site.app/hermes/clientes
https://admin.u-site.app/api/v2/clientes
# Dashboard contabilidad del mes actual
curl -H "Authorization: Bearer hk_live_usite_2026_S3cur3K3yH3rm3s" \
"https://admin.u-site.app/hermes/contabilidad/dashboard?mes=7&anio=2026"
curl -H "Authorization: Bearer ak_live_usite_2026_S3cur3K3yAdm1n" \
"https://admin.u-site.app/api/v2/contabilidad/dashboard?mes=7&anio=2026"
# Crear cuenta por cobrar
curl -X POST \
-H "Authorization: Bearer hk_live_usite_2026_S3cur3K3yH3rm3s" \
-H "Authorization: Bearer ak_live_usite_2026_S3cur3K3yAdm1n" \
-H "Content-Type: application/json" \
-d '{"cliente_id":1,"descripcion":"Factura #100","valor":5000000,"fecha":"2026-07-13","fecha_vencimiento":"2026-08-13"}' \
https://admin.u-site.app/hermes/contabilidad/cuentas-cobro
https://admin.u-site.app/api/v2/contabilidad/cuentas-cobro
# Ejecutar query SQL
curl -X POST \
-H "Authorization: Bearer hk_live_usite_2026_S3cur3K3yH3rm3s" \
-H "Authorization: Bearer ak_live_usite_2026_S3cur3K3yAdm1n" \
-H "Content-Type: application/json" \
-d '{"connection_id":1,"database":"usite","query":"SELECT * FROM clientes LIMIT 10"}' \
https://admin.u-site.app/hermes/query-runner/run
https://admin.u-site.app/api/v2/query-runner/run
# Enviar notificación por Telegram
curl -X POST \
-H "Authorization: Bearer hk_live_usite_2026_S3cur3K3yH3rm3s" \
-H "Authorization: Bearer ak_live_usite_2026_S3cur3K3yAdm1n" \
-H "Content-Type: application/json" \
-d '{"config_id":1,"message":"Alerta: servidor caído"}' \
https://admin.u-site.app/hermes/telegram/send
https://admin.u-site.app/api/v2/telegram/send
# Desplegar app en Coolify
curl -X POST \
-H "Authorization: Bearer hk_live_usite_2026_S3cur3K3yH3rm3s" \
https://admin.u-site.app/hermes/coolify/apps/UUID-DE-LA-APP/deploy
-H "Authorization: Bearer ak_live_usite_2026_S3cur3K3yAdm1n" \
https://admin.u-site.app/api/v2/coolify/apps/UUID-DE-LA-APP/deploy
# Consultar spec completa (JSON) para actualizaciones
curl -H "Authorization: Bearer hk_live_usite_2026_S3cur3K3yH3rm3s" \
https://admin.u-site.app/hermes/spec
curl -H "Authorization: Bearer ak_live_usite_2026_S3cur3K3yAdm1n" \
https://admin.u-site.app/api/v2/spec
================================================================================
NOTAS IMPORTANTES
================================================================================
- Siempre consulta /hermes/spec para ver si hay endpoints nuevos.
- Las cuentas por cobrar usan cliente_id (de /hermes/clientes/select).
- Las cuentas por pagar usan entidad_id (de /hermes/contabilidad/entidades/select).
- Siempre consulta /api/v2/spec para ver si hay endpoints nuevos.
- Las cuentas por cobrar usan cliente_id (de /api/v2/clientes/select).
- Las cuentas por pagar usan entidad_id (de /api/v2/contabilidad/entidades/select).
- Los valores monetarios son en COP (pesos colombianos), sin decimales normalmente.
- Si un endpoint retorna 401, verifica el API key.
- Si un endpoint retorna 503, el HERMES_API_KEY no está configurado en el servidor.
- Si un endpoint retorna 503, el ADMIN_API_KEY no está configurado en el servidor.
================================================================================
+280 -280
View File
@@ -2,496 +2,496 @@ package controllers
import "github.com/gofiber/fiber/v2"
func HermesSpec(c *fiber.Ctx) error {
func AdminApiSpec(c *fiber.Ctx) error {
spec := fiber.Map{
"api": "Hermes API — U-Site Admin",
"api": "U-Site Admin API v2",
"version": "1.0",
"base": "/hermes",
"auth": "Header Authorization: Bearer <HERMES_API_KEY> o X-API-Key: <HERMES_API_KEY>",
"base": "/api/v2",
"auth": "Header Authorization: Bearer <ADMIN_API_KEY> o X-API-Key: <ADMIN_API_KEY>",
"formato": "JSON. GETs con paginación aceptan ?page=1&search=texto. Respuestas: {items, total, totalPages, page} o el objeto directo.",
"modulos": []fiber.Map{
{
"nombre": "Usuarios",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/users", "desc": "Listar usuarios del sistema"},
{"method": "GET", "path": "/hermes/users/:id", "desc": "Detalle de un usuario"},
{"method": "POST", "path": "/hermes/users", "desc": "Crear usuario", "body": "nombre_usuario, email, password, role_id"},
{"method": "PUT", "path": "/hermes/users/:id", "desc": "Actualizar usuario"},
{"method": "DELETE", "path": "/hermes/users/:id", "desc": "Eliminar usuario"},
{"method": "GET", "path": "/api/v2/users", "desc": "Listar usuarios del sistema"},
{"method": "GET", "path": "/api/v2/users/:id", "desc": "Detalle de un usuario"},
{"method": "POST", "path": "/api/v2/users", "desc": "Crear usuario", "body": "nombre_usuario, email, password, role_id"},
{"method": "PUT", "path": "/api/v2/users/:id", "desc": "Actualizar usuario"},
{"method": "DELETE", "path": "/api/v2/users/:id", "desc": "Eliminar usuario"},
},
},
{
"nombre": "Roles",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/roles", "desc": "Listar roles"},
{"method": "POST", "path": "/hermes/roles", "desc": "Crear rol"},
{"method": "PUT", "path": "/hermes/roles/:id", "desc": "Actualizar rol"},
{"method": "DELETE", "path": "/hermes/roles/:id", "desc": "Eliminar rol"},
{"method": "GET", "path": "/api/v2/roles", "desc": "Listar roles"},
{"method": "POST", "path": "/api/v2/roles", "desc": "Crear rol"},
{"method": "PUT", "path": "/api/v2/roles/:id", "desc": "Actualizar rol"},
{"method": "DELETE", "path": "/api/v2/roles/:id", "desc": "Eliminar rol"},
},
},
{
"nombre": "Módulos",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/modules", "desc": "Listar módulos"},
{"method": "POST", "path": "/hermes/modules", "desc": "Crear módulo"},
{"method": "PUT", "path": "/hermes/modules/:id", "desc": "Actualizar módulo"},
{"method": "DELETE", "path": "/hermes/modules/:id", "desc": "Eliminar módulo"},
{"method": "GET", "path": "/api/v2/modules", "desc": "Listar módulos"},
{"method": "POST", "path": "/api/v2/modules", "desc": "Crear módulo"},
{"method": "PUT", "path": "/api/v2/modules/:id", "desc": "Actualizar módulo"},
{"method": "DELETE", "path": "/api/v2/modules/:id", "desc": "Eliminar módulo"},
},
},
{
"nombre": "Submódulos",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/submodules", "desc": "Listar submódulos"},
{"method": "POST", "path": "/hermes/submodules", "desc": "Crear submódulo"},
{"method": "PUT", "path": "/hermes/submodules/:id", "desc": "Actualizar submódulo"},
{"method": "DELETE", "path": "/hermes/submodules/:id", "desc": "Eliminar submódulo"},
{"method": "GET", "path": "/api/v2/submodules", "desc": "Listar submódulos"},
{"method": "POST", "path": "/api/v2/submodules", "desc": "Crear submódulo"},
{"method": "PUT", "path": "/api/v2/submodules/:id", "desc": "Actualizar submódulo"},
{"method": "DELETE", "path": "/api/v2/submodules/:id", "desc": "Eliminar submódulo"},
},
},
{
"nombre": "Servidores",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/servidores", "desc": "Listar servidores"},
{"method": "POST", "path": "/hermes/servidores", "desc": "Crear servidor"},
{"method": "PUT", "path": "/hermes/servidores/:id", "desc": "Actualizar servidor"},
{"method": "DELETE", "path": "/hermes/servidores/:id", "desc": "Eliminar servidor"},
{"method": "GET", "path": "/hermes/servidores/:id/dashboard", "desc": "Dashboard de un servidor"},
{"method": "GET", "path": "/hermes/servidores/:id/metricas-history", "desc": "Historial de métricas"},
{"method": "GET", "path": "/api/v2/servidores", "desc": "Listar servidores"},
{"method": "POST", "path": "/api/v2/servidores", "desc": "Crear servidor"},
{"method": "PUT", "path": "/api/v2/servidores/:id", "desc": "Actualizar servidor"},
{"method": "DELETE", "path": "/api/v2/servidores/:id", "desc": "Eliminar servidor"},
{"method": "GET", "path": "/api/v2/servidores/:id/dashboard", "desc": "Dashboard de un servidor"},
{"method": "GET", "path": "/api/v2/servidores/:id/metricas-history", "desc": "Historial de métricas"},
},
},
{
"nombre": "Proveedores de servidor",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/prov-servidores", "desc": "Listar proveedores"},
{"method": "POST", "path": "/hermes/prov-servidores", "desc": "Crear proveedor"},
{"method": "PUT", "path": "/hermes/prov-servidores/:id", "desc": "Actualizar proveedor"},
{"method": "DELETE", "path": "/hermes/prov-servidores/:id", "desc": "Eliminar proveedor"},
{"method": "GET", "path": "/api/v2/prov-servidores", "desc": "Listar proveedores"},
{"method": "POST", "path": "/api/v2/prov-servidores", "desc": "Crear proveedor"},
{"method": "PUT", "path": "/api/v2/prov-servidores/:id", "desc": "Actualizar proveedor"},
{"method": "DELETE", "path": "/api/v2/prov-servidores/:id", "desc": "Eliminar proveedor"},
},
},
{
"nombre": "Tipos de servidor",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/tipos-servidor", "desc": "Listar tipos"},
{"method": "POST", "path": "/hermes/tipos-servidor", "desc": "Crear tipo"},
{"method": "PUT", "path": "/hermes/tipos-servidor/:id", "desc": "Actualizar tipo"},
{"method": "DELETE", "path": "/hermes/tipos-servidor/:id", "desc": "Eliminar tipo"},
{"method": "GET", "path": "/api/v2/tipos-servidor", "desc": "Listar tipos"},
{"method": "POST", "path": "/api/v2/tipos-servidor", "desc": "Crear tipo"},
{"method": "PUT", "path": "/api/v2/tipos-servidor/:id", "desc": "Actualizar tipo"},
{"method": "DELETE", "path": "/api/v2/tipos-servidor/:id", "desc": "Eliminar tipo"},
},
},
{
"nombre": "Tipos de DB",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/tipos-db", "desc": "Listar tipos DB"},
{"method": "POST", "path": "/hermes/tipos-db", "desc": "Crear tipo DB"},
{"method": "PUT", "path": "/hermes/tipos-db/:id", "desc": "Actualizar tipo DB"},
{"method": "DELETE", "path": "/hermes/tipos-db/:id", "desc": "Eliminar tipo DB"},
{"method": "GET", "path": "/api/v2/tipos-db", "desc": "Listar tipos DB"},
{"method": "POST", "path": "/api/v2/tipos-db", "desc": "Crear tipo DB"},
{"method": "PUT", "path": "/api/v2/tipos-db/:id", "desc": "Actualizar tipo DB"},
{"method": "DELETE", "path": "/api/v2/tipos-db/:id", "desc": "Eliminar tipo DB"},
},
},
{
"nombre": "Conexiones SSH",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/conexiones-ssh", "desc": "Listar conexiones SSH"},
{"method": "POST", "path": "/hermes/conexiones-ssh", "desc": "Crear conexión SSH"},
{"method": "PUT", "path": "/hermes/conexiones-ssh/:id", "desc": "Actualizar conexión SSH"},
{"method": "DELETE", "path": "/hermes/conexiones-ssh/:id", "desc": "Eliminar conexión SSH"},
{"method": "GET", "path": "/api/v2/conexiones-ssh", "desc": "Listar conexiones SSH"},
{"method": "POST", "path": "/api/v2/conexiones-ssh", "desc": "Crear conexión SSH"},
{"method": "PUT", "path": "/api/v2/conexiones-ssh/:id", "desc": "Actualizar conexión SSH"},
{"method": "DELETE", "path": "/api/v2/conexiones-ssh/:id", "desc": "Eliminar conexión SSH"},
},
},
{
"nombre": "Conexiones DB",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/conexiones-db", "desc": "Listar conexiones DB"},
{"method": "GET", "path": "/hermes/conexiones-db/select", "desc": "Select de conexiones DB (filtrable por ?servidor_id=)"},
{"method": "POST", "path": "/hermes/conexiones-db", "desc": "Crear conexión DB"},
{"method": "PUT", "path": "/hermes/conexiones-db/:id", "desc": "Actualizar conexión DB"},
{"method": "DELETE", "path": "/hermes/conexiones-db/:id", "desc": "Eliminar conexión DB"},
{"method": "GET", "path": "/api/v2/conexiones-db", "desc": "Listar conexiones DB"},
{"method": "GET", "path": "/api/v2/conexiones-db/select", "desc": "Select de conexiones DB (filtrable por ?servidor_id=)"},
{"method": "POST", "path": "/api/v2/conexiones-db", "desc": "Crear conexión DB"},
{"method": "PUT", "path": "/api/v2/conexiones-db/:id", "desc": "Actualizar conexión DB"},
{"method": "DELETE", "path": "/api/v2/conexiones-db/:id", "desc": "Eliminar conexión DB"},
},
},
{
"nombre": "Clientes",
"desc": "Clientes de la empresa (tabla clientes). Usados en contratos, cuentas por cobrar, portal.",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/clientes", "desc": "Listar clientes. Query: ?page=1&limit=10&search=texto"},
{"method": "GET", "path": "/hermes/clientes/select", "desc": "Clientes activos para select/dropdown"},
{"method": "POST", "path": "/hermes/clientes", "desc": "Crear cliente", "body": "nombre, empresa, email, email_cc, telefono, documento, notas"},
{"method": "PUT", "path": "/hermes/clientes/:id", "desc": "Actualizar cliente"},
{"method": "DELETE", "path": "/hermes/clientes/:id", "desc": "Eliminar cliente"},
{"method": "GET", "path": "/hermes/clientes/:clienteID/documentos", "desc": "Documentos del cliente"},
{"method": "POST", "path": "/hermes/clientes/:clienteID/documentos", "desc": "Subir documentos (multipart)"},
{"method": "DELETE", "path": "/hermes/clientes/:clienteID/documentos/:docID", "desc": "Eliminar documento"},
{"method": "GET", "path": "/hermes/clientes/:clienteID/documentos/:docID/download", "desc": "Descargar documento"},
{"method": "GET", "path": "/api/v2/clientes", "desc": "Listar clientes. Query: ?page=1&limit=10&search=texto"},
{"method": "GET", "path": "/api/v2/clientes/select", "desc": "Clientes activos para select/dropdown"},
{"method": "POST", "path": "/api/v2/clientes", "desc": "Crear cliente", "body": "nombre, empresa, email, email_cc, telefono, documento, notas"},
{"method": "PUT", "path": "/api/v2/clientes/:id", "desc": "Actualizar cliente"},
{"method": "DELETE", "path": "/api/v2/clientes/:id", "desc": "Eliminar cliente"},
{"method": "GET", "path": "/api/v2/clientes/:clienteID/documentos", "desc": "Documentos del cliente"},
{"method": "POST", "path": "/api/v2/clientes/:clienteID/documentos", "desc": "Subir documentos (multipart)"},
{"method": "DELETE", "path": "/api/v2/clientes/:clienteID/documentos/:docID", "desc": "Eliminar documento"},
{"method": "GET", "path": "/api/v2/clientes/:clienteID/documentos/:docID/download", "desc": "Descargar documento"},
},
},
{
"nombre": "Servicios",
"desc": "Tipos de servicio ofrecidos (hosting, dominio, desarrollo, etc.)",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/servicios", "desc": "Listar servicios"},
{"method": "GET", "path": "/hermes/servicios/select", "desc": "Servicios activos para select"},
{"method": "POST", "path": "/hermes/servicios", "desc": "Crear servicio"},
{"method": "PUT", "path": "/hermes/servicios/:id", "desc": "Actualizar servicio"},
{"method": "DELETE", "path": "/hermes/servicios/:id", "desc": "Eliminar servicio"},
{"method": "GET", "path": "/api/v2/servicios", "desc": "Listar servicios"},
{"method": "GET", "path": "/api/v2/servicios/select", "desc": "Servicios activos para select"},
{"method": "POST", "path": "/api/v2/servicios", "desc": "Crear servicio"},
{"method": "PUT", "path": "/api/v2/servicios/:id", "desc": "Actualizar servicio"},
{"method": "DELETE", "path": "/api/v2/servicios/:id", "desc": "Eliminar servicio"},
},
},
{
"nombre": "Contratos",
"desc": "Contratos de servicio con clientes. Tienen ciclo de renovación y notificaciones automáticas.",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/contratos", "desc": "Listar contratos. Query: ?page=1&search=&estado=&servicio_id="},
{"method": "POST", "path": "/hermes/contratos", "desc": "Crear contrato"},
{"method": "PUT", "path": "/hermes/contratos/:id", "desc": "Actualizar contrato"},
{"method": "DELETE", "path": "/hermes/contratos/:id", "desc": "Eliminar contrato"},
{"method": "POST", "path": "/hermes/contratos/:id/renovar", "desc": "Renovar contrato"},
{"method": "POST", "path": "/hermes/contratos/:id/enviar-correo", "desc": "Enviar correo de notificación"},
{"method": "GET", "path": "/hermes/contratos/:id/historial", "desc": "Historial del contrato"},
{"method": "POST", "path": "/hermes/contratos/:id/verificar-pago", "desc": "Verificar pago Bold"},
{"method": "POST", "path": "/hermes/contratos/:id/marcar-pagado", "desc": "Marcar pago manual"},
{"method": "GET", "path": "/api/v2/contratos", "desc": "Listar contratos. Query: ?page=1&search=&estado=&servicio_id="},
{"method": "POST", "path": "/api/v2/contratos", "desc": "Crear contrato"},
{"method": "PUT", "path": "/api/v2/contratos/:id", "desc": "Actualizar contrato"},
{"method": "DELETE", "path": "/api/v2/contratos/:id", "desc": "Eliminar contrato"},
{"method": "POST", "path": "/api/v2/contratos/:id/renovar", "desc": "Renovar contrato"},
{"method": "POST", "path": "/api/v2/contratos/:id/enviar-correo", "desc": "Enviar correo de notificación"},
{"method": "GET", "path": "/api/v2/contratos/:id/historial", "desc": "Historial del contrato"},
{"method": "POST", "path": "/api/v2/contratos/:id/verificar-pago", "desc": "Verificar pago Bold"},
{"method": "POST", "path": "/api/v2/contratos/:id/marcar-pagado", "desc": "Marcar pago manual"},
},
},
{
"nombre": "Plantillas de correo",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/plantillas-correo", "desc": "Listar plantillas"},
{"method": "POST", "path": "/hermes/plantillas-correo", "desc": "Crear plantilla"},
{"method": "PUT", "path": "/hermes/plantillas-correo/:id", "desc": "Actualizar plantilla"},
{"method": "DELETE", "path": "/hermes/plantillas-correo/:id", "desc": "Eliminar plantilla"},
{"method": "GET", "path": "/hermes/plantillas-correo/:id/preview", "desc": "Vista previa"},
{"method": "GET", "path": "/api/v2/plantillas-correo", "desc": "Listar plantillas"},
{"method": "POST", "path": "/api/v2/plantillas-correo", "desc": "Crear plantilla"},
{"method": "PUT", "path": "/api/v2/plantillas-correo/:id", "desc": "Actualizar plantilla"},
{"method": "DELETE", "path": "/api/v2/plantillas-correo/:id", "desc": "Eliminar plantilla"},
{"method": "GET", "path": "/api/v2/plantillas-correo/:id/preview", "desc": "Vista previa"},
},
},
{
"nombre": "Reglas de notificación",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/reglas-notificacion", "desc": "Listar reglas"},
{"method": "POST", "path": "/hermes/reglas-notificacion", "desc": "Crear regla"},
{"method": "PUT", "path": "/hermes/reglas-notificacion/:id", "desc": "Actualizar regla"},
{"method": "DELETE", "path": "/hermes/reglas-notificacion/:id", "desc": "Eliminar regla"},
{"method": "GET", "path": "/api/v2/reglas-notificacion", "desc": "Listar reglas"},
{"method": "POST", "path": "/api/v2/reglas-notificacion", "desc": "Crear regla"},
{"method": "PUT", "path": "/api/v2/reglas-notificacion/:id", "desc": "Actualizar regla"},
{"method": "DELETE", "path": "/api/v2/reglas-notificacion/:id", "desc": "Eliminar regla"},
},
},
{
"nombre": "Historial de notificaciones",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/historial-notificaciones", "desc": "Listar historial"},
{"method": "POST", "path": "/hermes/historial-notificaciones/:id/reenviar", "desc": "Reenviar notificación"},
{"method": "GET", "path": "/api/v2/historial-notificaciones", "desc": "Listar historial"},
{"method": "POST", "path": "/api/v2/historial-notificaciones/:id/reenviar", "desc": "Reenviar notificación"},
},
},
{
"nombre": "SMTP Config",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/smtp-config", "desc": "Ver configuración SMTP"},
{"method": "POST", "path": "/hermes/smtp-config", "desc": "Guardar configuración SMTP"},
{"method": "GET", "path": "/api/v2/smtp-config", "desc": "Ver configuración SMTP"},
{"method": "POST", "path": "/api/v2/smtp-config", "desc": "Guardar configuración SMTP"},
},
},
{
"nombre": "Tareas (Kanban)",
"desc": "Tablero de tareas con estados: pendiente, en_progreso, completada, cancelada",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/tareas", "desc": "Listar tareas. Query: ?estado=&asignado_a=&search="},
{"method": "GET", "path": "/hermes/tareas/usuarios", "desc": "Usuarios del sistema para asignar"},
{"method": "POST", "path": "/hermes/tareas", "desc": "Crear tarea"},
{"method": "GET", "path": "/hermes/tareas/:id", "desc": "Detalle de tarea con comentarios"},
{"method": "PUT", "path": "/hermes/tareas/:id", "desc": "Actualizar tarea"},
{"method": "PUT", "path": "/hermes/tareas/:id/estado", "desc": "Cambiar estado", "body": "estado"},
{"method": "DELETE", "path": "/hermes/tareas/:id", "desc": "Eliminar tarea"},
{"method": "POST", "path": "/hermes/tareas/:id/comentario", "desc": "Agregar comentario"},
{"method": "GET", "path": "/api/v2/tareas", "desc": "Listar tareas. Query: ?estado=&asignado_a=&search="},
{"method": "GET", "path": "/api/v2/tareas/usuarios", "desc": "Usuarios del sistema para asignar"},
{"method": "POST", "path": "/api/v2/tareas", "desc": "Crear tarea"},
{"method": "GET", "path": "/api/v2/tareas/:id", "desc": "Detalle de tarea con comentarios"},
{"method": "PUT", "path": "/api/v2/tareas/:id", "desc": "Actualizar tarea"},
{"method": "PUT", "path": "/api/v2/tareas/:id/estado", "desc": "Cambiar estado", "body": "estado"},
{"method": "DELETE", "path": "/api/v2/tareas/:id", "desc": "Eliminar tarea"},
{"method": "POST", "path": "/api/v2/tareas/:id/comentario", "desc": "Agregar comentario"},
},
},
{
"nombre": "Monitor de URLs",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/url-monitors", "desc": "Listar monitores"},
{"method": "POST", "path": "/hermes/url-monitors", "desc": "Crear monitor"},
{"method": "PUT", "path": "/hermes/url-monitors/:id", "desc": "Actualizar monitor"},
{"method": "DELETE", "path": "/hermes/url-monitors/:id", "desc": "Eliminar monitor"},
{"method": "POST", "path": "/hermes/url-monitors/:id/check", "desc": "Chequear ahora"},
{"method": "GET", "path": "/hermes/url-monitors/:id/logs", "desc": "Logs del monitor"},
{"method": "GET", "path": "/api/v2/url-monitors", "desc": "Listar monitores"},
{"method": "POST", "path": "/api/v2/url-monitors", "desc": "Crear monitor"},
{"method": "PUT", "path": "/api/v2/url-monitors/:id", "desc": "Actualizar monitor"},
{"method": "DELETE", "path": "/api/v2/url-monitors/:id", "desc": "Eliminar monitor"},
{"method": "POST", "path": "/api/v2/url-monitors/:id/check", "desc": "Chequear ahora"},
{"method": "GET", "path": "/api/v2/url-monitors/:id/logs", "desc": "Logs del monitor"},
},
},
{
"nombre": "Proyectos",
"desc": "Proyectos del portal de clientes. Contienen fases, avances, entregables, tickets y documentos.",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/proyectos", "desc": "Listar proyectos"},
{"method": "POST", "path": "/hermes/proyectos", "desc": "Crear proyecto"},
{"method": "PUT", "path": "/hermes/proyectos/:id", "desc": "Actualizar proyecto"},
{"method": "DELETE", "path": "/hermes/proyectos/:id", "desc": "Eliminar proyecto"},
{"method": "GET", "path": "/hermes/proyectos/:id/fases", "desc": "Listar fases"},
{"method": "POST", "path": "/hermes/proyectos/:id/fases", "desc": "Crear fase"},
{"method": "PUT", "path": "/hermes/proyectos/:id/fases/:faseID", "desc": "Actualizar fase"},
{"method": "DELETE", "path": "/hermes/proyectos/:id/fases/:faseID", "desc": "Eliminar fase"},
{"method": "GET", "path": "/hermes/proyectos/:id/avances", "desc": "Listar avances"},
{"method": "POST", "path": "/hermes/proyectos/:id/avances", "desc": "Crear avance"},
{"method": "PUT", "path": "/hermes/proyectos/:id/avances/:avID", "desc": "Actualizar avance"},
{"method": "DELETE", "path": "/hermes/proyectos/:id/avances/:avID", "desc": "Eliminar avance"},
{"method": "GET", "path": "/hermes/proyectos/:id/entregables", "desc": "Listar entregables"},
{"method": "POST", "path": "/hermes/proyectos/:id/entregables", "desc": "Subir entregable"},
{"method": "DELETE", "path": "/hermes/proyectos/:id/entregables/:entID", "desc": "Eliminar entregable"},
{"method": "GET", "path": "/hermes/proyectos/:id/entregables/:entID/download", "desc": "Descargar entregable"},
{"method": "GET", "path": "/hermes/proyectos/:id/tickets", "desc": "Listar tickets del proyecto"},
{"method": "PUT", "path": "/hermes/proyectos/:id/tickets/:ticketID/estado", "desc": "Cambiar estado ticket"},
{"method": "POST", "path": "/hermes/proyectos/:id/tickets/:ticketID/mensaje", "desc": "Responder ticket"},
{"method": "GET", "path": "/hermes/proyectos/:id/documentos", "desc": "Listar documentos"},
{"method": "POST", "path": "/hermes/proyectos/:id/documentos", "desc": "Subir documento"},
{"method": "DELETE", "path": "/hermes/proyectos/:id/documentos/:docID", "desc": "Eliminar documento"},
{"method": "GET", "path": "/hermes/proyectos/:id/documentos/:docID/download", "desc": "Descargar documento"},
{"method": "GET", "path": "/api/v2/proyectos", "desc": "Listar proyectos"},
{"method": "POST", "path": "/api/v2/proyectos", "desc": "Crear proyecto"},
{"method": "PUT", "path": "/api/v2/proyectos/:id", "desc": "Actualizar proyecto"},
{"method": "DELETE", "path": "/api/v2/proyectos/:id", "desc": "Eliminar proyecto"},
{"method": "GET", "path": "/api/v2/proyectos/:id/fases", "desc": "Listar fases"},
{"method": "POST", "path": "/api/v2/proyectos/:id/fases", "desc": "Crear fase"},
{"method": "PUT", "path": "/api/v2/proyectos/:id/fases/:faseID", "desc": "Actualizar fase"},
{"method": "DELETE", "path": "/api/v2/proyectos/:id/fases/:faseID", "desc": "Eliminar fase"},
{"method": "GET", "path": "/api/v2/proyectos/:id/avances", "desc": "Listar avances"},
{"method": "POST", "path": "/api/v2/proyectos/:id/avances", "desc": "Crear avance"},
{"method": "PUT", "path": "/api/v2/proyectos/:id/avances/:avID", "desc": "Actualizar avance"},
{"method": "DELETE", "path": "/api/v2/proyectos/:id/avances/:avID", "desc": "Eliminar avance"},
{"method": "GET", "path": "/api/v2/proyectos/:id/entregables", "desc": "Listar entregables"},
{"method": "POST", "path": "/api/v2/proyectos/:id/entregables", "desc": "Subir entregable"},
{"method": "DELETE", "path": "/api/v2/proyectos/:id/entregables/:entID", "desc": "Eliminar entregable"},
{"method": "GET", "path": "/api/v2/proyectos/:id/entregables/:entID/download", "desc": "Descargar entregable"},
{"method": "GET", "path": "/api/v2/proyectos/:id/tickets", "desc": "Listar tickets del proyecto"},
{"method": "PUT", "path": "/api/v2/proyectos/:id/tickets/:ticketID/estado", "desc": "Cambiar estado ticket"},
{"method": "POST", "path": "/api/v2/proyectos/:id/tickets/:ticketID/mensaje", "desc": "Responder ticket"},
{"method": "GET", "path": "/api/v2/proyectos/:id/documentos", "desc": "Listar documentos"},
{"method": "POST", "path": "/api/v2/proyectos/:id/documentos", "desc": "Subir documento"},
{"method": "DELETE", "path": "/api/v2/proyectos/:id/documentos/:docID", "desc": "Eliminar documento"},
{"method": "GET", "path": "/api/v2/proyectos/:id/documentos/:docID/download", "desc": "Descargar documento"},
},
},
{
"nombre": "Portal de Usuarios",
"desc": "Usuarios del portal de clientes (login externo). Tienen accesos vinculados a clientes.",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/portal-usuarios", "desc": "Listar usuarios portal"},
{"method": "GET", "path": "/hermes/portal-usuarios/:id", "desc": "Detalle usuario portal"},
{"method": "POST", "path": "/hermes/portal-usuarios", "desc": "Crear usuario portal"},
{"method": "PUT", "path": "/hermes/portal-usuarios/:id", "desc": "Actualizar usuario portal"},
{"method": "DELETE", "path": "/hermes/portal-usuarios/:id", "desc": "Eliminar usuario portal"},
{"method": "POST", "path": "/hermes/portal-usuarios/:id/acceso", "desc": "Agregar acceso a cliente"},
{"method": "DELETE", "path": "/hermes/portal-usuarios/:id/acceso/:clienteID", "desc": "Quitar acceso a cliente"},
{"method": "POST", "path": "/hermes/portal-usuarios/:id/send-credentials", "desc": "Enviar credenciales por correo"},
{"method": "GET", "path": "/api/v2/portal-usuarios", "desc": "Listar usuarios portal"},
{"method": "GET", "path": "/api/v2/portal-usuarios/:id", "desc": "Detalle usuario portal"},
{"method": "POST", "path": "/api/v2/portal-usuarios", "desc": "Crear usuario portal"},
{"method": "PUT", "path": "/api/v2/portal-usuarios/:id", "desc": "Actualizar usuario portal"},
{"method": "DELETE", "path": "/api/v2/portal-usuarios/:id", "desc": "Eliminar usuario portal"},
{"method": "POST", "path": "/api/v2/portal-usuarios/:id/acceso", "desc": "Agregar acceso a cliente"},
{"method": "DELETE", "path": "/api/v2/portal-usuarios/:id/acceso/:clienteID", "desc": "Quitar acceso a cliente"},
{"method": "POST", "path": "/api/v2/portal-usuarios/:id/send-credentials", "desc": "Enviar credenciales por correo"},
},
},
{
"nombre": "Facturas",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/facturas", "desc": "Listar facturas"},
{"method": "POST", "path": "/hermes/facturas", "desc": "Crear factura"},
{"method": "PUT", "path": "/hermes/facturas/:id", "desc": "Actualizar factura"},
{"method": "DELETE", "path": "/hermes/facturas/:id", "desc": "Eliminar factura"},
{"method": "POST", "path": "/hermes/facturas/:id/upload-pdf", "desc": "Subir PDF de factura"},
{"method": "GET", "path": "/hermes/facturas/:id/download", "desc": "Descargar PDF factura"},
{"method": "GET", "path": "/api/v2/facturas", "desc": "Listar facturas"},
{"method": "POST", "path": "/api/v2/facturas", "desc": "Crear factura"},
{"method": "PUT", "path": "/api/v2/facturas/:id", "desc": "Actualizar factura"},
{"method": "DELETE", "path": "/api/v2/facturas/:id", "desc": "Eliminar factura"},
{"method": "POST", "path": "/api/v2/facturas/:id/upload-pdf", "desc": "Subir PDF de factura"},
{"method": "GET", "path": "/api/v2/facturas/:id/download", "desc": "Descargar PDF factura"},
},
},
{
"nombre": "Tickets (global)",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/tickets", "desc": "Listar todos los tickets"},
{"method": "PUT", "path": "/hermes/tickets/:ticketID/estado", "desc": "Cambiar estado"},
{"method": "POST", "path": "/hermes/tickets/:ticketID/mensaje", "desc": "Responder ticket"},
{"method": "GET", "path": "/api/v2/tickets", "desc": "Listar todos los tickets"},
{"method": "PUT", "path": "/api/v2/tickets/:ticketID/estado", "desc": "Cambiar estado"},
{"method": "POST", "path": "/api/v2/tickets/:ticketID/mensaje", "desc": "Responder ticket"},
},
},
{
"nombre": "Contabilidad",
"desc": "Sistema contable: transacciones (ingresos/egresos), cuentas, entidades, cuentas por cobrar/pagar, consolidados.",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/contabilidad/dashboard", "desc": "Dashboard. Query: ?mes=7&anio=2026"},
{"method": "GET", "path": "/hermes/contabilidad/consolidado", "desc": "Calcular consolidado mensual. Query: ?mes=&anio="},
{"method": "GET", "path": "/hermes/contabilidad/consolidados", "desc": "Listar consolidados. Query: ?anio="},
{"method": "GET", "path": "/hermes/contabilidad/transacciones", "desc": "Listar transacciones. Query: ?page=&search=&tipo=ingreso|egreso&mes=&anio="},
{"method": "POST", "path": "/hermes/contabilidad/transacciones", "desc": "Crear transacción", "body": "fecha, tipo, descripcion, valor, cuenta_id, entidad_id, forma_pago, estado, notas"},
{"method": "PUT", "path": "/hermes/contabilidad/transacciones/:id", "desc": "Actualizar transacción"},
{"method": "DELETE", "path": "/hermes/contabilidad/transacciones/:id", "desc": "Eliminar transacción"},
{"method": "GET", "path": "/hermes/contabilidad/cuentas", "desc": "Listar categorías contables"},
{"method": "GET", "path": "/hermes/contabilidad/cuentas/select", "desc": "Categorías activas para select"},
{"method": "POST", "path": "/hermes/contabilidad/cuentas", "desc": "Crear categoría", "body": "codigo, nombre, tipo(ingreso|egreso), color"},
{"method": "PUT", "path": "/hermes/contabilidad/cuentas/:id", "desc": "Actualizar categoría"},
{"method": "DELETE", "path": "/hermes/contabilidad/cuentas/:id", "desc": "Eliminar categoría"},
{"method": "GET", "path": "/hermes/contabilidad/entidades", "desc": "Listar entidades contables"},
{"method": "GET", "path": "/hermes/contabilidad/entidades/select", "desc": "Entidades activas para select"},
{"method": "POST", "path": "/hermes/contabilidad/entidades", "desc": "Crear entidad", "body": "nombre, tipo(cliente|proveedor|ambos), documento, email, telefono"},
{"method": "PUT", "path": "/hermes/contabilidad/entidades/:id", "desc": "Actualizar entidad"},
{"method": "DELETE", "path": "/hermes/contabilidad/entidades/:id", "desc": "Eliminar entidad"},
{"method": "GET", "path": "/hermes/contabilidad/cuentas-cobro", "desc": "Listar cuentas por cobrar. Query: ?page=&search=&estado="},
{"method": "POST", "path": "/hermes/contabilidad/cuentas-cobro", "desc": "Crear cuenta por cobrar", "body": "cliente_id, descripcion, valor, fecha, fecha_vencimiento, notas"},
{"method": "PUT", "path": "/hermes/contabilidad/cuentas-cobro/:id", "desc": "Actualizar cuenta por cobrar"},
{"method": "DELETE", "path": "/hermes/contabilidad/cuentas-cobro/:id", "desc": "Eliminar cuenta por cobrar"},
{"method": "GET", "path": "/hermes/contabilidad/cuentas-pagar", "desc": "Listar cuentas por pagar. Query: ?page=&search=&estado="},
{"method": "POST", "path": "/hermes/contabilidad/cuentas-pagar", "desc": "Crear cuenta por pagar", "body": "entidad_id, descripcion, valor, fecha, vencimiento, notas"},
{"method": "PUT", "path": "/hermes/contabilidad/cuentas-pagar/:id", "desc": "Actualizar cuenta por pagar"},
{"method": "POST", "path": "/hermes/contabilidad/cuentas-pagar/:id/pagar", "desc": "Marcar como pagada", "body": "fecha_pago"},
{"method": "DELETE", "path": "/hermes/contabilidad/cuentas-pagar/:id", "desc": "Eliminar cuenta por pagar"},
{"method": "GET", "path": "/api/v2/contabilidad/dashboard", "desc": "Dashboard. Query: ?mes=7&anio=2026"},
{"method": "GET", "path": "/api/v2/contabilidad/consolidado", "desc": "Calcular consolidado mensual. Query: ?mes=&anio="},
{"method": "GET", "path": "/api/v2/contabilidad/consolidados", "desc": "Listar consolidados. Query: ?anio="},
{"method": "GET", "path": "/api/v2/contabilidad/transacciones", "desc": "Listar transacciones. Query: ?page=&search=&tipo=ingreso|egreso&mes=&anio="},
{"method": "POST", "path": "/api/v2/contabilidad/transacciones", "desc": "Crear transacción", "body": "fecha, tipo, descripcion, valor, cuenta_id, entidad_id, forma_pago, estado, notas"},
{"method": "PUT", "path": "/api/v2/contabilidad/transacciones/:id", "desc": "Actualizar transacción"},
{"method": "DELETE", "path": "/api/v2/contabilidad/transacciones/:id", "desc": "Eliminar transacción"},
{"method": "GET", "path": "/api/v2/contabilidad/cuentas", "desc": "Listar categorías contables"},
{"method": "GET", "path": "/api/v2/contabilidad/cuentas/select", "desc": "Categorías activas para select"},
{"method": "POST", "path": "/api/v2/contabilidad/cuentas", "desc": "Crear categoría", "body": "codigo, nombre, tipo(ingreso|egreso), color"},
{"method": "PUT", "path": "/api/v2/contabilidad/cuentas/:id", "desc": "Actualizar categoría"},
{"method": "DELETE", "path": "/api/v2/contabilidad/cuentas/:id", "desc": "Eliminar categoría"},
{"method": "GET", "path": "/api/v2/contabilidad/entidades", "desc": "Listar entidades contables"},
{"method": "GET", "path": "/api/v2/contabilidad/entidades/select", "desc": "Entidades activas para select"},
{"method": "POST", "path": "/api/v2/contabilidad/entidades", "desc": "Crear entidad", "body": "nombre, tipo(cliente|proveedor|ambos), documento, email, telefono"},
{"method": "PUT", "path": "/api/v2/contabilidad/entidades/:id", "desc": "Actualizar entidad"},
{"method": "DELETE", "path": "/api/v2/contabilidad/entidades/:id", "desc": "Eliminar entidad"},
{"method": "GET", "path": "/api/v2/contabilidad/cuentas-cobro", "desc": "Listar cuentas por cobrar. Query: ?page=&search=&estado="},
{"method": "POST", "path": "/api/v2/contabilidad/cuentas-cobro", "desc": "Crear cuenta por cobrar", "body": "cliente_id, descripcion, valor, fecha, fecha_vencimiento, notas"},
{"method": "PUT", "path": "/api/v2/contabilidad/cuentas-cobro/:id", "desc": "Actualizar cuenta por cobrar"},
{"method": "DELETE", "path": "/api/v2/contabilidad/cuentas-cobro/:id", "desc": "Eliminar cuenta por cobrar"},
{"method": "GET", "path": "/api/v2/contabilidad/cuentas-pagar", "desc": "Listar cuentas por pagar. Query: ?page=&search=&estado="},
{"method": "POST", "path": "/api/v2/contabilidad/cuentas-pagar", "desc": "Crear cuenta por pagar", "body": "entidad_id, descripcion, valor, fecha, vencimiento, notas"},
{"method": "PUT", "path": "/api/v2/contabilidad/cuentas-pagar/:id", "desc": "Actualizar cuenta por pagar"},
{"method": "POST", "path": "/api/v2/contabilidad/cuentas-pagar/:id/pagar", "desc": "Marcar como pagada", "body": "fecha_pago"},
{"method": "DELETE", "path": "/api/v2/contabilidad/cuentas-pagar/:id", "desc": "Eliminar cuenta por pagar"},
},
},
{
"nombre": "Productos SaaS",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/saas", "desc": "Listar productos SaaS"},
{"method": "POST", "path": "/hermes/saas", "desc": "Crear producto"},
{"method": "PUT", "path": "/hermes/saas/:id", "desc": "Actualizar producto"},
{"method": "DELETE", "path": "/hermes/saas/:id", "desc": "Eliminar producto"},
{"method": "GET", "path": "/hermes/saas/:id/health", "desc": "Health check del producto"},
{"method": "GET", "path": "/api/v2/saas", "desc": "Listar productos SaaS"},
{"method": "POST", "path": "/api/v2/saas", "desc": "Crear producto"},
{"method": "PUT", "path": "/api/v2/saas/:id", "desc": "Actualizar producto"},
{"method": "DELETE", "path": "/api/v2/saas/:id", "desc": "Eliminar producto"},
{"method": "GET", "path": "/api/v2/saas/:id/health", "desc": "Health check del producto"},
},
},
{
"nombre": "Integraciones SaaS (dispatcher)",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/saas-api", "desc": "Listar configs de integración"},
{"method": "POST", "path": "/hermes/saas-api", "desc": "Crear config"},
{"method": "PUT", "path": "/hermes/saas-api/:id", "desc": "Actualizar config"},
{"method": "DELETE", "path": "/hermes/saas-api/:id", "desc": "Eliminar config"},
{"method": "GET", "path": "/hermes/saas-api/logs", "desc": "Logs de despacho"},
{"method": "GET", "path": "/api/v2/saas-api", "desc": "Listar configs de integración"},
{"method": "POST", "path": "/api/v2/saas-api", "desc": "Crear config"},
{"method": "PUT", "path": "/api/v2/saas-api/:id", "desc": "Actualizar config"},
{"method": "DELETE", "path": "/api/v2/saas-api/:id", "desc": "Eliminar config"},
{"method": "GET", "path": "/api/v2/saas-api/logs", "desc": "Logs de despacho"},
},
},
{
"nombre": "Documentación",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/doc/categorias", "desc": "Listar categorías de docs"},
{"method": "POST", "path": "/hermes/doc/categorias", "desc": "Crear categoría"},
{"method": "PUT", "path": "/hermes/doc/categorias/:id", "desc": "Actualizar categoría"},
{"method": "DELETE", "path": "/hermes/doc/categorias/:id", "desc": "Eliminar categoría"},
{"method": "GET", "path": "/hermes/doc/paginas", "desc": "Listar páginas de docs"},
{"method": "GET", "path": "/hermes/doc/paginas/:id", "desc": "Detalle de página"},
{"method": "POST", "path": "/hermes/doc/paginas", "desc": "Crear página"},
{"method": "PUT", "path": "/hermes/doc/paginas/:id", "desc": "Actualizar página"},
{"method": "DELETE", "path": "/hermes/doc/paginas/:id", "desc": "Eliminar página"},
{"method": "GET", "path": "/api/v2/doc/categorias", "desc": "Listar categorías de docs"},
{"method": "POST", "path": "/api/v2/doc/categorias", "desc": "Crear categoría"},
{"method": "PUT", "path": "/api/v2/doc/categorias/:id", "desc": "Actualizar categoría"},
{"method": "DELETE", "path": "/api/v2/doc/categorias/:id", "desc": "Eliminar categoría"},
{"method": "GET", "path": "/api/v2/doc/paginas", "desc": "Listar páginas de docs"},
{"method": "GET", "path": "/api/v2/doc/paginas/:id", "desc": "Detalle de página"},
{"method": "POST", "path": "/api/v2/doc/paginas", "desc": "Crear página"},
{"method": "PUT", "path": "/api/v2/doc/paginas/:id", "desc": "Actualizar página"},
{"method": "DELETE", "path": "/api/v2/doc/paginas/:id", "desc": "Eliminar página"},
},
},
{
"nombre": "Configuraciones de IA",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/ai-config", "desc": "Listar configs de IA"},
{"method": "GET", "path": "/hermes/ai-config/select", "desc": "Configs activas para select"},
{"method": "POST", "path": "/hermes/ai-config", "desc": "Crear config IA"},
{"method": "PUT", "path": "/hermes/ai-config/:id", "desc": "Actualizar config"},
{"method": "DELETE", "path": "/hermes/ai-config/:id", "desc": "Eliminar config"},
{"method": "GET", "path": "/hermes/ai-config/:id/test", "desc": "Probar config"},
{"method": "GET", "path": "/api/v2/ai-config", "desc": "Listar configs de IA"},
{"method": "GET", "path": "/api/v2/ai-config/select", "desc": "Configs activas para select"},
{"method": "POST", "path": "/api/v2/ai-config", "desc": "Crear config IA"},
{"method": "PUT", "path": "/api/v2/ai-config/:id", "desc": "Actualizar config"},
{"method": "DELETE", "path": "/api/v2/ai-config/:id", "desc": "Eliminar config"},
{"method": "GET", "path": "/api/v2/ai-config/:id/test", "desc": "Probar config"},
},
},
{
"nombre": "OSS API (almacenamiento)",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/oss-api", "desc": "Listar configs de almacenamiento"},
{"method": "GET", "path": "/hermes/oss-api/active", "desc": "Configs activas"},
{"method": "POST", "path": "/hermes/oss-api", "desc": "Crear config"},
{"method": "PUT", "path": "/hermes/oss-api/:id", "desc": "Actualizar config"},
{"method": "DELETE", "path": "/hermes/oss-api/:id", "desc": "Eliminar config"},
{"method": "GET", "path": "/hermes/oss-api/browser", "desc": "Explorar archivos. Query: ?prefix=&config_id="},
{"method": "GET", "path": "/hermes/oss-api/browser/url", "desc": "URL firmada para descarga"},
{"method": "POST", "path": "/hermes/oss-api/browser/upload", "desc": "Subir archivo"},
{"method": "DELETE", "path": "/hermes/oss-api/browser/object", "desc": "Eliminar archivo"},
{"method": "GET", "path": "/api/v2/oss-api", "desc": "Listar configs de almacenamiento"},
{"method": "GET", "path": "/api/v2/oss-api/active", "desc": "Configs activas"},
{"method": "POST", "path": "/api/v2/oss-api", "desc": "Crear config"},
{"method": "PUT", "path": "/api/v2/oss-api/:id", "desc": "Actualizar config"},
{"method": "DELETE", "path": "/api/v2/oss-api/:id", "desc": "Eliminar config"},
{"method": "GET", "path": "/api/v2/oss-api/browser", "desc": "Explorar archivos. Query: ?prefix=&config_id="},
{"method": "GET", "path": "/api/v2/oss-api/browser/url", "desc": "URL firmada para descarga"},
{"method": "POST", "path": "/api/v2/oss-api/browser/upload", "desc": "Subir archivo"},
{"method": "DELETE", "path": "/api/v2/oss-api/browser/object", "desc": "Eliminar archivo"},
},
},
{
"nombre": "Telegram",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/telegram", "desc": "Listar configs de Telegram"},
{"method": "POST", "path": "/hermes/telegram", "desc": "Crear config"},
{"method": "PUT", "path": "/hermes/telegram/:id", "desc": "Actualizar config"},
{"method": "DELETE", "path": "/hermes/telegram/:id", "desc": "Eliminar config"},
{"method": "POST", "path": "/hermes/telegram/:id/test", "desc": "Enviar test"},
{"method": "POST", "path": "/hermes/telegram/send", "desc": "Enviar notificación Telegram", "body": "config_id, message"},
{"method": "GET", "path": "/hermes/telegram/logs", "desc": "Logs de envíos"},
{"method": "GET", "path": "/api/v2/telegram", "desc": "Listar configs de Telegram"},
{"method": "POST", "path": "/api/v2/telegram", "desc": "Crear config"},
{"method": "PUT", "path": "/api/v2/telegram/:id", "desc": "Actualizar config"},
{"method": "DELETE", "path": "/api/v2/telegram/:id", "desc": "Eliminar config"},
{"method": "POST", "path": "/api/v2/telegram/:id/test", "desc": "Enviar test"},
{"method": "POST", "path": "/api/v2/telegram/send", "desc": "Enviar notificación Telegram", "body": "config_id, message"},
{"method": "GET", "path": "/api/v2/telegram/logs", "desc": "Logs de envíos"},
},
},
{
"nombre": "Notificaciones config",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/notif-config", "desc": "Configs de notificaciones por evento"},
{"method": "POST", "path": "/hermes/notif-config", "desc": "Guardar config"},
{"method": "GET", "path": "/hermes/servidor-alerta-config", "desc": "Umbrales de alerta de servidores"},
{"method": "POST", "path": "/hermes/servidor-alerta-config", "desc": "Guardar umbrales"},
{"method": "GET", "path": "/api/v2/notif-config", "desc": "Configs de notificaciones por evento"},
{"method": "POST", "path": "/api/v2/notif-config", "desc": "Guardar config"},
{"method": "GET", "path": "/api/v2/servidor-alerta-config", "desc": "Umbrales de alerta de servidores"},
{"method": "POST", "path": "/api/v2/servidor-alerta-config", "desc": "Guardar umbrales"},
},
},
{
"nombre": "Partner Recursos y Comunicados",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/partner-recursos", "desc": "Listar recursos partner"},
{"method": "POST", "path": "/hermes/partner-recursos", "desc": "Crear recurso"},
{"method": "PUT", "path": "/hermes/partner-recursos/:id", "desc": "Actualizar recurso"},
{"method": "DELETE", "path": "/hermes/partner-recursos/:id", "desc": "Eliminar recurso"},
{"method": "GET", "path": "/hermes/partner-comunicados", "desc": "Listar comunicados"},
{"method": "POST", "path": "/hermes/partner-comunicados", "desc": "Crear comunicado"},
{"method": "PUT", "path": "/hermes/partner-comunicados/:id", "desc": "Actualizar comunicado"},
{"method": "DELETE", "path": "/hermes/partner-comunicados/:id", "desc": "Eliminar comunicado"},
{"method": "GET", "path": "/api/v2/partner-recursos", "desc": "Listar recursos partner"},
{"method": "POST", "path": "/api/v2/partner-recursos", "desc": "Crear recurso"},
{"method": "PUT", "path": "/api/v2/partner-recursos/:id", "desc": "Actualizar recurso"},
{"method": "DELETE", "path": "/api/v2/partner-recursos/:id", "desc": "Eliminar recurso"},
{"method": "GET", "path": "/api/v2/partner-comunicados", "desc": "Listar comunicados"},
{"method": "POST", "path": "/api/v2/partner-comunicados", "desc": "Crear comunicado"},
{"method": "PUT", "path": "/api/v2/partner-comunicados/:id", "desc": "Actualizar comunicado"},
{"method": "DELETE", "path": "/api/v2/partner-comunicados/:id", "desc": "Eliminar comunicado"},
},
},
{
"nombre": "USITE Shield",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/shield", "desc": "Ver config Shield"},
{"method": "POST", "path": "/hermes/shield", "desc": "Guardar config"},
{"method": "GET", "path": "/hermes/shield/health", "desc": "Health check"},
{"method": "GET", "path": "/hermes/shield/logs", "desc": "Logs de Shield"},
{"method": "GET", "path": "/hermes/shield/logs/stats", "desc": "Estadísticas de logs"},
{"method": "GET", "path": "/hermes/shield/review-requests", "desc": "Solicitudes de revisión"},
{"method": "PUT", "path": "/hermes/shield/review-requests/:id/approve", "desc": "Aprobar solicitud"},
{"method": "PUT", "path": "/hermes/shield/review-requests/:id/reject", "desc": "Rechazar solicitud"},
{"method": "GET", "path": "/hermes/shield/whitelist", "desc": "Whitelist"},
{"method": "POST", "path": "/hermes/shield/whitelist", "desc": "Agregar a whitelist"},
{"method": "DELETE", "path": "/hermes/shield/whitelist/:domain", "desc": "Quitar de whitelist"},
{"method": "GET", "path": "/hermes/shield/blacklist", "desc": "Blacklist"},
{"method": "POST", "path": "/hermes/shield/blacklist", "desc": "Agregar a blacklist"},
{"method": "DELETE", "path": "/hermes/shield/blacklist/:domain", "desc": "Quitar de blacklist"},
{"method": "GET", "path": "/api/v2/shield", "desc": "Ver config Shield"},
{"method": "POST", "path": "/api/v2/shield", "desc": "Guardar config"},
{"method": "GET", "path": "/api/v2/shield/health", "desc": "Health check"},
{"method": "GET", "path": "/api/v2/shield/logs", "desc": "Logs de Shield"},
{"method": "GET", "path": "/api/v2/shield/logs/stats", "desc": "Estadísticas de logs"},
{"method": "GET", "path": "/api/v2/shield/review-requests", "desc": "Solicitudes de revisión"},
{"method": "PUT", "path": "/api/v2/shield/review-requests/:id/approve", "desc": "Aprobar solicitud"},
{"method": "PUT", "path": "/api/v2/shield/review-requests/:id/reject", "desc": "Rechazar solicitud"},
{"method": "GET", "path": "/api/v2/shield/whitelist", "desc": "Whitelist"},
{"method": "POST", "path": "/api/v2/shield/whitelist", "desc": "Agregar a whitelist"},
{"method": "DELETE", "path": "/api/v2/shield/whitelist/:domain", "desc": "Quitar de whitelist"},
{"method": "GET", "path": "/api/v2/shield/blacklist", "desc": "Blacklist"},
{"method": "POST", "path": "/api/v2/shield/blacklist", "desc": "Agregar a blacklist"},
{"method": "DELETE", "path": "/api/v2/shield/blacklist/:domain", "desc": "Quitar de blacklist"},
},
},
{
"nombre": "WebSMS (LabsMobile)",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/websms/config", "desc": "Ver config WebSMS"},
{"method": "POST", "path": "/hermes/websms/save", "desc": "Guardar config"},
{"method": "POST", "path": "/hermes/websms/test", "desc": "Enviar SMS de prueba"},
{"method": "GET", "path": "/hermes/websms/logs", "desc": "Logs de envíos"},
{"method": "GET", "path": "/api/v2/websms/config", "desc": "Ver config WebSMS"},
{"method": "POST", "path": "/api/v2/websms/save", "desc": "Guardar config"},
{"method": "POST", "path": "/api/v2/websms/test", "desc": "Enviar SMS de prueba"},
{"method": "GET", "path": "/api/v2/websms/logs", "desc": "Logs de envíos"},
},
},
{
"nombre": "Pasarelas de pago",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/pasarelas/bold/config", "desc": "Config Bold"},
{"method": "POST", "path": "/hermes/pasarelas/bold/save", "desc": "Guardar config Bold"},
{"method": "GET", "path": "/hermes/pasarelas/bold/logs", "desc": "Logs de webhooks Bold"},
{"method": "GET", "path": "/hermes/pasarelas/dlocal/config", "desc": "Config dLocal"},
{"method": "POST", "path": "/hermes/pasarelas/dlocal/save", "desc": "Guardar config dLocal"},
{"method": "GET", "path": "/hermes/pasarelas/dlocal/logs", "desc": "Logs de pagos dLocal"},
{"method": "GET", "path": "/hermes/pasarelas/paypal/config", "desc": "Config PayPal"},
{"method": "POST", "path": "/hermes/pasarelas/paypal/save", "desc": "Guardar config PayPal"},
{"method": "GET", "path": "/api/v2/pasarelas/bold/config", "desc": "Config Bold"},
{"method": "POST", "path": "/api/v2/pasarelas/bold/save", "desc": "Guardar config Bold"},
{"method": "GET", "path": "/api/v2/pasarelas/bold/logs", "desc": "Logs de webhooks Bold"},
{"method": "GET", "path": "/api/v2/pasarelas/dlocal/config", "desc": "Config dLocal"},
{"method": "POST", "path": "/api/v2/pasarelas/dlocal/save", "desc": "Guardar config dLocal"},
{"method": "GET", "path": "/api/v2/pasarelas/dlocal/logs", "desc": "Logs de pagos dLocal"},
{"method": "GET", "path": "/api/v2/pasarelas/paypal/config", "desc": "Config PayPal"},
{"method": "POST", "path": "/api/v2/pasarelas/paypal/save", "desc": "Guardar config PayPal"},
},
},
{
"nombre": "Query Runner",
"desc": "Ejecutar queries SQL directamente contra las conexiones DB configuradas.",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/query-runner/connections", "desc": "Listar conexiones disponibles"},
{"method": "GET", "path": "/hermes/query-runner/databases", "desc": "Listar databases. Query: ?connection_id="},
{"method": "GET", "path": "/hermes/query-runner/tables", "desc": "Listar tablas. Query: ?connection_id=&database="},
{"method": "GET", "path": "/hermes/query-runner/test", "desc": "Probar conexión. Query: ?connection_id="},
{"method": "POST", "path": "/hermes/query-runner/run", "desc": "Ejecutar query", "body": "connection_id, database, query"},
{"method": "GET", "path": "/hermes/query-runner/history", "desc": "Historial de queries"},
{"method": "GET", "path": "/hermes/query-runner/columns", "desc": "Columnas de tabla. Query: ?connection_id=&database=&table="},
{"method": "GET", "path": "/api/v2/query-runner/connections", "desc": "Listar conexiones disponibles"},
{"method": "GET", "path": "/api/v2/query-runner/databases", "desc": "Listar databases. Query: ?connection_id="},
{"method": "GET", "path": "/api/v2/query-runner/tables", "desc": "Listar tablas. Query: ?connection_id=&database="},
{"method": "GET", "path": "/api/v2/query-runner/test", "desc": "Probar conexión. Query: ?connection_id="},
{"method": "POST", "path": "/api/v2/query-runner/run", "desc": "Ejecutar query", "body": "connection_id, database, query"},
{"method": "GET", "path": "/api/v2/query-runner/history", "desc": "Historial de queries"},
{"method": "GET", "path": "/api/v2/query-runner/columns", "desc": "Columnas de tabla. Query: ?connection_id=&database=&table="},
},
},
{
"nombre": "Hostinger",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/hostinger/vps", "desc": "Listar VPS Hostinger"},
{"method": "GET", "path": "/hermes/hostinger/domains", "desc": "Listar dominios"},
{"method": "GET", "path": "/hermes/hostinger/dns/:domain", "desc": "Registros DNS de un dominio"},
{"method": "GET", "path": "/hermes/hostinger/orders", "desc": "Listar órdenes"},
{"method": "GET", "path": "/hermes/hostinger/hosting", "desc": "Listar hosting"},
{"method": "GET", "path": "/api/v2/hostinger/vps", "desc": "Listar VPS Hostinger"},
{"method": "GET", "path": "/api/v2/hostinger/domains", "desc": "Listar dominios"},
{"method": "GET", "path": "/api/v2/hostinger/dns/:domain", "desc": "Registros DNS de un dominio"},
{"method": "GET", "path": "/api/v2/hostinger/orders", "desc": "Listar órdenes"},
{"method": "GET", "path": "/api/v2/hostinger/hosting", "desc": "Listar hosting"},
},
},
{
"nombre": "Cloudflare",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/cloudflare/zones", "desc": "Listar zonas"},
{"method": "GET", "path": "/hermes/cloudflare/zones/:zone_id/dns", "desc": "Registros DNS de una zona"},
{"method": "POST", "path": "/hermes/cloudflare/zones/:zone_id/dns", "desc": "Crear registro DNS"},
{"method": "PUT", "path": "/hermes/cloudflare/zones/:zone_id/dns/:record_id", "desc": "Actualizar registro DNS"},
{"method": "DELETE", "path": "/hermes/cloudflare/zones/:zone_id/dns/:record_id", "desc": "Eliminar registro DNS"},
{"method": "GET", "path": "/api/v2/cloudflare/zones", "desc": "Listar zonas"},
{"method": "GET", "path": "/api/v2/cloudflare/zones/:zone_id/dns", "desc": "Registros DNS de una zona"},
{"method": "POST", "path": "/api/v2/cloudflare/zones/:zone_id/dns", "desc": "Crear registro DNS"},
{"method": "PUT", "path": "/api/v2/cloudflare/zones/:zone_id/dns/:record_id", "desc": "Actualizar registro DNS"},
{"method": "DELETE", "path": "/api/v2/cloudflare/zones/:zone_id/dns/:record_id", "desc": "Eliminar registro DNS"},
},
},
{
"nombre": "Coolify",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/coolify/apps", "desc": "Listar aplicaciones"},
{"method": "GET", "path": "/hermes/coolify/apps/:uuid", "desc": "Detalle aplicación"},
{"method": "GET", "path": "/hermes/coolify/apps/:uuid/start", "desc": "Iniciar app"},
{"method": "GET", "path": "/hermes/coolify/apps/:uuid/stop", "desc": "Detener app"},
{"method": "GET", "path": "/hermes/coolify/apps/:uuid/restart", "desc": "Reiniciar app"},
{"method": "POST", "path": "/hermes/coolify/apps/:uuid/deploy", "desc": "Desplegar app"},
{"method": "GET", "path": "/hermes/coolify/servers", "desc": "Listar servidores Coolify"},
{"method": "GET", "path": "/hermes/coolify/servers/:uuid", "desc": "Detalle servidor"},
{"method": "GET", "path": "/hermes/coolify/servers/:uuid/resources", "desc": "Recursos del servidor"},
{"method": "GET", "path": "/hermes/coolify/services", "desc": "Listar servicios"},
{"method": "GET", "path": "/hermes/coolify/databases", "desc": "Listar databases"},
{"method": "GET", "path": "/hermes/coolify/projects", "desc": "Listar proyectos Coolify"},
{"method": "GET", "path": "/hermes/coolify/deployments", "desc": "Listar deployments"},
{"method": "GET", "path": "/api/v2/coolify/apps", "desc": "Listar aplicaciones"},
{"method": "GET", "path": "/api/v2/coolify/apps/:uuid", "desc": "Detalle aplicación"},
{"method": "GET", "path": "/api/v2/coolify/apps/:uuid/start", "desc": "Iniciar app"},
{"method": "GET", "path": "/api/v2/coolify/apps/:uuid/stop", "desc": "Detener app"},
{"method": "GET", "path": "/api/v2/coolify/apps/:uuid/restart", "desc": "Reiniciar app"},
{"method": "POST", "path": "/api/v2/coolify/apps/:uuid/deploy", "desc": "Desplegar app"},
{"method": "GET", "path": "/api/v2/coolify/servers", "desc": "Listar servidores Coolify"},
{"method": "GET", "path": "/api/v2/coolify/servers/:uuid", "desc": "Detalle servidor"},
{"method": "GET", "path": "/api/v2/coolify/servers/:uuid/resources", "desc": "Recursos del servidor"},
{"method": "GET", "path": "/api/v2/coolify/services", "desc": "Listar servicios"},
{"method": "GET", "path": "/api/v2/coolify/databases", "desc": "Listar databases"},
{"method": "GET", "path": "/api/v2/coolify/projects", "desc": "Listar proyectos Coolify"},
{"method": "GET", "path": "/api/v2/coolify/deployments", "desc": "Listar deployments"},
},
},
{
"nombre": "VCard API",
"endpoints": []fiber.Map{
{"method": "GET", "path": "/hermes/vcard-api/config", "desc": "Ver config VCard API"},
{"method": "GET", "path": "/hermes/vcard-api/usuarios", "desc": "Listar usuarios VCard"},
{"method": "GET", "path": "/hermes/vcard-api/usuarios/:id", "desc": "Detalle usuario"},
{"method": "GET", "path": "/hermes/vcard-api/vcards", "desc": "Listar vcards"},
{"method": "GET", "path": "/hermes/vcard-api/planes", "desc": "Listar planes"},
{"method": "GET", "path": "/hermes/vcard-api/pagos", "desc": "Listar pagos"},
{"method": "GET", "path": "/hermes/vcard-api/miniwebs", "desc": "Listar miniwebs"},
{"method": "GET", "path": "/api/v2/vcard-api/config", "desc": "Ver config VCard API"},
{"method": "GET", "path": "/api/v2/vcard-api/usuarios", "desc": "Listar usuarios VCard"},
{"method": "GET", "path": "/api/v2/vcard-api/usuarios/:id", "desc": "Detalle usuario"},
{"method": "GET", "path": "/api/v2/vcard-api/vcards", "desc": "Listar vcards"},
{"method": "GET", "path": "/api/v2/vcard-api/planes", "desc": "Listar planes"},
{"method": "GET", "path": "/api/v2/vcard-api/pagos", "desc": "Listar pagos"},
{"method": "GET", "path": "/api/v2/vcard-api/miniwebs", "desc": "Listar miniwebs"},
},
},
},
+2 -2
View File
@@ -262,8 +262,8 @@ func AuthAdmin(c *fiber.Ctx) error {
func AuthApi() func(*fiber.Ctx) error {
return func(c *fiber.Ctx) error {
// Excluir rutas públicas
if c.Path() == "/api/v1/oauth/token" || c.Path() == "/api/sms/send" {
// Excluir rutas públicas y /api/v2 (tiene su propio middleware)
if c.Path() == "/api/v1/oauth/token" || c.Path() == "/api/sms/send" || strings.HasPrefix(c.Path(), "/api/v2") {
return c.Next()
}
+3 -3
View File
@@ -7,11 +7,11 @@ import (
"github.com/gofiber/fiber/v2"
)
func HermesAuth() fiber.Handler {
func AdminApiAuth() fiber.Handler {
return func(c *fiber.Ctx) error {
apiKey := os.Getenv("HERMES_API_KEY")
apiKey := os.Getenv("ADMIN_API_KEY")
if apiKey == "" {
return c.Status(503).JSON(fiber.Map{"error": "HERMES_API_KEY not configured"})
return c.Status(503).JSON(fiber.Map{"error": "ADMIN_API_KEY not configured"})
}
token := ""
+3 -3
View File
@@ -6,11 +6,11 @@ import (
"github.com/sujit-baniya/fiber-boilerplate/rest/middlewares"
)
func HermesRoutes(app *fiber.App) {
h := app.Group("/hermes", middlewares.HermesAuth())
func AdminApiRoutes(api fiber.Router) {
h := api.Group("v2", middlewares.AdminApiAuth())
// ─── Spec (documentación completa de la API) ─────────────────────────────
h.Get("/spec", controllers.HermesSpec)
h.Get("/spec", controllers.AdminApiSpec)
// ─── Usuarios ────────────────────────────────────────────────────────────
h.Get("/users", controllers.GetUsers)
+1 -3
View File
@@ -9,9 +9,7 @@ func LoadRoutes(app *fiber.App) {
// Grupo de rutas de la API con autenticación
api := app.Group("/api").Use(middlewares.AuthApi())
ApiRoutes(api)
// API Hermes (acceso externo con API Key)
HermesRoutes(app)
AdminApiRoutes(api)
// Grupo de rutas web (sin autenticación)
web := app.Group("")