SSP Получение статистики по API

Адрес сервиса статистики: https://adm.spotsnetwork.com/api/v2/

Спецификация

Обращение к сервису выполняется по протоколу JSON-RPC 2.0. Подробнее о спецификации протокола можете прочитать в официальных источниках.

Авторизация пользователя

Для авторизации необходимо вызвать метод "user.auth".

Параметры запроса

НазваниеОписаниеТип
loginЛогин пользователяstring
passwordПароль пользователяstring

Параметры ответа

В ответе будет возвращен массив объектов. Объекты могут содержать следующие поля:

  • "access_token" - токен доступа,
  • "refresh_token" - токен обновления,
  • "access_ttl" - время жизни токена доступа,
  • "refresh_ttl" - время жизни токена обновления.

Пример использования метода

// запрос
curl -X POST -d '{
	"jsonrpc": "2.0", 
	"method":"user.auth", 
	"params":{
    "login": "[email protected]", 
    "password": "111111"}, 
	"id": 1
}' http://localhost/api/
 
// ответ
{
    "jsonrpc":"2.0",
    "result": {
        "access_token":"ey...PK5Q",
        "refresh_token":"eyJ...F3qTw",
        "access_ttl": 1800,
        "refresh_ttl": 5184000
    },
    "id":1
}

Обновление токенов доступа

Для обновления токенов необходимо вызвать метод "user.tokenRefresh".

Refresh token используется для обновления access и refresh токенов. Помимо обновления использование схемы refresh + access токенов ограничивает время, на которое атакующий может получить доступ к сервису, что обеспечивает дополнительную защиту и безопасность.

Параметры запроса

Метод вызывается без параметров. В заголовке необходимо передать значение Refresh token.

Параметры ответа

В ответе будет возвращен массив объектов. Объекты могут содержать следующие поля:

  • "access_token" - токен доступа,
  • "refresh_token" - токен обновления,
  • "access_ttl" - время жизни токена доступа,
  • "refresh_ttl" - время жизни токена обновления.

Пример использования метода

// запрос
// где TOKEN - refresh токен, полученный после авторизации
curl -H "Authorization: Bearer TOKEN" -X POST -d '{
  "jsonrpc": "2.0", 
  "method":"user.tokenRefresh", 
  "id": 1
}' http://localhost/api/

// ответ
{
    "jsonrpc":"2.0",
    "result": {
        "access_token":"ey...PK5Q",
        "refresh_token":"eyJ...F3qTw",
        "access_ttl": 1800,
        "refresh_ttl": 5184000
    },
    "id":1
}

Получение статистики по площадкам пользователя

Для получения статистики необходимо вызвать метод "platform.getStatistics".

Параметры запроса

НазваниеОписаниеТип
filterФильтрobject

Параметры объекта filter

В таблице ниже описаны все возможные фильтры. В зависимости прав пользователя могут быть не доступны некоторые фильтры.

НазваниеОписаниеТип
date_fromДата начала периода. В формате Год-месяц-день. (Обязательное поле).string
date_toДата окончания периода. В формате Год-месяц-день. (Обязательное поле).string
main_groupМассив значений для группировки.
Возможные значения:
- "date_day" - группировка по дням,
- "site" - группировка по площадке,
- "site_id" - группировка по ID площадке, в ответе будет также выведено "site_name" (название этой площадки)
- "placement" - группировка по плейсментам (размещениям), в ответе будет также выведено "placement_name" (название этого размещения).
array of strings
siteСписок площадок, передается URL (домен площадки).array of strings
site_idСписок площадок, передается ID площадки.array of strings
placementСписок ID плейсментов, для отображения всех placement указывается значение: ["all"]array of strings
placement_nameСписок названий плейсментов, для отображения всех placement указывается значение: ["all"]array of strings

Параметры ответа

В ответе будет возвращен массив объектов. Объекты могут содержать следующие поля:

  • "shows" - показы за выбранный период,
  • "clicks" - клики за выбранный период,
  • "income" - доход за выбранный период,
  • "site" - площадка (только при наличии main_group = site),
  • "site_id" - ID площадки (только при наличии main_group = site_id),
  • "site_name" - название площадки (только при наличии main_group = site_id),
  • "placement" - ID плейсмента (только при наличии main_group = placement),
  • "placement_name" - название плейсмента (только при наличии main_group = placement),
  • "date_day" - дата в формате Год-месяц-день (только при наличии main_group = date_day).

Примеры использования метода

Пример запроса с указанием списка URL площадок

//Пример запроса с токеном доступа (токен передается в заголовке)
// где TOKEN - access токен, полученный после авторизации
curl -H 'Authorization: Bearer TOKEN' -X POST -d '
{
    "jsonrpc": "2.0", 
    "method":"platform.getStatistics", 
    "params":{
        "filter": {
            "date_from": "2023-08-23", 
            "date_to": "2023-08-24", 
            "site": ["test1.ru", "test2.ru"], 
            "main_group": ["site"]
        }
    }, 
    "id": 1
}' http://localhost/api/
 
// ответ
{
    "jsonrpc": "2.0",
    "result": [
        {
            "shows": 71385,
            "clicks": 196,
            "income": 3143.356472008,
            "site": "test1.ru"
        },
        {
            "shows": 944,
            "clicks": 2,
            "income": 55.626086398,
            "site": "test2.ru"
        }
    ],
    "id": 1
}

Пример запроса с указанием ID площадки

//Пример запроса с токеном доступа (токен передается в заголовке)
// где TOKEN - access токен, полученный после авторизации
curl -H 'Authorization: Bearer TOKEN' -X POST -d '
{
    "jsonrpc": "2.0", 
    "method":"platform.getStatistics", 
    "params":{
        "filter": {
            "date_from": "2023-08-23", 
            "date_to": "2023-10-24", 
            "site_id": ["750"], 
            "main_group": ["site_id"]
        }
    }, 
    "id": 1
}

// ответ: 
{
    "jsonrpc": "2.0",
    "result": [
        {
            "shows": 257005,
            "clicks": 318,
            "income": 8358.049411245,
            "site_id": 750,
            "site": "test1.ru",
            "site_name": "test1.ru/forum",
            "date_day": "2023-08-23"
        },
        {
            "shows": 268855,
            "clicks": 355,
            "income": 8831.369401154,
            "site_id": 750,
            "site": "test1.ru",
            "site_name": "test1.ru/forum",
            "date_day": "2023-08-24"
        },...
    ],
    "id": 1
}      

Пример запроса по всем площадкам пользователя с группировкой по ID площадок

//Пример запроса с токеном доступа (токен передается в заголовке)
// где TOKEN - access токен, полученный после авторизации
curl -H 'Authorization: Bearer TOKEN' -X POST -d '
{
    "jsonrpc": "2.0", 
    "method":"platform.getStatistics", 
    "params":{
        "filter": {
            "date_from": "2023-08-23", 
            "date_to": "2023-10-24", 
            "main_group": ["site_id"]
        }
    }, 
    "id": 1
}

// ответ:
{
    "jsonrpc": "2.0",
    "result": [
        {
            "shows": 25017,
            "clicks": 24,
            "income": 982.066071864,
            "site_id": 748,
            "site": "test1.ru",
            "site_name": "test1.ru",
            "date_day": "2023-08-23"
        },
        {
            "shows": 50942,
            "clicks": 63,
            "income": 3047.962572134,
            "site_id": 749,
            "site": "test2.ru",
            "site_name": "test2.ru",
            "date_day": "2023-08-23"
        },
        {
            "shows": 257005,
            "clicks": 318,
            "income": 8358.049411245,
            "site_id": 750,
            "site": "test1.ru",
            "site_name": "test1.ru/forum",
            "date_day": "2023-08-23"
        },...
    ],
    "id": 1
}