Nearcharger je trh s elektromobilmi na Slovensku a v Česku. Tento dokument opisuje, ako nám posielať ponuku vozidiel cez feed a aké dáta vám na to dávame my. Nemusíte ho čítať celý: vyberte si, čo práve riešite.
Čo musí feed obsahovať, ako vyzerá a čo skontrolovať pred odoslaním.
A1 až A3 Mapujem na váš katalógStabilné ID vozidiel, značiek, výbavy a číselníkov na mapovanie.
A6 Kontrolujem, čo sa importovaloStav a dôvod pri každom vozidle, ktoré ste poslali.
A5 Sťahujem svoje inzerátyFeed vašich zverejnených inzerátov na kontrolu alebo synchronizáciu.
Ako prebieha napojenie
- Namapujte si katalógVoliteľné, ale najspoľahlivejšie: uložte si naše ID vozidiel a slugy číselníkov (A1 až A3).
- Pripravte feedPodľa časti 1. Overte ho schémou a porovnajte s ukážkami (sekcia 9).
- Pošlite nám URLNastavíme sťahovanie, pri vlastnej štruktúre aj mapovanie, a odovzdáme vám token.
- Kontrolujte výsledokSpätný feed ukáže pri každom vozidle, či je zverejnené, a ak nie, prečo (A6).
Časť 1 Váš feed pre Nearcharger Čo nám posielate: štruktúra, polia, príklady a kontroly
1. Skôr než začnete
Hybridy, plug-in hybridy ani vodíkové vozidlá automaticky nevyraďujeme: feed v tomto formáte nemá pole paliva, takže každé vozidlo v ňom by sme zverejnili. Ak váš export obsahuje aj iné pohony, pošlite samostatný feed len s elektromobilmi, alebo nám pri onboardingu povedzte, ktoré vaše pole nesie druh paliva, a nastavíme filter.
Vlastné názvy polí zvládneme. Ak použijete názvy z tohto dokumentu, mapovanie máme hotové a feed napojíme v deň, keď dostaneme jeho URL. Ak máte vlastnú štruktúru, pri onboardingu namapujeme vaše názvy aj hodnoty. Dôležité je, aby údaj vo feede bol.
Technické údaje berieme z katalógu. Keď vozidlo spárujeme s položkou nášho katalógu (vychádza z ev-database.org), doplníme mu z nej chýbajúce technické údaje. Vozidlo, ktoré v katalógu nie je, má len údaje z vášho feedu.
2. Technické požiadavky
| Parameter | Požiadavka |
|---|---|
| Formát | JSON (preferované) alebo XML, v kódovaní UTF-8 |
| Štruktúra | Zoznam vozidiel: JSON {"vehicles": [ ... ]}, XML <feed><vehicle>... |
| Prístup | URL, ktorú si sami sťahujeme. HTTPS odporúčame, HTTP prijmeme. Voliteľne s prihlásením cez Basic Auth alebo Bearer token. |
| Ako často sťahujeme | Raz denne (predvolené), po dohode dvakrát denne alebo každú hodinu. URL má vždy vracať aktuálny stav. |
| Veľkosť | Najviac 500 vozidiel a 64 MB na jeden feed, odpoveď do 60 sekúnd. Väčší inventár rozdeľte do viacerých feedov, napríklad podľa pobočiek. |
3. Polia feedu
Tvrdá podmienka importu sú len tri veci: identifikátor, identita vozidla a cena. Ostatné polia inzerát nezablokujú, ale bez nich mu niečo chýba. Kliknutím na sekciu prejdete na podrobnosti.
| Skupina | Polia | Sekcia |
|---|---|---|
| Povinné | id brand + model alebo catalog_id price | 3.1 |
| Potrebné | photos status variant mileage_km year_of_production vat_deductible currency | 3.2 |
| Technické údaje | catalog_id vin engine battery_kwh wltp_range_km power_kw body_type drive seats | 4 |
| Registrácia a záruka | registration_year registration_month manufacture_month battery_warranty_km | 5.1 |
| Batéria | soh soh_certificate_url soh_measurement_date | 5.2 |
| Vzhľad a leasing | color_exterior metallic continuation_of_leasing | 5.3 |
| Lokalita a kontakt | branch address gps_lat gps_lng contact_phone contact_email | 5.4 |
| Obsah inzerátu | title description condition state doors equipment equipment_unmapped price_without_vat | 5.5 |
3.1 Povinné: bez týchto polí inzerát nevznikne
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
id |
string | Stabilný identifikátor vozidla vo vašom systéme, podľa ktorého vozidlo pri každom behu nájdeme. Tvar je na vás, nesmie sa však meniť. Zmenené id je pre nás nové vozidlo: s rovnakým VIN ho odmietneme ako duplicitu a pôvodný inzerát skryjeme, bez VIN vznikne druhý inzerát. V oboch prípadoch inzerát príde o históriu. |
"0300172062" |
brand |
string | Značka. Spolu s model tvorí identitu vozidla; namiesto oboch stačí catalog_id. |
"Škoda" |
model |
string | Model, ideálne bez verzie (tá patrí do variant). |
"Enyaq" |
price |
number | Cena s DPH, len číslo, väčšia než nula. | 21900 |
Ak si vozidlá namapujete na náš katalóg (A2), pošlite pole catalog_id s id položky katalógu. Je to najspoľahlivejšie párovanie: záznam prejde aj bez názvov a spárujeme ho presne s touto položkou. Názvy, ak ich pošlete, použijeme na zloženie nadpisu. catalog_id, ktoré v katalógu nie je, ignorujeme a párujeme podľa názvov.
3.2 Potrebné: bez nich inzerátu niečo chýba
Radšej zverejníme neúplný inzerát než žiadny, preto chýbajúce pole nikto nenahlási ako chybu. Pri každom poli je napísané, o čo inzerát príde.
| Pole | Typ | Čo sa stane, ak ho nepošlete | Príklad |
|---|---|---|---|
photos[] |
array of URLs | Inzerát nemá obrázok. Prvá fotka je hlavná. Berieme najviac 30 fotiek, odporúčame aspoň 10. | ["https://.../1.jpg"] |
status |
string | Vozidlo berieme ako dostupné. Hodnoty: active alebo available (v ponuke), reserved (zatiaľ zobrazené ako dostupné), sold (predané), hidden (stiahnuté). Pri sold a hidden inzerát hneď skryjeme a necháme ako históriu. Inú hodnotu berieme ako dostupné, takže predané auto neoznačujte napríklad inactive. |
"active" |
variant |
string | Verziu v katalógu trafíme výrazne menej často a inzerát čaká na ručné spárovanie, dovtedy bez katalógových údajov. Ak model a verziu nerozlišujete, pošlite ich spolu v model. |
"iV 60" |
mileage_km |
integer | Inzerát nevyjde vo filtri podľa nájazdu. Pri novom vozidle pošlite 0. |
55279 |
year_of_production |
integer | Inzerát nevyjde vo filtri podľa roku. Rok výroby, nie registrácie. | 2021 |
vat_deductible |
boolean | Inzerát neukáže odpočet DPH a nedopočítame cenu bez DPH. | true |
currency |
string | Menu odvodíme z trhu feedu (SK EUR, CZ CZK). Posielajte ju však: len tak odhalíme ceny v mene druhého trhu (taký záznam odmietneme). |
"EUR" |
3.3 Kontroly: čo sa stane pri chybe
Zlú hodnotu radšej vynecháme, než by sme kvôli nej zahodili celé vozidlo. Záznam odmietneme len v prvých šiestich prípadoch; v spätnom feede ho uvidíte ako error s kódom (A6.2).
| Pole | Čo kontrolujeme | Pri porušení |
|---|---|---|
id | Vyplnené. | Neimportuje sa (validation) |
| identita vozidla | brand aj model, alebo platné catalog_id. | Neimportuje sa (validation) |
price | Väčšia než 0. | Neimportuje sa (validation) |
currency | Nie je to mena druhého trhu. Neznámu menu prepustíme. | Neimportuje sa (validation) |
vin | Rovnaké VIN už na Nearchargeri nie je pod iným záznamom. | Neimportuje sa (duplicate_vin) |
| počet vozidiel | Najviac 500 na feed a nie viac, než pojme váš program. | Vozidlá na konci feedu sa neimportujú (limit_exceeded) |
vin | 17 znakov bez písmen I, O a Q. | VIN vynecháme |
year_of_production, registration_year | Od 2010 do nasledujúceho roka. | Rok vynecháme |
manufacture_month, registration_month | 1 až 12. | Mesiac vynecháme |
mileage_km | 0 alebo viac. | Nájazd vynecháme |
seats, doors | Sedadlá 2 až 8, dvere 2 až 5. | Hodnotu vynecháme |
gps_lat, gps_lng | Obe vyplnené, nie 0/0, bod v strednej Európe. | Polohu určíme z adresy (5.4) |
| áno / nie polia | true/false, 1/0, yes/no, áno/nie. | Hodnotu vynecháme |
| hodnoty číselníkov | condition, state, equipment, body_type, drive, color_exterior: slug z A3 alebo hodnota namapovaná pri onboardingu. | Hodnotu vynecháme a nahlásime si ju; po doplnení prekladu ju najbližší beh doplní |
status | Jedna z hodnôt v 3.2. | Vozidlo berieme ako dostupné |
photos[] | Verejné URL obrázkov, najviac 30. | Fotku, ktorú nestiahneme, vynecháme (A6.3) |
4. Technické údaje vozidla
Väčšinu týchto údajov má náš katalóg. Pomáhajú nám však vozidlo s katalógom spárovať a pri vozidle mimo katalógu sú jediným zdrojom. Údaj o konkrétnom kuse (kapacita, dojazd, výkon, počet miest) má prednosť pred katalógom; pri karosérii a pohone platí katalóg a vaša hodnota je záloha.
| Pole | Typ | Popis | Ak ho nepošlete |
|---|---|---|---|
catalog_id | integer | ID položky katalógu (A2), nahrádza brand aj model (3.1). | Párujeme podľa názvov. |
vin | string (17) | Podľa VIN odhalíme, že to isté auto už ponúka niekto iný, a pri prechode na feed nájdeme vaše existujúce inzeráty. | Duplicitu neodhalíme. |
engine | string | Označenie motorizácie, napríklad "iV 60 (RWD)". Použijeme ho, len keď chýba variant. | Nič, ak posielate variant. |
battery_kwh | number | Brutto kapacita batérie v kWh. | Z katalógu, ak je vozidlo spárované. |
wltp_range_km | integer | Dojazd podľa WLTP v km. | Z katalógu, ak je vozidlo spárované. |
power_kw | number | Výkon v kW. | Z katalógu, ak je vozidlo spárované. |
body_type | string | Karoséria, slug zo skupiny body_type (suv, hatchback, sedan, station-estate...). | Z katalógu; vaša hodnota platí, len keď ju katalóg nemá. |
drive | string | Pohon, slug zo skupiny drivetrain: front, rear, awd. Prijmeme aj FWD, RWD, AWD, 4WD. | Z katalógu; vaša hodnota platí, len keď ju katalóg nemá. |
seats | integer | Počet sedadiel (2 až 8). | Z katalógu, ktorý pri verziách s 5 aj 7 miestami nemusí sedieť. |
5. Údaje o konkrétnom vozidle
Tieto údaje katalóg nemá, lebo patria konkrétnemu kusu. Pri ojazdenom vozidle výrazne zvyšujú dôveru kupujúceho.
5.1 Registrácia a záruka batérie
Zostávajúcu záruku na batériu počítame sami: od prvej registrácie odpočítame roky záruky spárovanej verzie z katalógu. Dátum konca záruky preto nepotrebujeme, stačí rok a mesiac registrácie.
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
registration_year | integer | Rok prvej registrácie. | 2021 |
registration_month | integer | Mesiac prvej registrácie (1 až 12). Bez neho zostávajúcu záruku v rokoch nevypočítame. | 5 |
manufacture_month | integer | Mesiac výroby (1 až 12). Rok výroby je year_of_production. | 3 |
battery_warranty_km | integer | Kilometrový limit záruky na batériu, ak sa pri tomto vozidle líši od katalógu. | 160000 |
5.2 Stav batérie (SoH)
SoH je pri ojazdenom elektromobile jeden z najdôležitejších údajov. Ak k meraniu máte certifikát, pošlite naň odkaz, stiahneme si ho k inzerátu.
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
soh | number | Stav batérie v percentách (0 až 100), desatinné miesta sú v poriadku. | 94.5 |
soh_certificate_url | URL | Odkaz na certifikát merania (PDF alebo obrázok, napríklad Aviloo či Moba). | "https://.../soh.pdf" |
soh_measurement_date | date | Dátum merania (YYYY-MM-DD). Ukladáme ho, na inzeráte ho zatiaľ nezobrazujeme. | "2026-08-15" |
5.3 Vzhľad a leasing
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
color_exterior | string | Farba karosérie: slug zo skupiny color alebo jej slovenský, český či anglický názov (black, Čierna, Černá, Black). Metalízu posielajte zvlášť, nie v názve farby. | "black" |
metallic | boolean | Metalický lak. | true |
continuation_of_leasing | boolean | Kupujúci môže prevziať leasing. | false |
5.4 Lokalita a kontakt pobočky
Máte viac pobočiek? Pošlite ku každému vozidlu jeho mesto, súradnice a kontakt. Inak dostanú všetky vozidlá adresu a číslo z partnerského profilu a kupujúci zavolá na zlú pobočku.
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
branch | string | Mesto, kde vozidlo stojí (prijmeme aj názov poľa location). Zobrazí sa ako mesto, nepatrí sem názov firmy. | "Bratislava" |
address | string | Úplná adresa. Z nej určíme polohu, keď chýbajú súradnice. | "Pestovateľská 5, Bratislava" |
gps_lat, gps_lng | number | Súradnice. Bez polohy sa inzerát nezobrazí vo vyhľadávaní podľa vzdialenosti; poloha odvodená z adresy nemusí byť presná. Zástupnú hodnotu ako 0 neposielajte. | 48.1486, 17.1077 |
contact_phone | string | Telefón na pobočku. Bez neho použijeme telefón z profilu. | "+421 900 123 456" |
contact_email | string | E-mail pobočky, chodia naň dopyty. Bez neho použijeme e-mail z profilu. | "ba@vasadomena.sk" |
5.5 Obsah inzerátu
| Pole | Typ | Popis | Príklad |
|---|---|---|---|
title | string | Nadpis inzerátu, obyčajný text (HTML značky odstránime). Keď chýba, zložíme ho zo značky, modelu a verzie, napríklad Škoda Enyaq iV 60. Pri každej zmene vozidla ho nastavíme podľa feedu. | "Škoda Enyaq iV 60, 1. majiteľ" |
description | string | Voľný popis. Zachováme <br>, <p>, <strong>, <b>, <em>, <i>, <ul>, <ol>, <li>, <h3> a <h4>; ostatné značky, atribúty aj odkazy odstránime. Funguje aj obyčajný text so zlomami riadkov. | "Prvý majiteľ..." |
condition | string | Slug zo skupiny ad_listing_type: new, used alebo used-demo-car (prijmeme aj demo). | "used" |
state[] | array | Stavové príznaky, slugy zo skupiny listing_state, napríklad first-owner, service-book, imported-vehicle, crashed. | ["first-owner"] |
doors | integer | Počet dverí (2 až 5). Katalóg ho nemá, zobrazíme ho len z feedu. | 5 |
equipment[] | array | Výbava ako slugy z /equipment, jedna položka na prvok. Vlastné názvy namapujeme pri onboardingu. | ["heat-pump"] |
equipment_unmapped[] | array | Výbava, ktorú ste k nášmu zoznamu nevedeli priradiť, ako text. Prejdeme ju a namapujeme alebo doplníme; potom ju najbližší beh ukáže na inzeráte. | ["CD prehrávač"] |
price_without_vat | number | Nepovinné: cenu bez DPH si pri vat_deductible: true dopočítame zo sadzby trhu. Vašu hodnotu použijeme len na kontrolu (varovanie price_net_equals_gross, A6.3). | 17805 |
6. Príklady
Úplný JSON s každým poľom. Rovnaké vozidlo v XML je nižšie, ukážkové feedy na stiahnutie v sekcii 9.
{
"feed_version": "1.0",
"generated_at": "2026-09-23T04:00:00Z",
"vehicles": [
{
"id": "SK-2021-0457",
"brand": "Škoda",
"model": "Enyaq",
"price": 21900,
"photos": [
"https://partner.sk/img/0457/1.jpg",
"https://partner.sk/img/0457/2.jpg"
],
"status": "active",
"variant": "iV 60",
"mileage_km": 55279,
"year_of_production": 2021,
"vat_deductible": true,
"currency": "EUR",
"catalog_id": 14914,
"vin": "TMBJB7NY2NF022916",
"engine": "iV 60 (RWD)",
"battery_kwh": 62,
"wltp_range_km": 413,
"power_kw": 132,
"body_type": "suv",
"drive": "rear",
"seats": 5,
"registration_year": 2021,
"registration_month": 5,
"manufacture_month": 3,
"battery_warranty_km": 160000,
"soh": 94,
"soh_certificate_url": "https://partner.sk/cert/0457-soh.pdf",
"soh_measurement_date": "2026-08-15",
"color_exterior": "white",
"metallic": true,
"continuation_of_leasing": false,
"branch": "Bratislava",
"address": "Pestovateľská 5, Bratislava",
"gps_lat": 48.1486,
"gps_lng": 17.1077,
"contact_phone": "+421 900 123 456",
"contact_email": "bratislava@partner.sk",
"title": "Škoda Enyaq iV 60, tepelné čerpadlo, 1. majiteľ",
"description": "Vozidlo v perfektnom stave, prvý majiteľ.",
"condition": "used",
"state": ["first-owner", "service-book"],
"doors": 5,
"equipment": ["heat-pump", "navigation", "adaptive-cruise-control", "panoramic-roof"],
"equipment_unmapped": ["bočné airbagy"],
"price_without_vat": 17805
}
]
}
XML - to isté vozidlo so všetkými poľami
<?xml version="1.0" encoding="UTF-8"?>
<feed>
<vehicle>
<!-- 3.1 POVINNÉ -->
<id>SK-2021-0457</id>
<brand>Škoda</brand>
<model>Enyaq</model>
<price>21900</price>
<!-- 3.2 POTREBNÉ -->
<photos>
<photo>https://partner.sk/img/0457/1.jpg</photo>
<photo>https://partner.sk/img/0457/2.jpg</photo>
</photos>
<status>active</status>
<variant>iV 60</variant>
<mileage_km>55279</mileage_km>
<year_of_production>2021</year_of_production>
<vat_deductible>1</vat_deductible>
<currency>EUR</currency>
<!-- 4 TECHNICKÉ ÚDAJE -->
<catalog_id>14914</catalog_id>
<vin>TMBJB7NY2NF022916</vin>
<engine>iV 60 (RWD)</engine>
<battery_kwh>62</battery_kwh>
<wltp_range_km>413</wltp_range_km>
<power_kw>132</power_kw>
<body_type>suv</body_type>
<drive>rear</drive>
<seats>5</seats>
<!-- 5.1 REGISTRÁCIA A ZÁRUKA -->
<registration_year>2021</registration_year>
<registration_month>5</registration_month>
<manufacture_month>3</manufacture_month>
<battery_warranty_km>160000</battery_warranty_km>
<!-- 5.2 BATÉRIA -->
<soh>94</soh>
<soh_certificate_url>https://partner.sk/cert/0457-soh.pdf</soh_certificate_url>
<soh_measurement_date>2026-08-15</soh_measurement_date>
<!-- 5.3 VZHĽAD A LEASING -->
<color_exterior>white</color_exterior>
<metallic>1</metallic>
<continuation_of_leasing>0</continuation_of_leasing>
<!-- 5.4 LOKALITA A KONTAKT -->
<branch>Bratislava</branch>
<address>Pestovateľská 5, Bratislava</address>
<gps_lat>48.1486</gps_lat>
<gps_lng>17.1077</gps_lng>
<contact_phone>+421 900 123 456</contact_phone>
<contact_email>bratislava@partner.sk</contact_email>
<!-- 5.5 OBSAH INZERÁTU -->
<title>Škoda Enyaq iV 60, tepelné čerpadlo, 1. majiteľ</title>
<description><![CDATA[Vozidlo v perfektnom stave, prvý majiteľ.]]></description>
<condition>used</condition>
<state>
<item>first-owner</item>
<item>service-book</item>
</state>
<doors>5</doors>
<equipment>
<item>heat-pump</item>
<item>navigation</item>
<item>adaptive-cruise-control</item>
<item>panoramic-roof</item>
</equipment>
<equipment_unmapped>
<item>bočné airbagy</item>
</equipment_unmapped>
<price_without_vat>17805</price_without_vat>
</vehicle>
</feed>
XML - odporúčané minimum
<?xml version="1.0" encoding="UTF-8"?>
<feed>
<vehicle>
<id>SK-2021-0457</id>
<brand>Škoda</brand>
<model>Enyaq</model>
<price>21900</price>
<photos>
<photo>https://partner.sk/img/0457/1.jpg</photo>
<photo>https://partner.sk/img/0457/2.jpg</photo>
</photos>
<status>active</status>
<variant>iV 60</variant>
<mileage_km>55279</mileage_km>
<year_of_production>2021</year_of_production>
<vat_deductible>1</vat_deductible>
<currency>EUR</currency>
</vehicle>
</feed>
7. Checklist pred odoslaním
Bez týchto sa vozidlo neimportuje
- Feed je na URL, v JSON alebo XML a v kódovaní UTF-8
- Každé vozidlo má stabilné
id, ktoré sa nemení - Každé vozidlo má
brandamodel, alebocatalog_id - Každé vozidlo má cenu s DPH väčšiu než nula a menu svojho trhu
- Feed má najviac 500 vozidiel
Bez týchto bude inzerát zlý alebo neúplný
- Feed obsahuje len elektromobily
- Predané vozidlá majú
status: sold, alebo vo feede nie sú - Každé vozidlo má aspoň jednu verejnú fotku a hlavná je prvá
- Vyplnené sú
variant,mileage_km,year_of_productionavat_deductible - Hodnoty číselníkov sú slugy z master dát a nezaradená výbava je v
equipment_unmapped
8. Časté otázky
Môžeme posielať aj hybridy alebo spaľovacie autá?
Nie. Nearcharger je len pre plne elektrické vozidlá a iné automaticky nevyraďujeme (sekcia 1). Pošlite samostatný feed len s elektromobilmi, alebo nám povedzte, ktoré vaše pole nesie druh paliva, a nastavíme filter. Pole paliva ani prevodovky pre elektromobily neposielajte.
Čo sa stane, keď vozidlo predáme?
Nastavte status na sold alebo vozidlo z feedu vynechajte; inzerát skryjeme pri najbližšom behu. Ak by jeden beh naraz skryl nezvyčajne veľa vozidiel (viac než 5 a zároveň viac než 10 %), berieme to ako pravdepodobnú chybu feedu: v tom behu neskryjeme nič a náš tím dostane upozornenie. Kým to nevyriešime, vozidlá zostanú zverejnené.
Ako stiahneme z Nearchargera všetky vozidlá naraz?
Pošlite v JSON-e prázdny zoznam {"vehicles": []}. Prvý prázdny beh inzeráty neskryje (prázdny súbor býva chyba), v spätnom feede uvidíte stav skipped a čas, kedy sa skryjú. Ak je feed prázdny aj po približne 20 hodinách, skryjeme ich. XML bez vozidiel berieme vždy ako výpadok, takže v XML sťahujte vozidlá cez status.
Ako zistíme, ktoré vozidlá sa importovali a prečo niektoré nie?
Zo spätného feedu (A6): jeden riadok na každé vozidlo, ktoré ste poslali, s naším ID inzerátu, URL, stavom a pri odmietnutých s dôvodom. Je živý, takže ho môžete skontrolovať hneď po behu.
Čo ak nemáme niektoré technické údaje?
Keď vozidlo spárujeme s katalógom, doplníme ich z neho. Pri vozidle mimo katalógu má inzerát len údaje z feedu, takže pri menej rozšírených modeloch ich určite pošlite.
Máme viac než 500 vozidiel.
Rozdeľte inventár do viacerých feedov, napríklad podľa pobočiek alebo značiek. Každý napojíme samostatne.
Ťaháte fotky pri každom zobrazení z nášho servera?
Nie. Pri importe si ich stiahneme k nám a zobrazujeme ich z vlastného úložiska. URL musia byť dostupné v čase importu a bez hotlink ochrany. Fotky rozlišujeme podľa URL, takže upravenú fotku pošlite pod novou URL.
Môžeme po spustení zmeniť štruktúru feedu?
Áno, dajte nám však vedieť aspoň 7 dní vopred. Inak môže import zlyhať a inzeráty zostanú s neaktuálnymi údajmi.
9. Na stiahnutie
| Súbor | Na čo |
|---|---|
JSON Schema (draft 2020-12) na validáciu JSON feedu, napríklad cez ajv. | |
XSD na validáciu XML feedu, napríklad xmllint --schema listing-template.xsd feed.xml. | |
| Ukážkový feed pre slovenský trh (EUR), 5 vozidiel vrátane záznamu s minimom polí. | |
| Ukážkový feed pre český trh (CZK), 3 vozidlá vrátane predaného. |
Obe ukážky spolu obsahujú každé pole z časti 1 a prejdú naším importom bez varovania. Schémy kontrolujú štruktúru a typy; čo import naozaj odmietne, je v 3.3.
Časť 2 Naše dáta pre vás (API) Katalóg a číselníky na mapovanie, feed vašich inzerátov a spätný feed
A1. Master data: prehľad a formáty
Master data sú verejný export nášho katalógu a číselníkov: značky, modely, verzie po výrobných rokoch, výbava, farby a ďalšie hodnoty, každá so stabilným ID a slugom. Uložte si ich ako mapovací kľúč a vo feede posielajte naše hodnoty namiesto voľného textu. Nie je potrebný žiadny token.
GET https://nearcharger.sk/wp-json/nearcharger/v1/master-data
| Endpoint | Obsah |
|---|---|
/master-data | Rozcestník: schema_version a zoznam feeds s URL, formátmi a časom generovania |
/master-data/catalog | Katalóg vozidiel (A2), stránkovaný, filtre ?brand= a ?year= |
/master-data/brands | Značky a ich modely s ID, slugmi a aliasmi (A3) |
/master-data/equipment | Výbava v kategóriách (A3) |
/master-data/enums | Ostatné číselníky: pohon, karoséria, segment, nabíjací port, stav inzerátu, trh, typ EV, typ inzerátu, stav vozidla, farby, sedadlá, dvere (A3) |
- Formát:
?format=json(predvolené) alebo?format=xml, prípadne hlavičkaAccept: application/xml. Formát, filtre a stránkovanie sa dajú kombinovať, napríklad?brand=mini&year=2024&format=xml. - Stránkovanie (
/catalog, A5, A6):?page=a?per_page=, predvolene 100, najviac 500 položiek na stránku. - Obálka: stránkované odpovede majú
schema_version,generated_at,page,total_pages,total_itemsaitems./brands,/equipmenta/enumsvracajú všetko naraz, len soschema_version,generated_ataitems.
{
"schema_version": 1,
"generated_at": "2026-09-23T03:30:04+00:00",
"page": 1,
"total_pages": 3,
"total_items": 1101,
"items": [ ... ]
}
A2. Katalóg vozidiel (/catalog)
Položka katalógu je jedna verzia v jednom výrobnom roku, takže tá istá verzia vyrábaná viac rokov má viac položiek. Mapovací kľúč je id, nikdy sa nemení a vo feede ho posielate ako catalog_id.
{
"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": "type-2",
"ev_type": "bev",
"price_eur": 34990,
"range_wltp": 310,
"battery_kwh": 42.5,
"battery_kwh_usable": 40.7,
"power_kw": 135,
"power_hp": 184,
"battery_warranty_years": 8,
"battery_warranty_km": 160000,
"seats": 5,
"detail_url": "https://nearcharger.sk/..."
}
versionjenullpri modeloch s jedinou verziou; identitu potom tvorímake + model + year. Záruka batérie jenull, keď ju výrobca neudáva.battery_kwhje brutto kapacita (tak ju prijímame aj vo feede),battery_kwh_usablevyužiteľná.body_type,segment,drivetrain,charge_portaev_typesú slugy z/enums.seatsje počet miest podľa katalógu. Tá istá verzia sa vyrába s 5 aj so 7 miestami, preto posielajte vo feede skutočný počet; vaša hodnota má prednosť.
Filtre: ?brand= berie slug alebo ID značky či modelu presne tak, ako sú v /brands (napríklad mini, 125, aceman alebo 704), ?year= výrobný rok. Filtre platia súčasne a total_items zodpovedá výsledku po filtrovaní. Neznámy slug vráti prázdny zoznam.
GET https://nearcharger.sk/wp-json/nearcharger/v1/master-data/catalog?brand=mini&year=2024
A3. Číselníky (/brands, /equipment, /enums)
Položka číselníka má stabilné id, anglický slug a názvy v troch jazykoch (cz je čeština). Vo feede posielajte slug: je rovnaký v každom jazyku.
{
"id": 87,
"slug": "heat-pump",
"names": { "en": "Heat Pump", "sk": "Tepelné čerpadlo", "cz": "Tepelné čerpadlo" }
}
| Endpoint | Obsah |
|---|---|
/brands | Značky s modelmi. Majú jedno pole name namiesto names, lebo sú to vlastné mená: { "id": 125, "slug": "mini", "name": "Mini", "aliases": [...], "models": [...] }. aliases sú ďalšie zápisy tej istej značky alebo modelu (napríklad vw), vrátane tých, ktoré sa náš import naučil z partnerských feedov (malé písmená, bez diakritiky). Pri mapovaní ich berte ako rovnocenné s name. |
/equipment | Kategórie výbavy, každá s id, slug, names a zoznamom items. |
/enums | Objekt, ktorého kľúče sú číselníky: drivetrain, body_type, segment, charge_port, listing_status, market, ev_type, ad_listing_type (new, used, used-demo-car), listing_state (first-owner, service-book, ...) a color. seats a doors sú zoznamy čísel: [2 ... 8] a [2, 3, 4, 5]. |
Keď sa tento dokument a endpoint rozchádzajú v hodnote číselníka, platí endpoint.
A4. Stabilita, aktualizácia a limity
- ID a slugy sa nikdy nemenia ani nerecyklujú, môžete si ich uložiť ako trvalý kľúč.
- Polia a hodnoty číselníkov sa len pridávajú, nikdy sa nepremenúvajú ani nemažú. Neznáme polia ignorujte.
- Každá odpoveď nesie
schema_version(dnes1). Nekompatibilnú zmenu by sme oznámili vopred a stará verzia by istý čas zostala dostupná.
- Aktualizácia: master data aj feed inzerátov generujeme raz denne v noci, okolo 03:30 UTC. Stačí jeden pull denne, ideálne po 04:00 UTC.
- Cache: odpovede nesú
ETagaLast-Modified. PošliteETagspäť vIf-None-Matcha pri nezmenenom obsahu dostanete304 Not Modifiedbez tela. - Limity na IP adresu: 60 requestov za minútu spolu pre master data, 30 za minútu spolu pre feed inzerátov a spätný feed. Nad limitom vrátime
429.
A5. Feed vašich inzerátov (token)
Súkromný feed vašich zverejnených inzerátov, napríklad na kontrolu, čo je online, alebo na synchronizáciu do vášho systému. Chráni ho token, ktorý dostanete pri onboardingu. Skryté inzeráty v ňom nie sú, pre tie je spätný feed (A6). Formáty a stránkovanie ako v A1.
GET https://nearcharger.sk/wp-json/nearcharger/v1/partner/{id}/listings?key={token}
Je to náš interný formát (import ho prijme aj späť), takže názvy polí sú iné ako vo feede, ktorý nám posielate: make, version, year, car_version_id, cena ako objekt price, range_wltp, drivetrain, color, metallization, images, location a contact. id je naše ID inzerátu, vaše id je tu source_id.
| Pole | Význam |
|---|---|
id, url | Naše ID inzerátu a jeho verejná stránka. |
source_id | Vaše id z feedu, ten istý kľúč ako v spätnom feede. null pri inzeráte zadanom ručne. |
status | active, reserved alebo sold. |
updated_at | Kedy nočné generovanie naposledy zistilo zmenu inzerátu (UTC). Nie je to filter: stiahnite všetko a porovnajte čas pri každom id. Ak dostanú nový čas všetky inzeráty naraz, spracujte ich znova. |
car_version_id, car_version_slug | Spárovaná položka katalógu, null, kým nie je spárovaná. |
soh, battery_kwh, range_wltp, power_kw | Hodnoty konkrétneho vozidla, nie katalógový nominál. |
images | main je hlavná fotka, gallery ostatné; hlavná sa v galérii neopakuje. |
contact | Telefón a e-mail pobočky zo stránky inzerátu. name a address zvyčajne null. |
Číselníkové polia (color, condition, state, equipment, body_type, drivetrain, ev_type, market) obsahujú slugy z A3, nevyplnené polia sú null. Odpoveď má Cache-Control: private, no-store, podmienený request s If-None-Match však funguje a token overíme aj pred 304.
Ukážka položky feedu inzerátov
{
"id": 58153,
"source_id": "BMWSK-000123",
"url": "https://nearcharger.sk/inzerat/...",
"title": "Mini Aceman E, 2024",
"description": "Vozidlo v perfektnom stave, prvý majiteľ, servisná knižka.",
"status": "active",
"market": "sk",
"updated_at": "2026-09-22T03:30:11+00:00",
"car_version_id": 15498,
"car_version_slug": "mini-aceman-e-2190",
"make": "Mini",
"model": "Aceman",
"version": "E",
"year": 2024,
"manufacture_month": 1,
"registration_year": 2024,
"registration_month": 3,
"price": { "amount": 34990, "currency": "EUR", "vat_deductible": true },
"mileage_km": 12000,
"soh": 95.9,
"soh_certificate_url": "https://nearcharger.sk/wp-content/uploads/soh-certifikat.pdf",
"soh_measurement_date": "2026-08-14",
"battery_kwh": 42.5,
"range_wltp": 310,
"battery_warranty_years": 8,
"battery_warranty_km": 160000,
"power_kw": 135,
"body_type": "suv",
"drivetrain": "front",
"ev_type": "bev",
"seats": 5,
"color": "black",
"doors": 5,
"metallization": true,
"continuation_of_leasing": false,
"vin": "WMW21GF0XR2V15498",
"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", "address": "Tuhovská 5, 831 07 Bratislava" },
"contact": { "phone": "+421 900 123 456", "email": "predaj@vasadomena.sk", "name": null, "address": null }
}
A6. Spätný feed: čo sa stalo s každým vozidlom (token)
Jeden riadok na každé vozidlo, ktoré ste nám poslali, kľúčovaný na vaše id: naše ID inzerátu, URL, stav a pri vozidle, ktoré zostalo vonku, aj dôvod. Nie je to nočný snapshot, ukazuje stav hneď po poslednom behu importu, takže ho stačí skontrolovať raz po každom behu.
GET https://nearcharger.sk/wp-json/nearcharger/v1/partner/{id}/reconciliation?key={token}
Rovnaký token, formáty a stránkovanie ako feed inzerátov. V XML je koreň <reconciliation>, riadky <items><item>, feedy <feeds><feed>. Cache funguje len cez obsahový ETag (Last-Modified sa neposiela). Kým váš feed nie je nastavený, payload je prázdny (items: [], generated_at: null).
Ukážka odpovede spätného feedu
{
"schema_version": 1,
"generated_at": "2026-09-23T04:05:12Z",
"partner_id": 29540,
"feeds": [
{
"feed_id": 12,
"name": "MINI Slovakia",
"market": "sk",
"is_active": true,
"last_sync_at": "2026-09-23T04:00:00Z",
"last_sync_status": "ok",
"last_sync_message": "",
"listings": { "live": 3, "sold": 1, "orphaned": 0, "error": 1, "over_cap": 0 }
}
],
"summary": { "error": 1, "sold": 1, "unmatched": 1, "published": 2 },
"page": 1,
"total_pages": 1,
"total_items": 5,
"items": [
{
"source_id": "MINI-SK-000101",
"vin": "WMW11DJ0XP2R00101",
"status": "published",
"our_post_id": 58153,
"url": "https://nearcharger.sk/inzerat/mini-cooper-se-2024/",
"error_code": "",
"error_message": "",
"photos_sent": 12,
"photos_imported": 12,
"warnings": [],
"car_version_id": 15344,
"match_method": "catalog_id",
"match_score": 1,
"adopted_at": null,
"sold_at": null,
"orphaned_at": null,
"last_seen_in_feed": "2026-09-23T04:00:41Z",
"last_changed": "2026-09-21T04:00:37Z",
"last_synced": "2026-09-23T04:00:41Z"
},
{
"source_id": "MINI-SK-000105",
"vin": "WMW11DJ0XP2R00105",
"status": "error",
"our_post_id": null,
"url": null,
"error_code": "validation",
"error_message": "missing_required: price.amount",
"photos_sent": null,
"photos_imported": null,
"warnings": [],
"car_version_id": null,
"match_method": "none",
"match_score": null,
"adopted_at": null,
"sold_at": null,
"orphaned_at": null,
"last_seen_in_feed": "2026-09-23T04:00:41Z",
"last_changed": null,
"last_synced": "2026-09-23T04:00:41Z"
}
]
}
A6.1 Stavy
Presne jeden stav na riadok; vyhráva prvý, ktorý sedí (zhora nadol).
| Stav | Význam | Čo s tým |
|---|---|---|
error | Záznam sa neimportoval, alebo sa jeho inzerát skryl, lebo prestal byť importovateľný. | Opravte ho podľa error_code a error_message (A6.2). Znova ho skúsime pri najbližšom behu, v ktorom sa feed zmenil. |
over_cap | Inzerát existuje a aktualizujeme ho, ale nie je viditeľný, lebo máte obsadené všetky miesta programu. | Zverejní sa sám, keď sa miesto uvoľní. Nové vozidlo, pre ktoré miesto nie je, dostane error s kódom limit_exceeded. |
sold | Poslali ste status: sold. Inzerát je skrytý a ostáva ako história. | Nič. Ak vozidlo vrátite ako dostupné, znova sa zverejní. |
orphaned | Vozidlo z feedu zmizlo alebo má status: hidden. Inzerát je skrytý, nie zmazaný. | Nič, ak je predané. Keď je vozidlo vo feede späť, znova sa zverejní. |
adopted | Záznam sme naviazali na inzerát, ktorý ste na Nearchargeri mali pred feedom. Hlási sa za beh, v ktorom sa to stalo. | Nič. Odteraz inzerát riadi feed. |
unmatched | Inzerát je živý, ale nie je spárovaný s katalógom, takže má len údaje z feedu. | Pošlite catalog_id alebo presnejší variant. Na párovaní pracuje aj náš tím. |
updated | Inzerát je živý a posledný beh ho aktualizoval. | Nič. |
published | Inzerát je živý a nezmenený. | Nič. |
A6.2 Kódy chýb
| error_code | Význam |
|---|---|
validation | Chýba niečo z 3.1 (id, identita vozidla, price) alebo je cena v mene druhého trhu. Správa pomenuje pole. |
duplicate_vin | Vozidlo s rovnakým VIN už je na Nearchargeri: pod iným id vo vašom feede, z iného feedu alebo od iného predajcu. Správa uvedie to id, alebo názov a ID existujúceho inzerátu. |
limit_exceeded | Vozidlo sa nezmestilo do limitu feedu (najviac 500) alebo programu. Importujeme v poradí feedu, takže vonku zostanú vozidlá na konci. |
import_failed | Technické zlyhanie na našej strane. Vidíme ho aj my. |
unmapped_value | Povinné pole má hodnotu, ktorú nevieme preložiť. Pri bežných poliach nenastane: neznámu hodnotu len vynecháme (3.3). |
A6.3 Varovania
Varovanie nemení stav, len hovorí, čo inzerátu chýba.
| warning | Význam | Čo robiť |
|---|---|---|
photos_unavailable | Nepodarilo sa stiahnuť ani jednu fotku. | Overte, že URL sú verejné, bez prihlásenia a hotlink ochrany. Znova skúsime pri zmenenej sade fotiek. |
photos_incomplete | Časť fotiek sa nepodarilo stiahnuť ani na tretí pokus (fotky nad 30 sa nerátajú). | Porovnajte photos_sent a photos_imported. |
price_net_equals_gross | Pri odpočte DPH sú price a price_without_vat rovnaké. Zobrazujeme price ako cenu s DPH. | Posielajte price s DPH, price_without_vat môžete vynechať. |
A6.4 Polia riadku a stav feedu
| Pole | Význam |
|---|---|
source_id | Vaše id z feedu, kľúč riadku. |
vin | VIN po našej normalizácii (veľké písmená, bez medzier), prázdne, ak ste ho neposlali. |
our_post_id, url | Naše ID inzerátu a jeho URL, null, kým inzerát neexistuje. |
error_code, error_message | Pri error: kód (A6.2) a krátky technický text, ktorý pomenuje pole alebo kolidujúci inzerát. |
photos_sent, photos_imported | Koľko fotiek ste poslali a koľko inzerát ukazuje. photos_imported je null, kým sa fotky sťahujú; pri neimportovanom zázname sú null obe. |
warnings | Kódy z A6.3, prázdny zoznam, keď nie je čo hlásiť. |
car_version_id, match_method, match_score | Párovanie s katalógom. match_method: catalog_id (poslali ste ho), exact (podľa názvu a údajov), manual (podľa pravidla potvrdeného naším tímom), adopted (prevzatý inzerát), fuzzy (máme kandidáta, ešte nepotvrdeného) alebo none (podobné vozidlo sme nenašli). match_score je istota od 0 do 1. |
adopted_at, sold_at, orphaned_at | Kedy riadok prešiel do stavu; sold_at a orphaned_at len kým v ňom je. |
last_seen_in_feed, last_changed, last_synced | Kedy sme záznam naposledy videli vo feede, kedy sa zmenil jeho obsah a kedy sa riadok zapísal (UTC). |
summary | Počty riadkov podľa stavu, len nenulové. |
feeds[] | Stav každého vášho feedu, pozri nižšie. |
Niektoré veci zastavia beh pred zápisom prvého vozidla, takže ich nenesie žiadny riadok. Vidíte ich v feeds[].last_sync_status a last_sync_message uvedie dôvod:
failed: feed sa nepodarilo stiahnuť alebo prečítať, alebo v ňom nie je zoznam vozidiel. Berieme to ako výpadok a nič neskryjeme.skipped: účet ešte nie je prepnutý na správu feedom, predplatné je zrušené, program nemá pre feed voľné miesto, kredit na inzeráty nepokryje vozidlá, ktoré by beh zverejnil (rátajú sa aj už živé), alebo prišiel prázdny feed.unchanged: feed je rovnaký ako minule, nič sme neprepisovali.ok: beh prebehol. Vozidlá spracúvame po dávkach, riadky sa môžu ešte pár minút dopĺňať.
listings dáva počty podľa stavu. Ak je over_cap trvalo vyšší než nula, posielate viac vozidiel, než pojme váš program.