Egress

Ver en Markdown

Gestiona OpenWAF Egress, la pasarela entre tus agentes IA y sus proveedores, con destinos, credenciales, agentes y eventos.

En esta página

OpenWAF Egress se sitúa entre tus agentes IA y sus proveedores. Los agentes llaman a la pasarela con un token sustituto y la pasarela añade la credencial real del proveedor, inspecciona la petición y bloquea inyecciones, fugas de datos y destinos no permitidos. Leer exige el rol readonly y escribir admin, ambos de toda la organización; crear y cambiar agentes, destinos y credenciales y leer los eventos exige que la organización tenga activada la función egress (si no, 403 feature_disabled). Consulta OpenWAF Egress.

OperaciónRuta
Ver el estado del egressGET /v1/orgs/{org}/egress
Listar destinosGET /v1/orgs/{org}/egress/targets
Crear un destinoPOST /v1/orgs/{org}/egress/targets
Borrar un destinoDELETE /v1/orgs/{org}/egress/targets/{target}
Guardar la credencial de un destinoPUT /v1/orgs/{org}/egress/targets/{target}/credential
Borrar la credencial de un destinoDELETE /v1/orgs/{org}/egress/targets/{target}/credential
Listar agentesGET /v1/orgs/{org}/egress/agents
Crear un agentePOST /v1/orgs/{org}/egress/agents
Ver un agenteGET /v1/orgs/{org}/egress/agents/{agent}
Modificar un agentePATCH /v1/orgs/{org}/egress/agents/{agent}
Borrar un agenteDELETE /v1/orgs/{org}/egress/agents/{agent}
Rotar el token de un agentePOST /v1/orgs/{org}/egress/agents/{agent}/rotate-token
Listar eventos de egressGET /v1/orgs/{org}/egress/events
Stream de eventos de egressGET /v1/orgs/{org}/egress/events/stream

Ver el estado del egress

GET /v1/orgs/{org}/egress

Devuelve el estado del egress de la organización. Se puede leer sin la función egress (enabled a falso). Sin la función, leer y borrar agentes, destinos y credenciales sigue funcionando para que la organización pueda retirar sus claves.

Rol necesario: readonly o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).

Respuesta

CampoTipoDescripción
enabledbooleanLa organización tiene la función egress.
gateway_urlstring
credentials_availablebooleanAhora se pueden guardar credenciales.

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "enabled": false,
  "gateway_url": "https://egress.openwaf.dev",
  "credentials_available": false
}

Listar destinos

GET /v1/orgs/{org}/egress/targets

Lista los destinos de egress, los proveedores del catálogo y los propios, con el estado de su credencial.

Rol necesario: readonly o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).

Respuesta

CampoTipoDescripción
items[].idstringId.
items[].namestringNombre.
items[].base_urlstring
items[].hoststring
items[].auth_headerstring
items[].auth_prefixstring
items[].custombooleanDestino propio de la organización (false = catálogo).
items[].docs_urlstring
items[].credentialEgressCredential

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/targets" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "items": [
    {
      "id": "openrouter",
      "name": "example.com",
      "base_url": "https://llm.example.com/v1",
      "host": "www.example.com",
      "auth_header": "Authorization",
      "auth_prefix": "Bearer ",
      "custom": false,
      "docs_url": "https://platform.openai.com/docs/api-reference",
      "credential": {
        "fingerprint": "sha256:3f9a1c2b7d4e",
        "updated_at": "2026-10-27T09:30:00Z",
        "updated_by": "token:11111111-2222-4333-8444-555555555555"
      }
    }
  ]
}

Crear un destino

POST /v1/orgs/{org}/egress/targets

Crea un destino propio HTTPS. base_url debe ser https:// en el puerto 443 con un nombre DNS público (sin dirección IP, usuario, consulta ni fragmento). En cada petición la pasarela comprueba además que el nombre solo resuelve a direcciones públicas (ssrf_blocked).

Rol necesario: admin o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).

Cuerpo de la petición

Tipo de contenido application/json.

CampoTipoObligatorioDescripción
idstringSíNo puede ser un id del catálogo. Patrón ^[a-z][a-z0-9-]{1,31}$.
namestringSíNombre. De 1 a 100 caracteres.
base_urlstringSíComo mucho 2048 caracteres.
auth_headerstringNoPor defecto Authorization. Patrón ^[A-Za-z0-9-]{1,64}$.
auth_prefixstringNoPor defecto Bearer con Authorization y vacío con otras cabeceras. Como mucho 32 caracteres.

Respuesta

CampoTipoDescripción
idstringId.
namestringNombre.
base_urlstring
hoststring
auth_headerstring
auth_prefixstring
custombooleanDestino propio de la organización (false = catálogo).
docs_urlstring
credentialEgressCredential

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).
409El estado actual no lo permite (conflict).
422Error de validación (invalid).

Ejemplo

curl -X POST "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/targets" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "id": "internal-llm",
    "name": "Internal LLM",
    "base_url": "https://llm.example.com/v1"
  }'
201
{
  "id": "openrouter",
  "name": "example.com",
  "base_url": "https://llm.example.com/v1",
  "host": "www.example.com",
  "auth_header": "Authorization",
  "auth_prefix": "Bearer ",
  "custom": false,
  "docs_url": "https://platform.openai.com/docs/api-reference",
  "credential": {
    "fingerprint": "sha256:3f9a1c2b7d4e",
    "updated_at": "2026-10-27T09:30:00Z",
    "updated_by": "token:11111111-2222-4333-8444-555555555555"
  }
}

Borrar un destino

DELETE /v1/orgs/{org}/egress/targets/{target}

Borra un destino propio y su credencial. Los destinos del catálogo no se pueden borrar.

Rol necesario: admin o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
targetrutastringSíId del destino de egress: un id del catálogo como openai o el de un destino propio. Patrón ^[a-z][a-z0-9-]{1,31}$.

Respuesta

  • 204: Borrado. Sin cuerpo.

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).
404No existe o el token no lo ve (not_found).
409target_in_use: algún agente lo permite.
422invalid: los destinos del catálogo no se borran.

Ejemplo

curl -X DELETE "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/targets/openai" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"

Guardar la credencial de un destino

PUT /v1/orgs/{org}/egress/targets/{target}/credential

Guarda o sustituye la credencial del proveedor de un destino. Es de solo escritura, se guarda en un almacén de secretos dedicado, nunca se registra ni se devuelve; la respuesta solo lleva su huella (sha256: y 12 caracteres hexadecimales).

Rol necesario: admin o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
targetrutastringSíId del destino de egress: un id del catálogo como openai o el de un destino propio. Patrón ^[a-z][a-z0-9-]{1,31}$.

Cuerpo de la petición

Tipo de contenido application/json.

CampoTipoObligatorioDescripción
secretstringSíDe 1 a 8192 caracteres.

Respuesta

CampoTipoDescripción
idstringId.
namestringNombre.
base_urlstring
hoststring
auth_headerstring
auth_prefixstring
custombooleanDestino propio de la organización (false = catálogo).
docs_urlstring
credentialEgressCredential

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).
404No existe o el token no lo ve (not_found).
422Error de validación (invalid).
502Una dependencia lo rechazó o no respondió; reinténtalo más tarde.
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl -X PUT "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/targets/openai/credential" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "secret": "sk-…"
  }'
200
{
  "id": "openrouter",
  "name": "example.com",
  "base_url": "https://llm.example.com/v1",
  "host": "www.example.com",
  "auth_header": "Authorization",
  "auth_prefix": "Bearer ",
  "custom": false,
  "docs_url": "https://platform.openai.com/docs/api-reference",
  "credential": {
    "fingerprint": "sha256:3f9a1c2b7d4e",
    "updated_at": "2026-10-27T09:30:00Z",
    "updated_by": "token:11111111-2222-4333-8444-555555555555"
  }
}

Borrar la credencial de un destino

DELETE /v1/orgs/{org}/egress/targets/{target}/credential

Borra la credencial del proveedor de un destino, todas sus versiones guardadas. Es idempotente y también funciona sin la función egress.

Rol necesario: admin o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
targetrutastringSíId del destino de egress: un id del catálogo como openai o el de un destino propio. Patrón ^[a-z][a-z0-9-]{1,31}$.

Respuesta

  • 204: Borrada (o no existía). Sin cuerpo.

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).
404No existe o el token no lo ve (not_found).
502Una dependencia lo rechazó o no respondió; reinténtalo más tarde.
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl -X DELETE "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/targets/openai/credential" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"

Listar agentes

GET /v1/orgs/{org}/egress/agents

Lista los agentes de egress de la organización.

Rol necesario: readonly o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).

Respuesta

CampoTipoDescripción
items[].idstring (uuid)Id.
items[].namestringNombre.
items[].descriptionstring
items[].allowed_targetsarray de string
items[].enforce_injectionboolean
items[].block_dlpboolean
items[].disabledboolean
items[].token_prefixstringComienzo del token (OWE_TOKEN_ y 6 caracteres) para reconocerlo.
items[].token_rotated_atstring (date-time)
items[].created_atstring (date-time)Fecha de creación.
items[].created_bystringQuién lo creó (actor).
items[].updated_atstring (date-time)Último cambio.
items[].base_urlsmapa de stringURL base del SDK para cada destino permitido.

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "items": [
    {
      "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
      "name": "example.com",
      "description": "Support assistant",
      "allowed_targets": [
        "openai"
      ],
      "enforce_injection": false,
      "block_dlp": false,
      "disabled": false,
      "token_prefix": "OWE_TOKEN_ab12cd",
      "token_rotated_at": "2026-10-27T09:30:00Z",
      "created_at": "2026-10-27T09:30:00Z",
      "created_by": "token:11111111-2222-4333-8444-555555555555",
      "updated_at": "2026-10-27T09:30:00Z",
      "base_urls": {
        "openrouter": "https://egress.openwaf.dev/v1/agent/support-bot/proxy/openrouter"
      }
    }
  ]
}

Crear un agente

POST /v1/orgs/{org}/egress/agents

Crea un agente que puede llamar a algunos destinos a través de la pasarela. Su token sustituto solo se devuelve en esta respuesta. name forma parte de las URL de la pasarela del agente y no se puede cambiar.

Rol necesario: admin o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).

Cuerpo de la petición

Tipo de contenido application/json.

CampoTipoObligatorioDescripción
namestringSíÚnico en la organización; forma parte de sus URL de la pasarela y no cambia. Patrón ^[a-z0-9][a-z0-9-]{0,62}$.
descriptionstringNoComo mucho 500 caracteres.
allowed_targetsarray de stringSíDe 1 a 32 elementos.
enforce_injectionbooleanNoPor defecto true.
block_dlpbooleanNoPor defecto true.
disabledbooleanNoPor defecto false.

Respuesta

CampoTipoDescripción
agentEgressAgent
tokenstringToken sustituto OWE_TOKEN_…; se muestra una sola vez (solo se guarda su SHA-256).

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).
409El estado actual no lo permite (conflict).
422Error de validación (invalid).

Ejemplo

curl -X POST "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "name": "support-bot",
    "allowed_targets": [
      "openai"
    ]
  }'
201
{
  "agent": {
    "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
    "name": "example.com",
    "description": "Support assistant",
    "allowed_targets": [
      "openai"
    ],
    "enforce_injection": false,
    "block_dlp": false,
    "disabled": false,
    "token_prefix": "OWE_TOKEN_ab12cd",
    "token_rotated_at": "2026-10-27T09:30:00Z",
    "created_at": "2026-10-27T09:30:00Z",
    "created_by": "token:11111111-2222-4333-8444-555555555555",
    "updated_at": "2026-10-27T09:30:00Z",
    "base_urls": {
      "openrouter": "https://egress.openwaf.dev/v1/agent/support-bot/proxy/openrouter"
    }
  },
  "token": "owf_…"
}

Ver un agente

GET /v1/orgs/{org}/egress/agents/{agent}

Devuelve un agente de egress.

Rol necesario: readonly o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
agentrutastring (uuid)SíId del agente de egress.

Respuesta

CampoTipoDescripción
idstring (uuid)Id.
namestringNombre.
descriptionstring
allowed_targetsarray de string
enforce_injectionboolean
block_dlpboolean
disabledboolean
token_prefixstringComienzo del token (OWE_TOKEN_ y 6 caracteres) para reconocerlo.
token_rotated_atstring (date-time)
created_atstring (date-time)Fecha de creación.
created_bystringQuién lo creó (actor).
updated_atstring (date-time)Último cambio.
base_urlsmapa de stringURL base del SDK para cada destino permitido.

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).
404No existe o el token no lo ve (not_found).

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents/4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
  "name": "example.com",
  "description": "Support assistant",
  "allowed_targets": [
    "openai"
  ],
  "enforce_injection": false,
  "block_dlp": false,
  "disabled": false,
  "token_prefix": "OWE_TOKEN_ab12cd",
  "token_rotated_at": "2026-10-27T09:30:00Z",
  "created_at": "2026-10-27T09:30:00Z",
  "created_by": "token:11111111-2222-4333-8444-555555555555",
  "updated_at": "2026-10-27T09:30:00Z",
  "base_urls": {
    "openrouter": "https://egress.openwaf.dev/v1/agent/support-bot/proxy/openrouter"
  }
}

Modificar un agente

PATCH /v1/orgs/{org}/egress/agents/{agent}

Cambia un agente. Los campos ausentes conservan su valor; el nombre no se puede cambiar.

Rol necesario: admin o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
agentrutastring (uuid)SíId del agente de egress.

Cuerpo de la petición

Tipo de contenido application/json.

CampoTipoObligatorioDescripción
descriptionstringNoComo mucho 500 caracteres.
allowed_targetsarray de stringNoDe 1 a 32 elementos.
enforce_injectionbooleanNo
block_dlpbooleanNo
disabledbooleanNo

Respuesta

CampoTipoDescripción
idstring (uuid)Id.
namestringNombre.
descriptionstring
allowed_targetsarray de string
enforce_injectionboolean
block_dlpboolean
disabledboolean
token_prefixstringComienzo del token (OWE_TOKEN_ y 6 caracteres) para reconocerlo.
token_rotated_atstring (date-time)
created_atstring (date-time)Fecha de creación.
created_bystringQuién lo creó (actor).
updated_atstring (date-time)Último cambio.
base_urlsmapa de stringURL base del SDK para cada destino permitido.

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).
404No existe o el token no lo ve (not_found).
422Error de validación (invalid).

Ejemplo

curl -X PATCH "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents/4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "allowed_targets": [
      "openai",
      "anthropic"
    ]
  }'
200
{
  "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
  "name": "example.com",
  "description": "Support assistant",
  "allowed_targets": [
    "openai"
  ],
  "enforce_injection": false,
  "block_dlp": false,
  "disabled": false,
  "token_prefix": "OWE_TOKEN_ab12cd",
  "token_rotated_at": "2026-10-27T09:30:00Z",
  "created_at": "2026-10-27T09:30:00Z",
  "created_by": "token:11111111-2222-4333-8444-555555555555",
  "updated_at": "2026-10-27T09:30:00Z",
  "base_urls": {
    "openrouter": "https://egress.openwaf.dev/v1/agent/support-bot/proxy/openrouter"
  }
}

Borrar un agente

DELETE /v1/orgs/{org}/egress/agents/{agent}

Borra un agente de egress; su token deja de valer.

Rol necesario: admin o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
agentrutastring (uuid)SíId del agente de egress.

Respuesta

  • 204: Borrado. Sin cuerpo.

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).
404No existe o el token no lo ve (not_found).

Ejemplo

curl -X DELETE "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents/4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"

Rotar el token de un agente

POST /v1/orgs/{org}/egress/agents/{agent}/rotate-token

Da al agente un token sustituto nuevo, que solo se devuelve en esta respuesta. El anterior deja de valer en cuanto las pasarelas cargan la nueva configuración.

Rol necesario: admin o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
agentrutastring (uuid)SíId del agente de egress.

Respuesta

CampoTipoDescripción
agentEgressAgent
tokenstringToken sustituto OWE_TOKEN_…; se muestra una sola vez (solo se guarda su SHA-256).

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).
404No existe o el token no lo ve (not_found).

Ejemplo

curl -X POST "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents/4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c/rotate-token" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "agent": {
    "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
    "name": "example.com",
    "description": "Support assistant",
    "allowed_targets": [
      "openai"
    ],
    "enforce_injection": false,
    "block_dlp": false,
    "disabled": false,
    "token_prefix": "OWE_TOKEN_ab12cd",
    "token_rotated_at": "2026-10-27T09:30:00Z",
    "created_at": "2026-10-27T09:30:00Z",
    "created_by": "token:11111111-2222-4333-8444-555555555555",
    "updated_at": "2026-10-27T09:30:00Z",
    "base_urls": {
      "openrouter": "https://egress.openwaf.dev/v1/agent/support-bot/proxy/openrouter"
    }
  },
  "token": "owf_…"
}

Listar eventos de egress

GET /v1/orgs/{org}/egress/events

Lista las peticiones bloqueadas por la pasarela de egress, de la más reciente a la más antigua, con los mismos filtros y forma que Listar eventos. Cada bloqueo es un evento con action block, attack_type egress, el código en rule_name (injection_detected, data_leak_blocked, ssrf_blocked, egress_blocked, body_too_large), el destino en host, el nombre del agente en user_agent y los identificadores de detección en msg. Nunca incluye el cuerpo de la petición.

Rol necesario: readonly o superior. De toda la organización. Exige la función egress.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
sinceconsultastring (date-time)NoRFC 3339; por defecto until - 24 h.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
actionconsultastringNoRepetible (cualquiera de los valores, como mucho 20). Uno de block, log, challenge, allow.
ipconsultastringNoIPv4 o IPv6 (se normaliza); repetible.
hostconsultastringNoNombre exacto (sin distinguir mayúsculas); repetible. De 1 a 253 caracteres.
pathconsultastringNoRuta exacta (1-2048 bytes); repetible. De 1 a 2048 caracteres.
statusconsultaintegerNoEstado HTTP de la respuesta; repetible. De 100 a 599.
rule_nameconsultastringNorule_name exacto (el código de un bloqueo de egress, p. ej. injection_detected); repetible. De 1 a 200 caracteres.
not_actionconsultastringNoExcluye esas acciones; repetible. Uno de block, log, challenge, allow.
not_ipconsultastringNoExcluye esas IP; repetible.
not_hostconsultastringNoExcluye esos nombres; repetible. De 1 a 253 caracteres.
not_pathconsultastringNoExcluye esas rutas exactas; repetible. De 1 a 2048 caracteres.
not_statusconsultaintegerNoExcluye esos estados HTTP; repetible. De 100 a 599.
not_rule_nameconsultastringNoExcluye esos rule_name; repetible. De 1 a 200 caracteres.
qconsultastringNoTexto libre (sin distinguir mayúsculas) en host, ruta, IP, método, rule_name, attack_type, msg, user agent, país, rule_id y status. Como mucho 200 caracteres.
limitconsultaintegerNoNúmero máximo de elementos. Por defecto 100. De 1 a 1000.
cursorconsultastringNonext_cursor de la página anterior.

Respuesta

  • 200: Devuelve un objeto con los campos de abajo.
CampoTipoDescripción
itemsarray de EdgeEvent
next_cursorstring

Errores

EstadoDescripción
400Petición mal formada (bad_request).
403El rol o los límites del token no lo permiten (forbidden).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/events?rule_name=injection_detected" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "items": [
    {
      "event_id": "8b3e5f7a-1c2d-4e6f-9a0b-3c5d7e9f1a2b",
      "zone_id": "6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d",
      "node_id": "edge-node",
      "ts": "2026-10-27T09:29:58Z",
      "host": "www.example.com",
      "ip": "203.0.113.10",
      "method": "POST",
      "path": "/login",
      "status": 429,
      "action": "block",
      "rule_id": 0,
      "rule_name": "rate_rule:login",
      "attack_type": "rate_limit",
      "msg": "",
      "country_code": "ES",
      "asn": 64500,
      "user_agent": "Mozilla/5.0",
      "tls_fingerprint": "",
      "received_at": "2026-10-27T09:29:59Z",
      "rate_rule": "login"
    }
  ],
  "next_cursor": ""
}

Stream de eventos de egress

GET /v1/orgs/{org}/egress/events/stream

Emite como Server-Sent Events los bloqueos de la pasarela de egress, con las mismas tramas, reanudación y límites que Stream de eventos y los eventos de Listar eventos de egress.

Rol necesario: readonly o superior. De toda la organización. Exige la función egress.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
Last-Event-IDcabecerastringNoid del último evento recibido de un stream; tiene prioridad sobre cursor.
cursorconsultastringNoid de un evento de un stream anterior: se empieza justo después.
actionconsultastringNoRepetible (cualquiera de los valores, como mucho 20). Uno de block, log, challenge, allow.
ipconsultastringNoIPv4 o IPv6 (se normaliza); repetible.
hostconsultastringNoNombre exacto (sin distinguir mayúsculas); repetible. De 1 a 253 caracteres.
pathconsultastringNoRuta exacta (1-2048 bytes); repetible. De 1 a 2048 caracteres.
statusconsultaintegerNoEstado HTTP de la respuesta; repetible. De 100 a 599.
rule_nameconsultastringNorule_name exacto (el código de un bloqueo de egress, p. ej. injection_detected); repetible. De 1 a 200 caracteres.
not_actionconsultastringNoExcluye esas acciones; repetible. Uno de block, log, challenge, allow.
not_ipconsultastringNoExcluye esas IP; repetible.
not_hostconsultastringNoExcluye esos nombres; repetible. De 1 a 253 caracteres.
not_pathconsultastringNoExcluye esas rutas exactas; repetible. De 1 a 2048 caracteres.
not_statusconsultaintegerNoExcluye esos estados HTTP; repetible. De 100 a 599.
not_rule_nameconsultastringNoExcluye esos rule_name; repetible. De 1 a 200 caracteres.
qconsultastringNoTexto libre (sin distinguir mayúsculas) en host, ruta, IP, método, rule_name, attack_type, msg, user agent, país, rule_id y status. Como mucho 200 caracteres.

Respuesta

  • 200: Stream de Server-Sent Events. Cuerpo de tipo text/event-stream.

Errores

EstadoDescripción
400Petición mal formada (bad_request).
403El rol o los límites del token no lo permiten (forbidden).
429Demasiadas peticiones (rate_limited); espera los segundos de Retry-After.
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

No está en los SDK: abre el stream con EventSource o con cualquier cliente de Server-Sent Events.

curl -N "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/events/stream" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar