Перейти до вмісту
На сайт

Правила

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

Як виконується правило

Section titled “Як виконується правило”
  1. Ваша система надсилає подію, і Railhook її зберігає.

  2. Railhook відбирає ввімкнені правила, у яких eventTypePattern збігається з типом події, і впорядковує їх від найвищого priority.

  3. Дерево умов кожного правила перевіряється на вмісті події. Під правило без умов підпадає кожна подія його типу.

  4. Railhook застосовує дії всіх правил, що спрацювали, потім підбирає підписки й створює доставки.

Дія Що робить
ROUTE Доставляє подію на endpointId незалежно від того, чи є на цей ендпоінт підписка. Ендпоінт, на який подія вже потрапляє через підписку, другої доставки не отримає.
TRANSFORM Застосовує збережену трансформацію transformationId замість трансформації самої підписки. Якщо трансформацію задають кілька правил, що спрацювали, діє останнє.
DROP Зупиняє подію. Перше правило з DROP, що спрацювало, завершує перевірку, і жодної доставки не створюється.
TAG Приймається з об’єктом config. Не впливає ні на те, які доставки створюються, ні на їхній вміст.

Правило може мати кілька дій; їхній порядок задає sortOrder.

Умови утворюють дерево з груп і предикатів.

Вузол Поля
Група, "type": "group" op: AND, OR або NOT; children: групи або предикати.
Предикат, "type": "predicate" field: шлях через крапку в data події, наприклад customer.email або items[0].sku; operator; value; valueType; необов’язковий caseInsensitive.
Оператори
Порівняння EQ, NEQ, GT, GTE, LT, LTE, BETWEEN
Текст CONTAINS, NOT_CONTAINS, STARTS_WITH, ENDS_WITH, REGEX
Множини IN, NOT_IN
Наявність EXISTS, NOT_EXISTS, IS_NULL, NOT_NULL

valueType набуває одного зі значень: STRING, NUMBER, BOOLEAN, ARRAY_STRING, ARRAY_NUMBER, DATE_TIME.

Приклад: спрямування великих замовлень

Section titled “Приклад: спрямування великих замовлень”

Кожна подія order.* із сумою від 1000 у USD або EUR додатково йде на ендпоінт антифрод-перевірки, окрім усього, що вже роблять її підписки.

Terminal window
curl -X POST "$RAILHOOK_URL/api/v1/projects/$PROJECT_ID/rules" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Route high-value orders to fraud detection",
"enabled": true,
"priority": 10,
"eventTypePattern": "order.*",
"conditions": {
"type": "group",
"op": "AND",
"children": [
{ "type": "predicate", "field": "amount", "operator": "GTE", "value": 1000, "valueType": "NUMBER" },
{ "type": "predicate", "field": "currency", "operator": "IN", "value": ["USD","EUR"], "valueType": "ARRAY_STRING" }
]
},
"actions": [
{ "type": "ROUTE", "endpointId": "'"$FRAUD_ENDPOINT_ID"'", "sortOrder": 0 }
]
}'

Увімкнути чи вимкнути правило можна через PATCH /api/v1/projects/{projectId}/rules/{id}/toggle.