Правила
Правило зазирає всередину події й вирішує, ще до створення будь-якої доставки, чи додати ендпоінт, змінити payload або зупинити подію.
Як виконується правило
Section titled “Як виконується правило”-
Ваша система надсилає подію, і Railhook її зберігає.
-
Збираються увімкнені правила, чий
eventTypePatternзбігається з типом події, від найвищогоpriority. -
Дерево умов кожного правила перевіряється на payload. Правило без умов збігається з кожною подією свого типу.
-
Застосовуються дії кожного правила, що збіглося, після чого зіставляються підписки й створюються доставки.
| Дія | Що робить |
|---|---|
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 додатково надходить на ендпоінт перевірки шахрайства — на додачу до того, що вже роблять її підписки.
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.