Documentación API REST
API para gestión y monitoreo de aplicaciones Node.js y Python con systemd.
Endpoint Base
http://localhost:8080/api
REST API
JSON responses
WebSocket
Logs en tiempo real
Rate Limiting
1 op/segundo
lock Autenticación
Actualmente la API no requiere autenticación ya que está diseñada para acceso local vía VPN.
Nota de Seguridad
Esta API debe ser accesible solo desde redes privadas o VPN.
apps Gestión de Aplicaciones
/api/apps
Listar todas las aplicaciones registradas
Respuesta exitosa (200)
{
"success": true,
"data": {
"apps": ["app_tareas", "fidelizacion"],
"total": 2
},
"error": null
}
/api/apps
Registrar una nueva aplicación
Body (JSON)
{
"app_name": "mi-app",
"script_path": "/opt/apps/mi-app/index.js",
"working_directory": "/opt/apps/mi-app",
"user": "nodejs",
"environment": {
"NODE_ENV": "production",
"PORT": "3000"
},
"restart_policy": "always",
"app_type": "nodejs",
"description": "Mi aplicación Node.js"
}
Respuesta exitosa (200)
{
"success": true,
"data": {
"app_name": "mi-app",
"operation": "register",
"success": true,
"message": "Aplicación registrada exitosamente"
},
"error": null
}
/api/apps/:name
Eliminar una aplicación registrada
Parámetros
-
name- Nombre de la aplicación
/api/apps/:name/status
Obtener estado de una aplicación
Respuesta exitosa (200)
{
"success": true,
"data": {
"name": "mi-app",
"status": "Running",
"pid": 12345,
"cpu_usage": 2.5,
"memory_usage": "128.50 MB",
"systemd_status": "active",
"last_updated": "2026-01-13T12:34:56"
}
}
search Escaneo de Procesos
/api/scan
Escanear procesos Node.js y Python en ejecución
Respuesta exitosa (200)
{
"success": true,
"data": {
"processes": [
{
"pid": 5769,
"name": "node",
"user": "1000",
"cpu_usage": 2.5,
"memory_mb": 112.54,
"process_type": "nodejs"
}
],
"total": 1
}
}
settings_power Ciclo de Vida
/api/apps/:name/start
Iniciar una aplicación
/api/apps/:name/stop
Detener una aplicación
/api/apps/:name/restart
Reiniciar una aplicación
Rate Limiting
Las operaciones están limitadas a 1 por segundo por aplicación.
cable WebSocket (Logs en tiempo real)
ws://localhost:8080/api/apps/:name/logs
Stream de logs en tiempo real desde journalctl
Ejemplo JavaScript
const ws = new WebSocket('ws://localhost:8080/api/apps/mi-app/logs');
ws.onopen = () => {
console.log('Conectado a logs');
};
ws.onmessage = (event) => {
const log = JSON.parse(event.data);
console.log(log.MESSAGE);
};
ws.onerror = (error) => {
console.error('Error:', error);
};
ws.onclose = () => {
console.log('Desconectado');
};
Límites
- check Máximo 5 conexiones concurrentes por aplicación
- check Formato JSON desde systemd journalctl
error Códigos de Error
Bad Request
Datos de entrada inválidos o faltantes
Not Found
Aplicación no encontrada
Too Many Requests
Rate limit excedido (1 operación/segundo)
Internal Server Error
Error interno del servidor
Estructura de error
{
"success": false,
"data": null,
"error": "Descripción del error"
}