REST API

Материал из Wiki
Версия от 11:25, 20 апреля 2017; Admin (обсуждение | вклад) (Новая страница: « == Access-токен для OAuth2 == Для аутентификации и авторизации в API используется протокол OAuth2 по…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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
  },
  {
    ...
  },
...
]