Integración

API HTTP

Todas las rutas bajo /api/… devuelven JSON (salvo errores). No se expone autenticación de Neo4j, Supabase ni MiniMax al cliente: solo las respuestas ya resueltas en el servidor.

URL base

En local, con npm run dev, la base suele ser http://127.0.0.1:3000. En producción, usa el origen de tu despliegue; ejemplo público actual:

https://q-threats.vercel.app

Sustituye en los ejemplos si tu instancia vive en otro host.

CORS y métodos

Las respuestas de /api/* incluyen cabeceras Access-Control-Allow-Origin: * y permiten GET, POST y preflight OPTIONS, para poder consumir la API desde el navegador en otro origen o desde herramientas habituales.

Rutas

MétodoRutaNotas
GET/api/threatsLista de amenazas. Query opcional: q, level (high|medium|low|possible), limit (≥1, máx. 500). Respuesta: { data, truncated? }.
GET/api/nodesNodos del demo. Query opcional: ids=id1,id2 (si falta, devuelve el conjunto por defecto). Respuesta: { data }.
GET/api/departmentsDepartamentos (Guatemala). Respuesta: { data }.
GET/api/analysis/[threatId]Análisis por id de amenaza (ej. t1). Respuesta: { data } o 404.
GET/api/legislation/[id]Análisis vía identificador de iniciativa (Make). URL-encode el id. Respuesta: { data } o error.
GET/api/recent-reportsÚltimos reportes (Supabase law_risk_reports). 503 si no hay env. Respuesta: { data }.
GET/api/graphGrafo completo desde Neo4j únicamente. 503 sin variables de entorno. Query ?check=1 devuelve estado de configuración.
GET/api/mcp/graph-snapshotSnapshot de análisis/grafo: Neo4j en servidor o fallback demo. Respuesta: { source, data }.
GET/api/mcp/context-packTexto consolidado (amenazas + grafo) para contexto de modelo. Respuesta: { text }.
POST/api/chatChat con MiniMax (clave en servidor). Cuerpo: { messages: [{ role, content }] }. Respuesta: { reply } o { error }.

Ejemplos con curl

Amenazas filtradas

curl -sS \
  -H "Accept: application/json" \
  "https://q-threats.vercel.app/api/threats?q=sanidad&limit=5"

Análisis de una amenaza

curl -sS \
  -H "Accept: application/json" \
  "https://q-threats.vercel.app/api/analysis/t1"

Chat (requiere MiniMax en el servidor del despliegue)

curl -sS -X POST \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"messages":[{"role":"user","content":"Resume las amenazas listadas."}]}' \
  "https://q-threats.vercel.app/api/chat"
Guía técnica (Docs)MCP (Cursor)Inicio