if espalhadas pelos serviços. As mudanças de regra são aplicadas por uma chamada de API no mesmo dia, não no próximo release. O histórico de validação te dá um único lugar para investigar por que uma transação recebeu sua decisão.
Trade-off para ser honesto: você adiciona uma chamada HTTP ao caminho crítico de cada transação. A meta é p99 abaixo de 80 ms. Em troca, você ganha um ponto único para política e histórico de decisões, e remove lógica duplicada do código do produto.
Este guia mostra como configurar o Tracer e executar 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 da API com exemplos de requisição e resposta, veja 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 80 ms (p99)
- Regras flexíveis: motor de regras baseado em expressões para lógica de negócio personalizada
- Controle de gastos: configure limites por conta, portfólio, segmento e período
- Histórico de validação: decisões armazenadas para investigação e relatórios
- Independente de produto: aceita 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 uma transação. Em seguida, ele age sobre a decisão (ALLOW, DENY ou REVIEW) de acordo com sua lógica de negócio.
Como funciona
Figura 1. Como o Tracer funciona
- Regras avaliam expressões em relação ao contexto da transação
- Limites verificam os tetos 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 tem três contextos delimitados:- Contexto de Validação - Orquestra requisições, coordena a avaliação e armazena o histórico de validação
- Contexto de Regras - Gerencia definições de regras e a avaliação de expressões
- Contexto de Limites - Gerencia limites de gastos e o rastreamento de uso
Pré-requisitos
Antes de começar, confirme que você tem:
- Docker e Docker Compose instalados
- Go 1.26+ para desenvolvimento local (o
go.moddo repositório declara a versão exata do toolchain) - PostgreSQL 17 (a instância primária compartilhada do Midaz, iniciada pelo compose de infraestrutura da plataforma, não pelo compose do próprio Tracer)
- API Key para autenticação
Dependências de infraestrutura
O Tracer requer os seguintes componentes:Portas
Portas padrão usadas 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 próprio arquivo Compose do Tracer declara apenas dois serviços: a aplicação e um executor de migração de execução única. O PostgreSQL não é um deles. Ele vem do Compose de infraestrutura compartilhada da plataforma e deve estar saudável primeiro. O container da aplicação apenas inicia depois que o executor de migração aplica o schema e termina com sucesso. O serviço sempre inicia com um banco de dados já migrado.
No Midaz v4, o Tracer é source-available sob a ELv2 no repositório e no release do Midaz. Ele continua rodando como um serviço próprio. Para desenvolvimento local, comece em
components/tracer.Opção B: execução local
Para desenvolvimento, você pode executar o Tracer localmente:Variáveis de ambiente essenciais
Passo 2: autentique-se na API
O Tracer aceita autenticação por API key e por plugin. A autenticação por plugin tem precedência quando as duas estão habilitadas, exceto em endpoints configurados como apenas API key.
Os passos seguintes usam o formato de API key single-tenant porque a maioria das configurações de desenvolvimento local funciona assim. Se a autenticação por plugin se aplica à sua 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 de dados correto do tenant.
Você nunca passa o identificador do tenant em um header, path, body ou escopo de regra. O token é a única fonte de verdade.
Exemplo de cURL
Passo 3: configure um limite de gastos
Os limites de gastos controlam os valores de transação por escopo e período. Crie um limite usando
POST /v1/limits.
Tipos de limite
Para a configuração detalhada de todos os tipos de limite, incluindo janelas de tempo e períodos personalizados, veja o Guia de limites de gastos.
Escopos
Aplique limites a contextos específicos:- Segmento: aplica-se a todas as contas de um segmento (por exemplo, clientes corporativos)
- Portfólio: aplica-se às contas de um portfólio
- Conta: aplica-se a uma conta específica
- Tipo de transação: aplica-se apenas a CARD, WIRE, PIX ou CRYPTO
Crie um limite
Ative um limite
Ciclo de vida do limite
Os limites começam no statusDRAFT e seguem o ciclo de vida DRAFT → ACTIVE → INACTIVE. Limites inativos podem voltar para DRAFT para edição, ou você pode excluí-los permanentemente. Ative um limite para começar a aplicá-lo. Para o ciclo de vida completo e as regras de transição, veja o Guia de limites de gastos.
Monitore o uso
Toda resposta dePOST /v1/validations traz limitUsageDetails, com uma entrada por limite verificado pelo Tracer. Cada entrada traz o teto, o valor tentado e o consumo projetado para o período atual desse teto. Essa projeção inclui esta transação. O endpoint GET /v1/limits/{id}/usage informa um total acumulado entre os contadores do limite, para uma revisão do consumo geral.
Para as opções detalhadas de configuração, veja 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, ativo, timestamp)
- Informações da conta
- Opcional: segmento, portfólio, comerciante e personalizados
O
transactionTimestamp deve ser recente, por isso o exemplo o gera. O Tracer rejeita um timestamp futuro com o código de erro 0419 (tolerância de 1 minuto para desvio de relógio). O Tracer rejeita um timestamp com mais de 24 horas com o código de erro 0421.requestId é a chave de idempotência. Envie um novo UUID para cada tentativa. Se você repetir um, o Tracer retorna a decisão que já registrou para essa chave. Uma regra ativada nesse meio-tempo não vai parecer ter surtido efeito.
A resposta identifica as regras que o Tracer avaliou, as regras que corresponderam e o uso atual dos limites. Esse detalhe ajuda na depuração e no suporte ao cliente.
Por que o Tracer retorna uma decisão em vez de bloquear diretamente. O Tracer funciona como uma camada de decisão, não como um gateway de autorização. O sistema que faz a chamada mantém o relacionamento com o cliente e conhece o canal. É ele quem decide o que fazer com um DENY. Por exemplo, seu sistema emissor de cartões pode acatar um
DENY em uma pré-autorização stand-in. Ele ainda pode capturar a requisição para fins de analytics. Ao retornar uma decisão, o Tracer se encaixa em qualquer fluxo de autorização sem ser dono da UX voltada ao cliente.Passo 5: crie uma regra de validação
As regras permitem definir lógica de negócio personalizada que é avaliada durante a validação. Crie uma regra usando o endpoint
POST /v1/rules com uma expressão, uma ação e escopos opcionais.
Por exemplo, para bloquear transações de alto valor:
O Tracer preserva a caixa e os espaços internos do nome, removendo apenas os espaços no início e no fim antes de armazenar. Pegue o
ruleId da resposta e use-o na chamada de ativação abaixo.Ative uma regra
A ativação tem efeito imediato na instância que atendeu à chamada de ativação. Uma configuração de instância única avalia a regra na sua próxima validação. Quando você roda várias instâncias atrás de um load balancer, as outras pegam a mudança na próxima sincronização de regras. O intervalo é
RULE_SYNC_POLL_INTERVAL_SECONDS, com padrão 10. A desativação se propaga da mesma forma.Ciclo de vida da regra
As regras seguem o mesmo ciclo de vida dos limites:DRAFT → ACTIVE → INACTIVE. Para começar a avaliação, ative a regra usando POST /v1/rules/{id}/activate. Você pode desativar e reativar uma regra ativa conforme necessário.
Para informações detalhadas sobre expressões de regras e gerenciamento do ciclo de vida, veja o Guia do motor de regras.
Observabilidade
O Tracer expõe endpoints para monitoramento e observabilidade.
Principais métricas
O Tracer expõe métricas compatíveis com OpenTelemetry via o exportador OTLP, além de métricas personalizadas 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 durante decisões REVIEW (lacunas de consistência eventual que se autocorrigem nos limites do período)
Verificação
Confirme que tudo está funcionando corretamente.
Checklist
- 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 e validou sua primeira transação. A partir daqui, você pode explorar recursos mais avançados:
- Guia de integração - aprenda a 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ção e compliance - consulte o histórico de validação e use-o em seus processos de compliance
Referência rápida
Os três fluxos que você mais vai usar:
- 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 deve implementar a ação apropriada para cada decisão.

