ДОКУМЕНТАЦИЯ API v 1.21
Версии документации
Данные передаются в формате JSON
1. Логин
Запрос POST: https://lk.runcrm.ru/api/v1/access/login
Пример:
curl -H "Content-Type: application/json" -d '{"login":"mylogin", "password":"mypassword"}' https://lk.runcrm.ru/api/v1/access/login
Возвращаемое значение:
{"access_token":string}
2. Оценка стоимости заказа
Запрос POST: https://lk.runcrm.ru/api/v1/order/evaluate
Данные запроса Order
Формат записи данных типа Order:
{"locations":[ location_from, location_to], "shipment":[ shipment1, shipment2, shipment3, …]}
Данные типа Location
Формат записи данных типа Location :
{"address":"Москва, Волоколамское ш, 2", "latitude":55.807476, "longitude":37.505292, "delivery_date":"2016-05-11", "delivery_from": "18:00", "delivery_to":"20:00", "assignments":[ assignment1, assignment2, assignment3, …]}
Данные типа Shipment
Форматы записи данных типа Shipment:
{"price": 10, "weight": 1.535, "length": 0, "value": 10, "unit": 1, "whereabouts": "Москва" }
Данные типа Assignment
Форматы записи данных типа Assignment:
{"price": 10.5 }
Ответ сервера на запрос о тарификации заказа.
В ответ на запрос о тарификации в случае успеха вернется order, который будет содержать:
стоимость price
дату доставки estimate_at
в случае междугородней доставки дополнительно вернётся массив 14 возможных дат и интервалов доставки (внутригородская доставка будет без интервалов)
В случае неудачи сервер вернёт текст ошибки.
Response:
{ "order": { "price": double, "estimate_at": string as date ‘YYYY-MM-DD’, "delivery_intervals": [] } }
Пример:
curl -i -H "Authorization: Bearer {access_token} -H "Content-Type: application/json" -d '{"locations":[{"address":"Москва"}, {"address":"Санкт-Петербург", "assignments":[{"name":"Доставка", "price":500}]}], "shipment":[{"name":"Запонки"}]}' https://lk.runcrm.ru/api/v1/order/evaluate
Response:
"order": { "price": 1051, "estimate_at": "2024-06-12", "delivery_intervals": [ { "deliveryDate": "2024-06-12", "timeFrom": "10:00", "timeTo": "14:00"}, {"deliveryDate": "2024-06-12", "timeFrom": "14:00", "timeTo": "18:00"}, …, {"deliveryDate": "2024-09-11", "timeFrom": "10:00", "timeTo": "14:00"}, {"deliveryDate": "2024-09-11", "timeFrom": "14:00", "timeTo": "18:00" } ] } }
3. Создание заказов
3.1. Добавление заказов
Запрос POST: https://lk.runcrm.ru/api/v1/order/create
Данные запроса
Ограничения
Размер массива ограничен 10 заказами. Для создания большего количества заказов, необходимо использовать несколько запросов последовательно (не одновременно).
Данные типа Order
Формат записи данных типа Order:
{"comment":"test comment", "debug": "TEST", "contact": contact, "locations":[ location_from, location_to ], "shipment":[ shipment1, shipment2, shipment3, …]}
Данные типа Location
Формат записи данных типа Location:
{"address":"Москва, Волоколамское шоссе, 2", "latitude":55.8075271, "longitude":37.5045338, "delivery_date":"2016-05-11", "delivery_from": "18:00", "delivery_to":"20:00", "comment":"test_comment", "external_id":"test id", "contact": contact, "assignments":[assignment1, assignment2, assignment3, …]}
Данные типа Contact
Обязательно должно быть заполнено либо phone, либо note.
Формат записи данных типа Contact:
{"name": "Сергей Абрамов", "phone": "9250000000", "note": "доп.телефон: +7 495 1351553 вн. 356", "type": 2}
Данные типа Assignment
Форматы записи данных типа Assignment:
{"name": "Курьерская доставка", "price": 300, "type": 1, "tax_rate": 20}
Данные типа Shipment
Форматы записи данных типа Shipment:
{"name": null, "article": "test", "freight": "test", "marking_code": "123123", "price": 10, "weight": 0, "length": 0, "value": 0, "unit": 1}
3.2. Получение списка LocationType
Запрос GET: https://lk.runcrm.ru/api/v1/location-type
curl -i -H "Authorization: Bearer {access_token}" https://lk.runcrm.ru/api/v1/location-type
Ответ сервера:
В ответ в случае успеха вернется массив всех доступных типов адреса. В случае неудачи сервер вернёт текст ошибки.
Response:
{ "types": [ { "id": 1, "name": "Квартира", "created_at": 1543848073, "updated_at": 1543848073 }, { "id": 2, "name": "Офис", "created_at": 1536357895, "updated_at": 1536357895 } ] }
3.3. Получение списка ShipmenType
Запрос GET: https://lk.runcrm.ru/api/v1/shipment-type
curl -i -H "Authorization: Bearer {access_token}" https://lk.runcrm.ru/api/v1/shipment-type
Ответ сервера:
В ответ в случае успеха вернется массив всех доступных типов груза. В случае неудачи сервер вернёт текст ошибки.
Response:
{ "types": [ { "id": 1, "name": "Корреспонденция до 0, 3 кг", "created_at": 1608875386, "updated_at": 1621612977 } ] }
3.4. Ответ сервера
Ответ сервера на запрос о создании заказа/заказов.
В ответ на запрос о создании груза в случае успеха вернется массив orders, каждый из элементов которого имеет 3 поля: id заказа в базе, status заказа и стоимость price. В случае неудачи сервер вернёт текст ошибки.
Response:
{ "orders": [{ "id": 11343, "code": "1907251343NEW", "price": 609, "pod": 0, "created_at": "2019-07-25", "estimate_at": "2019-07-25", "status": 20, "status_at": "2019-07-25 13:50:22", "locations": [{ "id": 2565, "address": "Арбат, Москва, Россия", "external_id": null, "status": 20, "trackingLink": "https://runcrm.ru/track/2ce715aaee2e37" }, {…. }] }, {…. }, ...] }
Пример:
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '[{"comment":"Выполнить быстро!", "debug": "test", "contact":{"name":"Контакт заказчика", "phone":"9995551122", "note":"заметка", "type":2}, "locations":[{"address":"Новый Арбат 2, Москва", "delivery_date":"2019-09-11", "delivery_from":"18:00", "delivery_to":"20:00", "comment":"Test", "external_id":"MY14124", "contact":{"name":"офис 1", "phone":", "note":null, "type":1}, "assignments":[{"name":"test owners patience", "price":1000, "tax_rate":0}, {"name":"praise owners humility", "type":2, "price":1000}]}, {"address":"Красная площадь, Москва", "latitude":55.822470175511, "longitude":37.46910618045, "delivery_date":"2019-09-12", "delivery_from":"18:00", "delivery_to":"20:00", "external_id":"555", "contact":{"name":"Клиент 1", "phone":"9995551122", "note":"злой", "type":2}}], "shipment":[{"weight":1, "length":10}, {"name":"Кирпичи", "article":"а111", "freight":"test", "marking_code":"123123", "weight":1, "length":10, "value":100, "unit":2}]}, {"comment":"Hi1", "locations":[{"address":"Волоколамское шоссе, 2, Москва, ", "delivery_date":"2019-09-11", "delivery_from":"18:00", "delivery_to":"20:00", "comment":"Lol1", "external_id":null, "contact":{"name":"офис", "phone":", "note":null, "type":2}}, {"address":"Красная площадь, Москва", "delivery_date":"2019-09-11", "delivery_from":"18:00", "delivery_to":"20:00", "comment":null, "external_id":null, "contact":{"name":"офис", "phone":", "note":null, "type":2}}], "shipment":[{"name":null, "article":null, "price":0, "weight":1, "length":10, "value":0, "unit":1}, {"name":null, "article":null, "price":0, "weight":1, "length":10, "value":0, "unit":1}]}]' https://lk.runcrm.ru/api/v1/order/create
В данном запросе создаются 2 заказа.
Заказ 1:
{ "comment": "Выполнить быстро!", "debug": "test", "contact": { "name": "Контакт заказчика", "phone": "9995551122", "note": "заметка", "type": 2 }, "locations": [ { "address": "Новый Арбат 2, Москва", "delivery_date": "2019-09-11", "delivery_from": "18:00", "delivery_to": "20:00", "comment": "Test", "external_id": "MY14124", "contact": { "name": "офис 1", "phone": ", "note": null, "type": 1 }, "assignments": [ { "name": "test owners patience", "price": 1000, "tax_rate": 0 }, { "name": "praise owners humility", "type": 2, "price": 1000 } ] }, { "address": "Красная площадь, Москва", "latitude": 55.822470175511, "longitude": 37.46910618045, "delivery_date": "2019-09-12", "delivery_from": "18:00", "delivery_to": "20:00", "external_id": "555", "contact": { "name": "Клиент 1", "phone": "9995551122", "note": "злой", "type": 2 } } ], "shipment": [ { "weight": 1, "length": 10 }, { "name": "Кирпичи", "article": "а111", "freight": "test", "weight": 1, "length": 10, "value": 100, "unit": 2 } ] }
Заказ 2:
{ "comment": "Hi1", "locations": [ { "address": "Волоколамское шоссе, 2, Москва, ", "delivery_date": "2019-09-11", "delivery_from": "18:00", "delivery_to": "20:00", "comment": "Lol1", "external_id": null, "contact": { "name": "офис", "phone": ", "note": null, "type": 2 } }, { "address": "Красная площадь, Москва", "delivery_date": "2019-09-11", "delivery_from": "18:00", "delivery_to": "20:00", "comment": null, "external_id": null, "contact": { "name": "офис", "phone": ", "note": null, "type": 2 } } ], "shipment": [ { "name": null, "article": null, "price": 0, "weight": 1, "length": 10, "value": 0, "unit": 1 }, { "name": null, "article": null, "price": 0, "weight": 1, "length": 10, "value": 0, "unit": 1 } ] }
Response:
{ "orders": [ { "id": 11355, "code": "1907251355NEW", "price": 619, "pod": 1000, "created_at": "2019-07-25", "estimate_at": "2019-09-12", "status": 20, "status_at": "2019-07-25 17:41:23", "locations": [ { "id": 2585, "address": "Новый Арбат 2, Москва", "external_id": "MY14124", "status": 20, "income": 0, "payment_type": null, "delivery_date": "2019-09-11" }, { "id": 2586, "address": "Красная площадь, Москва", "external_id": "555", "status": 20, "income": 0, "payment_type": null, "delivery_date": "2019-09-12" } ] }, { "id": 11356, "code": "1907251356NEW", "price": 600, "pod": 0, "created_at": "2019-07-25", "estimate_at": "2019-09-11", "status": 20, "status_at": "2019-07-25 17:41:25", "locations": [ { "id": 2587, "address": "Волоколамское шоссе, 2, Москва, ", "external_id": null, "status": 20, "income": 0, "payment_type": null, "delivery_date": "2019-09-11" }, { "id": 2588, "address": "Красная площадь, Москва", "external_id": null, "status": 20, "income": 0, "payment_type": null, "delivery_date": "2019-09-11" } ] } ] }
Response with error
#1 порядковый номер передаваемого заказа
[DEBUG: test] содержимое параметра debug, если передан
{ "name": "Bad Request", "message": "Минимальное время на адресе забора в заказе #1 [DEBUG: test] уже прошло. Выберите корректное время", "code": 0, "status": 400 }
4. Обновление заказа
Обновление возможно только, если на всех адресах заказа (location) установлен любой из следующих статусов:
location.status = 10 (адрес создан)
location.status = 20 (адрес принят в работу)
location.status = 25 (на адрес назначен курьер)
4.1. Обновление параметров Заказа
Запрос POST: https://lk.runcrm.ru/api/v1/order/update/{id}
id – идентификатор Заказа (Order) в который нужно внести изменения
Данные запроса
Пример
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '{"is_manual_processing":0}' https://lk.runcrm.ru/api/v1/order/update/1
"order": { "id": 1, "code": "1910300001NEW", "price": 379.94, "pod": 3497, "created_at": "2019-10-31", "estimate_at": "2019-12-19", "status": 20, "status_at": "2019-10-31 20:16:26", "is_manual_processing": false }
4.2. Добавление грузов в Заказ
Запрос POST: https://lk.runcrm.ru/api/v1/order/add-shipments/{id}
id – идентификатор Заказа (Order) в который добавить грузы
При этом адресом забора автоматически будет первый адрес в заказе, адресом выдачи второй
Данные запроса
Пример
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '[{"name":"test555", "weight":1, "length":10}, {"name":"test123"}]' https://lk.runcrm.ru/api/v1/order/add-shipments/1
{ "order": { "id": 11118, "code": "1901171118NEW", "price": 1010, "pod": 1000, "created_at": "2019-01-17", "estimate_at": "2019-01-17", "status": 20, "status_at": "2019-01-17 20:07:38" } }
При ошибочном id заказа:
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '[{"name":"test555", "weight":1, "length":10}, {"name":"test123"}]' https://lk.runcrm.ru/api/v1/order/add-shipments/666
{ "name": "Not Found", "message": "Заказ #666 не найден", "code": 0, "status": 404, "type": "yii\\web\\NotFoundHttpException" } Response code: 404 (Not Found); Time: 143ms; Content length: 119 bytes
При ошибочных данных:
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '[{}]' https://lk.runcrm.ru/api/v1/order/add-shipments/1
{ "name": "Bad Request", "message": "Не удалось загрузить товар", "code": 0, "status": 400, "type": "yii\\web\\BadRequestHttpException" } Response code: 400 (Bad Request); Time: 647ms; Content length: 126 bytes
4.3. Замена грузов в Заказе
Запрос POST: https://lk.runcrm.ru/api/v1/order/replace-shipments/{id}
id – идентификатор Заказа (Order) в котором заменить грузы.
При этом адресом забора автоматически будет первый адрес в заказе, адресом выдачи второй.
Ранее созданные грузы будут удалены
Данные запроса
Пример
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '[{"name":"test555", "weight":1, "length":10}, {"name":"test123"}]' https://lk.runcrm.ru/api/v1/order/replace-shipments/1
{ "order": { "id": 11118, "code": "1901171118NEW", "price": 1010, "pod": 1000, "created_at": "2019-01-17", "estimate_at": "2019-01-17", "status": 20, "status_at": "2019-01-17 20:07:38" } }
При ошибочном id заказа:
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '[{"name":"test555", "weight":1, "length":10}, {"name":"test123"}]' https://lk.runcrm.ru/api/v1/order/replace-shipments/666
{ "name": "Not Found", "message": "Заказ #666 не найден", "code": 0, "status": 404, "type": "yii\\web\\NotFoundHttpException" } Response code: 404 (Not Found); Time: 143ms; Content length: 119 bytes
При ошибочных данных:
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '[{}]' https://lk.runcrm.ru/api/v1/order/replace-shipments/1
{ "name": "Bad Request", "message": "Не удалось загрузить товар", "code": 0, "status": 400, "type": "yii\\web\\BadRequestHttpException" } Response code: 400 (Bad Request); Time: 647ms; Content length: 126 bytes
5. Обновления адреса
Обновление возможно только, если на всех адресе (location) установлен любой из следующих статусов:
location.status = 10 (адрес создан)
location.status = 20 (адрес принят в работу)
location.status = 25 (на адрес назначен курьер)
5.1. Обновление параметров Адреса
Запрос POST: https://lk.runcrm.ru/api/v1/location/update/{id}
id – идентификатор Адреса (Location) в который нужно внести изменения
Данные запроса
Пример
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '{"is_manual_processing":0}' https://lk.runcrm.ru/api/v1/location/update/1
"location": { "id": 1, "address": "Сокольники, Москва, Россия", "external_id": ", "status": 25, "income": 0, "payment_type": null, "delivery_date": "2019-01-17", "is_manual_processing": false }
5.2. Добавление поручений в Адрес
Запрос POST: https://lk.runcrm.ru/api/v1/location/add-assignments/{id}
id – идентификатор Адреса (Location) в который добавить поручения
Данные запроса
Пример
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '[{"name":"test owners patience", "price":1000, "tax_rate":0}, {"name":"praise owners humility", "type":2, "price":1000}]' https://lk.runcrm.ru/api/v1/order/add-assignments/1
{ "order": { "id": 11118, "code": "1901171118NEW", "price": 1010, "pod": 1000, "created_at": "2019-01-17", "estimate_at": "2019-01-17", "status": 20, "status_at": "2019-01-17 20:07:38" } }
5.3. Замена поручений в Адресе
Запрос POST: https://lk.runcrm.ru/api/v1/location/replace-assignments/{id}
id – идентификатор Адреса (Location) в котором заменить поручения.
При этом ранее созданные поручения будут удалены.
Данные запроса
Пример
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '[{"name":"test owners patience", "price":1000, "tax_rate":0}, {"name":"praise owners humility", "type":2, "price":1000}]' https://lk.runcrm.ru/api/v1/order/replace-assignments/1
{ "order": { "id": 11118, "code": "1901171118NEW", "price": 1010, "pod": 1000, "created_at": "2019-01-17", "estimate_at": "2019-01-17", "status": 20, "status_at": "2019-01-17 20:07:38" } }
6. Отмена заказа
Запрос
POST:
https://lk.runcrm.ru/api/v1/order/cancel/{id
id – идентификатор Заказа (Order), который нужно отменить
Пример запроса:
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d https://lk.runcrm.ru/api/v1/order/cancel/1
Ответ сервера на запрос об отмене статуса заказа.
В ответ в случае успеха вернется order. В случае неудачи сервер вернёт текст ошибки.
Пример
"order": { "id": 1152, "code": "1902221152NEW", "price": 12.82, "created_at": "2018-10-05", "estimate_at": "2018-07-27", "status": 80, "locations": [ { "id": 1881, "address": "Москва, Волоколамское ш., 2", "external_id": null, "status": 80 }, { "id": 1882, "address": "Москва, Волоколамское шоссе 2", "external_id": "37471449", "status": 80 } ] }
7. Получение одного заказа
Запрос GET: https://lk.runcrm.ru/api/v1/order/{id}
Ответ сервера на запрос о получении одного заказа.
В ответ в случае успеха вернется order, который имеет поля: id заказа в базе, status заказа и price, а также список адресов locations. Каждый адрес содержит строку адреса address, список начисленных на нем услуг services, списки грузов, которые забираются(pickings)/выдаются(deliveries), поручений (assignments). Таким образом каждый груз будет указан дважды - в соответствующем списке на адресе забора и на адресе выдачи. Груз содержит информацию о id, артикуле article, названии name и текущем статусе.
В случае неудачи сервер вернёт текст ошибки.
Пример
curl -i -H "Authorization: Bearer {access_token}" https://lk.runcrm.ru/api/v1/order/21
Response:
{ "order": { "id": 21, "code": "1809041122NEW", "price": 123.45, "created_at": "2018-09-04", "estimate_at": "2019-02-05", "status": 20, "locations": [ { "id": 1813, "address": "Сокольники, Москва, Россия", "external_id": ", "status": 50, "trackingLink": "https://runcrm.ru/track/2ce715aaee2e37", "reason": "Отменено заказчиком", "pickings": [ { "id": 2225, "article": "123", "name": "fds", "status": 50, "statusLabel": "Доставлено", "value": 1050, "weight": 11, "length": 150 } ], "deliveries": [], "assignments": [ { "id": 216, "name": "услуги", "status": 50, "statusLabel": "Завершено"}, ], "services": [ { "description": "наложенный платеж", "price": "1.22"}, ] }, {"id": 1814, "address": "Волоколамское ш. 2", "external_id": "test2", "status": 50, "trackingLink": "https://runcrm.ru/track/2ce715aaee2e37", "pickings": [], "deliveries": [ { "id": 2225, "article": "123", "name": "fds", "status": 50, "statusLabel": "Доставлено", "value": 1050, "weight": 11, "length": 150 } ], "assignments": [], "services": [ { "description": "test", "price": "10.00" } ] } ] } }
8. Поиск заказов
Запрос
GET: https://lk.runcrm.ru/api/v1/order/search{?param1=value1}{¶m2=value2}
curl -i -H "Authorization: Bearer {access_token}" https://lk.runcrm.ru/api/v1/order/search
Тип запроса GET, параметры передаются в строке адреса
Параметры для получения разных форматов ответа:
Пример
Request (GET) :
https://lk.runcrm.ru/api/v1/order/search?created_from=2018-06-08&estimate_to=2018-07-30&external_ids[]=37471449&external_ids[]=qwerty&codes[]=1901031387NEW&codes[]=1902281223NEW
Response:
[ { "id": 1122, "code": "1901031387NEW", "price": 123.45, "created_at": "2018-09-04", "estimate_at": "2019-02-05", "status": 20, "locations": [ { "id": 1813, "address": "Сокольники, Москва, Россия", "external_id": ", "status": 50, "trackingLink": "https://runcrm.ru/track/2ce715aaee2e37", "reason": "Отменено заказчиком", "couriers": [ { "id": 1, "name": "Иванов Сергей", "phone": "9250000000"} ], "pickings": [ { "id": 2225, "article": "123", "name": "fds", "status": 50, "statusLabel": "Доставлено", "value": 0, "weight": 0, "length": 0 } ], "deliveries": [], "assignments": [ { "id": 216, "name": "услуги", "status": 50, "statusLabel": "Завершено"} ], "tracking": [ { "id": 9, "description": "Создана заявка на забор", "created_at": 1605539506 }, { "id": 12, "description": "Назначен курьер", "created_at": 1605542225 }, { "id": 38, "description": "Курьер прибыл на адрес", "created_at": 1605623753 }, { "id": 39, "description": "Задача завершена со статусом «Выполнен» ", "created_at": 1605623763 } ], "services": [ { "description": "наложенный платеж", "price": "1.22"} ] }, {"id": 1814, "address": "Волоколамское ш. 2", "external_id": "test2", "status": 20, "trackingLink": "https://runcrm.ru/track/2ce715aaee2e37", "couriers": [ { "id": 1, "name": "Иванов Сергей", "phone": "9250000000"} ], "pickings": [], "deliveries": [ { "id": 2225, "article": "123", "name": "fds", "status": 50, "statusLabel": "Доставлено", "value": 0, "weight": 0, "length": 0 } ], "assignments": [ { "id": 217, "name": null, "status": 50, "statusLabel": "Завершено"} ], "tracking": [ { "id": 10, "description": "Создана заявка на доставку", "created_at": 1605539506 }, { "id": 14, "description": "Назначен курьер", "created_at": 1605542226 }, { "id": 40, "description": "Курьер прибыл на адрес", "created_at": 1605623778 } ], "services": [ { "description": "test", "price": "10.00" } ] } ] } ]
9. Этикетки в PDF
Запрос
GET: https://lk.runcrm.ru/api/v1/order/pdf-label{?param1=value1}{¶m2=value2}
curl -i -H "Authorization: Bearer {access_token}" https://lk.runcrm.ru/api/v1/order/pdf-label
Тип запроса GET, параметры передаются в строке адреса
Ограничения
Размер запроса ограничен 100 заказами. Для получения большего количества, необходимо использовать несколько запросов последовательно (не одновременно).
Пример
Request ( GET) :
https://lk.runcrm.ru/api/v1/order/search?external_ids[]=37471449&external_ids[]=qwerty&codes[]=1901031387NEW&codes[]=1902281223NEW
Response:
Content-Type: application/pdf Response file saved. > Этикетки-3.pdf Response code: 200 (OK); Time: 3953ms (3 s 953 ms); Content length: 145143 bytes (145.14 kB)
10. Статусы
Статусы заказа
10 – Черновик (заказ создается)
15 – Новый (заказ создан)
20 – Подтвержден (заказ принят в работу)
30 – В пути (адрес забора завершён – заказ забран у отправителя)
50 – Завершён (посещение всех адресов завершено/отменено)
80 – Отменен (посещение всех адресов отменено)
Статусы адреса
10 – Новый (адрес создан)
20 – Подтвержден (адрес принят в работу)
25 – Назначен на курьера (на адрес назначен курьер)
30 – Выполнено частично (часть груза не отгружена / не вручена)
50 – Выполнено (весь груз отгружен / вручен)
60 – Отказ (весь груз не отгружен / не вручен)
80 – Отменен (выезд на адрес отменен)
Статусы груза
10 – Новый (груз находится у отправителя)
15 – Не отгружено (груз был исключен из отгрузки)
20 – Получено (груз был забран курьером)
25 – Отказ (получатель отказался от груза)
40 – К возврату (груз подготовлен к возврату отправителю)
50 – Доставлен (груз вручен получателю)
60 – Возвращен (груз возвращен отправителю)
Статусы поручения
10 – Новое (поручение создано)
30 – Отказ (поручение выполнить не удалось)
50 – Выполнено (поручение выполнено)
11. Вебхуки
Вебхуки отправляются до получение ответа 200 (ОК).
При получении другого ответа вебхук повторяется до получения ответа 200:
Попытка 1: 5 минут
Попытка 2: 15 минут
Попытка 3: 45 минут
Попытка 4: 135 минут
Попытка 5: 405 минут
Попытка 6: 1215 минут
Попытки с 7 по 10: 24 часа каждая
После 10 попыток, если вебхук всё ещё не удалось доставить, он не будет отправляться снова.
Запрос POST: https://lk.runcrm.ru/api/v1/settings/set-webhook
Пример:
curl -H "Content-Type: application/json" -d {"webhook":"http://your.url.com", "webhook_orders": true, "webhook_addresses": true, "webhook_transfer": true}' https://lk.runcrm.ru/api/v1/access/login
Возвращаемое значение:
{ "webhook": "http://…", "webhook_orders": true, "webhook_addresses": true, "webhook_transfer": true }
Данные Webhook
Данные типа Order
Данные типа Location
Данные типа Courier
Данные типа Receipt
Данные типа Assignment
Данные типа Shipment
11.1. Заказ
При создании или обновлении статуса заказа, на webhook url отправляется информация: тип события и данные заказа
в ответе возвращаются
event - тип события.
data объект с данными заказа
Пример
{ "event": "order_updated", "data": { "status": 50, "id": 1122, "code": "1809041122NEW", "price": 518.62, "pod": 712, "status_at": 1617138100, "created_at": 1536090105, "estimate_at": 1577651400, "statusLabel": "Завершен", "locations": [ { "status": 50, "id": 1813, "contact_id": 189896, "address": "Сокольники, Москва, Россия", "address_type_id": 1, "address_place": "55", "delivery_date": 1549486800, "delivery_from": 1549519200, "delivery_to": 1549569600, "external_id": ", "income": 58.62, "payment_type": 2, "is_pickup": true, "is_delivery": false, "comment": ", "statusLabel": "Выполнен", "trackingLink": "https:\/\/runcrm.ru\/\/track\/107d3835b862", "assignments": [ { "id": 260, "name": null, "comment": null, "status": 50, "statusLabel": "Завершено" } ] }, { "status": 50, "id": 1814, "contact_id": 9593, "address": "проспект Мира, корпус 9, Москва, Россия ", "address_type_id": 1, "address_place": null, "delivery_date": 1549486800, "delivery_from": 1549519200, "delivery_to": 1549569600, "external_id": "test2", "income": 593, "payment_type": 2, "is_pickup": false, "is_delivery": true, "comment": ", "statusLabel": "Выполнен", "trackingLink": "https:\/\/runcrm.ru\/\/track\/107f8c419c62", "assignments": [ { "id": 217, "name": null, "comment": null, "status": 50, "statusLabel": "Завершено" }, { "id": 219, "name": "advance", "comment": null, "status": 50, "statusLabel": "Завершено" } ] } ], "shipments": [ { "status": 50, "id": 2225, "type_id": null, "article": "123", "name": "fds", "value": 1050, "weight": 11, "length": 150, "unit": 10, "warehouse_at": null, "marking_code": null, "statusLabel": "Доставлено" }, { "status": 50, "id": 2230, "type_id": null, "article": null, "name": "543", "value": 0, "weight": 0, "length": 0, "unit": 1, "warehouse_at": null, "marking_code": null, "statusLabel": "Доставлено" } ] } }
11.2. Изменение адреса
Вебхук об изменении статуса адреса, изменении даты/времени посещения адреса, прибытии курьера на адрес, формировании чека или возврате отказных грузов:
event - тип события (всегда location_updated).
data объект с данными заказа
Дополнительно:
при присвоении и нахождении в статусе “Назначен на курьера”, добавляется поле courier
при внесении изменений в адресе добавляется поле reason с причиной изменений
при отмечании курьером факта прибытия на адрес и при завершении адреса добавляется поле tracking с массивом записей об этапах доставки
после печати чека в адресе появляется поле receipt с данными о чеке
при присвоении грузам статуса “Возвращено” также формируется вебхук "event": "shipment_updated" с указанием адреса доставки
Пример полного вебхука:
{ "event": "location_updated", "data": { "status": 25, "id": 1265332, "order_id": 747875, "contact_id": 772624, "address": "Москва, улица Герасима Курина, 4 к1, 1, 41 ", "address_type_id": null, "address_place": null, "delivery_date": 1665262800, "delivery_from": 1665298800, "delivery_to": 1665345600, "external_id": "6016664884 (дубль)", "income": 6872.31, "payment_type": null, "is_pickup": false, "is_delivery": true, "comment": "ПОЛУЧАТЕЛЬ: Марина Нецко.", "statusLabel": "Назначен на курьера", "trackingLink": "https:\/\/runcrm.ru\/\/track\/2cf420a3dfb963", "order": { "id": 747875, "code": "221006747875" }, "shipments": [ { "status": 10, "id": 3374376, "type_id": null, "article": "1000052211", "name": "Карабин д\/сумок Babyton коляску МС-002", "value": 98.01, "weight": 0.02, "length": 0, "unit": 1, "warehouse_at": null, "marking_code": null, "statusLabel": "У отправителя" }, { "status": 10, "id": 3374377, "type_id": null, "article": "106072619", "name": "Накидка на автосидение Витоша защит4661", "value": 119, "weight": 0.057, "length": 0, "unit": 1, "warehouse_at": null, "marking_code": null, "statusLabel": "У отправителя " }, { "status ": 10, "id": 3374378, "type_id": null, "article": "1000237649", "name": "Набор д\/кормления CB 3предмета Голубой", "value": 885, "weight": 0.165, "length": 0, "unit": 1, "warehouse_at": null, "marking_code": null, "statusLabel": "У отправителя" } ], "assignments": [ { "id": 185547, "name": "Курьерская доставка", "comment": null, "status": 10, "statusLabel": "Новое" } ], "receipt":{ "fdDatetime":"Nov 24, 2018 4:53:00 PM", "fnSn":"9287440300097369", "fdNum":"8719", "receiptLink":”https://consumer.1-ofd.ru/v1?t=2025…” }, "tracking": [ { "id": 9, "description": "Создана заявка на забор", "created_at": 1605539506 }, { "id": 12, "description": "Назначен курьер", "created_at": 1605542225 }, { "id": 38, "description": "Курьер прибыл на адрес", "created_at": 1605623753 }, { "id": 39, "description": "Задача завершена со статусом «Выполнен» ", "created_at": 1605623763 } ], "courier": { "id": 1, "name": "Иванов Сергей", "phone": "9250000000" } } }