Pular para o conteúdo principal
Este guia cobre dois workflows de operador que terminam em um artefato baixável ou resolvido. Com jobs de exportação você põe um relatório na fila, consulta até ele ter sucesso e baixa o arquivo. Com disputas você abre uma disputa contra uma exceção, anexa evidências e depois a encerra como ganha ou perdida. O Matcher limita os jobs de exportação e as disputas ao seu tenant.

Jobs de exportação


As exportações são assíncronas. Você cria um job com escopo em um contexto, consulta o status dele pelo ID e baixa o arquivo quando ele chega em SUCCEEDED. Os status são QUEUED, RUNNING, SUCCEEDED, FAILED, EXPIRED e CANCELED.

Criar um job de exportação

Faça POST na coleção de jobs de exportação do contexto. Responde 202 Accepted com o ID do job e uma URL de consulta.
  • reportType: um entre MATCHED, UNMATCHED, VARIANCE, EXCEPTIONS (os aliases MATCHES e UNMATCHED_TRANSACTIONS normalizam para esses valores).
  • format: CSV, JSON ou XML, em maiúsculas.
  • dateFrom / dateTo: YYYY-MM-DD opcional. dateFrom tem como padrão 30 dias antes de dateTo, e dateTo tem como padrão amanhã (UTC).
  • sourceId: filtro de fonte opcional.
Os jobs de exportação assíncronos não aceitam SUMMARY (400) nem PDF (422). A janela de datas cobre no máximo 365 dias, e uma janela maior retorna 400. A criação do job retorna 503 quando as exportações assíncronas não estão habilitadas para o seu ambiente.

Consultar o status do job

Leia a rota de job de nível raiz (a statusUrl da criação).
contextId indica o contexto que o job exporta. error traz o último motivo de falha do job, quando ele tem um. downloadUrl é a rota de download abaixo, e aparece apenas quando o job chegou a SUCCEEDED e o arquivo ainda está disponível. Você pode listar os jobs de um contexto com GET /v1/contexts/{contextId}/export-jobs, listar todos os jobs com GET /v1/export-jobs e cancelar um job na fila ou em execução com POST /v1/export-jobs/{jobId}/cancel.

Baixar o arquivo

Retorna uma URL pré-assinada, o nome original do arquivo, um checksum SHA-256 e o tempo de vida restante da URL em segundos.
Os arquivos de exportação são apagados depois de expiresAt, 7 dias depois da criação do job. Depois disso, o arquivo não pode mais ser baixado. Rode a exportação de novo para gerá-lo outra vez.

Disputas


Você abre uma disputa contra uma exceção específica quando precisa contestar uma divergência de conciliação. Uma disputa nova fica OPEN. Fechá-la define WON ou LOST, e os dois resultados são terminais.

Abrir uma disputa

Faça POST na coleção de disputas da exceção. Responde 201 Created.
category é um entre BANK_FEE_ERROR, UNRECOGNIZED_CHARGE, DUPLICATE_TRANSACTION, AMOUNT_MISMATCH ou OTHER. A resposta omite evidence até a disputa ter alguma. O campo openedBy registra o principal que abriu. O Matcher recusa abrir uma disputa com 409 (MTCH-0511) quando a exceção está RESOLVED ou PENDING_RESOLUTION. Ele responde 409 (MTCH-0510) enquanto uma liquidação está em andamento na exceção. Repita essa requisição depois que a liquidação terminar.

Enviar evidência por URL

Anexe uma referência a um arquivo de evidência já hospedado mais um comentário que o descreve. fileUrl precisa ser uma URL https.

Fazer upload de um arquivo de evidência

Envie os bytes brutos do arquivo direto para o object storage com escopo de tenant. O comentário viaja como parâmetro de query e o arquivo como corpo da requisição. Responde 201 Created com a disputa atualizada. Os content types permitidos são application/pdf, image/png, image/jpeg e text/csv. O corpo tem limite de 10 MiB.
O array evidence da disputa lista cada item de evidência guardado. Para um arquivo enviado, fileUrl guarda a chave do armazenamento de objetos, não uma URL de download:
O endpoint de upload retorna 503 quando o armazenamento de evidências está indisponível. Ele rejeita corpos grandes demais com 413 e content types fora da allowlist com 415.

Fechar uma disputa

Registre o resultado. won: true define o estado como WON e won: false o define como LOST. Uma nota resolution é obrigatória.
Você pode listar disputas com GET /v1/disputes e buscar uma com GET /v1/disputes/{disputeId}. O endpoint de lista filtra por state, category e intervalo de datas, e oferece suporte a ordenação e paginação por cursor.

Códigos de resposta