REST API
Содержание
- 1 Access-токен для OAuth2
- 2 Истечение срока действия access-токена
- 3 Получение списков рекламодателей для аккаунта агентства
- 4 Получение рекламных кампаний
- 5 Получение статистики по рекламным кампаниям
- 6 Получение статистики по баннерам указанной рекламной кампании
- 7 Получение статистики по баннерам с указанным доменом
Access-токен для OAuth2
Для аутентификации и авторизации в API используется протокол OAuth2 по схеме Client Credentials Grant.
Эта схема протокола OAuth2 позволяет пользователю взаимодействовать с API напрямую. Для пользователя создаётся клиент с параметрами client_id и client_secret, пользуясь которыми он сам получает access-токен для аутентификации в API.
clinetId и clientSecret вы можете получить оставив нам заявку.
При grant_type=client_credentials метод создаёт новый access-токен по паре client_id, client_secret, получаемой при регистрации OAuth-клиента.
Это реализация схемы Client Credentials Grant протокола OAuth2.
Запрос
POST /token HTTP/1.1
Host: api.hybrid.ru
Content-Type: application/x-www-form-urlencoded
- grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}
- grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}&advertiserId={advertiserId} - сгенерировать токен от имени агенства для рекламного аккаунта.
При grant_type=refresh_token метод создаёт новый access-токен взамен старого, который идентифицируется переданным параметром refresh_token.
В случае, если вызов осуществляется от агентского аккаунта вы можете сгенерировать токен для своего рекламодлателя передав дополнительный параметр в теле запроса (2).
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
{
"access_token": "{access_token}",
"token_type": "bearer",
"scope": "{scope}",
"expires_in": "86400",
"refresh_token": "{refresh_token}"
}
Истечение срока действия access-токена
Каждый полученный access-токен является действительным в течение суток. На это указывает свойство expires_in в ответе на запрос access-токена. Там же указывается refresh_token — специальный токен для получения нового access-токена. За это отвечает схема Refreshing an Access Token в протоколе OAuth2.
Запрос
POST /token HTTP/1.1
Host: api.hybrid.ru
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token={refresh_token}&client_id={client_id}&client_secret={client_secret}
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
{
"access_token": "{new_access_token}",
"token_type": "bearer",
"expires_in": "86400",
"refresh_token": "{refresh_token}"
}
Получение списков рекламодателей для аккаунта агентства
Для получения списка рекламодателей вашего агентства вам необходмо сгенерировать токен из предыдущего заголовка под пунктом 1. Затем с помощью этого токена вам необходимо запросить список ваших рекламодателей:
Запрос
GET /advertiser/get HTTP/1.1
Host: api.hybrid.ru
Authorization: Bearer {access_token}
В ответ вы получите массив объектов c полями:
id - идентификатор рекламодателя
name - название рекламодателя
balance - название рекламодателя
Пример ответа:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
[
{
"Id": "53df8633af55cd57805746f5",
"Name": "Advertiser 1",
"Balance": "1500"
},
{
"Id": "54f74d70870a8e44a023ghj5",
"Name": "Advertiser 2",
"Balance": "100"
},
{
"Id": "5593b2ab9341f9b09819dq45",
"Name": "Advertiser 3",
"Balance": "0"
}
]
После получения списка рекламодателей вы можете запросить токен для отдельного рекламодателя (1) и осуществлять с его помощью все вызовы к api.
Получение рекламных кампаний
GET /campaign/get HTTP/1.1 Host: api.hybrid.ru Authorization: Bearer {access_token} Пример ответа: HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 [ { "Id": "53df8633af55cd57805746f5", "Name": "Campaign 1" }, { "Id": "54f74d70870a8e44a023ghj5", "Name": "Campaign 2" }, { "Id": "5593b2ab9341f9b09819dq45", "Name": "Campaign 3" } ]
Получение статистики по рекламным кампаниям
Запрос
GET /statistic/campaign/{from}/{to}/{ids} HTTP/1.1
Host: api.hybrid.ru
Authorization: Bearer {access_token}
from - нижний порог даты статистики,
to - верхний порог.
В параметр ids вам необходимо передать идентификатор рекламной кампании, если вам необходима статистика по нескольким кампаниям, то в качестве разделителя необходимо использовать запятую.
Дату необхдимо передавать в формате ISO-8601.
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
[
{
"CampaignId": "53df8633af55cd57805746f5",
"Stat": [
{
"ImpressionCount": 61239,
"ClickCount": 310,
"Date": "2015-12-31",
"Cost": 697.827701971,
"SumBets": 1622290.744716147,
"BetCount": 97247,
"WinCount": 68734,
"ConversionCount": 0,
"PostClickConversionsCount": 0,
"PostViewConversionsCount": 0,
"PixelVisitCount": 0,
"ActivePixelVisitCount": 0,
"Ctr": 0.5
}]
}
]
Получение статистики по баннерам указанной рекламной кампании
Запрос
GET /statistic/banners/campaign/{campaignId} HTTP/1.1
Host: api.hybrid.ru
Authorization: Bearer {access_token}
где campaign_id - идентификатор рекламной кампании
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
[
{
"Date": "2016-01-26",
"SumWinningPrice": 0.006,
"SumWinningPriceWithComission": 0.006,
"SumBets": 100,
"Domain": "sport-express.ru",
"BetCount": 1,
"WinCount": 1,
"ImpressionCount": 1,
"ViewCount": 0,
"ClickCount": 0,
"ConversionCount": 0,
"PostClickConversionsCount": 0,
"PostViewConversionsCount": 0,
"PixelVisitCount": 0,
"ActivePixelVisitCount": 0
},
{
...
},
...
]
Получение статистики по баннерам с указанным доменом
Запрос
GET /statistic/banners/domain/{domain} HTTP/1.1
Host: api.hybrid.ru
Authorization: Bearer {access_token}
где domain - интересующий домен (например, sport-express.ru)
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
[
{
"Date": "2014-12-16T00:00:00+03:00",
"SumWinningPrice": 0.000509914,
"SumWinningPriceWithComission": 0.000509914,
"SumBets": 1059,
"Domain": "sport-express.ru",
"BetCount": 2,
"WinCount": 0,
"ImpressionCount": 0,
"ViewCount": 0,
"ClickCount": 0,
"ConversionCount": 0,
"PostClickConversionsCount": 0,
"PostViewConversionsCount": 0,
"PixelVisitCount": 0,
"ActivePixelVisitCount": 0
},
{
...
},
...
]