Aller au contenu
NimbusNexus
Transforms · Pipelines déclaratifs de requêtes

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.

Comment ça marche

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.

  1. 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.

  2. 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é.

  3. 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.

  4. 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.

Ce que peut faire un pipeline

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.

En une requête

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
}
Justificatifs d’identité

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.

À quoi ça sert

Les tâches pour lesquelles il est fait, dont aucune ne demande de script.

JUSTIFICATIFS
Ajouter ce qu’exige une destination

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.

{"auth": {"type": "bearer", "secret": "sec_…"}}
REMODELAGE
Envoyer le format qu’attend une API

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.

{"map": {"invoice_id": "{{ data.id }}", "total": {"$ref": "data.amount"}}}
FILTRES
Abandonner ce dont personne n’a besoin

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.

{"filter": {"data": {"amount": {"$gte": 100000}}}}
CHAT
Publier sur Slack, Discord ou Teams

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.

Slack message · Discord message · Microsoft Teams card
DONNÉES PERSONNELLES
Alléger une requête avant son départ

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.

{"drop": ["data.customer.email", "**.phone"]}
UNE SEULE DÉFINITION
Garder un seul pipeline, pas un par endpoint

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.

pipe_8e27d40b · version 3 · destinations: webhookd
Plans

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
Commencer

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
Choisir Starter

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
Choisir Pro

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
Parlons-en

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.

Sur tous les plans, Free compris
  • 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
Questions

À savoir avant de construire votre premier pipeline.

Non. Il exécute le pipeline et répond en indiquant ce qu’il a fait. Pour que le résultat soit envoyé, appelez l’API et envoyez-le vous-même, ou désignez le pipeline par son identifiant depuis Webhooks, qui l’exécute avant chaque livraison. Transforms n’est pas un relais et n’a aucune URL vers laquelle envoyer.
Pour commencer

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.