# Получение A/B-тестов (runtime)

Тот же runtime-контур, что и у персонализаций и действий по правилам на сайте, но ответ содержит только A/B-тесты.

Применяется без веб-бандла (мобильное приложение, SSR, бэкенд). Структура запроса совпадает с personalizations/apply; на сайте с бандлом 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

# Тело запроса

Структура запроса идентична personalizations/apply:

{
  "context": {
    "pageTitle": "Корзина",
    "userScreenWidth": 1280,
    "userScreenHeight": 720,
    "customUserScopeParams": {},
    "customPageScopeParams": {},
    "clientDevice": "Smartphone",
    "deviceModel": "iPhone 14 Pro",
    "deviceBrand": "Apple",
    "os": "IOs",
    "osVersion": "17.2",
    "userIp": "192.168.0.10",
    "utmMedium": "cpc",
    "utmSource": "google",
    "utmCampaign": "spring_sale",
    "sessionNumber": 2,
    "sessionId": "8bf06a1d-0321-4be2-89b7-314181511c3d",
    "pagesOpenedSinceFirstEntry": 5,
    "pagesOpenedInThisSession": 3,
    "firstEntryOnUtc": "2026-04-12T08:00:00Z",
    "sessionStartOnUtc": "2026-04-15T18:00:00Z",
    "lastReachedGoals": []
  },
  "customerId": "ab859455-b459-419b-bba0-d73e911a9dc2",
  "appliedAbTestItems": []
}

Поля context — те же, что в методе персонализаций.

appliedAbTestItems — список A/B-тестов, уже применённых на этом пользователе в этой сессии, чтобы система не перебрасывала пользователя между вариантами одного и того же эксперимента.

# Пример ответа

{
  "abTests": [
    {
      "abTestId": "12d4f8b1-1234-4ab6-aa00-1234abcd5678",
      "title": "Цвет кнопки 'Купить'",
      "version": 7,
      "validUntilUtc": "2026-04-30T18:00:00Z",
      "isControl": false,
      "option": {
        "id": "9a82c331-...",
        "title": "Зелёная"
      }
    }
  ],
  "customerId": "ab859455-b459-419b-bba0-d73e911a9dc2"
}

Логика применения на стороне клиента такая же: применить указанные варианты, при достижении бизнес-цели вызвать POST /goals/reach — система привяжет конверсию к активным A/B-тестам.

# 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 @request.json