> ## 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.

# Verificar transações do Midaz com o Tracer (API)

> O Midaz consulta o Tracer sobre uma transação antes que qualquer saldo se mova. O Tracer reserva capacidade de limite, e o Midaz a confirma ou a libera.

Deixe o Midaz consultar o Tracer sobre uma transação antes que qualquer saldo se mova.

## Participantes

***

* **Sua instituição.** Seu sistema cria, confirma e cancela as transações no Midaz.
* **Midaz.** O ledger. Ele consulta o Tracer antes de mover qualquer saldo e confirma ou libera a capacidade que o Tracer reserva.
* **Tracer.** Avalia suas regras ativas, reserva capacidade nos seus limites de gastos e devolve a decisão ao Midaz.

## Antes de começar

***

* O Midaz está conectado ao Tracer no seu ambiente.
* O modo do Tracer nas configurações do seu ledger é `advisory` ou `enforce`. O padrão é `off`. Altere o modo com [`PATCH /v2/organizations/{organization_id}/ledgers/{ledger_id}/settings`](https://docs.lerian.studio/pt/reference/products/midaz/v2/update-ledger-settings). Veja as [configurações do ledger](https://docs.lerian.studio/pt/products/midaz/ledgers.md#ledger-settings).
* 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

***

### Transação

![Verificar transações do Midaz com o Tracer: Transação](https://mintcdn.com/lerian-49cb71fc/WuRfbo_y9uSbzyyX/images/pt/d2/id-tracer-check-ledger-transactions-1.svg?fit=max\&auto=format\&n=WuRfbo_y9uSbzyyX\&q=85\&s=e8c7aa9997f842e202b7430048b76dec)

| # | Origem | Destino | Mensagem | API da Lerian | O que acontece |
| - | - | - | - | - | - |
| 1 | Sua instituição | Midaz | API da Lerian | [`POST /v2/transactions/direct`](https://docs.lerian.studio/pt/reference/products/midaz/v2/create-transaction-direct) | Crie a transação. |
| 2 | Midaz | Tracer | Chamada interna | | Antes que qualquer saldo se mova, o Midaz pede ao Tracer que verifique a transação e reserve capacidade nos seus limites de gastos. |
| 3 | Tracer | Tracer | Etapa interna | | O Tracer avalia suas regras ativas. Se as regras não decidirem `DENY` ou `REVIEW`, o Tracer verifica seus limites de gastos e reserva o valor nos limites que contam uso. |
| 4 | Tracer | Midaz | Chamada interna | | O Tracer responde `ALLOW`, `DENY` ou `REVIEW`. |
| 5 | Midaz | Midaz | Etapa interna | | No modo `enforce`, o Midaz rejeita um `DENY` ou um `REVIEW`, e nenhum saldo se move. Caso contrário, o Midaz aplica os débitos e os créditos. |
| 6 | Midaz | Tracer | Chamada interna | | Depois que os saldos se movem, o Midaz confirma a capacidade reservada. |
| 7 | Midaz | Sua instituição | API da Lerian | Resposta ao passo 1 | O Midaz devolve a transação com `201`, ou a rejeição. |

### Transação pendente

![Verificar transações do Midaz com o Tracer: Transação pendente](https://mintcdn.com/lerian-49cb71fc/WuRfbo_y9uSbzyyX/images/pt/d2/id-tracer-check-ledger-transactions-2.svg?fit=max\&auto=format\&n=WuRfbo_y9uSbzyyX\&q=85\&s=662ae7c657ae4ec7f45dc3d3cd356d04)

| # | Origem | Destino | Mensagem | API da Lerian | O que acontece |
| - | - | - | - | - | - |
| 1 | Sua instituição | Midaz | API da Lerian | [`POST /v2/transactions/hold`](https://docs.lerian.studio/pt/reference/products/midaz/v2/create-transaction-hold) | Crie uma transação pendente. |
| 2 | Midaz | Tracer | Chamada interna | | O Midaz pede ao Tracer que verifique a transação e reserve capacidade para ela. |
| 3 | Tracer | Midaz | Chamada interna | | O Tracer responde `ALLOW`, `DENY` ou `REVIEW`. |
| 4 | Midaz | Sua instituição | API da Lerian | Resposta ao passo 1 | O Midaz devolve a transação pendente com `201`, ou a rejeição. |
| 5 | Sua instituição | Midaz | API da Lerian | [`POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id}/commit`](https://docs.lerian.studio/pt/reference/products/midaz/v2/commit-transaction) ou [`POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id}/cancel`](https://docs.lerian.studio/pt/reference/products/midaz/v2/cancel-transaction) | Confirme a transação pendente ou cancele a transação. |
| 6 | Midaz | Tracer | Chamada interna | | Em uma confirmação, o Midaz confirma a capacidade reservada. Em um cancelamento, o Midaz libera a capacidade. |
| 7 | Midaz | Sua instituição | API da Lerian | Resposta ao passo 5 | O Midaz devolve a transação confirmada ou cancelada. |

## Como saber que terminou

***

O Midaz devolveu a transação, ou a transação pendente confirmada ou cancelada.

## Regras

***

* As rotas de transação v1 não chamam o Tracer.
* No modo `advisory`, o Midaz chama o Tracer e nunca bloqueia a transação.
* No modo `enforce`, quando o Tracer não responde a tempo, `tracer.failPosture` decide. Com `open`, o padrão, a transação segue sem a verificação. Com `closed`, o Midaz rejeita a transação.
* Quando nenhuma regra casa, o Tracer não aplica a decisão padrão neste caminho.
* O Tracer verifica a conta da primeira origem da transação, com o segmento e o portfólio dela. O valor inclui as tarifas.
* O Tracer recebe apenas valores de metadados escalares, como texto. Compare esses valores como strings nas regras deste caminho.
* Um estorno conta nos seus limites de gastos. O Tracer não aplica suas regras a ele.
* Se uma confirmação ou uma liberação não chega ao Tracer, o resultado da transação não muda.
* Uma requisição pode pular a verificação do Tracer com `skip.tracer` apenas quando a configuração do ledger `overrides.allowTracerSkip` é `true`.

## O que pode dar errado

***

Os códigos `0177`, `0531`, `0532`, `0535` e `0178` vêm apenas de um ledger no modo `enforce`.

| Situação | O que você vê | O que fazer |
| - | - | - |
| Um limite é excedido. | `422`, código `0177`. | Nada se moveu. Reduza o valor ou espere o período do limite reiniciar. |
| Uma regra nega. | `422`, código `0535`. | Nada se moveu. Revise a regra que casou. |
| Uma regra pede revisão, ou o Tracer não consegue avaliar uma regra. | `422`, código `0531`. | Nada se moveu. Trate o caso no seu processo de revisão. |
| O Tracer recusa a requisição. | `422`, código `0532`. | Nada se moveu. Confira o ativo, o tipo de conta e a data da transação. |
| O Tracer não responde, e a postura é `closed`. | `503`, código `0178`. | Nada se moveu. Envie a transação de novo mais tarde. |
| O ledger não permite pular a verificação. | `422`, código `0490`. | Remova `skip.tracer` ou permita pular a verificação nas configurações do ledger. |
| 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. |

A [lista de erros do Midaz](https://docs.lerian.studio/pt/reference/products/midaz/error-list.md) descreve cada código.

## Relacionados

***

* [Validar uma transação antes do ledger](https://docs.lerian.studio/pt/diagrams/lerian-products/tracer-validate-before-ledger.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#midaz-ledger-reservation-seam)


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