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

Правила

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

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

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

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

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

  4. Застосовуються дії кожного правила, що збіглося, після чого зіставляються підписки й створюються доставки.

Дія Що робить
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.