ДОКУМЕНТАЦИЯ API v 1.17
Данные передаются в формате JSON
Список изменений
Версии документации
Версия |
Дата |
Описание изменений |
|
1.17 |
22.05.2024 |
Добавлены интервалы и сроки при междугородней доставке в метод Оценки стоимости |
|
1.16 |
03.05.2024 |
Добавлен способ оплаты в адрес в ответе при поиске и в вебхуках |
|
1.15 |
28.02.2024 |
При создании поручений добавлены поля is_required_on_cancel для обязательности при отказе и required_min_sum для указания минимальной суммы выкупа |
|
1.14 |
13.11.2023 |
Добавлено поле Location.pin для передачи пинкода курьеру для забора груза и Location.otp для предзаполнения кодов подтверждения получателем при выдаче |
|
1.13 |
04.09.2023 |
Добавлено поле Order.is_opening_package_allowed и Order.is_is_fitting_allowed для разрешения/запрета возможности вскрытия заводской упаковки, а также проверки/примерки |
|
1.12 |
29.06.2023 |
Добавлено поле Shipment.is_excise для возможности передавать признак подакцизного товара для печати в чеке |
|
1.11 |
06.06.2023 |
Добавлено поле Order.is_partial_delivering для разрешения/запрета возможности частичной доставки |
|
1.10 |
29.05.2023 |
Добавлены поля location.reason при получении ответа в методах получения и поиска заказов Удалён метод Получение всех заказов (запрос GET:https://my.courierist.com/api/v1/order/get-all) |
|
1.9 |
02.03.2023 |
Добавлены поля в Shipment для печати данных поставщика в чеке |
|
1.8 |
02.02.2023 |
Добавлен метод настройки и проверки вебхука |
|
1.7 |
29.12.2022 |
Добавлен метод получения этикеток в PDF |
|
1.6 |
13.12.2022 |
Добавлено поле Shipment.barcode для передачи штрихкодов товаров в формате EAN-13 |
|
1.5 |
26.08.2022 |
Добавлен поиск по массиву order.id в метод Поиск заказов |
|
1.4 |
15.10.2021 |
Добавлено поле Добавлено поле Shipment.type_id, и метод получения доступных Типов груза. Добавлено поле Contact.email |
|
1.3.1 |
22.04.2021 |
В Создании Заказов и Поиске Заказов в ответе добавлено поле trackingLink |
|
1.3 |
16.11.2020 |
В Поиске Заказов в ответе location.history заменен на location.tracking |
|
1.2.7 |
16.08.2020 |
Добавлено поле Shipment.legal_vat для добавления товаров, не облагающихся НДС, у компаний на ОСНО. |
|
1.2.6 |
14.02.2020 |
Добавлено поле Shipment.marking_code, Shipment.marking_type |
|
1.2.5 |
29.12.2019 |
Добавлено поле Assignment.comment |
|
1.2.4 |
18.12.2019 |
Метод обновления параметра is_manual_processing в Location по номеру заказа Order.id |
|
1.2.3 |
03.12.2019 |
Добавлена возможность указывать в заказе контактное лицо для решения нестандартных ситуаций по заказу. |
|
1.2.2 |
27.10.2019 |
Метод обновления параметров Location |
|
1.2.1 |
23.10.2019 |
В ответ метода Поиск заказов добавлена информация о назначенных курьерах couriers |
|
1.2 |
10.09.2019 |
Добавлена возможность добавлять/заменять грузы в заказе и добавлять/заменять поручения в адресе, если ни один из адресов заказа не имеет финального статуса |
|
1.1.4 |
11.07.2019 |
Добавлено поле Assignment.tax_rate для указания ставки НДС |
|
1.1.3 |
24.06.2019 |
1. Вес Shipment.weight теперь принимает 3 знака после запятой вместо 2 ранее. 2. Добавлено поле Shipment.tax_unit_type, определяющее формулу расчета наложенного платежа. 3. Изменена проверка корректности Shipment.price и Shipment.tax_item_price в зависимости от Shipment.tax_unit_type |
|
1.1.2 |
28.02.2019 |
Добавлены поля Location address_details, address_type_id, address_place и метод получения списка LocationType В Поиск заказов добавлена возможность искать по массиву “codes” Добавлена возможность вносить Location.prepayment, предоплаченная сумма наложенного платежа |
|
1.1.1 |
22.02.2019 |
Исправлена ошибка в ответ на отмену заказа. Теперь возвращается и массив location (раньше не возвращался). |
|
1.1.0 |
01.02.2019 |
Внесена зависимость наложенного платежа от количества в shipment: наложенный платеж - сумма за всё количество (unit), ₽, 2 знака после запятой, разделитель - точка. Должно точно соответствовать price = tax_item_price * unit |
|
1.0.0 |
01.06.2017 |
Первая версия протокола |
1. Логин
Запрос POST:https://lk.runcrm.ru/api/v1/access/login
Параметр |
Тип |
Описание |
Формат |
login |
string |
Логин |
"login":"mylogin" |
password |
string |
Пароль |
"password":"mypass" |
Пример:
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
Параметр |
Тип |
Описание |
Формат |
locations |
array of <Location> |
массив из 2 адресов посещения - забор и доставка |
"locations":[location_from, location_to] |
shipment |
array of <Shipment> |
массив грузов к заказу |
"shipment":[shipment1, shipment2, shipment3, …] |
Формат записи данных типа Order:
{"locations":[location_from,location_to], "shipment":[shipment1,shipment2,shipment3, …]}
Данные типа Location
Параметр |
Тип |
Описание |
Формат |
address |
string |
адрес (обязательно с указанием населенного пункта) (обязательное поле) |
"address":"Москва, Волоколамское ш, 2" |
latitude |
double |
широта (если пусто - определяется по адресу) |
"latitude":55.807476 |
longitude |
double |
долгота (если пусто - определяется по адресу) |
"longitude":37.505292 |
delivery_date |
string as date ‘YYYY-MM-DD’ |
дата доставки (по-умолчанию сегодняшняя) |
"delivery_date":"2016-05-11" |
delivery_from |
string as time ‘HH:MM’ |
время доставки “от” (если не передавать, то по-умолчанию подставляется текущее время, но не ранее 10:00) |
"delivery_from":"18:00" |
delivery_to |
string as time ‘HH:MM’ |
время доставки “до” (если не передавать, то по-умолчанию подставляется 23:00) |
"delivery_to":"20:00" |
assignments |
array of <Assignment> |
массив поручений |
"assignments":[assignment1, assignment2, assignment3, …] |
Формат записи данных типа 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
Параметр |
Тип |
Описание |
Формат |
price |
double |
наложенный платеж в рублях, возможно 2 знака после запятой, разделитель - точка |
"price":1.55 |
weight |
double |
вес в кг, возможно 3 знака после запятой, разделитель - точка |
"weight":1.567 |
length |
double |
габариты в см (длина + высота + ширина), возможно 2 знака после запятой, разделитель - точка |
"length":100.50 |
value |
double |
ценность в рублях, возможно 2 знака после запятой, разделитель - точка |
"value":1.15 |
unit |
integer |
количество упаковок, шт. (по-умолчанию 1) только целые значения |
"unit":1 |
type_id |
integer |
id Типа груза |
"type_id": 1 |
Форматы записи данных типа Shipment:
{"price":10,"weight":1.535,"length":0,"value":10,"unit":1,"whereabouts": "Москва"}
Данные типа Assignment
Параметр |
Тип |
Описание |
Формат |
price |
double |
наложенный платеж, ₽ |
"price":10.00 |
type |
integer |
тип поручения |
"type":N N=1 - наложенный платеж (по умолчанию) N=2 - расход |
Форматы записи данных типа Assignment:
{"price":10.50}
Ответ сервера на запрос о тарификации заказа.
В ответ на запрос о тарификации в случае успеха вернется 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
Данные запроса
Параметр |
Тип |
Описание |
Формат |
array of <Order> |
Массив заказов |
[order1,order2,…,orderN] |
Данные типа Order
Параметр |
Тип |
Описание |
Формат |
comment |
string |
Комментарий к заказу (данный комментарий видят логисты, но не видят курьеры) |
"comment":"прислать данные курьера для доверенности" |
is_partial_delivering |
boolean |
Если true (или 1), то частичная доставка в заказе допустима. Если false (или 0), то частичная доставка в заказе недопустима. Если null или не передано, то применяются условия по умолчанию, настроенные службой доставки. |
"is_partial_delivering":false "is_partial_delivering":1 |
is_opening_package_allowed |
boolean |
Если true (или 1), то вскрытие заводской упаковки в заказе допустимо. Если false (или 0), то вскрытие заводской упаковки в заказе недопустимо. |
"is_opening_package_allowed": false "is_opening_package_allowed":1 |
is_is_fitting_allowed |
boolean |
Если true (или 1), то примерка/проверка грузов в заказе допустима. Если false (или 0), то примерка/проверка грузов в заказе недопустимо. Если null или не передано, то применяются условия по умолчанию, настроенные службой доставки. |
"is_fitting_allowed": false "is_fitting_allowed":1 |
contact |
<Contact> |
Контактное лицо для решения нестандартных ситуаций по заказу |
"contact": |
locations |
array of <Location> |
Массив из 2 адресов посещения - забор и доставка |
"locations":[location_from, location_to] |
shipment |
array of <Shipment> |
Массив грузов к заказу |
"shipment":[, shipment2,..., shipmentN] |
debug |
string |
Тестовая строка, будет возвращена в тексте сообщения о ошибке в виде [DEBUG: test] |
"debug": "test" |
Формат записи данных типа Order:
{"comment":"test comment","debug": "TEST", "contact":contact,"locations":[location_from,location_to], "shipment":[shipment1,shipment2,shipment3, …]}
Данные типа Location
Параметр |
Тип |
Описание |
Формат |
address |
string |
Адрес (обязательно с указанием населенного пункта) (обязательное поле) |
"address":"Москва, Волоколамское ш, 2" |
address_details |
string |
Подъезд, домофон, этаж и прочие детали адреса |
"address_details":"1 подъезд, 3-й этаж, домофон 36К765" |
address_type_id |
int |
Тип адреса, id записи типа LocationType |
"address_type_id": 1 |
address_place |
string |
Номер или название |
"address_place":"14"или "address_place":"ТЦ Океан" |
latitude |
double |
Широта |
"latitude":55.807476 |
longitude |
double |
Долгота |
"longitude":37.505292 |
delivery_date |
string as date ‘YYYY-MM-DD’ |
Дата посещения адреса (если не передавать, то по-умолчанию до окончания рабочего времени службы доставки подставляется текущий день, после – следующий рабочий день) |
"delivery_date":"2016-05-11" |
delivery_from |
string as time ‘HH:MM’ |
Начало интервала прибытия на адрес - “с” (если не передавать, то по-умолчанию подставляется текущее время, но не ранее начала рабочего времени службы доставки) |
"delivery_from":"18:00" |
delivery_to |
string as time ‘HH:MM’ |
Конец интервала прибытия на адрес - “до” (если не предавать, то по-умолчанию подставляется окончание рабочего времени службы доставки ) |
"delivery_to":"20:00" |
comment |
string |
Комментарий для курьера на адресе (данный комментарий видят курьеры, но не видят логисты) |
"comment":"подписать документы и забрать один экземпляр” |
external_id |
string |
Внутренний номер заказа у заказчика |
"external_id":"test id" |
pin |
string |
Пин код для курьера на адресе забора, 4-6 символов |
"pin":"1234" |
otp |
string or string[] |
Предзаполнение кодов для подтверждения доставки вместо отправки одноразовых, 4-6 цифр |
"otp": "12312" или "otp": ["7777","333111"] |
prepayment |
double |
Сумма предоплаты за наложенный платеж, 2 знака после запятой, разделитель - точка. |
"prepayment": 300.78 |
contact |
<Contact> |
Контактное лицо на адресе |
"contact":contact |
assignments |
array of <Assignment> |
Массив поручений |
"assignments":[assignment1, assignment2, ..., assignmentN] |
Формат записи данных типа 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
Параметр |
Тип |
Описание |
Формат |
name |
string |
Имя (обязательное поле) |
"name":"test name" |
phone |
string |
Мобильный телефон – только 10 символов, обязательно начинается с “9” |
"phone":"9259997777" |
string |
Валидный email адрес |
"email":"test@gmail.com" |
|
note |
string |
Примечание или телефон в любом формате |
"note":"test note" |
type |
integer |
Тип контактного лица |
"type":N N=1 - сотрудник заказчика N=2 - другое |
Обязательно должно быть заполнено либо phone, либо note.
Формат записи данных типа Contact:
{"name":"Сергей Абрамов","phone":"9259997777","note":"доп.телефон: +7 495 1351553 вн. 356","type":2}
Данные типа Assignment
Параметр |
Тип |
Описание |
Формат |
name |
string |
Название |
"name":"Курьерская доставка" |
comment |
string |
Комментарий для указания условий выполнения поручения |
"comment":"Оплачивается только при выкупе более 2500 руб" |
price |
double |
Наложенный платеж – оплата за выполнение поручения, ₽ |
"price":10.00 |
type |
integer |
Тип поручения; если не указан - используется значение по-умолчанию |
"type":N N=1 - получить деньги (по умолчанию) N=2 - отдать деньги |
required_min_sum |
double |
Поручение обязательно, если сумма выкупа при доставке составила менее указанной суммы |
"required_min_sum": 2500 |
is_required_on_cancel |
boolean |
Поручение обязательно, если от всех грузов отказались |
"is_required_on_cancel": 1 |
tax_rate |
double |
Ставка НДС:
|
"tax_rate":0 "tax_rate":10 "tax_rate":20 "tax_rate":null |
Форматы записи данных типа Assignment:
{"name":"Курьерская доставка","price":300,"type":1,"tax_rate":20}
Данные типа Shipment
Параметр |
Тип |
Описание |
Формат |
name |
string |
Название |
"name":"test name" |
article |
string |
Артикул |
"article":"test" |
freight |
string |
Грузоместо |
"freight":"test" |
barcode |
string |
Штрихкод товара в формате CODE-128B |
“barcode”:9780201379624 |
marking_code |
string |
Код маркировки товаров для https://честныйзнак.рф в формате: “01”GTIN”21”SERIAL. Возможно добавление криптохвоста. Максимальная длина – 255 символов. |
“marking_code”:”010461003706597021SqdiqzCEdOtPN” |
marking_type |
int |
Тип кода маркировки для https://честныйзнак.рф/upload/iblock/d04/formirovanie-tega-1162-na-KKT.pdf, на текущий момент поддерживается тип описанный в 6 пункте |
“marking_type”:6 |
is_excise |
boolean |
Присваивается true (или 1), если товар относится к подакцизным товарам |
"is_excise":true "is_excise":1 |
price |
double |
Наложенный платеж - сумма за всё количество (unit), ₽, 2 знака после запятой, разделитель - точка. В зависимости от tax_unit_type должно точно соответствовать: tax_item_price = price / unit или tax_item_price = price / weight |
"price":1.55 |
weight |
double |
Вес за всё количество (unit) данной позиции, кг, 3 знака после запятой, разделитель - точка |
"weight":1.567 |
length |
double |
Суммарные габариты всего количества (unit) данной позиции, см (высота+длина+ширина), 2 знака после запятой, разделитель - точка |
"length":178 |
value |
double |
Ценность за всё количество (unit) данной позиции, ₽, 2 знака после запятой, разделитель - точка |
"value":100.76 |
unit |
integer |
Количество единиц груза, шт. |
|
type_id |
integer |
id Типа груза |
"type_id":1 |
tax_item_price |
double |
Цена за одну единицу товара с учетом скидки, 2 знака после запятой, разделитель - точка. В зависимости от tax_unit_type должно точно соответствовать: tax_item_price = price / unit или tax_item_price = price / weight |
"tax_item_price":1.45 |
tax_rate |
double |
Ставка НДС:
|
"tax_rate":0 "tax_rate":10 "tax_rate":20 "tax_rate":null |
tax_unit_type |
int |
Тип единиц измерения товара. Если не указан - используется значение по-умолчанию |
Значения: Количество (поле unit) = 1; Килограммы (поле weight) = 2; |
legal_vat |
boolean |
Если false (или 0), то tax_rate игнорируется. Используется компаниями на ОСНО для товаров, которые не облагаются НДС |
"legal_vat":false "legal_vat":0 |
legal_vat |
boolean |
Если false (или 0), то tax_rate игнорируется. Используется компаниями на ОСНО для товаров, которые не облагаются НДС. |
"legal_vat":false "legal_vat":0 |
legal_inn |
string |
ИНН поставщика для отображения в фискальном чеке - должен быть корректным. Если не указано, используются базовые данные клиента, настроенные службой доставки |
“legal_inn”:”7714926745” |
legal_name |
string |
Наименование поставщика для отображения в фискальном чеке. Если не указано, используются базовые данные клиента, настроенные службой доставки |
string“legal_name”:”ООО Ромашка” |
legal_phone |
string |
Телефон поставщика для отображения в фискальном чеке. Если не указано, используются базовые данные клиента, настроенные службой доставки |
“legal_phone”:”+7 495 135-15-51” |
Форматы записи данных типа 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) в который нужно внести изменения
Данные запроса
Параметр |
Тип |
Описание |
Формат |
is_manual_processing |
boolean |
Если true (или 1), то выполнение возможно только через диспетчера - т.е. курьер не может самостоятельно отметить забор и доставку груза по заказу. Обновляет одноименные параметры в Location этого заказа. |
"is_manual_processing":false "is_manual_processing":0 |
Пример
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '{"is_manual_processing":0}'
"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) в который добавить грузы
При этом адресом забора автоматически будет первый адрес в заказе, адресом выдачи второй
Данные запроса
Параметр |
Тип |
Описание |
Формат |
array of <Shipment> |
массив грузов |
[shipment1,shipment2,…,shipmentN] |
Пример
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) в котором заменить грузы.
При этом адресом забора автоматически будет первый адрес в заказе, адресом выдачи второй.
Ранее созданные грузы будут удалены
Данные запроса
Параметр |
Тип |
Описание |
Формат |
array of <Shipment> |
массив грузов |
[shipment1,shipment2,…,shipmentN] |
Пример
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) в который нужно внести изменения
Данные запроса
Параметр |
Тип |
Описание |
Формат |
is_manual_processing |
boolean |
Если true, то выполнение возможно только через диспетчера. |
"is_manual_processing":false |
Пример
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '{"is_manual_processing":0}'
"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) в который добавить поручения
Данные запроса
Параметр |
Тип |
Описание |
Формат |
array of <Assignment> |
массив заказов |
[assignment1,assignment2,assignment3, …] |
Пример
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) в котором заменить поручения.
При этом ранее созданные поручения будут удалены.
Данные запроса
Параметр |
Тип |
Описание |
Формат |
array of <Assignment> |
массив заказов |
[assignment1,assignment2,assignment3, …] |
Пример
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}
Пример запроса:
curl -i -H "Authorization: Bearer {access_token}" -H "Content-Type: application/json" -d '' https://lk.runcrm.ru/api/v1/order/cancel/1152
Ответ сервера на запрос об отмене статуса заказа.
В ответ в случае успеха вернется 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}
curl -i -H "Authorization: Bearer {access_token}" https://lk.runcrm.ru/api/v1/order/21
Ответ сервера на запрос о получении одного заказа.
В ответ в случае успеха вернется order, который имеет поля: id заказа в базе, status заказа и price, а также список адресов locations. Каждый адрес содержит строку адреса address, список начисленных на нем услуг services, списки грузов, которые забираются(pickings)/выдаются(deliveries), поручений (assignments). Таким образом каждый груз будет указан дважды - в соответствующем списке на адресе забора и на адресе выдачи. Груз содержит информацию о id, артикуле article, названии name и текущем статусе.
В случае неудачи сервер вернёт текст ошибки.
Пример
Response:
{ "order": { "id": 1122, "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, параметры передаются в строке адреса
Параметр |
Тип |
Описание |
Формат |
ids |
int[] |
Массив id заказа |
ids[]=123&ids[]=444 |
codes |
string[] |
Массив номеров заказа |
codes[]=1901031387NEW&codes[]=1902281223NEW |
external_ids |
string[] |
Массив клиентских номеров заказа |
external_ids[]=qwerty&external_ids[]=qwerty2 |
statuses |
int[] |
Массив статусов заказа |
statuses[]=15&statuses[]=30 |
created_from |
date yyyy-mm-dd |
Дата создания ОТ |
created_from=2018-06-08 |
created_to |
date yyyy-mm-dd |
Дата создания ДО |
created_to=2018-08-08 |
estimate_from |
date yyyy-mm-dd |
Ожидаемая дата завершения заказа ОТ |
estimate_from=2018-07-30 |
estimate_to |
date yyyy-mm-dd |
Ожидаемая дата завершения заказа ДО |
estimate_to=2018-07-30 |
expand=locations.couriers |
Параметры для получения разных форматов ответа:
Параметр |
Ответ сервера в случае успеха |
без параметра |
Массив всех доступных клиенту заказов, подходящих под условия фильтра, каждый из элементов которого содержит данные, возвращаемые при запросе конкретного заказа. Каждый адрес содержит строку адреса address, список начисленных на нем услуг services, списки грузов, которые забираются(pickings)/выдаются(deliveries), поручений (assignments), а также список history - история изменения времени доставки. В случае неудачи сервер вернёт текст ошибки. |
expand=locations.couriers |
Массив всех доступных клиенту заказов, дополненный паспортными данными курьеров, назначенных для посещения адресов по заказу. { "id": 1, "name": "Иванов Сергей", "passport": "Иванов Сергей Николаевич, 46700 256632, 2000-12-05, ОВД р-на Дорогомилово гор. Москвы", "phone": "9161112233" } |
Пример
Request (GET):
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": "Galley", "phone": "9259977177" } ], "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": "Galley", "phone": "9259977177" } ], "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, параметры передаются в строке адреса
Параметр |
Тип |
Описание |
Формат |
ids |
int[] |
Массив id заказа |
ids[]=123&ids[]=444 |
codes |
string[] |
Массив номеров заказа |
codes[]=1901031387NEW&codes[]=1902281223NEW |
external_ids |
string[] |
Массив клиентских номеров заказа |
external_ids[]=qwerty&external_ids[]=qwerty2 |
Ограничения
Размер запроса ограничен 100 заказами. Для получения большего количества, необходимо использовать несколько запросов последовательно (не одновременно).
Пример
Request (GET):
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 – Подтвержден (заказ принят в работу)
50 – Завершён (посещение всех адресов завершено/отменено)
80 – Отменен (посещение всех адресов отменено)
Статусы адреса
10 – Новый (адрес создан)
20 – Подтвержден (адрес принят в работу)
25 – Назначен на курьера (на адрес назначен курьер)
30 – Выполнено частично (часть груза не отгружена / не вручена)
50 – Выполнено (весь груз отгружен / вручен)
60 – Отказ (весь груз не отгружен / не вручен)
80 – Отменен (выезд на адрес отменен)
Статусы груза
10 – Новый (груз находится у отправителя)
15 – Не отгружено (груз был исключен из отгрузки)
20 – Получено (груз был забран курьером)
25 – Отказ (получатель отказался от груза)
40 – К возврату (груз подготовлен к возврату отправителю)
50 – Доставлен (груз вручен получателю)
60 – Возвращен (груз возвращен отправителю)
Статусы поручения
10 – Новое (поручение создано)
30 – Отказ (поручение выполнить не удалось)
50 – Выполнено (поручение выполнено)
11. Вебхуки
Запрос POST:https://lk.runcrm.ru/api/v1/settings/set-webhook
Параметр |
Тип |
Описание |
Формат |
webhook |
string |
URL для получения вебхука |
"login":"mylogin" |
webhook_orders |
boolean |
Получать вебхук при изменении статуса заказа |
"webhook_orders":true |
webhook_addresses |
boolean |
Получать вебхук при изменении статуса адреса |
"webhook_addresses":true |
webhook_transfer |
boolean |
Получать вебхук при изменении времени доставки |
"webhook_transfer":true |
Пример:
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
Параметр |
Тип |
Описание |
Формат |
event |
string |
Событие |
order_created, order_updated, location_updated |
data |
<Order> or <Location> |
данные в зависимости от события |
"data":order "data":location |
Данные типа Order
Параметр |
Тип |
Описание |
Формат |
id |
integer |
Идентификатор заказа в системе |
"id":123 |
code |
string |
Номер заказа |
"code":"1809041122NEW" |
price |
double |
Стоимость заказа |
"price":518.62 |
pod |
double |
Наложенный платеж |
"pod": 712 |
status |
integer |
Код статуса |
"status":50 |
statusLabel |
string |
Статус |
"statusLabel":"Завершен" |
status_at |
integer |
Время изменения статуса, timestamp |
"status_at":1617138100 |
estimate_at |
integer |
Ожидаемое время завершения заказа, timestamp |
"estimate_at":1577651400 |
created_at |
integer |
Время создания заказа, timestamp |
"created_at":1536090105 |
locations |
array of <Location> |
Массив из 2 адресов посещения - забор и доставка |
"locations":[location_from, location_to] |
shipment |
array of <Shipment> |
Массив грузов к заказу |
"shipment":[shipment1, shipment2,..., shipmentN] |
Данные типа Location
Параметр |
Тип |
Описание |
Формат |
id |
integer |
Идентификатор адреса в системе |
"id":123 |
address |
string |
Адрес |
"address":"Москва, Волоколамское ш, 2" |
address_details |
string |
Детали адреса: подъезд, домофон, этаж и прочее |
"address_details":"1 подъезд, 3-й этаж, домофон 36К765" |
address_type_id |
int |
Тип адреса, id записи типа LocationType |
"address_type_id":1 |
address_place |
string |
Номер или название |
"address_place":"14"или "address_place":"ТЦ Океан" |
status |
integer |
Код статуса |
"status":50 |
statusLabel |
string |
Статус |
"statusLabel":"Завершен" |
status_at |
integer |
Время изменения статуса, timestamp |
"status_at":1617138100 |
delivery_date |
integer |
Дата посещения адреса”, timestamp |
"delivery_date":1549486800 |
delivery_from |
integer |
Начало интервала прибытия на адрес - “с””, timestamp |
"delivery_from":1549519200 |
delivery_to |
integer |
Конец интервала прибытия на адрес - “до””, timestamp |
"delivery_to":1549569600 |
comment |
string |
Комментарий для курьера на адресе |
"comment":"подписать документы и забрать один экземпляр” |
external_id |
string |
Внутренний номер заказа у заказчика |
"external_id":"test id" |
trackingLink |
string |
Ссылка на трекинг |
"trackingLink":"https:\/\/runcrm.ru\/track\/2cf38250b72933" |
income |
double |
Сумма к получению на адресе |
""income":518.62 |
payment_type |
integer |
Способ оплаты:
|
“payment_type”:2 |
is_pickup |
boolean |
Признак адреса забора грузаа |
"is_pickup":true |
is_delivery |
boolean |
Признак адреса доставки груза |
"is_delivery":true |
order |
<Order> |
Заказ (идентификаторы) |
"order": { "id": 747827, "code": "220930747827" } |
courier |
string |
Курьер (опционально, при назначении курьера) |
"courier":{courier} |
reason |
string |
Причина изменения интервала доставки (опционально, при изменении времени) |
"reason":"Желание клиента" |
shipment |
array of <Shipment> |
Массив грузов к адресу |
"shipment":[shipment1, shipment2,..., shipmentN] |
assignments |
array of <Assignment> |
Массив поручений |
"assignments":[assignment1, assignment2, ..., assignmentN] |
Данные типа Courier
Параметр |
Тип |
Описание |
Формат |
id |
integer |
Идентификатор курьера в системе |
"id":123 |
name |
string |
Имя |
"name":"Иванов Иван" |
phone |
string |
Телефон |
"phone":"9251111111" |
Данные типа Assignment
Параметр |
Тип |
Описание |
Формат |
id |
integer |
Идентификатор поручения в системе |
"id":123 |
name |
string |
Название |
"name":"Курьерская доставка" |
comment |
string |
Комментарий курьеру для указания условий выполнения поручения |
"comment":"Оплачивается только при выкупе более 2500 руб" |
status |
integer |
Код статуса |
"status":50 |
statusLabel |
string |
Статус |
"statusLabel":”Выполнено” |
Данные типа Shipment
Параметр |
Тип |
Описание |
Формат |
id |
integer |
Идентификатор груза в системе |
"id":123 |
name |
string |
Название |
"name":"test name" |
article |
string |
Артикул |
"article":"test" |
marking_code |
string |
Код маркировки товаров для https://честныйзнак.рф в формате: “01”GTIN”21”SERIAL |
“marking_code”:”010461003706597021SqdiqzCEdOtPN” |
weight |
double |
Вес, кг, 3 знака после запятой, разделитель - точка |
"weight":1.567 |
length |
double |
Габариты, см, 2 знака после запятой, разделитель - точка |
"length":120.50 |
value |
double |
Ценность, ₽, 2 знака после запятой, разделитель - точка |
"value":45.97 |
unit |
integer |
Количество единиц груза, шт. (по умолчанию 1) |
"unit":1 |
type_id |
integer |
id Типа груза |
"type_id": 1 |
status |
integer |
Код статуса |
"status":50 |
statusLabel |
string |
Статус |
"statusLabel":”Доставлено” |
warehouse_at |
int |
Время принятия на складе, timestamp |
"warehouse_at":1536090105 |
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 с причиной изменений
при присвоении грузам статуса “Возвращено” также формируется вебхук "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": "Накидка на автосидение Витоша защит466\ / 1 ", " 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": "Новое" }], "courier": { "id": 1, "name": "Андреев Виталий", "phone": "9259977177" } } }
12.3. Изменение времени доставки
Вебхук при изменении времени доставки
-
event - тип события (всегда location_updated).
-
data объект с данными заказа
Дополнительно: в этом вебхуке добавляется поле reason с причиной переноса.
{ "event": "location_updated", "data": { "status": 20, "id": 1265330, "order_id": 747874, "contact_id": 772624, "address": "Москва, улица Герасима Курина, 4 к1, 1, 41 ", " address_type_id ": null, " address_place ": null, "delivery_date": 1665262800, "delivery_from": 1665298800, "delivery_to": 1665324000, "external_id": "6016664884 (дубль)", "income": 6872.31, "payment_type": null, "is_pickup": false, "is_delivery": true, "comment": "ПОЛУЧАТЕЛЬ: Марина Нецко.", "statusLabel": "Подтвержден", "trackingLink": "https:\/\/runcrm.ru\/\/track\/2cf41bfbc7f162", "order": { "id": 747874, "code": "221006747874" }, "reason": "Просьба получателя", "shipments": [{ "status": 10, "id": 3374368, "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 ": 3374369, " type_id ": null, " article ": "106072619", "name": "Накидка на автосидение Витоша защит466\/1", "value": 119, "weight": 0.057, "length": 0, "unit": 1, "warehouse_at": null, "marking_code": null, "statusLabel": "У отправителя" }, ], "assignments": [{ "id": 185546, "name": "Курьерская доставка", "comment": null, "status": 10, "statusLabel": "Новое" }] } }