Skip to main content
Auditores, oficiais de compliance e times de disputas usam esta camada para responder uma pergunta: “Por que esta transação recebeu esta decisão, e conseguimos provar que ninguém adulterou essa resposta?” O que muda na sua operação: a evidência de controle deixa de ser “vou puxar logs de N sistemas e reconciliar timestamps” e vira “este é o registro imutável, encadeado criptograficamente, mostrando que esta transação recebeu esta decisão porque esta regra específica disparou neste momento”. Essa mudança é o ponto inteiro. O trade-off honesto: não existe “deletar” ou “editar” em registros de auditoria — por design. Um trigger de TRUNCATE no nível do banco bloqueia deleção em massa; o hash SHA-256 de cada registro inclui o hash do anterior, então remover um registro ou alterar sua data quebra a cadeia em tudo que vem depois. Se você precisa remover um registro por razão legal (GDPR direito ao esquecimento sobre PII, por exemplo), a resposta é minimização de dados na entrada, não edição retroativa.
Para quem é este guia? Oficiais de compliance e auditores checando o que o Tracer garante, times de disputas consultando histórico de validações e devs construindo relatórios contra os endpoints de auditoria. A visão geral de compliance e as seções de retenção não exigem conhecimento de API; as seções de consulta e verify assumem REST básico.
O Tracer mantém uma completa e imutável de todas as 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.

Visão geral de conformidade


O Tracer foi projetado para atender aos requisitos de auditoria de regulamentações financeiras, incluindo:

Arquitetura da trilha de auditoria


O Tracer registra cada decisão de validação com contexto completo para conformidade e investigação.

O que é registrado

Toda validação cria um registro de auditoria imutável contendo:
Eventos de auditoria são deduplicados para validações de transações. Se uma requisição de validação for retentada com o mesmo requestId, apenas o primeiro evento de auditoria é armazenado. Isso garante que a trilha de auditoria reflita eventos de negócio únicos, não padrões de retentativa da API.

Imutabilidade e cadeia de hash

Registros de auditoria são write-once e encadeados criptograficamente:
  • Registros não podem ser modificados após a criação.
  • A tabela de auditoria é protegida no nível do banco de dados: um trigger de TRUNCATE bloqueia exclusões em massa.
  • Cada registro armazena um hash SHA-256 calculado sobre a identidade, o timestamp e o ator do registro, mais o hash do registro anterior, formando uma cadeia append-only. Remover um registro, reordená-lo ou alterar sua data faz todos os registros posteriores falharem na verificação.
  • Um pg_advisory_xact_lock serializa as escritas 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 seu primeiro registro até o registro que você indica, inclusive. Quando todos os hashes continuam correspondendo, isValid é true e message confirma. Quando um registro não corresponde mais ao seu hash armazenado, isValid é false e message informa a adulteração. Essa é a base criptográfica para as garantias de evidência de adulteração exigidas por SOX/GLBA. Em uma verificação que falha, firstInvalidId carrega um número de sequência interno do registro divergente. Ele não é um id de evento de auditoria, então não é um valor que você possa passar para GET /v1/audit-events/{id}.
A trilha de auditoria foi projetada para auditorias de conformidade. Você pode reconstruir exatamente o que aconteceu em qualquer validação, mesmo anos depois, e provar que os registros não foram modificados a posteriori.

Retenção de dados


O Tracer retém dados de acordo com requisitos regulatórios e necessidades operacionais.

Períodos de retenção

Considerações de conformidade

  • Requisito SOX: Manter registros por 7 anos a partir da data do relatório de auditoria
  • Requisito GLBA: Reter registros demonstrando conformidade com regras de privacidade
  • Exportação de dados: Registros podem ser exportados para sistemas de auditoria externos

Consultando histórico de validações


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

Consulta básica

Retorna as validações em ordem cronológica reversa com paginação por cursor.
Uma consulta sem datas cobre os últimos 90 dias, não todo o período de retenção. O Tracer aplica essa janela padrão apenas quando tanto start_date quanto end_date estão ausentes. Envie uma das duas — ou ambas — para consultar um intervalo mais antigo: só com start_date, o intervalo corre para frente a partir daquela data, sem fim; só com end_date, corre para trás a partir daquela data, sem início.

Consulta filtrada

Filtros disponíveis

Requisito de formato de data

Parâmetros de data devem usar formato RFC3339 com timezone obrigatório. Formatos somente com data são rejeitados.
Válido:
Inválido:

Paginação

Resultados usam paginação baseada em cursor. A resposta inclui campos nextCursor e hasMore para navegar pelos resultados.
Ao usar paginação por cursor, sort_by e sort_order são fixados a partir da consulta original.

Ordenação


Obtendo detalhes de validação


Recupere detalhes completos para uma validação específica usando GET /v1/validations/{id}. A resposta contém tudo necessário para entender uma decisão de validação:
  • Snapshot da requisição: O payload de entrada completo como recebido
  • Snapshot da resposta: Resposta completa incluindo decisão e motivo
  • Regras avaliadas: Todas as regras que foram verificadas
  • Regras correspondentes: Regras que foram acionadas (se houver)
  • Detalhes de limites: Informações de uso para limites verificados
  • Timestamps: Quando a validação ocorreu e tempo de processamento

Consultando eventos de auditoria


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

Tipos de evento

Os eventos de reserva aparecem no log, mas nenhum filtro os seleciona: event_type, action e resource_type aceitam apenas os valores listados na tabela abaixo, e um valor de reserva em qualquer um deles é rejeitado com o erro 0009. Para ler eventos de reserva, consulte por intervalo de datas e pagine os resultados.

Filtros

GET /v1/audit-events aceita os mesmos filtros de intervalo de datas e escopo que GET /v1/validations, mais 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 em regras na semana passada: GET /v1/audit-events?resource_type=rule&start_date=...&end_date=...
  • Todas as exclusões de limites 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 de 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 esta transação foi negada em 15 de janeiro?”
A resposta mostra a requisição exata 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 para contas corporativas em janeiro”

Cenário 3: Análise de eficácia de regra

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

Cenário 4: Revisão de utilização de limite

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

Melhores práticas para conformidade


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

Manutenção de registros

  • Armazene IDs de validação nos seus registros de transação para fácil referência cruzada
  • Registre o requestId que você envia para o Tracer para correlação
  • Exporte regularmente se você precisa de registros em sistemas de auditoria externos
Tropeços comuns ao ler a trilha de auditoria:
  • “Consigo ver a validação mas a regra que disparou já foi deletada.” Regras deletadas são soft-deletadas — a linha fica no banco, 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 daquela regra, incluindo ativações e o delete eventual.
  • “Duas retentativas do mesmo requestId produziram apenas um evento de auditoria.” Isso é por design (deduplicação via idx_audit_events_validation_dedup). A trilha reflete eventos únicos de negócio, não padrões de retry da API. Se sua retentativa produziu uma decisão diferente, vale investigar — o Tracer deveria retornar a resposta original em cache.
  • “O /verify diz que a cadeia está quebrada num registro que eu não toquei.” A cadeia liga todo registro ao anterior, então uma adulteração ou corrupção de banco em qualquer lugar faz com que tudo o que vem depois seja reportado como inválido. Rode /verify contra registros progressivamente mais antigos para delimitar onde a cadeia quebra primeiro.
  • “Minha consulta de auditoria voltou vazia para o ano passado.” Uma consulta sem start_date nem end_date cobre os últimos 90 dias. Envie o intervalo 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 intervalos de data funcionam corretamente com seus requisitos de timezone
  • Documente o alinhamento da sua política de retenção com a retenção de 7 anos do Tracer

Fluxo de trabalho de investigação

Ao investigar uma transação específica:
  1. Encontre o ID de validação dos seus logs de transação ou histórico do Tracer
  2. Recupere detalhes completos usando GET /v1/validations/
  3. Revise o snapshot da requisição para ver quais dados foram fornecidos
  4. Verifique regras correspondentes para entender por que a decisão foi tomada
  5. Verifique status do limite se limites estavam envolvidos

Comportamento de no-match e auditoria


Quando uma validação executa e nenhuma regra corresponde, o Tracer retorna uma decisão padrão configurada em vez de tratar a falta de correspondência como erro. Isso é um fallback por requisição, não uma estratégia de resiliência a falhas de infraestrutura. A decisão é governada pela variável de ambiente DEFAULT_DECISION_WHEN_NO_MATCH (padrão: ALLOW).
Defina DEFAULT_DECISION_WHEN_NO_MATCH=DENY para semântica fail-closed em deployments de alta segurança. O serviço loga um aviso no startup se essa variável permanecer no padrão ALLOW.
Falhas de infraestrutura (banco indisponível, cache desatualizado, timeout) não caem em ALLOW — elas vão para o cliente como erros HTTP, 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-chave e informações de retenção.

Endpoints

Resumo de retenção