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

# API REST do Lender

> Oriente-se na API do Lender: o caminho base /api/v1, autenticação bearer, autorização por recurso e ação, dinheiro como string decimal, idempotência delimitada, paginação, o formato de erro problem+json e as operações agrupadas por trabalho.

O Lender serve uma única API HTTP. Cada operação fica sob o caminho base `/api/v1`, e nada é versionado no host. Uma listagem de produtos é `GET /api/v1/loan-products`.

Esta página é o mapa, não o território. Ela cobre o que as operações compartilham e depois as agrupa pelo trabalho que fazem. Cada operação tem sua própria página sob o anchor **Lender** na [Referência de API](/pt/reference/introduction), com os formatos completos de request e response.

<Note>
  Os documentos OpenAPI deste portal são fontes de renderização para as páginas de referência. Eles não são contratos de cliente nem base para gerar um SDK.
</Note>

## Autenticação

***

O Lender aceita um token bearer JWT. Um único esquema de segurança se aplica a todo o documento:

```http theme={null}
Authorization: Bearer <token>
```

Duas leituras são públicas e não pedem token: [listar jurisdições](/pt/reference/lender/list-jurisdictions) e [obter uma jurisdição](/pt/reference/lender/get-jurisdiction). O registro é metadado da implantação, então um cliente pode lê-lo antes de ter identidade.

As sondas ficam fora da autenticação para que um orquestrador as alcance sem token: `/health`, `/readyz` e `/version`.

### Autorização

***

O Lender autoriza cada request contra a aplicação `lender`, um recurso e uma ação. O recurso acompanha a superfície, e as ações são granulares em vez de uma única escrita:

| Recurso              | Ações                                                                                                                                                               |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `loan_product`       | `read`, `write`                                                                                                                                                     |
| `loan_applications`  | `preview:schedule`, `create`, `approve`, `reject`, `withdraw`, `disburse`, `capitalization-consent:ingest`, `preview:tax`                                           |
| `loan_accounts`      | `read`, `audit:read`, `charge:apply`, `repayment:preview`, `repayment:record`, `repayment:reverse`, `prepayment:record`, `reschedule`, `cet:read`, `pdd:transition` |
| `accounting`         | `read`, `write`                                                                                                                                                     |
| `streaming_manifest` | `read`                                                                                                                                                              |

Conceda ao papel do oficial apenas as ações de que o trabalho dele precisa. `make generate-casdoor` escreve os papéis e permissões do Lender num arquivo semente que você carrega no seu provedor de identidade — [Pré-requisitos](/pt/lender/lender-prerequisites) mostra o conjunto mínimo para originar.

### Identidade de tenant e de oficial

***

**O tenant nunca é um header, um parâmetro de query nem um campo do body.** O Lender o resolve a partir da identidade validada do request. Veja [Multi-tenancy](/pt/multi-tenancy).

O oficial designado vem do subject do token da mesma forma. Nenhum body de solicitação de empréstimo carrega um campo de oficial, e nenhum valor enviado pelo cliente sobrescreve o subject.

## Requests e responses

***

Toda operação que carrega body envia e devolve `application/json`.

**Envie todo campo de dinheiro e de taxa como string decimal**, nunca como número JSON — `"50000.00"`, `"0.01500000"`. O Lender os devolve do mesmo jeito. Os timestamps são RFC 3339 em UTC.

## Idempotência

***

As escritas de dinheiro e de cronograma aceitam o header de request `X-Idempotency`.

| Operação                                                                          | Header                                               |
| --------------------------------------------------------------------------------- | ---------------------------------------------------- |
| [Desembolsar uma solicitação](/pt/reference/lender/disburse-loan-application)     | `X-Idempotency` obrigatório                          |
| [Aplicar um encargo de produto](/pt/reference/lender/create-loan-product-charges) | `X-Idempotency` obrigatório                          |
| [Pré-pagar uma conta de empréstimo](/pt/reference/lender/prepay-loan-account)     | `X-Idempotency` obrigatório                          |
| [Pré-pagar sob o pacote Brasil](/pt/reference/lender/prepay-loan-account-br)      | `X-Idempotency` obrigatório                          |
| [Repactuar uma conta de empréstimo](/pt/reference/lender/reschedule-loan-account) | `X-Idempotency` obrigatório                          |
| [Registrar um pagamento](/pt/reference/lender/record-repayment)                   | `X-Request-ID`, com `X-Idempotency` como alternativa |
| [Reverter uma transação](/pt/reference/lender/reverse-loan-account-transaction)   | `X-Request-ID`, com `X-Idempotency` como alternativa |

Envie a sua própria chave. As cinco operações que **exigem** `X-Idempotency` compartilham um comportamento:

* Uma retentativa de uma chamada **concluída** repete a primeira resposta e coloca nela `X-Idempotency-Replayed: true`. Nada é registrado uma segunda vez.
* Uma retentativa enquanto a primeira chamada ainda está **em voo** responde `409`.
* A chave tem escopo de tenant e expira depois da janela que `IDEMPOTENCY_RETRY_WINDOW_SEC` define, com default de 300 segundos.

O pagamento e a reversão funcionam de outro jeito. Os dois leem `X-Request-ID` primeiro e recorrem a `X-Idempotency` quando ele falta. Envie um dos dois: uma chamada que não carrega nenhum responde `422`.

O Lender guarda o id do request no banco de dados junto com os dados da chamada. Uma retentativa que carrega o mesmo id e os mesmos dados repete a primeira resposta pela rota normal de resposta, sem header de repetição. O mesmo id de request com dados **diferentes** responde `409` em vez de repetir, então um id nunca consegue registrar dois valores diferentes. Esse registro não expira.

Os dados que o Lender compara mudam conforme a operação:

| Operação               | Dados comparados com o id do request guardado                                                                                                                                                                 |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Registrar um pagamento | A conta de empréstimo, o valor e a data de efeito (`transactionDate` quando `effectiveDate` está ausente).                                                                                                    |
| Reverter uma transação | A transação que está sendo revertida, a conta de empréstimo, a data efetiva da reversão, o motivo, a versão do perfil e o código de jurisdição. O valor vem da transação original, então ele não é comparado. |

## Paginação

***

A paginação é por operação, não global. Leia a página de referência da operação que você chama, e envie só os parâmetros que ela declara.

| Leitura                                                                                                                                                            | Parâmetros                                                        |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
| [Listar produtos de empréstimo](/pt/reference/lender/list-loan-products) e [listar produtos de empréstimo brasileiros](/pt/reference/lender/list-loan-products-br) | `limit` (default 25, teto 100) e `offset` (default 0, teto 10000) |
| [Eventos de auditoria](/pt/reference/lender/list-loan-account-audit-events-huma)                                                                                   | só `limit` (default 50, teto 100)                                 |

Um valor fora da faixa é rejeitado em vez de ajustado ao limite. Cada outra leitura declara os próprios parâmetros, então restrinja-a com os identificadores e filtros da página de referência dela.

## Erros

***

Todo erro responde `application/problem+json` e segue a [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457).

| Campo    | O que carrega                                                                                                        |
| -------- | -------------------------------------------------------------------------------------------------------------------- |
| `status` | O código de status HTTP.                                                                                             |
| `title`  | O nome do status.                                                                                                    |
| `detail` | O que falhou nesta ocorrência.                                                                                       |
| `errors` | Numa falha de validação, uma entrada por campo, cada uma com `location`, `message` e o `value` que o Lender recebeu. |

Ramifique pelo status e, num `422`, pelos valores de `location` em `errors`. Um `422` nomeia cada campo que falhou. Uma falha do lado do servidor responde com um detail genérico, então uma causa crua nunca chega a um cliente.

## As operações por trabalho

***

### Catalogar um produto

Oito operações são donas do catálogo. [Criar um produto](/pt/reference/lender/create-loan-product) e [acrescentar uma versão](/pt/reference/lender/create-loan-product-version) constroem os termos aos quais uma solicitação se vincula. A versão é imutável. [Vincular um perfil contábil](/pt/reference/lender/create-loan-product-accounting-profile) mapeia cada evento contábil para contas do livro-razão, e o Lender precisa dele no desembolso. [Aplicar um encargo](/pt/reference/lender/create-loan-product-charges) e [ler taxas flutuantes](/pt/reference/lender/list-loan-product-floating-rates) completam a superfície, junto com [listar](/pt/reference/lender/list-loan-products), [obter](/pt/reference/lender/get-loan-product) e [ativar](/pt/reference/lender/activate-loan-product). Leia [Definir um produto de empréstimo](/pt/lender/define-a-loan-product).

### Originar

Seis operações levam uma solicitação de enviada a desembolsada: [criar](/pt/reference/lender/create-loan-application), depois uma de [aprovar](/pt/reference/lender/approve-loan-application), [rejeitar](/pt/reference/lender/reject-loan-application) ou [retirar](/pt/reference/lender/withdraw-loan-application), e então [desembolsar](/pt/reference/lender/disburse-loan-application). [Pré-visualizar um cronograma](/pt/reference/lender/preview-loan-schedule) calcula as parcelas para uma cotação e não persiste nada.

As respostas de criação e de decisão são as únicas leituras de uma solicitação, então guarde o body que cada chamada devolve. Leia [Como funciona a originação](/pt/lender/how-origination-works) para a máquina de estados e [Início rápido](/pt/lender/lender-quick-start) para as seis chamadas de ponta a ponta.

### Fazer servicing de um empréstimo vivo

Cinco leituras descrevem a conta: [a conta](/pt/reference/lender/get-active-loan-account), [o cronograma](/pt/reference/lender/get-active-loan-schedule), [as transações](/pt/reference/lender/list-active-loan-transactions), [os encargos](/pt/reference/lender/list-active-loan-charges) e [o histórico de auditoria](/pt/reference/lender/list-loan-account-audit-events-huma).

Cinco escritas movem dinheiro ou o cronograma: [pré-visualizar um pagamento](/pt/reference/lender/preview-repayment) antes de [registrá-lo](/pt/reference/lender/record-repayment), [pré-pagar](/pt/reference/lender/prepay-loan-account), [repactuar](/pt/reference/lender/reschedule-loan-account) e [reverter uma transação](/pt/reference/lender/reverse-loan-account-transaction). Nada reescreve o histórico. Uma reversão registra uma nova transação que compensa a original. Leia [Fazer servicing de um empréstimo](/pt/lender/service-a-loan).

### Contabilizar e lançar

[Iniciar uma rotina de apropriação](/pt/reference/lender/create-accrual-run) reconhece juros de um período de competência. [Liste as referências de lançamento](/pt/reference/lender/get-journal-reference) por id de correlação e [leia uma](/pt/reference/lender/get-journal-reference-by-id) para encontrar o registro contábil que uma rotina escreveu. Leia [Contabilidade e rotinas de apropriação](/pt/lender/accounting-and-accrual-runs).

### Descobrir jurisdições

As duas leituras públicas informam quais códigos de jurisdição esta implantação carrega e o que cada perfil decide. Leia [Jurisdições](/pt/lender/jurisdictions).

### Brasil

O pacote Brasil acrescenta leituras e escritas reguladas sob `/api/v1/br`: [divulgação do CET](/pt/reference/lender/get-loan-account-cet-disclosure), [o descritor da operação de crédito](/pt/reference/lender/get-loan-account-credit-operation-descriptor), [estágio de PDD](/pt/reference/lender/get-loan-account-pdd-stage) e [suas transições](/pt/reference/lender/apply-loan-account-pdd-stage-transition), [uma cotação de pré-pagamento](/pt/reference/lender/create-prepayment-quote) com [o respectivo extrato de liquidação](/pt/reference/lender/get-payoff-statement), [pré-visualização de tributos](/pt/reference/lender/preview-tax) e [consentimento de capitalização](/pt/reference/lender/ingest-capitalization-clause-consent). O pacote também carrega seus próprios caminhos de produto, que se comportam como os genéricos sob regras brasileiras. Leia [Pacote regulatório do Brasil](/pt/lender/brazil-regulatory-pack).

A jornada com desconto em folha é uma conversa por eventos com o rail de folha de pagamento, não um conjunto de chamadas REST. Leia [Consignado privado](/pt/lender/consignado-privado).

## Próximos passos

***

<CardGroup cols={2}>
  <Card title="Início rápido" icon="rocket" href="/pt/lender/lender-quick-start">
    Seis chamadas de um banco vazio a um empréstimo desembolsado.
  </Card>

  <Card title="Eventos" icon="bell" href="/pt/lender/lender-events">
    Assine a jornada de crédito em vez de fazer polling.
  </Card>

  <Card title="Referência de API" icon="code" href="/pt/reference/introduction">
    Cada operação, com os formatos completos de request e response.
  </Card>

  <Card title="Pré-requisitos" icon="list-check" href="/pt/lender/lender-prerequisites">
    Os serviços, as migrações e a configuração que uma primeira chamada precisa.
  </Card>
</CardGroup>
