# Управление rule-based действиями
Rule-based действие — это «жёстко прописанная» персонализация: один сценарий с одним набором изменений, без ML и без вариантов. Применяется ко всем пользователям, попавшим под условие показа.
База: https://api.sales-ninja.me/public/api/v1/manage/rule-based-actions
| HTTP | Что делает |
|---|---|
GET / | Список. |
POST /list | Список со сложным фильтром. |
GET /{id} | Полная сущность. |
POST / | Создать. |
PUT /{id} | Обновить (полная замена). |
DELETE /{id} | Удалить. |
# Тело
{
"title": "Промо-баннер на ЧП",
"state": "Working",
"scope": "Web",
"slotFrom": 0,
"slotTo": 100,
"goals": [{"goalId":"299837db-9b51-45a4-996b-844d3fd05bbd"}],
"option": {
"title": "Промо",
"isWorking": true,
"modifications": [
{ "type": "InsertHtml",
"actionJson": {
"selector": ".checkout-header",
"position": "afterend",
"html": "<div class=\"promo\">−10% по промокоду SPRING</div>"
} }
]
},
"displayCondition": {
"operator": "And",
"left": { "fieldCode": "page_url", "operation": "Contains", "value": "/checkout" },
"right": { "fieldCode": "device_kind", "operation": "Equal", "value": "Desktop" }
}
}
# Ключевые отличия
- Один-единственный
option(а не массивvariants[]). Это и есть применяемое изменение. - ML-параметров нет: rule-based не учится, он либо применяется (если условие соблюдено), либо нет.
displayCondition.target=Default.
# Поля option
| Поле | Описание |
|---|---|
id | UUID существующего option; null — будет создан. |
title | Название (виден только в админке). |
isWorking | Активен ли. |
customScript | Произвольный JS (только scope: "Web"). |
redirectTo | Куда редиректить (только scope: "Web"). |
modifications | Список модификаций — структура та же, что у персонализаций. |
# Ответ
{
"ruleBasedActionId": "8f3a1e4b-…"
}
# Интеграционные модификации
Внутри option.modifications[] можно вызывать API внешних систем — см.
JS-действия в персонализациях (формат тот же).