Перейти к содержанию

HTTP API Сплиттера#

Для взаимодействия со сплиттером можно использовать его API, который использует RPC протокол на базе HTTP. Для выполнения запроса необходимо сделать POST запрос вида https://<host>/<method_name> с JSON телом. Методы возвращают три возможных кода ответа:

  • 200 в случае успешной обработки запроса
  • 400 в случае некорректных данных в теле запроса
  • 500 в случае серверной ошибки

В теле ответа в случае успешной обработки всегда будет содержаться JSON вида, где в поле result содержится JSON, зависящий от вызываемого метода.

{
  "result": <result>
}

В случае ошибки в теле будет содержать JSON вида

{
    "error": {
        "kind": "<error_kind>",
        "message": "<error_message>"
    }
}

  • error_kind - тип ошибки, повторяющий логику HTTP статусов
  • error_message - описание ошибки

Пример запроса к сплиттеру

Запрос:

curl --request POST \
     --url https://<host>/getFeaturesByTag \
     --header 'X-Source: local'\
     --header 'Content-Type: application/json' \
     --data '{
         "tag": "my_experiment_tag",
         "platform": {
           "id": 3,
           "version": "126.3"
         },
         "participant": {
           "userId": 134523673
         }
     }'

Тело ответа:

{
    "result": {
        "features": [
            {
                "label": "control",
                "experimentLabel": "demo_test",
                "exposureParams": "1:1:8722"
            }
        ]
    }
}

Методы#

getFeaturesByTag#

Возвращает фичи пользователя в экспериментах с переданным тегом

Request body

Parameter Type Description Обязательный параметр
tag string Тэг эксперимента да
platform Platform Фильтр по платформе да
participant Participant Данные о пользователе для определения группы эксперимента да

Response body

Parameter Type Description
features []Feature Список фичей пользователя

Пример

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

  {
    "tag": "my_experiment_tag",
    "platform": {
      "id": 3,
      "version": "126.3"
    },
    "participant": {
      "userId": 134523673
    }
  }

Тело успешного ответа:

    {
        "result": {
            "features": [
                {
                    "label": "control",
                    "experimentLabel": "demo_test",
                    "exposureParams": "1:1:8722"
                }
            ]
        }
    }

exposeManyV2#

Регистрирует участие пользователя в эксперименте

Request body

Parameter Type Description
exposures []Exposure Список экспоужеров

Response body

Тело ответа пустое

Пример тела запроса

  {
    "exposures": [
        {
            "experimentLabel": "demo_test",
            "platform": {
                "id": 0
            },
            "participant": {
                "userId": 64584683
            }
        }
    ]
}

Интерфейсы#

Feature#

Parameter Type Description
experimentLabel string Лейбл эксперимента
label string Лейбл фичи
exposureParams string Deprecated

Exposure#

Parameter Type Description Обязательный параметр
experimentLabel string ID платформы да
platform Platform Платформа участия да
participant Participant Параметры участника да

Platform#

Parameter Type Description Обязательный параметр
id int ID платформы да
version string Версия платформы нет
Platform ID mapping#
Platform ID
Desktop 1
iOS 4
Android 5
Mobile 6

Participant#

Parameter Type Description Обязательный параметр
userId int ID пользователя нет
visitorId string ID устройства или кука нет

Обязательно должен быть заполнен хотя бы один из параметров.