Saltar a contenido

Contratos de integracion#

REST#

  • El backend expone endpoints documentados en rest-openapi.yaml. Usa OpenAPI 3.1.
  • Autenticacion (produccion/demos externas):
  • Con AUTH_ENABLED=true, la API requiere Authorization: Bearer <token> en casi todos los endpoints.
  • Login: POST /auth/login devuelve access_token (JWT HS256).
  • Endpoints publicos esperados aun con auth habilitado: GET / y POST /auth/login.
  • Si se desea una barrera adicional en lectura operativa, /ops/* puede requerir X-Ops-Token via OPS_READ_TOKEN.
  • Versionado: todas las rutas actuales son v1 implicito. Si se agregan rutas breaking, considerar prefijo /v1.

Ejemplos#

# 1) Login -> obtener token
TOKEN=$(
  curl -sS -X POST http://127.0.0.1:8096/auth/login \
    -H "Content-Type: application/json" \
    -d '{"email":"admin@example.com","password":"***"}' \
  | python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])"
)

# Alertas abiertas
curl -H "Authorization: Bearer $TOKEN" \
  "http://127.0.0.1:8096/analytics/goals/alerts?status=open&limit=20"

# Resolver alerta
curl -X POST http://127.0.0.1:8096/analytics/goals/alerts/123/resolve \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"note": "Reducimos lotaje y ajustamos stops"}'

Datos de mercado para frontend / TradingView#

  • Ticks historicos (para inspeccion fina o calculos propios):

bash curl -H "Authorization: Bearer $TOKEN" \ "http://127.0.0.1:8096/market-data/ticks?symbol=EURUSD&limit=500"

  • Velas historicas (pensadas para integracion con TradingView u otros chartings):

bash curl -H "Authorization: Bearer $TOKEN" \ "http://127.0.0.1:8096/market-data/candles?symbol=EURUSD&timeframe=M1&limit=1000"

Parametros soportados:

  • symbol: par/simbolo (EURUSD, XAUUSD, etc.).
  • timeframe: string tipo M1, M15, H1, etc.
  • limit: maximo de velas a devolver (por defecto 500).
  • from_timestamp, to_timestamp (opcional): rango temporal (ISO8601).

Binance (cuenta/estado/trading)#

curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:8096/binance/status
curl -H "Authorization: Bearer $TOKEN" \
  "http://127.0.0.1:8096/binance/account?nonzero_only=true"

Webhooks externos#

  • scripts/notify_external_alerts.py envia mensajes formato texto plano a Slack/Teams: ``` Goal Alerts abiertas

[Goal Alert #18] DAILY window (2025-02-11 00:00 -> 2025-02-11 23:59) consecutive misses: 2 Motivo: P/L diario < objetivo ``` - TODO: evaluar payloads estructurados (Block Kit/adaptive cards) si se requiere accion directa desde Slack/Teams.

Integraciones externas#

  • Binance API: market data + trading (spot/futures) segun BINANCE_BASE_URL y credenciales del entorno.
  • News providers: claves NEWSAPI_KEY, PRIXE_API_KEY, FMP_API_KEY guardadas como variables de entorno.
  • BI consumers: acceden a storage/bi_exports/ (montar carpeta o servir via /bi/datasets).

Manten sincronizadas las definiciones con el codigo; al introducir nuevos endpoints o webhooks, actualiza rest-openapi.yaml, este documento y agrega ADR si cambia el contrato.