● Архитектура - REST
● Формат обмена данными - JSON
● Время ответа каждого запроса не более 1 с.
● Хранение информации только на стороне сервиса поставщика (аккаунты, токены, корзины, заказы и тд).
● Для интеграции в систему проценки НЕ МОЖЕТ быть запросов больше, чем указано в приложении.
[ТРЕБОВАНИЯ]
Не более 2-х запросов всего
● Авторизация происходит путем валидации на каждом запросе переданного ключа в заголовке (Authorization)/параметрах/теле. Ключ генерируется
менеджером для каждого клиента, либо клиентом в личном кабинете на сайте.
● Структура:
○ Метод валидации ключа. Принимает ключ авторизации (Basic-авторизация от логина:пароля или другой хэш). Возвращает success со значением true,
либо false и message с детализацией причины. Принимает логин и пароль, в ответ возвращает варианты ключ:
Запрос:
[POST]
vendor.ru/auth
{
"login": "Admin",
"password": "login"
}
Ответы:
200 Ok:
{
"key": "d30422f2-0efd-4738-8ac9-93a0fb72a2d9",
"success": true,
"message": "Успешная авторизация"
}
401 Unauthorized:
{
"success": false,
"message": "Неверные учетные данные"
}
403 Forbidden:
{
"success": false,
"message": "Доступ запрещён (валидный токен, но недостаточно прав)"
}
429 Too Many Requests:
{
"success": false,
"message": "Превышено количество попыток входа"
}
[ТРЕБОВАНИЯ]
○ Метод получения вариантов брендов (уточнений) для переданного артикула. Принимает артикул, в ответ возвращает варианты вида:
■ Артикул
■ Бренд
■ Наименование
■ Идентификатор уточнения (для использования на следующем шаге, необязательный, если есть вариант раскрытия
уточнения с артикулом/брендом)
Запрос:
[GET]
vendor.ru/clarifications/{article}?&limit=100
Ответы:
200 Ok:
{
{
"article": "01244",
"brand": "Febi",
"name": "Шайба",
"id": "0401015415086"
},
{
"article": "12895",
"brand": "Mehle",
"name": "Гровер",
"id": "0401010383081"// Используется в запросе основного поиска
}
"success": true
}
404 Not Found:
{
"success": false,
"message": "Ничего не найдено"
}
○ Метод получения остатков и цен. Принимает артикул/бренд или идентификатор уточнения с предыдущего шага. Возвращает результаты поиска
(искомые артикулы, аналоги(кроссы) (если есть сайт, результатам на API и сайте должны быть одинаковые)) с положительными остатками и ценами
вида:
■ Артикул
■ Бренд
■ Наименование
■ Количество на остатке
■ Цена
■ Признак наличия на складе (true/false)
■ Срок доставки на склад, если это заказная позиция
■ Наименование склада
■ Изображение
■ Примечание поставщика (доп. информация, что товарневозвратный и т.д.)
■ Идентификатор товара для использования в методе добавления в корзину
Запрос:
[GET]
vendor.ru/search/{id}?&limit=100
Ответы:
200 Ok:
{
{
"article": "01244",
"brand": "Febi",
"name": "Шайба гровер шпильки 12мм.",
"price": "252,00",
"availability": true,
"delivery": "13-07-2025 18:32",
"warehouse": "Москва, склад №666",
"photo": "https://example.ru/photo/0401011511086.img",
"info": {
"probability": "96.4",
"warehouseInfo": "МКАД 4-й километр, справа от СТО",
"return": false
},
"id": "0401011511086"
},
"success": true
}
404 Not Found:
{
"success": false,
"message": "Ничего не найдено"
}
[ТРЕБОВАНИЯ]
○ Метод добавления в корзину. Принимает идентификатор товара с предыдущего метода, кол-во и комментарий к позиции (если предполагается
работа с ним). Возвращает true в случае успеха, либо false и причину, по которой не удалось добавить товар в корзину.
■ message
■ success
Запрос:
[POST]
vendor.ru/cart/items/add
{
"itemId": "0401011511086",
"quantity": "1"
}
Ответы:
201 Created:
{
"success": true,
"message": "Товар успешно добавлен"
}
404 Not Found:
{
"success": false,
"message": "Товар отсутствует в каталоге"
}
409 Conflict:
{
"success": false,
"message": "Превышение доступного количества на складе"
}
○ Метод получения корзины. Не принимает ничего. В ответ возвращает текущую корзину пользователя вида:
■ Артикул
■ Бренд
■ Наименование
■ Количество
■ Цена
■ Наименование склада
■ Комментарий клиента
■ Идентификатор товара в корзине для дальнейших манипуляций с ним
Запрос:
[GET]
vendor.ru/cart
Ответы:
200 Ok:
{
"cart": [
{
"id": "0404240018188",
"article": "SKU-12345",
"brand": "HDK",
"name": "Ремкомплект колоок",
"quantity": 2,
"price": "2990,00",
"warehouse": "Москва, Склад №3",
"comment": ""
},
{
"id": "0404243096181",
"article": "01244",
"brand": "Febi",
"name": "Шайба гровер",
"quantity": 1,
"price": "25,00",
"warehouse": "Санкт-Петербург, Склад №1",
"comment": "test"
}
],
"total": "6030,00,
"success": true
}
404 Not Found:
{
"success": true,
"cart": [],
"total": 0,
"message": "Корзина пуста"
}
○ Метод изменения количества позиции. Принимает идентификатор товара и количество, на которое нужно изменить. Возвращает корзину с уже
внесенными изменениями.
Запрос:
[PUT]
vendor.ru/cart/items/changeQuantity
{
"itemId": "0401011511086",
"quantity": "4"
}
Ответы:
200 Ok:
{
"cart": [
{
"id": "0404240018188",
"article": "SKU-12345",
"brand": "HDK",
"name": "Ремкомплект колоок",
"quantity": 1,
"price": "2990,00",
"warehouse": "Москва, Склад №3",
"comment": ""
},
{
"id": "0404243096181",
"article": "01244",
"brand": "Febi",
"name": "Шайба гровер",
"quantity": 1,
"price": "25,00",
"warehouse": "Санкт-Петербург, Склад №1",
"comment": "test"
}
],
"total": "6030,00,
"messgae": "Корзина изменена",
"success": true
}
○ Метод изменения комментария позиции. Принимает идентификатор товара и комментарий. Возвращает корзину с уже внесенными изменениями.
Запрос:
[PUT]
vendor.ru/cart/items/changeComment
{
"itemId": "0404243096181",
"comment": "new comment"
}
Ответы:
200 Ok:
{
"cart": [
{
"id": "0404240018188",
"article": "SKU-12345",
"brand": "HDK",
"name": "Ремкомплект колоок",
"quantity": 1,
"price": "2990,00",
"warehouse": "Москва, Склад №3",
"comment": ""
},
{
"id": "0404243096181",
"article": "01244",
"brand": "Febi",
"name": "Шайба гровер",
"quantity": 1,
"price": "25,00",
"warehouse": "Санкт-Петербург, Склад №1",
"comment": "new comment"
}
],
"total": "6030,00,
"messgae": "Корзина изменена",
"success": true
}
○ Метод удаления позиции из корзины. Принимает идентификатор товара. Возвращает корзину с уже внесенными изменениями.
Запрос:
[DELETE]
vendor.ru/cart/items/{id}
Ответы:
200 Ok:
{
"cart": [
{
"id": "0404243096181",
"article": "01244",
"brand": "Febi",
"name": "Шайба гровер",
"quantity": 1,
"price": "25,00",
"warehouse": "Санкт-Петербург, Склад №1",
"comment": "new comment"
}
],
"total": "6030,00,
"messgae": "Корзина изменена",
"success": true
}
○ Метод очистки корзины. Не принимает ничего. Возвращает true, если удалось очистить корзину, или false, если не удалось.
Запрос:
[DELETE]
vendor.ru/cart/
Ответы:
200 Ok:
{
"success": true,
"cart": [],
"total": 0,
"message": "Корзина успешно отчищена"
}
○ Метод получения реквизитов, которые необходимо передать при оформлении заказа. Не принимает ничего. В ответ возвращает реквизиты оформления заказа для клиента (доступные способы оплаты, договоры, способы доставки)
■ Способ доставки
■ Способ оплаты
■ Договор
Запрос:
[GET]
vendor.ru/cart/orderParams
Ответы:
200 Ok:
{
"success": true,
"deliveryType": [
{
"title": "Самовывоз",
"value": "9a485751-379d-4e34-932e-76bf71a5aab3"
},
{
"title": "Доставка, Москва Тверская ул. д.5",
"value": "0b8f2398-4612-4e9b-b74e-ef8b11b118a9"
}
],
"paymentType": [
{
"title": "Картой",
"value": "48413974-e86e-4050-9952-10d7fc911b8a"
},
{
"title": "Наличными",
"value": "d213deb3-0a1f-4b6d-b83d-22a72fe31eba"
}
]
}
○ Метод оформления заказа из корзины. Принимает идентификаторы товаров из корзины, которые нужно отправить в заказ, реквизиты оформления с предыдущего шага и комментарий к заказу. Возвращает true, если заказ успешно оформлен, или false, если не удалось оформить, а также message с детализацией причины.
■ message
■ success
Запрос:
[POST]
vendor.ru/cart/run
{
"items": [
{
"0404240018188",
"0404243096181"
}
],
"deliveryType": "0b8f2398-4612-4e9b-b74e-ef8b11b118a9",
"paymentType": "d213deb3-0a1f-4b6d-b83d-22a72fe31eba",
"comment": "Комментарий заказа"
}
Ответы:
202 Ok:
{
"success": true,
"message": "Заказ успешно оформлен"
}
402: Payment Required
{
"success": false,
"message": "Ошибка, заказ не оформлен, описание ошибки"
}
[ТРЕБОВАНИЯ]
○ Метод получения истории заказов (всех (текущих, архивных)). Может принимать количество возвращаемых заказов или начало периода, за который нужно вернуть заказы, или не принимает ничего, в этом случае возвращаются все заказы. Возвращает список заказов с детализацией по товарам вида:
■ Номер заказа
■ Статус заказа (Новый, В работе, Доставлен, Отказ и т.д.)
■ Дата заказа
■ Сумма заказа
■ Комментарий
■ Список
Запрос:
`[GET]`
`vendor.ru/orders?&limit=2`
Ответы:
200: OK
{
"oreder": [
{
"number": "",
"staus": "Отгружен",
"date": "13-07-202518:32",
"total": "6030,00","comment": "тестирование",
"items": [
{
"id": "0404240018188",
"article": "SKU-12345",
"brand": "HDK",
"name": "Ремкомплект колоок",
"quantity": 1,
"price": "2990,00",s
"warehouse": "Москва, Склад №3",
"comment": ""
},
{
"id": "0404243096181",
"article": "01244",
"brand": "Febi",
"name": "Шайба гровер",
"quantity": 1,
"price": "25,00",
"warehouse": "Санкт-Петербург, Склад №1",
"comment": "new comment"
}
]
}
],
"success": true
}
204: No Content
{
"success": true,
"message": "История заказов пуста"
}`