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