Веб-сервиc autovibor.ru API

Веб-сервис платформы S4AB API документация

В данном документе представлено описание программного интерфейса (API) для обеспечения доступа к веб-сервису на нашем сайте.

Он позволяет в реальном времени обращаться к нашему сервису и организовать поиск по коду (артикулу) детали, получение информации о наличии деталей, цене, сроке поставки, а также информации по оригинальным заменам и аналогам, для отображения на вашем сайте или в вашей программе. Также осуществлять с помощью веб-сервиса заказы на наш сайт и получать информацию по статусам заказа.

 

Преимущества использования API:

  • Нет необходимости ежедневно скачивать обновленный прайс-лист компании
  • 100% достоверность информации об остатках и ценах
  • Нет необходимости вручную вводить номера товаров в поисковую строку интернет-магазина

 

Для получения доступа вам необходимо сообщить следующие данные, написав нам в форме обратной связи https://autovibor.ru/feedback :

  • адрес сайта, веб-сервис которого вы хотите использовать;
  • логин пользователя на сайте, под которым будут осуществляться запросы;
  • адрес страницы WEB-сайта и имя платформы, на которой работает ваш сайт, с которой будут использоваться запросы к функциям сервиса;
  • IP-адрес, с которого будет осуществляться доступ

После того как доступ открыт вы можете приступить к тестам и внедрению сервиса.

 

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

Блокируйте индексирование поисковыми роботами тех страниц вашего сайта, на которых есть ссылки с запросами к веб-сервису. Например, если у вас есть страницы со списком кодов или каталогом со ссылками на проценку, поисковый робот обойдет все странички и сгенерирует множество запросов к нашему сервису, что приведет к блокировке вашего аккаунта. Для предотвращения индексирования используйте тэг или файл robots.txt.
Если в вашем интернет-магазине реально большое число посетителей, делающих реальные запросы, лимит запросов может быть увеличен. Необходимо обращаться в индивидуальном порядке.
Просим учесть, что в любом случае, мы не детерминируем источник запроса, и запрос от робота будет тарифицироваться ровно так же, как и запрос от человека.

 

Сервис имеет два этапа, как и большинство аналогичных:

1) получение возможных брендов по артикулу;

2) получение деталей

Для получения деталей по конкретному бренду не обязательно использовать перед этим 1й этап.

 

Доступ к сервису поиска осуществляется с помощью HTTP-запросов на порт 80.

Ниже приводятся примеры запросов.

 

Общее

При отправке запросов к нашему Сервису обратите внимание, что Host (https://домен_сайта) и другие заголовки во всех запросах должны быть едиными. URL, методы и параметры меняются в зависимости от запроса.

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

Получение брендов по артикулу

HTTP метод

GET

URL запроса

/SearchService/GetBrands?article={article}&withoutTransit={true/false}

Заголовки запроса

Authorization: Basic {credentials}
Accept: application/json
Content-type: application/json

Параметры запроса

(Все параметры обязательные!)

article – Артикул (тип string)

withoutTransit – Не возвращать транзитных поставщиков (тип Bool)

Ответ

JSON, коллекция объектов следующей структуры:

"Article": "333305"

Артикул детали

String

"Brand": "KYB"

Производитель (бренд)

String

"Description": "Амортизатор

Описание детали

String

 

 

 

Получение результатов по артикулу и бренду

HTTP метод

GET

URL запроса

/SearchService/GetParts?article={article}&brand={brand}&withoutTransit={true/false}

Заголовки запроса

Authorization: Basic {credentials}
Accept: application/json
Content-type: application/json

Параметры запроса

(Все параметры обязательные!)

article – Артикул (тип string)

brand – Бренд (тип string)

withoutTransit – Не возвращать транзитных поставщиков (тип Bool)

Ответ

JSON, коллекция объектов следующей структуры:

«IsDefective»: false

Признак уцененного товара

Bool

«IsAnalog»: false

Признак аналога на искомую деталь

Bool

«IsOriginal»: false

Признак оригинального производителя

Bool

«Article»: «334826»

Артикул детали

String

«Brand»: «KYB»

Производитель (бренд)

String

«Description»: «Амортизатор»

Описание детали

String

«CostSale»: 1234

Цена продажи

Double

«Count»: 10

Количество

Short

«CountText»: >10

Количество в текстовом виде

String

«MinCount»: 2

Кратность или партийность товара в шт.

Int?

«SupplierTimeMin»: 24

Минимальный ожидаемый срок поставки в часах

Short?

«SupplierTimeMax»: 0

Максимальный гарантированный срок поставки в часах

Short?

«SupplierPercent»: 97

Вероятность поставки

Int?

«SupplierName»: «Партнер»

Название поставщика

String

«SupplierColor»: #6adafc

Цвет заливки строки на сайте

String

«SupplierLastUpdate»:

Дата обновления прайса

String

«IsAllowDiscountRefund»: true

Признак возможности возврата детали поставщику

Bool

«IsWarehouse»: true

Принадлежность товара собственному складу

Bool

 

     

 

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

Отправка товаров в заказ (без отправки в корзину)

HTTP метод

GET

URL запроса

/SearchService/AddOrder?items=[array of items]

Заголовки запроса

Authorization: Basic {credentials}
Accept: application/json
Content-type: application/json

Параметры запроса

(Все параметры обязательные!)

items – Массив объектов вида:

[{

article – Артикул (тип string),

brand – Бренд (тип string),

SupplierName – имя поставщика (тип string),

CostSale – цена товара (тип double),

Quantity – количество единиц товара (тип int),

SupplierTimeMin – минимальный срок поставки в часах (тип int),

SupplierTimeMax – максимальный срок поставки в часах (тип int),

Comment – комментарий к позиции (тип string),

GioID – уникальный идентификатор позиции в вашей системе (тип int)

},{..}, …]

Внимание! Параметр необходимо кодировать в строку URL-адреса!

Ответ

JSON, коллекция объектов следующей структуры:

«AddToOrderResult»: true

Признак создания заказа

Bool

«AddToOrderStatus»: «Ожидает обработки»

Текущий статус позиции в заказе

String

«OrderID»: 1234

Номер заказа данной позиции

String

«GioId»: 12345

Идентификатор позиции в вашей системе

int

«PositionId»: 12345

Идентификатор позиции в корзине

int

 

 

 

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

HTTP метод

GET

URL запроса

/SearchService/GetPositionsByOrder/{orderId}

Заголовки запроса

Authorization: Basic {credentials}

Accept: application/json

Content-type: application/json

Параметры запроса

orderId - номер заказа в нашей системе (тип int)

Ответ

JSON, коллекция объектов следующей структуры:

«Id»: «334826»

Номер позиции в заказе

Int

«SupplierName»: «Партнер»

Название поставщика

String

«Brand»: KYB

Производитель (бренд)

String

«Article»: 333305

Артикул детали

String

«Description»: «Амортизатор»

Описание детали

String

«Count»: 1

Количество

Short

«CostSale»: 123

Цена продажи

Double

«Sum»: 123

Сумма

Double

«Status»

Информация по статусу позиции

Object

«SubOrderId»: «4334826»

Номер заказа

Int

«DateAdded»: /Date(1543900279493)/

Дата заказа

DateTime

«DeliveryTimeMax»: 0

Максимальный гарантированный срок поставки в часах

Short?

«DeliveryTimeMin»: 24

Минимальный ожидаемый срок поставки в часах

Short?

Object Status

«Id»: «5334826»

Номер статуса

Int

«CategoryId»: «0»

Категория статуса

Short

«Name»: «Принят»

Наименование статуса

String

«Color»#6adafc

Цвет статуса

String

«Date»: /Date(1543900279493)/

Дата установки статуса

DateTime

«IsCompletedLabel»: «334826»

Признак конечного статуса

Bool

 

 

 

 

 

 

 

 

 

Работа с корзиной

Отправка товара в корзину на сайте

HTTP метод

GET

URL запроса

/SearchService/AddToBasket?article={Article}&brand={Brand}&supplierName={SupplierName}&costSale={CostSale}&quantity={Count}&supplierTimeMin={SupplierTimeMin}&supplierTimeMax={SupplierTimeMax}&comment={comment}

Заголовки запроса

Authorization: Basic {credentials}
Accept: application/json
Content-type: application/json

Параметры запроса

(Все параметры обязательные!)

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" - Количество больше чем в наличии у транзитного поставщика
"Quantity does not match MinCount" - Количество не соответствует кратности товара

"Undefined Error" – невозможно добавить позицию по другим причинам

 

 

Получение информации о позициях в корзине

HTTP метод

GET

URL запроса

/SearchService/GetBasket

Заголовки запроса

Authorization: Basic {credentials}
Accept: application/json
Content-type: application/json

Параметры запроса

 

Ответ

JSON, коллекция объектов следующей структуры:

«Id»: «17473452»

Номер позиции в корзине

Int

«Brand»: KYB

Производитель (бренд)

String

«Article»: 333305

Артикул детали

String

«Description»: «Амортизатор»

Описание детали

String

«SupTimeMax»: 0

Максимальный гарантированный срок поставки в часах

Short?

«SupTimeMin»: 24

Минимальный ожидаемый срок поставки в часах

Short?

«SupCode»: «Партнер»

Название поставщика

String

«Cost»: 123

Цена продажи

Double

«Count»: 1

Количество

Short

«MinCount»: 0

Кратность или партийность товара в шт.

Int?

«Comment»: «комментарий»

Комментарий клиента

String?

 

 

 

Изменение комментария позиции в корзине

HTTP метод

POST

URL запроса

/SearchService/ChangeBasketPositionComment?positionId={positionId}&comment={comment}

Заголовки запроса

Authorization: Basic {credentials}
Accept: application/json
Content-type: application/json

Параметры запроса

positionId – Номер позиции в корзине (Int)

comment – Новый комментарий (String)

Ответ

JSON, коллекция объектов следующей структуры:

«Id»: «17473452»

Номер позиции в корзине

Int

«Brand»: KYB

Производитель (бренд)

String

«Article»: 333305

Артикул детали

String

«Description»: «Амортизатор»

Описание детали

String

«SupTimeMin»: 24

Минимальный ожидаемый срок поставки в часах

Short?

«SupTimeMax»: 0

Максимальный гарантированный срок поставки в часах

Short?

«SupCode»: «Партнер»

Название поставщика

String

«Cost»: 123

Цена продажи

Double

«Count»: 1

Количество

Short

«MinCount»: 0

Кратность или партийность товара в шт.

Int?

«Comment»: «комментарий»

Комментарий клиента

String?

 

 

 

Изменение количества позиции в корзине

HTTP метод

POST

URL запроса

/SearchService/ChangeBasketPositionCount?positionId={positionId}&count={count}

Заголовки запроса

Authorization: Basic {credentials}
Accept: application/json
Content-type: application/json

Параметры запроса

positionId – Номер позиции в корзине (Int)

count – Новое количество (Short)

Ответ

JSON, коллекция объектов следующей структуры:

«Id»: «17473452»

Номер позиции в корзине

Int

«Brand»: KYB

Производитель (бренд)

String

«Article»: 333305

Артикул детали

String

«Description»: «Амортизатор»

Описание детали

String

«SupTimeMin»: 24

Минимальный ожидаемый срок поставки в часах

Short?

«SupTimeMax»: 0

Максимальный гарантированный срок поставки в часах

Short?

«SupCode»: «Партнер»

Название поставщика

String

«Cost»: 123

Цена продажи

Double

«Count»: 1

Количество

Short

«MinCount»: 0

Кратность или партийность товара в шт.

Int?

«Comment»: «комментарий»

Комментарий клиента

String?

 

 

 

Удаление позиции из корзины

HTTP метод

POST

URL запроса

/SearchService/RemoveBasketPosition?positionId={positionId}

Заголовки запроса

Authorization: Basic {credentials}
Accept: application/json
Content-type: application/json

Параметры запроса

positionId – Номер позиции в корзине (Int)

Ответ

JSON, коллекция объектов следующей структуры:

«Id»: «17473452»

Номер позиции в корзине

Int

«Brand»: KYB

Производитель (бренд)

String

«Article»: 333305

Артикул детали

String

«Description»: «Амортизатор»

Описание детали

String

«SupTimeMax»: 0

Максимальный гарантированный срок поставки в часах

Short?

«SupTimeMin»: 24

Минимальный ожидаемый срок поставки в часах

Short?

«SupCode»: «Партнер»

Название поставщика

String

«Cost»: 123

Цена продажи

Double

«Count»: 1

Количество

Short

«MinCount»: 0

Кратность или партийность товара в шт.

Int?

«Comment»: «комментарий»

Комментарий клиента

String?

 

 

 

Очистка корзины

HTTP метод

POST

URL запроса

/SearchService/ClearBasket

Заголовки запроса

Authorization: Basic {credentials}
Accept: application/json
Content-type: application/json

Параметры запроса

 

Ответ

JSON объект следующей структуры:

"IsSuccess": true

Признак успешной очистки

Bool

 

 

 

Получение реквизитов для оформления корзины в заказ

HTTP метод

POST

URL запроса

/SearchService/GetCheckoutParams

Заголовки запроса

Authorization: Basic {credentials}
Accept: application/json
Content-type: application/json

Параметры запроса

 

Ответ

JSON объект следующей структуры:

«Deliveries»

Типы доставки

Object

«Payments»

Типы оплаты

Object

Object Deliveries коллекция объектов следующей структуры:

«DeliveryTypeId»: 1

Код типа доставки

Short

«Name»: «Самовывоз»

Имя типа доставки

String

«Params»

Параметры типа доставки

Object

Object Payments коллекция объектов следующей структуры:

«PaymentType»:1

Код типа оплаты

Short

«Name»: «Наличная»

Имя типа оплаты

String

Object Params

«HasDeliveryPoint»: True

Признак точки выдачи

Bool

«Points»

Точки выдачи

Object

«Addresses»

Адреса доставки

Object

«HasAnotherShippingCompany»: False

Признак сторонней компании доставки

Bool

Object Points коллекция объектов следующей структуры:

«Id»:23

Уникальный код адреса доставки

Int

«Name»: «Самовывоз»

Имя типа доставки

String

«Description»: «Самовывоз»

Описание типа доставки

String

Object Addresses коллекция объектов следующей структуры:

«Id»:2854

Уникальный код адреса доставки

Int

«Address»: «Адыгея, 17 лет Октября, хутор (Майкопский Район),12»

Адрес доставки

String

«IsDefault»: True

Признак точки выдачи по умолчанию

Bool

«Type»: «Домашний»

Тип адреса доставки

String

 

 

 

Оформление корзины

HTTP метод

POST

URL запроса

/SearchService/CheckoutBasket?positionIds={positionIds}&deliveryTypeId={deliveryTypeId}&paymentTypeId={paymentTypeId}&addressId={addressId}&deliveryPointId={deliveryPointId}&comment={comment}

Заголовки запроса

Authorization: Basic {credentials}
Accept: application/json
Content-type: application/json

Параметры запроса

positionIds – список id позиций из корзины для заказа (Int)
deliveryTypeId –код типа доставки (или самовывоза) (Short)
paymentTypeId – код типа оплаты (Short)
addressId – код адреса доставки (Int)
deliveryPointId – код точки выдачи (Int)
comment – комментарий к заказу (String)

Ответ

JSON, коллекция объектов следующей структуры:

"AddToOrderResult": true

Признак создания заказа

Bool

"AddToOrderStatus": "Товар заказан"

Текущий статус позиции в заказе

String

"OrderID": " 1234

Номер заказа данной позиции

String

"PositionId": 12345

Идентификатор позиции в корзине

int

 

 

 

Общие примечания

  • Запросы осуществляются с помощью HTTP-методов GET
  • Для запросов требуется преобразовать ваш логин и пароль вида «Login:Password» в стандарт Base64 и подставить в {credentials}
  • В итоге, строка авторизации должна иметь вид как представлено ниже
  • Пример кода на C#:

 

return "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(Login + ":" +Password));

 
  • Для параметра withoutTransit допустимы только значения true/false. 0 и 1 не являются допустимыми с точки зрения c# для типа bool (System.Boolean)
  • Важно! Домен сайта (например, https://api.автосоюз.рф) должен быть написан в punycode: https://api.xn--80aep1aarf3h.xn--p1ai
  • Также обратите внимание, что артикулы, бренды и прочие параметры URL-адреса нужно кодировать, чтобы передавались они верно. В нашем примере используется:
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;

 

Возможные ошибки:

 

  1. Неверные логин и/или пароль, указанные в обращении к Сервису. Они должны совпадать с логином/паролем для доступа на наш сайт.
  2. Убедитесь, что ваши запросы идут с IP адреса, который вы указывали при запросе доступа к Сервису.
  3. Нет транзитных поставщиков в результате – дневной лимит на поиск по транзитным поставщикам исчерпан, обратитесь к менеджеру.
  4. Доступ запрещён по другим причинам.