> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Validar uma transação antes do ledger (API)

> Seu sistema pede ao Tracer ALLOW, DENY ou REVIEW e lança a transação no Midaz apenas depois de ALLOW.

Peça ao Tracer uma decisão sobre cada transação e lance a transação no Midaz apenas depois de ALLOW.

## Participantes

***

* **Sua instituição.** Seu sistema reúne o contexto da transação, chama o Tracer, age conforme a decisão e lança a transação.
* **Tracer.** Avalia suas regras e seus limites de gastos ativos e devolve a decisão.
* **Midaz.** O ledger que registra a transação depois de ALLOW.

## Antes de começar

***

* Seu sistema pode chamar a API do Tracer com uma credencial válida. Veja o [guia de integração do Tracer](https://docs.lerian.studio/pt/products/tracer/integration-guide.md).
* Suas regras e seus limites de gastos estão em ACTIVE no Tracer. Veja [Configurar regras e limites de gastos](https://docs.lerian.studio/pt/diagrams/lerian-products/tracer-set-up-rules-and-limits.md).

## Diagrama

***

![Validar uma transação antes do ledger](https://mintcdn.com/lerian-49cb71fc/WuRfbo_y9uSbzyyX/images/pt/d2/id-tracer-validate-before-ledger.svg?fit=max\&auto=format\&n=WuRfbo_y9uSbzyyX\&q=85\&s=e7ed393606d951a72fd2690f6bacf7b9)

## Passo a passo

***

| # | Origem | Destino | Mensagem | API da Lerian | O que acontece |
| - | - | - | - | - | - |
| 1 | Sua instituição | Tracer | API da Lerian | [`POST /v1/validations`](https://docs.lerian.studio/pt/reference/products/tracer/validate-transaction) | Envie o contexto completo da transação com um novo `requestId`. |
| 2 | Tracer | Tracer | Etapa interna | | O Tracer avalia suas regras ativas. A menos que o resultado já seja `DENY`, ele verifica seus limites de gastos ativos. |
| 3 | Tracer | Sua instituição | API da Lerian | Resposta ao passo 1 | O Tracer devolve `ALLOW`, `DENY` ou `REVIEW` com o `validationId`, as regras que casaram e o uso dos limites. Uma requisição nova devolve `201`. Um `requestId` conhecido devolve `200`. |
| 4 | Sua instituição | Sua instituição | Etapa interna | | Lance a transação depois de `ALLOW`. Recuse a transação depois de `DENY`. Envie um `REVIEW` ao seu próprio processo de revisão. |
| 5 | Sua instituição | Midaz | API da Lerian | [`POST /v2/transactions/direct`](https://docs.lerian.studio/pt/reference/products/midaz/v2/create-transaction-direct) | Lance a transação no ledger, apenas depois de `ALLOW`. |
| 6 | Midaz | Sua instituição | API da Lerian | Resposta ao passo 5 | O Midaz devolve a transação criada com `201`. |

## Como saber que terminou

***

O Tracer devolveu uma decisão com o `validationId`. Depois de `ALLOW`, o Midaz devolveu a transação criada.

## Regras

***

* Uma regra `DENY` que casa decide `DENY`, e o Tracer então não verifica os limites. Em seguida, um limite excedido decide `DENY`. Em seguida, uma regra `REVIEW` que casa ou uma regra que o Tracer não consegue avaliar decide `REVIEW`. Depois, uma regra `ALLOW` que casa decide `ALLOW`. Por último, quando nenhuma regra casa e o Tracer consegue avaliar todas as regras, vale a decisão padrão da configuração do seu Tracer: `ALLOW` ou `DENY`.
* Apenas `ALLOW` conta o valor nos seus limites de gastos.
* Um `requestId` que o Tracer já conhece devolve a decisão guardada e não conta nada de novo.
* Use esta jornada ou a verificação do Midaz para uma transação, não as duas.

## O que pode dar errado

***

| Situação | O que você vê | O que fazer |
| - | - | - |
| O Tracer não responde a tempo. | Nenhuma resposta. | Envie a mesma requisição com o mesmo `requestId`. O Tracer devolve a decisão guardada, se tiver uma. Se não tiver, ele decide agora. |
| O Midaz não responde a tempo. | Nenhuma resposta. | O resultado não é conhecido. Envie a mesma requisição com a mesma chave `X-Idempotency` antes que a chave expire. |

## Relacionados

***

* [Verificar transações do Midaz com o Tracer](https://docs.lerian.studio/pt/diagrams/lerian-products/tracer-check-ledger-transactions.md)
* [Investigar uma decisão na trilha de auditoria](https://docs.lerian.studio/pt/diagrams/lerian-products/tracer-investigate-a-decision.md)
* [Guia de integração do Tracer](https://docs.lerian.studio/pt/products/tracer/integration-guide.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.