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

# Variáveis de ambiente da API do Cabine

> As variáveis de ambiente que configuram a API do Cabine.

A API do Cabine lê as configurações de variáveis de ambiente quando inicia. Para mudar um valor, reinicie o serviço. Para as configurações do Lerian Cabine no navegador, veja [Configurando o Lerian Cabine](https://docs.lerian.studio/pt/rails/cabine/cabine-configuration.md).

Nas tabelas abaixo, **Obrigatório** marca uma variável que você deve definir: **Sim** para qualquer deploy, ou a condição indicada. `—` significa que não há padrão. As condições usam dois termos:

* **Ambiente de produção**: `ENV_NAME` é `production` ou `prod`.
* **Ambiente de desenvolvimento**: `ENV_NAME` é `development`, `develop`, `dev`, `local` ou `test`.

As variáveis que guardam uma duração usam o formato de duração do Go, por exemplo `15m` ou `24h`. Uma duração que não pode ser lida é substituída pelo seu padrão. Uma duração igual ou menor que zero em uma variável `DESK_` impede a inicialização. Um número que não pode ser lido também é substituído pelo seu padrão.

## Runtime e servidor

| Variável | Descrição | Padrão | Obrigatório |
| - | - | - | - |
| `ENV_NAME` | O nome do ambiente. | `development` | Não |
| `LOG_LEVEL` | O nível de log. | `info` | Não |
| `SERVER_PORT` | A porta do servidor HTTP. | `3002` | Não |
| `DEPLOYMENT_MODE` | `local`, `byoc` ou `saas`. Qualquer outro valor impede a inicialização. | `local` | Em um ambiente de produção |
| `DESK_CORS_ALLOWED_ORIGINS` | As origens do navegador que podem chamar a API do Cabine. Defina-a como a origem em que os operadores abrem o Cabine. | — | Não |

`DEPLOYMENT_MODE` definido como `saas` também exige estes valores:

* `ENV_NAME` é `production`, `prod` ou `staging`.
* `DB_SSLMODE` é `require`, `verify-ca` ou `verify-full`.
* `PLUGIN_AUTH_ADDRESS`, `PLUGIN_ACCESS_MANAGER_URL` e `DESK_SPI_CALLBACK_URL` usam `https` quando estão definidas.

`DESK_CORS_ALLOWED_ORIGINS` é uma lista que você separa com vírgulas. Escreva cada origem como `scheme://host[:port]`, com `http` ou `https`, um host em minúsculas, sem porta padrão, sem caminho, sem query e sem credenciais. Um curinga ou uma entrada em outra forma impede a inicialização. Um valor vazio não adiciona cabeçalhos de CORS.

## Banco de dados

| Variável | Descrição | Padrão | Obrigatório |
| - | - | - | - |
| `DB_HOST` | O host do PostgreSQL. | — | Sim |
| `DB_PORT` | A porta do PostgreSQL. | `5432` | Não |
| `DB_USER` | O usuário do PostgreSQL. | — | Sim |
| `DB_PASSWORD` | A senha do PostgreSQL. Sensível. | — | Não |
| `DB_NAME` | O nome do banco de dados. | — | Sim |
| `DB_SSLMODE` | O modo SSL do PostgreSQL. Um valor diferente de `require`, `verify-ca` ou `verify-full` impede a inicialização, a menos que `ALLOW_INSECURE_TLS` seja `true`. | `disable` | Não |
| `DB_MAX_OPEN_CONNS` | O número máximo de conexões abertas. | `25` | Não |
| `DB_MAX_IDLE_CONNS` | O número máximo de conexões ociosas. | `10` | Não |
| `DB_CONN_MAX_LIFETIME` | A idade máxima de uma conexão. | `10m` | Não |
| `DB_CONN_MAX_IDLE_TIME` | O tempo ocioso máximo de uma conexão. | `5m` | Não |

## Telemetria

| Variável | Descrição | Padrão | Obrigatório |
| - | - | - | - |
| `ENABLE_TELEMETRY` | Defina `true` para exportar traces e métricas. Se a telemetria não consegue iniciar, a API do Cabine registra um erro e continua em execução. | `false` | Não |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | O endpoint do coletor OTLP. | — | Não |
| `METRICS_PROMETHEUS_ENABLED` | Defina `true` para servir métricas do Prometheus em um listener separado. | `false` | Não |
| `METRICS_PROMETHEUS_ADDRESS` | O endereço do listener do Prometheus. | `127.0.0.1:9074` | Não |

## Autenticação

A API do Cabine verifica as permissões de cada requisição com o Access Manager. Veja [Acesso e papéis](https://docs.lerian.studio/pt/rails/cabine/cabine-access-and-roles.md).

| Variável | Descrição | Padrão | Obrigatório |
| - | - | - | - |
| `PLUGIN_AUTH_ENABLED` | Liga ou desliga a verificação de permissões. Defina `true` ou `false`. Um valor em branco ou outro valor impede a inicialização. `false` inicia apenas em um ambiente de desenvolvimento, e nunca com `DEPLOYMENT_MODE=saas`. | — | Sim |
| `PLUGIN_AUTH_ADDRESS` | O endereço do serviço de autenticação do Access Manager, sem `/v1`. A API do Cabine também o usa para obter as credenciais das suas chamadas ao Access Manager e ao Lerian SPI. | — | Sim, quando `PLUGIN_AUTH_ENABLED` é `true`. |

`PLUGIN_AUTH_ENABLED=false` não é aceito quando `ENV_NAME` não está definido. Um `ENV_NAME` não definido não conta como ambiente de desenvolvimento.

## Chamadas ao Access Manager

Depois que outro administrador da API do Cabine aprova a exclusão de um usuário operador, a API do Cabine exclui o usuário no Access Manager. Ela se autentica como uma aplicação do Access Manager. Veja [Administração](https://docs.lerian.studio/pt/rails/cabine/cabine-administration.md).

| Variável | Descrição | Padrão | Obrigatório |
| - | - | - | - |
| `PLUGIN_ACCESS_MANAGER_URL` | O endereço do serviço de identidade do Access Manager, sem `/v1`, onde a API do Cabine exclui usuários. Sem ele, a API do Cabine não consegue excluir um usuário. | — | Em um ambiente de produção |
| `PLUGIN_ACCESS_MANAGER_CLIENT_ID` | O client ID da aplicação do Access Manager. | — | Se o endereço está definido, e em um ambiente de produção |
| `PLUGIN_ACCESS_MANAGER_CLIENT_SECRET` | O client secret da aplicação do Access Manager. Sensível. | — | Se o endereço está definido, e em um ambiente de produção |

## Chamadas ao Lerian SPI

Depois de uma aprovação, a API do Cabine envia a decisão ao Lerian SPI. Ela se autentica como uma aplicação do Access Manager. Conceda `br-spi-operations:update` no Lerian SPI a essa aplicação. Veja [Aprovações de revisão manual](https://docs.lerian.studio/pt/rails/cabine/cabine-manual-review-approvals.md).

| Variável | Descrição | Padrão | Obrigatório |
| - | - | - | - |
| `DESK_SPI_CALLBACK_URL` | O endereço do serviço DICT do Lerian SPI, sem `/api/v1/dict`. Sem ele, nenhuma decisão aprovada chega ao Lerian SPI. | — | Em um ambiente de produção |
| `DESK_SPI_CALLBACK_CLIENT_ID` | O client ID da aplicação do Access Manager. | — | Se o endereço está definido, e em um ambiente de produção |
| `DESK_SPI_CALLBACK_CLIENT_SECRET` | O client secret da aplicação do Access Manager. Sensível. | — | Se o endereço está definido, e em um ambiente de produção |
| `DESK_OPERATION_APPROVAL_DECISION_WINDOW` | O tempo que a pessoa que decide tem depois de uma proposta. | `24h` | Não |
| `DESK_OPERATION_APPROVAL_EXPIRY_SWEEP_INTERVAL` | Com que frequência a API do Cabine define o estado `expired` nas propostas atrasadas. | `5m` | Não |
| `DESK_APPROVAL_DELIVERY_SWEEP_INTERVAL` | Com que frequência a API do Cabine tenta de novo entregar as decisões que o Lerian SPI não aceitou. | `1m` | Não |
| `DESK_APPROVAL_DELIVERY_BACKOFF_BASE` | A espera depois da primeira tentativa que falhou. A espera dobra a cada falha. | `30s` | Não |
| `DESK_APPROVAL_DELIVERY_BACKOFF_MAX` | A espera mais longa entre tentativas. Ela não pode ser menor que a base. | `30m` | Não |
| `DESK_APPROVAL_DELIVERY_STALE_AFTER` | A idade da decisão não entregue mais antiga em que o resultado de readiness do Lerian SPI a informa. O mesmo período limita as decisões recusadas que esse resultado informa. | `1h` | Não |
| `DESK_APPROVAL_DELIVERY_MAX_ATTEMPTS` | O número de tentativas, com a primeira, antes de o resultado ser `exhausted`. Deve ser maior que zero. | `20` | Não |

## Retenção

| Variável | Descrição | Padrão | Obrigatório |
| - | - | - | - |
| `DESK_ACK_TTL` | Por quanto tempo a API do Cabine guarda uma confirmação de alerta e uma solicitação de exclusão de usuário. Depois desse tempo, ela exclui o registro. | `720h` | Não |
| `DESK_ACK_GC_INTERVAL` | Com que frequência a API do Cabine exclui os registros expirados. | `1h` | Não |

## Regras do ambiente de produção

Em um ambiente de produção, a inicialização é interrompida a menos que estas variáveis tenham um valor:

* `PLUGIN_AUTH_ADDRESS`
* `PLUGIN_ACCESS_MANAGER_URL`, `PLUGIN_ACCESS_MANAGER_CLIENT_ID` e `PLUGIN_ACCESS_MANAGER_CLIENT_SECRET`
* `DESK_SPI_CALLBACK_URL`, `DESK_SPI_CALLBACK_CLIENT_ID` e `DESK_SPI_CALLBACK_CLIENT_SECRET`
* `DEPLOYMENT_MODE`

Em qualquer ambiente, um endereço sem o seu client ID e o seu client secret impede a inicialização.

## Saúde e readiness

A API do Cabine serve `/health`, `/readyz` e `/version` na sua porta HTTP. `/readyz` responde `200` quando o serviço está pronto e `503` quando não está. Se a API do Cabine não consegue acessar o banco de dados na inicialização, a inicialização é interrompida. Se outra dependência não está pronta na inicialização, o serviço continua em execução e permanece não pronto.

O resultado de readiness cobre estas dependências:

* O banco de dados: a API do Cabine consegue alcançá-lo.
* O esquema do banco de dados: ele está na versão atual. Aplique as migrações do banco de dados antes de iniciar o serviço.
* O Access Manager: o serviço é ignorado quando `PLUGIN_ACCESS_MANAGER_URL` não está definida. Um endereço que não responde deixa o serviço não pronto.
* O Lerian SPI: o serviço é ignorado quando `DESK_SPI_CALLBACK_URL` não está definida. Um Lerian SPI que não responde, uma decisão antiga não entregue, uma decisão recusada ou uma decisão esgotada aparece como um motivo. Isso não deixa o serviço não pronto.


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