ifs espalhados por vários serviços. Mudanças em regras sobem por API no mesmo dia, não na próxima release. O histórico de validações oferece um único lugar para investigar por que uma transação recebeu sua decisão.
O trade-off honesto: você adiciona uma chamada HTTP no caminho crítico de cada transação (alvo p99 abaixo de 80ms). Em troca, ganha um ponto único para políticas e histórico de decisões — e tira lógica duplicada do código do produto.
Este guia orienta você na configuração do Tracer e na execução da sua primeira validação. Em poucos passos, você terá um ambiente funcional pronto para validar transações em tempo real.
Para instruções passo a passo com exemplos de requisições e respostas da API, consulte o Início rápido da API do Tracer.
Por que usar o Tracer
- Validação em tempo real: Tome decisões ALLOW/DENY/REVIEW em menos de 80ms (p99)
- Regras flexíveis: Motor de regras baseado em expressões para lógica de negócios personalizada
- Controle de gastos: Configure limites por conta, portfólio, segmento e período
- Histórico de validações: Decisões armazenadas para investigação e relatórios
- Agnóstico a produtos: Suporta qualquer tipo de transação (Card, Wire, PIX, Crypto)
- Entender a arquitetura e os conceitos principais do Tracer
- Ter um ambiente de desenvolvimento funcional
- Executar sua primeira validação de transação
- Configurar um limite de gastos
O que é o Tracer
O Tracer é uma plataforma de validação de transações que avalia regras e limites e retorna decisões instantâneas. Seu sistema chama o Tracer antes de executar transações e age com base na decisão (ALLOW, DENY ou REVIEW) de acordo com sua lógica de negócios.
Como funciona
Figura 1. Como funciona o Tracer
- Regras avaliam expressões contra o contexto da transação
- Limites verificam os limites de gastos para os escopos aplicáveis
- Decisão retorna ALLOW, DENY ou REVIEW com base nos resultados da avaliação
Contextos principais
O Tracer é construído em torno de três contextos delimitados:- Contexto de Validação - Orquestra requisições, coordena avaliações e armazena o histórico de validações
- Contexto de Regras - Gerencia definições de regras e avaliação de expressões
- Contexto de Limites - Gerencia limites de gastos e rastreamento de uso
Pré-requisitos
Antes de começar, certifique-se de ter:
- Docker e Docker Compose instalados
- Go 1.26+ (para desenvolvimento local — a versão exata do toolchain está declarada no
go.moddo repositório) - PostgreSQL 17 (o primário compartilhado do Midaz, iniciado pelo compose de infraestrutura da plataforma, não pelo do Tracer)
- API Key para autenticação
Dependências de infraestrutura
O Tracer requer os seguintes componentes:Portas
Portas padrão utilizadas pelos serviços do Tracer:Passo 1: Configure o ambiente
Você pode executar o Tracer com Docker Compose ou localmente para desenvolvimento.
Opção A: Docker Compose (recomendado)
O Compose próprio do Tracer declara apenas dois serviços: a aplicação e um executor de migrações de uso único. O PostgreSQL não é um deles — ele vem do Compose de infraestrutura compartilhada da plataforma e precisa estar saudável primeiro. O contêiner da aplicação sobe somente depois que o executor de migrações aplicou o schema e encerrou com sucesso, então o serviço sempre inicia contra um banco já migrado.
No Midaz v4, o Tracer é source-available sob ELv2 no repositório e na release do Midaz. Mesmo assim, ele é implantado como serviço próprio; comece em
components/tracer para desenvolvê-lo localmente.Opção B: Execução local
Para desenvolvimento, você pode executar o Tracer localmente:Variáveis de ambiente essenciais
Passo 2: Autentique na API
O Tracer suporta autenticação por API key e por plugin. A autenticação por plugin tem prioridade quando ambas estão habilitadas, exceto em endpoints configurados como somente API key.
Os passos restantes usam a forma single-tenant com API key porque a maior parte das configurações locais roda assim. Se a autenticação por plugin se aplicar à requisição, substitua
X-API-Key: your-secure-api-key por Authorization: Bearer $JWT em todos os exemplos.
API Key (single-tenant)
Inclua a API Key no headerX-API-Key:
Bearer JWT (multi-tenant)
Inclua o JWT emitido pelo Access Manager no headerAuthorization:
tenantId do JWT e roteia a requisição para o banco do tenant correto. Você nunca passa o identificador do tenant em header, path, body ou escopo de regra — o token é a única fonte de verdade.
Exemplo com cURL
Passo 3: Configure um limite de gastos
Limites de gastos controlam valores de transação por escopo e período. Crie um limite usando
POST /v1/limits.
Tipos de limite
Para configuração detalhada de todos os tipos de limite, incluindo janelas de tempo e períodos personalizados, consulte o Guia de limites de gastos.
Escopos
Aplique limites a contextos específicos:- Segmento: Aplica a todas as contas de um segmento (ex.: clientes corporativos)
- Portfólio: Aplica a contas de um portfólio
- Conta: Aplica a uma conta específica
- Tipo de transação: Aplica apenas a CARD, WIRE, PIX ou CRYPTO
Criar um limite
Ativar um limite
Ciclo de vida do limite
Limites são criados com statusDRAFT e seguem o ciclo de vida DRAFT → ACTIVE → INACTIVE. Limites inativos podem retornar a DRAFT para edição ou ser deletados permanentemente. Ative um limite para começar a aplicação. Para o ciclo de vida completo e regras de transição, consulte o Guia de limites de gastos.
Monitore o uso
Toda resposta dePOST /v1/validations carrega limitUsageDetails, com uma entrada por limite que o Tracer verificou: o teto, o valor tentado e o consumo projetado do período atual daquele teto se a transação for permitida. GET /v1/limits/{id}/usage informa um total acumulado entre os contadores do limite, para revisar o consumo geral.
Para opções de configuração detalhadas, consulte o Guia de limites de gastos.
Passo 4: Valide sua primeira transação
Com os limites configurados, você está pronto para validar uma transação usando
POST /v1/validations.
Envie uma transação para validação
Envie uma requisição de validação com o contexto da transação incluindo:- Detalhes da transação (tipo, valor, código de ativo, timestamp)
- Informações da conta
- Opcional: segmento, portfólio, comerciante e personalizada
O
transactionTimestamp deve ser recente, e por isso o exemplo o gera: timestamps no futuro são rejeitados com o código de erro 0419 (tolerância de 1 minuto de dessincronização de relógio), e timestamps com mais de 24 horas são rejeitados com o código de erro 0421.requestId é a chave de idempotência. Envie um UUID novo em cada tentativa — se você repetir um, o Tracer devolve a decisão que já registrou para essa chave, então uma regra que você ativou no meio não vai parecer surtir efeito.
A resposta inclui detalhes sobre quais regras foram avaliadas, quais corresponderam e o uso atual do limite — útil para depuração e suporte ao cliente.
Por que o Tracer retorna uma decisão em vez de bloquear direto. O Tracer é uma camada de decisão, não um gateway de autorização. O sistema que faz a chamada é quem detém a relação com o cliente, conhece o canal e decide o que fazer com um DENY — por exemplo, seu sistema emissor de cartão pode honrar um
DENY numa pre-auth de stand-in mas ainda assim querer capturar a requisição para analytics. Ao retornar a decisão, o Tracer encaixa em qualquer fluxo de autorização sem ser dono da UX voltada para o cliente.Passo 5: Crie uma regra de validação
Regras permitem definir lógica de negócios personalizada que é avaliada durante a validação. Crie uma regra usando o endpoint
POST /v1/rules com uma expressão, ação e escopos opcionais.
Por exemplo, para bloquear transações de alto valor:
O Tracer preserva maiúsculas, minúsculas e espaços internos do nome, removendo apenas os espaços no início e no fim antes de salvar. Pegue o
ruleId da resposta e use-o na chamada de ativação abaixo.Ativar uma regra
A ativação passa a valer imediatamente na instância que atendeu a chamada, então em um setup de instância única a regra começa a ser avaliada na sua próxima validação. Quando você roda várias instâncias atrás de um balanceador, as outras pegam a mudança na próxima sincronização de regras (
RULE_SYNC_POLL_INTERVAL_SECONDS, padrão 10); a desativação se propaga da mesma forma.Ciclo de vida da regra
Regras seguem o mesmo ciclo de vida dos limites:DRAFT → ACTIVE → INACTIVE. Para iniciar a avaliação, ative a regra usando POST /v1/rules/{id}/activate. Regras ativas podem ser desativadas e reativadas conforme necessário.
Para informações detalhadas sobre expressões de regras e gerenciamento do ciclo de vida, consulte o Guia do motor de regras.
Observabilidade
O Tracer expõe endpoints para monitoramento e observabilidade.
Métricas principais
O Tracer expõe métricas compatíveis com OpenTelemetry via exportador OTLP, além de métricas customizadas da aplicação:tracer_auth_failures_total{reason}- Falhas de autenticação por motivo (missing_api_key, invalid_api_key)tracer_validation_rollback_failures_total- Falhas de rollback de uso em decisões REVIEW (lacunas de consistência eventual que se auto-corrigem nas fronteiras de período)
Verificação
Confirme que tudo está funcionando corretamente.
Lista de verificação
- Serviços Docker iniciados e saudáveis
- Autenticação por API Key funcionando
- Limite de gastos configurado
- Transação de teste validada com sucesso
- Regra criada e ativada
Próximos passos
Você configurou o Tracer com sucesso e validou sua primeira transação. A partir daqui, você pode explorar recursos mais avançados:
- Guia de integração - Aprenda como integrar seu sistema de autorização com o Tracer
- Motor de regras - Escreva regras de validação em CEL e gerencie seu ciclo de vida
- Limites de gastos - Configure e gerencie limites de gastos por escopo e período
- Histórico de validações e conformidade - Consulte o histórico de validações e use-o nos seus processos de conformidade
Referência rápida
Os três fluxos que você vai usar mais:
- Validar uma transação:
POST /v1/validations— veja o Início rápido da API do Tracer para o formato da requisição. - Gerenciar regras:
/v1/rules(CRUD + endpoints de ciclo de vida/activate,/deactivate,/draft) — veja o Guia do motor de regras. - Gerenciar limites:
/v1/limits(CRUD + ciclo de vida +/usage) — veja o Guia de limites de gastos.
O que seu sistema deve fazer com cada decisão
O Tracer retorna decisões como recomendações. Seu sistema é responsável por implementar a ação apropriada com base em cada decisão.

