- Jobs de extracción bajo
/v1/fetcher— crear un job, leer un job. - Conexiones bajo
/v1/management/connections— el ciclo de vida de la conexión, las lecturas de esquema, las pruebas de conexión y las dos operaciones de asignación de producto.
Los documentos OpenAPI de este portal son fuentes de renderizado para las páginas de referencia. No son contratos de cliente, ni una base para generar SDKs.
Autenticación
Fetcher acepta un token bearer JWT:
PLUGIN_AUTH_ENABLED activa el middleware de autenticación, y PLUGIN_AUTH_ADDRESS lo apunta al servicio de identidad. El Manager se niega a arrancar cuando activas la autenticación y dejas la dirección vacía. El modo multi-tenant también requiere autenticación efectiva — el router se niega a construir un middleware de tenant sin ella. Consulta Configuración.
Cada una de las 12 operaciones declara 401 y 403. Fetcher autoriza cada solicitud contra la aplicación fetcher, un recurso (connections o fetcher) y una acción que corresponde al método HTTP.
Cinco rutas quedan fuera de la autenticación para que las sondas sigan funcionando: /health, /readyz, /readyz/tenant/{id}, /metrics y /version.
Alcance de producto
Solo crear conexión, listar conexiones y la asignación de conexión leen
X-Product-Name. Identifica el producto dueño de una conexión externa.
- Crear una conexión lo exige. Fetcher rechaza un valor ausente, vacío o compuesto solo de espacios.
- Listar conexiones lo trata como opcional. Con el header, las conexiones almacenadas se acotan a un producto. Sin él, las conexiones almacenadas siguen dentro del alcance del tenant.
- La asignación de conexión lo exige. Los demás endpoints de conexión no consumen este header.
metadata.source, que es obligatorio. Para una conexión externa, ese valor debe coincidir con el producto de la conexión. Los datasources internos quedan fuera de esta comprobación.
Jobs asíncronos
POST /v1/fetcher responde 202 Accepted y devuelve un identificador de job con estado pending. El Worker ejecuta la extracción después de la respuesta.
Fetcher deduplica las solicitudes de job por un hash de solicitud dentro de una ventana de 5 minutos. Una solicitud duplicada dentro de esa ventana responde 200 OK y devuelve el job existente en lugar de encolar un segundo. Un job que ya falló no impide un reintento — puedes reenviarlo.
Para seguir un job, consulta GET /v1/fetcher/{id} de forma periódica, o suscríbete a los eventos terminales que describe Eventos de job.
Paginación
Ambas operaciones de listado — conexiones y conexiones sin asignar — usan paginación por offset con los mismos parámetros de consulta.
Una respuesta de página lleva
items, page, limit y total.
total. Los filtros de producto, fecha de creación y metadata se aplican a las conexiones almacenadas; solo type filtra la lista interna.
Filtrado
El listado de conexiones acepta dos filtros más allá de la ventana de fechas.
type— Fetcher normaliza el valor a mayúsculas y lo usa como filtro de igualdad. Un valor no reconocido normalmente no coincide con ninguna conexión almacenada; el parser no lo limita a cinco valores.metadata.<key>=<value>— una coincidencia exacta sobre una entrada de metadata que guardaste con la conexión. Por ejemplo,metadata.region=br.
FET-0405:
- Una clave que empieza con
$, lo que bloquea la inyección de operadores de consulta. - Una clave que empieza con
_, lo que bloquea los campos internos. - Una clave de más de 64 caracteres, o un valor de más de 256 caracteres.
Errores
Cada error responde
application/problem+json y sigue RFC 9457.
Haz coincidir sobre
code, no sobre title ni detail. Los códigos se agrupan por rango:
Fetcher redacta los fallos a nivel de driver en su frontera. Descarta el error crudo de la base de datos, así que una cadena de conexión, una credencial o un detalle interno del driver nunca llega a un llamador.
Leer la especificación desde un Manager en ejecución
SWAGGER_ENABLED=true monta una referencia Scalar en /swagger/docs y el documento OpenAPI 3.1 en /swagger/openapi.json y /swagger/openapi.yaml. Mantenlo apagado en producción.
Próximos pasos
Referencia de API
Las 12 operaciones, con las formas completas de solicitud y respuesta.
Eventos de job
Reacciona a
job.completed y job.failed en lugar de consultar de forma periódica.Conceptos centrales
Conexiones, descubrimiento de esquemas, jobs de extracción, filtros y resultados.
Configuración
Las variables de entorno detrás de la autenticación, los límites de paginación y la superficie de API.

