Logotipo Hedhog

Receba novidades do Hedhog no seu e-mail

Novos lançamentos, receitas e breaking changes — sem spam.

Voltar para os módulos CoreIntegrado no CoreModule
Captura de tela do módulo setting

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

FieldTypeRequiredNotes
slugstringyesMax 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
valuestringyesMax 1023 chars
user_overridebooleanyesWhether users can override this setting
group_idnumberyes

Faz upload de um arquivo de exportação de configurações para validação da importação.

Body

FieldTypeRequiredNotes
fileFileyesJSON export file, multipart/form-data

Confirma e aplica uma importação de configurações previamente validada.

Body

FieldTypeRequiredNotes
settings{ slug: string, value: string }[]yes

Define várias configurações por slug em uma única requisição.

Body

FieldTypeRequiredNotes
[slug]stringyesKey-value map of slug → value pairs

Atualiza uma configuração pelo seu slug.

Params
slug (string)

Body

FieldTypeRequiredNotes
valuestringyes

Atualiza uma configuração no escopo do usuário pelo slug.

Params
slug (string)

Body

FieldTypeRequiredNotes
valuestringyes

Substitui as opções selecionáveis de uma configuração do tipo lista.

Params
settingId (int)

Body

FieldTypeRequiredNotes
options{ id?: number, value: string, order?: number }[]yesFull replacement of selectable options

Atualiza parcialmente uma configuração.

Params
settingId (int)

Body

FieldTypeRequiredNotes
slugstringnoMax 255 chars
type"string" | "array" | "number" | "boolean" | "json" | "secret"no
componentstringno
valuestringno
user_overridebooleanno
group_idnumberno

Exclui uma ou mais configurações.

Body

FieldTypeRequiredNotes
idsnumber[]yesIDs to delete

Ferramentas MCP

Ferramentas nomeadas que podem ser chamadas por modelos de IA através do Model Context Protocol (MCP).

  • core.settings.get

    Obtém o valor de uma configuração pela chave

  • core.settings.set

    Define o valor de uma configuração pela chave

  • core.settings.list

    Lista todas as configurações com paginação

  • core.settings.get-by-id

    Obtém uma configuração pelo seu ID numérico

  • core.settings.groups.list

    Lista os grupos de configurações

  • core.settings.set-many

    Atualiza várias configurações de uma só vez

  • core.settings.update-from-slug

    Atualiza uma configuração pelo slug do grupo e pelo slug da configuração

  • core.settings.delete

    Exclui uma ou mais configurações