Общая информация

Терминология

Узел - конечный URL, к которому отправляются запросы. Например - https://service.leadhit.ru/api/v1/orders/.

Методы - методы, которые принимают узлы, являются обычными питоновскими функциями.

API

API располагается по адресу https://service.leadhit.ru/api/v1/

Основной протокол - JSON-RPC 2.0

Content-type - application/json

Карта методов

У каждого узла API есть специальная страница - карта методов.

На этой странице можно увидеть все существующие методы данного узла, а также дополнительную информацию о них.

Ее можно найти, если выполнить GET-запрос (или зайти через браузер), добавив к интересующему вас URL узла в конце /map.

Пример карты методов:

https://service.leadhit.ru/api/v1/orders/map

Авторизация

Чтобы пользоваться API, сначала необходимо получить API key. Обратитесь к своему менеджеру за ним.

После того, как вы получили ключ, вам необходимо передать его в заголовке POST-запроса к API. Он должен иметь название API-KEY (или api-key).

В случае, если API не получило авторизационный ключ в заголовке, вы получите ответ 403.

Базовый запрос

Общение с API происходит по протоколу JSON-RPC 2.0, через POST-запросы.

Content-type должен быть application/json.

Не забывайте об авторизации (заголовок API-KEY).

Помимо этого, каждый запрос к API должен содержать в себе три обязательных параметра - метод, версия JSON-RPC, id запроса. JSON-RPC всегда равен 2.0, а id может быть любым, такой же id вернется в ответе на запрос:

"method": "example_method"

"jsonrpc": "2.0"

"id": 0

Помимо обязательных параметров, методы принимают аргументы, котороые передаются через "params".

Могут быть либо списком, либо словарем.

В качестве примера - метод set_order_status.

Запрос:

{

 "method": "set_order_status",

 "params": {

 "order_id": "f168148717",

 "status": "paid"

 }, 

 "jsonrpc": "2.0"

 "id": 0

}

Ответ:

{

 "jsonrpc": "2.0",

 "result": {

 "status": "ok",

 "message": "Order status changed"

 },

 "id": 0

}

Ошибки

В случае, если вы не авторизованы, сервер вернет статус 403.

Если вы ошиблись в параметре, или произошла какая-то другая ошибка, сервер вернет статус 200, а в теле ответа будет содержаться ключ error, в котором описана причина ошибки.

{

 "jsonrpc": "2.0",

 "id": 0,

 "error": {

 "message": "Server error",

 "code": -32000,

 "data": {

 "message": "Possible statuses: paid, submitted",

 "args": [

 "Possible statuses: paid, submitted"

 ],

 "type": "ValidationError"

 }

 }

}

