Qué resuelve Discovery
Con las subidas manuales de archivos, los equipos exportan archivos, los transfieren, vigilan las fallas y vuelven a subirlos cuando algo sale mal. Este proceso toma mucho tiempo, es propenso a errores y se rompe cuando el volumen de datos crece. Discovery reemplaza el pipeline manual. Se conecta a sistemas externos mediante el motor de extracción, lee sus esquemas y trae transacciones a Matcher bajo demanda.
Cómo funciona Discovery
Discovery se ejecuta dentro de Matcher. El motor integrado administra las conexiones a bases de datos externas y ejecuta las extracciones de forma local. Discovery expone esas conexiones, coordina el proceso de extracción y entrega los resultados directamente a Ingestion. El workflow tiene ocho pasos:
- Crear una conexión: registra una base de datos con su dirección y su usuario, o una conexión REST con la API de un proveedor.
- Verificar el estado: ve cuántas conexiones tiene el tenant y cuándo se sincronizaron por última vez.
- Explorar las conexiones: ve las conexiones de base de datos del tenant.
- Inspeccionar una conexión: revisa el esquema para entender qué campos están disponibles.
- Probar una conexión: valida la conexión antes de comprometerte con una extracción.
- Crear una extracción: pide que Matcher traiga datos de una fuente específica.
- Monitorear el progreso: sigue el estado de la extracción mientras los datos llegan.
- Actualizar las conexiones: vuelve a sincronizar las conexiones desde el motor integrado.
Workflow de Discovery
Crear una conexión
Registra una conexión de base de datos para el tenant.configName, databaseType, host, port, databaseName y userName son obligatorios. schema y password son opcionales, y Matcher nunca devuelve password. Una creación exitosa devuelve 201. Actualiza una conexión con PATCH y elimínala con DELETE en /v1/discovery/connections/{connectionId}.
Crear una conexión REST
Crea una conexión REST para extraer datos de la API de un proveedor en lugar de una base de datos.configName y connectorType son obligatorios. connectorType es PAGBANK, STRIPE o PIX_BCB. baseURL es opcional y define la dirección de la API del proveedor para esta conexión. Cada tipo de conector también exige sus propios campos de credencial:
Matcher almacena las credenciales cifradas. Listar los tipos de conector devuelve los mismos nombres de campo en
requiredFields. Una creación exitosa devuelve 201, y la conexión aparece en la lista de conexiones como cualquier otra conexión. En una conexión REST, PATCH acepta solo configName. Para cambiar cualquier otra cosa, elimina la conexión y créala de nuevo.
Verificar el estado de Discovery
Lee el conteo de conexiones del tenant y la hora de la última sincronización.Explorar las conexiones
Lista todas las fuentes de datos disponibles mediante el motor de extracción integrado.configName, databaseType, host, base de datos, status y si se descubrió su esquema.
Obtener una conexión
Recupera una única conexión descubierta por su identificador interno:GET /v1/discovery/connections/{connectionId} devuelve los mismos campos de una conexión. Úsalo cuando ya tienes un connectionId, por ejemplo del canal de consulta de una vinculación de fuente. Da los detalles actuales sin una lista de todas las conexiones.
Inspeccionar una conexión
Antes de extraer, revisa el esquema de una conexión específica para entender qué campos de datos están disponibles.Obtener el historial del esquema
Lee las generaciones anteriores del esquema de una conexión, de la más antigua a la más reciente.connectionId y una lista generations. Cada generación lleva archivedAt, el momento en que dejó de ser el esquema vigente, y sus tables. Cuando todas las tablas de una generación comparten una causa, la generación también lleva retirementCause:
Una conexión desconocida devuelve
404.
Probar una conexión
Valida que Matcher puede alcanzar una conexión y leer de ella antes de crear una extracción.200 con "healthy": false y un errorMessage. Prueba siempre antes de crear una extracción, sobre todo con conexiones nuevas o modificadas hace poco.
Crear una extracción
Pide que Matcher traiga datos de una conexión. La solicitud no indica ningún contexto. Matcher ingiere el resultado en la fuenteFETCHER vinculada a la conexión.
tables debe ser un nombre de tabla exactamente como lo lista el esquema de la conexión. La respuesta devuelve un ID de extracción. Úsalo para monitorear el progreso.
Monitorear el progreso de la extracción
Sigue el estado de una extracción activa consultándolo de forma periódica conGET.
PENDING → SUBMITTED → EXTRACTING → COMPLETE (o FAILED). Una extracción falla cuando su resultado supera 2 GiB. La respuesta lleva el status de la extracción, un errorMessage cuando falló y el ingestionJobId vinculado una vez que la extracción enlaza con la ingesta.
Actualizar las conexiones disponibles
La actualización vuelve a sincronizar las conexiones del tenant desde el motor integrado. Una conexión que el motor ya no informa pasa aUNREACHABLE.
Listar los tipos de conector
Lista los tipos de conector (datasource) que el registro del motor tiene registrados para tu entorno. Cada entrada lleva unacategory derivada del backend (database o rest). El registro es en vivo. Solo aparecen los conectores registrados en el arranque. Esta lista excluye los proveedores de agregadores (Pluggy/Belvo). Aprovisiona esos mediante la superficie de conexiones con agregadores de abajo.
Respuesta
Conexiones con agregadores (Open Finance)
Las conexiones con agregadores de datos de Open Finance (Pluggy o Belvo) permiten que Matcher traiga transacciones desde agregadores bancarios. El material de credenciales (
clientId/secret) se sella al escribir y nunca se devuelve. Cada lectura está libre de secretos por construcción.
Crear una conexión con un agregador
vendor, configName, baseUrl, clientId y secret. El campo accountRef (el id de item de Pluggy o el id de link de Belvo) es opcional. Sin él, Matcher crea una conexión que espera el consentimiento. Consulta Conectar una cuenta mediante consentimiento alojado.
El campo vendor es pluggy o belvo. El campo configName es el nombre con alcance de tenant al que se vincula el endpoint que genera tokens de webhook. Una creación exitosa devuelve 201 con una conexión libre de secretos.
Respuesta
Listar, obtener, actualizar y eliminar
Conectar una cuenta mediante consentimiento alojado
Usa este flujo cuando todavía no tienes el id de item o de link del proveedor. El cliente final autoriza el acceso en el propio widget de consentimiento del proveedor.- Crea la conexión sin
accountRef. La respuesta lleva"awaitingConsent": true. - Obtén el
idde la conexión en la respuesta del listado. - Solicita un token de consentimiento para la conexión. La solicitud no tiene cuerpo.
- Abre el widget de consentimiento del proveedor con el
tokende la respuesta. - Envía el id de item o de link que devuelve el widget como
accountRefenPUT /v1/discovery/aggregator-connections/{id}. No necesitas enviar otros campos.
201 lleva vendor, configName, token, expiresAt, reconsent y accountRef. Para una conexión que ya tiene un accountRef, el token renueva el consentimiento para ese mismo item o link. En ese caso, reconsent es true, y accountRef lleva el id vinculado. Pasa ese accountRef al modo de actualización del widget.
La respuesta muestra el token de consentimiento una sola vez, y Matcher no lo almacena. Úsalo antes de expiresAt. Después de ese momento, el proveedor lo rechaza.
Un id de conexión que no es una conexión con un agregador devuelve 404. Si el proveedor no emite un token, la llamada devuelve 422 (MTCH-0212). Si Matcher no tiene un flujo de consentimiento para el proveedor, la llamada devuelve 422 (MTCH-0213).
Probar una conexión con un agregador
Ejecuta una verificación de conectividad en vivo contra la credencial ya sellada de una conexión existente. Envía solo elconfigName: Matcher lee el proveedor de la conexión almacenada. Esta llamada no toma ninguna credencial ni devuelve ninguna.
Las credenciales almacenadas inválidas dan un resultado de prueba esperado: 200 con "healthy": false, no un error. Una conexión ausente devuelve 404. Matcher no puede probar conexiones de Belvo, así que una conexión de Belvo devuelve 422 (MTCH-0210). Una conexión que espera el consentimiento devuelve 422 (MTCH-0211). En estos casos, no se ejecuta ninguna prueba. Cada fila de la respuesta del listado lleva testable, que indica si una prueba puede ejecutarse.
Respuesta
Tokens de webhook de agregadores
Los agregadores envían señales de cambio de datos a Matcher mediante webhooks. Genera un token opaco vinculado a una conexión de agregador y después configura la URL devuelta en el dashboard del proveedor.
Generar un token de webhook
Matcher devuelve el token en crudo y su URL expuesta al proveedor exactamente una vez. Matcher almacena solo el hash SHA-256 del token.Respuesta
Recibir webhooks
El proveedor llama aPOST /v1/discovery/webhooks/{provider}/{webhookToken} (sin JWT de operador). Dos capas lo autentican: el token opaco de la ruta más una verificación de origen por proveedor. Cuando el proveedor tiene un secreto HMAC, esa verificación es un HMAC-SHA256 válido, en hexadecimal, del cuerpo en crudo en el header X-Webhook-Signature. En los demás casos, es la pertenencia a la lista de IP de origen permitidas del proveedor. Ambas capas fallan de forma cerrada.
Una primera entrega válida devuelve 202 Accepted. Después Matcher trae los datos señalados de forma asíncrona al pipeline de ingesta. Una nueva entrega de un evento que Matcher ya recibió devuelve 200 OK.
Mejores prácticas
Prueba siempre las conexiones antes de extraer
Prueba siempre las conexiones antes de extraer
Recuperarse de una extracción que falla a mitad de ejecución es más difícil que de una prueba fallida. Prueba cada conexión antes de crear una extracción, sobre todo al conectarte a una fuente nueva o después de rotar una credencial.
Inspecciona los esquemas antes de mapear campos
Inspecciona los esquemas antes de mapear campos
Los nombres de campo varían entre sistemas. Un banco puede llamar
value_date a la fecha de la transacción mientras tu ledger usa posting_date. Revisa el esquema antes de configurar los mapeos de campos para evitar discrepancias silenciosas.Monitorea activamente las extracciones de grandes conjuntos de datos
Monitorea activamente las extracciones de grandes conjuntos de datos
Las extracciones grandes toman tiempo. No supongas que terminaron. Consulta el estado de la extracción de forma periódica y luego revisa el trabajo de ingesta vinculado antes de empezar una ejecución de coincidencia. Empezar una ejecución sobre datos incompletos genera excepciones incorrectas.
Próximos pasos
Fuentes externas
Configura las fuentes de datos externas a las que Discovery se conecta.
Mapeo de campos
Mapea los campos de los datos extraídos al modelo de transacciones de Matcher.
Referencia de API de Discovery
Referencia de API completa de los endpoints de Discovery.

