-- Webhooks de CRM: cada empresa possui um segredo HMAC próprio. -- -- O segredo é usado para validar a autenticidade do corpo das requisições -- recebidas no endpoint de ingestão de dados de CRM. Como é por empresa, -- o segredo de uma empresa nunca consegue assinar dados de outra. -- -- Formato: 32 bytes aleatórios em hexadecimal = 64 caracteres. -- Default vazio: a aplicação trata segredo vazio como "não configurado" -- e rejeita o webhook (401), evitando aceitar requisições sem proteção. ALTER TABLE company ADD COLUMN IF NOT EXISTS company_hmac_secret VARCHAR(64) NOT NULL DEFAULT ''; -- Backfill: gera um segredo para empresas já existentes para que possam -- receber webhooks imediatamente. Novos segredos de produção devem ser -- gerados pela aplicação via random_bytes (ver Libs\Hmac::generateSecret). UPDATE company SET company_hmac_secret = md5(random()::text || clock_timestamp()::text || company_id::text) || md5(random()::text || clock_timestamp()::text || company_id::text || random()::text) WHERE company_hmac_secret = '';