Описание протокола
Все POST и PATCH запросы должны содержать тело в формате JSON и иметь заголовок Content-Type: application/json.
Точно также, все ответы на любые запросы будут приходить в формате JSON.
Точка входа API
https://api.megacrm.ru/v1/
Если запрос был успешно выполнен, код статуса HTTP будет равен 200.
В случае ошибок код статуса HTTP может принимать перечисленные значения:
400 |
Запрос сформирован некорректно |
403 |
Доступ запрещён. Некорректные параметры авторизации или ключ API был отключен |
404 |
Запрошенный объект не найден |
500 |
Ошибка на сервере API. Следует обратиться в техническую поддержку |
Успешный ответ на запрос содержит параметр «result», в котором находятся запрошенные данные или результат запрошенного действия.
Если сервер API не смог выполнить запрос, ответ может содержать параметр «errors», который представляет из себя список объектов ошибок:
Название параметра |
Тип |
Описание |
code |
Натуральное число |
Код ошибки |
message |
Строка |
Сообщение с описанием ошибки |
path |
Строка |
Путь к параметру запроса, в котором возникла ошибка. Может отсутствовать, если ошибка не связана с конкретным параметром |
errors |
Массив объектов ошибок |
Подробности ошибки. Может отсутствовать, если ошибка не подразумевает наличие подробностей. |
Возможные коды ошибок:
Код |
Описание |
101 |
Некорректный формат запроса |
102 |
Доступ запрещён |
200 |
Ошибка в некоторых параметрах запроса |
201 |
Не указан обязательный параметр |
202 |
Значение параметра имеет некорректное значение |
203 |
Значение параметра превысило допустимую длину |
204 |
Список содержит очень большое число элементов |
205 |
Объект, указанный в параметре, не найден |
301 |
Достигнуты тарифные лимиты |
Авторизация
Для доступа к данными системы необходима авторизация. Для авторизации в каждый запрос нужно добавить два заголовка:
-
X-MegaCrm-ApiAccount
— ID аккаунта MegaCRM. -
X-MegaCrm-ApiSignature
— Подпись.
Чтобы сформировать подпись, нужно соединить в единую строку следующие данные, разделяя их двоеточием:
-
Метод HTTP-запроса:
GET
,POST
,PATCH
. -
Путь из URL запроса.
Например, если URL запросаhttp://api.megacrm.ru/v1/clients
, то путь будет иметь вид/v1/clients
. -
Query-параметры запроса.
Например, если URL запросаhttp://api.megacrm.ru/v1/clients?page=2&category_id=100&doer_id=200
, то строка query-параметров будет иметь видpage=2&category_id=100&doer_id=200
.
Экранирование значений в параметрах не требуется. Если в запросе нет query-параметров, указывается пустая строка.
Если запросы POST и PATCH выполняются с query-параметрами, эти параметры также должны быть указаны. -
Тело запроса.
Если запрос не имеет тела или это запросGET
, указывается пустая строка. -
Ключ API.
Ключ можно получить в меню "Настройки / API" в интерфейсе MegaCRM.
Полученную строку нужно хэшировать алгоритмом SHA-256. В результате получится строка подписи, которую нужно передать в заголовке X-MegaCrm-ApiSignature
.
Примеры вычисления подписи:
Запрос GET
-
Метод HTTP-запроса:
GET
. -
Путь из URL запроса:
/v1/clients
. -
Query-параметры запроса:
page=2&category_id=100&query=Печкин
. -
Тело запроса: отсутствует.
-
Ключ API:
abcdef0123456789
.
Соединяем данные в строку, разделяя двоеточием:
GET:/v1/clients:page=2&category_id=100&query=Печкин::abcdef0123456789
Хэшируем эту строку алгоритмом SHA-256:
721f446dd0124ed88503d36bcb400ca184f4b1ef4c77906f1a33c73aef5d06d1
Запрос POST
-
Метод HTTP-запроса:
POST
. -
Путь из URL запроса:
/v1/clients
. -
Query-параметры запроса: отсутствуют.
-
Тело запроса:
[{"name":"Client 1","type":0}]
. -
Ключ API:
abcdef0123456789
.
Соединяем данные в строку, разделяя двоеточием:
POST:/v1/clients::[{"name":"Client 1","type":0}]:abcdef0123456789
Хэшируем эту строку алгоритмом SHA-256:
6ca9f902940dddd790e71f591f09c3ad62a4b6ceaa4ab36a6c8467d2bf238778