inputs) é uma etapa do assistente, e um placeholder ({{...}}) é um valor que a plataforma preenche quando cria o template. As perguntas coletam o que só o usuário sabe; os placeholders conectam os serviços e geram o que ninguém deveria digitar.
Perguntas
inputs é uma lista ordenada. Cada item vira uma etapa do assistente, exibida nessa ordem.
Como cada tipo é verificado:
Uma pergunta
secret é digitada sem eco. Quando generate está definido e o usuário a deixa vazia, a plataforma a gera no servidor e a mostra uma vez nas saídas. Um regex é limitado a 200 caracteres e não pode usar back-references, quantificadores aninhados nem alternância repetida, porque roda no servidor; só vale para os tipos de texto.
Pergunta de token, do bot inicial:
Condições com when
when é uma verificação de igualdade contra uma pergunta anterior, sem linguagem de expressões. equals precisa caber no tipo dessa pergunta: um booleano para boolean, um número para number, um dos valores das opções para select. Uma condição sobre uma pergunta posterior, sobre ela mesma ou sobre um id desconhecido é recusada (invalid_when, unknown_input). Uma pergunta cuja condição é falsa é pulada, e sua resposta não existe.
when para ser criado condicionalmente. Um serviço de app não; use sets.services.
Opções e sets
O efeito de uma escolha vive na própria opção. sets pode fazer três coisas. Quando várias perguntas mexem no mesmo serviço ou variável, a última vence; a memória de ram_extra se soma:
Um template não pode ficar sem app: se as opções escolhidas desligarem todos os apps, o deploy é recusado. Coloque
"on" e "off" entre aspas no YAML para que continuem texto.
É assim que o n8n oferece Postgres, SQLite ou workers sem nenhuma expressão:
Placeholders
Um placeholder é escrito{{ ... }}. A plataforma o resolve quando cria o template e de novo quando um valor gerenciado muda (por exemplo, depois de um reset de senha do banco de dados). Ele nunca é resolvido no navegador.
Placeholders funcionam em env (e em sets.env) e em outputs. Eles não funcionam em main, build, start nem healthcheck.path; ali geram unknown_placeholder. O texto fora de {{ }} nunca é interpretado, e o valor de um placeholder nunca é expandido de novo, então uma resposta que contém {{secrets.x}} continua como texto simples.
Apps e a stack
A URL e o nome do host acompanham o app: a variável cujo valor é exatamente um desses placeholders é atualizada quando o subdomínio muda ou quando o usuário adiciona um domínio personalizado. Dentro de um texto maior (
https://{{app.domain}}/x), o valor fica o do deploy.
Bancos de dados
O app alcança o banco pelo endereço público, com certificados de cliente. Veja Stacks.
Os valores
ssl.*_path são caminhos absolutos dentro do app, em /app/.vertra/certs/<database_id>/ (ca.pem, client.crt, client.key, client.pem, client.p12). A plataforma os grava a cada início, e o seu processo (uid 1000) consegue lê-los. prisma_url carrega a senha, então é sensível e só existe quando o seu manifesto o pede.
Postgres do n8n, com certificados:
Pastas Blob
Secrets e respostas
Serviços desligados
Um placeholder que aponta para um serviço desligado por uma resposta resolve para um valor vazio, e uma variável que termina vazia não é gravada. Por isso o template do n8n pode listar todas as variáveisDB_POSTGRESDB_* e ainda rodar em SQLite.
Variáveis gerenciadas
Uma variável cujo valor é um placeholder de banco de dados, pasta Blob ou app é gerenciada pela stack: ela é atualizada sozinha quando o banco de dados troca de senha ou certificado, ou quando o endereço do app muda, e o dashboard mostra um selo “gerenciada pela stack”. Editá-la à mão a transforma em uma variável comum.O que é recusado
Veja Validar e testar para saber como corrigir cada um.