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

# Como funciona o Lerian SISBAJUD

> Como uma ordem judicial percorre o Lerian SISBAJUD: entrada do arquivo pelo Lerian STA, liberação para o executor, execução no Midaz e arquivos de resposta ao BACEN.

O BACEN entrega cada ordem judicial como um **arquivo de remessa**. A **Mensageria** recebe o arquivo pelo Lerian STA, registra as ordens e as libera uma de cada vez. O **executor** executa cada ordem no ledger **Midaz** e informa o resultado. Depois, a Mensageria escreve o arquivo de resposta e o envia ao BACEN pelo Lerian STA.

## Fluxo da ordem

***

![Fluxo de ordens do Lerian SISBAJUD](https://mintcdn.com/lerian-49cb71fc/0K0VmlU1dgJqAIYs/images/pt/d2/sisbajud-order-flow.svg?fit=max\&auto=format\&n=0K0VmlU1dgJqAIYs\&q=85\&s=c79bf34355fbd8d30a87908ee5fa36d8)

| # | De | Para | Mensagem | O que acontece |
| - | - | - | - | - |
| 1 | STA (BACEN) | Lerian STA | Arquivo de remessa | O BACEN disponibiliza um arquivo de remessa (`5301`) ou uma requisição de informação (`5308`). O Lerian STA o baixa. |
| 2 | Lerian STA | Mensageria | Evento: arquivo baixado | O Lerian STA publica o evento em `lerian.streaming.br-sta`. A Mensageria lê o arquivo no bucket de entrada. |
| 3 | Mensageria | Mensageria | Nota | A Mensageria faz o parsing do arquivo, registra as ordens e libera a próxima ordem de cada sujeito. |
| 4 | Mensageria | Streaming Hub | Evento: aviso de execução | A Mensageria publica `judicial_order.execution_requested` em `lerian.streaming.br-sisbajud`. |
| 5 | Streaming Hub | Executor | Webhook: aviso de execução | O Streaming Hub entrega o aviso por webhook. O executor também pode lê-lo de uma fila do Amazon SQS. |
| 6 | Executor | Mensageria | GET da ordem | `GET /v1/sisbajud/execution/orders/{orderId}` retorna a ordem. |
| 7 | Executor | Midaz | Bloqueio ou desbloqueio | O executor escreve a ordem no ledger Midaz. |
| 8 | Executor | Mensageria | POST do resultado da execução | `POST /v1/sisbajud/execution/orders/{orderId}/execution-results` registra o resultado. |
| 9 | Mensageria | Lerian STA | POST da transferência | A Mensageria coloca o arquivo de resposta no bucket compartilhado e chama `POST /v1/transfers` no Lerian STA. |
| 10 | Lerian STA | STA (BACEN) | Arquivo de resposta | O Lerian STA envia o arquivo de resposta (`5302` ou `5309`) ao BACEN. |
| 11 | Lerian STA | Mensageria | Evento: resultado da transferência | O Lerian STA informa o resultado da transferência em `lerian.streaming.br-sta`. |

## Entrada das ordens

***

Os eventos do Lerian STA são o único caminho pelo qual um arquivo de ordens entra na Mensageria. A Mensageria consome o tópico `lerian.streaming.br-sta` no consumer group `br-sisbajud-sta-intake-v1`. Ela mantém os eventos cujo produto de origem corresponde à sua configuração `STA_SOURCE_PRODUCT` e ignora os demais.

Antes de baixar um arquivo, a Mensageria compara o tamanho do arquivo com `STA_MAX_INBOUND_SIZE_BYTES`. Depois do download, ela compara o digest SHA-256 do arquivo com o digest do evento. Uma divergência rejeita o arquivo.

| Código de produção | Código de homologação | Arquivo | O que a Mensageria faz |
| - | - | - | - |
| `5301` | `5311` | Remessa de ordens judiciais | Faz o parsing das ordens. |
| `5308` | `5318` | Requisição de informação | Faz o parsing das ordens. |
| `5303` | `5313` | Validação sintática do BACEN sobre um arquivo de resposta de bloqueio | Armazena o arquivo e aplica a validação ao arquivo de resposta. |
| `5310` | `5320` | Validação sintática do BACEN sobre um arquivo de resposta de informação | Armazena o arquivo. |

A Mensageria lê o ambiente, produção ou homologação, no cabeçalho do arquivo.

O arquivo de remessa de bloqueio é texto de largura fixa em ISO-8859-1. O layout 2026 tem registros de 684 caracteres. O layout CNJ v1.11 tem registros de 410 caracteres. `SISBAJUD_REMITTANCE_LAYOUTS` lista os layouts que a Mensageria aceita. O padrão é `v111,v2026`. A Mensageria rejeita um arquivo em um layout que não está na lista.

## Registro da ordem

***

A Mensageria transforma cada arquivo em ordens judiciais. Ela registra estes tipos de ordem:

* `BLOQUEIO` (bloqueio)
* `DESBLOQUEIO` (desbloqueio)
* `REQUISICAO_INFORMACAO` (requisição de informação)
* `REITERACAO` (reiteração)
* `NOTIFICACAO_RECEBIMENTO_TRANSFERENCIA` (aviso de uma transferência judicial a receber, registro 08)

A Mensageria conclui uma ordem `NOTIFICACAO_RECEBIMENTO_TRANSFERENCIA` quando a registra. O executor não recebe aviso de execução para ela. Um arquivo de resposta de bloqueio responde a ela com o código `01` (Recebida).

A Mensageria estaciona as ordens `TRANSFERENCIA` (transferência) e `CANCELAMENTO` (cancelamento), e algumas ordens `DESBLOQUEIO`. Ela também estaciona os pedidos de esclarecimento (registro 09) e as interrupções de um bloqueio permanente (registro 10).

Uma ordem passa pelos status `PENDING`, `PROCESSING`, `MONITORING`, `COMPLETED` e `FAILED`.

A Mensageria criptografa os campos sensíveis com uma chave de dados para cada operação. Uma chave de criptografia de chaves envolve essa chave de dados. O gerenciador de chaves é o HashiCorp Vault Transit ou o AWS KMS.

### Bloqueio permanente

No layout 2026, cada registro de bloqueio traz um indicador de bloqueio permanente. O valor `P` ou `D` marca um bloqueio permanente, e `D` também traz uma data de prazo. Qualquer outro valor marca um bloqueio que não é permanente. No layout CNJ v1.11, essas posições são um espaçador, e a Mensageria as ignora.

### Ordens estacionadas

A Mensageria não executa uma ordem `TRANSFERENCIA` nem uma ordem `CANCELAMENTO`. Ela estaciona a ordem para um procedimento manual. O executor não recebe aviso de execução para uma ordem estacionada, e nenhum arquivo de resposta responde a ela.

Para um `CANCELAMENTO` estacionado, o bloqueio pode continuar no Midaz até que você o libere manualmente.

A Mensageria também estaciona uma ordem `DESBLOQUEIO` quando não tem um registro utilizável do `BLOQUEIO` original, por exemplo um bloqueio de um sistema anterior. O dinheiro pode continuar bloqueado até que você o libere manualmente.

A Mensageria estaciona um pedido de esclarecimento (registro 09) porque uma pessoa deve escrever a resposta. Responda ao juízo manualmente.

A Mensageria estaciona a interrupção de um bloqueio permanente (registro 10). O executor mantém esse bloqueio permanente ativo, e novos créditos podem continuar bloqueados até que você pare o bloqueio manualmente.

A Mensageria registra em log cada ordem estacionada com o seu ID. A métrica `sisbajud_parked_open_total` conta as ordens estacionadas em aberto. Quando o [prazo da resposta](https://docs.lerian.studio/pt/rails/sisbajud/sisbajud-operations.md#response-windows) de uma ordem estacionada passa, a Mensageria registra um erro em log com o ID da ordem.

## Liberação para o executor

***

A Mensageria libera as ordens de um sujeito uma de cada vez. Um sujeito é o CPF ou CNPJ que uma ordem atinge, dentro de uma instituição. A próxima ordem de um sujeito é liberada depois que a ordem anterior é resolvida. Um resultado do executor pode resolvê-la.

A Mensageria grava a liberação e seu aviso de execução na mesma transação de banco de dados. O banco de dados, e não o broker, mantém a ordem das liberações de um sujeito.

## Execução no Midaz

***

Para cada aviso de execução, o executor:

1. Obtém a ordem na Mensageria.
2. Verifica se a instituição da ordem está cadastrada neste executor como sua. Para qualquer outra instituição, ele não escreve nada.
3. Escreve o bloqueio ou o desbloqueio no Midaz. Cada escrita leva uma chave de idempotência formada pelo ID da ordem e pela revisão da ordem.
4. Informa o resultado à Mensageria.

Para uma requisição de informação, o executor lê os saldos do sujeito e não escreve nada no ledger. Quando o executor não consegue concluir uma ordem sozinho, ele entrega a ordem a um operador como uma decisão humana. [Como o Lerian SISBAJUD executor executa ordens](https://docs.lerian.studio/pt/rails/sisbajud/sisbajud-executor.md) descreve cada operação.

## Arquivos de resposta

***

A Mensageria gera dois tipos de arquivo de resposta:

* Um arquivo de **resposta de bloqueio**: `5302` em produção, `5312` em homologação.
* Um arquivo de **resposta de informação**: `5309` em produção, `5319` em homologação. Ele responde às requisições de informação.

Uma varredura em um intervalo configurado pega as ordens concluídas que ainda não têm resposta. `RETURN_FILE_GENERATION_ENABLED` ativa as respostas de bloqueio, e `INFORMATION_RETURN_FILE_GENERATION_ENABLED` ativa as respostas de informação. Um arquivo de resposta usa o ambiente, produção ou homologação, da remessa que suas ordens respondem. `RETURN_FILE_ENVIRONMENT` só se aplica quando nenhuma remessa sustenta as ordens. O padrão é `HOMOLOGATION`. `SISBAJUD_RESPONSE_LAYOUT` com `auto`, o padrão, responde no layout da remessa original. Os valores `v111` e `v2026` forçam um layout.

Com `STA_TRANSFERS_ENABLED` ativado, a Mensageria envia cada arquivo de resposta. Ela grava o arquivo no bucket compartilhado e depois chama `POST /v1/transfers` no Lerian STA.

| Status | Significado |
| - | - |
| `GENERATING` | A Mensageria está escrevendo o arquivo. |
| `GENERATED` | O arquivo está pronto para envio. |
| `TRANSMITTING` | A Mensageria está enviando o arquivo ao Lerian STA. |
| `TRANSMITTED` | O Lerian STA aceitou a transferência. Isso não prova que o BACEN recebeu o arquivo. |
| `DELIVERED` | O Lerian STA informou que o BACEN recebeu o arquivo, com um número de protocolo. |
| `FAILED` | O arquivo não chegou ao BACEN. |
| `REJECTED` | O arquivo chegou ao BACEN, e o BACEN o recusou por sintaxe em uma validação `5303` ou `5313`. |

O transporte de troca de arquivos em si é a integração da instituição que o [Lerian STA](https://docs.lerian.studio/pt/rails/sta/what-is-lerian-sta.md) descreve. O Lerian SISBAJUD é um de seus produtos de origem downstream.


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