Skip to main content
Este guia aborda dois fluxos de trabalho de operador que terminam em um artefato para download ou resolvido: jobs de exportação (enfileire um relatório, consulte seu status até que ele seja concluído e baixe o arquivo) e disputas (abra uma disputa contra uma exceção, anexe evidências e depois encerre-a como ganha ou perdida). Ambos são delimitados por tenant a partir do JWT.

Jobs de exportação


As exportações são assíncronas. Você cria um job delimitado a um contexto, consulta seu status por ID e baixa o arquivo assim que ele atinge SUCCEEDED. Os status são QUEUED, RUNNING, SUCCEEDED, FAILED, EXPIRED e CANCELED.

Criar um job de exportação

POST para a coleção export-jobs do contexto. Responde 202 Accepted com o ID do job e uma URL de consulta.
  • reportType — um de MATCHED, UNMATCHED, VARIANCE, EXCEPTIONS (os aliases MATCHES e UNMATCHED_TRANSACTIONS são normalizados).
  • formatCSV, JSON ou XML (normalizado para maiúsculas).
  • dateFrom / dateToYYYY-MM-DD opcional; dateFrom assume por padrão 30 dias antes de dateTo, e dateTo assume por padrão amanhã (UTC).
  • sourceId — filtro de fonte opcional.
SUMMARY e PDF não são suportados para jobs de exportação assíncronos e são rejeitados com 400. A janela de datas também tem um limite máximo de intervalo (uma requisição fora do intervalo é rejeitada em vez de ser silenciosamente ajustada).

Consultar o status do job

Leia a rota de nível superior do job (a statusUrl da criação).
error está presente apenas quando status é FAILED; downloadUrl aparece somente depois que o job atinge 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 enfileirado ou em execução com POST /v1/export-jobs/{jobId}/cancel.

Baixar o arquivo

Retorna uma URL pré-assinada, o nome de arquivo original, um checksum SHA-256 e o tempo de vida restante da URL em segundos.
Os arquivos de exportação são removidos após expiresAt (7 dias por padrão). Assim que um job está EXPIRED, o arquivo não pode mais ser baixado — execute a exportação novamente para regenerá-lo.

Disputas


Uma disputa é aberta contra uma exceção específica quando uma divergência de reconciliação precisa ser contestada. Seu ciclo de vida começa em DRAFTOPEN. A partir de OPEN, uma disputa pode passar para PENDING_EVIDENCE (e voltar para OPEN) ou fechar diretamente como WON / LOST. Apenas WON é terminal — uma disputa LOST pode ser reaberta para OPEN.

Abrir uma disputa

POST para a coleção disputes da exceção.
category é um de BANK_FEE_ERROR, UNRECOGNIZED_CHARGE, DUPLICATE_TRANSACTION ou OTHER. O principal que abre a disputa é registrado em openedBy.

Enviar evidência por URL

Anexe uma referência a um arquivo de evidência já hospedado mais um comentário descritivo.

Fazer upload de um arquivo de evidência

Transmita os bytes brutos do arquivo diretamente para o armazenamento de objetos delimitado por tenant — o comentário viaja como parâmetro de consulta e o arquivo como corpo da requisição. Responde 201 Created com a disputa atualizada. Os tipos de conteúdo permitidos são application/pdf, image/png, image/jpeg e text/csv; o corpo tem um limite de 10 MiB.
Cada item de evidência armazenado é retornado no array evidence da disputa:
O endpoint de upload falha de forma segura com 503 quando o armazenamento de objetos não está configurado, rejeita corpos de tamanho excessivo com 413 e rejeita tipos de conteúdo fora da lista de permitidos com 415. O tenant e a disputa são sempre resolvidos a partir do JWT e do caminho — nunca a partir do corpo.

Encerrar uma disputa

Registre o resultado. won define o estado como WON (terminal) ou LOST (reabrível), com uma nota resolution obrigatória.
Você pode listar disputas com GET /v1/disputes (filtre por state, category, intervalo de datas; ordene e pagine por cursor) e obter uma com GET /v1/disputes/{disputeId}.

Códigos de resposta