Nearcharger · Pre partnerov

Feed špecifikácia pre partnerov

Ako nám posielať ponuku elektromobilov a aké dáta vám na to dávame.

Verzia 3.0 Aktualizované september 2026 Len elektromobily (BEV) English version

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.

Ako prebieha napojenie

  1. Namapujte si katalógVoliteľné, ale najspoľahlivejšie: uložte si naše ID vozidiel a slugy číselníkov (A1 až A3).
  2. Pripravte feedPodľa časti 1. Overte ho schémou a porovnajte s ukážkami (sekcia 9).
  3. Pošlite nám URLNastavíme sťahovanie, pri vlastnej štruktúre aj mapovanie, a odovzdáme vám token.
  4. 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

Posielajte len plne elektrické vozidlá (BEV)

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

ParameterPožiadavka
FormátJSON (preferované) alebo XML, v kódovaní UTF-8
ŠtruktúraZoznam vozidiel: JSON {"vehicles": [ ... ]}, XML <feed><vehicle>...
PrístupURL, 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ťahujemeRaz 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.

SkupinaPoliaSekcia
Povinnéid brand + model alebo catalog_id price3.1
Potrebnéphotos status variant mileage_km year_of_production vat_deductible currency3.2
Technické údajecatalog_id vin engine battery_kwh wltp_range_km power_kw body_type drive seats4
Registrácia a zárukaregistration_year registration_month manufacture_month battery_warranty_km5.1
Batériasoh soh_certificate_url soh_measurement_date5.2
Vzhľad a leasingcolor_exterior metallic continuation_of_leasing5.3
Lokalita a kontaktbranch address gps_lat gps_lng contact_phone contact_email5.4
Obsah inzerátutitle description condition state doors equipment equipment_unmapped price_without_vat5.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
catalog_id nahrádza brand aj model

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í
idVyplnené.Neimportuje sa (validation)
identita vozidlabrand aj model, alebo platné catalog_id.Neimportuje sa (validation)
priceVäčšia než 0.Neimportuje sa (validation)
currencyNie je to mena druhého trhu. Neznámu menu prepustíme.Neimportuje sa (validation)
vinRovnaké VIN už na Nearchargeri nie je pod iným záznamom.Neimportuje sa (duplicate_vin)
počet vozidielNajviac 500 na feed a nie viac, než pojme váš program.Vozidlá na konci feedu sa neimportujú (limit_exceeded)
vin17 znakov bez písmen I, O a Q.VIN vynecháme
year_of_production, registration_yearOd 2010 do nasledujúceho roka.Rok vynecháme
manufacture_month, registration_month1 až 12.Mesiac vynecháme
mileage_km0 alebo viac.Nájazd vynecháme
seats, doorsSedadlá 2 až 8, dvere 2 až 5.Hodnotu vynecháme
gps_lat, gps_lngObe vyplnené, nie 0/0, bod v strednej Európe.Polohu určíme z adresy (5.4)
áno / nie poliatrue/false, 1/0, yes/no, áno/nie.Hodnotu vynecháme
hodnoty číselníkovcondition, 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í
statusJedna 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_idintegerID položky katalógu (A2), nahrádza brand aj model (3.1).Párujeme podľa názvov.
vinstring (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.
enginestringOznačenie motorizácie, napríklad "iV 60 (RWD)". Použijeme ho, len keď chýba variant.Nič, ak posielate variant.
battery_kwhnumberBrutto kapacita batérie v kWh.Z katalógu, ak je vozidlo spárované.
wltp_range_kmintegerDojazd podľa WLTP v km.Z katalógu, ak je vozidlo spárované.
power_kwnumberVýkon v kW.Z katalógu, ak je vozidlo spárované.
body_typestringKaroséria, slug zo skupiny body_type (suv, hatchback, sedan, station-estate...).Z katalógu; vaša hodnota platí, len keď ju katalóg nemá.
drivestringPohon, 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á.
seatsintegerPoč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.

PoleTypPopisPríklad
registration_yearintegerRok prvej registrácie.2021
registration_monthintegerMesiac prvej registrácie (1 až 12). Bez neho zostávajúcu záruku v rokoch nevypočítame.5
manufacture_monthintegerMesiac výroby (1 až 12). Rok výroby je year_of_production.3
battery_warranty_kmintegerKilometrový 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.

PoleTypPopisPríklad
sohnumberStav batérie v percentách (0 až 100), desatinné miesta sú v poriadku.94.5
soh_certificate_urlURLOdkaz na certifikát merania (PDF alebo obrázok, napríklad Aviloo či Moba)."https://.../soh.pdf"
soh_measurement_datedateDátum merania (YYYY-MM-DD). Ukladáme ho, na inzeráte ho zatiaľ nezobrazujeme."2026-08-15"

5.3 Vzhľad a leasing

PoleTypPopisPríklad
color_exteriorstringFarba 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"
metallicbooleanMetalický lak.true
continuation_of_leasingbooleanKupujú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.

PoleTypPopisPríklad
branchstringMesto, kde vozidlo stojí (prijmeme aj názov poľa location). Zobrazí sa ako mesto, nepatrí sem názov firmy."Bratislava"
addressstringÚplná adresa. Z nej určíme polohu, keď chýbajú súradnice."Pestovateľská 5, Bratislava"
gps_lat, gps_lngnumberSú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_phonestringTelefón na pobočku. Bez neho použijeme telefón z profilu."+421 900 123 456"
contact_emailstringE-mail pobočky, chodia naň dopyty. Bez neho použijeme e-mail z profilu."ba@vasadomena.sk"

5.5 Obsah inzerátu

PoleTypPopisPríklad
titlestringNadpis 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ľ"
descriptionstringVoľ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ľ..."
conditionstringSlug zo skupiny ad_listing_type: new, used alebo used-demo-car (prijmeme aj demo)."used"
state[]arrayStavové príznaky, slugy zo skupiny listing_state, napríklad first-owner, service-book, imported-vehicle, crashed.["first-owner"]
doorsintegerPočet dverí (2 až 5). Katalóg ho nemá, zobrazíme ho len z feedu.5
equipment[]arrayVýbava ako slugy z /equipment, jedna položka na prvok. Vlastné názvy namapujeme pri onboardingu.["heat-pump"]
equipment_unmapped[]arrayVý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_vatnumberNepovinné: 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á brand a model, alebo catalog_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_production a vat_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úborNa čo
listing-template.schema.jsonJSON Schema (draft 2020-12) na validáciu JSON feedu, napríklad cez ajv.
listing-template.xsdXSD na validáciu XML feedu, napríklad xmllint --schema listing-template.xsd feed.xml.
example-feed-sk.jsonUkážkový feed pre slovenský trh (EUR), 5 vozidiel vrátane záznamu s minimom polí.
example-feed-cz.jsonUkáž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
EndpointObsah
/master-dataRozcestník: schema_version a zoznam feeds s URL, formátmi a časom generovania
/master-data/catalogKatalóg vozidiel (A2), stránkovaný, filtre ?brand= a ?year=
/master-data/brandsZnačky a ich modely s ID, slugmi a aliasmi (A3)
/master-data/equipmentVýbava v kategóriách (A3)
/master-data/enumsOstatné číselníky: pohon, karoséria, segment, nabíjací port, stav inzerátu, trh, typ EV, typ inzerátu, stav vozidla, farby, sedadlá, dvere (A3)
{
  "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/..."
}

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" }
}
EndpointObsah
/brandsZnač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.
/equipmentKategórie výbavy, každá s id, slug, names a zoznamom items.
/enumsObjekt, 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

Na čo sa môžete spoľahnúť
  • 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 (dnes 1). Nekompatibilnú zmenu by sme oznámili vopred a stará verzia by istý čas zostala dostupná.

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}
Tento feed nemá tvar časti 1

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.

PoleVýznam
id, urlNaše ID inzerátu a jeho verejná stránka.
source_idVaše id z feedu, ten istý kľúč ako v spätnom feede. null pri inzeráte zadanom ručne.
statusactive, reserved alebo sold.
updated_atKedy 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_slugSpárovaná položka katalógu, null, kým nie je spárovaná.
soh, battery_kwh, range_wltp, power_kwHodnoty konkrétneho vozidla, nie katalógový nominál.
imagesmain je hlavná fotka, gallery ostatné; hlavná sa v galérii neopakuje.
contactTelefó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).

StavVýznamČo s tým
errorZá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_capInzerá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.
soldPoslali ste status: sold. Inzerát je skrytý a ostáva ako história.Nič. Ak vozidlo vrátite ako dostupné, znova sa zverejní.
orphanedVozidlo 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í.
adoptedZá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.
unmatchedInzerá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.
updatedInzerát je živý a posledný beh ho aktualizoval.Nič.
publishedInzerát je živý a nezmenený.Nič.

A6.2 Kódy chýb

error_codeVýznam
validationChýba niečo z 3.1 (id, identita vozidla, price) alebo je cena v mene druhého trhu. Správa pomenuje pole.
duplicate_vinVozidlo 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_exceededVozidlo sa nezmestilo do limitu feedu (najviac 500) alebo programu. Importujeme v poradí feedu, takže vonku zostanú vozidlá na konci.
import_failedTechnické zlyhanie na našej strane. Vidíme ho aj my.
unmapped_valuePovinné 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.

warningVýznamČo robiť
photos_unavailableNepodarilo 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_grossPri 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

PoleVýznam
source_idVaše id z feedu, kľúč riadku.
vinVIN po našej normalizácii (veľké písmená, bez medzier), prázdne, ak ste ho neposlali.
our_post_id, urlNaše ID inzerátu a jeho URL, null, kým inzerát neexistuje.
error_code, error_messagePri error: kód (A6.2) a krátky technický text, ktorý pomenuje pole alebo kolidujúci inzerát.
photos_sent, photos_importedKoľ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.
warningsKódy z A6.3, prázdny zoznam, keď nie je čo hlásiť.
car_version_id, match_method, match_scorePá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_atKedy riadok prešiel do stavu; sold_at a orphaned_at len kým v ňom je.
last_seen_in_feed, last_changed, last_syncedKedy sme záznam naposledy videli vo feede, kedy sa zmenil jeho obsah a kedy sa riadok zapísal (UTC).
summaryPočty riadkov podľa stavu, len nenulové.
feeds[]Stav každého vášho feedu, pozri nižšie.
Keď celý beh neprebehol

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.