Pular para o conteúdo principal
Auditores, responsáveis pela conformidade e equipes de disputas usam essa camada para responder a uma pergunta: “Por que essa transação recebeu essa decisão?” O que muda na sua operação: a evidência de um controle deixa de ser “vou buscar os logs de N sistemas e conferir os timestamps” e passa a ser “aqui está o registro imutável, encadeado por criptografia, mostrando que essa transação recebeu essa decisão porque esta regra específica foi disparada neste momento.” Contrapartida: não existe “excluir” ou “editar” em registros de auditoria, por design. Um trigger TRUNCATE no nível do banco de dados bloqueia a exclusão em massa. O hash SHA-256 de cada registro inclui o hash do registro anterior, então remover ou reatribuir a data de um registro quebra a cadeia em tudo o que vem depois. Se você precisar remover um registro por motivos legais (como o direito ao esquecimento da GDPR sobre PII), a resposta é a minimização de dados desde o início, não a edição retroativa.
Para quem é este guia? Responsáveis pela conformidade e auditores que verificam o que o Tracer garante, equipes de disputas que consultam o histórico de validações, e desenvolvedores que criam relatórios a partir dos endpoints de auditoria. A seção de retenção não pressupõe nenhum conhecimento de API. As seções de consulta e verificação pressupõem conhecimento básico de REST.
O Tracer mantém uma imutável das decisões de validação. Este guia explica como o sistema de auditoria funciona e como consultar o histórico de validações para relatórios de conformidade.

Arquitetura da trilha de auditoria


O Tracer registra as decisões de POST /v1/validations com contexto completo para conformidade e investigação.

O que é registrado

O registro de auditoria de uma validação contém:
Eventos de auditoria são deduplicados para validações de transação. Se você repetir uma requisição de validação com o mesmo requestId, o Tracer armazena apenas o primeiro evento de auditoria. Isso garante que a trilha de auditoria reflita eventos de negócio únicos, não padrões de nova tentativa da API.

Imutabilidade e cadeia de hash

Registros de auditoria são gravados uma única vez e encadeados por criptografia:
  • Você não pode modificar um registro após a criação.
  • Um trigger TRUNCATE protege a tabela de auditoria no nível do banco de dados e bloqueia a exclusão em massa.
  • Cada registro armazena um hash SHA-256 calculado sobre a identidade do registro, o timestamp, o ator e o hash do registro anterior, formando uma cadeia apenas de inserção. Remover, reordenar ou reatribuir a data de um registro faz com que todos os registros posteriores falhem na verificação.
  • Um pg_advisory_xact_lock serializa as gravações da cadeia de hash para manter a ordem estável sob inserções concorrentes.
Você pode verificar a cadeia a qualquer momento usando GET /v1/audit-events/{id}/verify, que retorna:
A verificação cobre a cadeia desde o primeiro registro até e incluindo o registro que você indicar. Quando todos os hashes ainda correspondem, isValid é true e message confirma isso. Quando um registro não corresponde mais ao seu hash armazenado, isValid é false. O campo message informa a adulteração. Em uma verificação com falha, firstInvalidId carrega um número de sequência interno do registro divergente. Não é um id de evento de auditoria, então não é um valor que você pode passar para GET /v1/audit-events/{id}.

Retenção de dados


Períodos de retenção


Consultando o histórico de validações


Use o endpoint GET /v1/validations para consultar validações históricas.

Consulta básica

Retorna validações em ordem cronológica reversa, com paginação por cursor.
Uma consulta sem datas cobre os últimos 90 dias, não o período completo de retenção. O Tracer aplica essa janela padrão apenas quando start_date e end_date estão ausentes. Envie um dos dois, ou ambos, para consultar um período mais antigo. Com apenas start_date, o período segue em frente a partir dessa data, sem fim. Com apenas end_date, o período segue para trás a partir dessa data, sem início.

Consulta filtrada

Filtros disponíveis

Requisito de formato de data

Os parâmetros de data devem usar o formato RFC3339 com fuso horário obrigatório. O Tracer rejeita formatos que contêm apenas a data.
Válido:
Inválido:

Paginação

Os resultados usam paginação baseada em cursor. A resposta inclui os campos nextCursor e hasMore para navegar pelos resultados.
A paginação por cursor mantém sort_by e sort_order da consulta original.

Ordenação


Obtendo detalhes da validação


Recupere os detalhes completos de uma validação específica usando GET /v1/validations/{id}. A resposta contém tudo o que é necessário para entender uma decisão de validação:
  • Snapshot da requisição: os dados da requisição
  • Snapshot da resposta: a resposta completa, incluindo decisão e motivo
  • Regras avaliadas: todas as regras que o Tracer verificou
  • Regras correspondentes: regras que dispararam (se houver)
  • Detalhes do limite: informações de uso dos limites verificados
  • Timestamps: quando a validação ocorreu e o tempo de processamento

Consultando eventos de auditoria


Além dos registros de validação, o Tracer também expõe um log genérico de eventos de auditoria via GET /v1/audit-events. Essa é a única forma de ver as mudanças de ciclo de vida de regras e limites: quem os criou, atualizou, ativou, desativou, colocou em rascunho ou excluiu.

Tipos de evento

Filtros

GET /v1/audit-events aceita os mesmos filtros de período e escopo que GET /v1/validations, além de filtros específicos para eventos de ciclo de vida:

Casos de uso

  • Quem ativou esta regra? GET /v1/audit-events?resource_type=rule&resource_id={ruleId}&action=ACTIVATE
  • Todas as mudanças de regra na última semana: GET /v1/audit-events?resource_type=rule&start_date=...&end_date=...
  • Todas as exclusões de limite em 2026: GET /v1/audit-events?resource_type=limit&action=DELETE&start_date=2026-01-01T00:00:00Z

Detalhe de um evento

Use GET /v1/audit-events/{id} para recuperar um registro de auditoria específico, incluindo o snapshot do estado no momento do evento.

Cenários de relatórios de conformidade


Consultas comuns para relatórios de auditoria e conformidade.

Cenário 1: investigação de auditoria

“Por que essa transação foi negada em 15 de janeiro?”
A resposta mostra exatamente a requisição recebida, todas as regras avaliadas, qual regra ou limite causou a negação, e o timestamp.

Cenário 2: relatório mensal de conformidade

“Mostrar todas as transações negadas de contas corporativas em janeiro”

Cenário 3: análise de eficácia de regras

“Quais transações foram negadas por uma regra de fraude específica?”

Cenário 4: revisão de uso de limite

“Quais transações excederam limites de gastos neste mês?”

Boas práticas para conformidade


Recomendações para manter a prontidão para auditoria.

Manutenção de registros

  • Armazene os IDs de validação nos seus registros de transação para facilitar a referência cruzada
  • Registre o requestId que você envia ao Tracer para correlação
  • Exporte regularmente se precisar dos registros em sistemas de auditoria externos
Armadilhas comuns ao ler a trilha de auditoria:
  • “Consigo ver a validação, mas a regra que disparou já foi excluída.” Regras excluídas passam por exclusão lógica. A linha permanece no banco de dados, mas não aparece em GET /v1/rules. Para investigar, consulte GET /v1/audit-events?resource_type=rule&resource_id={ruleId} para ver o ciclo de vida dessa regra, incluindo suas ativações e a exclusão.
  • “Duas novas tentativas com o mesmo requestId produziram apenas um evento de auditoria.” Isso é proposital (deduplicação via idx_audit_events_validation_dedup). A trilha de auditoria reflete eventos de negócio únicos, não padrões de nova tentativa da API. Se sua nova tentativa produziu uma decisão diferente, vale a pena investigar. O Tracer deveria retornar a resposta original em cache.
  • “/verify diz que a cadeia está quebrada em um registro que eu não toquei.” A cadeia liga cada registro ao anterior, então uma adulteração ou corrupção no banco de dados em qualquer ponto faz com que tudo a partir dali seja relatado como inválido. Rode /verify em registros progressivamente mais antigos para delimitar onde a cadeia quebra pela primeira vez.
  • “Minha consulta de auditoria voltou vazia para o ano passado.” Uma consulta sem start_date e sem end_date cobre os últimos 90 dias. Informe o período que você quer.

Preparação para auditoria

  • Teste consultas antes da temporada de auditoria para garantir que você consegue recuperar os dados necessários
  • Verifique se os períodos funcionam corretamente com os requisitos de fuso horário

Fluxo de investigação

Ao investigar uma transação específica:
  1. Encontre o ID de validação nos logs da sua transação ou no histórico do Tracer
  2. Recupere os detalhes completos usando GET /v1/validations/
  3. Revise o snapshot da requisição para ver os dados da requisição
  4. Verifique as regras correspondentes para entender o motivo da decisão
  5. Verifique o status do limite, se houver limites aplicáveis

Comportamento sem correspondência e auditoria


Quando uma validação é executada e nenhuma regra corresponde, o Tracer retorna uma decisão padrão configurada em vez de tratar a ausência de correspondência como um erro. Esse é um fallback por requisição, não uma estratégia de resiliência de infraestrutura. A variável de ambiente DEFAULT_DECISION_WHEN_NO_MATCH determina a decisão (padrão: ALLOW).
Defina DEFAULT_DECISION_WHEN_NO_MATCH=DENY. O serviço registra um aviso na inicialização se isso permanecer no padrão ALLOW.
Falhas de infraestrutura (banco de dados fora do ar, cache desatualizado, timeout) não recorrem ao ALLOW. Elas aparecem como erros HTTP para o cliente, e a transação original não tem registro de auditoria. Operadores devem monitorar tracer_audit_persist_failures_total e o endpoint /readyz para detectar esses casos.

Referência rápida


Endpoints principais e informações de retenção.

Endpoints

Resumo de retenção