Швидкий старт Transforms
Від нуля до конвеєра з версіями за кілька хвилин. Ви протестуєте конвеєр на запиті, збережете його, запустите, побачите, як запит відкидається, і збережете нову версію. Щоб побачити, що робить конвеєр, ще до входу в акаунт, спробуйте playground.
Перш ніж почати
Створіть API-ключ у консолі акаунта для продукту Transforms з дозволом Read & write. Для всього, що описано тут, достатньо Free. Потім збережіть ключ у змінній середовища:
export TRANSFORMS_API_KEY="<your-api-key>"Усі шляхи нижче відносні до https://transforms.nimbusnexus.net, і кожен запит містить Authorization: Bearer <your key>.
1. Протестуйте конвеєр
Цей конвеєр залишає оплачені рахунки на суму від $1,000, вилучає email клієнта й будь-які номери телефону, а також додає два поля й заголовок. POST /v1/pipelines/test один раз виконує документ на запиті, який ви надсилаєте, і нічого не зберігає й не рахує:
curl -X POST https://transforms.nimbusnexus.net/v1/pipelines/test \
-H "Authorization: Bearer $TRANSFORMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"pipeline": {
"version": 1,
"steps": [
{ "filter": { "type": "invoice.paid", "data": { "amount": { "$gte": 100000 } } }, "note": "Paid invoices of $1,000 or more" },
{ "drop": ["data.customer.email", "**.phone"] },
{ "set": { "event_type": "{{ type }}", "amount_display": "{{ data.amount | money(data.currency) }}" } },
{ "headers": { "set": { "X-Event-Type": "{{ type }}" } } }
]
},
"body": {
"type": "invoice.paid",
"data": {
"id": "in_42",
"amount": 150000,
"currency": "usd",
"customer": { "name": "Ana Silva", "email": "[email protected]", "phone": "+1 202 555 0142" }
}
}
}'{
"status": "ok",
"version": null,
"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
}status дорівнює ok, тож body і headers — це те, що треба надіслати. version дорівнює null, бо ще нічого не збережено.
2. Збережіть його
Збережіть той самий документ як конвеєр, із назвою:
curl -X POST https://transforms.nimbusnexus.net/v1/pipelines \
-H "Authorization: Bearer $TRANSFORMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Paid invoices",
"pipeline": {
"version": 1,
"steps": [
{ "filter": { "type": "invoice.paid", "data": { "amount": { "$gte": 100000 } } }, "note": "Paid invoices of $1,000 or more" },
{ "drop": ["data.customer.email", "**.phone"] },
{ "set": { "event_type": "{{ type }}", "amount_display": "{{ data.amount | money(data.currency) }}" } },
{ "headers": { "set": { "X-Event-Type": "{{ type }}" } } }
]
}
}'Відповідь — 201 з конвеєром; тут її скорочено:
{
"id": "pipe_8e27d40b19c3f6a5e0d71b42",
"name": "Paid invoices",
"status": "enabled",
"current_version": 1,
"destinations": [],
"consumers": []
}Збережіть id: його приймають усі подальші виклики.
export PIPELINE_ID="pipe_8e27d40b19c3f6a5e0d71b42"3. Запустіть його
Надішліть запит на збережений конвеєр. Запуск приймає body, а також, за бажанням, headers і meta, і відповідає, що зробив конвеєр:
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"}}}'Відповідь має той самий формат, що й у тесті, із "version": 1. Про запит нічого не зберігається, а запуск додає одиницю до кількості за місяць у GET /v1/usage. Надсилати результат далі — уже ваше завдання: сам Transforms нічого не надсилає.
4. Подивіться, як запит відкидається
Надішліть рахунок на суму, меншу за вказану у фільтрі:
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_43", "amount": 99999, "currency": "usd"}}}'{
"status": "dropped",
"version": 1,
"body": null,
"body_changed": false,
"headers": {},
"query": {},
"step": 0,
"note": "Paid invoices of $1,000 or more",
"reason": "no_match",
"error": "dropped by step 0 (Paid invoices of $1,000 or more)",
"duration_ms": 0.1
}Це все одно 200, бо конвеєр виконався. step рахується з 0, а reason дорівнює no_match, коли запит не збігся з фільтром. У такому разі нічого не надсилайте.
5. Збережіть нову версію
Змініть конвеєр через PATCH, передавши новий документ — тут без кроку заголовків:
curl -X PATCH "https://transforms.nimbusnexus.net/v1/pipelines/$PIPELINE_ID" \
-H "Authorization: Bearer $TRANSFORMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"pipeline": {
"version": 1,
"steps": [
{ "filter": { "type": "invoice.paid", "data": { "amount": { "$gte": 100000 } } }, "note": "Paid invoices of $1,000 or more" },
{ "drop": ["data.customer.email", "**.phone"] },
{ "set": { "event_type": "{{ type }}", "amount_display": "{{ data.amount | money(data.currency) }}" } }
]
}
}'Тепер current_version дорівнює 2, і запуски використовують цю версію. Версія 1 не змінилася: GET /v1/pipelines/{id}/versions перелічує збережені версії, а запуск і далі може вказати одну з них:
curl -X POST "https://transforms.nimbusnexus.net/v1/pipelines/$PIPELINE_ID/run" \
-H "Authorization: Bearer $TRANSFORMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"version": 1, "body": {"type": "invoice.paid", "data": {"id": "in_42", "amount": 150000, "currency": "usd"}}}'Щоб повернутися до версії 1, збережіть її вміст ще раз: так вона стане версією 3.
У консолі
Консоль за адресою https://transforms.nimbusnexus.net робить усе це за допомогою форми для кожного кроку: Filter, Remove fields, Set fields, Reshape the body, Headers і Credential. Start from a template пропонує повідомлення Slack, Discord і Teams, Keep only these fields і Drop personal data, а JSON показує весь документ. Протестуйте те, що в редакторі, перш ніж зберегти.
Прибирання
Кожен план обмежує кількість конвеєрів, які можна мати, тож видаліть цей, коли закінчите:
curl -X DELETE "https://transforms.nimbusnexus.net/v1/pipelines/$PIPELINE_ID" \
-H "Authorization: Bearer $TRANSFORMS_API_KEY"Видалення остаточне — і для конвеєра, і для кожної його версії. Щоб натомість тимчасово зупинити його виконання, змініть його через PATCH на {"status": "disabled"}, а пізніше — назад на {"status": "enabled"}. Вимкнений конвеєр відповідає на запуск 409 conflict, pipeline_disabled.
Що далі
- Конвеєри — усі кроки, шляхи, фільтри й шаблони.
- Довідник Transforms — усі маршрути й поля, ролі, ліміти й помилки.
- API Transforms — усі операції із запитом у curl, TypeScript, Python або Go.
- Огляд продукту — облікові дані, плани і чого Transforms не робить.