Padrões de segurança
Novas configurações de webhook são desabilitadas e configuradas em modo dry-run (execução simulada) por padrão. Um dry-run registra a execução entrante, verifica a assinatura, valida o mapeamento e armazena a requisição transacional mapeada, sem enfileirar um envio real. Os segredos são gerados uma única vez. O Switchbord armazena apenas um hash SHA-256 e um prefixo curto para exibição. As respostas de listagem nunca incluem o segredo bruto. Após a criação, nunca envie o segredo bruto para o Switchbord; use-o apenas para produzir assinaturas de requisição.Endpoint
Cada configuração recebe uma URL gerada:Autenticação
As requisições devem incluir uma assinatura HMAC com timestamp sobre o corpo bruto exato da requisição. Não inclua o segredo bruto do webhook em headers, parâmetros de query ou no payload.v1 HMAC assina {timestamp}.{rawBody} com o segredo único gerado quando o webhook foi criado. Os timestamps devem estar dentro de cinco minutos do relógio do Switchbord, para reduzir o risco de replay. Múltiplas entradas v1 são aceitas para que remetentes possam tentar novamente durante a rotação de chaves, mas pelo menos uma deve corresponder.
Exemplo de geração de assinatura:
Mapeamento
O construtor em Settings é a forma recomendada de criar mapeamentos. Ele carrega templates Utility aprovados, mostra as variáveis de body/button/header que cada template precisa, e permite mapear cada campo a partir de um caminho do payload, um valor literal ou um valor JSON. Os mapeamentos em runtime suportam valores legados de dot-path e expressões explícitas:
Os destinos de mapeamento não podem conter
__proto__, prototype ou constructor. O Switchbord rejeita destinos inseguros antes de pré-visualizar ou processar o webhook.
Os valores configurados de templateName e templateLocale sobrescrevem os valores mapeados. Novas configurações criadas via Settings são restritas ao template Utility aprovado selecionado.
Logs de execução
Toda requisição recebida para uma configuração habilitada registra uma execução com headers redigidos, metadados do formato do payload, diagnósticos sanitizados da requisição mapeada, status e erros. Payloads brutos de cliente, números de telefone de destinatários e valores de variáveis de template não são armazenados nos logs de execução por padrão. Assinaturas inválidas são registradas como execuções com falha e retornam401, mas não reservam chaves de idempotência verificadas.
Os status de execução possíveis incluem verified, dry_run, queued, failed e skipped_duplicate.
Limitação atual
A base do runtime pode executar o serviço de envio transacional de template quando uma configuração está habilitada, mas as configurações criadas via Settings estão atualmente forçadas ao modo dry-run desabilitado e não podem ser promovidas por meio da API pública de Settings. Uma requisição assinada para uma configuração desabilitada retorna404 webhook_not_found_or_disabled. A promoção em produção está bloqueada no servidor até que um fluxo de promoção verificado por log de execução seja lançado. Use Envios transacionais de template para envios em produção hoje.