Autenticación

La API usa autenticación JWT con dos tokens:

Login

POST /endpoint/login
Content-Type: application/json

{
  "username": "operador1",
  "password": "mi_password",
  "version": "1.2"
}

Respuesta exitosa (200):

{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "refresh_token": "eyJhbGciOiJIUzI1NiIs..."
}

Renovar token

POST /endpoint/refresh
Authorization: Bearer <refresh_token>

Usar la API

Todas las peticiones autenticadas requieren el header:

Authorization: Bearer <access_token>

Endpoints de la API

Todos los endpoints están bajo el prefijo configurado en profile.yaml (por defecto /endpoint).

Conexión y sincronización

MétodoRutaDescripción
POST/loginAutenticación
POST/refreshRenovar access token
POST/syncSincronización inicial del cliente
POST/subscribeConfigurar suscripciones de eventos
GET/connectWebSocket para cliente (via OTP)
GET/channelCanal WebSocket adicional (via OTP)

OTP (One-Time Passwords)

MétodoRutaDescripción
POST/otp/generateGenerar token OTP
POST/otp/upload/tempSubir archivo temporal via OTP
GET/otp/download/syncDescargar sync data via OTP

Listeners

MétodoRutaDescripción
GET/listener/listListar listeners activos
POST/listener/createCrear un nuevo listener
POST/listener/editEditar un listener existente
POST/listener/stopDetener un listener
POST/listener/pausePausar un listener
POST/listener/resumeReanudar un listener pausado

Agentes

MétodoRutaDescripción
GET/agent/listListar agentes registrados
POST/agent/generateGenerar un nuevo payload
POST/agent/removeEliminar un agente
POST/agent/set/tagEstablecer tag de un agente
POST/agent/set/markEstablecer marca visual
POST/agent/set/colorEstablecer color
POST/agent/update/dataActualizar datos del agente

Comandos y consola

MétodoRutaDescripción
POST/agent/command/executeEjecutar comando con UI
POST/agent/command/rawEjecutar comando sin formato
POST/agent/command/fileComando con transferencia de archivo
POST/agent/console/removeLimpiar consola del agente

Tareas

MétodoRutaDescripción
GET/agent/task/listListar tareas completadas
POST/agent/task/cancelCancelar tarea pendiente
POST/agent/task/deleteEliminar tarea del historial
POST/agent/task/hookEjecutar hook de tarea
POST/agent/task/saveGuardar tarea

Chat

MétodoRutaDescripción
POST/chat/sendEnviar mensaje al chat

Descargas

MétodoRutaDescripción
GET/download/listListar descargas
POST/download/syncSincronizar descarga al cliente
POST/download/deleteEliminar descarga(s)

Capturas de pantalla

MétodoRutaDescripción
GET/screen/listListar capturas
GET/screen/imageObtener imagen de una captura
POST/screen/setnoteEstablecer nota de una captura
POST/screen/removeEliminar captura

Credenciales

MétodoRutaDescripción
GET/creds/listListar credenciales
POST/creds/addAñadir credencial
POST/creds/editEditar credencial
POST/creds/removeEliminar credencial
POST/creds/set/tagEstablecer tag

Targets

MétodoRutaDescripción
GET/targets/listListar targets
POST/targets/addAñadir target
POST/targets/editEditar target
POST/targets/removeEliminar target
POST/targets/set/tagEstablecer tag

Túneles

MétodoRutaDescripción
GET/tunnel/listListar túneles activos
POST/tunnel/start/socks5Iniciar SOCKS5
POST/tunnel/start/socks4Iniciar SOCKS4
POST/tunnel/start/lportfwdIniciar local port forward
POST/tunnel/start/rportfwdIniciar reverse port forward
POST/tunnel/stopDetener túnel
POST/tunnel/set/infoEstablecer info del túnel

Servicios

MétodoRutaDescripción
GET/service/listListar servicios
POST/service/callLlamar función de servicio

Endpoints dinámicos

Los extenders pueden registrar endpoints adicionales en tiempo de ejecución usando:

  • RegisterEndpoint(method, path, handler) — Endpoint autenticado
  • RegisterPublicEndpoint(method, path, handler) — Endpoint público

Estos endpoints se registran bajo el mismo prefijo y son accesibles mientras el extender esté cargado.

WebSocket

La comunicación en tiempo real se realiza via WebSocket:

wss://servidor:4321/endpoint/connect?otp=<token>

El WebSocket se establece usando un OTP (One-Time Password) generado previamente. A través de él, el servidor envía notificaciones de:

  • Nuevos agentes
  • Resultados de tareas
  • Mensajes de chat
  • Actualizaciones de estado
  • Eventos de listeners

Códigos de respuesta

CódigoSignificado
200Operación exitosa
401Token inválido o expirado
404Endpoint no encontrado
500Error interno del servidor

Manejo de errores

Las respuestas de error siguen el formato:

{
  "message": "Descripción del error",
  "ok": false
}