Обмен данными осуществляется по протоколу HTTP
Для аутентификации используется HTTP Basic Auth
Данные для записи передаются через POST
Сервер возвращает ответы в JSON
Примеры запросов выполнены с использованием curl
Параметры в query string должны быть url-кодированы
Для включения API поиска перейдите в карточку клиента (ПУ магазина — раздел Клиенты) и поставьте галочку ДОСТУП ПО API
Поиск Получить список брендов по артикулу (GET /parts/search/$article) Выходные параметры groups Пример использования Пример вывода Получить список товаров по бренду и артикулу (GET /parts/search/$article/$brand) Выходные параметры parts Пример использования Пример вывода Получить содержимое корзины (GET /account/cart) Выходные параметры contents Пример использования Пример вывода Добавить товар в корзину (POST /account/cart/add) Входные параметры Выходные параметры
Пример использования Пример вывода Пример вывода при ошибке Совершить заказ (POST /account/order/create) Входные параметры Выходные параметры status|string message|string data Пример использования Пример вывода Получить список заказов (GET /account/order) Фильтры Выходные параметры orders Пример использования Пример вывода Получить список статусов заказов (GET /misc/order_statuses) Выходные параметры
Пример использования
Поиск
Метод /parts/search/$article , тип GET
Получить список брендов по артикулу
Исходящие данные:
Содержит коллекцию groups
Поле Тип Описание brand string Бренд name string Имя
Пример использования:
curl http://79213375544:пароль@demo.saplab.ru/parts/search/9054
Пример ответа:
{
"groups": [
{
"brand": "BOSCH",
"name": "\u0420\u0435\u043c\u0435\u043d\u044c \u0413\u0420\u041c"
},
{
"brand": "BREMI",
"name": "\u0411\u0435\u0433\u0443\u043d\u043e\u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438"
},
{
"brand": "FEBI",
"name": "\u0421\u0430\u0439\u043b\u0435\u043d\u0442-\u0431\u043b\u043e\u043a \u0431\u0430\u043b\u043a\u0438 \u043f\u043e\u0434\u0432\u0435\u0441\u043a\u0438"
},
{
"brand": "LIQUI MOLY",
"name": "\u041c\u0410\u0421\u041b\u041e \u041c\u041e\u0422\u041e\u0420\u041d\u041e\u0415 Molygen New Generation 5W-40 (4L)"
},
{
"brand": "MEAT",
"name": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u041e\u0413"
},
{
"brand": "MEAT&DORIA;",
"name": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0434\u0430\u0432\u0432\u043b\u0443\u043f\u0440\u0430\u0432\u043b\u041e\u0413_Citro C3C5XsaraPeuge"
}
]
}
Метод /parts/search/$article/$brand , тип GET
Получить список товаров по бренду и артикулу
Исходящие данные:
Содержит коллекцию parts
Поле Тип Описание article string Артикул brand string Бренд name string Наименование stock int Наличие (-1 если поставщик не передаёт наличие) multiplicity int Кратность deliverytime object ПолеТипОписаниеminintМинимальный срок поставкиmaxintМаксимальный срок поставки percent int Процент выдачи price float Цена warehouse string or null Склад returnable bool Подлежит ли деталь возврату return_cost int % удержания при возврате comment string or null Примечание о складе unsafe bool Является ли возможно неточной заменой to_cart string Данные о товаре для метода cart/add
Пример использования:
curl http://79213375544:пароль@demo.saplab.ru/parts/search/9054/MEAT%26DORIA%3B
Пример ответа:
{
"parts": [
{
"article": "9054",
"brand": "MEAT&DORIA;",
"name": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f CitroenPeug 20HDI 01",
"stock": 1,
"multiplicity": 1,
"deliverytime": {
"min": 1,
"max": 1
},
"percent": 86,
"price": 2187,
"warehouse": null,
"returnable": true,
"return_cost": 10,
"comment": null,
"unsafe": false
},
{
"article": "1150101800",
"brand": "JP GROUP",
"name": "8080 AVANT",
"stock": -1,
"multiplicity": 1,
"deliverytime": {
"min": 0,
"max": 0
},
"percent": 85,
"price": 392,
"warehouse": null,
"returnable": true,
"return_cost": 10,
"comment": null,
"unsafe": true
}
]
}
Метод /account/cart , тип GET
Получить содержимое корзины
Исходящие данные:
Содержит коллекцию contents
Поле Тип Описание to_order string Идентификатор товара в корзине, используется для помещения в заказ article string Артикул brand string Бренд name string Наименование multiplicity int Кратность quantity int Количество в корзине price float Цена total float Цена*кол-во deliverytime object ПолеТипОписаниеminintМинимальный срок поставкиmaxintМаксимальный срок поставки comment string Комментарий к позиции
Пример использования:
curl http://79213375544:пароль@demo.saplab.ru/account/cart
Пример ответа:
{
"contents": [
{
"to_order": "a42bd088ff4117e09db8a0dcce17f61224067126adf38f23696ef69ef6491ecc",
"article": ".sg-4540.",
"brand": "ZEKKERT",
"name": "\u0410\u043c\u043e\u0440\u0442\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u043e\u0434\u0432\u0435\u0441\u043a\u0438 \u0433\u0430\u0437. \u043f\u0435\u0440\u0435\u0434. \u043b\u0435\u0432. Mitsubishi Carisma 95-",
"multiplicity": 1,
"quantity": 1,
"price": 2198,
"total": 2198,
"warehouse": null,
"comment": "test",
"deliverytime": {
"min": 4,
"max": 4
}
}
]
}
Метод /account/cart/add , тип POST
Добавить товар в корзину
Поле Тип Описание product string Данные товара quantity int Количество товара для добавления comment string Комментарий к позиции
Исходящие данные:
Содержит объект
Поле Тип Описание status string Состояние операции: ok в случае успешной операции message string Сообщение data string Идентификатор товара в корзине (в случае успешной операции). Используется в дальнейшем для создания заказа
Пример использования:
curl http://79213375544:пароль@demo.saplab.ru/account/cart/add --data "product=данные из /parts/search/$article/$brand->to_cart"
Пример ответа:
{
"data": "8489e984072081dbffe1282d106868e0667984252fb67188669bd15295feb84e",
"status": "ok",
"message": "\u0422\u043e\u0432\u0430\u0440 ZEKKERT .sg-4540. \u0410\u043c\u043e\u0440\u0442\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u043e\u0434\u0432\u0435\u0441\u043a\u0438 \u0433\u0430\u0437. \u043f\u0435\u0440\u0435\u0434. \u043b\u0435\u0432. Mitsubishi Carisma 95- \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432 \u043a\u043e\u0440\u0437\u0438\u043d\u0443."
}
Пример неудачного ответа:
{
"status": "error",
"message": "\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0432\u0430\u0440\u0430 \u043d\u0430 \u0441\u043a\u043b\u0430\u0434\u0435."
}
Метод /account/order/create , тип POST
Совершить заказ
Поле Тип Описание product string Идентификатор корзин из /cart/add quantity int Количество товара для добавления comment string Комментарий к позиции
Исходящие данные:
Содержит status|string
Состояние операции: ok в случае успешной операции
Содержит message|string
Идентификатор (invoice) заказа
Содержит коллекцию data
Поле Тип Описание id int Идентификатор позиции в системе (используется для получения статуса позиции) invoice text Идентификатор (invoice) заказа с этой позицией article text Артикул brand text Бренд name text Наименование status_id int Идентификатор статуса status_name text Статус shipping_id int Идентификатор способа доставки (0 — самовывоз) shipping_name text Имя способа доставки shipping_address text Адрес доставки deliverytime object ПолеТипОписаниеminintМинимальный срок поставкиmaxintМаксимальный срок поставки price float Цена quantity int Количество товара в позиции total float Итого document string or null Название документа, в котором содержится данный товар is_payed bool Позиция оплачена? is_denied bool Позиция отменена? is_archived bool Позиция в архиве? history object История позицииПолеТипОписаниеdatedatetimeВремяcolortextЦветstatustextСтатусmanagertextКто внёс изменения comment object Комментарий. Содержит поля client_comment и manager_comment(если есть) date_added datetime Дата создания заказа date_modified datetime Дата изменения заказа
Пример использования:
curl http://79213375544:пароль@demo.saplab.ru/account/order/create --data "products[]=4609b5b7f2f4cd451ea2a627ed76925c92ca61a28fef33cd1c9e0ea95b46cb93"
Пример ответа:
{
"status": "ok",
"message": "00242",
"data": [
{
"id": 320935,
"invoice": "00242",
"article": "1987302217",
"brand": "BOSCH",
"name": "\u041b\u0430\u043c\u043f\u0430 \u043d\u0430\u043a\u0430\u043b\u0438\u0432\u0430\u043d\u0438\u044f, \u0444\u043e\u043d\u0430\u0440\u044c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a",
"status_id": 14,
"status_name": 0,
"shipping_id": 0,
"shipping_name": "\u0421\u0430\u043c\u043e\u0432\u044b\u0432\u043e\u0437",
"shipping_address": "",
"deliverytime": {
"min": 1,
"max": 1
},
"price": 25,
"quantity": 1,
"total": 25,
"document": null,
"is_payed": false,
"is_denied": false,
"is_archived": false,
"history": [
{
"date": "2019-08-20 17:53:12.000000",
"color": "FFDA91",
"status": "\u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e",
"manager": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438"
},
{
"date": "2019-08-20 17:53:20.000000",
"color": "FAFFB3",
"status": "\u041f\u0440\u0438\u043d\u044f\u0442\u043e",
"manager": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438"
}
],
"comment": {
"client_comment": "\u041f\u043e\u0437\u0438\u0446\u0438\u044f \u0437\u0430\u043a\u0430\u0437\u0430 NO-00025 [320445]"
},
"date_added": "2019-08-20 17:53:12",
"date_modified": "2019-08-20 17:53:12"
}
]
}
Метод /account/order , тип GET
Получить список заказов
Метод поддерживает следующие фильтры:
Фильтры указываются в виде /account/order/filter/ключ1/значение1/ключ2/значение2 Ключи и значения должны быть URL-кодированные
Поле Тип Описание Пример order_ids int Идентификатор позиции (можно указать несколько идентификаторов через запятую) order_ids/1 или order_ids/1,2,3 invoice text Идентификатор (invoice) заказа brand text Бренд позиции article text Артикул позиции shipping_id int Идентификатор способа доставки point_id int Идентификатор офиса order_status int Идентификатор статуса unignore_archived bool Включить в выдачу позиций из архива date_from date Заказ совершен с 2016-12-31 date_to date Заказ совершен до 2017-01-04 page int Номер страницы per_page int Сколько заказов показывать на одной странице (<=150)
Исходящие данные:
Содержит коллекцию orders
Поле Тип Описание id int Идентификатор позиции в системе (используется для получения статуса позиции) invoice text Идентификатор (invoice) заказа с этой позицией article text Артикул brand text Бренд name text Наименование status_id int Идентификатор статуса status_name text Статус shipping_id int Идентификатор способа доставки (0 — самовывоз) shipping_name text Имя способа доставки shipping_address text Адрес доставки deliverytime object ПолеТипОписаниеminintМинимальный срок поставкиmaxintМаксимальный срок поставки price float Цена quantity int Количество товара в позиции total float Итого document string or null Название документа, в котором содержится данный товар is_payed bool Позиция оплачена? is_denied bool Позиция отменена? is_archived bool Позиция в архиве? history object История позицииПолеТипОписаниеdatedatetimeВремяcolortextЦветstatustextСтатусmanagertextКто внёс изменения comment object Комментарий. Содержит поля client_comment и manager_comment(если есть) date_added datetime Дата создания заказа date_modified datetime Дата изменения заказа
Пример использования:
curl http://79213375544:пароль@demo.saplab.ru/account/order
Пример ответа:
{
"orders": [
{
"id": 6,
"invoice": "NO-005",
"article": "333222",
"brand": "KAYABA",
"name": "\u0410\u043c\u043e\u0440\u0442\u0438\u0437\u0430\u0442\u043e\u0440 MITSUBISHI CARISMA 05\/95-02\/99 (V=1.6\/1.9TD) \u043f\u0435\u0440.\u043b\u0435\u0432.\u0433\u0430\u0437.",
"status_id": 1,
"status_name": "\u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e",
"shipping_id": 0,
"shipping_name": "\u0421\u0430\u043c\u043e\u0432\u044b\u0432\u043e\u0437",
"shipping_address": "",
"deliverytime": {
"min": 3,
"max": 3
},
"price": 4343,
"quantity": 1,
"total": 4343,
"document": null,
"is_payed": false,
"is_denied": false,
"is_archived": false,
"history": [
{
"date": "2019-09-11 19:14:23.000000",
"color": "BAF8FF",
"status": "\u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e",
"manager": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438"
}
],
"comment": {
"client_comment": ""
},
"date_added": "2019-09-11 19:14:23",
"date_modified": "2019-09-11 19:14:23"
}
],
"pages": 1
}
Метод /misc/order_statuses , тип GET
Получить список статусов заказов
Исходящие данные:
Содержит коллекцию
Поле Тип Описание id int Идентификатор статуса name string Статус color string Цвет статуса
Пример использования:
http://demo.saplab.ru/misc/order_statuses
По возникающим вопросам или доработке существующего функционала вы можете писать в нашу службу поддержки support@saplab.ru