Zum Inhalt springen
NimbusNexus
Transforms · Deklarative Request-Pipelines

Einen Request filtern, kürzen und umformen,
ohne Code zu schreiben.

Eine Pipeline ist eine kurze Liste von Schritten: einen Request verwerfen, wenn er nicht passt, Felder entfernen oder hinzufügen, den Body aus einer Vorlage neu bauen, Header setzen. Bauen Sie eine in der Konsole oder über die API, testen Sie sie, bewahren Sie ihre Versionen auf, führen Sie sie über die API aus oder verweisen Sie aus dem sendenden Produkt über ihre ID darauf.

So funktioniert es

Bauen, testen, dann ausführen, wo immer es nötig ist.

Eine Pipeline ist ein JSON-Dokument, das beim Speichern als Ganzes geprüft wird. Kein Schritt führt Code von Ihnen aus, daher kann keiner in einer Schleife laufen, warten oder Aufrufe nach außen machen.

  1. Pipeline bauen

    Legen Sie Schritte im Formular der Konsole an, fügen Sie sie als JSON ein oder beginnen Sie mit einer Vorlage: Nachrichten für Slack, Discord und Teams, Keep only these fields, Drop personal data. Ein Dokument, das nie laufen könnte, wird beim Speichern abgewiesen, mit Schritt, Pfad und Grund.

  2. Testen

    Führen Sie aus, was im Editor steht, mit einem Request, den Sie einfügen. Sie sehen Body und Header, die gesendet würden, den Schritt, der ihn verworfen hat, oder warum die Ausführung fehlgeschlagen ist. Ein Test speichert nichts und wird nicht gezählt.

  3. Versionen aufbewahren

    Speichern Sie neuen Inhalt, entsteht eine neue Version, und eine Version ändert sich nie. Bei gleichem Inhalt entsteht keine, und eine alte Version wiederherzustellen heißt, ihren Inhalt erneut zu speichern.

  4. Ausführen

    Rufen Sie die API mit einem Request auf und lesen Sie, was die Pipeline getan hat, oder verweisen Sie aus Webhooks über ihre ID auf sie. Webhooks führt sie dann vor jeder Zustellung im eigenen Prozess aus.

Transforms sendet selbst nichts und behält nichts von dem, was es verarbeitet. Es ist kein Relay: Webhooks stellt Events zu, Request Bins leitet Requests weiter, und Transforms führt die Pipeline aus und meldet, was sie getan hat.

Was eine Pipeline kann

Sechs Schritte, die in der Reihenfolge laufen, in der Sie sie schreiben.

Sie decken ab, wofür die meisten Transformationen da sind. Eine Pipeline hat keine Schleifen, keine Uhr und kein Netzwerk, daher tut dieselbe Pipeline beim selben Request immer dasselbe.

Filter

Behält einen Request nur, wenn er passt, oder umgekehrt: Was passt, wird verworfen. Prüft Felder, verschachtelte Objekte und Arrays mit Operatoren wie $gte, $in und $contains, die sich mit $and, $or und $not kombinieren lassen.

Remove fields

Entfernt Felder über ihren Pfad aus dem Body. * steht für genau eine Ebene und ** für beliebig viele, sodass **.email jedes Feld email entfernt, wo immer es steht.

Set fields

Fügt Felder hinzu oder überschreibt sie, mit Werten aus einer kleinen Vorlagensprache: {{ data.id }} fügt einen Wert als Text ein, und {"$ref": "data.amount"} fügt ihn mit seinem Typ ein.

Reshape the body

Ersetzt den Body durch einen, den Sie schreiben, mit Filtern wie money(), date(), truncate() und join(). So baut eine Vorlage eine Nachricht für Slack, Discord oder Teams.

Headers

Setzt, entfernt oder benennt Header um, mit Werten aus der Vorlagensprache. Credentials gehören nicht hierher, wo sie beim Abrufen der Pipeline zu sehen wären: Dafür ist der nächste Schritt da.

Credential

Legt fest, dass ein Bearer-Token, Basic Auth oder ein API-Key in den Request kommt, und nennt den Slot, aus dem der Wert stammt. Credential-Schritte laufen zuletzt, sodass kein anderer Schritt ihn lesen kann.

Vorlagen

Nachrichten für Slack, Discord und Teams, die der Text des Events weder formatieren noch vorzeitig beenden kann, dazu Keep only these fields und Drop personal data. Beim Speichern entsteht eine Kopie, die Ihnen gehört.

Feste Obergrenzen

20 Schritte, ein Body von 256 KiB und 100,000 gelesene oder kopierte Werte pro Ausführung, in jedem Tarif. Über einer Obergrenze schlägt eine Ausführung mit einem klaren Grund fehl. Sie bleibt nie hängen.

In einem Request

Einen Request senden. Lesen, was die Pipeline getan hat.

Diese Pipeline behält bezahlte Rechnungen ab $1,000, entfernt die E-Mail-Adresse des Kunden und jede Telefonnummer und fügt zwei Felder und einen Header hinzu. Die Ausführung antwortet mit dem Ergebnis und behält nichts davon.

Die 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 }}" } } }
  ]
}

Die Ausführung

# Die gespeicherte Pipeline für einen Request ausführen
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"}}}}'

Die Antwort

{
  "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
}
Credentials

Transforms speichert keine Credentials. Das tut das Produkt, das sendet.

Eine Pipeline kann festlegen, dass Credentials in einen Request kommen, und beim Abrufen der Pipeline ist kein Wert zu sehen, weil sie keinen hat. Um Credentials zu senden, führen Sie die Pipeline per Referenz in dem Produkt aus, das sendet.

Ein Slot, kein Wert

Ein Credential-Schritt legt fest, welche Art von Credentials wohin kommt, und nennt einen Slot. Das Dokument enthält diesen Namen und sonst nichts, daher zeigt eine abgerufene Pipeline nie Credentials.

Gefüllt, wo gesendet wird

Ein Produkt, das die Pipeline per Referenz ausführt, ordnet den Slot einem Secret in seinem eigenen Speicher zu, unter seinem eigenen Schlüssel, und sendet es an seine eigenen URLs. Außerhalb dieses Produkts bedeutet der Slot nichts.

Hier maskiert angezeigt

Test und die Ausführungs-API zeigen, was der Schritt hinzufügen würde, als Authorization: Bearer ••••. Beide können keine Credentials senden, weil Transforms keine zu senden hat.

Zuerst sehen, wo sie läuft

Eine abgerufene Pipeline listet die Produkte auf, die sie per Referenz ausführen, und die Version, die jedes davon ausführt. Eine neue Version mit einem Credential-Schritt oder das Löschen der Pipeline muss zuerst jedes davon nennen.

Wofür Transforms genutzt wird

Die Aufgaben, für die es gedacht ist, und keine davon braucht ein Skript.

CREDENTIALS
Hinzufügen, was ein Empfänger verlangt

Die API eines Partners erwartet ein Bearer-Token oder einen API-Key. Ein Credential-Schritt legt das fest, und das Produkt, das sendet, füllt den Slot aus seinen eigenen Secrets.

{"auth": {"type": "bearer", "secret": "sec_…"}}
UMFORMEN
Das Format senden, das eine API erwartet

Ein CRM will drei Felder, nach seinen eigenen Regeln benannt. Ein Umformungsschritt baut genau diesen Body aus dem Event und behält dabei den Typ jedes Werts.

{"map": {"invoice_id": "{{ data.id }}", "total": {"$ref": "data.amount"}}}
FILTER
Verwerfen, was niemand braucht

Ein Abo gleicht nur den Event-Typ ab. Ein Filter liest auch die Payload, sodass „bezahlte Rechnungen ab $1,000“ ein einziger Schritt ist.

{"filter": {"data": {"amount": {"$gte": 100000}}}}
CHAT
An Slack, Discord oder Teams posten

Jede Vorlage besteht aus einem Umformungsschritt und einem Header. Sie funktioniert mit jedem Event, und nichts im Event kann die Nachricht formatieren, jemanden erwähnen oder einen Codeblock vorzeitig beenden.

Slack message · Discord message · Microsoft Teams card
PERSONENBEZOGENE DATEN
Einen Request kürzen, bevor er hinausgeht

Entfernen Sie personenbezogene Daten in beliebiger Tiefe, bevor ein Analytics-Anbieter sie sieht, und schreiben Sie dabei gleich den Event-Typ in einen Header.

{"drop": ["data.customer.email", "**.phone"]}
EINE DEFINITION
Eine Pipeline statt einer pro Endpoint

Verweisen Sie aus Webhooks über ihre ID auf die Pipeline. Endpoints führen ihre aktuelle Version im eigenen Prozess von Webhooks aus, und jede neue Version erreicht sie, ohne dass sich an einem Endpoint etwas ändert.

pipe_8e27d40b · version 3 · destinations: webhookd
Tarife

Pipelines in jedem Tarif, auch in Free.

Jeder Tarif enthält alle sechs Schritte, die Vorlagen, Test, die Ausführungs-API und die Ausführung per Referenz. Ein bezahlter Tarif hält mehr Pipelines und Credential-Slots, bewahrt mehr Versionen auf und führt mehr pro Minute aus.

Free

Genug, um Ihre ersten Pipelines zu bauen, zu testen und auszuführen.

$0

  • 5 Pipelines
  • 5 Credential-Slots
  • 10 aufbewahrte Versionen pro Pipeline
  • 60 Ausführungen / Minute
Loslegen

Starter

Für ein Produkt, das Pipelines in Produktion ausführt.

$9/ Monat

$86.40 / Jahr — 20 % sparen

  • 25 Pipelines
  • 25 Credential-Slots
  • 25 aufbewahrte Versionen pro Pipeline
  • 600 Ausführungen / Minute
Starter wählen

Pro

Mehr Pipelines, mehr Versionen, Platz für ein ganzes Team.

$29/ Monat

$278.40 / Jahr — 20 % sparen

  • 100 Pipelines
  • 100 Credential-Slots
  • 50 aufbewahrte Versionen pro Pipeline
  • 3,000 Ausführungen / Minute
Pro wählen

Custom

Volumenzusagen, individuelle Limits und passende Konditionen.

Nach Vereinbarung

  • 1,000 Pipelines
  • 1,000 Credential-Slots
  • 100 aufbewahrte Versionen pro Pipeline
  • 12,000 Ausführungen / Minute
  • Erfordert ein Team-Konto
Sprechen Sie uns an

Ausführungen werden gezählt, nicht abgerechnet, und die Konsole und GET /v1/usage zeigen die des Monats. Über dem Rate-Limit des Tarifs antwortet eine Ausführung mit 429 und nennt die Wartezeit, und Test teilt sich dieses Limit. Eine Ausführung bei einem Produkt, das auf die Pipeline verweist, zählt zur Nutzung dieses Produkts. Eine Version, die ein Produkt festschreibt, wird über die Zahl des Tarifs hinaus aufbewahrt, ebenso die fünf älteren Versionen, die ein Produkt in den letzten 30 Tagen zuletzt nachweislich ausgeführt hat.

In jedem Tarif, auch in Free
  • Alle sechs Schritte
  • Vorlagen für Slack, Discord und Teams
  • Keep only these fields, Drop personal data
  • Testen vor dem Speichern
  • Versionen, die sich nie ändern
  • Die Ausführungs-API
  • Ausführung per Referenz aus Webhooks
  • Pro Workspace isoliert
Fragen

Bevor Sie Ihre erste Pipeline bauen.

Nein. Transforms führt die Pipeline aus und meldet, was sie getan hat. Damit das Ergebnis gesendet wird, rufen Sie die API auf und senden es selbst, oder Sie verweisen aus Webhooks über ihre ID auf die Pipeline; Webhooks führt sie vor jeder Zustellung aus. Transforms ist kein Relay und hat keine URL, an die es senden könnte.
Loslegen

Bauen Sie eine Pipeline und sehen Sie, was sie mit einem Request macht.

Free enthält 5 Pipelines und 60 Ausführungen pro Minute, mit jedem Schritt und jeder Vorlage. Probieren Sie zuerst eine im Playground aus, ohne Konto.