Pular para o conteúdo

Destinos

O destino é uma URL sua que recebe o que uma fonte repassa. Uma fonte pode ter até 10, e cada mensagem vira uma Entrega para cada destino habilitado.

Janela do terminal
curl -X POST https://api.notyfacil.com.br/v1/ingest/sources/src_01JB8Z2R4K7M1QX5VN3HT9WCDF/destinations \
-H "Authorization: Bearer $NOTYFACIL_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://api.padariadoze.com.br/pagamentos/webhook","description":"Backend de pagamentos"}'
{ "id": "dst_01JB8Z7C5H2M9R4TXK1WQ6VNPD", "url": "https://api.padariadoze.com.br/pagamentos/webhook", "secret": "whsec_…" }

A URL segue as mesmas regras dos endpoints: https em produção, portas 80 e 443, nada de rede privada. Os headers fixos também, com headers no mesmo formato.

POST /pagamentos/webhook HTTP/1.1
Content-Type: application/json
User-Agent: Notyfacil/1.0
Webhook-Id: in_01JB8Z0M5V3H7Q2KX9WRC4D6TN
Webhook-Timestamp: 1757337600
Webhook-Signature: v1,Ym9M2Qb7yT4kX1pN8wR5eH3jL6cV0aZ9sD2fG7uK4hE=
Notyfacil-Source: src_01JB8Z2R4K7M1QX5VN3HT9WCDF
{"action":"payment.updated","data":{"id":"123456789"}}
  • O corpo é o do provedor, sem alteração e com o Content-Type original, que pode ser form-urlencoded.
  • O Webhook-Id é o id da mensagem recebida, com prefixo in_. É o mesmo em todas as tentativas e no replay.
  • Notyfacil-Source diz de qual fonte veio.
  • Os headers originais do provedor não vêm; eles ficam gravados na mensagem.

A verificação é exatamente a do envio, com o secret do destino: HMAC-SHA256 sobre {Webhook-Id}.{Webhook-Timestamp}.{corpo cru}. O código em Node.js, PHP, C# e Python está em verificando a assinatura, e as regras de resposta em o que responder.

A assinatura do provedor já foi conferida na entrada. O que o seu destino confere é que o repasse veio do Notyfacil.

Janela do terminal
curl -X PATCH https://api.notyfacil.com.br/v1/ingest/destinations/dst_01JB8Z7C5H2M9R4TXK1WQ6VNPD \
-H "Authorization: Bearer $NOTYFACIL_KEY" \
-H "Content-Type: application/json" \
-d '{"status":"disabled"}'

Um destino que acumula 20 falhas seguidas é desativado automaticamente, como um endpoint, e as Entregas na fila para ele são canceladas. Para reativá-lo, mande "status":"enabled": a contagem de falhas volta a zero. As mensagens do período em que ele esteve fora podem ser repassadas com replay.

Janela do terminal
curl -X POST https://api.notyfacil.com.br/v1/ingest/destinations/dst_01JB8Z7C5H2M9R4TXK1WQ6VNPD/rotate-secret \
-H "Authorization: Bearer $NOTYFACIL_KEY"

Igual à rotação de secret de um endpoint: por 24 horas os repasses saem assinados com os dois secrets, e o seu código aceita qualquer um que confira.

DELETE /v1/ingest/destinations/{id} exclui o destino e o histórico de entregas para ele. As mensagens da fonte continuam lá.

Referência: adicionar um destino