# Получение 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 Параметры подписки варианта

# Что делать с ответом

  1. Примените subscriptionParams на стороне клиента.
  2. При достижении бизнес-цели вызовите 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" }
  }'