Technický dokument pre integráciu inzertného feedu elektromobilov do platformy Nearcharger.
Je rozdelený na povinné, odporúčané a voliteľné polia. Stačí, ak váš feed bude obsahovať povinné polia - zvyšok dopĺňame z nášho katalógu.
Predtým, než nám pošlete svoj feed, potrebujete vedieť, na čo ho mapovať. Master data API je verejný export nášho katalógu a číselníkov: zoznam značiek, modelov, variantov (vrátane výrobných rokov), výbavy, farieb a ďalších hodnôt aj s ich stabilnými ID. Vo svojom systéme si uložíte naše ID ako mapovací kľúč a vo feede potom posielate ID namiesto voľného textu - tým odpadá nejednoznačné matchovanie.
Vstupný bod je discovery index - jedna URL, ktorá vráti zoznam všetkých dostupných feedov, ich verziu a čas poslednej generácie:
GET https://nearcharger.sk/wp-json/nearcharger/v1/master-data
| Endpoint | Obsah |
|---|---|
/master-data | Discovery index - zoznam feedov, schema_version, URL, generated_at |
/master-data/catalog | Katalóg vozidiel (variant + výrobný rok = 1 položka), stránkovaný, filtre ?brand= a ?year= |
/master-data/brands | Strom značka → model so stabilnými ID a slugmi |
/master-data/equipment | Výbava - kategórie + položky |
/master-data/enums | Ostatné číselníky: pohon, karoséria, segment, nabíjací port, stav inzerátu, trh, typ inzerátu, stav vozidla, farby, sedadlá, dvere |
?format=json (default) alebo ?format=xml. Akceptujeme aj hlavičku Accept: application/xml./catalog a partner feed): ?page= a ?per_page=, maximum 500 položiek na stránku.{
"schema_version": 1,
"generated_at": "2026-07-07T03:30:00+02:00",
"page": 1,
"total_pages": 3,
"total_items": 1101,
"items": [ ... ]
}
Každá položka katalógu je konkrétny variant v konkrétnom výrobnom roku. Ten istý variant vyrábaný vo viacerých rokoch má teda viacero položiek - každá s vlastným id. Mapovací kľúč je id (stabilné, nikdy sa nemení).
{
"id": 15498,
"slug": "mini-aceman-e-2190",
"make": "Mini",
"model": "Aceman",
"version": "E",
"year": 2024,
"parent_model_slug": "mini-aceman",
"brand_id": 125,
"model_id": 704,
"body_type": "suv",
"segment": "jb-small",
"drivetrain": "front",
"charge_port": "ccs",
"price_eur": 34990,
"range_wltp": 310,
"battery_kwh": 42.5,
"power_kw": 135,
"power_hp": 184,
"battery_warranty_years": 8,
"battery_warranty_km": 160000,
"detail_url": "https://nearcharger.sk/..."
}
Pole version môže byť null - niektoré modely existujú len v jednej verzii (základný model = variant). Identita položky je vtedy make + model + year. Rovnako battery_warranty_years / battery_warranty_km sú null, ak výrobca záruku neudáva.
?brand=mini - slug alebo číselné ID značky či modelu (z /brands)?year=2024 - konkrétny výrobný rokKaždá položka číselníka má stabilné id, anglický slug a názvy v troch jazykoch:
{
"id": 87,
"slug": "heat-pump",
"names": { "en": "Heat Pump", "sk": "Tepelné čerpadlo", "cz": "Tepelné čerpadlo" }
}
/brands - strom značka → model. Značky a modely sú vlastné mená (v každom jazyku rovnaké), preto majú namiesto names objektu len jedno pole name: { "id": 125, "slug": "mini", "name": "Mini", ... }. Pole aliases je rezervované pre alternatívne zápisy (napr. VW vs. Volkswagen), v aktuálnej verzii je prázdne./equipment - výbava v kategóriách (kategória má items)./enums - pohon (drivetrain), karoséria (body_type), segment, nabíjací port (charge_port), stav inzerátu (listing_status), trh (market), typ EV (ev_type), typ inzerátu (ad_listing_type: nové / ojazdené / predvádzacie), stav vozidla (listing_state: napr. first-owner, service-book, imported-vehicle, crashed) + kanonické hodnoty color, seats a doors.S master data môžete počítať dlhodobo. Garantujeme:
schema_version. Prípadnú breaking zmenu (nová schema_version) oznámime vopred a stará verzia zostane počas prechodného obdobia dostupná.ETag aj Last-Modified. Posielajte If-None-Match - ak sa obsah nezmenil, dostanete 304 Not Modified bez tela a ušetríte prenos.Pre každého partnera vieme vygenerovať súkromný feed jeho zverejnených inzerátov na Nearchargeri - napríklad na kontrolu, čo je práve online, alebo na synchronizáciu do vášho systému. Feed je chránený statickým tokenom, ktorý vám odovzdáme pri onboardingu:
GET https://nearcharger.sk/wp-json/nearcharger/v1/partner/{id}/listings?key={token}
Bez platného tokenu vráti API 401. Feed obsahuje len verejné údaje inzerátu (žiadne kontaktné údaje) a používa rovnakú štruktúru vozidla ako váš inbound feed:
{
"id": 15498,
"url": "https://nearcharger.sk/inzerat/...",
"title": "Mini Aceman E, 2024",
"status": "active",
"car_version_id": 9876,
"car_version_slug": "mini-aceman-e-2190",
"make": "Mini",
"model": "Aceman",
"version": "E",
"year": 2024,
"price": { "amount": 34990, "currency": "EUR", "vat_deductible": true },
"mileage_km": 12000,
"color": "black",
"vin": "...",
"condition": "used",
"state": ["first-owner", "service-book"],
"equipment": ["heat-pump", "matrix-led"],
"images": { "main": "https://...", "gallery": ["https://...", "https://..."] },
"location": { "lat": 48.1, "lng": 17.1, "city": "Bratislava" }
}
car_version_id je ID z /catalog - prepojenie na master data. color, condition, state a equipment obsahujú kanonické slugy z /enums a /equipment. Stránkovanie a formáty fungujú rovnako ako pri master data (sekcia A1).
Hybridné vozidlá (HEV), plug-in hybridy (PHEV) a vozidlá s vodíkovým pohonom budú v aktuálnej verzii ignorované. Posielajte nám prosím len plne elektrické vozidlá. Pole "druh paliva" preto nemusíte uvádzať - predpokladáme BEV.
Technické dáta vozidiel (kapacita batérie, dojazd, výkon, typ karosérie atď.) preberáme z ev-database.org, ktorá poskytuje aktuálne informácie o väčšine starých aj nových EV modelov. Občas sa však môže stať, že konkrétne vozidlo v katalógu nie je (najmä menej rozšírené modely, špeciálne edície alebo veľmi staré vozidlá). V takom prípade dopĺňame údaje z vášho feedu - preto sú odporúčané polia v sekcii 4 dôležité.
Nemusíte striktne dodržiavať presné názvy polí, ktoré uvádzame v tomto dokumente. Pri onboardingu prejdeme cez váš feed a namapujeme vaše vlastné názvy na našu štruktúru. Dôležité je, aby údaj samotný bol prítomný v nejakej podobe. Príklad: pole pre cenu môžete nazvať price, cena, cena_s_dph alebo cash_selling_price - my si to namapujeme.
| Parameter | Požiadavka |
|---|---|
| Formát | XML (preferované) alebo JSON |
| Encoding | UTF-8 |
| Dostupnosť | Verejná HTTPS URL alebo s Basic Auth / Bearer Token |
| Update frekvencia | Minimálne 1× denne, ideálne 2-4× denne |
| Štruktúra | Plochá - každé vozidlo ako samostatný element / objekt v poli |
| Typ vozidiel | Len BEV - plne elektrické vozidlá |
| Veľkosť feedu | Odporúčaný limit do 500 vozidiel na jeden feed. Pri väčšom objeme nás kontaktujte vopred. |
Ak chýba čo i len jedno povinné pole, daný záznam preskočíme a označíme ako neimportovaný. Pozor na všetky položky nižšie.
| # | Pole | Typ | Popis | Príklad |
|---|---|---|---|---|
| 1 | id |
string | Stabilný unikátny identifikátor vozidla v partnerskom systéme. Nesmie sa meniť počas životnosti inzerátu. | "0300172062" |
| 2 | brand |
string | Značka vozidla | "Škoda" |
| 3 | model |
string | Model vozidla, ideálne bez variantu (variant je samostatné pole nižšie). | "Model Y" |
| 4 | variant |
string | Konkrétna verzia / výbavový stupeň. Príklad rozdelenia: značka Tesla · model Model Y · variant Long Range AWD. Ak váš systém model a variant nerozlišuje, uveďte ich spolu v poli model a toto pole vynechajte. |
"Long Range AWD" |
| 5 | year_of_production |
integer (YYYY) | Rok výroby vozidla. Pri nových autách rovnaký ako rok registrácie, pri ojazdených môže byť rozdielny. | 2023 |
| 6 | price |
integer | Cena vozidla s DPH (bez medzier, len číslo) | 536000 |
| 7 | currency |
string (ISO 4217) | Mena ceny | "EUR" alebo "CZK" |
| 8 | vat_deductible |
boolean (0/1) | Možnosť odpočtu DPH | 1 |
| 9 | mileage_km |
integer | Stav tachometra v km. Pre nové vozidlá 0. |
55279 |
| 10 | status |
string | Aktuálny stav. Akceptujeme: active, available, reserved, sold. |
"active" |
| 11 | photos[] |
array of URLs | Minimálne 1 fotografia. Verejné HTTPS URL. Odporúčame 10+ fotiek pre lepšiu konverziu. | ["https://.../1.jpg", "https://.../2.jpg"] |
id nesmie obsahovať medzery alebo špeciálne znaky (povolené: A-Z, a-z, 0-9, dash, underscore)price musí byť > 0year_of_production musí byť medzi 2010 a aktuálnym rokom + 1mileage_km musí byť ≥ 0photos[] musí obsahovať aspoň 1 dostupnú HTTPS URL (nie HTTP, nie hot-link s blokovaním)Ak si vozidlá namapujete na náš katalóg (časť A, endpoint /master-data/catalog), pošlite vo feede navyše pole catalog_id s ID položky katalógu. Vtedy polia brand, model a variant slúžia už len na kontrolu a matching je jednoznačný - žiadne textové porovnávanie názvov.
Prvú fotku v poradí berieme ako hlavnú (zobrazuje sa v prehľadoch a kartách). Ak váš systém rozlišuje hlavnú fotku od galérie, pošlite hlavnú ako prvú, alebo ju označte atribútom <photo main="1"> - obidva spôsoby akceptujeme.
Tieto polia nie sú technicky povinné, pretože väčšinu z nich máme v EV Database katalógu. Ak ich však dodáte, pomáhate nám správne namatchovať vaše vozidlo na náš katalóg a pokryjete prípady, kedy vozidlo v katalógu chýba.
| Pole | Typ | Prečo to chceme | Čo ak nedodáte |
|---|---|---|---|
vin |
string (17) | Najpresnejší identifikátor + jedinečnosť naprieč feedmi (dedup) | Použijeme model + variant matching |
engine / powertrain |
string | Továrenské označenie pohonu / motorizácie (nie len kapacita batérie). Spresňuje výber konkrétnej verzie v katalógu, napr. „Long Range Dual Motor" alebo „iV 60". | Skúsime odvodiť z modelu a variantu |
battery_kwh |
integer/float | Kapacita batérie v kWh | Z EV Database katalógu |
wltp_range_km |
integer | Dojazd podľa WLTP cyklu | Z EV Database katalógu |
power_kw |
integer | Výkon v kW | Z EV Database katalógu |
body_type |
string | Typ karosérie (SUV, Hatchback, Sedan, Coupe, Liftback, Combi, MPV, Pickup) |
Z EV Database katalógu |
drive |
string | Typ pohonu (FWD, RWD, AWD, 4WD) |
Z EV Database katalógu |
seats |
integer | Počet sedadiel | Z EV Database katalógu, ale nemusí to vždy sedieť (tá istá verzia môže mať variant s 5 aj so 7 sedadlami), preto je dobré ho tiež dodať |
Tieto údaje nemáme v katalógu a sú špecifické pre dané vozidlo. Ak ich máte, pošlite ich - zvyšujú dôveryhodnosť inzerátu (najmä pri ojazdených vozidlách).
Záruku batérie počítame automaticky na základe dátumu prvej registrácie (typicky 8 rokov alebo 160 000 km, podľa výrobcu). Preto namiesto presného dátumu konca záruky stačí, ak nám dodáte rok a mesiac registrácie. Deň nepotrebujeme.
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
registration_year |
integer (YYYY) | Rok prvej registrácie vozidla | 2021 |
registration_month |
integer (1-12) | Mesiac prvej registrácie (potrebné pre presný výpočet záruky) | 5 (= máj) |
battery_warranty |
boolean (0/1) | Má vozidlo platnú záruku na batériu | 1 |
battery_warranty_km |
integer | Maximálny počet km pre záruku batérie (ak sa líši od defaultu výrobcu) | 160000 |
Ak máte k SoH meraniu aj certifikát (PDF, obrázok), pošlite link - výrazne zvyšuje dôveru kupujúceho.
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
soh |
integer (0-100) | State of Health batérie v % (aktuálna kapacita vs. nová) | 94 |
soh_certificate_url |
URL | Odkaz na PDF / obrázok certifikátu o meraní SoH (Aviloo, Moba, výrobca atď.) | "https://.../soh-cert.pdf" |
soh_measurement_date |
date (YYYY-MM-DD) | Dátum, kedy bolo SoH merané (voliteľné, ale užitočné) | "2024-11-15" |
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
color_exterior |
string | Farba karosérie (slovne). Ideálne kanonický slug z /master-data/enums (napr. black, pearl-white) - voľný text namapujeme pri onboardingu. |
"čierna metalíza" |
color_interior |
string | Farba/typ interiéru | "čierna koža" |
metallic |
boolean (0/1) | Metalíza | 1 |
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
branch / location |
string | Mesto/pobočka, kde sa vozidlo nachádza | "Bratislava" |
address |
string | Plná adresa (voliteľné) | "Pestovateľská 5, Bratislava" |
gps_lat |
float | GPS súradnice - latitude | 48.1486 |
gps_lng |
float | GPS súradnice - longitude | 17.1077 |
Bez gps_lat / gps_lng sa inzerát nezobrazí vo filtrovaní podľa lokality a vzdialenosti. Ak súradnice nedodáte, pokúsime sa ich odvodiť geokódovaním z adresy alebo mesta - to však nemusí byť vždy presné. Najlepšie výsledky dosiahnete, keď súradnice pošlete priamo.
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
price_without_vat |
integer | Cena bez DPH | 442975 |
original_price |
integer | Pôvodná cena pred zľavou (ak je vozidlo zľavnené) | 580000 |
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
doors |
integer | Počet dverí. Tento údaj nemáme v katalógu, takže ho zobrazíme len ak ho dodáte. | 5 |
description |
string (text) | Voľný popis vozidla (môže obsahovať HTML break tags) | "Vozidlo v garantovanom stave..." |
equipment[] |
array of strings | Zoznam výbavy. Jeden item = jedna položka. Ideálne posielajte naše slugy z /master-data/equipment (napr. heat-pump) - vlastné názvy namapujeme pri onboardingu. |
["navigácia", "tempomat", "kožené sedadlá"] |
condition |
string | Potrebujeme vedieť, či je auto nové, ojazdené alebo predvádzacie: new, used, demo |
"used" |
state[] |
array of strings | Stavové príznaky vozidla (viac naraz). Ideálne posielajte naše slugy z /master-data/enums (skupina listing_state): napr. first-owner, service-book, imported-vehicle, crashed - voľný text namapujeme pri onboardingu. |
["first-owner", "service-book"] |
<?xml version="1.0" encoding="UTF-8"?>
<feed>
<vehicle>
<id>VIN123456789</id>
<brand>Škoda</brand>
<model>Enyaq</model>
<variant>iV 60</variant>
<year_of_production>2023</year_of_production>
<price>536000</price>
<currency>CZK</currency>
<vat_deductible>1</vat_deductible>
<mileage_km>55279</mileage_km>
<status>active</status>
<photos>
<photo>https://partner.sk/img/123/1.jpg</photo>
<photo>https://partner.sk/img/123/2.jpg</photo>
</photos>
</vehicle>
</feed>
<?xml version="1.0" encoding="UTF-8"?>
<feed>
<vehicle>
<!-- POVINNÉ -->
<id>VIN123456789</id>
<brand>Škoda</brand>
<model>Enyaq</model>
<variant>iV 60</variant>
<year_of_production>2023</year_of_production>
<price>536000</price>
<currency>CZK</currency>
<vat_deductible>1</vat_deductible>
<mileage_km>55279</mileage_km>
<status>active</status>
<photos>
<photo>https://partner.sk/img/123/1.jpg</photo>
<photo>https://partner.sk/img/123/2.jpg</photo>
</photos>
<!-- ODPORÚČANÉ (z katalógu) -->
<vin>TMBJB7NY2NF022916</vin>
<engine>iV 60 (RWD)</engine>
<battery_kwh>62</battery_kwh>
<wltp_range_km>412</wltp_range_km>
<power_kw>132</power_kw>
<body_type>SUV</body_type>
<drive>RWD</drive>
<seats>5</seats>
<!-- REGISTRÁCIA + ZÁRUKA BATÉRIE -->
<registration_year>2021</registration_year>
<registration_month>5</registration_month>
<battery_warranty>1</battery_warranty>
<battery_warranty_km>160000</battery_warranty_km>
<!-- SOH -->
<soh>94</soh>
<soh_certificate_url>https://partner.sk/cert/123-soh.pdf</soh_certificate_url>
<soh_measurement_date>2024-11-15</soh_measurement_date>
<!-- VZHĽAD -->
<color_exterior>biela</color_exterior>
<color_interior>čierna koža</color_interior>
<metallic>1</metallic>
<!-- LOKALITA -->
<branch>Bratislava</branch>
<gps_lat>48.1486</gps_lat>
<gps_lng>17.1077</gps_lng>
<!-- CENY -->
<price_without_vat>442975</price_without_vat>
<!-- DODATOČNÉ -->
<doors>5</doors>
<description><![CDATA[Vozidlo v perfektnom stave, prvý majiteľ.]]></description>
<condition>used</condition>
<state>
<item>first-owner</item>
<item>service-book</item>
</state>
<equipment>
<item>tepelné čerpadlo</item>
<item>navigácia</item>
<item>adaptívny tempomat</item>
<item>panoramatická strecha</item>
</equipment>
</vehicle>
</feed>
{
"feed_version": "1.0",
"generated_at": "2024-12-15T08:00:00Z",
"vehicles": [
{
"id": "VIN123456789",
"brand": "Škoda",
"model": "Enyaq",
"variant": "iV 60",
"year_of_production": 2023,
"price": 536000,
"currency": "CZK",
"vat_deductible": true,
"mileage_km": 55279,
"status": "active",
"photos": [
"https://partner.sk/img/123/1.jpg",
"https://partner.sk/img/123/2.jpg"
],
"vin": "TMBJB7NY2NF022916",
"engine": "iV 60 (RWD)",
"battery_kwh": 62,
"wltp_range_km": 412,
"power_kw": 132,
"body_type": "SUV",
"drive": "RWD",
"seats": 5,
"registration_year": 2021,
"registration_month": 5,
"battery_warranty": true,
"battery_warranty_km": 160000,
"soh": 94,
"soh_certificate_url": "https://partner.sk/cert/123-soh.pdf",
"soh_measurement_date": "2024-11-15",
"color_exterior": "biela",
"color_interior": "čierna koža",
"metallic": true,
"branch": "Bratislava",
"gps_lat": 48.1486,
"gps_lng": 17.1077,
"price_without_vat": 442975,
"doors": 5,
"description": "Vozidlo v perfektnom stave, prvý majiteľ.",
"condition": "used",
"state": ["first-owner", "service-book"],
"equipment": [
"tepelné čerpadlo",
"navigácia",
"adaptívny tempomat",
"panoramatická strecha"
]
}
]
}
idstatus obsahuje jednu z hodnôt: active / sold / reserved / availableyear_of_production je vyplnené (rok výroby)Môžeme posielať aj iné typy áut ako BEV (napr. hybridy)?
Aktuálne podporujeme len plne elektrické vozidlá (BEV). Ak váš feed obsahuje aj iné typy, môžete ich nechať vo feede - ignorujeme ich. Alebo nám pošlite samostatný feed len pre EV.
Čo ak nemáme niektoré z odporúčaných polí?
Žiadny problém - tieto polia doplníme z EV Database katalógu na základe brand + model + variant. Čím viac údajov dodáte, tým presnejší matching a väčšia šanca, že vozidlo správne identifikujeme.
Čo sa stane, ak naše vozidlo nie je v EV Database?
V takom prípade používame výhradne údaje z vášho feedu. Preto sú odporúčané polia (battery_kwh, wltp_range_km, power_kw, body_type, drive) v takom prípade kritické - bez nich nedokážeme zobraziť kompletné technické info. Pri menej rozšírených modeloch ich preto určite dodajte.
Musíme presne dodržať vaše názvy polí?
Nie. Naša integrácia podporuje mapovanie vlastných názvov polí na našu štruktúru. Pri onboardingu prejdeme cez váš feed a nastavíme mapping. Dôležité je, aby údaj samotný bol prítomný v nejakej podobe.
Ako často sa importujú zmeny?
Predvolene 1× denne. Po dohode vieme nastaviť častejší import (2-4× denne) alebo real-time webhooky.
Čo sa stane, keď vozidlo predáme?
Stačí ho odstrániť z feedu alebo nastaviť status na sold. My to automaticky reflektujeme do 48 hodín (grace period proti náhodným výpadkom feedu).
Môžeme posielať vozidlá z viacerých pobočiek v jednom feede?
Áno. Použite pole branch / location na rozlíšenie pobočiek.
Akú maximálnu veľkosť feedu zvládnete?
Aktuálne odporúčaný limit je do 500 vozidiel na jeden feed. Pri vyšších objemoch (nad 500) nás prosím kontaktujte vopred - dohodneme buď split na viacero feed súborov (napr. podľa pobočiek alebo modelov), alebo nastavíme špeciálny dávkový import. Tento limit reflektuje to, čo vieme spolahlivo zvládnuť bez rizika výpadkov.
Hostujete fotky u vás alebo ich ťaháte priamo z nás pri každom zobrazení?
Stiahneme si ich k nám (Cloudflare R2) a servírujeme z vlastnej CDN. Vy len musíte zabezpečiť, že URL fotiek je dostupná v čase importu a že fotky nemajú zapnutý hotlink protection.
Môžeme zmeniť štruktúru feedu po implementácii?
Áno, ale prosíme nás vopred informovať min. 7 dní pred zmenou. Inak môže import zlyhať a vaše inzeráty zostanú s neaktuálnymi údajmi.
Prečo potrebujete rok aj mesiac registrácie samostatne?
Záruku batérie počítame automaticky na základe dátumu prvej registrácie. Preto namiesto presného dátumu konca záruky (ktorý sa môže meniť pri rôznych výrobcoch) potrebujeme len rok a mesiac registrácie. Z týchto údajov si presný dátum konca záruky vypočítame sami podľa pravidiel daného výrobcu.
Prečo nepotrebujete pole pre druh paliva / typ prevodovky?
Aktuálne podporujeme len BEV (battery-electric) vozidlá, ktoré majú vždy elektromotor a automatickú prevodovku. Tieto polia preto nemusíte dodávať - hodnoty si pridáme automaticky.
Pre self-service validáciu feedu ešte pred odoslaním ponúkame strojovo čitateľné definície listing template (časť B):
| Súbor | Popis |
|---|---|
JSON Schema (draft 2020-12) pre JSON feed - zvalidujete si feed napr. cez ajv alebo online validátor |
|
XSD schéma pre XML feed - validácia cez xmllint --schema alebo ľubovoľný XML nástroj |
Schémy validujú štruktúru a typy povinných aj voliteľných polí. Nevynucujú presné názvy polí - ako píšeme v sekcii 1, vaše vlastné názvy namapujeme pri onboardingu. Ak však použijete názvy zo schémy, integrácia je najrýchlejšia.