Webhook
Déclenchez l'exécution d'un workflow lorsqu'un système externe envoie une requête HTTP vers une URL générée par Scrydon.
Le bloc Webhook génère un point de terminaison HTTP unique. Tout service externe capable d'envoyer une requête HTTP POST peut déclencher votre workflow.
Fonctionnement
- Ajoutez un bloc Webhook à votre workflow.
- Une URL de webhook unique est générée pour ce bloc — copiez-la depuis le champ Lien de déclenchement du bloc.
- Configurez votre service externe (GitHub, Stripe, tout système personnalisé) pour envoyer un POST à cette URL.
- Lorsque la requête arrive, le workflow démarre et le corps de la requête, les en-têtes, la méthode et les paramètres de requête sont injectés comme sorties du bloc.
L'éditeur enregistre le webhook une fois que les modifications en attente ont fini d'être sauvegardées. Tant que le serveur n'a pas confirmé l'enregistrement, le Lien de déclenchement reste vide au lieu d'afficher une URL fictive. Si l'enregistrement échoue, le bloc affiche une erreur avec une action permettant de réessayer. Les webhooks gérés par un déclencheur font partie du cycle de vie du bloc ; supprimez le bloc déclencheur plutôt que son webhook séparément.
Test en développement
Vous n'avez pas besoin de déployer ou de promouvoir pour tester un webhook. Dans l'environnement Développement modifiable, appeler l'URL de webhook exécute le workflow live/brouillon — exactement ce qui est sur le canvas — afin que vous puissiez itérer et tester de bout en bout pendant la construction.
Lorsque vous promouvez le workflow en Staging ou en Production (environnements en lecture seule), le webhook y exécute le snapshot déployé à la place, et nécessite une version de déploiement active. Chaque environnement possède sa propre URL de webhook. Voir Déclencheurs → Environnements et test pour le modèle complet.
Variables disponibles
Référencez la requête entrante dans les blocs en aval en utilisant le nom du bloc comme préfixe :
| Variable | Description |
|---|---|
<webhook1.payload> | Corps complet de la requête (JSON analysé ou chaîne brute) |
<webhook1.headers> | En-têtes de la requête sous forme d'objet JSON |
<webhook1.method> | Méthode HTTP (POST) |
<webhook1.query> | Paramètres de la chaîne de requête sous forme d'objet JSON |
Remplacez webhook1 par le nom que vous avez donné au bloc.
Authentification
Les points de terminaison des webhooks génériques acceptent uniquement POST. Dans le champ Authentification du bloc, choisissez l'un des modes suivants :
Le corps de la requête est limité à 10 MiB (10 485 760 octets). Une requête plus volumineuse renvoie 413 Payload Too Large et ne démarre pas le workflow.
| Mode | Configuration du bloc | Requête entrante |
|---|---|---|
| Aucune | Aucun champ supplémentaire | Aucun en-tête d'authentification n'est requis. Il s'agit du mode par défaut. |
| En-tête statique | Nom de l'en-tête et Valeur de l'en-tête | Envoyez l'en-tête configuré avec la valeur exacte configurée. Les noms d'en-têtes sont insensibles à la casse ; les valeurs sont sensibles à la casse. |
| Signature HMAC | En-tête HMAC, Secret HMAC et Algorithme HMAC | Envoyez un HMAC des octets exacts du corps de la requête dans l'en-tête configuré. |
Avant d'exposer <webhook1.headers> au workflow, Scrydon masque l'en-tête d'authentification configuré et les en-têtes standards susceptibles de contenir des identifiants, tels que Authorization, Proxy-Authorization, Cookie et Set-Cookie.
Utilisez une référence vers un secret d'espace de travail Scrydon, comme {{GENERIC_WEBHOOK_TOKEN}} pour la Valeur de l'en-tête ou {{GENERIC_WEBHOOK_HMAC_SECRET}} pour le Secret HMAC. Scrydon résout la référence lors de l'authentification de la requête. Une référence manquante ou indisponible est rejetée.
Les champs de type mot de passe masquent uniquement leur contenu dans l'éditeur. Une valeur littérale est stockée en clair dans le JSON du workflow. Utilisez une référence vers un secret d'espace de travail afin que le secret reste protégé par le coffre-fort de secrets Scrydon.
En-tête statique
Par exemple, configurez Nom de l'en-tête sur X-Webhook-Token et Valeur de l'en-tête sur {{GENERIC_WEBHOOK_TOKEN}}, puis envoyez la valeur résolue :
curl -X POST "https://app.scrydon.com/api/webhooks/trigger/{path}" \
-H "Content-Type: application/json" \
-H "X-Webhook-Token: $WEBHOOK_TOKEN" \
-d '{"event": "order.created", "orderId": "42"}'Signature HMAC
Scrydon calcule le HMAC sur les octets exacts reçus, avant l'analyse JSON, le décodage du texte, la normalisation ou la resérialisation. Les espaces, l'ordre des propriétés, l'encodage Unicode et un saut de ligne final modifient donc la signature.
Les algorithmes pris en charge sont sha1, sha256 et sha512. Utilisez sha256, sauf si l'appelant nécessite un autre algorithme pris en charge. L'en-tête de signature accepte soit une empreinte hexadécimale seule, soit une empreinte préfixée par l'algorithme :
<hex-digest>
sha256=<hex-digest>Lorsqu'un préfixe est présent, il doit correspondre à l'algorithme configuré. Les chiffres hexadécimaux sont insensibles à la casse. Cet exemple signe et envoie exactement les octets contenus dans body :
body='{"event":"order.created","orderId":"42"}'
signature="$(printf '%s' "$body" | openssl dgst -sha256 -hmac "$WEBHOOK_SECRET" -hex | awk '{print $NF}')"
curl -X POST "https://app.scrydon.com/api/webhooks/trigger/{path}" \
-H "Content-Type: application/json" \
-H "X-Hub-Signature-256: sha256=$signature" \
--data-binary "$body"Toute erreur d'authentification — en-tête manquant ou incorrect, signature mal formée, configuration invalide ou secret indisponible — renvoie la même réponse et ne démarre pas le workflow :
HTTP/1.1 401 Unauthorized
Content-Type: text/plain; charset=utf-8
Cache-Control: no-store
UnauthorizedLe HMAC authentifie le corps et la possession du secret partagé, mais il n'empêche pas le rejeu. Un appelant peut renvoyer un corps et une signature précédemment valides, car ce mode n'utilise ni horodatage ni nonce.
Déclencheurs spécifiques aux fournisseurs
Pour les services disposant d'une intégration Scrydon dédiée (GitHub, Microsoft Graph, Atlassian, etc.), préférez le bloc de déclencheur du fournisseur au bloc Webhook générique. Les déclencheurs de fournisseurs analysent et valident automatiquement le payload d'événement et exposent des variables typées.
Voir Fournisseurs pour la liste complète des intégrations avec prise en charge des déclencheurs.
Les blocs Webhook sont en réception uniquement. Ils démarrent le workflow mais ne peuvent pas renvoyer de réponse à l'appelant au-delà d'un accusé de réception HTTP 200 standard. Pour renvoyer des données à un appelant, utilisez le déclencheur Démarrer (API) à la place.