Ревизия 1.2.3 от 14.04.2025

ЧП «ШАТЕ-М Плюс»


Уважаемые клиенты, информируем Вас о том, что нами было введено лимитирование запросов проценки для предоставления более качественного сервиса, чтобы не нагружать нашу систему и обеспечить ее быструю и корректную работу.
Текущие лимиты на запросы цены артикула следующие:
За 15 минут B2B портал: 250
За 15 минут API: 1200
За день B2B портал: 2500
За день B2B API: 40000

В случае, если запросов по вышеприведенным лимитам недостаточно, мы предлагаем Вам или начать работать с нашими прайс-листами, или запросить выставление индивидуальных лимитов через Вашего менеджера.


1. Auth (Авторизация)

ВНИМАНИЕ! Прежде чем начать работу с API - уточните у Вашего менеджера о доступности функционал API Вам.

Мы используем тип авторизации Bearer

Для получения токена есть 2 способа:

●       передать login и password с телом запроса типа Content-type application/x-www-form-urlencoded;

●       передать ApiKey (получаете от Вашего менеджера) с телом запроса типа Content-type application/x-www-form-urlencoded.

Полученный в ответе токен необходимо добавлять в заголовок (Headers) всех запросов в параметр Authorization (Authorization: Bearer <access_token>).

1.1 POST /api/v1/auth/login (Авторизация по логину и паролю)

Авторизация через логин и пароль от личного кабинета.

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
Login Логин пользователя Test123 Да
Password Пароль 123456789 Да

Ответ метода:

{
"access_token": "eyJhbGciOiJQUzI1NiIsInR5cCI6ImF0K2p3dCJ9",
"expires_in": 3600,
"token_type": "Bearer",
"refresh_token": "",
"scope": "ShateAuth"
}
Параметр Описание
Access_token Токен для работы с api
Expires_in Время жизни токена (сек)
Token_type Тип токена
Refresh_token Токен обновления
scope Название сервиса, для которых применяется токен.

1.2 POST /api/v1/auth/loginByapiKey (Авторизация по ApiKey)

Авторизация через apikey, полученный от Вашего менеджера

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
apikey APi ключ, полученный от менеджера {111АА11-111А-1B11-1DA1-111111111F1E} Да

Ответ метода аналогичен POST /api/v1/auth/login



2. Articles (Информация по артикулу)

2.1 GET /api/v1/articles/{articleId} (Подробная информация об артикуле)

Позволяет получить информацию по идентификатору артикула.
Поля tradeMark, contents и extendedInfo добавляются в ответ только в случае передачи include.

Важно! Параметр include может значительно увеличивать время ответа (из-за объема данных).

Для получения внутреннего идентификатора товара воспользуйтесь методами - 

GET /api/v1/articles/search/{articleSearchString} или POST /api/v1/articles/search

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
ArticleId Внутренний идентификатор артикула 1248291 Да
Include При указании параметра Вы получите дополнительную информацию по артикулу (картинки, применяемость, ОЕ-номера,долнительные параметры, информация по бренду) Contents, extended_info, trademark Нет

Ответ метода:

{
"article": {
  "id": 1248288,
  "code": "OC100",
  "tradeMarkName": "KNECHT",
  "name": "Фильтр масляный",
  "description": "Замена - OC976. BX 82-93",
  "unitOfMeasure": "ШТ"
},
"tradeMark": {
  "name": "KNECHT",
  "country": "Германия",
  "description": "Торговая марка KNECHT принадлежит концерну...",
  "url": "http://www.mahle.com",
  "catalogUrl": "http://www.mahle.com",
  "extendedWarranty": false
},
"contents": [
  {
    "sortOrder": 0,
    "contentId": "17BD2871DF2E9294E85B12E039929D5791EE8A0303728BFA9A22B6B0E8F8DFCB",
    "contentType": "ImageTwoDimensional"
  }
],
"extendedInfo": {
  "extendedDescription": "Описание",
  "originals": [
    {
      "articleCodes": [
        "string"
      ],
      "tradeMarkName": "KNECHT"
    }
  ],
  "characteristics": [
    {
      "key": "Внутренний диаметр 2 (мм)",
      "value": "62,0"
    }
  ],
  "applicability": [
    {
      "name": "CITROEN",
      "models": [
        {
          "name": "JUMPER фургон (230L)",
          "modifications": [
            {
              "name": "CITROEN JUMPER Фургон (230L) 2.0",
              "mnEngineCode": "RFW (XU10J2U)",
              "beginDate": "199403",
              "endDate": "200204",
              "kWt": "80",
              "hPower": "109",
              "cylinders": "4",
              "vol": "1998"
            }
          ]
        }
      ]
    }
  ]
}
}
Параметр Описание
Id Внутренний идентификатор артикула
TradeMarkName Наименование торговой марки.
Code Каталожный номер
Name Описание товара.
Description Дополнительное описание товара
UnitOfMeasure Единица измерения
Contents: Медиаконтент (картинки, видео). Добавляются в ответ только в случае передачи include = contents
SortOrder Порядок отображения картинки
ContentId Идентификатор картинки, для дальнейшего использования в функции POST api/v1/contents/search
ContentType Формат изображения – 2d, 3d картинки
extended_info: Расширенная информация о товаре (применяемость, аналоги, характеристики). Добавляются в ответ только в случае передачи include = extended_info.
extendedDescription Подробное описание
Originals:
articleCode Оригинальный каталожный номер
trademarkname Оригинальная торговая марка
Characteristics:
key Параметр характеристики детали
value Значение параметра
Applicability:
name Название марки
models Название модели
Modifications:
name Название модификации
mnEngineCode Код двигателя
beginDate Дата начала производства
endDate Дата конца производства
kWt кВт
HPower Количество лошадиных сил
cylinders Количество цилиндров
vol Объем двигателя
Trademark: Подробная информация по торговой марке. Добавляется в ответ только в случае передачи include = trademark
Name Название бренда
Country Страна
Description Информация о производителе
url Ссылка на сайт производителя
catalogurl Ссылка на каталог производителя
extendedWarranty Попадает ли бренд под расширенную гарантию для сети участников СТО

2.2 GET /api/v1/articles/{articleId}/analogs (Получение аналогов)

Получение информации об аналогах товара по его идентификатору.

Если результат аналогов содержит более одного артикула, параметры contents и extended_Info не учитываются, соответствующие поля не заполняются.

Для получения внутреннего идентификатора товара воспользуйтесь методами - 

GET /api/v1/articles/search/{articleSearchString} или POST /api/v1/articles/search.

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
ArticleId Внутренний идентификатор артикула 1248291 Да
Include При указании параметра Вы получите дополнительную информацию по артикулу (картинки, применяемость, ОЕ-номера,долнительные параметры, информация по бренду) Contents, extended_info, trademark Нет

Ответ аналогичен предыдущему методу GET /api/v1/articles/{articleId}

2.3 GET /api/v1/articles/search (Поиск по строке поиска)

Получение информации о товаре по артикулу товара.

Если результат содержит более одного артикула, параметры contents и extended_Info не учитываются, соответствующие поля не заполняются.

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
SearchString Артикул товара Можно вводить как со спецсимволами, так и без. OC105 Да
Include При указании параметра Вы получите дополнительную информацию по артикулу (картинки, применяемость, ОЕ-номера,долнительные параметры, информация по бренду) Contents, extended_info, trademark Нет
TradeMarkNames Список торговых марок KNECHT Нет

Ответ метода аналогичен GET /api/v1/articles/{articleId}.

2.4 POST /api/v1/articles/search (Поиск артикулов (по фильтру)

Получение информации о массиве артикулов, используя внутренние идентификаторы или каталожные номера.

Если результат содержит более одного артикула, параметры contents и extended_Info не учитываются, соответствующие поля не заполняются.

Для получения внутреннего идентификатора товара воспользуйтесь методами:

GET /api/v1/articles/search/{articleSearchString} или POST /api/v1/articles/search.

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
Keys: Коллекция артикулов
ArticleCode Артикул OC105 Да (при условии, если не заполнен Ids)
TradeMarkName Наименование торговой марки. KNECHT Да (при условии, если не заполнен Ids)
Ids: Коллекция внутренних идентификаторов
Id Внутренний идентификатор артикула 1248291 Да (при условии, если не заполнен keys)
Include При указании параметра Вы получите дополнительную информацию по артикулу (картинки, применяемость, ОЕ-номера,долнительные параметры, информация по бренду) Contents, extended_info, trademark Нет

Ответ аналогичен предыдущему методу GET /api/v1/articles/{articleId}.



3. CartItems (Корзина)

3.1 GET /api/v1/cartitems/{cartItemId} (Получение строки корзины)

Получение информации о строке корзины

Идентификатор строки корзины Вы получаете в ответе метода POST /api/v1/cartitems.

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
CartItemId Внутренний идентификатор строки 26151145 Да
DeliveryAddressCode Код адреса доставки Д1 Нет
AgreementCode Номер договора клиента SAGR1 Нет

Ответ метода:

{
"id": 1,
"locationCode": "SHATE-01",
"locationCodeReal": "SHATE-01",
"agreementCode": "SAGR1",
"article": {
  "id": 1248288,
  "code": "OC100",
  "tradeMarkName": "KNECHT",
  "name": "Фильтр масляный",
  "description": "Замена - OC976. BX 82-93",
  "unitOfMeasure": "ШТ"
},
"price": 8.5,
"priceWithMargin": 8.5,
"priceType": "Internal",
"priceMax": 12.32,
"importAllowance": 15,
"currencyCode": "USD",
"quantity": 1,
"quantityInfo": {
  "available": 5,
  "availableType": "Equal",
  "multiplicity": 1,
  "minimum": 1,
  "maximum": 100
},
"addInfo": {
  "city": "Минск",
  "isSale": true,
  "comment": "Царапины справа",
  "isReturnAllowed": true,
  "warningText": "Возврат запрещен. Нельзя заказывать масла моторные и тех. жидкости"
},
"createDateTime": "2022-12-19T08:39:15.525Z",
"comment": "Comment",
"deliveryDateTime": "2022-12-19T08:39:15.525Z",
"shippingDateTime": "2022-12-19T08:39:15.525Z",
"hash": 123456789,
"isImport": true,
"isFree": true
}
Параметр Описание
ID Идентификатор строки в корзине
LocationCode Код склада, с которого будет отгружен товар
LocationCodeReal Код склада, на котором находится товар
AgreementCode Номер договора клиента
Article[]:
Id Внутренний идентификатор артикула
Code Артикул товара
TradeMarkName Торговая марка
Name Описание
Description Подробная информация
UnitOfMeasure Единица измерения
Price Цена
PriceWithMargin Цена (продажи) с пользовательской наценкой
PriceType Тип прайса
PriceMax Максимальная цена реализации
ImportAllowance Надбавка импортера, %
CurrencyCode Код валюты
Quantity Количество
QuantityInfo:
avavilable Доступное количество
avavilableType Тип количества
multiplicity Кратность
minimum Минимальное количество к заказу
maximum Максимальное количество к заказу
AddInfo:
city Город, в котором расположен склад
isSale Распродажа
comment Дополнительная информация
isReturnAllowed Возврат разрешен
warningText Текст предупреждения
CreateDateTime Дата добавления в корзину
Comment Комментарий
DeliveryDateTime Дата доставки по указанному адресу или адресу по умолчанию
shippingDateTime Дата отгрузки
Hash Идентификатор ценового предложения
IsImport Импортный/не импортный товар
IsFree Регулируемый/нерегулируемый товар

3.2 PATCH /api/v1/cartitems/{cartItemId} (Обновление строки корзины)

Обновление данных строки корзины (количество, цена, комментарий).

Можно изменять не все значения, а, например, только quantity.

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
CartItemId Внутренний идентификатор строки 26151145 Да
Requestbody: Да
quantity Количество 1
price Цена 0
comment Комментарий Для Пети

Ответ аналогичен предыдущему методу GET /api/v1/cartitems/{cartItemId}.

3.3 DEL /api/v1/cartitems/{cartItemId} (Удаление строки корзины)

Удаление строки корзины по ее идентификатору.

Идентификатор корзины Вы получаете в ответе метода POST /api/v1/cartitems.

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
CartItemId Внутренний идентификатор строки 26151145 Да

Ответом будет код статуса http.

3.4 GET /api/v1/cartitems (Получение всех строк корзины)

Получение всех строк корзины.

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
DeliveryAddressCode Код адреса доставки Д1 Нет
AgreementCode Номер договора клиента SAGR1 Нет

Ответ аналогичен предыдущему методу GET /api/v1/cartitems/{cartItemId}.

Ответ при возникновении ошибки:

{
    "code" : "DefaultAgreementNotFound",
    "description" : "Договор по умолчанию не найден",
    "messages": [
        "Внимание! Договор по умолчанию не найден. Пожалуйста, свяжитесь с вашим менеджером."
    ]
}
          
Поле Описание
Code Код ошибки
Description Описание ошибки
Messages Коллекция сообщений ошибки

3.5 POST /api/v1/cartitems (Добавление строк в корзину)

Добавление строки в корзину.

Предварительно требуется проценка товара для получения параметра priceId (взять из ответа методов POST /api/v1/prices/search и POST /api/v1/prices/search/with_article_info параметр Id (из коллекции Prices)).

Входящие параметры:

Параметр Описание Пример Обязательный параметр
Requestbody: Да
quantity Количество 1
priceId Идентификатор цены 58A82086838AA9FFDE305539C21
BA3DF659E574C43A3058E F4D6B
84A8FB364ACACFA835B359EFE5
D9E2A930A542E0C9106F909B401
DA24 0DDD8C287201AB37B05C5
AE2DC36495098494CA7118FE3B5B
comment Комментарий Для Пети

Ответ аналогичен предыдущему методу GET /api/v1/cartitems/{cartItemId}.

3.6 DEL /api/v1/cartitems (Удаление всех строк корзины)

Удаление всех строк из корзины.

Входящих параметров нет.

Ответом будет код статуса http.



4. Contents (Медиаконтент)

4.1 POST /api/v1/contents/search (Получение контента)

Получение ссылки на изображение товара.

Предварительно требуется получить параметр ContentId из методов информации об артикуле (см. гл. 2 – Articles).

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
Requestbody: Да
ContentId Внутренний идентификатор картинки, получить можно из метода GET /api/v1/articles/{articleId} 17BD2871DF2E92947C990B256EA1697EF 47C6F999378A4E19A22B6B0E8F8DFCB
HeightSize Высота картинки 1000
WidthSize Ширина картинки 100

Ответ метода:

[
{
  "id": "17BD2871DF2E9294E85B12E039929D5791EE8A0303728BFA9A22B6B0E8F8DFCB",
  "value": "data:image/webp;base64..."
} 
]
Параметр Описание
Id Внутренний идентификатор картинки
Value Ссылка на картинку


5. Customer (ПОЛЬЗОВАТЕЛЬ)

5.1 GET /api/v1/customer/agreements (Получение договоров)

Получение активных договоров пользователя (кроме договоров по программе лояльности и экваирингу).

Внутренний номер договора используется при оформлении заказа.

Входных параметров нет.

Ответ метода:

[
{
  "code": "SAGR1",
  "agreementGroup": "НАЛ",
  "description": "Физ. лицо",
  "locationCode": "SHATE-01",
  "currencyCode": "USD",
  "isActive": true,
  "isEnabledPickup": true,
  "isEnabledDelivery": true
}
]
Параметр Описание
Code Внутренний номер договора
AgreementGroup Код группы договора
Description Название договора
LocationCode Код склада (при оформлении заказа код склада договора должен соответствовать коду склада строк корзины).
CurrencyCode Код валюты договора
isActive Активен (true/false). Если договор не активен,  по нему нельзя оформить заказ.
isEnabledPickup Информирует пользователя о доступности договора оформления заказа на самовывоз (true/false).
isEnabledDelivery Информирует пользователя о доступности договора оформления заказа на доставку (true/false).

5.2 GET /api/v1/customer/info

Получение информации о клиенте

Данная информация отображается в личном кабинете в разделе «Персональные данные».

Входящих параметров нет.

Ответ метода:

[
{
  "login": "Test123",
  "code": "S0001",
  "name": "Тест",
  "phone": "+123456789",
  "email": "test@gmail.com",
  "defaultDeliveryAddressCode": "Д1"
}
]
Параметр Описание
login Логин
Code Внутренний номер клиента
Name Название клиента
Phone Телефон клиента
Email Почта клиента
defaultDeliveryAddressCode Код адреса доставки по умолчанию


6. Delivery (ДОСТАВКА)

6.1 GET /api/v1/delivery/addresses (Получение адресов доставок)

Получение доступных адресов доставок пользователя.

Входящих параметров нет.

Ответ метода:

[
{
  "code": "Д1",
  "city": "Минск",
  "address": "ул. Мира, д. 2А",
  "deliveryZoneCode": "MINSK01"
}
]
Параметр Описание
Code Код адреса доставки
City Город
Address Адрес клиента
DeliveryZoneCode Внутренний код зоны доставки

6.2 GET /api/v1/delivery/availableDateTimes (Получение доступных дат для доставки)

Получение даты и времени доступных услуг по доставкам.

Предварительно требуется получить код склада или из справочника складов (GET /api/v1/locations), или из корзины (GET /api/v1/cartitems/)

Полученную дату можно использовать в параметре DeliveryDate при оформлении доставки.

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
locationCode Код склада, с которого будет отправлен товар SHATE-S01 Да
DeliveryAddressCode Внутренний код адреса доставки (взять из метода GET /api/v1/delivery/addresses Д1 Да
DaysCount Количество дней от текущей даты (по умолчанию 7) 7 Нет

Ответ метода: массив дат формата 2020-12-02T22:00:00.


7. Locations (Склады)

7.1 GET /api/v1/locations (Получение списка складов)

Получение списка складов компании, на которых находится товар и с которых возможна отгрузка товара.

Нужно использовать для метода получения доступных дат доставки (GET /api/v1/delivery/availableDateTimes).

Входящих параметров у метода нет.

Ответ метода:

[
{
  "code": "SHATE-S01",
  "name": "Центральный склад Привольный",
  "city": "Привольный"
}
]
Параметр Описание
Code Внутренний номер склада
Name Название склада
city Город, в котором расположен склад


8. OrderItems (Строки заказа)

8.1 GET /api/v1/orderitems/{orderItemId}/statuseshistory (Получение движения по строке заказа)

Просмотр текущего статуса строки заказа.

Предварительно требуется получить идентификатор строки заказа (из метода GET /api/v1/orders).

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
OrderItemid Идентификатор строки заказа 87865469 Да

Ответ метода:

[
{
  "statusCode": 30,
  "dateTime": "2022-12-19T09:03:51.240Z"
}
]
Параметр Описание
StatusCode Код статуса
dateTime Дата и время изменения статуса


9. OrderItemStatusCodes (Статусы заказов)

9.1 GET /api/v1/orderItemStatusCodes

Получение справочника возможных статусов заказов.

Входящих параметров нет.

Ответ метода:

[
{
  "code": 30,
  "name": "В работе",
  "description": "Заказ успешно обработан"
  "isFinal": false
}
]
Параметр Описание
Code Код статуса
Name Наименование статуса
Description Описание
IsFinal Флаг финальности статуса


10. Orders (Заказы)

Заказ можно оформить 2-мя методами:

●        упрощенно (без размещения в корзину) после проценки товара;

●        после добавления строк в корзину

10.1 GET /api/v1/orders (Получение строк заказа)

Получение списка заказов с возможностью фильтрации по дате, артикулу, бренду, номеру заказа или статусу.

Для фильтрации по статусу нужно получить код статусов из справочника (GET /api/v1/orderItemStatusCodes).

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
Page Страница (по умолчанию первая страница) 1 Да
PageSize Кол-во элементов на 1 странице (по умолчанию – 25) 25 Да
StartDateTime Дата начала 2020-12-01 Нет
EndDateTime Дата окончания 2020-12-03 Нет
Ids Внутренний идентификатор заказа 20826500 Нет
TradeMarkName Торговая марка KNECHT Нет
ArticleCode Артикул OC105 Нет
StatusCode Кода статусов заказа 140 Нет

Ответ метода:

[
{
  "id": 1,
  "createDateTime": "2022-12-19T09:05:02.945Z",
  "deliveryInfo": {
    "deliveryAddressCode": "Д1"
  },
  "agreementCode": "SAGR1",
  "currencyCode": "USD",
  "totalSum": 8.5,
  "comment": "Comment",
  "note": "Note",
  "orderItems": [
    {
      "id": 1,
      "article": {
        "id": 1248288,
        "code": "OC100",
        "tradeMarkName": "KNECHT",
        "name": "Фильтр масляный",
        "description": "Замена - OC976. BX 82-93",
        "unitOfMeasure": "ШТ"
      },
      "quantity": 1,
      "quantityToShip": 0,
      "quantityShipped": 0,
      "deliveryDateTime": "2022-12-19T09:05:02.945Z",
      "price": 8.5,
      "totalSum": 8.5,
      "statusCode": 0,
      "comment": "Comment"
      "сanReturn": true
    }
  ]
}
]
Параметр Описание
Id Внутренний идентификатор заказа
CreateDateTime Дата и время заказа
DeliveryInfo: Метод доставки
DeliveryAddressCode Код адреса доставки
AgreementCode Внутренний номер договора
TotalSum Суммарная стоимость заказа
CurrencyCode Код валюты
Comment Комментарий
Note Заметки
OrderItems[]: Строки заказа
Id Идентификатор строки заказа
Article[]:
Id Внутренний идентификатор артикула
Code Артикул товара
TradeMarkName Торговая марка
Name Описание
Description Подробная информация
UnitOfMeasure Единица измерения
Quantity Количество
QuantityToShip Количество на складе, которое зарезервировано для клиента
QuantityShipped Отгруженное количество, которое уедет клиенту
DeliveryDateTime Дата и время доставки
Price Цена за единицу
TotalSum Сумма
StatusCode Код статуса
Comment Комментарий
CanReturn Возможен ли возврат по данному товару

10.2 POST /api/v1/orders/byPriceItems (Оформление заказа без корзины через ценовое предложение)

Быстрое оформление заказа минуя этап добавления в корзину.

Условия:

●        Все строки заказа должны быть из одного locationCode, иначе заказ не будет оформлен.

●        Если deliveryInfo (информация о доставке) == null или не передан, то заказ будет оформлен на самовывоз.

●        Если deliveryDateTime == null, то заказ будет оформлен на ближайшую возможную доставку (в зависимости от deliveryType).

●        expectedDateTimeOfArrivalAllItems - дата и время (UTC) прибытия всех строк заказа к клиенту, к которой все строки должны быть отгружены/доставлены. Все строки заказа будут валидироваться на возможность отгрузки/доставки (в зависимости от параметров заказа) к указанной дате и времени. И если хоть одна строка не будет отгружена/доставлена к данному времени (дата и время отгрузки/доставки по строке больше переданного значения),то заказ не будет создан. Не обязательно к заполнению. Если не заполнено, то дата и время доставки/отгрузки не будут валидироваться.

●        Если код группы договора == "НАЛ", "ЭКВАИР" или "МАГ", то поля fio и phone обязательны к заполнению.

Метод принимает на вход параметры (идентификатор прайса, дату доставки) из ответа проценки POST /api/v1/prices/search.

В случае изменения цены в меньшую сторону в пределах допустимого отклонения появится сообщение (поле warnings) об изменении цены и значения старой и новой цены (Пример: "Произошло изменение цены в пределах допустимого отклонения. oldPrice : 3.72 ; newPrice : 3.44 ")

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
AgreementCode Внутренний номер договора. Получить с помощью метода Get api/v1/agreements. SAGR112470 Да
Comment Комментарий для менеджера Позвонить перед выездом Нет
Note Заметки к заказу Для Васи Нет
fio ФИО Иванов Иван Иванович Да (если выбран договор НАЛ)
phone Телефон +375 29 123 45 67 Да (если выбран договор группы НАЛ)
DeliveryInfo {}: Нет
DeliveryType Тип доставки Many Delivery – несколькими доставками по мере поступления товара One Delivery – одной доставкой (по самой поздней дате доставки в строке заказа) Да
DeliveryDateTime Дата и время доставки 2020-12-02T22:00:00 Нет
DeliveryAddressCode Код адреса доставки. Взять из метода /api/v1/delivery/addresses поле Code. Д1 Да
expectedDateTimeof ArrivalAllItems Дата и время доставки 2020-12-02T22:00:00 Нет
AgreeWithTerms OfDelivery Соглашение с политикой обработки персональных данных. При несогласии заказ оформлен не будет. True/False Да
AgreeWithPersonalData ProcessingPolicy AndUserAgreement Соглашение с условиями поставок под заказ. При несогласии заказ оформлен не будет. True/False Да
PriceItems[]: Строки для заказа:
PriceId Идентификатор цены (взять из ответа методов POST /api/v1/prices/search и POST /api/v1/prices/search/with_article_info параметр Id (из коллекции Prices)). 58A82086838AA9FFDE305539C21BA3DF659E574C43A3058E F4D6B84A8FB364ACACFA835B359EFE5D9E2A930A542E0C9106F909 B401DA240DDD8C287201AB37B05C5AE2DC36495098494CA7118FE3B5B Да
Quantity Количество для заказа 2 Да
Comment Комментарий к строке заказа Skoda Octavia Нет

Ответ метода:

{
"id": 1,
"createDateTime": "2022-12-19T09:10:30.131Z",
"deliveryInfo": {
  "deliveryAddressCode": "Д1"
},
"agreementCode": "SAGR1",
"currencyCode": "USD",
"totalSum": 8.5,
"comment": "Comment",
"note": "Note",
"orderItems": [
  {
    "id": 1,
    "article": {
      "id": 1248288,
      "code": "OC100",
      "tradeMarkName": "KNECHT",
      "name": "Фильтр масляный",
      "description": "Замена - OC976. BX 82-93",
      "unitOfMeasure": "ШТ"
    },
    "quantity": 1,
    "quantityToShip": 0,
    "quantityShipped": 0,
    "deliveryDateTime": "2022-12-19T09:10:30.131Z",
    "price": 8.5,
    "totalSum": 8.5,
    "statusCode": 0,
    "comment": "Comment"
    "warnings": null
  }
]
}
Параметр Описание
Id Номер заказа
CreatedDateTime Дата и время создания заказа
DeliveryInfo {}:
DeliveryAddressCode Код адреса доставки.
AgreementCode Внутренний номер договора.
TotalSum Суммарная стоимость заказа
CurrencyCode Код валюты
Comment Комментарий
Note Заметки
OrderItems[]:
Id Внутренний идентификатор артикула
Code Артикул товара
TradeMarkName Торговая марка
Name Описание
Description Подробная информация
UnitOfMeasure Единица измерения
Quantity Количество
QuantityToShip Количество на складе, которое зарезервировано для клиента
QuantityShipped Отгруженное количество, которое уедет клиенту
DeliveryDateTime Дата и время доставки
Price Цена за единицу
TotalSum Сумма
StatusCode Код статуса строки заказа
Comment Комментарий
Warnings[]: Предупреждения. Массив строк

Ответ при возникновении ошибки:

{
"errors": [
  "Товар не оформлен в заказ. По договору 100% предоплата."
],
"errorDescriptions": {
  "additionalProp1": "Ошибка валидации строк заказа"
},
"priceItemErrors": [
  {
    "priceId": 58A82086838AA9FFDE305539C21BA3DF659E574C43A3058EF4D6B84A8FB364ACACFA835B359EFE5D9E2A930A542E0C9106F909B401DA240DDD8C287201AB37B05C5AE2DC36495098494CA7118FE3B5BF,
    "hash": 0,
    "current": {
      "price": 8.5,
      "priceWithMargin": 8.5,
      "quantityInfo": {
        "available": 5,
        "availableType": "Equal",
        "multiplicity": 1,
        "minimum": 1,
        "maximum": null
      },
      "deliveryDateTime": "2022-12-19T09:13:32.262Z",
      "shippingDateTime": "2022-12-19T09:13:32.262Z"
    },
    "errors": [
      "Unknown"
    ]
  }
]
}
Поле Описание
Errors[]: Коллекция ошибок заказа
Message Текст ошибки
ErrorDescriptions{}: Словарь с расшифровками ошибок.
PriceItemErrors[]: Коллекция строк, в которых произошла ошибка
PriceId Идентификатор цены
Hash Идентификатор ценового предложения
Current
Price Цена артикула из базы
PriceWithMargin Цена с наценкой
QuantityInfo:
available Доступное количество
availableType Тип количества
multiplicity Кратность
minimum Минимальное количество к заказу
maximum Максимальное количество к заказу
DeliveryDateTime Дата доставки
ShippingDateTime Дата отгрузки (самовывоза со склада ШМ+)
Errors[] Коллекция ошибок к строке заказа
Message Ошибка строки заказа, начинается с кода 1хх

10.3 POST /api/v1/orders/byCartItems (оформление заказа через строки корзины)

Оформление в заказ строк, находящихся в корзине.

Условия

●        Все строки заказа должны быть из одного locationCode, иначе заказ не будет оформлен.

●        Если deliveryInfo (информация о доставке) == null или не передан, то заказ будет оформлен на самовывоз.

●        Если deliveryDateTime == null, то заказ будет оформлен на ближайшую возможную доставку (в зависимости от deliveryType).

●        expectedDateTimeOfArrivalAllItems - дата и время (UTC) прибытия всех строк заказа к клиенту,к которой все строки должны быть отгружены/доставлены.Все строки заказа будут валидироваться на возможность отгрузки/доставки(в зависимости от параметров заказа) к указанной дате и времени.И если хоть одна строка не будет отгружена/доставлена к данному времени(дата и время отгрузки/доставки по строке больше переданного значения),то заказ не будет создан. Не обязательно к заполнению. Если не заполнено, то дата и время доставки/отгрузки не будут валидироваться.

●        Если код группы договора == "НАЛ" или "ЭКВАИР" или "МАГ", то поля fio и phone обязательны к заполнению.

В случае изменения цены в меньшую сторону в пределах допустимого отклонения появится сообщение (поле warnings) об изменении цены и значения старой и новой цены (Пример: "Произошло изменение цены в пределах допустимого отклонения. oldPrice : 3.72 ; newPrice : 3.44 ")

Метод принимает на вход параметры из ответа получения строк корзины GET /api/v1/cartitems.

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
AgreementCode Внутренний номер договора. Получить с помощью метода Get api/v1/agreements. SAGR112470 Да
Comment Комментарий для менеджера Позвонить перед выездом Нет
Note Заметки к заказу Для Васи Нет
fio ФИО Иванов Иван Иванович Да (если выбран договор НАЛ или ЭКВАИР)
phone Телефон +375 29 123 45 67 Да (если выбран договор НАЛ или ЭКВАИР)
DeliveryInfo {}: Нет
DeliveryType Тип доставки Many Delivery – несколькими доставками по мере поступления товара One Delivery – одной доставкой (по самой поздней дате доставки в строке заказа) Да
DeliveryDateTime Дата и время доставки 2020-12-02T22:00:00 Нет
DeliveryAddressCode Код адреса доставки. Взять из метода /api/v1/delivery/addresses поле Code. Д1 Да
expectedDateTimeofArrivalAllItems Дата и время доставки 2020-12-02T22:00:00 Нет
AgreeWithTermsOfDelivery Соглашение с политикой обработки персональных данных. При несогласии заказ оформлен не будет. True/False Да
AgreeWithPersonalDataProcessing PolicyAndUserAgreement Соглашение с условиями поставок под заказ. При несогласии заказ оформлен не будет. True/False Да
CartItems[]: Коллекция строк корзины:
Id Идентификатор строки корзины 87865469 Да

Ответ метода аналогичен предыдущему методу.



11. Prices (Проценка)

Поиск ценовых предложений (проценка)

Условия:

При превышении допустимого количества запросов к нашей базе Вы будете получать в ответе ошибку 429 (Too Many Requests). Ограничение в проценке действует до конца дня. Для уточнения лимитов обратитесь к Вашему менеджеру либо в нашу техподдержку через форму обратной связи.

Для проценки артикула предварительно требуется получить внутренний идентификатор артикула (из метода POST /api/v1/articles/search или GET /api/v1/articles/search/{articleSearchString})

  • Если у пользователя несколько адресов, то для получения даты доставки до конкретного адреса, нужно указать код адреса доставки (взять из метода GET /api/v1/delivery/addresses).

  • Если у пользователя несколько номеров договоров, то нужно указать конкретный номер (взять из метода GET /api/v1/customer/agreements). в противном случае будет выбран номер договора по умолчанию (личный кабинет – персональные данные).

  • У Вашего менеджера можно запросить ограничения на вывод предложений наличия и под заказ.

11.1 POST /api/v1/prices/search (Поиск ценовых предложений)

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
DeliveryAddressCode Внутренний код адреса доставки. Можно передать несколько адресов доставки для получения дат доставки по каждому адресу. Д1 Нет
AgreementCode Номер договора клиента. При незаполненном поле цены будут указаны для договора по умолчанию (личный кабинет – персональные данные). SAGR1 Нет
ArticleId Внутренний идентификатор артикула 1248291 Да
IncludeAnalogs Включать аналоги. Если ничего не будет передано на вход, в ответе аналогов не будет True – в ответе будут ценовые предложения вместе с аналогами; False – метод вернет ценовые предложения только по искомому номеру. Нет

Ответ метода (коллекция ценовых предложений):

[
{
  "id": "EA0A241990CBE80CD928445ADB1146A81861AFA2B69CC0F1C59EEBCEA5B67A12608B2F0799466CC6B019C63056DDB2565D9E288D38DE21BCC5CB706019FF029E",
  "articleId": 1248288,
  "locationCode": "SHATE-01",
  "locationCodeReal": "SHATE-01",
  "agreementCode": "SAGR1",
  "type": "Internal",
  "price": {
    "value": 8.5,
    "valueWithMargin": 8.5,
    "valueRecommended": null,
    "currencyCode": "USD"
    "priceMax": 12.32,
    "importAllowance": 15,
  },
  "quantity": {
    "available": 5,
    "availableType": "Equal",
    "multiplicity": 1,
    "minimum": 1,
    "maximum": null
  },
  "supplyProbability": {
    "lastUpdateDateTime": "2022-12-19T09:22:08.260Z",
    "rating": 99
  },
  "addInfo": {
    "city": "Минск",
    "isSale": true,
    "comment": "Царапины справа",
    "isReturnAllowed": true,
    "warningText": "Возврат запрещен. Нельзя заказывать масла моторные и тех. жидкости"
  },
  "priority": 1,
  "hash": 123456789,
  "deliveryDateTimes": [
    {
      "deliveryAddressCode": "Д1",
      "deliveryDateTime": "2022-12-19T09:22:08.260Z"
    }
  ],
  "shippingDateTime": "2022-12-19T09:22:08.260Z",
  "isImport": true,
  "isFree": true
}
]
Параметр Описание
ArticleId Внутренний идентификатор артикула
LocationCode Код склада, с которого будет отгружен товар
LocationCodeReal Код склада, на котором находится товар
AgreementCode Номер договора клиента
Type Тип предложения
Price {}:
value Цена
valueWithMargin Цена с пользовательской наценкой (выставляется в личном кабинете в настройках пользователя)
valueRecommended Рекомендованная цена компанией Шате-М+
currencyCode Код валюты
PriceMax Максимальная цена реализации
ImportAllowance Надбавка импортера, %
Quantity {}: Информация о количестве
available Доступное количество
availableType Тип количества
multiplicity Кратность
minimum Минимальное количество к заказу
maximum Максимальное количество к заказу
supplyProbability {}: Статистика по стороннему предложению
lastUpdateDateTime Дата и время обновления статистики
rating Вероятность поставки,%
AddInfo {}: Дополнительная информация
city Город, в котором расположен склад
isSale Распродажа
comment Дополнительная информация
isReturnAllowed Возврат разрешен
warningText Текст предупреждения
priority Приоритет предложения (согласно расположению строк в результатах поиска в личном кабинете)
Hash Идентификатор ценового предложения
deliveryAddressCodes
DeliveryDateTime Дата и время доставки
ShippingDateTIme Дата и время отгрузки со склада
IsImport Импортный/не импортный товар
IsFree Регулируемый/нерегулируемый товар

11.2 POST /api/v1/prices/search/with_article_info (Поиск ценовых предложений (с группировкой по артикулу и информацией об артикуле)).

Входящие параметры аналогичны предыдущему методу.

Ответ метода (коллекция ценовых предложений):

[
{
  "article": {
    "id": 1248288,
    "code": "OC100",
    "tradeMarkName": "KNECHT",
    "name": "Фильтр масляный",
    "description": "Замена - OC976. BX 82-93",
    "unitOfMeasure": "ШТ"
  },
  "prices": [
    {
      "id": "EA0A241990CBE80CD928445ADB1146A81861AFA2B69CC0F1C59EEBCEA5B67A12608B2F0799466CC6B019C63056DDB2565D9E288D38DE21BCC5CB706019FF029E",
      "articleId": 1248288,
      "locationCode": "SHATE-01",
      "locationCodeReal": "SHATE-01",
      "agreementCode": "SAGR1",
      "type": "Internal",
      "price": {
        "value": 8.5,
        "valueWithMargin": 8.5,
        "valueRecommended": null,
        "currencyCode": "USD"
        "priceMax": 12.32,
        "importAllowance": 15,
      },
      "quantity": {
        "available": 5,
        "availableType": "Equal",
        "multiplicity": 1,
        "minimum": 1,
        "maximum": null
      },
      "supplyProbability": {
        "lastUpdateDateTime": "2022-12-19T09:23:41.595Z",
        "rating": 99
      },
      "addInfo": {
        "city": "Минск",
        "isSale": true,
        "comment": "Царапины справа",
        "isReturnAllowed": true,
        "warningText": "Возврат запрещен. Нельзя заказывать масла моторные и тех. жидкости"
      },
      "priority": 1,
      "hash": 123456789,
      "deliveryDateTimes": [
        {
          "deliveryAddressCode": "Д1",
          "deliveryDateTime": "2022-12-19T09:23:41.595Z"
        }
      ],
      "shippingDateTime": "2022-12-19T09:23:41.595Z",
      "isImport": true,
      "isFree": true
    }
  ]
}
]
Параметр Описание
article{}
Id Внутренний идентификатор артикула
TradeMarkName Наименование торговой марки.
Code Каталожный номер
Name Описание товара.
Description Дополнительное описание товара
UnitOfMeasure Единица измерения
Prices{}
ArticleId Внутренний идентификатор артикула
LocationCode Код склада, с которого будет отгружен товар
LocationCodeReal Код склада, на котором находится товар
AgreementCode Номер договора клиента
Type Тип предложения
Price {}:
value Цена
valueWithMargin Цена с пользовательской наценкой (выставляется в личном кабинете в настройках пользователя)
valueRecommended Рекомендованная цена компанией Шате-М+
currencyCode Код валюты
PriceMax Максимальная цена реализации
ImportAllowance Надбавка импортера, %
Quantity {}: Информация о количестве
available Доступное количество
availableType Тип количества
multiplicity Кратность
minimum Минимальное количество к заказу
maximum Максимальное количество к заказу
supplyProbability {}: Статистика по стороннему предложению
lastUpdateDateTime Дата и время обновления статистики
rating Вероятность поставки,%
AddInfo {}: Дополнительная информация
city Город, в котором расположен склад
isSale Распродажа
comment Дополнительная информация
isReturnAllowed Возврат разрешен
warningText Текст предупреждения
priority Приоритет предложения (согласно расположению строк в результатах поиска в личном кабинете)
Hash Идентификатор ценового предложения
deliveryAddressCodes
DeliveryDateTime Дата и время доставки
ShippingDateTIme Дата и время отгрузки со склада
IsImport Импортный/не импортный товар
IsFree Регулируемый/нерегулируемый товар


12. Trademarks (Торговые марки)

12.1 GET /api/v1/trademarks

Получение информации по всем брендам из портфеля компании “Шате-М Плюс”.

Входных параметров нет.

Ответ метода:

{
"name": "KNECHT",
"country": "Германия",
"description": "Торговая марка KNECHT принадлежит концерну...",
"url": "http://www.mahle.com",
"catalogUrl": "http://www.mahle.com",
"extendedWarranty": false
}
Параметр Описание
Name Название бренда
Country Страна
Description Информация о производителе
url Ссылка на сайт производителя
catalogurl Ссылка на каталог производителя

12.2 GET /api/v1/trademarks/{tradeMarkName}

Получение информации по конкретной торговой марке

Метод принимает на вход:

Параметр Описание Пример Обязательный параметр
TradeMarkName Название торговой марки Knecht Да

Ответ метода:

{
"name": "KNECHT",
"country": "Германия",
"description": "Торговая марка KNECHT принадлежит концерну...",
"url": "http://www.mahle.com",
"catalogUrl": "http://www.mahle.com",
"extendedWarranty": false
}
Параметр Описание
Name Название бренда
Country Страна
Description Информация о производителе
url Ссылка на сайт производителя
catalogurl Ссылка на каталог производителя


Уважаемые клиенты!

Если у вас есть замечания или предложения к документации нашего сервиса, мы готовы рассмотреть их. Присылайте их по адресу andrey.gapanyuk@100soft.by;

По техническим проблемам интеграции или работе нашего сервиса вы можете обратиться прямо со страницы документации, заполнив форму.