Веб-сервис av34.ru API

Общее

При отправке запросов к нашему Сервису обратите внимание, что Host (https://av34.ru) и другие заголовки во всех запросах должны быть едиными. 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, коллекция объектов следующей структуры:

«Article»: «334826»

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

String

«Brand»: «KYB»

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

String

«CostSale»: 1234

Цена продажи

Double

«Count»: 10

Количество

Short

«CountText»: >10

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

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

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

String

«IsAllowDiscountRefund»:true

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

Bool

«IsAnalog»: false

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

Bool

«IsDefective»: false

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

Bool

«IsOriginal»: false

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

Bool

«IsWarehouse»: true

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

Bool

«MinCount»: 2

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

Int?

«SupplierColor»: #6adafc

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

String

«SupplierLastUpdate»:

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

String

«SupplierName»: «АВТОДОМ»

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

String

«SupplierPercent»: 97

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

«SupplierTimeMax»: 0

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

Short?

«SupplierTimeMin»: 24

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

Short?

 

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

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

 

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

 

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

 

HTTP метод

GET

URL запроса

/SearchService/GetPositionsByOrder/{orderId}

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

Authorization: Basic {credentials}

Accept: application/json

Content-type: application/json

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

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

Ответ

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

«Article»: 333305

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

String

«Brand»: KYB

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

String

«CostSale»: 123

Цена продажи

Double

«Count»: 1

Количество

Short

«DateAdded»: /Date(1543900279493)/

Дата заказа

DateTime

«DeliveryTimeMax»: 0

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

Short?

«DeliveryTimeMin»: 24

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

Short?

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

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

String

«Id»: «334826»

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

Int

«Status»

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

Object

«SubOrderId»: «4334826»

Номер заказа

Int

«Sum»: 123

Сумма

Double

«SupplierName»: «АВТОДОМ»

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

String

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, коллекция объектов следующей структуры:

«Article»: 333305

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

String

«Brand»: KYB

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

String

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

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

String?

«Cost»: 123

Цена продажи

Double

«Count»: 1

Количество

Short

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

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

String

«Id»: «17473452»

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

Int

«MinCount»: 0

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

Int?

«SupCode»: «АВТОДОМ»

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

String

«SupTimeMax»: 0

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

Short?

«SupTimeMin»: 24

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

Short?

Если в корзине не будет ни одной позиции, то ответ будет таким: []

 

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

 

HTTP метод

POST

URL запроса

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

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

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

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

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

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

Ответ

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

«Article»: 333305

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

String

«Brand»: KYB

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

String

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

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

String?

«Cost»: 123

Цена продажи

Double

«Count»: 1

Количество

Short

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

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

String

«Id»: «17473452»

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

Int

«MinCount»: 0

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

Int?

«SupCode»: «АВТОДОМ»

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

String

«SupTimeMax»: 0

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

Short?

«SupTimeMin»: 24

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

Short?

 

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

 

HTTP метод

POST

URL запроса

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

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

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

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

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

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

Ответ

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

«Article»: 333305

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

String

«Brand»: KYB

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

String

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

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

String?

«Cost»: 123

Цена продажи

Double

«Count»: 1

Количество

Short

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

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

String

«Id»: «17473452»

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

Int

«MinCount»: 0

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

Int?

«SupCode»: «АВТОДОМ»

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

String

«SupTimeMax»: 0

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

Short?

«SupTimeMin»: 24

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

Short?

 

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

 

HTTP метод

POST

URL запроса

/SearchService/RemoveBasketPosition?positionId={positionId}

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

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

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

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

Ответ

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

«Article»: 333305

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

String

«Brand»: KYB

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

String

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

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

String?

«Cost»: 123

Цена продажи

Double

«Count»: 1

Количество

Short

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

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

String

«Id»: «17473452»

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

Int

«MinCount»: 0

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

Int?

«SupCode»: «АВТОДОМ»

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

String

«SupTimeMax»: 0

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

Short?

«SupTimeMin»: 24

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

Short?

Если в корзине не будет ни одной позиции, то ответ будет таким: []

 

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

 

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

«HasAnotherShippingCompany»: False

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

Bool

«HasDeliveryPoint»:True

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

Bool

«Points»

Точки выдачи

Object

«Addresses»

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

Object

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

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

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

String

«Id»:23

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

Int

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

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

String

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

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

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

String

«Id»:2854

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

Int

«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).
Также обратите внимание, что артикулы, бренды и прочие параметры URL-адреса нужно кодировать, чтобы передавались они верно. В нашем примере используется

HttpUtility.UrlEncode

Пример кода для автоматического оформления заказа:

HttpClient client = new HttpClient();
string lp = Convert.ToBase64String(Encoding.UTF8.GetBytes(login + ":" + password)).ToString();
Uri url = new Uri("https://av34.ru/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. Доступ запрещён по другим причинам