API используется для доступа к партнерской программе PowerPartners.ru сторонними сервисами и приложениями.
Обращение к функциям API осуществляется по протоколу HTTP, посредством POST-запроса на соотвествующий URL.
Базовый URL для обращений к функциям API - http://api.powerpartners.ru/v2.0/
API принимает и возвращает данные в кодировке utf-8.
Параметры передаются в теле запроса в формате JSON,
а поле Content-Type запроса
должно иметь значение application/json
.
Результат выполнения возвращается так же в формате JSON.
Пример обращения к API-функции /auth:
POST /v2.0/auth HTTP/1.1
Host: api.powerpartners.ru
Content-Type: application/json; charset=utf-8
Content-Length: 137
{
"email": "test@test.ru",
"password": "foobar"
}
Формат ответа
При остутствии сетевых ошибок, в ответ на любое обращение к API, сервер всегда отвечает HTTP кодом 200, возвращая JSON-объект, содержащий результаты выполнения запроса.
В случае возникновения ошибок в процессе обработки запроса, в ответном JSON будет присутствовать массив errors. Каждый элемент этого массива содержит поля code и msg, отвечающие соотвественно за код ошибки и её описание. errors всегда является массивом, даже если ошибка всего одна.
Вот пример ответа функции /auth, в процессе выполнения которой возникли ошибки:
{
"errors": [
{
"code": 1,
"msg": "Необходимо указать e-mail адрес"
},
{
"code": 2,
"msg": "Необходимо указать пароль"
}
]
}
Отсутствие в ответе элемента errors свидетельствует о том, что выполнение запроса прошло без ошибок.
Пример использования API на PHP
<?php
$req = [
'email' => 'me@mail.com',
'password' => 'foobar',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_URL, 'http://api.powerpartners.ru/v2.0/auth');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($req));
$res = curl_exec($ch);
$json = json_decode($res, true);
if (count($json) == 0)
die("ERROR - Network error");
if (isset($json['errors'])) {
foreach($json['errors'] as $error)
print("ERROR - " . $error['code'] . " - " . $error['msg'] . PHP_EOL);
die();
}
// Запрос выполнился успешно
print_r($json);
Пример использования API на JavaScript (jQuery)
$.ajax({
type: 'POST',
cache: false,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
url: 'http://api.powerpartners.ru/v2.0/auth',
data: JSON.stringify({
email: 'me@mail.com',
password: 'foobar',
}),
error: function(xhr, ajaxOptions, thrownError) {
console.log('ERROR - Network error');
},
success: function(data) {
if ((data.hasOwnProperty('errors')) && (data.errors.length > 0))
{
for (var i = 0; i < data.errors.length; i++)
console.log('ERROR - ' + data.errors[i].code + ' - ' + data.errors[i].msg);
return false;
}
// Запрос выполнился успешно
console.log(data)
},
});
Авторизация
Авторизация при обращении к функциям API осуществляется посредством ключа доступа, передаваемого параметром token.
Ключи доступа деляется на сессионные (token) и постоянные (API Key).
Сессионные ключи идентифицируют пользователей системы и действуют лишь в пределах одной сесиии работы с API. Сессионные ключи выдаются функцией /auth.
Постоянные ключи формируются в пользовательском интерфейсе партнерской программы и действуют до момента их удаления из системы.
Коды и описания ошибок
Код | Константа | Описание |
---|---|---|
1 | ERROR_EMAIL_REQUIRED | Необходимо указать e-mail |
2 | ERROR_PASSWORD_REQUIRED | Необходимо указать пароль |
3 | ERROR_EMAIL_INVALID | Неверный e-mail адрес |
4 | - | Не используется |
5 | ERROR_CAPTCHA | Неверный reCAPTCHA response |
6 | ERROR_EMAIL_EXISTS | Данный e-mail уже используется |
7 | ERROR_DATABASE | Ошибка базы данных |
8 | ERROR_ACCESS_DENIED | Доступ запрещен |
9 | ERROR_SIGNUP | Ошибка регистрации пользователя |
10 | ERROR_USERNAME_REQUIRED | Необходимо указать имя пользователя |
11 | - | Не используется |
12 | ERROR_NO_ENTITY_SELECTED | Не указана сущность для получения деталировки |
13 | ERROR_ENTITY_NOT_FOUND | Сущность не найдена |
14 | ERROR_INSUFFICIENT_RIGHTS | Недостаточно прав |
15 | ERROR_INSUFFICIENT_DATA | Нет данных |
16 | ERROR_INSUFFICIENT_DATA_NAME | Не указано имя |
17 | ERROR_INSUFFICIENT_DATA_SHOP | Не указан магазин |
18 | ERROR_INVALID_DATETIME_FORMAT | Данные даты/времени переданы в неверном формате, необходимо использовать формат ISO-8601 |