Описание протокола #3022
Все 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 запроса после домена;
-
GET-параметры запроса (пустая строка, если их нет);
-
тело запроса (пустая строка, если это GET-запрос);
-
ключ API (Получить можно в Настройки - API).
Затем полученную строку хашировать алгоритмом sha256.
Пример:
-
POST
-
/v1/clients
-
GET-параметры отсутствуют
-
[{"name":"Client 1","type":0}]
-
abcdef0123456789
После объединения параметров получается строка:
POST:/v1/clients::[{"name":"Client 1","type":0}]:abcdef0123456789
После хэширования этой строки получается подпись:
6ca9f902940dddd790e71f591f09c3ad62a4b6ceaa4ab36a6c8467d2bf238778