Webhook do prime-auth
/api/webhooks/prime-authRecebido quando uma aplicação (tenant) é criada ou atualizada no servidor de autenticação — ver Autenticação e multi-tenant em Sistema. Eventos diferentes de app.created/app.updated são aceitos e ignorados ({ "ok": true }), pra não quebrar se o servidor de auth passar a mandar outros tipos no futuro.
Exemplos de uso
Chamada de servidor pra servidor — quem envia é o prime-auth-server, não um cliente comum. A assinatura precisa ser calculada (HMAC-SHA256 do corpo bruto, com o mesmo segredo configurado nos dois lados) antes de montar a requisição; os exemplos abaixo simulam esse envio, útil pra testar o endpoint localmente.
BODY='{"event":"app.updated","app":{"clientId":"abc123"}}'
SECRET="$PRIME_AUTH_WEBHOOK_SECRET"
SIGNATURE=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$SECRET" | sed 's/^.* //')
curl -X POST "https://prime-visita.seudominio.com/api/webhooks/prime-auth" \
-H "Content-Type: application/json" \
-H "X-PrimeAuth-Signature: $SIGNATURE" \
-d "$BODY"
Parâmetros
X-PrimeAuth-SignatureHeaderstringobrigatórioDescrição
HMAC-SHA256 (hex) do corpo bruto da requisição, calculado com o segredo compartilhado.
Como encontrar
Gerado pelo próprio prime-auth-server no momento do envio, usando o valor configurado em PRIME_AUTH_WEBHOOK_SECRET (variável de ambiente deste projeto — precisa ser o mesmo valor cadastrado como segredo do webhook lá no servidor de autenticação).
eventCorpo (body)stringobrigatórioDescrição
Tipo do evento: app.created ou app.updated (qualquer outro valor é aceito e ignorado).
Como encontrar
Enviado automaticamente pelo prime-auth-server; não é algo que se escolhe ao chamar a rota manualmente.
company.nameCorpo (body)stringDescrição
Nome da empresa dona da aplicação.
Como encontrar
Cadastro da empresa no prime-auth-server.
app.clientIdCorpo (body)stringobrigatórioDescrição
Identifica a aplicação (tenant) — usado como chave de upsert da empresa local.
Como encontrar
Gerado pelo prime-auth-server ao criar a aplicação OAuth2 para o tenant.
app.clientSecretCorpo (body)stringDescrição
Segredo OAuth2 do tenant. Obrigatório em app.created; ausente em app.updated (o servidor de auth não guarda/reenvia o valor bruto depois de emitido).
Como encontrar
Gerado uma única vez pelo prime-auth-server no momento da criação da aplicação.
app.tenantSlugCorpo (body)stringDescrição
Subdomínio do tenant, usado para resolver qual empresa/credenciais usar no login.
Como encontrar
Configurado no cadastro da aplicação no prime-auth-server.
Exemplos de saída
200 — evento aplicado ou ignorado
200{ "ok": true }
Exemplos de erro
500 — segredo não configurado
500Variável de ambiente ausente neste deployment — configure antes de cadastrar o webhook no servidor de autenticação.
{ "error": "PRIME_AUTH_WEBHOOK_SECRET não configurado." }
401 — assinatura inválida
401O HMAC enviado não bate com o calculado localmente — segredo diferente dos dois lados, ou corpo alterado em trânsito.
{ "error": "assinatura inválida." }
400 — payload inválido
400app.clientId ausente no corpo.
{ "error": "payload inválido." }
400 — clientSecret ausente em app.created
400{ "error": "clientSecret ausente em app.created." }