Contrato v1 Estable

Integre sistemas externos con EVA

API de integración: PAT, extract report_core, alta de proyecto/escenario, ingest de hallazgos y jobs de retest. El runner on-prem se opera con una imagen publicada y un PAT. Esta guía describe solo esas operaciones.

Laboratorio, no producción Pruebe extract, ingest y el runner solo contra un entorno autorizado. No ejecute los ejemplos contra producción. El PAT nunca va en query string, git ni capturas.

Tres superficies, tres credenciales

No mezcle JWT de sesión, PAT de reportería y PAT de runner. Cada uno autentica un conjunto distinto de rutas.

SuperficieQuiénCredencialPara qué
UI humanaPersona en el navegadorJWT de sesión (cookies BFF)Crear, listar y revocar tokens; cola de retest; estados
API extract / ingestCliente de reportería o escánerPAT con extract y/o ingestÍndice, snapshot report_core (GET o batch) e ingest de hallazgos/aspectos
API retestRunner Nuclei/NmapPAT con retest_read + retest_writeJobs opacos de retest automático

El JWT de sesión no autentica extract, ingest ni retest. El PAT no autentica el CRUD de tokens. Un PAT solo-extract no autentica ingest ni retest. El tenant del runner sale del PAT; la imagen no envía X-Tenant-Id.

Contratos congelados

Métodos de ingest (v1)

#RutaBodyÉxito
1POST /api/v1/integrations/ingest/vulnerabilitiesJSON de un hallazgo201
2POST /api/v1/integrations/ingest/vulnerabilities.csvmultipart file200 (parcial)
3POST /api/v1/integrations/ingest/positive-aspectsJSON de un aspecto201
4POST /api/v1/integrations/ingest/positive-aspects.csvmultipart file200

Además (scope ingest): POST /api/v1/integrations/projects (ensure, 200 / 201). Scope extract: GET /api/v1/integrations/reports/index (200), GET /api/v1/integrations/reports/extract (200 / 304) y POST /api/v1/integrations/reports/extract-batch (200 parcial). Y las cuatro rutas de retest (scopes retest_read / retest_write).

Base URL

Extract, ingest y retest van directo al backend Flask. No hay BFF de Next para estas rutas. Sustituya el host por el de su entorno:

https://api.ejemplo.com/api/v1/integrations/…

Laboratorio local típico: http://localhost:8002.

Camino recomendado

  1. Cree un PAT en Cuenta → Configuración → Integración con los alcances que necesita.
  2. Guarde el secreto una sola vez. EVA no lo vuelve a mostrar.
  3. Pruebe extract, ensure o ingest con curl. Compare con los JSON de examples/.
  4. Si opera un runner: PAT retest_read + retest_write, luego docker pull de la imagen publicada. No compile.
  5. Revogue el token de prueba. El mismo curl debe devolver 401.

Patrón HTTP