← veridyn.eu
HU EN

Fejlesztői API v1

veridyn

Programozott hozzáférés a termékútlevelekhez — webshop/ERP-szinkronhoz, tömeges automatizáláshoz.

Pro csomagtól

Hitelesítés

Minden kérés API-kulccsal hitelesít, Authorization fejlécben:

Authorization: Bearer vk_<a kulcsod>

Kulcsot a Beállítások → Fejlesztői API alatt hozol létre. A nyílt kulcsot csak egyszer, létrehozáskor mutatjuk meg — tárold biztonságos helyen. A kulcs a teljes fiókod termékeihez ad írási/olvasási hozzáférést, ezért kezeld titkosan.

Gyors teszt böngészőben

GET-kérésekhez fejléc nélkül, közvetlenül a böngészőben is kipróbálhatod — a kulcsot ?api_key= paraméterként add meg:

https://veridyn.eu/api/v1/categories?api_key=vk_<a kulcsod>

⚠️ Csak teszteléshez. Az URL-be írt kulcs bekerül a böngésző-előzménybe és a szerver-logokba, ezért éles integrációban mindig a Authorization: Bearer fejlécet használd. POST/PATCH csak fejléccel (curl/Postman) hívható.

Alap-URL

https://veridyn.eu/api/v1

A válaszok application/json formátumúak, UTF-8 kódolással.

Végpontok

MetódusÚtvonalLeírás
GET/categoriesElérhető termékkategóriák.
GET/schema/{category}A kategória teljes mezőlistája — kötelező + opcionális, típus, enum, nyelvi mezők.
GET/productsTermékek listája (összefoglaló). Paraméterek: q, status, page, limit.
POST/productsÚj termékútlevél. Törzs: { category, data }.
GET/products/{id}Egy termék teljes adata + passport-URL.
PATCH/products/{id}Frissítés (részleges) — új verziót hoz létre. Törzs: { data }.
GET/products/{id}/qrQR-kód (SVG) a publikus passporthoz.

Mit kell megadni? (kötelező vs. opcionális)

Minden kategóriának van egy kötelező magja — enélkül a séma-validáció elutasít (422). Minden más mező opcionális, de bármikor beküldheted ugyanabban a data objektumban (több adat = jobb passport + jövőbiztosabb megfelelés). A pontos, gépi mezőlistát a /schema/{category} adja — required: true/false, típus, enum és localized jelöléssel.

curl https://veridyn.eu/api/v1/schema/textile \
  -H "Authorization: Bearer vk_<kulcs>"

Összes mező kategóriánként

= kötelező · = opcionális · beágyazott al-mező · 🌐 nyelvenkénti (localized) · 🔒 csak hatósági szinten látszik. Ez a lista a sémából generálódik — mindig naprakész.

textile Textil és ruházat19 mező

MezőTípusKöt.Leírás
productNamestringTerméknév — A termék neve, ahogy a vásárló a passporton látni fogja.
skustringSKU — Belső cikkszám / azonosító — a te rendszeredből.
brandNamestringMárkanév
gtinstringGTIN (opcionális) — A vonalkód száma (GTIN-8/12/13/14). Az ellenőrzőszámot a rendszer validálja. Ha nincs, hagyd üresen.
economicOperatorobjectGazdasági szereplő
  ↳ rolestring (enum)Szerep — Ki teszi a terméket az EU-piacra és felel érte. A legtöbb gyártónál: Gyártó. (manufacturer · importer · authorized_representative · distributor · dealer · fulfilment_service_provider)
  ↳ legalNamestringJogi név
  ↳ addressstringCím
  ↳ countrystringOrszág (ISO 3166-1 alpha-2) — Kétbetűs ISO országkód, nagybetűvel — pl. HU, DE, IT
  ↳ contactEmailstringKapcsolati e-mail — Ide fordulhat a vásárló vagy a hatóság.
  ↳ operatorIdstringEgyedi szereplő-azonosító (GS1 GLN) — 13 jegyű GS1 GLN — EU DPP egyedi gazdasági szereplő-azonosító. Ha nincs, hagyd üresen.
  ↳ eori 🔒stringEORI-szám — A gazdasági szereplő EORI-száma (vám / EU DPP-nyilvántartási azonosító) — a registry ez alapján azonosít. Csak hatósági hozzáférési szinten látszik. Ha nincs, hagyd üresen.
languagesarray[string]Nyelvek (BCP-47) — Mely nyelveken jelenjen meg a passport. A lokalizált mezőket (ápolás, életciklus) minden itt felsorolt nyelven ki kell tölteni. pl. hu, en
fiberCompositionarray[object]Rost-összetétel — Miből készült a termék. A százalékok összege pontosan 100 legyen. pl. pamut 95 + elasztán 5
  ↳ fiberstringRost
  ↳ percentagenumberSzázalék
recycledContentPercentagenumberÚjrahasznosított tartalom (%) — Az újrahasznosított anyag aránya a termékben. Ha nem releváns, hagyd üresen.
countryOfManufacturestringGyártás országa (ISO) — Ahol a végtermék készült. Kétbetűs ISO kód, pl. PT, TR, HU
supplyChainStagesarray[object]Ellátási lánc állomásai — Hol készült melyik munkafázis (fonás, szövés, festés, összeszerelés…). Opcionális, de növeli a bizalmat.
  ↳ stagestring (enum)Fázis (spinning · weaving · knitting · dyeing · finishing · assembly)
  ↳ countrystringOrszág (ISO)
  ↳ facilityNamestringÜzem neve
  ↳ facilityIdstringEgyedi telephely-azonosító (GS1 GLN)
careInstructions 🌐objectÁpolási útmutató — Mosás, szárítás, vasalás — nyelvenként egy-egy szöveg.
repairobjectJavíthatóság — Javítható-e, és hogyan. A „javítható” és „alkatrész elérhető” mezők kötelezőek.
  ↳ repairablebooleanJavítható
  ↳ instructions 🌐objectJavítási útmutató — Hogyan javítható — nyelvenként (opcionális).
  ↳ sparePartsAvailablebooleanAlkatrész elérhető (pl. gomb, cipzár)
substancesOfConcernarray[object]Aggályos anyagok — Aggályos anyagok (pl. REACH SVHC), ha a termékben jelen vannak. A legtöbb terméknél üresen hagyható.
  ↳ namestringMegnevezés
  ↳ casNumberstringCAS-szám
  ↳ concentrationRangestringKoncentráció-tartomány
durabilityobjectTartósság — Tartóssági adatok, ha van mérésed (opcionális).
  ↳ testResultsstringTeszteredmények
  ↳ pefScorenumberPEF pontszám — Product Environmental Footprint pontszám, ha van. (opcionális)
carbonFootprintnumberSzénlábnyom (kg CO₂e) — A termék teljes szénlábnyoma kg CO₂-egyenértékben. Az „Impact” témában „≈ km autóval” összevetéssel jelenik meg.
waterFootprintnumberVízlábnyom (liter) — A gyártáshoz felhasznált víz mennyisége literben. Opcionális.
weightGramsnumberTömeg (gramm) — A termék tömege grammban. Opcionális.
endOfLifeobjectÉletciklus vége — Mi legyen a termékkel a használat után — nyelvenként kitöltve.
  ↳ recyclingInstructions 🌐objectÚjrahasznosítási útmutató — Hogyan hasznosítható újra — nyelvenként.
  ↳ disposalInstructions 🌐objectÁrtalmatlanítási útmutató — Ha nem újrahasznosítható — nyelvenként.
complianceDocumentsarray[object]Megfelelőségi dokumentumok — Tanúsítványok, megfelelőségi dokumentumok linkjei (opcionális). pl. OEKO-TEX, GOTS.
  ↳ typestringTípus
  ↳ urlstringURL

battery Akkumulátor26 mező

MezőTípusKöt.Leírás
productNamestringTerméknév — Az akkumulátor neve, ahogy a vásárló a passporton látni fogja.
skustringSKU — Belső cikkszám / azonosító — a te rendszeredből.
brandNamestringMárkanév
gtinstringGTIN (opcionális) — A vonalkód száma (GTIN-8/12/13/14). Az ellenőrzőszámot a rendszer validálja. Ha nincs, hagyd üresen.
economicOperatorobjectGazdasági szereplő
  ↳ rolestring (enum)Szerep — Ki teszi a terméket az EU-piacra és felel érte. A legtöbb gyártónál: Gyártó. (manufacturer · importer · authorized_representative · distributor · dealer · fulfilment_service_provider)
  ↳ legalNamestringJogi név
  ↳ addressstringCím
  ↳ countrystringOrszág (ISO 3166-1 alpha-2) — Kétbetűs ISO országkód, nagybetűvel — pl. HU, DE, IT
  ↳ contactEmailstringKapcsolati e-mail — Ide fordulhat a vásárló vagy a hatóság.
  ↳ operatorIdstringEgyedi szereplő-azonosító (GS1 GLN) — 13 jegyű GS1 GLN — EU DPP egyedi gazdasági szereplő-azonosító. Ha nincs, hagyd üresen.
  ↳ eori 🔒stringEORI-szám — A gazdasági szereplő EORI-száma (vám / EU DPP-nyilvántartási azonosító) — a registry ez alapján azonosít. Csak hatósági hozzáférési szinten látszik. Ha nincs, hagyd üresen.
languagesarray[string]Nyelvek (BCP-47) — Mely nyelveken jelenjen meg a passport. A lokalizált mezőket (biztonság, életciklus) minden itt felsorolt nyelven ki kell tölteni. pl. hu, en
batteryCategorystring (enum)Akkumulátor-kategória — Az (EU) 2023/1542 szerinti kategória. A kötelező útlevél elsőként az EV, az ipari (>2 kWh) és az LMT akkukra vonatkozik (2027. február 18.). (portable · lmt · ev · industrial · sli)
cellChemistrystring (enum)Cellakémia — Az akkumulátor cellakémiai típusa. (nmc · nca · lfp · lmo · lto · nimh · lead_acid · sodium_ion …)
weightKgnumberTömeg (kg) — Az akkumulátor tömege kilogrammban.
countryOfManufacturestringGyártás országa (ISO) — Ahol az akku készült. Kétbetűs ISO kód, pl. DE, HU, CN
manufacturingDatestringGyártás dátuma / éve — A gyártás éve vagy év-hónapja, ISO formátumban: ÉÉÉÉ, ÉÉÉÉ-HH vagy ÉÉÉÉ-HH-NN.
ratedCapacitynumberNévleges kapacitás (Ah) — Névleges kapacitás amperóra (Ah).
energyWhnumberEnergia (Wh) — Teljes energiatartalom wattórában (Wh). Opcionális.
nominalVoltagenumberNévleges feszültség (V) — Névleges feszültség voltban. Opcionális.
expectedLifetimeCyclesnumberVárható élettartam (töltési ciklus) — A garantált / várható teljes töltési ciklusok száma. Opcionális.
stateOfHealth 🔒numberÁllapot — State of Health (%) — Az akku egészségi állapota az eredeti kapacitás %-ában (új akkunál 100). DARAB-SPECIFIKUS és dinamikus — ideális helye az egység-szint (nem a modell-template). Opcionális.
carbonFootprintnumberSzénlábnyom (kg CO₂e / kWh) — Az akku teljes életciklusra vetített szénlábnyoma, kg CO₂-egyenérték per kWh teljes energia.
carbonFootprintClassstringSzénlábnyom-teljesítményosztály (A–G) — A rendelet szerinti CF-teljesítményosztály, ha rendelkezésre áll. Opcionális.
carbonFootprintStudyUrlstringSzénlábnyom-tanulmány (URL) — A szénlábnyom-számítás alapjául szolgáló tanulmány / dokumentáció linkje (a CF-delegált aktus szerint). Opcionális.
carbonFootprintBreakdownarray[object]Szénlábnyom életciklus-szakaszonként — A szénlábnyom megbontása életciklus-szakaszokra (kg CO₂e / kWh) — a CF-delegált aktus ezt várja. Opcionális.
  ↳ stagestring (enum)Életciklus-szakasz (raw_material · main_production · distribution · recycling)
  ↳ valuenumberÉrték (kg CO₂e / kWh)
recycledContentarray[object]Újrahasznosított nyersanyag-tartalom — Az újrahasznosított kritikus nyersanyagok aránya anyagonként (kobalt, lítium, nikkel, ólom). Opcionális, de a rendelet egyre szigorúbban várja.
  ↳ materialstring (enum)Anyag (cobalt · lithium · nickel · lead)
  ↳ percentagenumberÚjrahasznosított arány (%)
hazardousSubstancesarray[object]Veszélyes anyagok — Az akkuban jelen lévő veszélyes anyagok (a higany, kadmium, ólom felett). A legtöbb adatlapnál releváns.
  ↳ namestringMegnevezés
  ↳ casNumberstringCAS-szám
  ↳ concentrationRangestringKoncentráció-tartomány
safetyInformation 🌐objectBiztonsági információ — Kezelési, tárolási és vészhelyzeti tudnivalók — nyelvenként egy-egy szöveg.
dueDiligenceUrl 🔒stringEllátási lánc átvilágítási jelentés (URL) — A rendelet szerinti due diligence (átvilágítási) szabályzat/jelentés linkje. Jogos érdekű felek hozzáférési szint (Art. 77(4)) — nem publikus. Opcionális.
endOfLifeobjectÉletciklus vége — Gyűjtés, újrahasznosítás, szétszerelés — nyelvenként kitöltve.
  ↳ recyclingInstructions 🌐objectGyűjtés / újrahasznosítás — Hová vihető vissza, hogyan hasznosítható újra — nyelvenként.
  ↳ disposalInstructions 🌐objectÁrtalmatlanítás / figyelmeztetés — Tilalmak, veszélyek — nyelvenként.
complianceDocumentsarray[object]Megfelelőségi dokumentumok — Tanúsítványok, megfelelőségi és teszt-dokumentumok linkjei (opcionális). pl. CE, UN 38.3.
  ↳ typestringTípus
  ↳ urlstringURL

Nyelvek

A languages (pl. ["hu","en"]) deklarálja, mely nyelveken van szabad-szöveges tartalom. A lokalizált mezőket (ápolás, életciklus… — a /schema-ban "localized": true) csak az első (elsődleges) nyelven kötelező kitölteni; a többi opcionális, hiánynál egy elérhető nyelvre esik vissza. A passport UI-címkéi ettől függetlenül automatikusan 24 nyelvre fordulnak.

Példák

Termék létrehozása

curl -X POST https://veridyn.eu/api/v1/products \
  -H "Authorization: Bearer vk_<kulcs>" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "textile",
    "data": {
      "productName": "Bio pamut póló",
      "sku": "TEE-001",
      "brandName": "Lumora",
      "languages": ["hu","en"],
      "fiberComposition": [{"fiber":"pamut","percentage":100}],
      "countryOfManufacture": "PT",
      "careInstructions": {"hu":"Mosás 30 °C","en":"Wash at 30 °C"},
      "repair": {"repairable": true, "sparePartsAvailable": false},
      "endOfLife": {
        "recyclingInstructions": {"hu":"Textilgyűjtő","en":"Textile bin"},
        "disposalInstructions": {"hu":"Ne a kukába","en":"Not household waste"}
      },
      "economicOperator": {
        "role":"manufacturer","legalName":"Lumora Kft.","address":"Budapest",
        "country":"HU","contactEmail":"hello@lumora.hu"
      }
    }
  }'

Válasz (201):

{
  "data": {
    "id": "a1993ef7-7562-43bb-92ff-eb63f02dcde9",
    "category": "textile",
    "status": "active",
    "version_no": 1,
    "passport_url": "https://veridyn.eu/<fiók>/p/a1993ef7-…",
    "qr_url": "https://veridyn.eu/api/v1/products/a1993ef7-…/qr",
    "data": { "productName": "Bio pamut póló", … }
  }
}

Listázás

curl https://veridyn.eu/api/v1/products?limit=25 \
  -H "Authorization: Bearer vk_<kulcs>"

Egy termék lekérése

curl https://veridyn.eu/api/v1/products/{id} \
  -H "Authorization: Bearer vk_<kulcs>"

Frissítés (új verzió)

curl -X PATCH https://veridyn.eu/api/v1/products/{id} \
  -H "Authorization: Bearer vk_<kulcs>" \
  -H "Content-Type: application/json" \
  -d '{"data": {"recycledContentPercentage": 30}}'

A megadott mezők ráolvasnak a meglévő adatra (részleges frissítés), majd validálunk, és új, megőrzött verzió jön létre — a teljes változás-történet megmarad.

Válasz & hibák

Siker: a hasznos adat a data kulcs alatt. Hiba esetén:

{ "error": "Érvénytelen adatok.", "code": "validation", "errors": [ … ] }
HTTPcodeJelentés
401unauthorizedHiányzó/érvénytelen API-kulcs.
403plan_requiredAz API a Pro csomagtól érhető el.
404not_foundNincs ilyen termék / útvonal.
409gtin_takenA GTIN már foglalt.
422validationÉrvénytelen adat (részletek az errors-ban).

Webhookok

A Beállítások → Webhookok alatt regisztrálsz egy HTTPS URL-t. Amikor egy termékútlevél létrejön / frissül / archiválódik, a Veridyn egy aláírt JSON-t POST-ol arra az URL-re — így a rendszered valós időben értesül, kérdezgetés nélkül.

Események

product.created · product.updated · product.archived · product.restored

Kézbesítés

POST https://your-system.example/veridyn-webhook
Content-Type: application/json
X-Veridyn-Event: product.updated
X-Veridyn-Signature: sha256=<hmac>

{
  "event": "product.updated",
  "data": { "id": "a1993ef7-…", "category": "textile", "version_no": 2 },
  "sent_at": "2026-07-02T13:19:11+00:00"
}

Aláírás-ellenőrzés

Az X-Veridyn-Signature a nyers törzs HMAC-SHA256 aláírása a webhook secret-jével (a Beállításokban látod). Így ellenőrzöd — pl. PHP-ban:

$body = file_get_contents('php://input');
$expected = 'sha256=' . hash_hmac('sha256', $body, $secret);
if (!hash_equals($expected, $_SERVER['HTTP_X_VERIDYN_SIGNATURE'] ?? '')) {
    http_response_code(401); exit; // érvénytelen aláírás}

Válaszolj 2xx státusszal. A kézbesítés best-effort (rövid timeout); az utolsó kézbesítés státusza a Beállításokban látszik.

💡 A kategória-sémák (mely mezők kötelezők/opcionálisak) a termékűrlapon és a /schema/{category} végponton látszanak. Jelenleg elérhető: textile és battery. A séma bővül, ahogy az EU véglegesíti a kategóriákat.

← Beállítások / API-kulcsok