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

# Integração com o Lerian SLC

> Integração com o Lerian SLC: as mensagens da Núclea e do Lerian SILOC que ele consome, seus eventos de liquidação e compensação de cartões, webhooks assinados com HMAC e convenções de API.

O Lerian SLC é orientado a eventos nas suas bordas. Ele consome as mensagens de entrada da Núclea. Ele grava seus fatos de negócio em um **outbox transacional**, que os entrega às subscriptions de webhook. Quando o streaming está ativo, o outbox também publica eventos no backbone de streaming da plataforma. No backbone de streaming, cada evento é um registro **CloudEvents**. Um webhook entrega o payload do evento como JSON.

## O que ele consome

***

Da Núclea, pela **RSFN**:

* **GEN0015** (um arquivo está disponível para retirada, o que inicia a busca dos retornos)
* **SLC0001** (prévia e final da compensação)
* **SLC0002**
* **PAG0101** (status operacional)

Pelo barramento de entrada SFN:

* Do Lerian SILOC, as mensagens de ciclo e de financiamento do SILOC: **PAG0102**, **PAG0103** e **LDL0021**.
* Do Lerian SILOC, os avisos de liquidação bruta e bilateral: **LTR0001**, **LTR0007** e **LTR0012**.
* O resultado de cada comando de liquidação que o Lerian SLC envia.

Da Núclea, via REST, o Lerian SLC consulta por polling os vereditos **SLC0915**, os retornos **PRO / ERR / RET** e as mensagens de retorno ASLC. Ele correlaciona cada costura de retorno pela chave que a contraparte ecoa: uma linha **RET** ou um veredito **SLC0915** pelo seu número de controle de 20 posições, uma linha **ASLC023** ou D+1 pelo seu **NUliquid**, e um **PRO** em nível de arquivo pelo número de controle do arquivo transmitido.

## O que ele emite

***

Os eventos de ciclo de vida e os repasses de status são gravados na mesma transação que a mudança de estado que eles informam.

* **Eventos de ciclo de vida da operação**: um para cada estado em que a operação entra, de `operation.created` a `operation.cancelled`. `operation.manually_advanced` informa uma intervenção auditada. `operation.d1_rejected` informa um crédito que a IF Domicílio recusou depois de liquidado.
* **`operation.status_relayed`**: o trilho repassou a resposta da IF Domicílio à credenciadora.
* **`operation.forward_rejected`**: uma submissão de saída ficou em espera e precisa de ação do operador. O payload, não o nome do evento, informa qual perna e por quê. `stage` identifica a perna afetada: `forward` para a IF Domicílio ou `dispatch` para a Núclea. Em ambos os casos, `parkReason` é `attempt_budget_exhausted`. `operationIdsScope` informa se `operationIds` está completo para o arquivo ou é apenas uma amostra. `GET /v1/operations?transmitHold=parked` lista todas as operações em espera.
* **`operation.verdict_unresolved`**: o veredito da Núclea sobre uma submissão não se resolveu em uma aceitação nem em uma recusa, então a operação não mudou de estado.
* **Alertas da grade horária**: `operation.stuck_detected`, `d1.missing_confirmation`, `confirmation.overdue` e `schedule.cutoff_approaching`.
* **`cancellation.confirmed_by_domicile`**: a IF Domicílio confirmou um cancelamento e o evento carrega o NUliquid.
* **`d1.value_mismatch`**: uma divergência de valor entre D0 e D+1.
* **`certificate.expiring`**: um certificado se aproximando do vencimento.
* A família **`clearing.*`**: `cycle_opened`, `cycle_closed`, `cycle_recalculated`, `preview_available`, `final_available`, `deposit_required`, `deposit_deadline_approaching` e `divergence_reported`.
* **`funding.deposit_failed`**: a instituição informou que não conseguiu fazer um depósito.
* **`report.request_acknowledged`** e **`report.result_available`**: a Núclea confirmou o recebimento de uma solicitação de relatório, ou o resultado dela está disponível.

## Ponto de contato com o Midaz

***

O Lerian SLC é autônomo. Ele não lança em um ledger por conta própria. O Midaz é um consumidor opcional. O Midaz pode se inscrever nos eventos do Lerian SLC ou chamar sua API para espelhar a liquidação no ledger. O Lerian SLC não depende do Midaz.

## Limite do caminho do dinheiro

***

O Lerian SLC detém a mensageria de liquidação de cartões com a Núclea. Ele não faz a liquidação monetária em si. A posição líquida se liquida na SLC e na Núclea. A perna de reserva se liquida no BACEN. A família de liquidação líquida diferida do domínio de cartões chega ao Lerian SLC repassada pelo [Lerian SILOC](https://docs.lerian.studio/pt/rails/siloc/what-is-lerian-siloc.md), a conectividade SILOC do lado do participante.

## Convenções de API

***

* **Entrada idempotente.** A entrada de operações recusa um `externalId` que outra operação já usa, com `409` e `SLC-0104`. Em um lote, uma linha com `externalId` duplicado é recusada sozinha, e o erro dela nomeia a operação existente.
* **Escritas idempotentes.** A entrada de operações, a entrada em lote e a confirmação do depósito aceitam um header `X-Idempotency` opcional. As operações de chave de assinatura e de comando de liquidação o exigem e respondem `400` sem ele.
* **Webhooks assinados.** O Lerian SLC assina cada webhook com HMAC-SHA256 e envia a assinatura em `X-Webhook-Signature`.
* **Autenticação online.** mTLS e uma assinatura JWS por requisição protegem cada operação online individual via REST.
* **Certificados são referências, não segredos.** Um certificado registrado carrega seu certificado público e uma referência de custódia, não a chave privada.


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