Веб-сервис платформы S4AB API документация
В данном документе представлено описание программного интерфейса (API) для обеспечения доступа к веб-сервису на нашем сайте.
Он позволяет в реальном времени обращаться к нашему сервису и организовать поиск по коду (артикулу) детали, получение информации о наличии деталей, цене, сроке поставки, а также информации по оригинальным заменам и аналогам, для отображения на вашем сайте или в вашей программе. Также осуществлять с помощью веб-сервиса заказы на наш сайт и получать информацию по статусам заказа.
Преимущества использования API:
Для получения доступа вам необходимо сообщить следующие данные, написав нам в форме обратной связи https://autovibor.ru/feedback :
После того как доступ открыт вы можете приступить к тестам и внедрению сервиса.
Количество запросов к функциям в сутки от одного клиента ограничено. Проектируйте ваши приложения таким образом, чтобы исключить излишние запросы, которые могут перегружать наш сервер.
Блокируйте индексирование поисковыми роботами тех страниц вашего сайта, на которых есть ссылки с запросами к веб-сервису. Например, если у вас есть страницы со списком кодов или каталогом со ссылками на проценку, поисковый робот обойдет все странички и сгенерирует множество запросов к нашему сервису, что приведет к блокировке вашего аккаунта. Для предотвращения индексирования используйте тэг или файл robots.txt.
Если в вашем интернет-магазине реально большое число посетителей, делающих реальные запросы, лимит запросов может быть увеличен. Необходимо обращаться в индивидуальном порядке.
Просим учесть, что в любом случае, мы не детерминируем источник запроса, и запрос от робота будет тарифицироваться ровно так же, как и запрос от человека.
Сервис имеет два этапа, как и большинство аналогичных:
1) получение возможных брендов по артикулу;
2) получение деталей
Для получения деталей по конкретному бренду не обязательно использовать перед этим 1й этап.
Доступ к сервису поиска осуществляется с помощью HTTP-запросов на порт 80.
Ниже приводятся примеры запросов.
Общее
При отправке запросов к нашему Сервису обратите внимание, что Host (https://домен_сайта) и другие заголовки во всех запросах должны быть едиными. URL, методы и параметры меняются в зависимости от запроса.
Получение брендов по артикулу
HTTP метод |
GET |
|||||||||
URL запроса |
/SearchService/GetBrands?article={article}&withoutTransit={true/false} |
|||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||
Параметры запроса (Все параметры обязательные!) |
article – Артикул (тип string) withoutTransit – Не возвращать транзитных поставщиков (тип Bool) |
|||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
Получение результатов по артикулу и бренду
HTTP метод |
GET |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/GetParts?article={article}&brand={brand}&withoutTransit={true/false} |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
Параметры запроса (Все параметры обязательные!) |
article – Артикул (тип string) brand – Бренд (тип string) withoutTransit – Не возвращать транзитных поставщиков (тип Bool) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
Работа с заказами
Отправка товаров в заказ (без отправки в корзину)
HTTP метод |
GET |
|||||||||||||||
URL запроса |
/SearchService/AddOrder?items=[array of items] |
|||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||||||||
Параметры запроса (Все параметры обязательные!) |
items – Массив объектов вида: [{ article – Артикул (тип string), brand – Бренд (тип string), SupplierName – имя поставщика (тип string), CostSale – цена товара (тип double), Quantity – количество единиц товара (тип int), SupplierTimeMin – минимальный срок поставки в часах (тип int), SupplierTimeMax – максимальный срок поставки в часах (тип int), Comment – комментарий к позиции (тип string), GioID – уникальный идентификатор позиции в вашей системе (тип int) },{..}, …] Внимание! Параметр необходимо кодировать в строку URL-адреса! |
|||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
Получение информации о статусах заказа
HTTP метод |
GET |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/GetPositionsByOrder/{orderId} |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} Accept: application/json Content-type: application/json |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Параметры запроса |
orderId - номер заказа в нашей системе (тип int) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
Object Status
|
Работа с корзиной
Отправка товара в корзину на сайте
HTTP метод |
GET |
URL запроса |
/SearchService/AddToBasket?article={Article}&brand={Brand}&supplierName={SupplierName}&costSale={CostSale}&quantity={Count}&supplierTimeMin={SupplierTimeMin}&supplierTimeMax={SupplierTimeMax}&comment={comment} |
Заголовки запроса |
Authorization: Basic {credentials} |
Параметры запроса (Все параметры обязательные!) |
article – Артикул (тип string) brand – Бренд (тип string) supplierName – имя поставщика (тип string) costSale – цена товара (тип double) quantity – количество единиц товара (тип int) supplierTimeMin – минимальный срок поставки в часах (тип int) supplierTimeMax – максимальный срок поставки в часах (тип int) comment – комментарий к позиции (тип string) |
Ответ |
"Ok" – товар добавлен. "Position was not found" - позиция не найдена "Error": "Недопустимое значение для параметров article. Параметры не могут быть пустыми" – не указан артикул "Error": "Недопустимое значение для параметров brand. Параметры не могут быть пустыми" – не указан бренд "Error": "Недопустимое значение для параметров supplierName. Параметры не могут быть пустыми" – не указано имя поставщика "Error": "Недопустимое значение для параметров costsale. Параметры не могут быть пустыми" - неверно задана или не указана цена "Error": "Недопустимое значение для параметров quantity. Параметры не могут быть пустыми" - неверно задано или не указано количество "Quantity is more than the supplier stock" - Количество больше чем в наличии у транзитного поставщика "Undefined Error" – невозможно добавить позицию по другим причинам |
Получение информации о позициях в корзине
HTTP метод |
GET |
|||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/GetBasket |
|||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||||||||||||||||||||||||||
Параметры запроса |
|
|||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
Изменение комментария позиции в корзине
HTTP метод |
POST |
|||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/ChangeBasketPositionComment?positionId={positionId}&comment={comment} |
|||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||||||||||||||||||||||||||
Параметры запроса |
positionId – Номер позиции в корзине (Int) comment – Новый комментарий (String) |
|||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
Изменение количества позиции в корзине
HTTP метод |
POST |
|||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/ChangeBasketPositionCount?positionId={positionId}&count={count} |
|||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||||||||||||||||||||||||||
Параметры запроса |
positionId – Номер позиции в корзине (Int) count – Новое количество (Short) |
|||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
Удаление позиции из корзины
HTTP метод |
POST |
|||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/RemoveBasketPosition?positionId={positionId} |
|||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
|||||||||||||||||||||||||||||||||
Параметры запроса |
positionId – Номер позиции в корзине (Int) |
|||||||||||||||||||||||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
Очистка корзины
HTTP метод |
POST |
|||
URL запроса |
/SearchService/ClearBasket |
|||
Заголовки запроса |
Authorization: Basic {credentials} |
|||
Параметры запроса |
|
|||
Ответ |
JSON объект следующей структуры:
|
Получение реквизитов для оформления корзины в заказ
HTTP метод |
POST |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
URL запроса |
/SearchService/GetCheckoutParams |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Параметры запроса |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ответ |
JSON объект следующей структуры:
Object Deliveries коллекция объектов следующей структуры:
Object Payments коллекция объектов следующей структуры:
Object Params
Object Points коллекция объектов следующей структуры:
Object Addresses коллекция объектов следующей структуры:
|
Оформление корзины
HTTP метод |
POST |
||||||||||||
URL запроса |
/SearchService/CheckoutBasket?positionIds={positionIds}&deliveryTypeId={deliveryTypeId}&paymentTypeId={paymentTypeId}&addressId={addressId}&deliveryPointId={deliveryPointId}&comment={comment} |
||||||||||||
Заголовки запроса |
Authorization: Basic {credentials} |
||||||||||||
Параметры запроса |
positionIds – список id позиций из корзины для заказа (Int) |
||||||||||||
Ответ |
JSON, коллекция объектов следующей структуры:
|
Общие примечания
return "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(Login + ":" +Password));
System.Boolean
)HttpUtility.UrlEncode
Пример кода для автоматического оформления заказа:
HttpClient client = new HttpClient();
string lp = Convert.ToBase64String(Encoding.UTF8.GetBytes(login + ":" + password)).ToString();
Uri url = new Uri("https://api.xn--80aep1aarf3h.xn--p1ai/SearchService/AddOrder?items=" + HttpUtility.UrlEncode(items));
client.BaseAddress = url;
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", lp);
var response = client.GetAsync(url).Result;
Возможные ошибки: