Skip to Content
WebhooksAperçu

Webhooks

Les webhooks te permettent de recevoir des notifications en temps réel sur les événements qui se produisent dans ton workspace Ignite. Au lieu d’interroger l’API pour les changements, les webhooks poussent les données vers ton serveur au fur et à mesure des événements.

Qu’est-ce qu’un webhook ?

Les webhooks sont des callbacks HTTP déclenchés lorsque des événements spécifiques se produisent. Lorsqu’un événement se produit (comme une vidéo créée ou mise à jour), Ignite envoie une requête HTTP POST à ton endpoint configuré avec les informations sur l’événement.

Cas d’usage

  • Synchronisation CMS — Garde ton système de gestion de contenu externe synchronisé avec les changements de vidéos
  • Automatisation de workflow — Déclenche des workflows automatisés quand des vidéos sont créées, mises à jour ou supprimées
  • Notifications — Envoie des alertes à ton équipe quand le traitement vidéo est terminé
  • Analytique — Suis les événements du cycle de vie des vidéos dans ton propre système d’analyse

Comment ça marche

Créer un abonnement webhook

Configure un abonnement webhook dans ton interface d’administration Ignite. Tu devras fournir :

  • Un endpoint URL sur ton serveur capable de recevoir des requêtes HTTP POST
  • Les types d’événements auxquels tu veux t’abonner

Recevoir les événements

Lorsqu’un événement souscrit se produit, Ignite envoie une requête HTTP POST à ton endpoint avec :

  • Le type d’événement dans l’en-tête X-Webhook-Event
  • Une signature pour la vérification dans l’en-tête X-Webhook-Signature
  • Un identifiant de livraison unique dans l’en-tête X-Webhook-Delivery-Id
  • L’objet vidéo complet comme corps JSON

Traiter et répondre

Ton endpoint doit :

  1. Vérifier la signature du webhook
  2. Traiter les données de l’événement
  3. Renvoyer un code de statut 2xx dans les 30 secondes

Les webhooks peuvent arriver dans le désordre ou être livrés plus d’une fois. Ton client est responsable de vérifier le timestamp updatedAt et l’id de la vidéo pour garantir un ordre correct et la cohérence des données. Compare toujours le timestamp entrant avec tes données stockées avant d’appliquer les mises à jour, et utilise l’en-tête X-Webhook-Delivery-Id pour détecter et ignorer les livraisons en double.

Abonnement webhook

Un abonnement webhook est une configuration qui définit où les événements doivent être envoyés et quels événements écouter.

Propriétés de l’abonnement

PropriétéTypeDescription
idstringIdentifiant unique de l’abonnement
urlstringL’URL de l’endpoint où les événements seront envoyés (HTTP ou HTTPS)
eventsobjectQuels types d’événements sont activés
events.videoCreatedbooleanRecevoir des événements quand des vidéos sont créées
events.videoUpdatedbooleanRecevoir des événements quand des vidéos sont mises à jour
events.videoDeletedbooleanRecevoir des événements quand des vidéos sont supprimées
activebooleanSi le webhook est actuellement actif
signingSecretstringClé secrète utilisée pour la vérification de la signature (générée automatiquement)
workspacestringLe workspace auquel ce webhook appartient

Exemple d’objet d’abonnement

{ "id": "507f1f77bcf86cd799439011", "url": "https://your-server.com/webhook", "events": { "videoCreated": true, "videoUpdated": true, "videoDeleted": false }, "active": true, "signingSecret": "whsec_abc123...", "workspace": "507f1f77bcf86cd799439000" }

Format de la requête HTTP

Quand un événement se produit, Ignite envoie une requête POST à ton endpoint :

En-têtes

En-têteDescription
Content-Typeapplication/json
X-Webhook-EventLe type d’événement (par ex. video.created)
X-Webhook-SignatureSignature HMAC-SHA256 pour la vérification
X-Webhook-Delivery-IdIdentifiant unique pour cette livraison (utile pour l’idempotence)

Corps

Le corps de la requête contient l’objet vidéo complet au format JSON. Consulte la documentation Objet vidéo pour la structure complète.

{ "id": "507f1f77bcf86cd799439011", "title": "My Video", "status": "COMPLETE", "visibility": "public", "duration": 120, "createdAt": "2024-01-15T10:30:00.000Z", "updatedAt": "2024-01-15T10:30:00.000Z", // ... all other video properties }

Prochaines étapes