договор 2026-10-05
Данни

Полета по източник

Какво реално публикува всеки поддържан източник на инвентар — матрицата на покритието на данните за състоянието, капаните при всеки източник и как да пишете код, който оцелява при разликите.

Поддържаните източници на инвентар захранват един API, но не публикуват едни и същи неща. Германска платформа на едро дава пълен протокол от оглед и каталог на оборудването по DAT; японски лот за износ дава протокол от огледа на търга и оценка на състоянието; корейските обяви носят характеристики и по избор данни за състоянието. Тази страница е честната карта кой какво ви дава, за да решите какво може да обещае продуктът ви, преди да го изградите.

Три слоя данни

Всеки автомобил в API е описан на три нива на нормализиране. Да знаете на кой слой е дадено поле ви казва веднага колко преносимо е.

СлойКъдеПоследователностЗа какво
Общото ядроКартите от търсенето и горното ниво на двата ендпойнта за детайлиЕднакво за всички поддържани източнициСписъци, филтри, сортиране, показване на цени, обратни броячи — всичко, което трябва да работи еднакво.
Нормализираният блок с детайлиvehicle_details в /api/auction/{site}/{id} и /api/car-detailsЕднакви имена на ключовете навсякъде; наличието варира по източникСъстояние, щети, документи, сервизна история, оборудване. Проверявайте за ключа, не го предполагайте.
Суровата карта на източникаcar_identificationСпецифична за източника. Имената на ключовете се сменят с всеки източникПоследната миля — стойност, която източникът публикува и която още няма еквивалент между източниците.

Общото ядро е гарантирано в смисъл, че полето винаги е в договора; отделна стойност пак може да е null, когато конкретен източник не я публикува. fuel_group, например, е празно за повечето японски лотове — а лот без записано гориво съвпада с всеки филтър fuel, а не с нито един, така че филтрирането по гориво никога не прави тези лотове недостъпни.

Какво ви дава всеки източник

Прочетете тази таблица, преди да определите обхвата на функция. „Оскъдно“ не е бъг за докладване — това е, което публикува аукционната къща.

ИзточникКакво еДълбочинаКакво дава само той
auto1Най-голямата дигитална B2B платформа на едро в ЕвропаДълбоко — пълен vehicle_detailsНай-богатите данни за оборудването в API (каталог по DAT), измервания на дебелината на боята, състояние на джантите, структурирани щети с обобщение и история на предишни щети.
openlaneОбщоевропейски търгове с автомобили от лизинг и автопарковеДълбоко — пълен vehicle_detailsСвободни коментари за всяка щета, PDF протоколи по тип (вътрешни щети, външни щети, поддръжка, състояние на батерията) и собствен индекс на протоколите в car_reports.
schadeautosПовредени и подлежащи на ремонт автомобили от Нидерландия и БенелюксСредноПолета за повредени автомобили: обем на двигателя, трансмисия, статус ДДС/марж, нетни и брутни цени за износ, описателен текст за щетите.
copartCopart Germany — повредени лотове и такива в движениеСредноСигнал „пали и се движи“, серия и специално оборудване от фабричния лист, публикувани цени на лота; без актуална цена при заявка.
encarВодещата автомобилна платформа в Южна КореяСредно — дълбоки характеристики, плитко състояниеГолям блок с характеристики и опции, брой снимки по тип и данни за регистрацията. Детайлите за състоянието и произшествията са по-оскъдни от тези на източниците от ЕС.
kbchachachaЮжнокорейска платформа за продажба в бройХарактеристики и по избор данни от огледvehicle_details.kb_diagnosis / kb_inspection: статус, редове на протокола, проверени системи, маркировки на панелите, снимки и VIN, когато ги има.
japanЯпонски инвентар за износ от 127 аукционни къщи (USS, JU, TAA, CAA, ARAI, Honda и други)Плитко — очаквайте vehicle_details оскъден или липсващИмпортирани снимки, по избор протоколи и оценки, информация за първоначалната продажба и данни от съпоставените оферти на посредници. Без извличане на детайли при поискване.

Данни за състоянието: матрица на покритието

Това е таблицата, от която хората реално имат нужда. Тя казва кои ключове на vehicle_details можете да очаквате от кой източник. Празно означава, че текущата интеграция не обещава това поле. То може да не е налично при източника, още да не е обогатено или да е пропуснато заради правата; липсата не е присъда за чисто състояние.

auto1openlaneДруги източници
damages (по панел)Структурирани, с обобщение, брой и предишни щетиСтруктурирани, с коментар за всяка щетаОскъдни или липсващи
inspection_reportsЕдин URLPDF по тип според type_idKB използва kb_diagnosis / kb_inspection. Японските протоколи са незадължителни импортирани данни.
documentsСервизна книжка + снимки с детайли от сервизаНяма — само булеви стойности в paperwork—
service_historyСамо обобщениеСамо обобщение—
equipmentКаталог по DAT (най-богат)Списък с опции + аксесоариВарира
paperworkЧастичноCOCAvailable, RegistrationDocsAvailable, IsV5Present, LicensePlate—
estimated_repair_costsДаДа—

Бележки по източник, които си струва да знаете

Японски търгове — цената е начално наддаване

Активен японски лот няма крайна цена, докато не приключи, така че current_price при japan е началното наддаване, а не разход. Някои лотове не публикуват начална цена, а противоречивите импортирани цени не се показват. Номиналните начални цени може да са далеч под крайната. Четете я като долна граница. buy_now_price никога не се задава за този източник и в резултат класирането по най-добра стойност ще отбелязва някои от тези лотове прекалено оптимистично.

Японските редове са с произход JP. Използвайте country=JP или site=japan и /api/auction/japan/{id} за съхранените детайли. /api/car-details не приема Япония. Използвайте ID като низ от търсенето, без да го превръщате в JavaScript число.

OpenLane — видове протоколи

OpenLane класифицира всеки протокол, който публикува. type е четимото име, а type_id — суровият код на източника.

type_idtypeПоявява се в
1internal_damage_reportinspection_reports
2external_damage_reportinspection_reports
3maintenance_recordsinspection_reports
4option_reportoption_reports
5battery_health_reportinspection_reports
другоreportinspection_reports

Единственият протокол от оглед на Auto1 се нормализира в същия списък с тип inspection_report и без type_id.

Японски търгове — протоколът от търга

Японските протоколи от търговете и снимките са незадължителни импортирани данни. Използвайте върнатата галерия и наличните записи за протоколи; текущият импорт не обещава нормализиран запис auction_sheet за всеки лот, извлечен VIN или актуално извличане на детайли от източника. Спецификацията от източника и данните от съпоставените посредници остават в car_identification; адресите на импортираните протоколи са в JapanMerged.AuctionSheetUrls.

Отваряне и изтегляне на протоколи

Следвайте точно върнатия адрес /report-vault/{site}/{auction_id}/{token}; токенът идентифицира вече известен протокол и не е адрес на източника, който можете да съставите. Този маршрут за доставка в момента не изисква API ключ. Успешният отговор е двоичен файл с неговия Content-Type, а не JSON обвивка. download=1 иска прикачен файл. 302 сочи към страница при източника; 400 означава невалиден токен, 404 — няма съвпадащ протокол, а 503 — базата данни не е достъпна. Не препращайте API ключа си към целта на пренасочването.

KB ChaChaCha — диагностика и оглед

Четете vehicle_details.kb_diagnosis и vehicle_details.kb_inspection поотделно: единият протокол може да е наличен, а другият — не. Те запазват данните от източника, вместо да ги превръщат в универсална оценка за произшествия. Използвайте числовия carSeq за /api/car-details?site=kbchachacha&id=... или точния съхранен идентификатор от картата в търсенето за /api/auction/kbchachacha/{id}.

Поле на протоколаФормаКак да го използвате
statusavailable или unavailableUnavailable означава, че няма използваем протокол; не означава липса на щети. Липсващ блок може да означава и че детайлите още не са извлечени.
rows{cells, cells_en}[]Подредени редове на таблицата с оригинални и преведени клетки. Запазвайте реда и повтарящите се етикети, вместо да ги превръщате в речник.
checked_controls{name, id, value, label}[]Отметнатите полета в протокола на източника. Запазвайте свързания етикет; самата сурова отметка не е диагноза.
panel_marks{position, panel, code, condition}[]X подмяна, C корозия, W ремонт/заваряване на панел, A драскотина, U неравност, T повреда. Позицията от източника и номерът на панела в диаграмата се различават. Някои маркировки вместо това носят element_id и condition_original от диаграмата на източника.
images / documentsмасивиНезадължителни снимки-доказателства и записи за документи. Използвайте върнатите адреси; тези вложени връзки не се пренаписват еднакво през архива с протоколи.
vinstring или nullПрисъства само когато е извлечен валиден VIN. Липсващият VIN не доказва, че две обяви са различни автомобили.

Конфликти в имената, за които да внимавате

Една и съща дума означава различни неща при различните източници — точно затова съществува нормализираният блок. Файл за изтегляне е Documents[] в Auto1 — докато Documents в OpenLane е речник с булеви стойности за документите, а не списък с файлове. Ако четете car_identification директно, проблемът е ваш. Ако четете vehicle_details.documents — не е.

Страна на волана

steering се нормализира до left или right. Използват се изрични данни от източника, където се поддържат; иначе се извежда от пазара на регистрация. Това е изведено поле, когато няма изрична стойност от източника, а не универсална гаранция от физически оглед. Японският внос може да включва автомобили с ляв волан, затова не извеждайте страната на волана от държавата в клиента си.

Тъй като всяка обява попада в едната или другата страна, двете стойности разделят инвентара: бройките им дават общия брой без филтри. Като филтър приема две стойности, всяка с четири равностойни записа — left, lhd, left-hand, left_hand и right, rhd, right-hand, right_hand — а всичко друго е 400. Приема се от /api/search, /api/top-offers, /api/listVehicles и всеки ендпойнт за фасети — макар че при фасетите се изчислява в момента, а не се чете от предварително изчислената таблица, така че е по-бавно от извикване без филтри.

Код, който оцелява при разликите

javascript
Everyone else has a summary.
    serviceVisits: d.service_history ?? null,
    serviceSummary: d.service_history_summary ?? null,

    // Most listings carry no reports at all. Empty is normal, not an error.
    reports: d.inspection_reports ?? [],

    repairCost: d.estimated_repair_costs ?? null,
  };
}

// Wrong: this breaks the day a source is added, and hides data today.
if (auction.site_name === "auto1") { /* ... */ }
Липсващ ключ може да означава липсващи данни, предстоящо обогатяване или право за полета; не го тълкувайте като отрицателен резултат.
  • Никога не задавайте списъка с източници ръчно. Четете го от /api/sites при стартиране. Непознат slug е 400 с посочено име, така че остарял ръчен списък превръща нов източник в счупено внедряване.
  • Проектирайте за най-плиткия източник, който обслужвате. Никой източник не гарантира пълна сервизна история за всяка кола. Обещавайте я там, където я има, и деградирайте плавно, където я няма.
  • Третирайте car_identification като без версии. Ключовете му следват собствените имена на всеки източник и се променят, когато източникът се промени. Всичко, от което зависите дългосрочно, трябва да идва от общото ядро или от vehicle_details.
  • details_pending: true не е грешка. Означава, че детайлите още не са събрани. Проверявайте периодично, вместо да опитвате в плътен цикъл, и показвайте данните от картата, които вече имате.