О руководстве
В документе описаны методы IMSKLAD API. С их помощью вы сможете управлять товарами, заказами и документами. Документ адресован разработчикам.
Запросы к API выполняются по протоколу HTTP методами POST. Входные и выходные структуры данных передаются в теле запроса и ответа. API поддерживает формат взаимодействия JSON.
Правила работы с API
В данном разделе отражены основные моменты работы с API IMSKLAD
Подключение
Для подключения вам необходимо:
- Оставить заявку по адресу imsklad.ru и подписать договор, а также уточнить все детали.
- Получить API Key
- Провести интеграцию
Авторизация и схема запроса
Пример запроса:
POST / HTTP/1.1
Host: clients.imsklad.ru:7000
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"type": "goods",
"action": "add_good",
"data": {
"id" : 13,
"name" : "Тестовый товар",
"description" : "",
"price" : 100,
"cost" : 100,
"weight" : 100,
"width" : 0,
"height" : 0,
"length" : 0,
"color" : 13,
"size" : ""
}
}
Пример ответа:
{
"result": "ok",
"id": 124323
}
При работе с API необходимо отправить HTTP POST запрос в JSON формате по адресу: http://client.imsklad.ru:7000
Поля запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| key | String | Да | API ключ |
| type | String | Да | Тип запроса |
| action | String | Да | Вызываемый метод |
| data | Mixed | Да | Данные, для различных запросов имеют разный формат (Например: Object или Array) |
В ответ приходит JSON структура, соответствующая данному запросу.
Сообщения об ошибках
Пример ответа с ошибкой:
{
"error": "Incorrect data",
"code": 3
}
В случаи не правильного запроса или какой-то ошибки, сервер вернет JSON объект с кодом и описанием ошибки.
Поля ответа с ошибкой:
| Параметр | Тип | Описание |
|---|---|---|
| error | String | Описанием ошибки |
| code | Int | Код ошибки |
Коды ошибок:
| Код | Описание |
|---|---|
| 1 | Фатальная ошибка сервера |
| 2 | Объект не найден |
| 3 | Данные запроса неверны |
| 4 | Операция не выполнена |
Работа с товарами
Добавление товара
Пример запроса:
POST / HTTP/1.1
Host: clients.imsklad.ru:7000
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"type": "goods",
"action": "add_good",
"data": {
"id" : 13,
"name" : "Тестовый товар",
"description" : "",
"price" : 100,
"cost" : 100,
"image": "http://api.imsklad.ru/img/1.png",
"weight" : 100,
"width" : 0,
"height" : 0,
"length" : 0,
"color" : 13,
"size" : ""
}
}
Пример ответа:
{
"result": "ok",
"id": 124323
}
Данный метод используется для добавления товара в складскую систему.
Тип запроса (type): goods
Метод (action): add_good
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID товара в системе партнера |
| name | String | Да | Название товара |
| description | String | Нет | Описание товара |
| price | Float | Да | Розничная цена товара |
| cost | Float | Да | Стоимость товара |
| image | String | Нет | Внешняя ссылка на картинку |
| weight | Int | Нет | Вес товара в граммах |
| width | Int | Нет | Ширина товара в мм |
| height | Int | Нет | Высота товара в мм |
| length | Int | Нет | Длинна товара в мм |
| color | Int | Нет | ID цвета товара см. таблицу наже |
| size | String | Нет | Размер товара (Например: XL, S, 10 см x 20 см) |
Поля ответа:
| Параметр | Тип | Описание |
|---|---|---|
| result | String | Результат запроса (По умолчвнию: ok) |
| id | Int | ID товара в складской системе |
Цвета товара:
| ID | Название | RGB |
|---|---|---|
| 1 | Белый | #ffffff |
| 4 | Черный | #000000 |
| 5 | Синий | #0000ff |
| 6 | Желтый | #ffff00 |
| 7 | Оранжевый | #ff8000 |
| 8 | Зеленый | #008000 |
| 9 | Красный | #ff0000 |
| 10 | Коричневый | #964B00 |
| 11 | Голубой | #3c9eff |
| 13 | Серый | #858585 |
| 14 | Прозрачный | trans |
| 15 | Серебряный | #C0C0C0 |
| 16 | Фиолетовый | #5A009D |
| 17 | Разноцветный | rgb |
| 18 | Бирюзовый | #30D5C8 |
| 19 | Золотой | #FFD700 |
| 20 | Бежевый | #F5F5DC |
| 21 | Маджента | #FF00FF |
| 22 | Бордовый | #800000 |
| 23 | Оливковый | #808000 |
| 24 | Фуксия | #FF00FF |
| 25 | Мятный | #00FF7F |
| 26 | Темно-зеленый | #006400 |
| 27 | Темно-синий | #00008B |
| 28 | Розовый | #FF69B4 |
| 29 | Ярко-розовый | #FF1493 |
| 30 | Светло-розовый | #FFB6C1 |
| 31 | Темно-коричневый | #800000 |
| 32 | Салатовый | #99FF99 |
| 33 | Коралловый | #F78181 |
| 34 | Бронзовый | #B8860B |
| 35 | Сиреневый | #DA70D6 |
| 36 | Хаки | #78866B |
| 37 | Горчичный | #F0A128 |
| 38 | Светло-серый | #D3D3D3 |
| 39 | Лайм | #C8FE2E |
| 40 | Светло-голубой | #A9E2F3 |
| 42 | Ярко-зеленый | #7FFF00 |
Обновление товара
Пример запроса:
POST / HTTP/1.1
Host: clients.imsklad.ru:7000
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"type": "goods",
"action": "update_good",
"data": {
"id" : 13,
"name" : "Тестовый товар",
"description" : "",
"price" : 100,
"cost" : 100,
"weight" : 100,
"width" : 0,
"height" : 0,
"length" : 0,
"color" : 13,
"size" : ""
}
}
Пример ответа:
{
"result": "ok",
"id": 124323
}
Данный метод используется для обновления информации о товаре в складской системе.
Тип запроса (type): goods
Метод (action): update_good
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID товара в системе партнера |
| name | String | Да | Название товара |
| description | String | Нет | Описание товара |
| price | Float | Да | Розничная цена товара |
| cost | Float | Да | Стоимость товара |
| image | String | Нет | Внешняя ссылка на картинку |
| weight | Int | Нет | Вес товара в граммах |
| width | Int | Нет | Ширина товара в мм |
| height | Int | Нет | Высота товара в мм |
| length | Int | Нет | Длинна товара в мм |
| color | Int | Нет | ID цвета товара см. добавление товара |
| size | String | Нет | Размер товара (Например: XL, S, 10 см x 20 см) |
Поля ответа:
| Параметр | Тип | Описание |
|---|---|---|
| result | String | Результат запроса (По умолчвнию: ok) |
| id | Int | ID товара в складской системе |
Получение остатков на складе
Пример запроса:
POST / HTTP/1.1
Host: clients.imsklad.ru:7000
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"type": "goods",
"action": "get_stock",
"data": {
"storage_id" : 1,
"ids" : [
124323,
342343
],
}
}
Пример ответа:
[
{
"id" : 124323,
"stock": 10,
"reserved": 2
},
{
"id" : 342343,
"stock": 25,
"reserved": 4
}
]
Данный метод позволяет получить остатки товаров на складе
Тип запроса (type): goods
Метод (action): get_stock
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| storage_id | String | Да | ID склада в складской системе (На данный момент равен 1) |
| ids | Array of Int | Да | Массив ID товаров складской системы (Данный ID возвращается при добавлении товара в складскую систему) |
В ответ возвращается массив из JSON объектов
Структура JSON объекта в ответе:
| Параметр | Тип | Описание |
|---|---|---|
| id | Int | ID товара в складской системе |
| stock | Int | Количество товара на складе |
| reserved | Int | Зарезервированно товара |
События склада
Обновление товара
Материал на оформлении
Работа с заказами
Добавление заказа
Пример запроса:
POST / HTTP/1.1
Host: clients.imsklad.ru:7000
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"type": "order",
"action": "add_order",
"data": {
"id" : "AZ-1234",
"guid": "67060465-4b5e-11eb-80c6-00155dd99f08",
"storage_id" : 1,
"tags" : "to-assemble",
"name" : "Иванов Иван Иванович",
"email": "test@test.ru",
"phone" : "79990000000",
"phone2" : null,
"post_code" : "123321",
"address" : "Москва, ул. Минская д.18 к.2",
"address_lat" : 55.741688,
"address_lng": 37.483840,
"comment" : "Домофон 1232",
"owner_comment" : "Доставить к 15:00",
"discount" : 0,
"delivery" : 500,
"total_paid" : 1000,
"delivery_type" : 4,
"delivery_date_from" : 1565377798,
"delivery_date_to" : 1565397798,
"shipment_date" : 1565177798,
"courier": 42,
"is_canceled" : 0,
"tracked" : 0,
"track" : null,
"track_status" : null,
"track_update" : 0,
"city_id" : 8192,
"pickup_point" : "",
"courier_city_code" : "",
"address_obj" : {
"city" : "Москва",
"street": "ул. Минская",
"house": "д.18 к.2",
"room": ""
},
"goods" : [
{
"id" : 123123,
"quantity" : 4,
"price" : 1000
},
{
"id" : 342343,
"quantity" : 1,
"price" : 5000
}
]
}
}
Пример ответа:
{
"result": "ok",
"id": 124323
}
Данный метод используется для добавления заказа в складскую систему.
Тип запроса (type): order
Метод (action): add_order
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID заказа в системе партнера |
| guid | String | Нет | GUID заказа в системе партнера, будет возвращаться вместе с id при запросах от WMS |
| storage_id | Int | Да | ID склада в складской системе (На данный момент равен 1) |
| tags | String | Нет | Тэги к заказу, через запятую см. таблицу ниже |
| name | String | Да | ФИО клиента |
| String | Нет | Email клиента | |
| phone | String | Нет | Телефон клиента |
| phone2 | String | Нет | Дополнительный телефон клиента |
| post_code | String | Нет | Почтовый индекс |
| address | String | Нет | Адрес доставки |
| address_lat | Double | Нет | Координаты адреса доставки (Широта:Latitude) |
| address_lng | Double | Нет | Координаты адреса доставки (Долгота:Longitude) |
| comment | String | Нет | Комментарий клиента к заказу |
| owner_comment | String | Нет | Комментарий партнера к заказу |
| discount | Decimal | Да | Скидка |
| delivery | Decimal | Да | Стоимость доставки |
| total_paid | Decimal | Да | Сумма оплаченная клиентом |
| delivery_type | Int | Нет | ID типа доставки см. таблицу ниже |
| delivery_date_from | Int | Нет | Дата доставки, c (Unixtimestamp) |
| delivery_date_to | Int | Нет | Дата доставки, по (Unixtimestamp) |
| shipment_date | Int | Нет | Дата отгрузки, c (Unixtimestamp) |
| courier | Int | Нет | ID курьера см. таблицу ниже |
| is_canceled | Int | Нет | Отменен ли заказ (0 - Нет, 1 - Да) |
| track_status | String | Нет | Статус отслеживания (На данный момент не используется) |
| tracked | Int | Нет | Отслеживать ли заказ (На данный момент не используется) |
| track | String | Нет | Трэк курьерской службы |
| track_update | Int | Нет | Дата обновления статусв отслеживания, c (Unixtimestamp) (На данный момент не используется) |
| city_id | Int | Нет | ID города доставки см. примечание ниже |
| pickup_point | String | Нет | Код пункта самовывоза курьерской службы |
| courier_city_code | String | Нет | Код города в курьерской службе |
| address_obj | Object | Нет | Адрес доставки по частям, необходим для некоторых курьерских служб |
| address_obj.city | String | Нет | Город |
| address_obj.street | String | Нет | Улица |
| address_obj.house | String | Нет | Дом |
| address_obj.room | String | Нет | Квартира |
| goods | Array | Да | Массив товаров в заказе |
| goods.id | Int | Да | ID товара в системе партнера |
| goods.quantity | Int | Да | Количество |
| goods.price | Decimal | Да | Цена товара в заказе |
Поля ответа:
| Параметр | Тип | Описание |
|---|---|---|
| result | String | Результат запроса (По умолчвнию: ok) |
| id | Int | ID заказа в складской системе |
Типы доставки и курьеры:
| Тип доставки | ID типа доставки | ID курьера |
|---|---|---|
| Почтой России | 4 | 7 (через Грастин), 42 (Почта России) |
| СДЭК | 16 | 7 |
| Грастин | 22 | 6 |
| BoxBerry | 62 | 32 |
| Пешкарики | 113 | 40 |
Доступные тэги к заказу:
| Тэг | Название |
|---|---|
| call | Позвонить |
| nosms | Без СМС |
| problem | Проблема |
Обновление заказа
Пример запроса:
POST / HTTP/1.1
Host: clients.imsklad.ru:7000
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"type": "order",
"action": "update_order",
"data": {
"id" : "AZ-1234",
"tags" : "to-assemble",
"name" : "Иванов Иван Иванович",
"email": "test@test.ru",
"phone" : "79990000000",
"phone2" : null,
"post_code" : "123321",
"address" : "Москва, ул. Минская д.18 к.2",
"address_lat" : 55.741688,
"address_lng": 37.483840,
"comment" : "Домофон 1232",
"owner_comment" : "Доставить к 15:00",
"discount" : 0,
"delivery" : 500,
"total_paid" : 1000,
"delivery_type" : 4,
"delivery_date_from" : 1565377798,
"delivery_date_to" : 1565397798,
"shipment_date" : 1565177798,
"courier": 42,
"is_canceled" : 0,
"tracked" : 0,
"track" : null,
"track_status" : null,
"track_update" : 0,
"city_id" : 8192,
"pickup_point" : "",
"courier_city_code" : "",
"address_obj" : {
"city" : "Москва",
"street": "ул. Минская",
"house": "д.18 к.2",
"room": ""
},
"goods" : [
{
"id" : 123123,
"quantity" : 4,
"price" : 1000
},
{
"id" : 342343,
"quantity" : 1,
"price" : 5000
}
]
}
}
Пример ответа:
{
"result": "warning",
"warning": "The order in the assembly process(goods not saved)",
"id": 124323
}
Данный метод используется для изменения заказа в складской системе.
Тип запроса (type): order
Метод (action): update_order
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID заказа в системе партнера |
| tags | String | Нет | Тэги к заказу, через запятую см. добавление заказа |
| name | String | Да | ФИО клиента |
| String | Нет | Email клиента | |
| phone | String | Нет | Телефон клиента |
| phone2 | String | Нет | Дополнительный телефон клиента |
| post_code | String | Нет | Почтовый индекс |
| address | String | Нет | Адрес доставки |
| address_lat | Double | Нет | Координаты адреса доставки (Широта:Latitude) |
| address_lng | Double | Нет | Координаты адреса доставки (Долгота:Longitude) |
| comment | String | Нет | Комментарий клиента к заказу |
| owner_comment | String | Нет | Комментарий партнера к заказу |
| discount | Decimal | Да | Скидка |
| delivery | Decimal | Да | Стоимость доставки |
| total_paid | Decimal | Да | Сумма оплаченная клиентом |
| delivery_type | Int | Нет | ID типа доставки см. добавление заказа |
| delivery_date_from | Int | Нет | Дата доставки, c (Unixtimestamp) |
| delivery_date_to | Int | Нет | Дата доставки, по (Unixtimestamp) |
| shipment_date | Int | Нет | Дата отгрузки, c (Unixtimestamp) |
| courier | Int | Нет | ID курьера см. добавление заказа |
| is_canceled | Int | Нет | Отменен ли заказ (0 - Нет, 1 - Да) |
| track_status | String | Нет | Статус отслеживания (На данный момент не используется) |
| tracked | Int | Нет | Отслеживать ли заказ (На данный момент не используется) |
| track | String | Нет | Трэк курьерской службы |
| track_update | Int | Нет | Дата обновления статусв отслеживания, c (Unixtimestamp) (На данный момент не используется) |
| city_id | Int | Нет | ID города доставки см. примечание ниже |
| pickup_point | String | Нет | Код пункта самовывоза курьерской службы |
| courier_city_code | String | Нет | Код города в курьерской службе |
| address_obj | Object | Нет | Адрес доставки по частям, необходим для некоторых курьерских служб |
| address_obj.city | String | Нет | Город |
| address_obj.street | String | Нет | Улица |
| address_obj.house | String | Нет | Дом |
| address_obj.room | String | Нет | Квартира |
| goods | Array | Да | Массив товаров в заказе |
| goods.id | Int | Да | ID товара в системе партнера |
| goods.quantity | Int | Да | Количество |
| goods.price | Decimal | Да | Цена товара в заказе |
Поля ответа:
| Параметр | Тип | Описание |
|---|---|---|
| result | String | Результат запроса (ok - в случаи успешеного обновления, warning - в случаи частичного обновления см предупреждение ниже) |
| warning | String | Предупреждение (указывается только при result = "warning") |
| id | Int | ID заказа в складской системе |
Работа с предзаказами поставщику
Добавление предзаказа поставщику
Пример запроса:
POST / HTTP/1.1
Host: clients.imsklad.ru:7000
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"type": "preorder",
"action": "add_preorder",
"data": {
"id" : "4423",
"storage_id" : 1,
"code" : "TT-23432",
"type" : 0,
"owner_date" : 1565397798,
"need_pickup" : 1,
"pickup_address" : "Москва, ул Минская, дом 18 корп 2",
"pickup_contacts" : "+7(925) 111111 Глушко Нина, ООО Инфомобиль, с 9 до 18",
"supplier_name": "SomeGoodCompany",
"goods" : [
{
"id" : 123123,
"quantity" : 4,
"price" : 1000
},
{
"id" : 342343,
"quantity" : 1,
"price" : 5000
}
]
}
}
Пример ответа:
{
"result": "ok",
"id": 124323
}
Данный метод используется для добавления документа предзаказа поставщику в складскую систему.
Тип документа: Если установлен в 0 (приход) – это означает что склад ожидает получить товары от поставщика, если установлен в 1 (расход) – Это означает что склад должен собрать указанные товары и вернуть поставщику.
Если требуется выезд курьера к поставщику, выставляется параметр need_pickup=1, и заполняются параметры pickup_address и pickup_contacts.
Тип запроса (type): preorder
Метод (action): add_preorder
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID документа в системе партнера |
| storage_id | Int | Да | ID склада в складской системе (На данный момент равен 1) |
| code | String | Нет | Код документа |
| type | Int | Да | Тип документа (0 - Приход, 1 - Расход) |
| owner_date | Int | Нет | Дата документа (Unixtimestamp) |
| need_pickup | Int | Нет | Требуется забор от поставщика (0 - не требуется, 1 - требуется) |
| pickup_address | String | Нет | Адрес поставщика |
| pickup_contacts | String | Нет | Контакты поставщика, ФИО Менеджера, Название организации, время работы, комментарий |
| supplier_name | String | Нет | Название поставщика |
| goods | Array | Да | Массив товаров в заказе |
| goods.id | Int | Да | ID товара в системе партнера |
| goods.quantity | Int | Да | Количество |
| goods.price | Decimal | Да | Цена товара в заказе |
Поля ответа:
| Параметр | Тип | Описание |
|---|---|---|
| result | String | Результат запроса (По умолчвнию: ok) |
| id | Int | ID документа в складской системе |
Обновление предзаказа поставщику
Пример запроса:
POST / HTTP/1.1
Host: clients.imsklad.ru:7000
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"type": "preorder",
"action": "update_preorder",
"data": {
"id" : "4423",
"code" : "TT-23432",
"type" : 0,
"date" : 1565397798,
"need_pickup" : 1,
"pickup_address" : "Москва, ул Минская, дом 18 корп 2",
"pickup_contacts" : "+7(925) 111111 Глушко Нина, ООО Инфомобиль, с 9 до 18",
"supplier_name": "SomeGoodCompany",
"goods" : [
{
"id" : 123123,
"quantity" : 4,
"price" : 1000
},
{
"id" : 342343,
"quantity" : 1,
"price" : 5000
}
]
}
}
Пример ответа:
{
"result": "ok",
"id": 124323
}
Данный метод используется для обновления документа предзаказа поставщику в складской системе.
Тип документа: Если установлен в 0 (приход) – это означает что склад ожидает получить товары от поставщика, если установлен в 1 (расход) – Это означает что склад должен собрать указанные товары и вернуть поставщику.
Если требуется выезд курьера к поставщику, выставляется параметр need_pickup=1, и заполняются параметры pickup_address и pickup_contacts.
Тип запроса (type): preorder
Метод (action): update_preorder
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID документа в системе партнера |
| code | String | Нет | Код документа |
| type | Int | Да | Тип документа (0 - Приход, 1 - Расход) |
| date | Int | Нет | Дата документа (Unixtimestamp) |
| need_pickup | Int | Нет | Требуется забор от поставщика (0 - не требуется, 1 - требуется) |
| pickup_address | String | Нет | Адрес поставщика |
| pickup_contacts | String | Нет | Контакты поставщика, ФИО Менеджера, Название организации, время работы, комментарий |
| supplier_name | String | Нет | Название поставщика |
| goods | Array | Да | Массив товаров в заказе |
| goods.id | Int | Да | ID товара в системе партнера |
| goods.quantity | Int | Да | Количество |
| goods.price | Decimal | Да | Цена товара в заказе |
Поля ответа:
| Параметр | Тип | Описание |
|---|---|---|
| result | String | Результат запроса (По умолчвнию: ok) |
| id | Int | ID документа в складской системе |
Работа с документами
Добавление документа
Пример запроса:
POST / HTTP/1.1
Host: clients.imsklad.ru:7000
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"type": "doc",
"action": "add_doc",
"data": {
"id" : "4423",
"storage_id" : 1,
"code" : "TT-23432",
"type" : 0,
"date" : 1565397798,
"goods" : [
{
"id" : 123123,
"quantity" : 4,
"price" : 1000
},
{
"id" : 342343,
"quantity" : 1,
"price" : 5000
}
]
}
}
Пример ответа:
{
"result": "ok",
"id": 124323
}
Данный метод используется для добавления документа в складскую систему.
Тип запроса (type): doc
Метод (action): add_doc
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID документа в системе партнера |
| storage_id | Int | Да | ID склада в складской системе (На данный момент равен 1) |
| code | String | Нет | Код документа |
| type | Int | Да | Тип документа (0 - Приход, 1 - Расход) |
| date | Int | Нет | Дата документа (Unixtimestamp) |
| goods | Array | Да | Массив товаров в заказе |
| goods.id | Int | Да | ID товара в системе партнера |
| goods.quantity | Int | Да | Количество |
| goods.price | Decimal | Да | Цена товара в заказе |
Поля ответа:
| Параметр | Тип | Описание |
|---|---|---|
| result | String | Результат запроса (По умолчвнию: ok) |
| id | Int | ID документа в складской системе |
Обновление документа
Пример запроса:
POST / HTTP/1.1
Host: clients.imsklad.ru:7000
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"type": "doc",
"action": "update_doc",
"data": {
"id" : "4423",
"code" : "TT-23432",
"type" : 0,
"date" : 1565397798,
"goods" : [
{
"id" : 123123,
"quantity" : 4,
"price" : 1000
},
{
"id" : 342343,
"quantity" : 1,
"price" : 5000
}
]
}
}
Пример ответа:
{
"result": "ok",
"id": 124323
}
Данный метод используется для обновления документа в складской системе.
Тип запроса (type): doc
Метод (action): update_doc
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID документа в системе партнера |
| code | String | Нет | Код документа |
| type | Int | Да | Тип документа (0 - Приход, 1 - Расход) |
| date | Int | Нет | Дата документа (Unixtimestamp) |
| goods | Array | Да | Массив товаров в заказе |
| goods.id | Int | Да | ID товара в системе партнера |
| goods.quantity | Int | Да | Количество |
| goods.price | Decimal | Да | Цена товара в заказе |
Поля ответа:
| Параметр | Тип | Описание |
|---|---|---|
| result | String | Результат запроса (По умолчвнию: ok) |
| id | Int | ID документа в складской системе |
Работа с биллингом
Получение стоимости операций и баланса
Пример запроса:
POST / HTTP/1.1
Host: clients.imsklad.ru:7000
Content-Type: application/json
{
"key": "YOUR_API_KEY",
"type": "billing",
"action": "get_billing",
"data": {
"storage_id" : 1,
"from" : 1565397798,
"to" : 1565397798
}
}
Пример ответа:
{
"current_balance": 11067,
"change_of_balance": -150,
"billing": [
{
"id": 32953,
"order_id": 153383,
"foreign_order_id": "359407",
"doc_request_id": null,
"date": 1590775160,
"amount": -50,
"comment": ""
},
{
"id": 32954,
"order_id": null,
"foreign_order_id": null,
"doc_request_id": 1120,
"date": 1590775195,
"amount": -100,
"comment": "Забор товара"
}]
}
Данный метод используется для получения операций по изменению баланса счета за определенный период, а также значения текущего баланса.
Тип запроса (type): billing
Метод (action): get_billing
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| storage_id | Int | Да | ID документа в системе партнера |
| from | Int | Да | Дата начала периода (Unixtimestamp) |
| to | Int | Да | Дата конца периода (Unixtimestamp) |
Поля ответа:
| Параметр | Тип | Описание |
|---|---|---|
| current_balance | Int | Текущий баланс партнера |
| change_of_balance | Int | Изменение баланса за выбранный перод |
| from | Int | Дата начала периода (Unixtimestamp) |
| to | Int | Дата конца периода (Unixtimestamp) |
| billing | Array | Массив операций за выбранный период |
| billing.id | Int | ID операции |
| billing.order_id | Int | ID заказа в складской системе |
| billing.foreign_order_id | String | ID заказа в системе партнера |
| billing.doc_request_id | Int | ID заявки в складской системе |
| billing.type | Int | Тип операции |
| billing.date | Int | Дата операции (Unixtimestamp) |
| billing.amount | Array | Стоимость операции |
| billing.comment | Int | Комментраий к операции |
Типы операций:
| ID | Описание |
|---|---|
| 0 | Сборка заказа |
| 1 | Пополнение баланса |
| 2 | Доставка |
| 9 | Прочее |
Обработка вызовов складской системы
Обработка вызовов складской системы к клиенту (события на складе). Когда в на скалде происходит то или иное изменение, событие, изменение статуса, то складская система уведомляет партнера о таком событии.
Авторизация
Пример запроса:
POST / HTTP/1.1
Host: YOUR_ENDPOINT_HOST_URL
Content-Type: application/json
{
"key": "YOUR_ENDPOINT_KEY",
"type": "good",
"action": "get_good",
"data": {
"id" : 124323
}
}
Пример ответа:
{
"id": 124323,
"name" : "Тестовый товар",
"description" : "Очень тестовый товар",
"price" : 100,
"cost" : 100,
"weight" : 100,
"width" : 10,
"height" : 20,
"length" : 30,
"color" : 13,
"size" : "Большой"
}
Складская система уведомляет клиента об изменениях в документах и заказах, запрашивает данные для справочников путем отправки HTTP POST запрос в JSON формате по адресу указанному в настройках клиента. Например http://your_shop.ru/endpoint/imsklad.php
Поля запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| key | String | Да | ENDPOINT ключ |
| type | String | Да | Тип запроса |
| action | String | Да | Вызываемый метод |
| data | Mixed | Да | Данные, для различных запросов имеют разный формат (Например: Object или Array) |
В ответ должна приходить JSON структура, соответствующая данному запросу.
Типы и методы запросов:
Некоторые типы запросов очень желательно реализовать, другие менее важны, и остаются на усмотрения разработчика. В таблице отмечено какие методы обязательно нужно поддержать.
| Тип | Метод | Обязательный | Описание |
|---|---|---|---|
| order | update_order | Да | Обновление заказа, передается объект заказа |
| order | set_status | Да | Передается текущий статус заказа |
| order | set_pay | Нет | Сообщается о о получении денег за заказ |
| order | send_to_cdek | Нет | Передает идентификаторы заказов, которые надо выгрузить в СДЭК (Если выгрузка заказа происходит на стороне клиента) |
| order | send_to_boxberry | Нет | Передает идентификаторы заказов, которые надо выгрузить в BoxBerry (Если выгрузка заказа происходит на стороне клиента) |
| order | send_act_to_boxberry | Нет | Передает идентификаторы заказов, которые надо включить в акт BoxBerry для отгрузки (Если выгрузка заказа происходит на стороне клиента) |
| doc | add_doc | Нет | Выгрузка документа поступления или списания, сообщает что произошло физическое поступление или списание товара на складе |
| doc | update_doc | Нет | Обновление ранее выгруженного документа |
| doc | set_status | Нет | Обновление статуса документа (Новый, Проведен, Отменен) |
| good | get_good | Да | Получение информации по товару |
| good | get_good_suppliers | Нет | Получения списка поставщиков для данного товара |
| supplier | get_supplier | Нет | Получение информации о поставщике |
| supplier | get_suppliers | Нет | Получение списка поставщиков |
Callback Обновление заказа
Пример запроса:
POST / HTTP/1.1
Host: YOUR_ENDPOINT_HOST_URL
Content-Type: application/json
{
"key": "YOUR_ENDPOINT_KEY",
"type": "order",
"action": "update_order",
"data": {
"id" : "AZ-1234",
"guid": null,
"tags" : "to-assemble",
"name" : "Иванов Иван Иванович",
"email": "test@test.ru",
"phone" : "79990000000",
"phone2" : null,
"post_code" : "123321",
"address" : "Москва, ул. Минская д.18 к.2",
"address_lat" : 55.741688,
"address_lng": 37.483840,
"comment" : "Домофон 1232",
"owner_comment" : "Доставить к 15:00",
"discount" : 0,
"delivery" : 500,
"total_paid" : 1000,
"delivery_type_id" : 4,
"delivery_date_from" : 1565377798,
"delivery_date_to" : 1565397798,
"shipment_date" : 1565177798,
"delivery_courier_id": 42,
"is_canceled" : 0,
"tracked" : 0,
"track" : null,
"track_status" : null,
"track_update" : 0,
"city_id" : 8192,
"pickup_point" : "",
"courier_city_code" : "",
"address_obj" : {
"city" : "Москва",
"street": "ул. Минская",
"house": "д.18 к.2",
"room": ""
},
"goods" : [
{
"id" : 123123,
"quantity" : 4,
"price" : 1000
},
{
"id" : 342343,
"quantity" : 1,
"price" : 5000
}
]
}
}
Пример ответа:
{
"result": "ok",
"id": "AZ-1234"
}
Данный метод используется для изменения заказа в складской системе.
Тип запроса (type): order
Метод (action): update_order
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID заказа в системе партнера |
| guid | String | Да | GUID заказа в системе партнера |
| tags | String | Нет | Тэги к заказу, через запятую см. добавление заказа |
| name | String | Да | ФИО клиента |
| String | Нет | Email клиента | |
| phone | String | Нет | Телефон клиента |
| phone2 | String | Нет | Дополнительный телефон клиента |
| post_code | String | Нет | Почтовый индекс |
| address | String | Нет | Адрес доставки |
| address_lat | Double | Нет | Координаты адреса доставки (Широта:Latitude) |
| address_lng | Double | Нет | Координаты адреса доставки (Долгота:Longitude) |
| comment | String | Нет | Комментарий клиента к заказу |
| owner_comment | String | Нет | Комментарий партнера к заказу |
| discount | Decimal | Да | Скидка |
| delivery | Decimal | Да | Стоимость доставки |
| total_paid | Decimal | Да | Сумма оплаченная клиентом |
| delivery_type_id | Int | Нет | ID типа доставки см. добавление заказа |
| delivery_date_from | Int | Нет | Дата доставки, c (Unixtimestamp) |
| delivery_date_to | Int | Нет | Дата доставки, по (Unixtimestamp) |
| shipment_date | Int | Нет | Дата отгрузки, c (Unixtimestamp) |
| delivery_courier_id | Int | Нет | ID курьера см. добавление заказа |
| is_canceled | Int | Нет | Отменен ли заказ (0 - Нет, 1 - Да) |
| track_status | String | Нет | Статус отслеживания (На данный момент не используется) |
| tracked | Int | Нет | Отслеживать ли заказ (На данный момент не используется) |
| track | String | Нет | Трэк курьерской службы |
| track_update | Int | Нет | Дата обновления статусв отслеживания, c (Unixtimestamp) (На данный момент не используется) |
| city_id | Int | Нет | ID города доставки см. примечание ниже |
| pickup_point | String | Нет | Код пункта самовывоза курьерской службы |
| courier_city_code | String | Нет | Код города в курьерской службе |
| address_obj | Object | Нет | Адрес доставки по частям, необходим для некоторых курьерских служб |
| address_obj.city | String | Нет | Город |
| address_obj.street | String | Нет | Улица |
| address_obj.house | String | Нет | Дом |
| address_obj.room | String | Нет | Квартира |
| goods | Array | Да | Массив товаров в заказе |
| goods.id | Int | Да | ID товара в системе партнера |
| goods.quantity | Int | Да | Количество |
| goods.price | Decimal | Да | Цена товара в заказе |
Поля ответа:
| Параметр | Тип | Описание |
|---|---|---|
| result | String | Результат запроса (ok - в случае успешеного обновления) |
| id | String | ID заказа в системе партнера |
Callback Обновление статуса заказа
Пример запроса:
POST / HTTP/1.1
Host: YOUR_ENDPOINT_HOST_URL
Content-Type: application/json
{
"key": "YOUR_ENDPOINT_KEY",
"type": "order",
"action": "set_status",
"data": {
"id" : "AZ-1234",
"old_status" : 0,
"new_status" : 1,
"system_id" : 11232,
"guid": "67060465-4b5e-11eb-80c6-00155dd99f08",
}
}
Пример ответа:
{
"result": "ok"
}
Данный метод используется для обновления статуса заказа в CRM клиента.
Тип запроса (type): order
Метод (action): set_status
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID заказа в системе партнера |
| old_status | Int | Да | Старый статус заказа См следущую таблицу |
| new_status | Int | Да | Текущиа статус заказа См следущую таблицу |
| system_id | Int | Да | Id заказа в IMSKLAD |
| guid | String | Да | GUID заказа в системе партнера |
Значения статусов заказа:
| Значение | Обозначение |
|---|---|
| 0 | Новый заказ, собрать |
| 1 | Передан на комплектацию |
| 2 | Комплектуется |
| 3 | Скомплектован, готов передаваться на упаковку |
| 4 | Передан на упаковку |
| 5 | Упаковывается |
| 6 | Упакован |
| 7 | Передается на отгрузку |
| 8 | Готов к отгрузке |
| 9 | Отгружен в курьерскую службу, покинул склад |
| 10 | Отменен |
| 11 | Вручен клиенту |
Callback Создание документа
Пример запроса:
POST / HTTP/1.1
Host: YOUR_ENDPOINT_HOST_URL
Content-Type: application/json
{
"key": "YOUR_ENDPOINT_KEY",
"type": "order",
"action": "set_status",
"data": {
}
}
Пример ответа:
{
"result": "ok"
}
Данный вызов вызывается при создании документа
Тип запроса (type): doc
Метод (action): add_doc
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID заказа в системе партнера |
| old_status | Int | Да | Старый статус заказа См следущую таблицу |
| new_status | Int | Да | Текущиа статус заказа См следущую таблицу |
| system_id | Int | Да | Id заказа в IMSKLAD |
Значения статусов заказа:
| Значение | Обозначение |
|---|---|
| 0 | Новый заказ, собрать |
| 1 | Передан на комплектацию |
| 2 | Комплектуется |
| 3 | Скомплектован, готов передаваться на упаковку |
| 4 | Передан на упаковку |
| 5 | Упаковывается |
| 6 | Упакован |
| 7 | Передается на отгрузку |
| 8 | Готов к отгрузке |
| 9 | Отгружен в курьерскую службу, покинул склад |
| 10 | Отменен |
| 11 | Вручен клиенту |
Callback Обновление трэков заказов
Пример запроса:
POST / HTTP/1.1
Host: YOUR_ENDPOINT_HOST_URL
Content-Type: application/json
{
"key": "YOUR_ENDPOINT_KEY",
"type": "order",
"action": "update_tracks",
"data": [
{
"id" : "AZ-1234",
"guid": "67060465-4b5e-11eb-80c6-00155dd99f08",
"track": "345345345234"
},
{
"id" : "AZ-2322",
"guid": null,
"track": "45345344544"
},
{
"id" : "AZ-2324",
"guid": "9ec81f66-4ba7-11eb-80c6-00155dd99f08",
"err": "Incorrect pvz"
},
]
}
Пример ответа:
{
"result": "ok"
}
Данный метод используется для обновления трэков заказа в CRM клиента.
Тип запроса (type): order
Метод (action): update_tracks
Поля данных запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| id | String | Да | ID заказа в системе партнера |
| track | String | Нет | Трэк заказа в курьерской службе |
| guid | String | Да | GUID заказа в системе партнера |
| err | String | Нет | Ошибка при выгрузке заказа в курьерскую службу |