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

> Integrando com o Lerian STA: registros de auditoria e de negócio via outbox transacional, claim-checks de entrada e roteamento por produto de origem.

O Lerian STA é event-first em suas bordas. Uma transição para um dos seis desfechos abaixo grava a mudança de estado, um registro de auditoria e um registro de negócio em uma única transação de banco de dados, por meio de um **outbox transacional**. Os consumidores são os serviços de **produto de origem** que são donos dos arquivos que o Lerian STA entrega.

## Canais de eventos

***

O Lerian STA publica nestes canais:

* Um **canal de auditoria** que carrega a trilha de auditoria do Lerian STA: mudanças de credencial, mudanças de estado de transferência, ações de operador e desfechos de arquivos de entrada. Ele alimenta o log de auditoria do Lerian STA e roda quando `AUDIT_PUBLISHER_ENABLED` é `true`.
* Um **canal de negócio assinado**, roteado como `sta.{direction}.{sanitized-source-product}` com um fallback `unrouted`, para consumidores de produtos externos. Ele carrega seis desfechos terminais de transferência. O campo `status` do payload nomeia o estado (`Accepted`, `Rejected`, `Inconsistent`, `Canceled`, `DownloadFinished` ou `NotAuthorized`), e `outcome` traz `SUCCESS`, `FAILURE` ou `CANCELED`. Ele também carrega os desfechos de envio do Reporter, roteados pelo nome do desfecho.
* O **stream de eventos**, quando `STREAMING_ENABLED` é `true`. Ele carrega os mesmos desfechos como CloudEvents do tipo `studio.lerian.br-sta.br_sta_transfers.<event>`, em que `<event>` é `accepted`, `rejected`, `inconsistent`, `canceled`, `download_finished` ou `download_not_authorized`. Cada evento carrega o tenant `default` em `ce-tenantid`.

Os eventos de negócio carregam um `error_code` apenas para desfechos de falha e de cancelamento, e um cancelamento pelo operador o deixa vazio. Os eventos de sucesso de entrada carregam o **claim-check**.

## O claim-check

***

Ao concluir um download de entrada, o Lerian STA emite seu evento terminal **download-finished**, roteado pelo produto de origem do arquivo. O evento carrega um **claim-check** (`object_key`, `sha256`, `size_bytes` e `file_name`), mas não os bytes em si. Para os fatos terminais de entrada, `document_code` carrega o código do BACEN observado. Quando o mnemônico persistido e o código se corroboram, `document_type` carrega o mnemônico. Caso contrário, ele mantém o código para compatibilidade. Um cancelamento pelo operador de uma transferência de entrada não carrega nenhum dos dois campos.

O produto de domínio consumidor se inscreve na própria chave. Ele busca o artefato durável pela sua chave de objeto e reverifica o SHA-256. Em seguida, ele processa o arquivo. O Lerian STA é a fronteira de transporte e integridade. O produto consumidor é o dono do lançamento no ledger.

## Fronteira do ledger

***

O Lerian STA não grava, por si só, no ledger da instituição. Ele entrega o arquivo e o claim-check. O produto consumidor é o dono de qualquer lançamento no ledger. Por exemplo, a Lerian SISBAJUD Mensageria lê os arquivos de ordem judicial, e o Lerian SISBAJUD executor executa as ordens no Midaz. Isso mantém o Lerian STA como uma camada pura de transporte e integridade, independente do significado de negócio de qualquer arquivo específico.

## Envios regulatórios do Reporter

***

Quando `REPORTER_EVENTS_CONSUMER_ENABLED` é `true`, o Lerian STA consome o evento [`regulatory.filing_approved`](https://docs.lerian.studio/pt/reference/events/reporter) do Reporter. Ele envia o relatório aprovado ao BACEN como uma transferência de saída. Antes de enviar o relatório, o Lerian STA compara o arquivo armazenado com o `artifact_sha256` do evento.

O Lerian STA informa o resultado de um envio como um desfecho de envio. Ele publica o desfecho no canal de negócio assinado, com o nome do desfecho como routing key. Quando `STREAMING_ENABLED` é `true`, ele também publica o desfecho no stream de eventos.

| Desfecho | Routing key de negócio | Tipo no stream de eventos | Significado |
| - | - | - | - |
| Entregue | `sta.filing.delivered` | `studio.lerian.br-sta.br_sta_filings.delivered` | O BACEN aceitou o arquivo e emitiu um protocolo. |
| Recusado | `sta.filing.refused` | `studio.lerian.br-sta.br_sta_filings.refused` | O envio não chegou ao BACEN, ou o BACEN o recusou. |

Os dois desfechos carregam `report_id`, `document_id`, `document_version`, `event_id` e `source_event_id`. `source_event_id` é o id do CloudEvent da aprovação, quando a aprovação tem um. Um desfecho entregue adiciona `channel`, `protocol` e `delivered_at`, o momento em que o Lerian STA observou a aceitação. Um desfecho recusado adiciona `refused_at` e `reason`. O `reason` é `checksum_mismatch`, `digest_missing`, `credential_unavailable`, `malformed_approval`, `rejected_by_regulator`, `inconsistent_transfer`, `canceled` ou `transfer_failed`.

## Convenções de integração

***

* **Eventos acoplados ao commit.** Um registro gravado com uma mudança de estado apenas fica disponível depois que essa mudança é commitada.
* **Claim-check, não payload.** Os consumidores recebem uma referência ao artefato durável, buscam-no e reverificam seu SHA-256 antes de agir sobre ele.
* **Entrega pelo menos uma vez.** Faça a deduplicação pelo `event_id` do payload, que permanece o mesmo para um fato terminal.
* **Subscription com chave.** Os clientes escolhem suas subscriptions no broker. O STA roteia os desfechos de transferência assinados por direção e produto de origem sanitizado, com um fallback `unrouted`. Ele não impõe que apenas um subscriber possa receber um arquivo.


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