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.
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.
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.
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.
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.
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.
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.
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
}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.
Die Aufgaben, für die es gedacht ist, und keine davon braucht ein Skript.
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.
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.
Ein Abo gleicht nur den Event-Typ ab. Ein Filter liest auch die Payload, sodass „bezahlte Rechnungen ab $1,000“ ein einziger Schritt ist.
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.
Entfernen Sie personenbezogene Daten in beliebiger Tiefe, bevor ein Analytics-Anbieter sie sieht, und schreiben Sie dabei gleich den Event-Typ in einen Header.
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.
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
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
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
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
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.
- 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
Bevor Sie Ihre erste Pipeline bauen.
Passend dazu
Wohin als Nächstes
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.