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

# Integrando com o Lerian SISBAJUD

> Como a Lerian SISBAJUD Mensageria se conecta ao Lerian STA, ao Streaming Hub e ao executor: eventos de arquivo, avisos de execução, a API de execução e os eventos que ela publica.

A **Mensageria** se conecta a três sistemas. O **Lerian STA** leva os arquivos de e para o BACEN. O **Streaming Hub** entrega os avisos de execução ao **executor**. O executor chama a **API de execução** da Mensageria para obter cada ordem e informar o resultado. A Mensageria não chama nenhum ledger.

## Lerian STA

***

A Mensageria consome o tópico `lerian.streaming.br-sta`, que o Lerian STA produz. Ela registra seis tipos de evento:

* `br_sta_transfers.accepted`
* `br_sta_transfers.rejected`
* `br_sta_transfers.inconsistent`
* `br_sta_transfers.canceled`
* `br_sta_transfers.download_finished`
* `br_sta_transfers.download_not_authorized`

A Mensageria mantém os eventos cujo `source_product` corresponde à sua configuração `STA_SOURCE_PRODUCT`. Ela ignora os eventos de outros produtos. O campo `direction` de cada evento seleciona o pipeline. Uma direção é um arquivo que o Lerian STA baixou para a Mensageria. A outra é o resultado de um arquivo de resposta que a Mensageria enviou.

O banco de dados também recusa um segundo arquivo de ordens judiciais com o mesmo digest SHA-256 para a mesma instituição.

Com `STA_TRANSFERS_ENABLED` ativado, a Mensageria envia cada arquivo de resposta ao Lerian STA. [Como funciona o Lerian SISBAJUD](https://docs.lerian.studio/pt/rails/sisbajud/how-sisbajud-works.md) descreve o envio.

### Eventos em dead letter

Um evento do Lerian STA que a Mensageria recusa vai para o tópico `lerian.streaming.br-sisbajud.dlq`. O registro traz um token de motivo, por exemplo `institution_unresolved` ou `sha256_mismatch`.

`POST /v1/institutions/{institutionId}/sta-dlq/{eventId}/acknowledge` registra o que um operador fez com um evento em dead letter: `replayed`, `recorded` ou `escalated`. Ele grava um registro de auditoria. Ele não remove o evento, e o tópico mantém o evento pelo seu período de retenção. Para reprocessar um evento, volte o consumer group ao offset de origem que os headers do registro indicam.

## Streaming Hub e o executor

***

A Mensageria publica os avisos de execução e as sondas em `lerian.streaming.br-sisbajud`. O [Streaming Hub](https://docs.lerian.studio/pt/platform/streaming-hub/managing-subscriptions.md) os entrega ao executor por webhook.

Um operador cria uma subscription do Streaming Hub para o executor, no tenant `default`. Cada evento da Mensageria traz esse tenant. A subscription lista exatamente dois tipos de evento: `judicial_order.execution_requested` e `sisbajud_probe.requested`. O Streaming Hub assina cada entrega com o secret da subscription. O executor verifica essa assinatura. Ele executa cada entrega sob o seu próprio tenant e não usa o header de tenant da entrega.

Não dependa da ordem de chegada dos avisos de execução. A Mensageria mantém a ordem das liberações de um sujeito no seu banco de dados.

## API de execução

***

O executor lê as ordens e informa os resultados pela API de execução. Essas operações não estão na referência de API da Mensageria.

| Operação | Caminho | Permissão |
| - | - | - |
| `getOrder` | `GET /v1/sisbajud/execution/orders/{orderId}` | `br-sisbajud-orders:read` |
| `listOrders` | `GET /v1/sisbajud/execution/orders` | `br-sisbajud-orders:read` |
| `postExecutionResult` | `POST /v1/sisbajud/execution/orders/{orderId}/execution-results` | `br-sisbajud-execution-results:create` |
| `getProbe` | `GET /v1/sisbajud/execution/probes/{probeId}` | `br-sisbajud-probes:respond` |
| `postProbe` | `POST /v1/sisbajud/execution/probes/{probeId}` | `br-sisbajud-probes:respond` |

A API de execução tem seu próprio listener em `SISBAJUD_EXECUTION_ADDRESS`. O padrão é `:4032`. A API principal em `SERVER_ADDRESS` não atende esses caminhos. O listener de execução aceita TLS 1.2 ou superior e não tem modo HTTP simples. `SISBAJUD_EXECUTION_TLS_CERT_FILE` e `SISBAJUD_EXECUTION_TLS_KEY_FILE` contêm o certificado e a chave do servidor.

`SISBAJUD_EXECUTION_MTLS_ENABLED` ativa o TLS mútuo. Então o listener exige um certificado de cliente que `SISBAJUD_EXECUTION_CLIENT_CA_FILE` verifica. O executor tem sua própria chave, `MENSAGERIA_MTLS_ENABLED`. Defina as duas chaves com o mesmo valor. Com TLS mútuo ativado na Mensageria e desativado no executor, o handshake TLS falha.

O executor se autentica com um bearer token M2M. A Mensageria obtém a identidade somente do token. O certificado de cliente não altera a autorização.

### Sonda canário

A cada `EXECUTION_CANARY_INTERVAL_SEC` segundos, a Mensageria publica um evento `sisbajud_probe.requested` para cada instituição ativada. O padrão é `300`. Ative uma instituição na Mensageria quando um executor atender essa instituição.

## Eventos

***

A Mensageria publica três tipos de evento no tópico `lerian.streaming.br-sisbajud`.

| Evento | Versão do schema | Payload | Entrega |
| - | - | - | - |
| `judicial_order.execution_requested` | `1.0.0` | `orderId`, `orderRevision`, `institutionId`, `operation`, `parentOrderId` | Gravado no outbox na transação de liberação. |
| `sisbajud_probe.requested` | `1.0.0` | `probeId` | Gravado no outbox com o registro da sonda. |
| `kek.rotated` | `1.1.0` | `eventId`, `keyType`, `keyScope`, `keyPurpose`, `institutionId`, `previousVersion`, `newVersion`, `rotatedAt` | Publicado diretamente, pelo outbox quando o circuit breaker está aberto. |

* A `operation` de um aviso de execução é `REQUISICAO_INFORMACAO`, `BLOQUEIO`, `DESBLOQUEIO` ou `TRANSFERENCIA`.
* A Mensageria publica `kek.rotated` cada vez que registra uma nova versão da KEK de uma instituição, com qualquer um dos provedores de chaves.
* O header `ce-type` é `studio.lerian.br-sisbajud.<resource>.<event>`, por exemplo `studio.lerian.br-sisbajud.kek.rotated`.
* O header `ce-schemaversion` traz a versão do schema.
* O header `ce-tenantid` é `default`.
* O tópico de dead letter de `kek.rotated` é `lerian.streaming.br-sisbajud.dlq`.

### Tópicos

Com `STREAMING_TOPIC_AUTO_PROVISION` no seu padrão, `true`, a Mensageria cria `lerian.streaming.br-sisbajud` e `lerian.streaming.br-sisbajud.dlq` na inicialização. Sua identidade no broker precisa de permissão para criar esses tópicos. Se você criar os tópicos antes do deploy, defina `STREAMING_TOPIC_AUTO_PROVISION` como `false`.


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