Filtrez, allégez et remodelez une requête,
sans écrire de code.
Un pipeline est une courte liste d’étapes : abandonner une requête si elle ne correspond pas, retirer ou ajouter des champs, reconstruire le corps à partir d’un modèle, définir des headers. Construisez-en un dans la console ou via l’API, testez-le, conservez ses versions, exécutez-le via l’API ou désignez-le par son identifiant depuis le produit qui envoie.
Construisez-le, testez-le, puis exécutez-le là où vous en avez besoin.
Un pipeline est un document JSON, vérifié en entier à son enregistrement. Aucune étape n’exécute de code de votre part : aucune ne peut donc boucler, attendre ni appeler l’extérieur.
Construire un pipeline
Ajoutez des étapes dans le formulaire de la console, collez-les en JSON ou partez d’un modèle : messages Slack, Discord et Teams, Keep only these fields, Drop personal data. Un document qui ne pourrait jamais s’exécuter est refusé à l’enregistrement, avec son étape, son chemin et la raison.
Le tester
Exécutez ce qui se trouve dans l’éditeur sur une requête que vous collez, et voyez le corps et les headers que le pipeline enverrait, l’étape qui a abandonné la requête ou la raison de l’échec. Un test n’enregistre rien et n’est pas compté.
Conserver ses versions
Enregistrer un nouveau contenu ajoute une version, et une version ne change jamais. Enregistrer le même contenu n’en ajoute aucune, et restaurer une ancienne version revient à enregistrer de nouveau son contenu.
L’exécuter
Appelez l’API avec une requête et lisez ce qu’a fait le pipeline, ou désignez-le par son identifiant depuis Webhooks, qui l’exécute dans son propre processus avant chaque livraison.
Transforms n’envoie rien lui-même et ne conserve rien de ce qu’il traite. Ce n’est pas un relais : Webhooks livre les événements, Request Bins transfère les requêtes, et Transforms exécute le pipeline et répond en indiquant ce qu’il a fait.
Six étapes, exécutées dans l’ordre où vous les écrivez.
Elles couvrent ce pour quoi la plupart des transformations existent. Un pipeline n’a ni boucles, ni horloge, ni réseau : le même pipeline fait donc toujours la même chose sur la même requête.
Filter
Ne gardez une requête que si elle correspond, ou abandonnez-la si elle correspond. Testez des champs, des objets imbriqués et des tableaux avec des opérateurs comme $gte, $in et $contains, et combinez-les avec $and, $or et $not.
Remove fields
Retirez des champs du corps par leur chemin. * correspond à un niveau et ** à n’importe quelle profondeur, si bien que **.email retire tous les champs email, où qu’ils soient.
Set fields
Ajoutez ou remplacez des champs avec des valeurs tirées d’un petit langage de modèles : {{ data.id }} insère une valeur sous forme de texte, et {"$ref": "data.amount"} l’insère avec son type.
Reshape the body
Remplacez le corps par un corps que vous écrivez, avec des filtres comme money(), date(), truncate() et join(). C’est ainsi qu’un modèle produit un message Slack, Discord ou Teams.
Headers
Définissez, retirez et renommez des headers, avec des valeurs en langage de modèles. Un justificatif n’a pas sa place ici, où la lecture du pipeline le montrerait : c’est l’étape suivante.
Credential
Indiquez que la requête porte un bearer token, une authentification basique ou une clé d’API, et nommez l’emplacement d’où vient ce justificatif. Les étapes Credential s’exécutent en dernier : aucune autre étape ne peut donc le lire.
Modèles
Des messages Slack, Discord et Teams que le texte de l’événement ne peut ni mettre en forme ni fermer avant la fin, Keep only these fields et Drop personal data. Enregistrer un modèle en crée une copie qui vous appartient.
Plafonds fixes
20 étapes, un corps de 256 KiB et 100,000 valeurs lues ou copiées par exécution, sur tous les plans. Au-delà d’un plafond, une exécution échoue avec une raison claire. Elle ne reste jamais bloquée.
Envoyez-lui une requête. Lisez ce qu’a fait le pipeline.
Ce pipeline garde les factures payées de $1,000 ou plus, retire l’e-mail du client et tout numéro de téléphone, et ajoute deux champs et un header. L’exécution répond avec le résultat et n’en conserve rien.
Le pipeline
{
"version": 1,
"steps": [
{ "filter": { "type": "invoice.paid", "data": { "amount": { "$gte": 100000 } } } },
{ "drop": ["data.customer.email", "**.phone"] },
{ "set": {
"event_type": "{{ type }}",
"amount_display": "{{ data.amount | money(data.currency) }}"
} },
{ "headers": { "set": { "X-Event-Type": "{{ type }}" } } }
]
}L’exécution
# Exécuter le pipeline enregistré sur une requête
curl -X POST "https://transforms.nimbusnexus.net/v1/pipelines/$PIPELINE_ID/run" \
-H "Authorization: Bearer $TRANSFORMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"body":{"type":"invoice.paid","data":{"id":"in_42","amount":150000,"currency":"usd","customer":{"name":"Ana Silva","email":"[email protected]","phone":"+1 202 555 0142"}}}}'La réponse
{
"status": "ok",
"version": 3,
"body": {
"type": "invoice.paid",
"data": {
"id": "in_42",
"amount": 150000,
"currency": "usd",
"customer": { "name": "Ana Silva" }
},
"event_type": "invoice.paid",
"amount_display": "1,500.00 USD"
},
"body_changed": true,
"headers": { "X-Event-Type": "invoice.paid" },
"query": {},
"step": null,
"note": null,
"reason": null,
"error": null,
"duration_ms": 0.4
}Transforms ne détient aucun justificatif. C’est le produit qui envoie qui les détient.
Un pipeline peut indiquer qu’un justificatif accompagne une requête, et sa lecture ne montre aucune valeur, car il n’en contient aucune. Pour en envoyer un, exécutez le pipeline par référence depuis le produit qui envoie.
Un emplacement, pas une valeur
Une étape Credential indique quel type de justificatif va où, et nomme un emplacement. Le document contient ce nom et rien d’autre : relire un pipeline ne montre donc jamais de justificatif.
Rempli là où l’on envoie
Un produit qui exécute le pipeline par référence associe l’emplacement à un secret de son propre stockage, sous sa propre clé, et l’envoie vers ses propres URL. Hors de ce produit, l’emplacement ne signifie rien.
Masqué ici
Test et l’API d’exécution montrent ce que l’étape ajouterait, sous la forme Authorization: Bearer ••••. Ni l’un ni l’autre ne peut envoyer de justificatif, car Transforms n’en a aucun à envoyer.
Voir d’abord où il s’exécute
La lecture d’un pipeline liste les produits qui l’exécutent par référence et la version de chacun. Une nouvelle version avec une étape Credential, ou la suppression du pipeline, doit d’abord les nommer un à un.
Les tâches pour lesquelles il est fait, dont aucune ne demande de script.
L’API d’un partenaire attend un bearer token ou une clé d’API. Une étape Credential l’indique, et le produit qui envoie le fournit à partir de ses propres secrets.
Un CRM veut trois champs, nommés à sa façon. Une étape de remodelage construit exactement ce corps à partir de l’événement, en conservant le type de chaque valeur.
Un abonnement ne porte que sur le type de l’événement. Un filtre lit aussi le payload : « les factures payées de $1,000 ou plus » tient donc en une étape.
Chaque modèle est une étape de remodelage et un header. Il fonctionne avec n’importe quel événement, et rien dans l’événement ne peut mettre en forme le message, mentionner quelqu’un ni fermer un bloc de code avant la fin.
Retirez les données personnelles avant qu’un fournisseur d’analytics ne les voie, à n’importe quelle profondeur, et ajoutez au passage le type d’événement à un header.
Désignez le pipeline par son identifiant depuis Webhooks. Les endpoints exécutent sa version actuelle dans le propre processus de Webhooks, et chaque nouvelle version leur parvient sans modifier aucun endpoint.
Des pipelines sur tous les plans, Free compris.
Chaque plan comprend les six étapes, les modèles, Test, l’API d’exécution et l’exécution par référence. Un plan payant accueille plus de pipelines et d’emplacements de justificatifs, conserve plus de versions et exécute davantage par minute.
Free
De quoi construire, tester et exécuter vos premiers pipelines.
$0
- 5 pipelines
- 5 emplacements de justificatifs
- 10 versions conservées par pipeline
- 60 exécutions par minute
Starter
Pour un produit qui exécute des pipelines en production.
$9/ mois
$86.40 / an — 20 % d’économie
- 25 pipelines
- 25 emplacements de justificatifs
- 25 versions conservées par pipeline
- 600 exécutions par minute
Pro
Plus de pipelines, plus de versions, de la place pour toute une équipe.
$29/ mois
$278.40 / an — 20 % d’économie
- 100 pipelines
- 100 emplacements de justificatifs
- 50 versions conservées par pipeline
- 3,000 exécutions par minute
Custom
Engagements de volume, limites sur mesure et conditions adaptées.
Sur devis
- 1,000 pipelines
- 1,000 emplacements de justificatifs
- 100 versions conservées par pipeline
- 12,000 exécutions par minute
- Nécessite un compte d’équipe
Les exécutions sont comptées, pas facturées, et la console et GET /v1/usage montrent celles du mois. Une exécution au-delà du débit du plan répond 429 avec le temps à attendre, et Test partage ce débit. Une exécution dans un produit qui désigne le pipeline compte dans la consommation de ce produit. Une version qu’un produit fige est conservée au-delà du nombre prévu par le plan, tout comme les cinq versions plus anciennes qu’un produit a exécutées le plus récemment au cours des 30 derniers jours.
- Les six étapes
- Modèles Slack, Discord et Teams
- Modèles Keep only these fields et Drop personal data
- Test avant l’enregistrement
- Versions qui ne changent jamais
- L’API d’exécution
- Exécution par référence depuis Webhooks
- Isolé par espace de travail
À savoir avant de construire votre premier pipeline.
À voir aussi
Où aller ensuite
Construisez un pipeline et voyez ce qu’il fait à une requête.
Free comprend 5 pipelines et 60 exécutions par minute, avec toutes les étapes et tous les modèles. Essayez-en d’abord un dans le playground, sans compte.