Запрос по VIN
http://192.168.70.253:3102/api/vinОписание
Метод принимает VIN и ищет автомобиль по доступным каталогам. Дальнейшая работа с каталогом идёт через непрозрачные указатели: из ответа берётся vehicle.qMainGroup и передаётся в /api/q. Формировать такие указатели вручную нельзя — они возвращаются сервером.
Возможны три исхода: автомобиль определён (vehicle), подошло несколько (vehicles — покажите таблицу и повторите запрос с vehicle_id), VIN не распознан (valid_catalogs — предложите выбрать каталог вручную).
Заголовки запроса
| Заголовок | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
Authorization | string | да | — | Bearer <access_token>. |
Accept-Language | string | нет | ru | Язык названий узлов и деталей: ru, en, de, fr, es, it, pl, tr, ko, zh. |
Параметры запроса
Передаются в строке запроса.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
vin | string | нет | VIN автомобиля, 17 символов. Обязателен, если не передан vehicle_id. |
vehicle_id | string | нет | Идентификатор автомобиля из таблицы vehicles. Используется, когда по VIN нашлось несколько машин. |
catalog | string | нет | Идентификатор каталога. Ограничивает поиск одним каталогом; при поиске по vehicle_id обязателен. |
Пример запроса
curl 'http://192.168.70.253:3102/api/vin?vin=JTJBERBZ602000192' \
-H 'Authorization: Bearer <access_token>' \
-H 'Accept-Language: ru'const params = new URLSearchParams({ vin: 'JTJBERBZ602000192' })
const response = await fetch('http://192.168.70.253:3102/api/vin?' + params, {
headers: {
Authorization: 'Bearer ' + accessToken,
'Accept-Language': 'ru'
}
})
const { result } = await response.json()
if (result.vehicles) {
// несколько машин: повторите запрос с vehicle_id и catalog
} else if (result.vehicle) {
const nodes = await queryQ(result.vehicle.qMainGroup, result.catalogId)
}import requests
response = requests.get(
'http://192.168.70.253:3102/api/vin',
params={'vin': 'JTJBERBZ602000192'},
headers={
'Authorization': f'Bearer {access_token}',
'Accept-Language': 'ru',
},
timeout=30,
)
response.raise_for_status()
result = response.json()['result']
vehicle = result.get('vehicle')
if vehicle:
q_main_group = vehicle['qMainGroup']<?php
$query = http_build_query(['vin' => 'JTJBERBZ602000192']);
$ch = curl_init('http://192.168.70.253:3102/api/vin?' . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $accessToken,
'Accept-Language: ru',
],
]);
$result = json_decode(curl_exec($ch), true)['result'];
curl_close($ch);
$vehicle = $result['vehicle'] ?? null;Соединение = Новый HTTPСоединение("192.168.70.253", 3102, , , , 30);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + ТокенДоступа);
Заголовки.Вставить("Accept-Language", "ru");
Запрос = Новый HTTPЗапрос("/api/vin?vin=JTJBERBZ602000192", Заголовки);
Ответ = Соединение.ВызватьHTTPМетод("GET", Запрос);
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Результат = ПрочитатьJSON(Чтение)["result"];
Чтение.Закрыть();
Если Результат.Свойство("vehicle") Тогда
УказательГрупп = Результат["vehicle"]["qMainGroup"];
КонецЕсли;Ответ
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
success | boolean | да | Признак успешного ответа. |
result | Result | да | Полезная нагрузка. Набор полей зависит от того, чем закончилось определение автомобиля. |
Вложенные объекты
Заполняется один из трёх блоков: vehicle, vehicles или valid_catalogs.
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
vehicle | Vehicle | нет | Автомобиль определён однозначно. |
vehicles | Table | нет | По VIN подошло несколько автомобилей — таблица для выбора. Строки содержат vehicle_id для повторного запроса. |
valid_catalogs | ValidCatalog[] | нет | Автомобиль не определён, но VIN относится к этим каталогам — выбор за пользователем. |
catalogId | string | нет | Идентификатор каталога, в котором найден автомобиль. |
getCatalogData | CatalogData[] | нет | Настройки каталога. Если пришли здесь, отдельный запрос /api/catalog-data не нужен. |
bread_crumb | BreadCrumb[] | нет | Хлебные крошки для навигации по каталогу. |
flagTranslate | boolean | нет | Названия в ответе переведены машинным переводом. |
type | string | нет | Режим работы каталога, из которого получены данные, например offline. |
resultCode | number | нет | Внутренний код результата каталога. При успехе — 200. |
vin | string | нет | VIN, по которому выполнен запрос. Возвращается на всех шагах работы с каталогом. |
info | Info | нет | Сообщение для пользователя: подсказка или причина отказа. |
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
vin | string | нет | VIN автомобиля. |
vehicleId | string | нет | Идентификатор автомобиля внутри каталога. |
name | string | нет | Название модели. |
nameFull | string | нет | Полное название с комплектацией. |
nameShort | string | нет | Короткое название для заголовков. |
brandName | string | нет | Название бренда. |
brandId | string | нет | Идентификатор бренда. |
modelName | string | нет | Название модели, если каталог отдаёт его отдельно. |
qMainGroup | string | нет | Указатель на главные группы узлов. Передаётся в /api/q как параметр q. |
qImage | string | нет | Указатель на изображение автомобиля. |
attributesMain | Attribute[] | нет | Основные характеристики: год, кузов, двигатель. |
attributesAdv | AttributesAdv[] | нет | Дополнительные характеристики, сгруппированные по разделам. |
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
label | string | нет | Название характеристики. |
value | string | нет | Значение. |
id | string | нет | Служебный идентификатор. |
header | boolean | нет | Строка является заголовком группы, а не значением. |
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
title | string | нет | Заголовок раздела. |
attributes | Attribute[] | нет | Характеристики раздела. |
tables | Table[] | нет | Табличные данные раздела. |
Универсальный блок таблицы: используется для выбора автомобиля, характеристик и служебных данных.
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
title | string | нет | Заголовок таблицы. |
headers | Header[] | нет | Описание колонок. В части ответов приходит под ключом header. |
data | object[] | нет | Строки таблицы: объекты, ключи которых совпадают с id колонок. |
q | string | нет | Указатель для перехода по строке, если таблица кликабельна. |
group_id | string | нет | Идентификатор группы строк. |
flag_hide_header | boolean | нет | Шапку таблицы выводить не нужно. |
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
id | string | нет | Ключ, по которому берётся значение из строки data. |
value | string | нет | Заголовок колонки. |
style | object | нет | CSS-свойства для ячейки: ширина, выравнивание. |
slot | string | нет | Тип содержимого для особой отрисовки. |
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
catalog | string | нет | Идентификатор каталога для повторного запроса с параметром catalog. |
name | string | нет | Название каталога для показа пользователю. |
Плоский список флагов и значений: наличие строки с нужным name включает возможность.
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
name | string | нет | Код настройки, например models или flagResetVinOnChngLang. |
value | string | нет | Значение настройки. |
title | string | нет | Название для интерфейса. |
q | string | нет | Указатель, если настройка ведёт на страницу каталога. |
vin | boolean | нет | Каталог поддерживает поиск по VIN. |
model | boolean | нет | Каталог поддерживает подбор по моделям. |
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
q | string | нет | Указатель для возврата на этот уровень через /api/q. |
title | string | нет | Название уровня. |
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
type | enum | нет | default, info, success или error. |
title | string | нет | Заголовок сообщения. |
text | string | нет | Текст сообщения. |
html | string | нет | Оформленный текст, если он есть. |
links | object[] | нет | Ссылки вида { q, title } для перехода в каталог. |
{
"success": true,
"result": {
"bread_crumb": [],
"type": "offline",
"resultCode": 200,
"vin": "JTJBERBZ602000192",
"catalogId": "lexus",
"vehicle": {
"vin": "JTJBERBZ602000192",
"brandId": "lexus",
"brandName": "Lexus",
"modelName": "LEXUS NX SERIES",
"name": "Lexus, серия NX, 10.2014.",
"nameFull": "LEXUS NX, выпущено в 10.2014.",
"nameShort": "СЕРИЯ LEXUS NX",
"qMainGroup": "702c9916-428a-433d-8eac-2245d9a48834",
"attributesMain": [
{ "id": "vin", "label": "VIN-номер", "value": "JTJBERBZ602000192" },
{ "id": "model_code", "label": "Код модели", "value": "ZGZ15L-AWXLPW" }
]
},
"getCatalogData": [
{ "name": "models", "value": true }
]
}
}Ошибки
| HTTP | Код ошибки | Когда возникает |
|---|---|---|
| 401 | Unauthorized | Токен не передан или истёк. Обновите пару через /auth/refresh и повторите запрос. |
| 200 | result.info | VIN не распознан или каталог недоступен. Ответ приходит с кодом 200, причина — в result.info, поля vehicle и vehicles при этом пустые. |
Дополнительная информация
- Выбор автомобиля из таблицы
vehicles: повторите запрос с параметрамиvehicle_idиcatalog, VIN при этом не нужен. - Смена языка требует повторного запроса — названия приходят уже переведёнными под
Accept-Language. - Если в ответе пришёл
getCatalogData, отдельный запрос настроек каталога делать не нужно.