Base URL
https://lip-backend-1064145932505.southamerica-east1.run.app
Endpoints
Todas as rotas de webhook usam o escopo webhooks:manage e sao sincronas (200/201).
/api/external/webhooksCadastra um novo webhook.
webhooks:manageSincrono — responde 200 com os dados/api/external/webhooksBusca todos os webhooks cadastrados.
webhooks:manageSincrono — responde 200 com os dados/api/external/webhooks/{id}Busca um webhook pelo id.
webhooks:manageSincrono — responde 200 com os dados/api/external/webhooks/{id}Atualiza campos de um webhook existente.
webhooks:manageSincrono — responde 200 com os dados/api/external/webhooks/{id}Remove um webhook.
webhooks:manageSincrono — responde 200 com os dadosCriar webhook
namestringobrigatorioNome de identificacao do webhook.
urlstringobrigatorioURL que recebera as entregas (HTTPS).
eventsstring[]obrigatorioLista de eventos a assinar (ver secao abaixo).
secretstringopcionalSegredo para assinatura HMAC. Se omitido, geramos automaticamente.
headersobjectopcionalHeaders adicionais enviados em cada entrega.
retryConfigobjectopcionalmaxRetries (default 3) e backoffMs (default 1000).
Exemplo:
Atualizar webhook
PATCH /api/external/webhooks/{id}
Campos comuns:
name,url,events,secret,headers,retryConfig,isActive
Eventos suportados
WHATSAPP_RECEIVEDWHATSAPP_SENTWHATSAPP_DELIVEREDWHATSAPP_READWHATSAPP_FAILEDEMAIL_SENTEMAIL_DELIVEREDEMAIL_OPENEDEMAIL_CLICKEDEMAIL_BOUNCEDEMAIL_UNSUBSCRIBEDEMAIL_COMPLAINEDCAMPAIGN_SCHEDULEDCAMPAIGN_STARTEDCAMPAIGN_COMPLETEDCAMPAIGN_FAILEDCAMPAIGN_PAUSEDCAMPAIGN_CANCELLEDCONTACT_SUBSCRIBEDCONTACT_UNSUBSCRIBEDCONTACT_CONSENT_GIVENCONTACT_CONSENT_REVOKED
Payload
Estrutura base:
Exemplo: WHATSAPP_RECEIVED
Exemplo: WHATSAPP_SENT
Exemplo: EMAIL_SENT
Headers enviados
Cada entrega inclui:
Content-Type: application/jsonUser-Agent: LIP-Webhook/1.0X-LIP-Event: <EVENTO>X-LIP-Timestamp: <timestamp>X-LIP-Attempt: <tentativa>X-LIP-Signature: <assinatura>(quandosecretestiver configurado)
Assinatura HMAC
A assinatura e um HMAC SHA-256 do payload com o timestamp:
signature = HMAC_SHA256(secret, "{timestamp}.{payload_json}")
Sempre valide a assinatura
Antes de confiar em um evento, recalcule o HMAC com o seu secret e compare com X-LIP-Signature. Use o corpo bruto da requisicao (nao o JSON re-serializado) para o calculo bater.
Exemplo de validacao (pseudo):
Retries e timeouts
- Timeout de entrega: 30s
- Retries: exponencial com
backoffMsemaxRetries - Retornando
2xxo webhook e considerado entregue
Última atualização
15 de junho de 2026