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
1. grant_type=client_credentials&client_id={client_id}&client_secret={client_secret} 2. 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 }, { ... }, ... ]