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 устройства или кука | нет |
Обязательно должен быть заполнен хотя бы один из параметров.