Aller au contenu principal

Déclencheur Route d'une API

Le type Route d'une API expose un point d'accès HTTP : chaque requête valide déclenche le flux associé en lui transmettant la requête (méthode, en-têtes, corps, …).

Webhooks

Un webhook — mécanisme par lequel un service externe envoie des événements via HTTP — se configure avec ce type : il n'existe pas de type de déclencheur séparé « Webhook ». Choisissez la méthode POST (souvent imposée par le prestataire) et un path dédié (ex. /webhooks/stripe), déployez, puis enregistrez l'URL complète fournie par Ecosystem dans la console du service tiers.

Paramètres​

ParamètreTypeObligatoireDéfautDescription
NomChaîne✅—Libellé du déclencheur ; préremplit automatiquement le Chemin (slug).
Chemin (slug)Chaîne✅—Identifiant de l'URL, prérempli depuis le Nom, modifiable.
Méthodes HTTPListe✅—Méthodes acceptées : GET, POST, PUT, DELETE, PATCH, HEAD (une ou plusieurs).
PathChaîne❌—Chemin complémentaire de l'endpoint (Custom Path), avec paramètres dynamiques possibles.
HeadersPaires clé-valeur❌—En-têtes attendus sur les requêtes entrantes.
Format de réponse attenduexample / JSONSchema❌—Contrat de réponse attendu pour les consommateurs de l'API.

Personnaliser le Path​

Le champ Path (Custom Path) définit le chemin HTTP exposé en complément du slug. L'URL publique combine le slug et le path :

https://<environnement>/<slug><path>
ÉlémentExempleRôle
Slugapi.reception.commandesIdentifie le déclencheur dans Ecosystem
Path/orders/:idRoute complémentaire, avec paramètres éventuels
URL complète…/api.reception.commandes/orders/1234Requête reçue par le déclencheur

La syntaxe suit les conventions de routage Express.js :

SyntaxeExemple de pathEffet
Segment fixe/ordersCorrespond exactement à ce chemin
Paramètre :nom/order/:idCapture un segment dans incomingRequest.params.nom
Paramètre optionnel :nom?/:id?Accepte la requête avec ou sans ce segment
Wildcard *nom/orders/*pathCapture tout le reste du chemin après le préfixe

Segment fixe — un path sans paramètre correspond exactement à l'URL demandée (hors query string) :

Path configuréRequête acceptéeRequête refusée
/ordersPOST /ordersPOST /orders/42
/webhooks/stripePOST /webhooks/stripePOST /webhooks/stripe/events

Paramètre personnalisé (:nom) — un segment préfixé par : capture une valeur variable, exposée dans incomingRequest.params :

RequêteValeur capturée
GET /order/1234incomingRequest.params.id → '1234'
GET /order/abc-defincomingRequest.params.id → 'abc-def'
// Pour une requête GET /order/1234
incomingRequest.params.id // '1234'

Une colonne id est ajoutée automatiquement dans les vues de données du déclencheur.

Paramètre optionnel (:nom?) — ajoutez ? après le nom du paramètre pour le rendre optionnel :

RequêteValeur capturée
GET /1234incomingRequest.params.id → '1234'
GET /incomingRequest.params.id → undefined
// Requête GET /1234
incomingRequest.params.id // '1234'

// Requête GET / (path vide)
incomingRequest.params.id // undefined

Utile pour un endpoint unique qui gère à la fois une ressource identifiée et une collection.

Wildcard (*nom) — *nom accepte tout le reste du chemin après un préfixe fixe ; la portion capturée est une chaîne (segments séparés par /) :

RequêteValeur capturée
GET /orders/1234/deliveryincomingRequest.params.path → '1234/delivery'
GET /orders/a/b/cincomingRequest.params.path → 'a/b/c'
// Requête GET /orders/1234/delivery
incomingRequest.params.path // '1234/delivery'

Convient aux APIs de type « catch-all » : proxy, fichiers imbriqués, routes dont la profondeur varie.

Bonnes pratiques sur le Path
  • Préfixez les paths par une version ou un domaine métier : /v1/orders/:id plutôt que /:id.
  • Validez incomingRequest.params dans le flux (présence, format, valeurs autorisées), surtout pour les paramètres optionnels (undefined).
  • Les query strings (?foo=bar) ne font pas partie du path : utilisez incomingRequest.query.
  • Évitez les wildcards trop larges en production.

Exemple de données d'entrée​

La section Exemple du formulaire décrit le schéma ou l'exemple des données que le déclencheur est censé recevoir :

{
"orderId": "CMD-4821",
"customer": { "id": "CUS-77", "email": "client@exemple.com" },
"total": 149.9
}

Cette section sert de référence aux intégrateurs qui appellent votre déclencheur. Si la validation est activée et que les données reçues ne respectent pas le schéma, le flux ne se lance pas et une erreur est renvoyée. L'exemple peut être déduit d'un fichier Swagger importé ou saisi manuellement.

En activant la validation des données, une interface permet de définir, pour chaque champ, son schéma de validation :

ChampDescription
NomNom du champ.
DescriptionDescription du champ attendu.
ExempleExemple de valeur pour le champ.
TypeType attendu : chaîne de caractères, nombre, booléen, objet, tableau, nombre entier.
MasquerMasque le champ (ex. mot de passe, secret).
RequisIndique si le champ est obligatoire.

Entrée​

Le déclencheur reçoit la requête HTTP entière : méthode, path, query string, en-têtes et corps.

{
"method": "POST",
"url": "https://api.example.com/api.reception.commandes/orders/1234?lang=fr",
"query": { "lang": "fr" },
"params": { "id": "1234" },
"headers": { "content-type": "application/json" },
"body": { "orderId": "CMD-4821", "total": 149.9 }
}

Sortie​

Le flux accède au corps de la requête via data, et aux métadonnées via incomingRequest :

PropriétéDescription
dataCorps de la requête, parsé en JSON.
incomingRequest.methodMéthode HTTP de la requête.
incomingRequest.urlURL complète de la requête.
incomingRequest.queryParamètres de query string.
incomingRequest.paramsParamètres de path capturés (:id, :id?, *path).
incomingRequest.headersEn-têtes HTTP reçus.

Depuis un nœud suivant : {{data.orderId}} ou {{incomingRequest.params.id}}.

Erreurs​

  • Requête refusée — un path qui ne correspond pas au pattern configuré (segment fixe, paramètre, wildcard) ne déclenche pas le flux : la requête est rejetée.
  • Paramètre optionnel absent — incomingRequest.params.id vaut undefined : validez sa présence dans le flux avant de l'utiliser.

Exemple​

Réception de commandes : créez un déclencheur de type Route d'une API (méthode POST, path /orders), associez un flux qui valide le corps puis traite la commande, et déployez. Chaque POST /orders lance le flux.

Consulter une commande : créez un déclencheur GET avec path /orders/:id ; le flux lit incomingRequest.params.id, charge la commande et répond via un nœud Réponse HTTP.

Voir aussi​