- 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
Las operaciones de conexión llevan un header
X-Product-Name. Nombra el producto dueño de la conexión.
- 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, ves las conexiones de un solo producto. Sin él, ves todas las conexiones dentro del alcance.
- Fetcher pasa el valor a minúsculas. Acepta letras, dígitos, guiones bajos y guiones, hasta 100 caracteres.
metadata.source, que el payload de creación exige.
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.
DATASOURCE_{NAME}_* — aparecen solo en la página 1, delante de las conexiones almacenadas, y cuentan para total.
Filtrado
El listado de conexiones acepta dos filtros más allá de la ventana de fechas.
type— uno dePOSTGRESQL,MYSQL,ORACLE,SQL_SERVERoMONGODB. Fetcher pasa el valor a mayúsculas.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.

