Перейти до вмісту
NimbusNexus
Transforms · Декларативні конвеєри для запитів

Фільтруйте, скорочуйте й перетворюйте запит,
не пишучи коду.

Конвеєр — це короткий список кроків: відкинути запит, якщо він не збігається, вилучити чи додати поля, побудувати нове тіло за шаблоном, задати заголовки. Зберіть його в консолі або через API, протестуйте, зберігайте версії, запускайте через API або посилайтеся на нього за ідентифікатором із продукту, що надсилає запити.

Як це працює

Зберіть, протестуйте, а тоді запускайте там, де потрібно.

Конвеєр — це JSON-документ, який під час збереження перевіряється повністю. Жоден крок не виконує вашого коду, тож жоден не може зациклитися, чекати чи звертатися назовні.

  1. Зберіть конвеєр

    Додайте кроки у формі в консолі, вставте їх як JSON або почніть із шаблону: повідомлення Slack, Discord і Teams, Keep only these fields, Drop personal data. Документ, який ніколи не зміг би виконатися, відхиляється під час збереження із зазначенням кроку, шляху й причини.

  2. Протестуйте

    Запустіть те, що в редакторі, на вставленому запиті й подивіться, які тіло й заголовки було б надіслано, який крок відкинув запит або чому запуск провалився. Тест нічого не зберігає й нічого не рахує.

  3. Зберігайте версії

    Збереження нового вмісту додає версію, а версія ніколи не змінюється. Той самий вміст нової версії не додає, а відновлення старої версії — це повторне збереження її вмісту.

  4. Запускайте

    Викличте API із запитом і прочитайте, що зробив конвеєр, або посилайтеся на конвеєр за ідентифікатором із Webhooks, який виконує його у власному процесі перед кожною доставкою.

Transforms сам нічого не надсилає й нічого не зберігає з того, на чому виконує конвеєр. Це не ретранслятор: Webhooks доставляє події, Request Bins пересилає запити, а Transforms виконує конвеєр і відповідає, що той зробив.

Що вміє конвеєр

Шість кроків, що виконуються в порядку запису.

Їх вистачає для завдань, заради яких зазвичай і створюють трансформації. Конвеєр не має циклів, годинника й мережі, тож той самий конвеєр на тому самому запиті завжди робить те саме.

Filter

Залишайте запит, лише якщо він збігається, або відкидайте, якщо збігається. Перевіряйте поля, вкладені обʼєкти й масиви операторами на кшталт $gte, $in і $contains, а поєднуйте їх через $and, $or і $not.

Remove fields

Вилучайте поля з тіла за шляхом. * відповідає одному рівню, а ** — будь-якій глибині, тож **.email вилучає кожне поле email, хоч би де воно було.

Set fields

Додавайте чи перезаписуйте поля значеннями, написаними невеликою мовою шаблонів: {{ data.id }} вставляє значення як текст, а {"$ref": "data.amount"} вставляє його разом із типом.

Reshape the body

Замінюйте тіло тим, яке пишете самі, із фільтрами на кшталт money(), date(), truncate() і join(). Саме так шаблон створює повідомлення Slack, Discord чи Teams.

Headers

Задавайте заголовки зі значеннями за шаблоном, вилучайте й перейменовуйте їх. Облікові дані сюди не йдуть, бо прочитаний конвеєр показав би їх: для них є наступний крок.

Credential

Вкажіть, що до запиту додається bearer-токен, Basic-автентифікація чи API-ключ, і назвіть слот, з якого береться значення. Кроки облікових даних виконуються останніми, тож жоден інший крок не може їх прочитати.

Шаблони

Повідомлення Slack, Discord і Teams, які текст події не може відформатувати чи передчасно завершити, а також Keep only these fields і Drop personal data. Збереження шаблону створює вашу власну копію.

Фіксовані межі

20 кроків, тіло на 256 KiB і 100,000 прочитаних чи скопійованих значень за запуск, на кожному плані. Понад межу запуск провалюється зі зрозумілою причиною. Він ніколи не зависає.

В одному запиті

Надішліть йому запит. Прочитайте, що зробив конвеєр.

Цей конвеєр залишає оплачені рахунки на суму від $1,000, вилучає email клієнта й будь-який номер телефону, а також додає два поля й заголовок. Запуск відповідає результатом і нічого з нього не зберігає.

Конвеєр

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

Запуск

# Запустіть збережений конвеєр на одному запиті
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"}}}}'

Відповідь

{
  "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 не зберігає облікових даних. Їх зберігає продукт, що надсилає запити.

Конвеєр може вказати, що до запиту додаються облікові дані, а прочитаний конвеєр не показує значення, бо його там немає. Щоб надіслати їх, запускайте конвеєр за посиланням із продукту, що надсилає запити.

Слот, а не значення

Крок облікових даних вказує їхній тип і місце в запиті та називає слот. Документ містить цю назву й нічого більше, тож прочитаний конвеєр ніколи не покаже облікових даних.

Заповнюється там, де надсилається

Продукт, який запускає конвеєр за посиланням, зіставляє слот із секретом у власному сховищі, під власним ключем, і надсилає його на власні URL. Поза цим продуктом слот нічого не означає.

Тут показуються прихованими

Test і API запуску показують, що додав би крок, як Authorization: Bearer ••••. Жоден із них не може надіслати облікові дані, бо в Transforms їх немає.

Спершу видно, де він виконується

Прочитаний конвеєр містить перелік продуктів, які запускають його за посиланням, і версію, яку виконує кожен. Нова версія з кроком облікових даних або видалення конвеєра спершу мають назвати кожен із них.

Для чого його використовують

Завдання, для яких він потрібен, і жодне не потребує скрипту.

ОБЛІКОВІ ДАНІ
Додайте те, що вимагає отримувач

API партнера очікує bearer-токен або API-ключ. Крок облікових даних це вказує, а продукт, що надсилає запити, підставляє їх зі своїх секретів.

{"auth": {"type": "bearer", "secret": "sec_…"}}
ЗМІНА ФОРМАТУ
Надсилайте формат, який очікує API

CRM хоче три поля з власними назвами. Крок зміни формату будує саме таке тіло з події й зберігає тип кожного значення.

{"map": {"invoice_id": "{{ data.id }}", "total": {"$ref": "data.amount"}}}
ФІЛЬТРИ
Відкидайте те, що нікому не потрібно

Підписка зіставляється лише за типом події. Фільтр читає ще й payload, тож «оплачені рахунки на суму від $1,000» — це один крок.

{"filter": {"data": {"amount": {"$gte": 100000}}}}
ЧАТИ
Надсилайте в Slack, Discord чи Teams

Кожен шаблон — це крок зміни формату й заголовок. Він працює з будь-якою подією, і ніщо в події не може відформатувати повідомлення, когось згадати чи передчасно завершити блок коду.

Slack message · Discord message · Microsoft Teams card
ПЕРСОНАЛЬНІ ДАНІ
Скоротіть запит, перш ніж він вийде назовні

Приберіть персональні дані на будь-якій глибині, перш ніж їх побачить сервіс аналітики, а заодно додайте тип події в заголовок.

{"drop": ["data.customer.email", "**.phone"]}
ОДНЕ ВИЗНАЧЕННЯ
Тримайте один конвеєр, а не окремий на кожен ендпоінт

Посилайтеся на конвеєр за ідентифікатором із Webhooks. Ендпоінти виконують його поточну версію у власному процесі Webhooks, а кожна нова версія доходить до них без змін у жодному ендпоінті.

pipe_8e27d40b · version 3 · destinations: webhookd
Плани

Конвеєри на кожному плані, включно з Free.

Кожен план має всі шість кроків, шаблони, Test, API запуску й запуск за посиланням. Платний план дає більше конвеєрів і слотів облікових даних, зберігає більше версій і виконує більше запусків на хвилину.

Free

Достатньо, щоб зібрати, протестувати й запустити перші конвеєри.

$0

  • 5 конвеєрів
  • 5 слотів облікових даних
  • 10 збережених версій на конвеєр
  • 60 запусків на хвилину
Почати

Starter

Для продукту, який виконує конвеєри в продакшні.

$9/ місяць

$86.40 / рік — економія 20%

  • 25 конвеєрів
  • 25 слотів облікових даних
  • 25 збережених версій на конвеєр
  • 600 запусків на хвилину
Обрати Starter

Pro

Більше конвеєрів, більше версій, місце для цілої команди.

$29/ місяць

$278.40 / рік — економія 20%

  • 100 конвеєрів
  • 100 слотів облікових даних
  • 50 збережених версій на конвеєр
  • 3,000 запусків на хвилину
Обрати Pro

Custom

Зобовʼязання щодо обсягів, індивідуальні ліміти й відповідні умови.

Договірна ціна

  • 1,000 конвеєрів
  • 1,000 слотів облікових даних
  • 100 збережених версій на конвеєр
  • 12,000 запусків на хвилину
  • Потрібен командний акаунт
Поговорімо

Запуски рахуються, але не тарифікуються, а консоль і GET /v1/usage показують їхню кількість за місяць. Запуск понад ліміт плану відповідає 429 із зазначенням, скільки чекати, а Test має спільний із запусками ліміт. Запуск у продукті, що посилається на конвеєр, зараховується до використання цього продукту. Версія, яку продукт закріпив, зберігається понад передбачену планом кількість, як і пʼять старіших версій, які продукт запускав протягом останніх 30 днів пізніше за інші.

На кожному плані, включно з Free
  • Усі шість кроків
  • Шаблони для Slack, Discord і Teams
  • Keep only these fields, Drop personal data
  • Тест перед збереженням
  • Версії, які ніколи не змінюються
  • API запуску
  • Запуск за посиланням із Webhooks
  • Ізоляція в межах робочого простору
Запитання

Перш ніж зібрати свій перший конвеєр.

Ні. Він виконує конвеєр і відповідає, що той зробив. Щоб результат було надіслано, викличте API і надішліть його самі або посилайтеся на конвеєр за ідентифікатором із Webhooks, який виконує його перед кожною доставкою. Transforms не є ретранслятором, і в нього немає URL, куди надсилати.
Почати

Зберіть конвеєр і подивіться, що він робить із запитом.

Free включає 5 конвеєрів і 60 запусків на хвилину, з усіма кроками й усіма шаблонами. Спершу спробуйте конвеєр у Playground, без акаунта.