hbox-docs/scripts/agente-api.sh

21 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Llamar la API del sitio desde la Mac, por SSH, como «claude» (27-oct-2026). La usan el agente diario y el bot de
# standup (agentes/agente-diario.md). Pasa por 127.0.0.1:8081 en el servidor: no necesita la sesión de nadie.
# ./scripts/agente-api.sh GET '/api/incidencias?estado=abiertas'
# ./scripts/agente-api.sh POST /api/standup/preparar archivo.json
# ./scripts/agente-api.sh PATCH '/api/incidencia?id=INC-0003' cambio.json
set -euo pipefail
REMOTE="${REMOTE:-leo@git.helgen.online}"; PORT="${SSH_PORT:-22}"
M="${1:?método}"; P="${2:?ruta}"; F="${3:-}"
case "$M" in GET|POST|PATCH) ;; *) echo "Método no permitido: $M (GET, POST o PATCH; el agente no borra)" >&2; exit 2 ;; esac
case "$P" in /api/incidencia*|/api/standup*|/api/tareas*|/api/tarea\?*|/api/equipo*|/api/inventario|/api/inventario\?*|/api/actividad*|/api/hoy|/api/salud|/api/sitios*) ;;
*) echo "Ruta fuera de lo que el agente usa: $P" >&2; exit 2 ;; esac
if [ "$M" = "PATCH" ] && [[ "$P" == /api/tarea* ]]; then echo "El tablero se cambia con lotes (Leo los aplica), no por aquí." >&2; exit 2; fi
Q=$(printf '%q' "$P")
if [ -n "$F" ]; then
ssh -p "$PORT" "$REMOTE" "curl -s -X $M -H 'X-Remote-User: claude' -H 'Content-Type: application/json' --data-binary @- http://127.0.0.1:8081$Q" < "$F"
else
ssh -p "$PORT" "$REMOTE" "curl -s -X $M -H 'X-Remote-User: claude' http://127.0.0.1:8081$Q"
fi
echo