Receba novidades do Hedhog no seu e-mail
Novos lançamentos, receitas e breaking changes — sem spam.

Submódulo Core
setting
Armazena configurações globais/de usuário e o fluxo de importação/exportação.
Caminho de origem: libraries/core/src/setting
Arquivo do módulo: setting.module.ts
Introdução
O submódulo Setting fornece um armazenamento de configuração centralizado e tipado que separa os parâmetros operacionais do código, permitindo ajustes no comportamento da aplicação em tempo de execução sem deploys. As configurações são organizadas em grupos nomeados (general, mail, security, ai), e cada configuração carrega um type que determina tanto a semântica de armazenamento quanto o widget de entrada renderizado no painel de administração.
Seis tipos de valor são suportados. String armazena texto arbitrário. Number armazena valores numéricos. Boolean controla toggle switches e checkboxes. Array gerencia listas de valores string renderizadas como tag inputs. JSON armazena objetos estruturados que são parseados no momento da leitura. Secret armazena valores sensíveis (API keys, credenciais, senhas SMTP) que são guardados criptografados e automaticamente mascarados nas respostas de listagem e nos payloads de exportação — o valor bruto só é acessível pelo setting service em tempo de execução.
Quando uma configuração tem o user_override habilitado, cada usuário pode definir seu próprio valor, que tem precedência sobre o padrão global. GET /setting/effective mescla o valor global com qualquer sobrescrita específica do usuário, retornando o valor final que deve governar o comportamento para o usuário autenticado. Seleção de tema, idioma preferido e preferências de dashboard são exemplos típicos de configurações sobrescrevíveis pelo usuário.
O endpoint público GET /setting/initial retorna um subconjunto selecionado de configurações não sensíveis necessárias para renderizar o frontend antes de o usuário se autenticar — nome da aplicação, URL do logo, locales disponíveis, provedores OAuth habilitados. Isso elimina a configuração de frontend embutida no código e permite a personalização white-label pelo painel de administração.
As configurações podem ser exportadas como JSON via GET /setting/export. A importação segue um fluxo de validação e depois confirmação em duas etapas: envie um arquivo JSON para POST /setting/import para validação e, em seguida, envie o payload validado para POST /setting/import/confirm para aplicá-lo. Isso protege contra a aplicação de configurações malformadas ou incompatíveis com o ambiente em produção. As configurações do tipo lista carregam um conjunto de opções selecionáveis gerenciadas via PUT /setting/:settingId/options, permitindo valores de dropdown personalizados sem alterações de código.
Endpoints HTTP
17 endpoints
Retorna as configurações públicas iniciais necessárias para inicializar o frontend.
Lista os grupos de configurações.
- Query
- page, pageSize
Obtém todas as configurações pertencentes a um grupo específico.
- Params
- slug (string)
- Query
- page, pageSize
Lista todas as configurações com paginação.
- Query
- page, pageSize, search
Obtém uma configuração pelo ID.
- Params
- settingId (int)
Retorna todas as configurações no escopo do usuário atual.
Retorna as configurações efetivas do usuário atual (o global mesclado com as sobrescritas do usuário).
Exporta todas as configurações como JSON, opcionalmente incluindo os valores secretos.
- Query
- secrets? (bool)
Cria uma nova configuração.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | Max 255 chars |
| type | "string" | "array" | "number" | "boolean" | "json" | "secret" | yes | — |
| component | "input-text" | "input-number" | "input-secret" | "input-file" | "input-tags" | "combobox" | "radio" | "color-picker" | "switch" | "checkbox" | no | — |
| value | string | yes | Max 1023 chars |
| user_override | boolean | yes | Whether users can override this setting |
| group_id | number | yes | — |
Faz upload de um arquivo de exportação de configurações para validação da importação.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| file | File | yes | JSON export file, multipart/form-data |
Confirma e aplica uma importação de configurações previamente validada.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| settings | { slug: string, value: string }[] | yes | — |
Define várias configurações por slug em uma única requisição.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| [slug] | string | yes | Key-value map of slug → value pairs |
Atualiza uma configuração pelo seu slug.
- Params
- slug (string)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | — |
Atualiza uma configuração no escopo do usuário pelo slug.
- Params
- slug (string)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | — |
Substitui as opções selecionáveis de uma configuração do tipo lista.
- Params
- settingId (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| options | { id?: number, value: string, order?: number }[] | yes | Full replacement of selectable options |
Atualiza parcialmente uma configuração.
- Params
- settingId (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| slug | string | no | Max 255 chars |
| type | "string" | "array" | "number" | "boolean" | "json" | "secret" | no | — |
| component | string | no | — |
| value | string | no | — |
| user_override | boolean | no | — |
| group_id | number | no | — |
Exclui uma ou mais configurações.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| ids | number[] | yes | IDs to delete |
Ferramentas MCP
Ferramentas nomeadas que podem ser chamadas por modelos de IA através do Model Context Protocol (MCP).
core.settings.getObtém o valor de uma configuração pela chave
core.settings.setDefine o valor de uma configuração pela chave
core.settings.listLista todas as configurações com paginação
core.settings.get-by-idObtém uma configuração pelo seu ID numérico
core.settings.groups.listLista os grupos de configurações
core.settings.set-manyAtualiza várias configurações de uma só vez
core.settings.update-from-slugAtualiza uma configuração pelo slug do grupo e pelo slug da configuração
core.settings.deleteExclui uma ou mais configurações