Antes de começar
- Tracer em execução e acessível, com uma chave de API. Veja Primeiros passos
- O id da conta, do portfólio ou do segmento ao qual o teto se aplica
- O código do ativo das transações que você quer limitar
- Familiaridade com tipos de limite, janelas de tempo e períodos personalizados. Veja Limites de gastos
X-API-Key e rodam contra http://localhost:4020.
Passo 1: Decida a quem o teto se dirige
Um limite carrega uma lista de objetos de escopo, e cada objeto nomeia a que o limite se aplica. Estes campos estão disponíveis dentro de um objeto:
Campos dentro de um mesmo objeto se combinam com AND. Um campo que você omite funciona como curinga. Entre objetos, a lista se combina com OR, então um limite com dois objetos se aplica quando qualquer um deles corresponde.
O id que você nomeia decide a resposta para “R$ 20.000 por conta”:
- Uma conta, seu próprio orçamento
- Um segmento, um orçamento compartilhado
- Restrito a um trilho
Um limite também carrega um
asset, e o Tracer apenas confere um limite contra uma transação quando os dois correspondem. O Tracer não confere um limite criado em BRL contra uma transação em USD. Uma carteira que liquida em duas moedas precisa de um limite para cada uma.Passo 2: Escolha o período
limitType decide tanto o tamanho da janela do teto quanto quando uma nova contagem começa. O Tracer oferece cinco:
“por mês” é
MONTHLY.
Para mover a fronteira, defina resetTime em HH:MM UTC ao criar um limite DAILY, WEEKLY ou MONTHLY. Por exemplo, "03:00" começa cada período à meia-noite em São Paulo (UTC-3). Você não pode alterar resetTime após a criação. Veja Horário de reinício.
CUSTOM recebe customStartDate e customEndDate e é o formato para uma campanha ou uma promoção. Esses dois campos pertencem a CUSTOM. O Tracer os rejeita nos outros quatro tipos. Para restringir um teto a certas horas do dia, veja janelas de tempo.
Passo 3: Crie o limite
POST /v1/limits armazena a definição. O Tracer a cria em DRAFT e ainda não a confere contra transações.
201. O corpo carrega o limite armazenado. Dois campos importam agora:
Os nomes são únicos entre limites, e o conjunto de caracteres é restrito.
name aceita letras ASCII e dígitos, espaços, e -, _, ., (, ). O Tracer rejeita um acento, ou um traço digitado como travessão, com 0371. O Tracer rejeita um nome que outro limite ativo já possui, com 0442. Excluir um limite libera o nome novamente.Passo 4: Ative-o
O Tracer não confere um limite em
DRAFT. A ativação é o que o coloca no caminho:
status definido como ACTIVE. A partir daqui, o Tracer confere contra este limite POST /v1/validations cuja transação corresponda ao escopo e ao ativo.
Ativar no meio do mês não importa o histórico do mês. O Tracer conta uma transação contra um limite no momento em que decide sobre ela. Gastos que aconteceram enquanto o limite estava em
DRAFT não entram na contagem. Um teto ativado no dia 20 rege o que acontece a partir do dia 20.Passo 5: Veja quanto resta
Toda resposta de
POST /v1/validations carrega limitUsageDetails, com uma entrada para cada limite que o Tracer conferiu:
No exemplo acima, uma compra de R$ 1.500 levou um mês que estava em 18.500 a exatamente 20.000 e esgotou o teto. O Tracer nega a próxima transação nessa conta até agosto.
Quando uma transação excede um limite, a decisão é
DENY e reason é limit_exceeded. O Tracer não soma à contagem o valor que teria cruzado o teto. Um limite produz uma negação, não um sinalizador para revisão. Para ir de uma negação dessas de volta ao limite que a causou, veja Revisando uma transação negada.
A outra leitura
GET /v1/limits/{limitId}/usage responde pelo período atual do limite. Ele reporta o escopo que mais consumiu e conta a capacidade retida por reservas não confirmadas do ledger do Midaz. Use-o para ver quanto do teto o período atual já consumiu.
Veja Obter um snapshot de uso de um limite.
Passo 6: Altere, pause ou remova
1
Aumente ou diminua o teto
name, description, maxAmount e scopes são editáveis, assim como os campos de janela de tempo e de período personalizado. limitType, asset e resetTime não são. O Tracer rejeita uma requisição que envie qualquer um deles com 0380, e um período, ativo ou horário de reinício diferente significa um novo limite. O Tracer rejeita um corpo vazio com 0183. Veja Atualizar um limite.Alterar o teto não limpa a contagem em andamento. Diminua-o abaixo do que o período atual já consumiu, e o Tracer nega a conta até o próximo período começar.2
Pare de aplicá-lo
INACTIVE e o Tracer para de conferi-lo. Ele mantém sua definição e seu lugar na , e POST /v1/limits/{limitId}/activate o coloca de volta no caminho. Veja Desativar um limite.3
Volte-o para rascunho
INACTIVE de volta para DRAFT. Veja Retornar um limite ao rascunho.4
Remova-o
204. Você precisa desativar antes um limite que está ACTIVE no momento. O Tracer rejeita a exclusão com 0363, que é o que evita que um teto ativo desapareça por acidente. Veja Excluir um limite.Encontre os limites que você já tem
GET /v1/limits os lista, e filtra pelos mesmos campos de escopo que você definiu no Passo 1:
name, status, limit_type, account_id, segment_id, portfolio_id, merchant_id, scheme e sub_type filtram. Os resultados são paginados por cursor. Veja Listar limites, e Obter um limite para um por id.
O que dá errado
Códigos de erro
A lista completa está em Lista de erros do Tracer.

