Logo

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).

POSTCriar/api/external/webhooks

Cadastra um novo webhook.

Escopo: webhooks:manageSincrono — responde 200 com os dados
GETBuscar/api/external/webhooks

Busca todos os webhooks cadastrados.

Escopo: webhooks:manageSincrono — responde 200 com os dados
GETBuscar/api/external/webhooks/{id}

Busca um webhook pelo id.

Escopo: webhooks:manageSincrono — responde 200 com os dados
PATCHAtualizar/api/external/webhooks/{id}

Atualiza campos de um webhook existente.

Escopo: webhooks:manageSincrono — responde 200 com os dados
DELETERemover/api/external/webhooks/{id}

Remove um webhook.

Escopo: webhooks:manageSincrono — responde 200 com os dados

Criar webhook

Body
namestringobrigatorio

Nome de identificacao do webhook.

urlstringobrigatorio

URL que recebera as entregas (HTTPS).

eventsstring[]obrigatorio

Lista de eventos a assinar (ver secao abaixo).

secretstringopcional

Segredo para assinatura HMAC. Se omitido, geramos automaticamente.

headersobjectopcional

Headers adicionais enviados em cada entrega.

retryConfigobjectopcional

maxRetries (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_RECEIVED
  • WHATSAPP_SENT
  • WHATSAPP_DELIVERED
  • WHATSAPP_READ
  • WHATSAPP_FAILED
  • EMAIL_SENT
  • EMAIL_DELIVERED
  • EMAIL_OPENED
  • EMAIL_CLICKED
  • EMAIL_BOUNCED
  • EMAIL_UNSUBSCRIBED
  • EMAIL_COMPLAINED
  • CAMPAIGN_SCHEDULED
  • CAMPAIGN_STARTED
  • CAMPAIGN_COMPLETED
  • CAMPAIGN_FAILED
  • CAMPAIGN_PAUSED
  • CAMPAIGN_CANCELLED
  • CONTACT_SUBSCRIBED
  • CONTACT_UNSUBSCRIBED
  • CONTACT_CONSENT_GIVEN
  • CONTACT_CONSENT_REVOKED

Payload

Estrutura base:

Exemplo: WHATSAPP_RECEIVED

Exemplo: WHATSAPP_SENT

Exemplo: EMAIL_SENT

Headers enviados

Cada entrega inclui:

  • Content-Type: application/json
  • User-Agent: LIP-Webhook/1.0
  • X-LIP-Event: <EVENTO>
  • X-LIP-Timestamp: <timestamp>
  • X-LIP-Attempt: <tentativa>
  • X-LIP-Signature: <assinatura> (quando secret estiver 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 backoffMs e maxRetries
  • Retornando 2xx o webhook e considerado entregue

Última atualização

15 de junho de 2026

Editar esta página no GitHub