API клиентской части магазинов на платформе SAPLAB.RU

Обмен данными осуществляется по протоколу 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
ПолеТипОписание
brandstringБренд
namestringИмя
Пример использования:
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
ПолеТипОписание
articlestringАртикул
brandstringБренд
namestringНаименование
stockintНаличие (-1 если поставщик не передаёт наличие)
multiplicityintКратность
deliverytimeobjectПолеТипОписаниеminintМинимальный срок поставкиmaxintМаксимальный срок поставки
percentintПроцент выдачи
pricefloatЦена
warehousestring or nullСклад
returnableboolПодлежит ли деталь возврату
return_costint% удержания при возврате
commentstring or nullПримечание о складе
unsafeboolЯвляется ли возможно неточной заменой
to_cartstringДанные о товаре для метода 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_orderstringИдентификатор товара в корзине, используется для помещения в заказ
articlestringАртикул
brandstringБренд
namestringНаименование
multiplicityintКратность
quantityintКоличество в корзине
pricefloatЦена
totalfloatЦена*кол-во
deliverytimeobjectПолеТипОписаниеminintМинимальный срок поставкиmaxintМаксимальный срок поставки
commentstringКомментарий к позиции
Пример использования:
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

Добавить товар в корзину

Входные данные:
ПолеТипОписание
productstringДанные товара
quantityintКоличество товара для добавления
commentstringКомментарий к позиции
Исходящие данные:
Содержит объект
ПолеТипОписание
statusstringСостояние операции: ok в случае успешной операции
messagestringСообщение
datastringИдентификатор товара в корзине (в случае успешной операции). Используется в дальнейшем для создания заказа
Пример использования:
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

Совершить заказ

Входные данные:
ПолеТипОписание
productstringИдентификатор корзин из /cart/add
quantityintКоличество товара для добавления
commentstringКомментарий к позиции
Исходящие данные:
Содержит status|string

Состояние операции: ok в случае успешной операции

Содержит message|string

Идентификатор (invoice) заказа

Содержит коллекцию data
ПолеТипОписание
idintИдентификатор позиции в системе (используется для получения статуса позиции)
invoicetextИдентификатор (invoice) заказа с этой позицией
articletextАртикул
brandtextБренд
nametextНаименование
status_idintИдентификатор статуса
status_nametextСтатус
shipping_idintИдентификатор способа доставки (0 — самовывоз)
shipping_nametextИмя способа доставки
shipping_addresstextАдрес доставки
deliverytimeobjectПолеТипОписаниеminintМинимальный срок поставкиmaxintМаксимальный срок поставки
pricefloatЦена
quantityintКоличество товара в позиции
totalfloatИтого
documentstring or nullНазвание документа, в котором содержится данный товар
is_payedboolПозиция оплачена?
is_deniedboolПозиция отменена?
is_archivedboolПозиция в архиве?
historyobjectИстория позицииПолеТипОписаниеdatedatetimeВремяcolortextЦветstatustextСтатусmanagertextКто внёс изменения
commentobjectКомментарий. Содержит поля client_comment и manager_comment(если есть)
date_addeddatetimeДата создания заказа
date_modifieddatetimeДата изменения заказа
Пример использования:
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_idsintИдентификатор позиции (можно указать несколько идентификаторов через запятую)order_ids/1 или order_ids/1,2,3
invoicetextИдентификатор (invoice) заказа
brandtextБренд позиции
articletextАртикул позиции
shipping_idintИдентификатор способа доставки
point_idintИдентификатор офиса
order_statusintИдентификатор статуса
unignore_archivedboolВключить в выдачу позиций из архива
date_fromdateЗаказ совершен с2016-12-31
date_todateЗаказ совершен до2017-01-04
pageintНомер страницы
per_pageintСколько заказов показывать на одной странице (<=150)
Исходящие данные:
Содержит коллекцию orders
ПолеТипОписание
idintИдентификатор позиции в системе (используется для получения статуса позиции)
invoicetextИдентификатор (invoice) заказа с этой позицией
articletextАртикул
brandtextБренд
nametextНаименование
status_idintИдентификатор статуса
status_nametextСтатус
shipping_idintИдентификатор способа доставки (0 — самовывоз)
shipping_nametextИмя способа доставки
shipping_addresstextАдрес доставки
deliverytimeobjectПолеТипОписаниеminintМинимальный срок поставкиmaxintМаксимальный срок поставки
pricefloatЦена
quantityintКоличество товара в позиции
totalfloatИтого
documentstring or nullНазвание документа, в котором содержится данный товар
is_payedboolПозиция оплачена?
is_deniedboolПозиция отменена?
is_archivedboolПозиция в архиве?
historyobjectИстория позицииПолеТипОписаниеdatedatetimeВремяcolortextЦветstatustextСтатусmanagertextКто внёс изменения
commentobjectКомментарий. Содержит поля client_comment и manager_comment(если есть)
date_addeddatetimeДата создания заказа
date_modifieddatetimeДата изменения заказа
Пример использования:
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

Получить список статусов заказов

Исходящие данные:
Содержит коллекцию
ПолеТипОписание
idintИдентификатор статуса
namestringСтатус
colorstringЦвет статуса
Пример использования:
http://demo.saplab.ru/misc/order_statuses

По возникающим вопросам или доработке существующего функционала вы можете писать в нашу службу поддержки support@saplab.ru