Files
soft_usite/rest/routes/hermes.go
T
Lizandro GDandClaude Opus 4.6 9fd0772e91 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>
2026-07-13 12:17:08 +00:00

376 lines
24 KiB
Go

package routes
import (
"github.com/gofiber/fiber/v2"
"github.com/sujit-baniya/fiber-boilerplate/rest/controllers"
"github.com/sujit-baniya/fiber-boilerplate/rest/middlewares"
)
func AdminApiRoutes(api fiber.Router) {
h := api.Group("v2", middlewares.AdminApiAuth())
// ─── Spec (documentación completa de la API) ─────────────────────────────
h.Get("/spec", controllers.AdminApiSpec)
// ─── Usuarios ────────────────────────────────────────────────────────────
h.Get("/users", controllers.GetUsers)
h.Get("/users/:id", controllers.GetUser)
h.Post("/users", controllers.CreateUser)
h.Put("/users/:id", controllers.UpdateUser)
h.Delete("/users/:id", controllers.DeleteUser)
// ─── Roles ───────────────────────────────────────────────────────────────
h.Get("/roles", controllers.GetRoles)
h.Post("/roles", controllers.CreateRole)
h.Put("/roles/:id", controllers.UpdateRole)
h.Delete("/roles/:id", controllers.DeleteRole)
// ─── Módulos ─────────────────────────────────────────────────────────────
h.Get("/modules", controllers.GetModules)
h.Post("/modules", controllers.CreateModule)
h.Put("/modules/:id", controllers.UpdateModule)
h.Delete("/modules/:id", controllers.DeleteModule)
// ─── Submódulos ──────────────────────────────────────────────────────────
h.Get("/submodules", controllers.GetSubmodules)
h.Post("/submodules", controllers.CreateSubmodule)
h.Put("/submodules/:id", controllers.UpdateSubmodule)
h.Delete("/submodules/:id", controllers.DeleteSubmodule)
// ─── Servidores ──────────────────────────────────────────────────────────
h.Get("/servidores", controllers.GetServidor)
h.Post("/servidores", controllers.CreateServidor)
h.Put("/servidores/:id", controllers.UpdateServidor)
h.Delete("/servidores/:id", controllers.DeleteServidor)
h.Get("/servidores/:id/dashboard", controllers.GetServidorDashboard)
h.Get("/servidores/:id/metricas-history", controllers.GetMetricasHistory)
// ─── Proveedores de servidor ─────────────────────────────────────────────
h.Get("/prov-servidores", controllers.GetProvServidor)
h.Post("/prov-servidores", controllers.CreateProvServidor)
h.Put("/prov-servidores/:id", controllers.UpdateProvServidor)
h.Delete("/prov-servidores/:id", controllers.DeleteProvServidor)
// ─── Tipos de servidor ───────────────────────────────────────────────────
h.Get("/tipos-servidor", controllers.GetTipoServidor)
h.Post("/tipos-servidor", controllers.CreateTipoServidor)
h.Put("/tipos-servidor/:id", controllers.UpdateTipoServidor)
h.Delete("/tipos-servidor/:id", controllers.DeleteTipoServidor)
// ─── Tipos de DB ─────────────────────────────────────────────────────────
h.Get("/tipos-db", controllers.GetTipoDb)
h.Post("/tipos-db", controllers.CreateTipoDb)
h.Put("/tipos-db/:id", controllers.UpdateTipoDb)
h.Delete("/tipos-db/:id", controllers.DeleteTipoDb)
// ─── Conexiones SSH ──────────────────────────────────────────────────────
h.Get("/conexiones-ssh", controllers.GetConxSsh)
h.Post("/conexiones-ssh", controllers.CreateConxSsh)
h.Put("/conexiones-ssh/:id", controllers.UpdateConxSsh)
h.Delete("/conexiones-ssh/:id", controllers.DeleteConxSsh)
// ─── Conexiones DB ───────────────────────────────────────────────────────
h.Get("/conexiones-db", controllers.GetConxDb)
h.Get("/conexiones-db/select", controllers.GetConxDbSelect)
h.Post("/conexiones-db", controllers.CreateConxDb)
h.Put("/conexiones-db/:id", controllers.UpdateConxDb)
h.Delete("/conexiones-db/:id", controllers.DeleteConxDb)
// ─── Clientes ────────────────────────────────────────────────────────────
h.Get("/clientes", controllers.GetClientes)
h.Get("/clientes/select", controllers.GetClientesSelect)
h.Post("/clientes", controllers.CreateCliente)
h.Put("/clientes/:id", controllers.UpdateCliente)
h.Delete("/clientes/:id", controllers.DeleteCliente)
h.Get("/clientes/:clienteID/documentos", controllers.GetClienteDocumentos)
h.Post("/clientes/:clienteID/documentos", controllers.UploadClienteDocumentos)
h.Delete("/clientes/:clienteID/documentos/:docID", controllers.DeleteClienteDocumento)
h.Get("/clientes/:clienteID/documentos/:docID/download", controllers.DownloadClienteDocumento)
// ─── Servicios ───────────────────────────────────────────────────────────
h.Get("/servicios", controllers.GetServicios)
h.Get("/servicios/select", controllers.GetServiciosSelect)
h.Post("/servicios", controllers.CreateServicio)
h.Put("/servicios/:id", controllers.UpdateServicio)
h.Delete("/servicios/:id", controllers.DeleteServicio)
// ─── Contratos ───────────────────────────────────────────────────────────
h.Get("/contratos", controllers.GetContratos)
h.Post("/contratos", controllers.CreateContrato)
h.Put("/contratos/:id", controllers.UpdateContrato)
h.Delete("/contratos/:id", controllers.DeleteContrato)
h.Post("/contratos/:id/renovar", controllers.RenovarContrato)
h.Post("/contratos/:id/enviar-correo", controllers.EnviarCorreoContrato)
h.Get("/contratos/:id/historial", controllers.GetHistorialContrato)
h.Post("/contratos/:id/verificar-pago", controllers.VerificarPagoBold)
h.Post("/contratos/:id/marcar-pagado", controllers.MarcarPagoManual)
// ─── Plantillas de correo ────────────────────────────────────────────────
h.Get("/plantillas-correo", controllers.GetPlantillas)
h.Post("/plantillas-correo", controllers.CreatePlantilla)
h.Put("/plantillas-correo/:id", controllers.UpdatePlantilla)
h.Delete("/plantillas-correo/:id", controllers.DeletePlantilla)
h.Get("/plantillas-correo/:id/preview", controllers.PreviewPlantilla)
// ─── Reglas de notificación ──────────────────────────────────────────────
h.Get("/reglas-notificacion", controllers.GetReglas)
h.Post("/reglas-notificacion", controllers.CreateRegla)
h.Put("/reglas-notificacion/:id", controllers.UpdateRegla)
h.Delete("/reglas-notificacion/:id", controllers.DeleteRegla)
// ─── Historial de notificaciones ─────────────────────────────────────────
h.Get("/historial-notificaciones", controllers.GetHistorial)
h.Post("/historial-notificaciones/:id/reenviar", controllers.ReenviarNotificacion)
// ─── SMTP Config ─────────────────────────────────────────────────────────
h.Get("/smtp-config", controllers.GetSmtpConfig)
h.Post("/smtp-config", controllers.SaveSmtpConfig)
// ─── Tareas (kanban) ─────────────────────────────────────────────────────
h.Get("/tareas", controllers.GetTareas)
h.Get("/tareas/usuarios", controllers.GetUsuariosSistema)
h.Post("/tareas", controllers.CreateTarea)
h.Get("/tareas/:id", controllers.GetTareaDetalle)
h.Put("/tareas/:id", controllers.UpdateTarea)
h.Put("/tareas/:id/estado", controllers.CambiarEstadoTarea)
h.Delete("/tareas/:id", controllers.DeleteTareaHandler)
h.Post("/tareas/:id/comentario", controllers.AddComentario)
// ─── Monitor de URLs ─────────────────────────────────────────────────────
h.Get("/url-monitors", controllers.GetUrlMonitors)
h.Post("/url-monitors", controllers.CreateUrlMonitor)
h.Put("/url-monitors/:id", controllers.UpdateUrlMonitor)
h.Delete("/url-monitors/:id", controllers.DeleteUrlMonitorHandler)
h.Post("/url-monitors/:id/check", controllers.CheckUrlMonitorNow)
h.Get("/url-monitors/:id/logs", controllers.GetUrlMonitorLogsHandler)
// ─── Proyectos ───────────────────────────────────────────────────────────
h.Get("/proyectos", controllers.LoadProyectos)
h.Post("/proyectos", controllers.CreateProyecto)
h.Put("/proyectos/:id", controllers.UpdateProyecto)
h.Delete("/proyectos/:id", controllers.DeleteProyecto)
h.Get("/proyectos/:id/fases", controllers.GetFases)
h.Post("/proyectos/:id/fases", controllers.CreateFase)
h.Put("/proyectos/:id/fases/:faseID", controllers.UpdateFase)
h.Delete("/proyectos/:id/fases/:faseID", controllers.DeleteFase)
h.Get("/proyectos/:id/avances", controllers.GetAvances)
h.Post("/proyectos/:id/avances", controllers.CreateAvance)
h.Put("/proyectos/:id/avances/:avID", controllers.UpdateAvance)
h.Delete("/proyectos/:id/avances/:avID", controllers.DeleteAvance)
h.Get("/proyectos/:id/entregables", controllers.GetEntregables)
h.Post("/proyectos/:id/entregables", controllers.UploadEntregable)
h.Delete("/proyectos/:id/entregables/:entID", controllers.DeleteEntregable)
h.Get("/proyectos/:id/entregables/:entID/download", controllers.DownloadEntregable)
h.Get("/proyectos/:id/tickets", controllers.GetTickets)
h.Put("/proyectos/:id/tickets/:ticketID/estado", controllers.UpdateTicketEstadoAdmin)
h.Post("/proyectos/:id/tickets/:ticketID/mensaje", controllers.AdminResponderTicket)
h.Get("/proyectos/:id/documentos", controllers.GetDocumentos)
h.Post("/proyectos/:id/documentos", controllers.UploadDocumento)
h.Delete("/proyectos/:id/documentos/:docID", controllers.DeleteDocumento)
h.Get("/proyectos/:id/documentos/:docID/download", controllers.DownloadDocumento)
// ─── Portal de Usuarios ──────────────────────────────────────────────────
h.Get("/portal-usuarios", controllers.LoadPortalUsuarios)
h.Get("/portal-usuarios/:id", controllers.GetPortalUsuarioDetail)
h.Post("/portal-usuarios", controllers.CreatePortalUsuario)
h.Put("/portal-usuarios/:id", controllers.UpdatePortalUsuario)
h.Delete("/portal-usuarios/:id", controllers.DeletePortalUsuario)
h.Post("/portal-usuarios/:id/acceso", controllers.AddPortalAcceso)
h.Delete("/portal-usuarios/:id/acceso/:clienteID", controllers.RemovePortalAcceso)
h.Post("/portal-usuarios/:id/send-credentials", controllers.SendPortalCredentials)
// ─── Facturas ────────────────────────────────────────────────────────────
h.Get("/facturas", controllers.LoadFacturas)
h.Post("/facturas", controllers.CreateFactura)
h.Put("/facturas/:id", controllers.UpdateFactura)
h.Delete("/facturas/:id", controllers.DeleteFactura)
h.Post("/facturas/:id/upload-pdf", controllers.UploadFacturaPDF)
h.Get("/facturas/:id/download", controllers.DownloadFacturaPDF)
// ─── Tickets (global) ────────────────────────────────────────────────────
h.Get("/tickets", controllers.GetAllTicketsAdmin)
h.Put("/tickets/:ticketID/estado", controllers.UpdateTicketEstadoAdmin)
h.Post("/tickets/:ticketID/mensaje", controllers.AdminResponderTicket)
// ─── Contabilidad ────────────────────────────────────────────────────────
h.Get("/contabilidad/dashboard", controllers.ContabilidadDashboard)
h.Get("/contabilidad/consolidado", controllers.ContabilidadConsolidado)
h.Get("/contabilidad/consolidados", controllers.ContabilidadListConsolidados)
// Transacciones
h.Get("/contabilidad/transacciones", controllers.GetTransacciones)
h.Post("/contabilidad/transacciones", controllers.CreateTransaccion)
h.Put("/contabilidad/transacciones/:id", controllers.UpdateTransaccion)
h.Delete("/contabilidad/transacciones/:id", controllers.DeleteTransaccion)
// Cuentas contables
h.Get("/contabilidad/cuentas", controllers.GetCuentas)
h.Get("/contabilidad/cuentas/select", controllers.GetCuentasSelect)
h.Post("/contabilidad/cuentas", controllers.CreateCuenta)
h.Put("/contabilidad/cuentas/:id", controllers.UpdateCuenta)
h.Delete("/contabilidad/cuentas/:id", controllers.DeleteCuenta)
// Entidades
h.Get("/contabilidad/entidades", controllers.GetEntidades)
h.Get("/contabilidad/entidades/select", controllers.GetEntidadesSelect)
h.Post("/contabilidad/entidades", controllers.CreateEntidad)
h.Put("/contabilidad/entidades/:id", controllers.UpdateEntidad)
h.Delete("/contabilidad/entidades/:id", controllers.DeleteEntidad)
// Cuentas por cobrar
h.Get("/contabilidad/cuentas-cobro", controllers.GetCuentasCobro)
h.Post("/contabilidad/cuentas-cobro", controllers.CreateCuentaCobro)
h.Put("/contabilidad/cuentas-cobro/:id", controllers.UpdateCuentaCobro)
h.Delete("/contabilidad/cuentas-cobro/:id", controllers.DeleteCuentaCobro)
// Cuentas por pagar
h.Get("/contabilidad/cuentas-pagar", controllers.GetCuentasPagar)
h.Post("/contabilidad/cuentas-pagar", controllers.CreateCuentaPagar)
h.Put("/contabilidad/cuentas-pagar/:id", controllers.UpdateCuentaPagar)
h.Post("/contabilidad/cuentas-pagar/:id/pagar", controllers.MarcarCuentaPagarPagada)
h.Delete("/contabilidad/cuentas-pagar/:id", controllers.DeleteCuentaPagar)
// ─── Productos SaaS ──────────────────────────────────────────────────────
h.Get("/saas", controllers.GetSaasProductos)
h.Post("/saas", controllers.CreateSaasProducto)
h.Put("/saas/:id", controllers.UpdateSaasProducto)
h.Delete("/saas/:id", controllers.DeleteSaasProducto)
h.Get("/saas/:id/health", controllers.HealthCheckSaas)
// ─── Integraciones SaaS (dispatcher) ─────────────────────────────────────
h.Get("/saas-api", controllers.GetSaasApiConfigs)
h.Post("/saas-api", controllers.CreateSaasApiConfig)
h.Put("/saas-api/:id", controllers.UpdateSaasApiConfig)
h.Delete("/saas-api/:id", controllers.DeleteSaasApiConfig)
h.Get("/saas-api/logs", controllers.GetSaasDispatchLogs)
// ─── Documentación ───────────────────────────────────────────────────────
h.Get("/doc/categorias", controllers.GetDocCategorias)
h.Post("/doc/categorias", controllers.CreateDocCategoria)
h.Put("/doc/categorias/:id", controllers.UpdateDocCategoria)
h.Delete("/doc/categorias/:id", controllers.DeleteDocCategoria)
h.Get("/doc/paginas", controllers.GetDocPaginas)
h.Get("/doc/paginas/:id", controllers.GetDocPaginaDetalle)
h.Post("/doc/paginas", controllers.CreateDocPagina)
h.Put("/doc/paginas/:id", controllers.UpdateDocPagina)
h.Delete("/doc/paginas/:id", controllers.DeleteDocPagina)
// ─── Configuraciones de IA ───────────────────────────────────────────────
h.Get("/ai-config", controllers.GetAiConfigs)
h.Get("/ai-config/select", controllers.GetAiConfigSelect)
h.Post("/ai-config", controllers.CreateAiConfigHandler)
h.Put("/ai-config/:id", controllers.UpdateAiConfigHandler)
h.Delete("/ai-config/:id", controllers.DeleteAiConfigHandler)
h.Get("/ai-config/:id/test", controllers.TestAiConfigHandler)
// ─── OSS API (almacenamiento) ────────────────────────────────────────────
h.Get("/oss-api", controllers.GetOssApiConfigs)
h.Get("/oss-api/active", controllers.GetActiveOssApiList)
h.Post("/oss-api", controllers.CreateOssApiConfig)
h.Put("/oss-api/:id", controllers.UpdateOssApiConfig)
h.Delete("/oss-api/:id", controllers.DeleteOssApiConfig)
h.Get("/oss-api/browser", controllers.OssBrowserList)
h.Get("/oss-api/browser/url", controllers.OssBrowserSignedURL)
h.Delete("/oss-api/browser/object", controllers.OssBrowserDelete)
h.Post("/oss-api/browser/upload", controllers.OssBrowserUpload)
// ─── Telegram ────────────────────────────────────────────────────────────
h.Get("/telegram", controllers.GetTelegramConfigs)
h.Post("/telegram", controllers.CreateTelegramConfig)
h.Put("/telegram/:id", controllers.UpdateTelegramConfig)
h.Delete("/telegram/:id", controllers.DeleteTelegramConfig)
h.Post("/telegram/:id/test", controllers.TestTelegramConfig)
h.Post("/telegram/send", controllers.SendTelegramNotification)
h.Get("/telegram/logs", controllers.GetTelegramLogs)
// ─── Notificaciones config ───────────────────────────────────────────────
h.Get("/notif-config", controllers.GetNotifConfigs)
h.Post("/notif-config", controllers.SaveNotifConfig)
h.Get("/servidor-alerta-config", controllers.GetServidorAlertaConfig)
h.Post("/servidor-alerta-config", controllers.SaveServidorAlertaConfig)
// ─── Partner Recursos / Comunicados ──────────────────────────────────────
h.Get("/partner-recursos", controllers.LoadPartnerRecursos)
h.Post("/partner-recursos", controllers.CreatePartnerRecurso)
h.Put("/partner-recursos/:id", controllers.UpdatePartnerRecurso)
h.Delete("/partner-recursos/:id", controllers.DeletePartnerRecurso)
h.Get("/partner-comunicados", controllers.LoadPartnerComunicados)
h.Post("/partner-comunicados", controllers.CreatePartnerComunicado)
h.Put("/partner-comunicados/:id", controllers.UpdatePartnerComunicado)
h.Delete("/partner-comunicados/:id", controllers.DeletePartnerComunicado)
// ─── Shield ──────────────────────────────────────────────────────────────
h.Get("/shield", controllers.LoadShieldConfig)
h.Post("/shield", controllers.SaveShieldConfig)
h.Get("/shield/health", controllers.ShieldHealth)
h.Get("/shield/logs", controllers.ShieldLogs)
h.Get("/shield/logs/stats", controllers.ShieldLogStats)
h.Get("/shield/review-requests", controllers.ShieldReviewRequests)
h.Put("/shield/review-requests/:id/approve", controllers.ShieldApproveRequest)
h.Put("/shield/review-requests/:id/reject", controllers.ShieldRejectRequest)
h.Get("/shield/whitelist", controllers.ShieldWhitelist)
h.Post("/shield/whitelist", controllers.ShieldAddWhitelist)
h.Delete("/shield/whitelist/:domain", controllers.ShieldDeleteWhitelist)
h.Get("/shield/blacklist", controllers.ShieldBlacklist)
h.Post("/shield/blacklist", controllers.ShieldAddBlacklist)
h.Delete("/shield/blacklist/:domain", controllers.ShieldDeleteBlacklist)
// ─── WebSMS ──────────────────────────────────────────────────────────────
h.Get("/websms/config", controllers.GetWebSmsConfig)
h.Post("/websms/save", controllers.SaveWebSmsConfig)
h.Post("/websms/test", controllers.TestWebSms)
h.Get("/websms/logs", controllers.GetWebSmsLogs)
// ─── Pasarelas de pago ───────────────────────────────────────────────────
h.Get("/pasarelas/bold/config", controllers.GetBoldConfigAPI)
h.Post("/pasarelas/bold/save", controllers.SaveBoldConfig)
h.Get("/pasarelas/bold/logs", controllers.BoldWebhookLogs)
h.Get("/pasarelas/dlocal/config", controllers.GetDlocalConfigAPI)
h.Post("/pasarelas/dlocal/save", controllers.SaveDlocalConfigWeb)
h.Get("/pasarelas/dlocal/logs", controllers.DlocalPaymentLogsPaginated)
h.Get("/pasarelas/paypal/config", controllers.GetPaypalConfigAPI)
h.Post("/pasarelas/paypal/save", controllers.SavePaypalConfigWeb)
// ─── Query Runner ────────────────────────────────────────────────────────
h.Get("/query-runner/connections", controllers.GetConxDbList)
h.Get("/query-runner/databases", controllers.GetDatabases)
h.Get("/query-runner/tables", controllers.GetTables)
h.Get("/query-runner/test", controllers.TestConnection)
h.Post("/query-runner/run", controllers.RunQuery)
h.Get("/query-runner/history", controllers.GetHistory)
h.Get("/query-runner/columns", controllers.GetTableColumnsHandler)
// ─── Hostinger ───────────────────────────────────────────────────────────
h.Get("/hostinger/vps", controllers.GetHostingerVPS)
h.Get("/hostinger/domains", controllers.GetHostingerDomains)
h.Get("/hostinger/dns/:domain", controllers.GetHostingerDNS)
h.Get("/hostinger/orders", controllers.GetHostingerOrders)
h.Get("/hostinger/hosting", controllers.GetHostingerHosting)
// ─── Cloudflare ──────────────────────────────────────────────────────────
h.Get("/cloudflare/zones", controllers.GetCloudflareZones)
h.Get("/cloudflare/zones/:zone_id/dns", controllers.GetCloudflareDNS)
h.Post("/cloudflare/zones/:zone_id/dns", controllers.CreateCloudflareDNS)
h.Put("/cloudflare/zones/:zone_id/dns/:record_id", controllers.UpdateCloudflareDNS)
h.Delete("/cloudflare/zones/:zone_id/dns/:record_id", controllers.DeleteCloudflareDNS)
// ─── Coolify ─────────────────────────────────────────────────────────────
h.Get("/coolify/apps", controllers.CoolifyListApplications)
h.Get("/coolify/apps/:uuid", controllers.CoolifyGetApplication)
h.Get("/coolify/apps/:uuid/start", controllers.CoolifyApplicationStart)
h.Get("/coolify/apps/:uuid/stop", controllers.CoolifyApplicationStop)
h.Get("/coolify/apps/:uuid/restart", controllers.CoolifyApplicationRestart)
h.Post("/coolify/apps/:uuid/deploy", controllers.CoolifyApplicationDeploy)
h.Get("/coolify/servers", controllers.CoolifyListServers)
h.Get("/coolify/servers/:uuid", controllers.CoolifyGetServer)
h.Get("/coolify/servers/:uuid/resources", controllers.CoolifyServerResources)
h.Get("/coolify/services", controllers.CoolifyListServices)
h.Get("/coolify/databases", controllers.CoolifyListDatabases)
h.Get("/coolify/projects", controllers.CoolifyListProjects)
h.Get("/coolify/deployments", controllers.CoolifyListDeployments)
// ─── VCard API ───────────────────────────────────────────────────────────
h.Get("/vcard-api/config", controllers.VcardApiGetConfig)
h.Get("/vcard-api/usuarios", controllers.VcardApiUsuarios)
h.Get("/vcard-api/usuarios/:id", controllers.VcardApiUsuario)
h.Get("/vcard-api/vcards", controllers.VcardApiVcards)
h.Get("/vcard-api/planes", controllers.VcardApiPlanes)
h.Get("/vcard-api/pagos", controllers.VcardApiPagos)
h.Get("/vcard-api/miniwebs", controllers.VcardApiMiniwebs)
}