Passer au contenu principal

Aperçu

Vous pouvez créer des webhooks pour recevoir des notifications lorsque certains événements se produisent dans votre compte. Par exemple, vous pouvez créer des webhooks pour recevoir des notifications lorsqu’une campagne est créée, mise à jour ou supprimée. Pour recevoir des notifications, vous devez spécifier l’URL où les notifications seront envoyées. Lorsqu’un événement se produit, votre URL recevra une requête HTTP POST avec les détails de l’événement. Votre URL :
  • Doit être accessible publiquement
  • Doit pouvoir recevoir des requêtes POST
  • Doit renvoyer un code d’état HTTP 2xx pour les requêtes réussies
Pour créer un webhook, vous devez appeler l’API Create Webhook. Vous pouvez spécifier l’événement qui déclenchera le webhook en utilisant le champ channel. Vous ne pouvez créer qu’un seul webhook par canal.

Nouvelles tentatives

Si votre URL de webhook est inaccessible au moment de l’événement, nous réessaierons d’envoyer la requête jusqu’à 5 fois avec un backoff exponentiel dans la minute suivante. Nous ne réessaierons la requête que pour les codes d’état HTTP 5xx ou 429.

Validation

Pour vous assurer que votre serveur ne traite que les livraisons de webhooks envoyées par Topsort et que la livraison n’a pas été altérée, vous devez valider la signature du webhook avant de traiter davantage la livraison. Topsort utilisera votre secret de webhook et le payload de l’événement pour générer une signature et l’inclure dans l’en-tête HTTP X-TS-Signature-256 pour chaque livraison. Vous pouvez spécifier votre secret de webhook lors de la création d’un webhook. Si vous ne spécifiez pas de secret, nous en générerons un pour vous. Vous devez stocker votre secret en toute sécurité sur votre serveur. Topsort utilise le digest hexadécimal HMAC pour calculer le hash de la signature. La signature commencera toujours par sha256=. Vous devez vérifier que la signature est correcte en recalculant le hash de votre côté et en le comparant à la signature dans l’en-tête X-TS-Signature-256.

Exemple de vérification de signature

import hmac
import hashlib

secret = "my-webhook-secret"
request = ... # incoming request from the webhook delivery

signature = hmac.new(
    key=secret.encode(),
    msg=await request.body(),
    digestmod=hashlib.sha256,
).hexdigest()

expected_signature = "sha256=" + signature
incoming_signature = request.headers["X-TS-Signature-256"]
if not hmac.compare_digest(incoming_signature, expected_signature):
    # The signature is not valid, do not process the delivery
else:
    # The signature is valid, process the delivery