API проценки автозапчастей JUST.PARTS — документация
Автоматическое получение цен, остатков, сроков поставки и аналогов
API для автоматической проценки автозапчастей
Метод возвращает предложения автозапчастей по артикулу: цены с учётом действующих скидок, доступное количество, склад и срок поставки. При необходимости в ответ включаются предложения аналогов.
Доступ и авторизация
Для выполнения запросов необходимо создать API-ключ в личном кабинете. Передавайте полученный ключ в заголовке X-API-Key. Тип содержимого запроса — application/json. Ключ следует хранить на сервере вашей системы.
https://just.parts/api3/quotesАдрес метода: https://just.parts/api3/quotes. Запрос отправляется методом POST с телом в формате JSON.
curl -X POST "https://just.parts/api3/quotes" \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{"items":[{"article":"ARTICLE","brand":"BRAND"}],"includeAnalogues":true,"sort":"price_asc"}'Запрос проценки
Отправьте JSON с массивом items. Каждый элемент содержит артикул и, при необходимости, бренд. Артикул должен содержать не менее трёх символов после нормализации.
| Поле | Тип | Описание |
|---|---|---|
items | массив | Обязательное поле. От 1 до 10 позиций. |
items[].article | строка | Артикул для поиска, допускается частичное совпадение. |
items[].brand | строка | Необязательный фильтр по бренду. |
includeAnalogues | boolean | Искать аналоги. По умолчанию false. |
sort | строка | price_asc (по умолчанию), days_asc или quantity_desc. |
{
"items": [
{ "article": "ARTICLE", "brand": "BRAND" },
{ "article": "ARTICLE2" }
],
"includeAnalogues": true,
"sort": "price_asc"
}Ответ API
Для каждой позиции запроса в results возвращаются подходящие товары. В offers содержатся предложения исходного товара, а в offersAnalogues — плоский список предложений аналогов. Цены указываются в рублях с учётом персональной скидки пользователя или скидки на бренд.
{
"requestId": "REQUEST_ID",
"currency": "RUB",
"sort": "price_asc",
"results": [
{
"article": "ARTICLE",
"brand": "BRAND",
"status": "found",
"totalProducts": 1,
"products": [
{
"code": "PRODUCT_CODE_01",
"article": "ARTICLE_01",
"brand": "BRAND",
"name": "Название товара",
"offers": [
{
"offerId": "own:OFFER_ID_01",
"type": "own",
"price": 1500,
"quantity": 5,
"stockId": "STOCK_01",
"stockName": "Склад 1",
"days": 0,
"multiplicity": 1
}
],
"totalOffers": 1,
"offersAnalogues": [
{
"offerId": "provider:OFFER_ID_02",
"type": "provider",
"code": "PRODUCT_CODE_02",
"article": "ANALOG_ARTICLE",
"brand": "ANALOG_BRAND",
"name": "Название аналога",
"price": 1320,
"quantity": 3,
"stockId": "PROVIDER_01",
"stockName": "Поставщик 1",
"days": 3,
"multiplicity": 1
}
],
"totalAnaloguesOffers": 1
}
]
},
{
"article": "ARTICLE2",
"brand": null,
"status": "not_found",
"totalProducts": 0,
"products": []
}
]
}| Поле | Тип | Описание |
|---|---|---|
requestId | string | Уникальный идентификатор запроса. Формируется сервером для каждого обращения к API. Может использоваться при обращении в техническую поддержку для поиска конкретного запроса. |
currency | string | Валюта всех цен в ответе. Значение RUB — российский рубль. |
sort | string | Применённый способ сортировки предложений. price_asc — по возрастанию цены, days_asc — по увеличению срока поставки, quantity_desc — по убыванию доступного количества. |
results | array | Массив результатов проценки. Каждому элементу массива items из запроса соответствует отдельный элемент results. Порядок элементов сохраняется в соответствии с порядком переданных артикулов. |
results[].article | string | Артикул из соответствующей позиции запроса. Возвращается в нормализованном виде: в верхнем регистре, без пробелов и специальных символов. |
results[].brand | string | null | Бренд, указанный в соответствующей позиции запроса. Используется для ограничения поиска товаров конкретным производителем. Если бренд не был передан, возвращается null. |
results[].status | string | Результат поиска исходных товаров. found — найдены товары с доступными предложениями. not_found — подходящих товаров с доступными предложениями нет. |
results[].totalProducts | number | Общее количество найденных исходных товаров с доступными предложениями, соответствующих артикулу и указанному бренду. Значение может превышать количество элементов в products, поскольку в ответ включается не более пяти исходных товаров на одну позицию запроса. |
results[].products | array | Массив найденных исходных товаров. Каждый элемент содержит сведения о товаре, его собственные предложения и, если был запрошен поиск аналогов, предложения аналогов. Возвращается не более пяти товаров на одну позицию. |
products[].code | string | Внутренний код товара в системе JUST.PARTS. Однозначно определяет товар в каталоге. Может использоваться для сопоставления позиций при последующих обращениях к API. |
products[].article | string | Артикул найденного товара, указанный в каталоге. Может отличаться от артикула в запросе, поскольку API поддерживает поиск по частичному совпадению. |
products[].brand | string | Название производителя найденного товара. Возвращается полное наименование бренда из каталога JUST.PARTS. |
products[].name | string | Наименование товара из каталога JUST.PARTS. Содержит описание запчасти, которое может включать её назначение, характеристики или применяемость. |
products[].offers | array | Массив доступных предложений по исходному товару. Включает предложения собственных складов JUST.PARTS и внешних поставщиков. |
offers[].offerId | string | Уникальный идентификатор конкретного предложения. Используется для различения предложений одного товара. Содержит префикс own: для собственного склада или provider: для поставщика и идентификатор записи предложения. |
offers[].type | string | Источник предложения. own — товар находится на собственном складе JUST.PARTS. provider — предложение внешнего поставщика. |
offers[].price | number | Цена одной единицы товара в российских рублях. Указывается с учётом действующих скидок пользователя. |
offers[].quantity | number | Доступное количество единиц товара по конкретному предложению. |
offers[].stockId | string | Идентификатор склада или источника поставки. Используется для различения предложений, которые могут иметь одинаковую цену, но разные сроки и остатки. |
offers[].stockName | string | Название склада или поставщика. Для собственных складов возвращается название склада либо его код. Для внешних предложений — название поставщика. Если название отсутствует, возвращается «Поставщик». |
offers[].days | number | null | Срок поставки в днях. Значение 0 означает предложение собственного склада или нулевой срок в данных поставщика. Положительное число указывает срок поставки, переданный системой. Значение null означает, что срок поставки не указан. Поле не является гарантией точной даты получения заказа. |
offers[].multiplicity | number | Кратность |
products[].totalOffers | number | Общее количество доступных предложений по исходному товару до применения ограничения на количество предложений в ответе. Например, если найдено 15 предложений, totalOffers будет равен 15, а в массив offers попадут не более десяти. |
products[].offersAnalogues | array | Общий массив предложений товаров-аналогов. Заполняется при includeAnalogues: true. Аналоги определяются отдельно для каждого исходного товара. В ответ включается не более 20 различных товаров-аналогов и не более семи предложений для каждого. |
offersAnalogues[].offerId | string | Уникальный идентификатор предложения аналога. Формируется по тому же принципу, что и offerId исходного товара: own: для собственного склада, provider: для внешнего поставщика. |
offersAnalogues[].type | string | Источник предложения аналога. own — собственный склад JUST.PARTS, provider — внешний поставщик. |
offersAnalogues[].code | string | Внутренний код товара-аналога в системе JUST.PARTS. Позволяет определить, к какому именно аналогу относится предложение. Один и тот же код может повторяться в нескольких предложениях, если аналог доступен на разных складах или у нескольких поставщиков. |
offersAnalogues[].article | string | Артикул товара-аналога. Относится непосредственно к аналогу, а не к исходному товару. Может отличаться от исходного артикула. |
offersAnalogues[].brand | string | Производитель товара-аналога. Может отличаться от производителя исходного товара. |
offersAnalogues[].name | string | Наименование товара-аналога в каталоге JUST.PARTS. Позволяет идентифицировать предлагаемую замену. |
offersAnalogues[].price | number | Цена одной единицы товара-аналога в рублях с учётом действующих скидок пользователя. |
offersAnalogues[].quantity | number | Доступное количество товара-аналога по конкретному предложению. |
offersAnalogues[].stockId | string | Идентификатор склада или источника предложения аналога. Позволяет различать предложения одного аналога с разных складов или от разных поставщиков. |
offersAnalogues[].stockName | string | Название склада или поставщика. Для собственных складов возвращается название склада либо его код. Для внешних предложений — название поставщика. Если название отсутствует, возвращается «Поставщик». |
offersAnalogues[].days | number | null | Срок поставки аналога в днях по конкретному предложению. Значение 0 означает нулевой срок, null — отсутствие информации о сроке. |
offersAnalogues[].multiplicity | number | Кратность |
products[].totalAnaloguesOffers | number | Общее количество доступных предложений всех найденных товаров-аналогов до применения ограничений на количество аналогов и предложений. Может превышать количество элементов в offersAnalogues. |
Ограничения
Для одного запроса действуют следующие ограничения на количество позиций и предложений.
| Ограничение | Значение |
|---|---|
| Позиций в одном запросе | 10 |
| Найденных товаров на позицию | 5 |
| Предложений одного найденного товара | 10 |
| Уникальных товаров-аналогов на найденный товар | 20 |
| Предложений каждого аналога | 7 |
| Минимальный интервал между разрешёнными запросами | 1 секунда |
| Максимум запросов за скользящие 5 минут | 100 |
Частотные ограничения применяются суммарно ко всем API-ключам одной учётной записи.
Ошибки и повторные запросы
| HTTP | Значение |
|---|---|
| 400 | Ошибка параметров запроса, некорректный артикул или сортировка. |
| 401 | API-ключ не передан или недействителен. |
| 403 | Доступ к API отключён или недостаточно разрешений. |
| 429 | Превышен интервал или пятиминутная квота запросов. |
| 500 | Внутренняя ошибка сервера. |
При ответе 429 Too Many Requests заголовок Retry-After содержит время ожидания в секундах перед повторным запросом.
