# Получение A/B-тестов (runtime)
Тот же runtime-контур, что и у персонализаций, но ответ содержит только A/B-тесты.
Применяется без веб-бандла (мобильное приложение, backend). Контракт запроса совпадает с personalizations/apply, кроме поля списка ID. На сайте с бандлом A/B подключаются через onPersonalization — с ID теста в personalizationId.
# Описание метода
POST https://api.sales-ninja.me/public/{source}/v1.0/ab-tests/apply
Headers:
X-SN-TOKEN: <ваш токен проекта>
Content-Type: application/json
Параметр {source}, правила IP и формат ошибок — те же, что в методе персонализаций.
# Тело запроса
{
"abTestIds": [
"12d4f8b1-1234-4ab6-aa00-1234abcd5678"
],
"customerId": "user-42-from-your-system",
"ip": "192.168.0.10",
"params": {
"utmSource": "google",
"utmCampaign": "spring_sale"
}
}
# Поля запроса
| Поле | Обязательно | Описание |
|---|---|---|
abTestIds | да | Массив UUID A/B-тестов (минимум один) |
customerId | да | Строковый id пользователя на вашей стороне |
ip | нет | IP клиента (см. правила {source}) |
params | нет | Плоский словарь строк, максимум 48 ключей |
Подробнее о customerId, params и {source} — в документации персонализаций.
# Пример ответа
{
"items": [
{
"abTestId": "12d4f8b1-1234-4ab6-aa00-1234abcd5678",
"optionId": "9a82c331-aaaa-bbbb-cccc-dddddddddddd",
"isControl": false,
"version": 7,
"validUntil": "2026-04-30T18:00:00Z",
"subscriptionParams": [
{ "key": "buttonColor", "value": "green" }
]
}
]
}
Пустой items: [] — ни один A/B-тест не сработал по условиям таргетинга.
# Поля элемента items[]
| Поле | Описание |
|---|---|
abTestId | ID A/B-теста |
optionId | ID выбранного варианта |
isControl | Контрольный вариант |
version | Версия теста |
validUntil | Валидность решения (UTC) |
subscriptionParams | Параметры подписки варианта |
# Что делать с ответом
- Примените
subscriptionParamsна стороне клиента. - При достижении бизнес-цели вызовите POST /goals/reach с тем же
customerId.
# cURL
curl -X POST "https://api.sales-ninja.me/public/mobile/v1.0/ab-tests/apply" \
-H "X-SN-TOKEN: $SN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"abTestIds": ["12d4f8b1-1234-4ab6-aa00-1234abcd5678"],
"customerId": "user-42",
"params": { "utmSource": "google" }
}'