API панели управления магазинов на платформе SAPLAB.RU

Данная документация позволит интегрировать платформу с другими системами. Например выгружать заказы и клиентов в 1C или другие учетные программы.

Обмен данными осуществляется по протоколу HTTP
Для аутентификации используется HTTP Basic Auth
Данные для записи передаются через POST
Сервер возвращает ответы в JSON
Примеры запросов выполнены с использованием curl
Полномочия сотрудников при доступе учитываются

логин == логин сотрудника магазина в панели управления
пароль == пароль сотрудника магазина

ВАЖНО!!! Полномочия сотрудников при доступе учитываются. Если у вашего сотрудника урезаны права доступа к функционалу, следовательно некоторые методы описанные в данной документации могут не работать.

Сотрудники
   Получить список сотрудников (GET /panel/manager)
      Выходные параметры
         managers
      Пример использования
Способы доставки
   Получить способы доставки магазина (GET /panel/order/shipping_type)
      Выходные параметры
         shipping_types
      Пример использования
      Пример вывода
   Добавить способ доставки (POST /panel/order/shipping_type)
      Входные параметры
      Пример использования
      Пример вывода
   Изменить способ доставки по id (POST /panel/order/shipping_type/$ID)
      Входные параметры
      Пример использования
      Пример вывода
   Удалить способ доставки (POST /panel/order/remove_shipping_type)
      Входные параметры
      Пример использования
      Пример вывода
      Пример вывода при ошибке
Статусы заказов
   Получить статусы заказов (GET /panel/order/status)
      Выходные параметры
         statuses
      Пример использования
      Пример вывода
   Добавить статус заказа (POST /panel/order/status)
      Входные параметры
      Пример использования
      Пример вывода
   Изменить статус заказа по id (POST /panel/order/status/$ID)
      Входные параметры
      Пример использования
      Пример вывода
   Удалить статус заказа (POST /panel/order/remove_status)
      Входные параметры
      Пример использования
      Пример вывода
      Пример вывода при ошибке
Группы клиентов
   Получить скидочные группы (GET /panel/client/group)
      Выходные параметры
         groups
      Пример использования
      Пример вывода
   Добавить скидочную группу (POST /panel/client/group_form)
      Входные параметры
      Пример использования
      Пример вывода
   Изменить скидочную группу по id (POST /panel/client/group_form/$ID)
      Входные параметры
      Пример использования
      Пример вывода
   Удалить скидочную группу (POST /panel/client/remove_group)
      Входные параметры
      Пример использования
Работа с клиентами
   Получить список клиентов (GET /panel/client)
      Фильтры
      Выходные параметры
         clients
         filters
         pages
      Пример использования
      Пример вывода
   Получить расширенные данные клиента (GET /panel/client/form/$ID)
      Выходные параметры
         client
      Пример использования
      Пример вывода
   Создать клиента (POST /panel/client/form)
      Входные параметры
      Пример использования
      Пример вывода
      Пример вывода при ошибке
   Изменить клиента (POST /panel/client/form/$ID)
      Входные параметры
      Пример использования
      Пример вывода
      Пример вывода при ошибке
Работа с балансами
   Получить операции с балансом клиента (GET /panel/client/balance/$ID)
      Выходные параметры
         groups
      Пример использования
      Пример вывода
   Добавить операцию (GET /panel/client/add_transaction/$ID)
      Входные параметры
      Пример использования
Работа с заказами
   Получить список заказов (GET /panel/order)
      Фильтры
      Выходные параметры
         orders
         filters
         pages
      Пример использования
      Пример вывода
   Изменить статус позиции (POST /panel/order/set_status/$ID)
      Входные параметры
      Пример использования
   Снять позицию (GET /panel/order/deny/$ID)
      Пример использования
   Оплатить позицию. У клиента должно быть достаточно средств на лицевом счету.
При указании $ID оплаченной позиции снимает оплату с позиции. При снятии оплаты средства вернутся на лицевой счёт (GET /panel/order/pay/$ID)

      Пример использования
   Добавить позицию в архив (GET /panel/order/archive/$ID)
      Пример использования
   Снять позицию (GET /panel/order/unarchive/$ID)
      Пример использования
   Создать документы на выбранные позиции (GET /panel/order/documentds/$IDs)
      Входные параметры
      Пример использования

Сотрудники

Метод /panel/manager, тип GET

Получить список сотрудников

Исходящие данные:
Содержит коллекцию managers
ПолеТипОписание
idintИдентификатор
phonetextТелефон (также используется как логин)
nametextИмя сотрудника
seattextДолжность
emailtextEmail
point_idintИдентификатор офиса
point_nametextПолное название офиса
point_addresstextАдрес офиса
manager_group_idintИдентификатор группы сотрудников
manager_group_nametextНазвание группы сотрудников
client_countintКол-во назначенных клиентов
statusboolСотрудник активен?
client_useboolНазначать сотруднику клиентов
contact_showboolПоказывать сотрудника в разделе «контакты» клиентской части
backupjsonСлужебное поле, сюда сбрасываются менеджеры при деактивации менеджера и перераспределении клиентов
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/manager

Способы доставки

Метод /panel/order/shipping_type, тип GET

Получить способы доставки магазина

Исходящие данные:
Содержит коллекцию shipping_types
ПолеТипОписание
idintИдентификатор способа
nametextИмя
min_priceintМинимальная цена, с которой этот способ будет доступен для выбора
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/shipping_type
Пример ответа:
{
    "shipping_types": [
        {
            "id": "1",
            "name": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u043e \u0433\u043e\u0440\u043e\u0434\u0443",
            "min_price": "1"
        },
        {
            "id": "2",
            "name": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0434\u043e \u0422\u041a ",
            "min_price": "2"
        }
    ]
}

Метод /panel/order/shipping_type, тип POST

Добавить способ доставки

Входные данные:
ПолеТипОписание
nametextНазвание
min_priceintМинимальная цена
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/shipping_type --data "name=Новый способ&min_price=1000"
Пример ответа:
{
    "status": "success"
}

Метод /panel/order/shipping_type/$ID, тип POST

Изменить способ доставки по id

Входные данные:
ПолеТипОписание
nametextНазвание
min_priceintМинимальная цена
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/shipping_type/1 --data "name=Измененное название способа&min_price=1000"
Пример ответа:
{
    "status": "success"
}

Метод /panel/order/remove_shipping_type, тип POST

Удалить способ доставки

Входные данные:
ПолеТипОписание
idintИдентификатор способа
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/remove_shipping_type --data "id=3"
Пример ответа:
{
    "status": "success"
}
Пример неудачного ответа Способа не существует:
{
    "status": "error"
}

Статусы заказов

Метод /panel/order/status, тип GET

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

Исходящие данные:
Содержит коллекцию statuses
ПолеТипОписание
idintИдентификатор статуса
nametextНазвание статуса
colortextЦвет статуса
smsboolSMS уведомление при установке статуса
emailboolemail уведомление при установке статуса
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/status
Пример ответа:
{
    "statuses": [
        {
            "id": "2",
            "name": "\u0412 \u0440\u0430\u0431\u043e\u0442\u0435",
            "color": "CBFFC9",
            "sms": "0",
            "email": "0"
        },
        {
            "id": "4",
            "name": "\u0412\u044b\u0434\u0430\u043d\u043e (\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e)",
            "color": "70FF83",
            "sms": "0",
            "email": "1"
        },
        {
            "id": "7",
            "name": "\u0417\u0430\u043a\u0430\u0437\u0430\u043d\u043e",
            "color": "FFFFFF",
            "sms": "0",
            "email": "0"
        },
        {
            "id": "3",
            "name": "\u041e\u043f\u0440\u0438\u0445\u043e\u0434\u043e\u0432\u0430\u043d\u043e \u043e\u0444\u0438\u0441\u043e\u043c",
            "color": "EDFF78",
            "sms": "0",
            "email": "1"
        },
        {
            "id": "6",
            "name": "\u041f\u0440\u0438\u043d\u044f\u0442\u043e",
            "color": "FAFFB3",
            "sms": "0",
            "email": "1"
        },
        {
            "id": "1",
            "name": "\u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e",
            "color": "BAF8FF",
            "sms": "0",
            "email": "0"
        },
        {
            "id": "5",
            "name": "\u0421\u043d\u044f\u0442\u043e",
            "color": "FFBADA",
            "sms": "0",
            "email": "1"
        }
    ]
}

Метод /panel/order/status, тип POST

Добавить статус заказа

Входные данные:
ПолеТипОписание
nametextНазвание
colortextЦвет
smsboolОтсылать SMS уведомление
emailboolОтсылать Email уведомление
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/status --data "name=Новый статус&color=ABABAB&sms=1&email=0"
Пример ответа:
{
    "status": "success"
}

Метод /panel/order/status/$ID, тип POST

Изменить статус заказа по id

Входные данные:
ПолеТипОписание
nametextНазвание
colortextЦвет
smsboolОтсылать SMS уведомление
emailboolОтсылать Email уведомление
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/status/1 --data "name=Измененное название способа&color=ABABAB&sms=1&email=0"
Пример ответа:
{
    "status": "success"
}

Метод /panel/order/remove_status, тип POST

Удалить статус заказа

Входные данные:
ПолеТипОписание
idintИдентификатор статуса
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/remove_status --data "id=3"
Пример ответа:
{
    "status": "success"
}
Пример неудачного ответа Статуса не существует:
{
    "status": "error"
}
Пример неудачного ответа Статус используется в настройках магазина:
{
    "status": "error",
    "text": "\u0421\u0442\u0430\u0442\u0443\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430."
}

Группы клиентов

Метод /panel/client/group, тип GET

Получить скидочные группы

Исходящие данные:
Содержит коллекцию groups
ПолеТипОписание
idintИдентификатор группы
nametextНаименование группы
discountintСкидка, %
commenttextКомментарий
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/client/group
Пример ответа:
{
    "groups": [
        {
            "group_id": "1",
            "name": "\u0420\u043e\u0437\u043d\u0438\u0446\u0430 - 0%",
            "discount": "0",
            "comment": ""
        },
        {
            "group_id": "7",
            "name": "\u041c\u0435\u043b\u043a\u0438\u0439 \u043e\u043f\u0442 - 5% - 5%",
            "discount": "5",
            "comment": ""
        }
    ]
}

Метод /panel/client/group_form, тип POST

Добавить скидочную группу

Входные данные:
ПолеТипОписание
nametextНазвание
discountintСкидка, %
commenttextКомментарий
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/client/group_form --data "name=Web&discount=1&comment=Интернет-клиенты"
Пример ответа:
{
    "status": "success",
    "text": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430."
}

Метод /panel/client/group_form/$ID, тип POST

Изменить скидочную группу по id

Входные данные:
ПолеТипОписание
nametextНазвание
discountintСкидка, %
commenttextКомментарий
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/group_form/8 --data "name=Web&discount=2&comment=Интернет-клиенты"
Пример ответа:
{
    "status": "success",
    "text": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430."
}

Метод /panel/client/remove_group, тип POST

Удалить скидочную группу

Входные данные:
ПолеТипОписание
idintИдентификатор группы
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/client/remove_group --data "id=3"
Пример ответа:
{
    "status": "success",
    "text": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0430."
}
Пример неудачного ответа:
{
    "status": "error",
    "text": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e."
}

Работа с клиентами

Метод /panel/client, тип GET

Получить список клиентов

Метод поддерживает следующие фильтры:

 Фильтры указываются в виде /panel/client/filter/ключ1/значение1/ключ2/значение2
Ключи и значения должны быть URL-кодированные

ПолеТипОписаниеПример
client_idintИдентификатор клиента (можно указать несколько идентификаторов через запятую)client_id/1 или client_id/1,2,3
client_nametextЧасть имени клиента или названия юр. лица
phonetextНомер телефона клиента1234567890 или +7(123)456-78-90
emailtextEmail клиента
is_wholesalerboolПризнак юр. лица, 1 — искать юр.лица, 0 — искать физ.лица
client_groupintИдентификатор скидочной группы клиента
date_fromdateРегистрация совершена с2016-12-31
date_todateРегистрация совершена до2017-01-04
manager_idintИдентификатор менеджера
pageintНомер страницы
per_pageintСколько клиентов показывать на одной странице (<=150)
Исходящие данные:
Содержит коллекцию clients
ПолеТипОписание
idintИдентификатор
phonetextТелефон (также используется как логин)
nametextИмя клиента
addresstextАдрес доставки
emailtextEmail
date_addeddatetimeДата регистрации
is_wholesalerboolЮр. лицо?
wholesaler_infotextИмя организации если клиент зарегистрирован как юр. лицо
date_modifieddatetimeДата изменения
group_idintИдентификатор скидочной группы
grouptextНазвание скидочной группы
manager_idintИдентификатор привязанного менеджера (0 если не привязан)
managertextИмя привязанного менеджера (null если не привязан)
point_idintИдентификатор офиса
pointtextПолное название офиса
statusboolКлиент активен?
commenttextКомментарий менеджеров для менеджеров
shipping_idintИдентификатор способа доставки по-умолчанию
balancefloatЛицевой счёт клиента
debtfloatЗадолженность клиента
blocked_debtfloatЗадолженность клиента по приостановленным заказам
limitintЛимит задолженности (кредит)
Содержит filters

Применённые фильтры

Содержит pages

Всего страниц

Пример использования:
curl http://логин:пароль@адрес_магазина/panel/client
Пример ответа:
{
    "clients": [
        {
            "id": "2",
            "phone": "2222222222",
            "name": "\u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a Saplab 2",
            "address": "\u0443\u043b. \u041b\u0435\u043d\u0438\u043d\u0430, 48",
            "email": "wholesaler@example.com",
            "date_added": "2017-01-14 22:50:08.610461",
            "is_wholesaler": "1",
            "wholesaler_info": "\u041e\u041e\u041e \"\u0420\u043e\u0433\u0430 \u0438 \u041a\u043e\u043f\u044b\u0442\u0430\"",
            "date_modified": "2017-01-15 17:31:21.560473",
            "group": "\u041c\u0435\u043b\u043a\u0438\u0439 \u043e\u043f\u0442",
            "group_id": "2",
            "manager": null,
            "manager_id": "0",
            "point": "\u041c\u043e\u0441\u043a\u0432\u0430: \u0443\u043b. \u041a\u0440\u0430\u0441\u043d\u043e\u0430\u0440\u043c\u0435\u0439\u0446\u0435\u0432, 49",
            "point_id": "1",
            "status": "1",
            "comment": "\u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043a\u043b\u0438\u0435\u043d\u0442",
            "shipping_id": "0",
            "balance": "0",
            "debt": "0",
            "blocked_debt": "0",
            "limit": "10000"
        },
        {
            "id": "1",
            "phone": "1111111111",
            "name": "\u041f\u0443\u043f\u043a\u0438\u043d \u0412\u0430\u0441\u0438\u043b\u0438\u0439 \u041f\u0435\u0442\u0440\u043e\u0432\u0438\u0447",
            "address": " \u0433. \u0423\u0444\u0430, \u0411\u0430\u043a\u0430\u043b\u0438\u043d\u0441\u043a\u0430\u044f \u0443\u043b., 23",
            "email": "regular@example.com",
            "date_added": "2017-01-05 13:03:32.703139",
            "is_wholesaler": "0",
            "wholesaler_info": "",
            "date_modified": "2017-01-15 17:28:24.919877",
            "group": "\u0420\u043e\u0437\u043d\u0438\u0446\u0430",
            "group_id": "1",
            "manager": null,
            "manager_id": "0",
            "point": "\u041c\u043e\u0441\u043a\u0432\u0430: \u0443\u043b. \u041a\u0440\u0430\u0441\u043d\u043e\u0430\u0440\u043c\u0435\u0439\u0446\u0435\u0432, 49",
            "point_id": "1",
            "status": "1",
            "comment": "\u041f\u043b\u043e\u0445\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442",
            "shipping_id": "1",
            "balance": "14",
            "debt": "9211",
            "blocked_debt": "0",
            "limit": "0"
        }
    ],
    "filters": {
        "per_page": 20
    },
    "pages": 1
}

Метод /panel/client/form/$ID, тип GET

Получить расширенные данные клиента

Исходящие данные:
Содержит массив client
ПолеТипОписание
idintИдентификатор
phonetextТелефон (также используется как логин)
nametextИмя клиента
addresstextАдрес доставки
emailtextEmail
statusboolКлиент активен?
group_idintИдентификатор скидочной группы
grouptextНазвание скидочной группы
discountintСкидка клиента (из скидочной группы)
shipping_idintИдентификатор способа доставки по-умолчанию
manager_idintИдентификатор привязанного менеджера (0 если не привязан)
is_wholesalerboolЮр. лицо?
wholesaler_infotextИмя организации если клиент зарегистрирован как юр. лицо
wholesaler_dataarrayДетальная информация о юридическом лице (отсутствувет если is_wholesaler=0)ПолеТипОписаниеbiktextБИК банкаinntextИННkpptextКППbanktextНазвание БанкаorgntextОРГНtypetextТип юридического лица (ООО, ПАО, ЗАО, ТОО, АО, ИП, ПБОЮЛ etc)accounttextР/CчетaddresstextЮридический адресorg_nametextНаименование юридического лицаbank_accounttextK/Cчет
commenttextКомментарий менеджеров для менеджеров
point_idintИдентификатор офиса
balancefloatЛицевой счёт клиента
debtfloatЗадолженность клиента
blocked_debtfloatЗадолженность клиента по приостановленным заказам
limitintЛимит задолженности (кредит)
date_addeddatetimeДата регистрации
date_modifieddatetimeДата изменения
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/client/form/2
Пример ответа:
{
    "client": {
        "id": "2",
        "phone": "2222222222",
        "name": "\u0421\u0435\u0440\u0433\u0435\u0439 \u0421\u0435\u0440\u0433\u0435\u0435\u0432\u0438\u0447",
        "address": "\u0443\u043b. \u041b\u0435\u043d\u0438\u043d\u0430, 48",
        "email": "wholesaler@example.com",
        "status": "1",
        "group_id": "2",
        "group": "\u041c\u0435\u043b\u043a\u0438\u0439 \u043e\u043f\u0442",
        "discount": "5",
        "shipping_id": "0",
        "manager_id": "0",
        "is_wholesaler": "1",
        "wholesaler_info": "\u041e\u041e\u041e \"\u0420\u043e\u0433\u0430 \u0438 \u041a\u043e\u043f\u044b\u0442\u0430\"",
        "comment": "\u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043a\u043b\u0438\u0435\u043d\u0442",
        "wholesaler_data": {
            "bik": "00000000000",
            "inn": "12345678901234",
            "kpp": "987654321",
            "bank": "\u0421\u0431\u0435\u0440\u0431\u0430\u043d\u043a",
            "orgn": "456789052",
            "type": "\u041e\u041e\u041e",
            "account": "00000000000",
            "address": "\u0443\u043b. \u041b\u0435\u043d\u0438\u043d\u0430, 48",
            "org_name": "\u0420\u043e\u0433\u0430 \u0438 \u041a\u043e\u043f\u044b\u0442\u0430",
            "bank_account": "00000000000"
        },
        "point_id": "1",
        "balance": "0",
        "debt": "0",
        "blocked_debt": "0",
        "limit": "10000",
        "date_added": "2017-01-14 22:50:08.610461",
        "date_modified": "2017-01-15 17:31:21.560473"
    }
}

Метод /panel/client/form, тип POST

Создать клиента

Входные данные:
ПолеТипОписание
nametextИмя клиента
emailtextEmail
phonetextНомер телефона
passwordtextПароль
addresstextАдрес доставки
point_idintИдентификатор офиса
manager_idintИдентификатор менеджера
group_idintИдентификатор скидочной группы
shipping_idintСпособ доставки по-умолчанию
limitintЛимит задолженности (кредит)
commenttextКомментарий
statusboolКлиент активен?
is_wholesalerboolЮр. лицо?
wholesalersarrayДанные юр.лицаПолеТипОписаниеbiktextБИК банкаinntextИННkpptextКППbanktextНазвание БанкаorgntextОРГНtypetextТип юридического лица (ООО, ПАО, ЗАО, ТОО, АО, ИП, ПБОЮЛ etc)accounttextР/CчетaddresstextЮридический адресorg_nametextНаименование юридического лицаbank_accounttextK/Cчет
Пример использования:
#Розничный клиент/физ. лицо:
              curl http://логин:пароль@адрес_магазина/panel/client/form --data "name=Пупкин Василий Петрович&email=regular@example.com&phone=1111111111&password=&address= г. Уфа, Бакалинская ул., 23&point_id=1&manager_id=0&group_id=1&shipping_id=1&limit=0&comment=Плохой клиент&status=on"
              #Оптовый клиент/юр.лицо:
              curl http://логин:пароль@адрес_магазина/panel/client/form --data "name=Сергей Сергеевич&email=wholesaler@example.com&phone=2222222222&password=&address=ул. Ленина, 48&point_id=1&manager_id=0&group_id=2&shipping_id=0&limit=10000&comment=Хороший клиент&status=on&is_wholesaler=on&wholesalers[type]=ООО&wholesalers[org_name]=Рога и Копыта&wholesalers[inn]=12345678901234&wholesalers[kpp]=987654321&wholesalers[orgn]=456789052&wholesalers[address]=ул. Ленина, 48&wholesalers[bank]=Сбербанк&wholesalers[bik]=00000000000&wholesalers[account]=00000000000&wholesalers[bank_account]=00000000000"
Пример ответа:
{
    "status": "success",
    "text": "\u041a\u043b\u0438\u0435\u043d\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d."
}
Пример неудачного ответа:
{
    "email": "\u041f\u043e\u043b\u0435 Email \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c.",
    "phone": "\u041f\u043e\u043b\u0435 \u0422\u0435\u043b\u0435\u0444\u043e\u043d \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c."
}

Метод /panel/client/form/$ID, тип POST

Изменить клиента

Входные данные:
ПолеТипОписание
nametextИмя клиента
emailtextEmail
phonetextНомер телефона
passwordtextПароль
addresstextАдрес доставки
point_idintИдентификатор офиса
manager_idintИдентификатор менеджера
group_idintИдентификатор скидочной группы
shipping_idintСпособ доставки по-умолчанию
limitintЛимит задолженности (кредит)
commenttextКомментарий
statusboolКлиент активен?
is_wholesalerboolЮр. лицо?
wholesalersarrayДанные юр.лицаПолеТипОписаниеbiktextБИК банкаinntextИННkpptextКППbanktextНазвание БанкаorgntextОРГНtypetextТип юридического лица (ООО, ПАО, ЗАО, ТОО, АО, ИП, ПБОЮЛ etc)accounttextР/CчетaddresstextЮридический адресorg_nametextНаименование юридического лицаbank_accounttextK/Cчет
Пример использования:
#Розничный клиент/физ. лицо:
              curl http://логин:пароль@адрес_магазина/panel/client/form/1 --data "name=Пупкин Василий Петрович&email=regular@example.com&phone=71111111111&password=&address= г. Уфа, Бакалинская ул., 23&point_id=1&manager_id=0&group_id=1&shipping_id=1&limit=0&comment=Плохой клиент&status=on"
              #Оптовый клиент/юр.лицо:
              curl http://логин:пароль@адрес_магазина/panel/client/form/2 --data "name=Сергей Сергеевич&email=wholesaler@example.com&phone=72222222222&password=&address=ул. Ленина, 48&point_id=1&manager_id=0&group_id=2&shipping_id=0&limit=10000&comment=Хороший клиент&status=on&is_wholesaler=on&wholesalers[type]=ООО&wholesalers[org_name]=Рога и Копыта&wholesalers[inn]=12345678901234&wholesalers[kpp]=987654321&wholesalers[orgn]=456789052&wholesalers[address]=ул. Ленина, 48&wholesalers[bank]=Сбербанк&wholesalers[bik]=00000000000&wholesalers[account]=00000000000&wholesalers[bank_account]=00000000000"
Пример ответа:
{
    "status": "success",
    "text": "\u0414\u0430\u043d\u043d\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b."
}
Пример неудачного ответа:
{
    "email": "\u041f\u043e\u043b\u0435 Email \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c."
}

Работа с балансами

Метод /panel/client/balance/$ID, тип GET

Получить операции с балансом клиента

Исходящие данные:
Содержит коллекцию groups
ПолеТипОписание
datedatetimeДата совершения операции
amountfloatСумма операции
commenttextОписание операции
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/client/balance/1
Пример ответа:
{
    "pages": 26,
    "transactions": [
        {
            "date": "2017-04-11 21:31:24.48985",
            "amount": "-109",
            "comment": "\u041e\u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 WEEN - 122-2412 (1 \u0448\u0442.)"
        },
        {
            "date": "2017-01-31 01:39:50.091795",
            "amount": "-270",
            "comment": "\u041e\u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 LYNX1 - PR48620 (1 \u0448\u0442.)"
        },
        {
            "date": "2017-01-31 01:39:46.254441",
            "amount": "270",
            "comment": "\u041e\u0442\u043c\u0435\u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u044b \u043f\u043e\u0437\u0438\u0446\u0438\u0438 LYNX1 - PR48620 (1 \u0448\u0442.)"
        },
        {
            "date": "2017-01-31 00:34:19.715461",
            "amount": "-266",
            "comment": "\u041e\u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 LYNX - PR48620 (1 \u0448\u0442.)"
        },
        {
            "date": "2017-01-31 00:34:19.715461",
            "amount": "-270",
            "comment": "\u041e\u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 LYNX - PR48620 (1 \u0448\u0442.)"
        },
        {
            "date": "2017-01-31 00:33:57.630052",
            "amount": "-270",
            "comment": "\u041e\u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 LYNX1 - PR48620 (1 \u0448\u0442.)"
        },
        {
            "date": "2016-12-19 17:57:43.788968",
            "amount": "-2989",
            "comment": "\u041e\u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 MONROE - G16287 (1 \u0448\u0442.)"
        },
        {
            "date": "2016-12-19 17:57:43.788968",
            "amount": "-2989",
            "comment": "\u041e\u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 MONROE - G16768 (1 \u0448\u0442.)"
        },
        {
            "date": "2016-12-19 17:57:43.788968",
            "amount": "-3104",
            "comment": "\u041e\u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 MONROE - G16768 (1 \u0448\u0442.)"
        },
        {
            "date": "2016-12-19 17:57:43.788968",
            "amount": "-1707",
            "comment": "\u041e\u043f\u043b\u0430\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 PATRON - PSA333222 (1 \u0448\u0442.)"
        }
    ],
    "page": 1
}

Метод /panel/client/add_transaction/$ID, тип GET

Добавить операцию

Входные данные:
ПолеТипОписание
amountfloatСумма (отрицательная для списания)
descriptiontextОписание операции
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/client/add_transaction/1 --data "amount=-100&description=API списание"

Работа с заказами

Метод /panel/order, тип GET

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

Метод поддерживает следующие фильтры:

 Фильтры указываются в виде /panel/order/filter/ключ1/значение1/ключ2/значение2
Ключи и значения должны быть URL-кодированные

ПолеТипОписаниеПример
order_idsintИдентификатор позиции (можно указать несколько идентификаторов через запятую)order_ids/1 или order_ids/1,2,3
invoicetextМетка заказа
articletextАртикул позиции
nametextЧасть наименования позиции
manager_idintИдентификатор менеджера
shipping_idintИдентификатор способа доставки
point_idintИдентификатор офиса
distributor_idintИдентификатор поставщика
order_statusintИдентификатор статуса
is_payedboolПозиция оплачена?
unignore_archivedboolВключить в выдачу позиции из архива
brandtextБренд позиции
client_nametextЧасть имени клиента или названия юр. лица
client_groupintИдентификатор скидочной группы клиента
date_fromdateЗаказ совершен с2016-12-31
date_todateЗаказ совершен до2017-01-04
pageintНомер страницы
per_pageintСколько позиций показывать на одной странице (<=150)
Исходящие данные:
Содержит коллекцию orders
ПолеТипОписание
idintИдентификатор
invoicetextНомер группы (заказа)
client_idintИдентификатор клиента
client_nametextИмя клиента
is_wholesalerboolКлиент юр. лицо?
wholesaler_infotextИмя организации если клиент зарегистрирован как юр. лицо
distributor_idintИдентификатор поставщика товара
distributor_nametextНазвание поставщика товара
brandtextБренд
articletextАртикул
nametextНаименование
delivarytime_minintСрок поставки от
delivarytime_maxintСрок поставки до
initial_pricefloatЦена закупа
pricefloatЦена
quantityintКоличество товара в позиции
totalfloatИтого
status_idintИдентификатор статуса
status_nametextСтатус
status_colortextЦвет статуса
shipping_idintИдентификатор способа доставки (0 если не выбрано)
shipping_nametextИмя способа доставки
shipping_addresstextАдрес доставки
doc_idintИдентификатор сгенерированного документа (null если не сгенерирован)
commentarrayКомментарий. Содержит поля client_comment и manager_comment(если есть)
deny_requestboolПросил ли клиент снять товар с заказа
is_archivedboolПозиция в архиве?
is_deniedboolПозиция отменена?
is_payedboolПозиция оплачена?
date_addeddatetimeДата создания заказа
date_modifieddatetimeДата изменения заказа
historyarrayИстория позицииПолеТипОписаниеdatedatetimeВремяcolortextЦветstatustextСтатусmanagertextКто внёс изменения
Содержит filters

Применённые фильтры

Содержит pages

Всего страниц

Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order
Пример ответа:
{
    "orders": [
        {
            "id": "20",
            "client_id": "2",
            "client_name": "\u041a\u043b\u0438\u0435\u043d\u0442 2",
            "wholesaler_info": "\u041e\u041e\u041e \"\u0420\u043e\u0433\u0430 \u0438 \u041a\u043e\u043f\u044b\u0442\u0430\"",
            "is_wholesaler": "1",
            "date_added": "2017-01-15 22:02:43.114625",
            "date_modified": "2017-01-15 22:02:43.114625",
            "distributor_id": "3",
            "distributor_name": "\u0444\u043e\u0440\u0443\u043c1",
            "invoice": "NZ-005",
            "brand": "KILEN",
            "article": "12133",
            "comment": {
                "client_comment": ""
            },
            "name": "\u041f\u0440\u0443\u0436\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u043d\u044f\u044f",
            "status_name": "\u041e\u043f\u0440\u0438\u0445\u043e\u0434\u043e\u0432\u0430\u043d\u043e \u043e\u0444\u0438\u0441\u043e\u043c",
            "deny_request": "0",
            "status_color": "EDFF78",
            "shipping_id": "0",
            "shipping_address": "",
            "shipping_name": null,
            "deliverytime_max": "0",
            "deliverytime_min": "0",
            "initial_price": "3958.07",
            "price": "3959",
            "doc_id": null,
            "total": "3959",
            "quantity": "1",
            "is_archived": "0",
            "status_id": "3",
            "is_payed": "0",
            "history": [
                {
                    "date": "2017-01-15 19:02:43.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"
                },
                {
                    "date": "2017-01-15 19:02:43.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"
                },
                {
                    "date": "2017-01-15 19:23:51.000000",
                    "color": "EDFF78",
                    "status": "\u041e\u043f\u0440\u0438\u0445\u043e\u0434\u043e\u0432\u0430\u043d\u043e \u043e\u0444\u0438\u0441\u043e\u043c",
                    "manager": "\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u041c\u0430\u0433\u0430\u0437\u0438\u043d\u0430"
                }
            ],
            "is_denied": "0"
        },
        {
            "id": "19",
            "client_id": "1",
            "client_name": "\u041f\u0443\u043f\u043a\u0438\u043d \u0412\u0430\u0441\u0438\u043b\u0438\u0439 \u041f\u0435\u0442\u0440\u043e\u0432\u0438\u0447",
            "is_wholesaler": "0",
            "wholesaler_info": "",
            "date_added": "2017-01-15 21:59:28.043621",
            "date_modified": "2017-01-15 21:59:28.043621",
            "distributor_id": "3",
            "distributor_name": "\u0444\u043e\u0440\u0443\u043c1",
            "invoice": "NZ-004",
            "brand": "UFI",
            "article": "30.896.00",
            "comment": {
                "client_comment": ""
            },
            "name": "\u0412\u043e\u0437\u0434\u0443\u0448\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440",
            "status_name": "\u041f\u0440\u0438\u043d\u044f\u0442\u043e",
            "deny_request": "0",
            "status_color": "FAFFB3",
            "shipping_id": "1",
            "shipping_address": " \u0433. \u0423\u0444\u0430, \u0411\u0430\u043a\u0430\u043b\u0438\u043d\u0441\u043a\u0430\u044f \u0443\u043b., 23",
            "shipping_name": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u043e \u0433\u043e\u0440\u043e\u0434\u0443",
            "deliverytime_max": "0",
            "deliverytime_min": "0",
            "initial_price": "473.38",
            "price": "474",
            "doc_id": null,
            "total": "474",
            "quantity": "1",
            "is_archived": "0",
            "status_id": "6",
            "is_payed": "0",
            "history": [
                {
                    "date": "2017-01-15 18:59:28.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"
                },
                {
                    "date": "2017-01-15 18:59:28.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"
                }
            ],
            "is_denied": "0"
        }
    ],
    "filters": {
        "per_page": 20
    },
    "pages": 1
}

Метод /panel/order/set_status/$ID, тип POST

Изменить статус позиции

Входные данные:
ПолеТипОписание
status_idintИдентификатор нового статуса
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/set_status/20 --data "status_id=5"
Пример ответа:
{
    "status": "success",
    "text": "\u0421\u0442\u0430\u0442\u0443\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0443\u0441\u043f\u0435\u0448\u043d\u043e."
}
Пример неудачного ответа:
{
    "status": "error",
    "text": "\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432."
}

Метод /panel/order/deny/$ID, тип GET

Снять позицию

Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/deny/20
Пример ответа:
{
    "status": "success",
    "text": "\u041f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u043d\u044f\u0442\u0430"
}

Метод /panel/order/pay/$ID, тип GET

Оплатить позицию. У клиента должно быть достаточно средств на лицевом счету.
При указании $ID оплаченной позиции снимает оплату с позиции. При снятии оплаты средства вернутся на лицевой счёт

Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/pay/20
Пример ответа для неоплаченной позиции:
{
    "status": "success",
    "text": "\u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u041e\u041e\u041e \"\u0420\u043e\u0433\u0430 \u0438 \u041a\u043e\u043f\u044b\u0442\u0430\"  \u043e\u043f\u043b\u0430\u0447\u0435\u043d\u044b."
}
Пример ответа для уже оплаченной позиции:
{
    "status": "success",
    "text": "\u041d\u0430 \u0441\u0447\u0451\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u041e\u041e\u041e \"\u0420\u043e\u0433\u0430 \u0438 \u041a\u043e\u043f\u044b\u0442\u0430\"  \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e 3959\u20bd "
}
Пример неудачного ответа при нехватке средств:
{
    "status": "error",
    "text": "\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043d\u0430 \u0431\u0430\u043b\u0430\u043d\u0441\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u041e\u041e\u041e \"\u0420\u043e\u0433\u0430 \u0438 \u041a\u043e\u043f\u044b\u0442\u0430\" , \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0431\u0430\u043b\u0430\u043d\u0441 \u043d\u0430 10000\u20bd"
}
Пример неудачного ответа для несуществующей позиции:
{
    "status": "error",
    "text": "\u041d\u0435\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0437\u0430\u043a\u0430\u0437\u043e\u0432."
}

Метод /panel/order/archive/$ID, тип GET

Добавить позицию в архив

Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/archive/20
Пример ответа:
{
    "status": "success",
    "text": "1 \u0437\u0430\u043a\u0430\u0437\u043e\u0432 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u0430\u0440\u0445\u0438\u0432."
}
Пример неудачного ответа:
{
    "status": "error",
    "text": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043a\u0430\u0437\u044b \u0432 \u0430\u0440\u0445\u0438\u0432."
}

Метод /panel/order/unarchive/$ID, тип GET

Снять позицию

Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/deny/20
Пример ответа:
{
    "status": "success",
    "text": "\u0417\u0430\u043a\u0430\u0437 \u0440\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0437\u0430\u043a\u0430\u0437\u043e\u0432."
}
Пример неудачного ответа:
{
    "status": "error",
    "text": "\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0437\u0430\u043a\u0430\u0437\u043e\u0432."
}

Метод /panel/order/documentds/$IDs, тип GET

Создать документы на выбранные позиции

Входные данные:
ПолеТипОписание
$IDsintИдентификаторы позиций через запятую. Указываются в Query String
Пример использования:
curl http://логин:пароль@адрес_магазина/panel/order/documents/19,20,21
Пример ответа:
{
    "status": "success",
    "text": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b."
}

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