Общие интеграции 30 мин

Описание REST API

Авторизация, методы, примеры работы в API АльфаCRM

Данное описание предназначено для интеграции Альфа CRM с другими информационными сервисами. Мы дополняем этот документ описанием новых методов, моделей и параметров.

Всё взаимодействие через API должно осуществляться по протоколу REST. В качестве формата данных используется JSON. Прочие форматы и протоколы не поддерживаются.

Методы API реализуются в Контроллере (MVC) виде CRUD парадигмы вокруг каждой Модели (MVC). Модель — это отдельная сущность в CRM системе, например Ученик, или Урок, или Филиал под которую реализуется отдельный Контроллер.

Примеры запросов можно посмотреть в приложенных коллекциях Postman

Рекомендации по работе с нашим API:

  1. Создание отдельного пользователя в системе для работы именно с API (особенно актуально, если передаёте информацию с доступами сторонним разработчикам, так как такой доступ всегда можно отключить).
  2. Кеширование токена авторизации (также можно использовать обработку ошибок, чтобы, как только придет ошибка с кодом 401, снова делать запрос на получение токена).
  3. Обработка запросов последовательно:
    • сделайте запрос по API;
    • дождитесь ответа;
    • разберите полученные данные;
    • определитесь, нужно ли отправлять следующий запрос.
  4. Сохранение результатов запросов, чтобы не выгружать одни и те же данные.

Важно! Максимальное количество обращений запросов к API - 5 запросов в секунду для любых методов.

По вопросам работы с нашим API можно написать на почту dev@alfacrm.pro. Ответ может занять до 3-5 рабочих дней.

 

Авторизация


Данные для авторизации можно найти в настройках профиля.

Наведите курсор на правый верхний угол в системе, появится контекстное меню, выберите раздел «Мой профиль».

3333

Скопируйте данные для авторизации из полей «E-mail» (эл. почта) и «Ключ API (v2api)».

4444

Прежде чем обращаться к методам CRUD необходимо авторизоваться и получить временный токен. Этим токеном должен подписываться каждый CRUD запрос заголовке X-ALFACRM-TOKEN. Время жизни токена — 3600 секунд. Для получения токена нужно обратиться методом POST к URI /v2api/auth/login, а в теле запроса передать JSON объект с ключами email и api_key.

Авторизующийся пользователь должен иметь роль с предоставленным доступом к модулю v2api. Иначе запросы к CRUD будут возвращать исключение Access Denied.

Пример из командной строки Linux (утилита curl):
$ curl -i -X 'POST' -d '{"email":"{email}","api_key":"{api_key}"}' 'https://{hostname}/v2api/auth/login'
			
//Пример кода на PHP
$ch      = curl_init();
$data    = ['email' => 'ivan@mail.ru', 'api_key' => '123456'];
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Accept: application/json', 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_URL, 'https://demo.s20.online/v2api/auth/login');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
$code   = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch))
    throw new \Exception('Curl error');
curl_close($ch);
if ($code !== 200)
    throw new \Exception($result['name'] . ' - ' . $result['message']);
$token = $result['token'];
			

Варианты ответа сервера:

  • ОК, код ответа 200, в теле — JSON вида {"token":"GENERATED-TOKEN"}
  • исключение, код ответа 4XX, 5XX, в теле — JSON вида {"name":"Forbidden","message":"Not Authorized","code":0,"status":403}

Значение некоторых параметров


  • {hostname} — клиентский идентификатор, являющийся Hostname в URL для доступа в систему. Например, для https://demo.s20.online это demo.s20.online;
  • {branch} — ID филиала, в который происходит обращение;
  • {email} — e-mail пользователя для авторизации в системе;
  • {api_key} — ключ API для авторизации в системе;
  • {token} — токен, полученный при авторизации (см. блок Авторизация);

Примеры возвращаемых значений в


CRUD


  • Метод Index — возвращает JSON вида {"total":2,"count":2,"page":0,"items":[]}, где total — количество записей всего, count — количество записей в текущей коллекции items, page — текущая страница результатов выдачи. В items содержится вся коллекция записей в виде объектов различных моделей.
  • Методы Create и Update — возвращает JSON вида {"success":true,"errors":[],"model":{"id":1,...}}, где success — результат выполнения запроса (true / false), errors — коллекция ошибок если success == false, model — JSON объект Модели с публичными свойствами.
  • Метод Delete — возвращает JSON вида {"success":true,"errors":[]}, где success — результат выполнения запроса (true / false), errors — коллекция ошибок если success == false.

Branch — сущность филиала

Location — сущность локации

Room— сущность аудиторий

Customer — центральная сущность

Customer-reject — сущность причин отказов клиентов

Lead-reject — сущность причин отказов лидов

Bonus— сущность бонусов

Group — сущность групп

Lesson — сущность урока

CGI — связь клиенты-группы

Subject — предметы обучения

StudyStatus — статусы обучения

LeadStatus — этапы воронки продаж

LeadSource — источники

Pay — платежи

Communication — коммуникации

CustomerTariff — получение списка абонементов клиента

Discount — сущность скидок

Log — получение списка истории изменений

RegularLesson — сущность регулярных уроков

Tariff — сущность абонемента

Task — сущность задач

User — сущность пользователей

Teacher — сущность педагога

 

TestResult — сущность результатов тестирования

Материал был полезен?