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