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

# Deploy e configuração

> Rode o JD Courier na sua infraestrutura: os quatro papéis, as portas, a configuração do Access Manager, as credenciais dos motores, o trânsito Pix, o comportamento da licença e a ativação dos trilhos.

No BYOC, você roda o Courier no seu próprio ambiente. Uma imagem roda em quatro papéis. Na Lerian Cloud, a Lerian opera o Courier: veja [Na Lerian Cloud](#on-lerian-cloud).

## Antes de começar

***

Confirme que você tem estes itens:

* Um banco de dados PostgreSQL para o Courier.
* O Access Manager v3.12.0 ou posterior, e o endereço dele.
* A sua chave de licença da Lerian e o ID da organização.
* As configurações do canal SPB que a JD deu à sua instituição.
* Para o trânsito Pix, a credencial da cabine SPI que a JD deu à sua instituição.

## Os quatro papéis

***

Um binário carrega os quatro papéis. A variável `COURIER_ROLES` seleciona os papéis de um processo. Ela não tem padrão: um processo sem ela não inicia.

| Papel | Réplicas | Porta do Service | O que serve |
| - | - | - | - |
| `spb-consumer` | Exatamente `1` | Nenhuma | Lê as mensagens SPB da JD e as roteia. |
| `spb-sender` | `2` | `8081` | A interface SOAP para os motores. |
| `pix-ingress` | `2` | `8080` | O endereço para o qual a JD envia as chamadas Pix. |
| `admin` | `1` | `8080` | A API do operador, a API dos motores, a conciliação e o trânsito Pix quando você o liga. |

Rode `spb-consumer` como exatamente uma réplica. Uma leitura da fila da JD remove a mensagem, então o consumidor é um escritor único. Um processo que combina `spb-consumer` com outro papel para no boot com o código `JDC-0314`.

## Portas

***

| Porta | Variável | Padrão | Serve |
| - | - | - | - |
| HTTP | `SERVER_ADDRESS` | `:8080` | Os probes, a API do operador, a API dos motores e o endereço Pix. |
| SOAP | `SOAP_SERVER_ADDRESS` | `:8081` | A interface SOAP, apenas no papel `spb-sender`. |
| Trânsito Pix | `PIX_TRANSIT_SERVER_ADDRESS` | — | O trânsito Pix, apenas no papel `admin`, quando você define o endereço. |

Cada papel responde aos probes na porta HTTP: `/health` para liveness, `/readyz` para readiness e `/version` para o build.

## Instalar

***

Para instalar ou atualizar o Courier, consulte o [README do chart do JD Courier](https://github.com/LerianStudio/helm/tree/main/charts/br-jd-courier).

Guarde `LICENSE_KEY`, `POSTGRES_PASSWORD`, `JD_PASSWORD`, `JD_SPI_CLIENT_SECRET` e `IDP_M2M_CLIENT_SECRET` no seu cofre de segredos.

O Courier não aplica migrações de banco de dados no boot. Aplique-as antes de cada instalação e upgrade.

## Variáveis de ambiente

***

As variáveis do Courier, com os padrões e os efeitos delas, estão em [Variáveis de ambiente do JD Courier](https://docs.lerian.studio/pt/interfaces/jd-courier/jd-courier-environment-variables.md).

## Access Manager

***

No modo single-tenant, o Courier publica no seu Access Manager a adesão dele a parceiros. Com `IDP_DECLARATION_ENABLED=true`, ele também publica as permissões dele. As duas publicações precisam de `IDP_HOST`, `IDP_M2M_CLIENT_ID` e `IDP_M2M_CLIENT_SECRET`. Até o seu Access Manager aceitar a publicação, o `/readyz` informa `permission_declaration` como `degraded`, com o motivo.

### A JD como parceiro

A JD chama o seu endereço Pix como um parceiro do Access Manager da sua instalação.

1. [Crie um parceiro](https://docs.lerian.studio/pt/platform/access-manager/features/partners/console.md) para a JD no seu Access Manager.
2. Dê ao parceiro a permissão `pix-ingress` do JD Courier com a ação `post`.
3. [Crie a aplicação do parceiro](https://docs.lerian.studio/pt/platform/access-manager/features/partners/console.md#create-the-partners-applications) e entregue à JD o client ID e o secret dela.

O Courier recusa com `401` todo chamador do endereço Pix que não é um parceiro do Access Manager, inclusive os motores.

## Credenciais dos motores

***

O Courier lê no AWS Secrets Manager, em `AWS_REGION`, a credencial que usa em cada motor. Guarde-a lá antes de registrar o endereço do motor.

| Endereço do motor | Caminho do secret | Campo de referência |
| - | - | - |
| Endereço Pix | `tenants/{ENVIRONMENT_NAME}/{tenantId}/jd-courier/external/pix-engine-{engineId}/credentials/versions/{versionId}` | `pixDelivery.credentialRef` |
| Endereço TED | `tenants/{ENVIRONMENT_NAME}/{tenantId}/jd-courier/external/ted-engine-{engineId}/credentials/versions/{versionId}` | `tedDelivery.credentialRef` |

A referência deve apontar para o secret desse motor. O Courier não entrega ao motor quando a referência aponta para qualquer outro caminho. O secret é um objeto JSON com os campos `clientId` e `clientSecret`. `{versionId}` é um UUID em minúsculas. `{tenantId}` é o identificador na resposta à [ativação de um trilho](#activate-the-rails). No modo single-tenant, ele é `local`. No modo multi-tenant, ele é o tenant do token validado.

## Trânsito Pix

***

O trânsito Pix permite que os motores enviem as próprias chamadas Pix à JD pelo Courier. Para ligá-lo, defina `PIX_TRANSIT_SERVER_ADDRESS` no papel `admin`. O trânsito escuta nesse endereço, com as próprias configurações de TLS. O Courier chama a JD com a credencial da cabine SPI da sua instituição: `JD_SPI_BASE_URL`, `JD_SPI_CLIENT_ID` e `JD_SPI_CLIENT_SECRET`.

Quando a JD envia validações de conta assíncronas à sua instituição, defina o trânsito Pix e a credencial da cabine SPI. Os motores enviam os resultados das validações pelo trânsito. O Courier envia as próprias recusas com a credencial da cabine SPI.

Não coloque entre os motores e o trânsito um proxy que repete um `503`. Para as respostas do trânsito, veja [Conectar um motor](https://docs.lerian.studio/pt/interfaces/jd-courier/jd-courier-engine-integration.md#pix-send-calls-to-jd-through-the-courier).

## Comportamento da licença

***

O Courier verifica a licença no boot. Não reinicie um pod enquanto a licença não for válida: o pod não inicia até você corrigir a licença.

Enquanto o processo roda, o Courier verifica a licença de novo a cada 6 horas. Quando a licença fica revogada, o processo continua no ar:

* A API do operador e a API dos motores respondem `503 JDC-0902`.
* O endereço Pix e a interface SOAP respondem `503`.
* O trânsito Pix responde `503` com `X-Send-Outcome: not-sent`.
* O papel `spb-consumer` para de ler da JD.

O probe `/readyz` informa o estado da licença. Enquanto a licença está revogada, o Courier a verifica de novo depois de 1 minuto, e o intervalo dobra até 15 minutos. Na primeira resposta válida, o Courier volta a servir sem reinício.

## Ativar os trilhos

***

O Courier não entrega aos motores nenhuma mensagem de um trilho até que um operador ative o trilho. Para ativar um trilho, use a operação [Ativar um trilho](https://docs.lerian.studio/pt/reference/interfaces/jd-courier/activate-a-rail-for-the-caller-s-tenant.md) da API do operador. Ela exige a permissão `activation:write` no recurso `channels`.

* **SPB.** Ative o SPB na virada, quando nenhum motor lê diretamente da JD. Depois da ativação, o Courier lê as mensagens da fila da JD, e uma leitura remove a mensagem da JD.
* **Pix.** Ative o Pix antes de pedir à JD que envie as chamadas Pix ao Courier.

A resposta informa o identificador que os caminhos de secret das [credenciais dos motores](#engine-credentials) usam. O [histórico de ativação](https://docs.lerian.studio/pt/reference/interfaces/jd-courier/a-rails-activation-history-for-the-callers-tenant.md) lista cada ativação e cada suspensão de um trilho, com o operador. Uma instalação detém cada trilho. Quando o trilho já está ativo para outro detentor, a ativação responde `409 JDC-0117`.

## Na Lerian Cloud

***

Na Lerian Cloud, a Lerian opera o Courier. Você não define as variáveis de ambiente dele.

* A **Lerian** configura e roda o deploy.
* O **seu operador** usa a API do operador: os motores, o mapa de titularidade, os modos de entrega, as mensagens retidas e a conciliação.
* Os **seus motores** usam a API dos motores, a interface SOAP e o endereço Pix.


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