O que o Discovery resolve
O envio manual de arquivos cria atrito em cada passo. Os times exportam arquivos, transferem, monitoram falhas e reenviam quando algo dá errado. Esse processo consome tempo, é sujeito a erros e quebra quando o volume de dados cresce. O Discovery substitui o pipeline manual. Ele se conecta a sistemas externos pelo motor de extração, detecta as fontes de dados disponíveis automaticamente e puxa transações para o Matcher sob demanda. Quando uma nova fonte de dados aparece (uma nova conexão bancária, um novo processador de pagamento), o Discovery a encontra sem reconfiguração.
Como o Discovery funciona
O Discovery roda dentro do Matcher. Não existe serviço de extração separado para fazer deploy. O motor embutido gerencia as conexões com bancos de dados externos e roda as extrações localmente. O Discovery expõe essas conexões e coordena o processo de extração, entregando os resultados direto para a Ingestão. O workflow tem sete passos:
- Verificar o status: confirme que o Discovery e o motor embutido dele estão disponíveis.
- Navegar pelas conexões: veja todas as fontes de dados a que o motor embutido tem acesso.
- Inspecionar uma conexão: revise o schema para entender quais campos estão disponíveis.
- Testar uma conexão: valide a conexão antes de se comprometer com uma extração.
- Criar uma extração: peça que o Matcher puxe dados de uma fonte específica.
- Monitorar o progresso: acompanhe o status da extração conforme os dados chegam.
- Atualizar as conexões: refaça a varredura quando novas fontes de dados aparecerem.
Workflow do Discovery
Verificar o status do Discovery
Antes de começar, verifique se o Discovery e o motor de extração embutido estão operacionais.Navegar pelas conexões
Liste todas as fontes de dados disponíveis pelo motor de extração embutido.Obter uma conexão
Recupere uma única conexão descoberta pelo identificador interno dela:GET /v1/discovery/connections/{connectionId} retorna o ConnectionResponse completo (nome, tipo, status e metadados) de uma conexão. Use quando você já tem um connectionId, por exemplo, do trilho de consulta de um binding de fonte. Ele dá os detalhes atuais sem uma lista de todas as conexões.
Inspecionar uma conexão
Antes de extrair, revise o schema de uma conexão específica para entender quais campos de dados estão disponíveis.Testar uma conexão
Valide se o Matcher consegue alcançar e ler uma conexão antes de criar uma extração.Criar uma extração
Peça que o Matcher puxe dados de transações de uma conexão específica para o contexto atual.Monitorar o progresso da extração
Acompanhe o status de uma extração ativa fazendo polling do status dela comGET.
PENDING → SUBMITTED → EXTRACTING → COMPLETE (ou FAILED/CANCELLED). A resposta carrega o status da extração, um errorMessage quando ela falhou e o ingestionJobId vinculado assim que a extração faz a ponte para a ingestão.
Atualizar as conexões disponíveis
Quando você registrar uma nova fonte de dados no motor embutido, dispare uma atualização para o Discovery reconhecê-la.Listar os tipos de conector
Liste os tipos de conector (datasource) que o registro do motor registrou para este deploy. Cada entrada carrega umacategory derivada do backend (database ou rest). O registro é ao vivo. Apenas os conectores registrados no boot aparecem. Esta lista não inclui os fornecedores agregadores (Pluggy/Belvo). Provisione esses pela superfície de conexões de agregador abaixo.
Resposta
Conexões de agregador (Open Finance)
As conexões com agregadores de dados de Open Finance (Pluggy ou Belvo) permitem que o Matcher puxe transações de agregadores bancários. O material de credencial (
clientId/secret) é selado na escrita e nunca devolvido. Cada leitura é livre de segredos por construção.
Criar uma conexão de agregador
vendor, configName, baseUrl, clientId e secret. O campo accountRef é opcional. Omita para criar uma conexão que aguarda o consentimento do cliente final no fluxo hospedado pelo fornecedor. Depois vincule com PUT o id do item ou do link devolvido.
O campo vendor é pluggy ou belvo. O campo configName é o nome no escopo do tenant a que o endpoint de emissão de token de webhook se vincula. Uma criação bem-sucedida retorna 201 com uma conexão livre de segredos.
Resposta
Listar, obter, atualizar e excluir
Testar uma conexão de agregador
Rode uma verificação de conectividade ao vivo contra a credencial já selada de uma conexão existente e vinculada, endereçada porconfigName. O Matcher lê o fornecedor da conexão armazenada. Esta chamada não recebe credencial e não devolve nenhuma.
Credenciais armazenadas inválidas dão um resultado de teste esperado: 200 com "healthy": false, não um erro. Uma conexão ausente, uma conexão não vinculada ou um fornecedor existente sem caminho de teste de conectividade (hoje, a Belvo) aparece pela resposta de erro padrão. Nenhum teste roda. Use o campo testable da resposta da lista antes de oferecer a ação.
Resposta
Tokens de webhook de agregador
Os agregadores enviam sinais de mudança de dados para o Matcher por webhooks. Emita um token opaco vinculado a uma conexão de agregador e depois configure a URL devolvida no dashboard do fornecedor.
Emitir um token de webhook
O Matcher devolve o token bruto e a URL voltada ao provedor exatamente uma vez. O Matcher armazena apenas o hash SHA-256 do token.Resposta
Receber webhooks
O fornecedor chamaPOST /v1/discovery/webhooks/{provider}/{webhookToken} (sem JWT de operador). Duas camadas autenticam a chamada: o token opaco no path mais uma verificação de origem por provedor. Essa verificação é um HMAC-SHA256 válido do corpo bruto no header X-Webhook-Signature, ou a presença na lista de IPs de origem permitidos do provedor. As duas camadas falham fechadas.
Uma primeira entrega válida retorna 202 Accepted. O Matcher então puxa os dados sinalizados de forma assíncrona para o pipeline de ingestão. Um replay de um evento já processado retorna 200 OK.
Boas práticas
Sempre teste as conexões antes de extrair
Sempre teste as conexões antes de extrair
Uma extração que falha no meio da execução é mais difícil de recuperar do que um teste que falha. Teste cada conexão antes de criar uma extração, principalmente ao conectar a uma fonte nova ou depois de uma rotação de credencial.
Inspecione os schemas antes de mapear campos
Inspecione os schemas antes de mapear campos
Os nomes de campo variam entre sistemas. Um banco pode chamar a data da transação de
value_date, enquanto seu ledger usa posting_date. Confira o schema antes de configurar os mapeamentos de campo para evitar divergências silenciosas.Monitore de perto as extrações de conjuntos de dados grandes
Monitore de perto as extrações de conjuntos de dados grandes
Extrações grandes levam tempo. Não suponha que terminaram. Faça polling do status da extração e confirme a contagem de registros antes de começar uma execução de correspondência. Começar uma execução com dados incompletos gera exceções erradas.
Atualize as conexões quando as fontes mudarem
Atualize as conexões quando as fontes mudarem
O Discovery não procura conexões novas automaticamente. Quando você adicionar um novo processador de pagamento, ou registrar um novo banco de dados no motor embutido, dispare uma atualização. Caso contrário, o Discovery não mostra a fonte nova.
Limite as extrações ao período de conciliação
Limite as extrações ao período de conciliação
Use parâmetros de intervalo de datas para extrair apenas os dados relevantes ao período de conciliação atual. Extrair dados sem limite aumenta o tempo de processamento e pode puxar registros que pertencem a contextos já fechados.
Próximos passos
Fontes externas
Configure as fontes de dados externas a que o Discovery se conecta.
Mapeamento de campos
Mapeie campos dos dados extraídos para o modelo de transação do Matcher.
Referência da API do Discovery
Referência completa da API para os endpoints do Discovery.

