Referencia del egress alojado

Ver en Markdown

Rutas, roles, límites, el catálogo de proveedores, los errores de la API y las respuestas de la pasarela de egress de IA alojada en OpenWAF Cloud.

En esta página

La pasarela alojada es la de código abierto, OpenWAF Egress, ejecutada por OpenWAF Cloud en https://egress.openwaf.dev, con los agentes, los destinos y las claves gestionados por organización en lugar de con un fichero de configuración.

URL de la pasarela

https://egress.openwaf.dev/v1/agent/<nombre del agente>/proxy/<id del destino>/<ruta del proveedor>
Authorization: Bearer OWE_TOKEN_…

<ruta del proveedor> y la cadena de consulta se añaden a la URL base del destino: …/proxy/openrouter/chat/completions va a https://openrouter.ai/api/v1/chat/completions. Las base_urls de cada agente dan la URL de cada destino al que puede llamar.

Frente a una pasarela en tu equipo:

  • El agente se identifica por su token, y la URL tiene que nombrar al agente de ese token; ni /v1/proxy/<destino>/… ni la cabecera X-OpenWAF-Agent se usan.
  • El token del agente nunca se reenvía al proveedor; en su lugar, la cabecera de autenticación del destino lleva la clave del proveedor.
  • Un destino sin clave de proveedor se rechaza en lugar de llamarlo sin clave.
  • Además de la comprobación previa, la dirección a la que se conecta de verdad se vuelve a comprobar contra los rangos privados y reservados.
  • Los cambios de agentes, destinos y claves llegan a la pasarela en segundos; una clave de proveedor se guarda en caché hasta cinco minutos.

Las comprobaciones, los detectores, los límites del cuerpo y los plazos son los de la pasarela de código abierto: mira el modelo de seguridad y los límites fijos.

Errores de la pasarela

Los errores de la propia pasarela son JSON con un código en error y un message (en inglés); las respuestas del proveedor llegan sin cambios.

EstadoerrorCausa
401token_requiredNo hay cabecera Authorization
401invalid_tokenToken desconocido o rotado, o el agente está desactivado o borrado
401unauthorized_agentLa URL no nombra al agente del token
403egress_blockedEl destino no está entre los permitidos del agente (otro agente de la organización sí puede llamarlo)
403ssrf_blockedEl destino resuelve a una dirección privada o reservada
403injection_detectedUn detector de inyección de prompt ha saltado con el cuerpo (Bloquear la inyección de prompts activado)
403data_leak_blockedUn patrón de fuga de datos ha saltado con el cuerpo (Bloquear fugas de datos activado)
404unknown_targetNingún agente de la organización puede llamar a ese id de destino, o no existe
413body_too_largeMás de 8 MiB, o más de 1 MiB de texto que inspeccionar
502credential_resolution_failedEl destino no tiene clave de proveedor, o no se pudo leer
502upstream_errorNo se pudo llegar al proveedor
503policy_unavailableLa pasarela no tiene una política vigente para la petición; reinténtalo más tarde

Las respuestas 403 y 413 aparecen en peticiones bloqueadas. La página de solución de problemas explica cada código con detalle.

API de gestión

Todas las rutas cuelgan de https://dash.openwaf.dev/v1/orgs/{org}, con un token de API (Authorization: Bearer owf_…) o la sesión del panel. Leer necesita cualquier rol de toda la organización; escribir, admin de toda la organización. Los miembros y tokens limitados a un cliente o a una zona reciben 403. Las escrituras admiten un X-Change-Reason opcional; no son configuración versionada y rechazan dry_run. Los SDK de TypeScript y Python incluyen todas las rutas salvo el flujo.

RutaQué hace
GET /egress{enabled, gateway_url, credentials_available}: si Egress IA está activado en la organización; se puede leer aunque no lo esté
GET /egress/targetsEl catálogo y después los destinos propios, cada uno con los metadatos de su clave (credential: huella, updated_at, updated_by, o null)
POST /egress/targetsAñade un destino propio: id, name, base_url, auth_header, auth_prefix
DELETE /egress/targets/{target}Borra un destino propio y su clave
PUT /egress/targets/{target}/credentialPone o reemplaza la clave: {"secret": "…"}; responde el destino con la huella de la clave
DELETE /egress/targets/{target}/credentialQuita la clave
GET /egress/agents, GET /egress/agents/{id}Agentes, con base_urls por destino permitido y token_prefix
POST /egress/agentsCrea un agente: name, description, allowed_targets, enforce_injection, block_dlp, disabled; responde {agent, token}
PATCH /egress/agents/{id}Cambia description, allowed_targets (se sustituye entera), enforce_injection, block_dlp o disabled
POST /egress/agents/{id}/rotate-tokenToken nuevo; responde {agent, token}
DELETE /egress/agents/{id}Borra un agente
GET /egress/eventsPeticiones bloqueadas, las más recientes primero, con los filtros de los eventos de seguridad
GET /egress/events/streamPeticiones bloqueadas como Server-Sent Events

Leer y borrar agentes, destinos y claves funciona aunque Egress IA esté desactivado en la organización; las demás escrituras, y los eventos, responden 403 feature_disabled. Las respuestas que llevan un token o ponen una clave van con Cache-Control: no-store.

Límites y formatos

ElementoRegla
Nombre del agente^[a-z0-9][a-z0-9-]{0,62}$, único en la organización, no se puede cambiar
DescripciónHasta 500 caracteres
Destinos permitidosDe 1 a 32 ids de destino por agente
TokenOWE_TOKEN_ y 32 bytes aleatorios en base64url, se enseña una vez; solo se guardan su SHA-256 y su prefijo (OWE_TOKEN_ y 6 caracteres)
Id de destino propio^[a-z][a-z0-9-]{1,31}$, que no sea un id del catálogo
Nombre de destino propioHasta 100 caracteres
URL de destino propiohttps://, puerto 443, nombre DNS público, sin IP, credenciales, query ni fragmento
Cabecera y prefijoUn nombre de cabecera de hasta 64 caracteres; un prefijo de hasta 32 caracteres imprimibles
Clave de proveedorDe 1 a 8192 caracteres, sin espacios ni caracteres de control

Errores de la API

EstadocodeCuándo
403feature_disabledEgress IA no está activado en la organización
403forbiddenEl rol no basta, o el miembro o el token está limitado a un cliente o a una zona
404not_foundNo hay ese agente o destino en la organización
409conflictYa existe un agente o un destino propio con ese nombre o id
409target_in_useSe intenta borrar un destino propio que algún agente aún permite
422invalidUn campo incumple las reglas de arriba (field lo nombra), o se intenta borrar un destino del catálogo
502credential_storeEl almacén de credenciales no aceptó el cambio; vuelve a intentarlo
503unavailableAhora mismo no se pueden guardar claves de proveedor (credentials_available es false)

Catálogo

IdProveedorURL baseCabecera de la clave
openrouterOpenRouterhttps://openrouter.ai/api/v1Authorization: Bearer
openaiOpenAIhttps://api.openai.com/v1Authorization: Bearer
anthropicAnthropichttps://api.anthropic.com/v1x-api-key
huggingfaceHugging Facehttps://router.huggingface.co/v1Authorization: Bearer
groqGroqhttps://api.groq.com/openai/v1Authorization: Bearer
mistralMistral AIhttps://api.mistral.ai/v1Authorization: Bearer
geminiGoogle Gemini (compatible con OpenAI)https://generativelanguage.googleapis.com/v1beta/openaiAuthorization: Bearer
deepseekDeepSeekhttps://api.deepseek.com/v1Authorization: Bearer
togetherTogether AIhttps://api.together.xyz/v1Authorization: Bearer
fireworksFireworks AIhttps://api.fireworks.ai/inference/v1Authorization: Bearer
cohereCoherehttps://api.cohere.com/v2Authorization: Bearer
perplexityPerplexityhttps://api.perplexity.aiAuthorization: Bearer
xaixAIhttps://api.x.ai/v1Authorization: Bearer

Herramientas MCP

egress_status y egress_events leen; egress_create_agent, egress_update_agent, egress_rotate_token, egress_delete_agent, egress_add_target, egress_remove_target y egress_remove_credential escriben, con confirm=false para comprobar primero y sin expected_version. No hay herramienta para poner una clave de proveedor. Mira las herramientas MCP.

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar