Webhook do prime-auth

POST/api/webhooks/prime-auth

Recebido 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ório

Descriçã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ório

Descriçã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)string

Descrição

Nome da empresa dona da aplicação.

Como encontrar

Cadastro da empresa no prime-auth-server.

app.clientIdCorpo (body)stringobrigatório

Descriçã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)string

Descriçã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)string

Descriçã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

500

Variá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

401

O 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

400

app.clientId ausente no corpo.

{ "error": "payload inválido." }

400 — clientSecret ausente em app.created

400
{ "error": "clientSecret ausente em app.created." }