Prvý termín EÚ pre DPP (Batérie): 130 dní Zabezpečte súlad hneď
Jazyk
EN DE FR IT ES NL PL BG CS DA EL ET FI HR HU LT LV MT PT RO SK SL SV
Produkt
Funkcie Popredajný servis Ako to funguje Demo Enterprise Ceny
Sektory
Všetky sektory Textil Elektronika Batérie
Zdroje
Blog Porovnať softvér pre DPP Požiadavky podľa krajín Posúdenie pripravenosti Kontrola ekologických tvrdení Na stiahnutie zadarmo Slovník
Spoločnosť
Partneri Kontakt
Prihlásiť sa Začať zadarmo
Vývojári / REST API

Referencia API

Všetko v MyProductPassport je dostupné cez REST API s overením kľúčom: vytvárajte produkty, generujte a zverejňujte digitálne produktové pasy, posielajte aktuálne údaje batérií a kontrolujte súlad priamo z vášho ERP, PIM alebo build pipeline.

v1 https://myproductpassport.eu/api/v1 Začať zadarmo Špecifikácia OpenAPI ↓

01 / ZačínameOverovanie

Každá požiadavka sa overuje API kľúčom odovzdaným ako Bearer token. Kľúče sa vytvárajú v aplikácii v sekcii API kľúče, zobrazia sa raz a ukladajú sa hashované; každý kľúč má vlastnú sadu oprávnení, voliteľný zoznam povolených IP a voliteľný dátum vypršania. Kľúče možno rotovať bez výpadku.

Hlavička požiadavky
Authorization: Bearer pk_your_api_key
Vo všetkých plánoch. Kľúče API možno vytvárať a používať vo všetkých plánoch vrátane bezplatného. Plán určuje, koľko požiadaviek za minútu smie kľúč odoslať (pozri nižšie) a koľko výrobkov a pasov smie mať pracovný priestor.
Testovací režim. Testovací kľúč (pk_test_...) vykoná každé volanie presne tak ako ostrý kľúč, s rovnakou validáciou, ID a odpoveďami, a potom ho vráti späť: nič sa neuloží, neodošle sa žiadny e-mail ani webhook a nezachová sa žiadny súbor. Odpovede obsahujú "test_mode": true a hlavičku X-MPP-Mode: test. Zostavte a otestujte integráciu na svojich skutočných údajoch a potom ju prepnite na ostrý kľúč.

Oprávnenia sa udeľujú pre každý kľúč zvlášť, takže integrácia dostane len to, čo potrebuje:

OprávnenieOprávnenia
products:readČítanie produktov
products:writeVytváranie, úprava a mazanie produktov
passports:readČítanie pasov
passports:writeVygenerovať pasy
passports:publishZverejňovanie a archivácia pasov
webhooks:manageVytváranie, testovanie a odstraňovanie koncových bodov webhookov
items:readRead individual items and their history
items:writeAdd, update and flag individual items
aftersales:readRead owner registrations and service requests
aftersales:writeUpdate service requests and reply to customers

02 / ZačínameLimity požiadaviek

Limity platia na kľúč, za minútu a určuje ich plán:

PlánPožiadaviek / minútu
Zadarmo30
Micro60
E-etiketa60
Starter120
Professional300
Business600
Battery600

Každá odpoveď obsahuje hlavičky X-RateLimit-Limit a X-RateLimit-Remaining. Pri prekročení limitu sa vráti 429:

429 Too Many Requests
{ "error": "Rate limit exceeded.", "limit": 300, "retry_after": 60 }

03 / ZačínameChyby

Chyby sú vo formáte JSON s bežným stavovým kódom. Najčastejšie:

StavVýznamUkážkové telo
401Chýbajúci, neplatný, zrušený alebo exspirovaný kľúč{"error": "Invalid or revoked API key."}
403Kľúču chýba oprávnenie, IP adresa nie je na zozname povolených alebo sa vyčerpal limit plánu{"message": "API key does not have 'products:write' permission."}
404Zdroj vo vašom pracovnom priestore neexistuje{"message": "Not found."}
422Overenie zlyhalo{"message": "…", "errors": {"gtin": ["…"]}}
429Prekročený limit požiadaviek{"error": "Rate limit exceeded."}

04 / ZačínameStránkovanie

Koncové body zoznamov vracajú 25 položiek na stránku so štandardnými objektmi links a meta. Odovzdajte ?page=2 na prechádzanie kolekciou.

05 / ZačínameKonektor AI asistenta (MCP)

Pripojte Claude, Cursor alebo akéhokoľvek asistenta, ktorý podporuje Model Context Protocol, a jednoducho ho požiadajte, aby zakladal výrobky, vypĺňal pasy podľa toho, čo mu poviete, a kontroloval, čo ešte chýba. Používa kľúč API s jeho oprávneniami a limitom požiadaviek. Môže vytvárať koncepty a vypĺňať polia; nikdy nič nezverejňuje, nearchivuje ani nemaže: to zostáva na vás v aplikácii.

Adresa servera (Streamable HTTP)
https://myproductpassport.eu/api/mcp
Claude Code
claude mcp add --transport http myproductpassport https://myproductpassport.eu/api/mcp \
  --header "Authorization: Bearer pk_live_your_key"
Cursor (mcp.json)
{
  "mcpServers": {
    "myproductpassport": {
      "url": "https://myproductpassport.eu/api/mcp",
      "headers": { "Authorization": "Bearer pk_live_your_key" }
    }
  }
}
Claude Desktop a ďalšie klienty, ktoré spúšťajú lokálny server
{
  "mcpServers": {
    "myproductpassport": {
      "command": "npx",
      "args": ["mcp-remote", "https://myproductpassport.eu/api/mcp", "--header", "Authorization: Bearer pk_live_your_key"]
    }
  }
}

Ponúkané nástroje:

NástrojČo robí
list_productsVýrobky pracovného priestoru od najnovších, 25 na stranu, so sektorom a najnovším pasom.
get_productJeden výrobok s údajmi, sektorom, regulačnými sekciami a najnovším pasom.
list_sectorsŠablóny sektorov, ktoré môže výrobok použiť (textil, elektronika, batérie, víno a ďalšie), s ich ID. Sektor výrobku určuje, ktoré polia pasu sú povinné.
create_productPridá výrobok do pracovného priestoru. Použite sector_id z list_sectors. compliance_sections pridá do pasu regulačné sekcie: gpsr, epr, france, chemicals, eudr.
list_passportsPasy pracovného priestoru od najnovších, 25 na stranu, so stavom (draft, published, archived), percentom úplnosti a verejnou adresou.
get_passportJeden pas: stav, verzia, percento úplnosti, verejná adresa a odkazy na QR kód.
create_passportVytvorí koncept pasu pre výrobok. Nezverejní sa: zverejní ho človek v aplikácii.
get_passport_fieldsČo pas vyžaduje: kľúče povinných a voliteľných polí, význam každého (označenie, popis, príklad), existujúce hodnoty a chýbajúce povinné polia.
update_passport_fieldsZapíše hodnoty polí do konceptu alebo zverejneného pasu (zverejnený sa aktualizuje na mieste: rovnaká adresa, rovnaký QR kód). Kľúče z get_passport_fields; prázdny text hodnotu odstráni. Zapisujte len fakty, ktoré uvádza používateľ alebo jeho dokumenty.
get_complianceÚplnosť pasu: percento, stav a povinné polia, ktoré ešte chýbajú.
Vyskúšajte to s testovacím kľúčom. S testovacím kľúčom (pk_test_...) sa zmeny asistenta skontrolujú a potom vrátia späť, takže uvidíte, čo by urobil, skôr než mu dáte ostrý kľúč.

06 / Koncové bodyÚčet

GET /me

Vráti overený účet, jeho úroveň predplatného a koľko z limitu produktov je využité. Užitočné ako test pripojenia.

Požiadavka
curl https://myproductpassport.eu/api/v1/me \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{
  "data": {
    "id": 42,
    "name": "Jane Doe",
    "email": "[email protected]",
    "company_name": "Acme Ltd",
    "subscription_tier": "professional",
    "product_count": 128,
    "product_limit": 500,
    "passport_count": 96,
    "organization": {"id": 7, "name": "Acme Ltd"},
    "api_key": {"name": "ERP sync", "permissions": ["*"], "rate_limit_per_minute": 1000, "expires_at": null},
    "webhooks_available": true
  }
}

07 / Koncové bodyProdukty

GET /products vyžaduje products:read

Vypíše produkty vo vašom pracovnom priestore od najnovších, 25 na stránku. Každý produkt obsahuje svoj sektor a zhrnutie najnovšieho pasu.

ParameterTypOpis
pageintegerČíslo stránky.
Požiadavka
curl "https://myproductpassport.eu/api/v1/products?page=1" \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{
  "data": [
    {
      "id": 512,
      "name": "Alpine Merino Crew Sweater",
      "sku": "AM-CREW-01",
      "gtin": "05012345678900",
      "brand": "Northloom",
      "category": "textiles",
      "status": "active",
      "country_of_origin": "PT",
      "weight": 0.4,
      "weight_unit": "kg",
      "materials": [
        { "name": "Merino wool (RWS)", "percentage": 78 },
        { "name": "Recycled nylon (GRS)", "percentage": 20 },
        { "name": "Elastane", "percentage": 2 }
      ],
      "sector": { "id": 3, "name": "Textiles" },
      "latest_passport": {
        "id": 96, "version": 1,
        "status": "published", "compliance_percentage": 100
      },
      "created_at": "2026-08-14T09:21:00+00:00",
      "updated_at": "2026-09-01T16:02:11+00:00"
    }
  ],
  "links": { "next": null },
  "meta": { "current_page": 1, "per_page": 25, "total": 1 }
}
POST /products vyžaduje products:write

Vytvorí jeden produkt. Ak je limit produktov plánu vyčerpaný, vráti 403.

ParameterTypOpis
namestringpovinnéNázov produktu, až 255 znakov.
skustringVaše interné SKU, až 100 znakov.
gtinstringGTIN-8, 12, 13 alebo 14 (iba číslice).
brandstringZnačka zobrazená vo verejnom pase.
descriptionstringAž 2 000 znakov.
categorystringKategória ako voľný text. Predvolená hodnota "general".
sector_idintegerID sektora, ktoré vyberá šablónu polí pasu.
country_of_originstringKód krajiny, napr. "PT".
weightnumberČistá hmotnosť.
weight_unitstringJedno z kg, g, lb, oz. Predvolené je kg.
materialsarrayObjekty {name, percentage 0-100}.
has_packagingbooleanPridá do pasu polia šablóny pre obaly (kľúče začínajúce sa pkg_), pod tým istým QR kódom.
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/products \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Alpine Merino Crew Sweater",
    "sku": "AM-CREW-01",
    "gtin": "05012345678900",
    "sector_id": 3,
    "materials": [
      {"name": "Merino wool (RWS)", "percentage": 78},
      {"name": "Recycled nylon (GRS)", "percentage": 22}
    ]
  }'
Odpoveď
{
  "data": {
    "id": 513,
    "name": "Alpine Merino Crew Sweater",
    "sku": "AM-CREW-01",
    "status": "active",
    "sector": { "id": 3, "name": "Textiles" },
    "created_at": "2026-09-07T18:40:00+00:00"
  }
}
POST /products/bulk vyžaduje products:write

Vytvorí až 100 produktov jedným volaním. Celá dávka sa odmietne s kódom 403, ak by prekročila zostávajúci limit produktov. Pri katalógoch s tisíckami položiek volajte tento koncový bod v cykle alebo použite import CSV v aplikácii.

ParameterTypOpis
productsarraypovinné1 až 100 objektov výrobkov s rovnakými poľami ako „Vytvoriť výrobok“ (bez materiálov).
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/products/bulk \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "products": [
      {"name": "PSL-BT-122000", "sku": "PSL-BT-122000", "sector_id": 5},
      {"name": "PSL-BT-123000", "sku": "PSL-BT-123000", "sector_id": 5}
    ]
  }'
Odpoveď
{
  "message": "2 product(s) created.",
  "products": [
    { "id": 514, "name": "PSL-BT-122000", "status": "active" },
    { "id": 515, "name": "PSL-BT-123000", "status": "active" }
  ]
}
GET /products/{id} vyžaduje products:read

Vráti jeden produkt s jeho sektorom a zhrnutím najnovšieho pasu. 404, ak ID nie je vo vašom pracovnom priestore.

Požiadavka
curl https://myproductpassport.eu/api/v1/products/512 \
  -H "Authorization: Bearer pk_your_key"
PUT /products/{id} vyžaduje products:write

Čiastočne aktualizuje produkt. Pošlite len polia, ktoré chcete zmeniť; zoznam polí zodpovedá Vytvoriť produkt.

Požiadavka
curl -X PUT https://myproductpassport.eu/api/v1/products/512 \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"brand": "Northloom"}'
DELETE /products/{id} vyžaduje products:write

Obnoviteľne vymaže produkt. Zverejnené pasy produktu naďalej fungujú, takže vytlačené QR kódy nikdy nezostanú bez stránky.

Požiadavka
curl -X DELETE https://myproductpassport.eu/api/v1/products/512 \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{ "message": "Product deleted." }

08 / Koncové bodyPasy

GET /passports vyžaduje passports:read

Vypíše pasy od najnovších, 25 na stránku, so zhrnutím produktu a všetkými poľami pasu.

ParameterTypOpis
pageintegerČíslo stránky.
Požiadavka
curl https://myproductpassport.eu/api/v1/passports \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{
  "data": [
    {
      "id": 96,
      "uuid": "36ff3776-d517-4228-8cde-9208136ea84a",
      "version": 1,
      "status": "published",
      "compliance_status": "compliant",
      "compliance_percentage": 100,
      "public_url": "https://myproductpassport.co.uk/p/36ff3776-…",
      "gs1_url": "https://myproductpassport.co.uk/01/05012345678900",
      "product": { "id": 512, "name": "Alpine Merino Crew Sweater", "sku": "AM-CREW-01" },
      "fields": [
        { "key": "material_composition", "value": "…", "verification_status": "verified" }
      ],
      "published_at": "2026-08-16T10:00:00+00:00"
    }
  ],
  "meta": { "current_page": 1, "per_page": 25, "total": 1 }
}
POST /products/{productId}/passports vyžaduje passports:write

Vygeneruje koncept pasu pre produkt a predvyplní polia z údajov produktu a šablóny sektora. Vráti koncept so skóre súladu. Pri produkte, ktorý už má aktívny pas, vráti 409 s týmto pasom: opravte ho pomocou PUT /passports/{id}/fields, čím zostane zachovaná jeho adresa aj QR kód.

Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/products/512/passports \
  -H "Authorization: Bearer pk_your_key"
GET /passports/{id} vyžaduje passports:read

Vráti jeden pas s produktom, poľami, verejnou URL a GS1 Digital Link.

Požiadavka
curl https://myproductpassport.eu/api/v1/passports/96 \
  -H "Authorization: Bearer pk_your_key"
POST /passports/{id}/publish vyžaduje passports:publish

Zverejní koncept pasu a sprístupní jeho verejnú stránku a QR kód. Zverejniť možno iba koncepty; všetko ostatné vráti 404.

Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/passports/96/publish \
  -H "Authorization: Bearer pk_your_key"
POST /passports/{id}/archive vyžaduje passports:publish

Archivuje pas a stiahne jeho verejnú stránku z obehu.

Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/passports/96/archive \
  -H "Authorization: Bearer pk_your_key"
POST /passports/bulk-publish vyžaduje passports:publish

Zverejní až 50 konceptov pasov jedným volaním a hlási výsledky pre každý pas, takže jedno zlyhanie nikdy nepreruší celú dávku.

ParameterTypOpis
passport_idsarraypovinné1 až 50 ID pasov.
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/passports/bulk-publish \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"passport_ids": [96, 97, 98]}'
Odpoveď
{
  "published": 2,
  "failed": 1,
  "published_ids": [96, 97],
  "errors": [
    { "id": 98, "error": "Compliance below the publishing threshold." }
  ]
}
POST /passports/{id}/successor vyžaduje passports:write

Pri výrobku pripravenom na opätovné použitie, prepracovanom na iný účel alebo repasovanom vyžaduje nariadenie o batériách (čl. 77 ods. 7) nový pas prepojený s pôvodným. Tým sa vytvorí nový záznam produktu a koncept pasu predvyplnený zo zverejneného, s odkazom naň. Pôvodný pas zostáva aktívny a oba pasy zobrazujú odkaz. Nový pas zverejnite pomocou POST /passports/{id}/publish.

ParameterTypOpis
stagestringpovinnéprepared_for_reuse, repurposed alebo remanufactured.
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/passports/96/successor \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "stage": "repurposed" }'
Odpoveď
{
  "data": {
    "id": 131, "status": "draft", "version": 1,
    "lineage": {
      "stage": "repurposed",
      "original": { "id": 96, "url": "https://myproductpassport.co.uk/p/..." },
      "originals": [{ "passport_id": 96, "product_id": 40, "stage": "repurposed", "status": "published", "url": "https://myproductpassport.co.uk/p/..." }],
      "successors": []
    }
  }
}
GET /passports/{id}/fields vyžaduje passports:read

Vráti kľúče polí, ktoré šablóna sektora pasu vyžaduje (povinné aj voliteľné), aktuálne uložené hodnoty a ktoré povinné kľúče ešte chýbajú. Použite to na zostavenie tela pre PUT /passports/{id}/fields.

Požiadavka
curl https://myproductpassport.eu/api/v1/passports/96/fields \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{
  "passport_id": 96,
  "sector": "batteries",
  "compliance_percentage": 84,
  "required": ["battery_category", "carbon_footprint", "..."],
  "optional": ["energy_round_trip_efficiency", "..."],
  "missing_required": ["carbon_footprint_class", "recycled_content"],
  "values": { "battery_category": "Industrial", "...": "..." }
}
PUT /passports/{id}/fields vyžaduje passports:write

Zapíše ľubovoľnú sadu hodnôt polí do konceptu alebo živého pasu: kompletnú sadu podľa prílohy XIII pre batériu, polia šablóny sektora alebo vlastné kľúče. Posielajte len kľúče, ktoré chcete zmeniť; hodnota null alebo prázdna pole odstráni. Živý pas sa aktualizuje na mieste, jeho adresa ani QR kód sa nemenia a jeho strojové preklady sa vygenerujú znova. Súlad sa prehodnotí. Koncept sa týmto volaním nepublikuje; použite POST /passports/{id}/publish.

ParameterTypOpis
fieldsobjectpovinnéMapa kľúčov polí na hodnoty. Kľúče sú malé písmená, číslice a podčiarkovníky; hodnoty až 5 000 znakov. Až 200 kľúčov na volanie.
Požiadavka
curl -X PUT https://myproductpassport.eu/api/v1/passports/96/fields \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "fields": {
      "carbon_footprint": "61.2 kg CO2e/kWh",
      "carbon_footprint_class": "C",
      "recycled_content": "Cobalt 16%, lithium 6%, nickel 6%, lead 0%"
    }
  }'
Odpoveď
{
  "message": "3 field(s) changed, 0 removed.",
  "changed": ["carbon_footprint", "carbon_footprint_class", "recycled_content"],
  "removed": [],
  "passport": { "id": 96, "status": "published", "compliance_percentage": 92 }
}
POST /passports/{id}/state-of-health vyžaduje passports:write

Odošle vlastné údaje tejto batérie (príloha XIII bod 4 nariadenia (EÚ) 2023/1542) do zverejneného pasu, pre systémy BMS a správu vozových parkov. Pošlite ľubovoľnú podmnožinu nižšie uvedených polí; súlad sa po aktualizácii znova skontroluje. Tieto hodnoty sa zobrazujú iba divákom schváleným vlastníkom pasu (čl. 77 ods. 2), nikdy na verejnej stránke. capacity_fade, power_capability a internal_resistance sa ukladajú ako aktuálne hodnoty tejto batérie (current_*), oddelene od pôvodných hodnôt modelu.

ParameterTypOpis
state_of_healthstringnapr. "97% pri 412 cykloch".
state_of_certified_energystringZostávajúca certifikovaná energia (batérie elektromobilov).
battery_statusstringoriginal, repurposed, re-used, remanufactured alebo waste.
capacity_fadestringDoterajší pokles kapacity. Ukladá sa ako current_capacity_fade.
power_capabilitystringAktuálna výkonová schopnosť. Ukladá sa ako current_power_capability.
internal_resistancestringNameraný vnútorný odpor. Ukladá sa ako current_internal_resistance.
use_datastringCykly, nepriaznivé udalosti, teplota a stav nabitia, až 5 000 znakov.
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/passports/96/state-of-health \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "state_of_health": "97% at 412 cycles",
    "capacity_fade": "3% from initial rated capacity"
  }'
Odpoveď
{
  "message": "2 field(s) updated.",
  "updated_fields": ["state_of_health", "current_capacity_fade"],
  "passport": { "id": 96, "status": "published", "compliance_percentage": 100 }
}
POST /passports/{id}/units vyžaduje passports:write

Každá batéria potrebuje vlastný pas (nariadenie (EÚ) 2023/1542, čl. 77 ods. 1). Zaregistrujte až 10 000 batérií jedného modelu jedným volaním, každú s vlastným sériovým číslom (až 20 písmen, číslic, bodiek, spojovníkov alebo podčiarkovníkov) a voliteľne manufacturing_date, battery_status a jej údajmi podľa prílohy XIII bodu 4. Existujúce sériové čísla sa aktualizujú; hodnoty, ktoré vynecháte, zostanú zachované. Ak má produkt GTIN, adresou každej batérie je jej GS1 Digital Link, /01/{gtin}/21/{serial}. Údaje bodu 4 sa zobrazujú iba divákom schváleným vlastníkom.

ParameterTypOpis
units[].serialstringpovinnéSériové číslo batérie.
units[].manufacturing_datestringMesiac a rok, napr. "2026-09".
units[].battery_statusstringoriginal alebo waste. Zmena stavu vyžaduje hodnoty namerané pri nej (príloha XIII bod 4 písm. a)); waste navyše vyžaduje responsible_party_type (producer, pro alebo waste_operator), responsible_party_name a responsible_party_contact (čl. 77 ods. 7). recycled spolu s recycled_at a recycler_name ukončí pas (čl. 77 ods. 8). Batéria so zmeneným účelom, opätovne použitá alebo repasovaná batéria dostane nový pas: POST /passports/{id}/units/{serial}/successor.
units[].state_of_healthstringTiež state_of_certified_energy, current_capacity_fade, current_power_capability, current_internal_resistance, remaining_capacity_ah, power_fade, internal_resistance_increase, round_trip_efficiency, round_trip_efficiency_fade, expected_lifetime_cycles_remaining, self_discharge_rate, ohmic_resistance a use_data.
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/passports/96/units \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"units": [{"serial": "KES-00001", "manufacturing_date": "2026-09", "state_of_health": "100%"}]}'
Odpoveď
{ "created": 1, "updated": 0, "skipped": 0, "errors": [] }
PATCH /passports/{id}/units/{serial} vyžaduje passports:write

Pre systém riadenia batérie, ktorý posiela údaje jednej batérie: ľubovoľné z battery_status, state_of_health, state_of_certified_energy, current_capacity_fade, current_power_capability, current_internal_resistance a use_data. Na čítanie použite GET na rovnakú cestu, pre zoznam GET /passports/{id}/units (per_page až 500).

Požiadavka
curl -X PATCH https://myproductpassport.eu/api/v1/passports/96/units/KES-00001 \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"state_of_health": "96% at 412 cycles"}'
Odpoveď
{
  "data": { "serial": "KES-00001", "public_url": "https://myproductpassport.co.uk/01/05012345678900/21/KES-00001", "battery_status": "original", "data": { "state_of_health": "96% at 412 cycles" } }
}
GET /passports/{id}/units/{serial}/snapshots vyžaduje passports:read

Príloha XIII bod 4 písm. a) vyžaduje hodnoty výkonnosti a životnosti pri uvedení batérie na trh a pri zmene jej stavu. Tieto merania sa uchovávajú tak, ako boli, bez ohľadu na neskôr odoslané údaje; ak chcete uchovať aj pravidelné meranie, pošlite record_snapshot: true s požiadavkou PATCH.

Požiadavka
curl https://myproductpassport.eu/api/v1/passports/96/units/KES-00001/snapshots \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{
  "data": [
    { "event": "placed_on_market", "status": "original", "values": { "state_of_health": "100%" }, "measured_at": "2026-09-26T09:00:00+00:00", "source": "api" },
    { "event": "status_change", "status": "waste", "values": { "remaining_capacity_ah": "71 Ah", "power_fade": "14%", "internal_resistance_increase": "22%", "expected_lifetime_cycles_remaining": "0" }, "measured_at": "2029-03-02T10:00:00+00:00", "source": "bms" }
  ]
}
POST /passports/{id}/units/{serial}/successor vyžaduje passports:write

Článok 77 ods. 7: batéria, ktorá bola pripravená na opätovné použitie, ktorej účel bol zmenený alebo ktorá bola repasovaná, má nový pas prepojený s pôvodným. Týmto sa batéria zaregistruje znova, s novým sériovým číslom a identifikátorom, v rámci modelu batérie druhého života vo vašom pracovnom priestore (vytvoreného z tohto modelu, ak zatiaľ neexistuje), oba pasy sa prepoja a uchovajú sa hodnoty namerané pri zmene. Pôvodná batéria si ponechá svoj pas. Model druhého života doplňte a zverejnite pomocou POST /passports/{id}/publish.

ParameterTypOpis
stagestringpovinnéprepared_for_reuse, repurposed alebo remanufactured.
valuesobjectpovinnéHodnoty namerané pri zmene: z každej dvojice aspoň jedna hodnota (remaining_capacity_ah alebo current_capacity_fade, current_power_capability alebo power_fade, current_internal_resistance alebo internal_resistance_increase) a expected_lifetime_cycles_remaining (príloha IV časť A).
serialstringNové sériové číslo. Predvolené: pôvodné sériové číslo s príponou -RU, -RP alebo -RM.
measured_atstringKedy boli hodnoty namerané.
member_statestringDvojpísmenový kód členského štátu, v ktorom bol zdravotný stav testovaný (čl. 73 ods. 1 písm. a)).
target_passport_idintegerExistujúci model druhého života tohto modelu batérie, pod ktorým sa batéria zaregistruje.
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/passports/96/units/KES-00001/successor \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"stage": "repurposed", "values": {"remaining_capacity_ah": "82 Ah", "power_fade": "9%", "internal_resistance_increase": "15%", "expected_lifetime_cycles_remaining": "2000"}}'
Odpoveď
{
  "data": {
    "serial": "KES-00001-RP", "battery_status": "repurposed", "passport_id": 131,
    "lineage": { "originals": [{ "serial": "KES-00001", "passport_id": 96, "stage": "repurposed" }], "successors": [] }
  }
}
POST /passports/{id}/registry vyžaduje passports:write

Ukladá do pasu podanie do registra EÚ pre DPP a jeho výsledok: stav, korelačné ID, registračný identifikátor vrátený registrom a voliteľný odkaz na záložnú kópiu hostovanú poskytovateľom služieb DPP. Samotná registrácia prebieha v registri Komisie (webový formulár alebo nahranie súboru); týmto sa výsledok uchová pri pase. GET /passports/{id} vracia rovnaký blok pod registry.

ParameterTypOpis
statusstringnot_submitted, submitted, registered alebo failed.
product_groupstringSkupina výrobkov v registri, napríklad batteries.
granularitystringmodel, šarža alebo kus.
upistringJedinečný identifikátor výrobku ako https URL. Predvolene URL verejného pasu.
correlation_idstringID korelácie pridelené registrom pri podaní.
uristringRegistračný identifikátor vrátený registrom.
backup_urlstringhttps odkaz na záložnú kópiu hosťovanú poskytovateľom služieb DPP.
submitted_atdateDátum podania.
registered_atdateDátum registrácie.
errorstringPopis chyby pri neúspešnom podaní.
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/passports/96/registry \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "registered",
    "correlation_id": "7f3a2c1e-0b4d-4f8e-9a6b-2d1c3e4f5a6b",
    "uri": "urn:eu:dpp:reg:00000001",
    "registered_at": "2027-02-18"
  }'
Odpoveď
{
  "message": "Registry details updated.",
  "passport": {
    "id": 96,
    "registry": {
      "status": "registered",
      "upi": "https://myproductpassport.co.uk/p/552fbb4e-5d9a-41da-9050-cc9005d8b66b",
      "correlation_id": "7f3a2c1e-0b4d-4f8e-9a6b-2d1c3e4f5a6b",
      "uri": "urn:eu:dpp:reg:00000001",
      "registered_at": "2027-02-18T00:00:00+00:00"
    }
  }
}
GET /passports/{id}/qr vyžaduje passports:read

QR kód pasu ako súbor: svg (predvolené), png (so značkou, pripravený na tlač) alebo pdf (hárok štítkov).

ParameterTypOpis
formatstringsvg | png | pdf
Požiadavka
curl "https://myproductpassport.eu/api/v1/passports/96/qr?format=png" \
  -H "Authorization: Bearer pk_your_key" -o passport-96.png

09 / Koncové bodySúlad

GET /passports/{passportId}/compliance vyžaduje passports:read

Vykoná živú kontrolu súladu pasu s povinnými poľami jeho sektora a presne uvedie, čo chýba.

Požiadavka
curl https://myproductpassport.eu/api/v1/passports/96/compliance \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{
  "data": {
    "passport_id": 96,
    "product_name": "Alpine Merino Crew Sweater",
    "status": "compliant",
    "percentage": 100,
    "completed_fields": 12,
    "total_fields": 12,
    "missing_fields": []
  }
}

10 / Koncové bodySektory

GET /sectors

Sektory, do ktorých možno produkt zaradiť: systémové sektory platformy plus všetky definované vo vašom pracovnom priestore. Pri vytváraní produktov použite id a pri zápise polí pasu kľúče polí.

Požiadavka
curl https://myproductpassport.eu/api/v1/sectors \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{
  "data": [
    {
      "id": 4,
      "slug": "batteries",
      "name": "Batteries",
      "system": true,
      "regulations_finalised": true,
      "deadline": "2027-02-18",
      "deadline_label": "18 Feb 2027",
      "required_fields": ["battery_category", "battery_weight", "..."],
      "optional_fields": ["energy_round_trip_efficiency", "..."]
    }
  ]
}

11 / Koncové bodyDokumenty

GET /products/{productId}/documents vyžaduje products:read

Vyhlásenia o zhode, protokoly o skúškach a certifikáty priložené k produktu. Verejný dokument je prepojený zo všetkých zverejnených pasov produktu.

Požiadavka
curl https://myproductpassport.eu/api/v1/products/512/documents \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{
  "data": [
    {
      "id": 31,
      "product_id": 512,
      "filename": "declaration-of-conformity.pdf",
      "mime_type": "application/pdf",
      "file_size": 184322,
      "is_public": true,
      "processing_status": "completed",
      "public_url": "https://myproductpassport.co.uk/p/3f0c.../document/31",
      "created_at": "2026-09-22T10:12:00+00:00"
    }
  ]
}
POST /products/{productId}/documents vyžaduje products:write

Nahrávanie multipart. PDF, Word, Excel, CSV, text, PNG a JPEG do 10 MB, najviac 20 na produkt. Text sa extrahuje na pozadí.

ParameterTypOpis
filefilepovinnéDokument.
is_publicbooleanZobraziť vo verejnom pase (predvolene false).
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/products/512/documents \
  -H "Authorization: Bearer pk_your_key" \
  -F "[email protected]" \
  -F "is_public=1"
PATCH /products/{productId}/documents/{id} vyžaduje products:write

Prepína, či je dokument prepojený z verejného pasu.

ParameterTypOpis
is_publicbooleanpovinné
Požiadavka
curl -X PATCH https://myproductpassport.eu/api/v1/products/512/documents/31 \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"is_public": false}'
DELETE /products/{productId}/documents/{id} vyžaduje products:write

Odstráni súbor a jeho prepojenie s pasom.

Požiadavka
curl -X DELETE https://myproductpassport.eu/api/v1/products/512/documents/31 \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{ "message": "Document deleted." }

12 / Koncové bodyDodávateľský reťazec

GET /products/{productId}/supply-chain vyžaduje products:read

Kroky zobrazené v pase produktu, v poradí.

Požiadavka
curl https://myproductpassport.eu/api/v1/products/512/supply-chain \
  -H "Authorization: Bearer pk_your_key"
PUT /products/{productId}/supply-chain vyžaduje products:write

Nahradí všetky kroky zoznamom, ktorý pošlete, v zaslanom poradí. Na vymazanie pošlite prázdny zoznam. Typy krokov: raw_material, processing, manufacturing, assembly, packaging, distribution.

ParameterTypOpis
stepsarraypovinnéAž 50 krokov.
steps[].step_typestringpovinné
steps[].supplier_namestringpovinné
steps[].supplier_locationstring
steps[].supplier_countrystringISO 3166-1 alpha-2.
steps[].lat / lngnumber
steps[].descriptionstring
steps[].certificationsarray
steps[].datedate
Požiadavka
curl -X PUT https://myproductpassport.eu/api/v1/products/512/supply-chain \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"steps": [{"step_type": "raw_material", "supplier_name": "Merino Growers Co-op", "supplier_country": "NZ", "certifications": ["RWS"]}, {"step_type": "manufacturing", "supplier_name": "Northloom Mill", "supplier_location": "Biella", "supplier_country": "IT"}]}'

13 / Koncové bodyPreklady

GET /passports/{id}/translations vyžaduje passports:read

Každá preložená hodnota poľa podľa jazyka s uvedením zdroja: auto (strojový, vytvorený pri zverejnení) alebo manual.

Požiadavka
curl https://myproductpassport.eu/api/v1/passports/96/translations \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{
  "data": {
    "passport_id": 96,
    "available_locales": ["bg", "cs", "da", "de", "..."],
    "translations": {
      "de": {"care_instructions": {"value": "Kalt waschen", "source": "manual"}}
    }
  }
}
PUT /passports/{id}/translations/{locale} vyžaduje passports:write

Nastaví preklady pre jeden jazyk podľa kľúča poľa. Ručný preklad sa nikdy strojovo neprepíše. Na odstránenie pošlite prázdny reťazec.

ParameterTypOpis
fieldsobjectpovinnéfield_key: preložená hodnota
Požiadavka
curl -X PUT https://myproductpassport.eu/api/v1/passports/96/translations/de \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"fields": {"care_instructions": "Kalt waschen, nicht bleichen"}}'
Odpoveď
{ "message": "1 translation(s) written, 0 removed.", "locale": "de", "written": 1, "removed": 0 }

14 / Koncové bodyIntegrita a exporty

GET /passports/{id}/integrity vyžaduje passports:read

Každý zverejnený stav pasu ako záznam zreťazený pomocou hashov a podpísaný kľúčom Ed25519: odtlačok (SHA-256), hodnota reťazca a podpis. Verejné kľúče sú na adrese /.well-known/mpp-integrity-keys.json, takže reťazec môže overiť ktokoľvek.

Požiadavka
curl https://myproductpassport.eu/api/v1/passports/96/integrity \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{ "data": { "state": "intact", "hash_algorithm": "SHA-256", "signature_algorithm": "Ed25519", "records": [ { "sequence": 1, "event": "published", "content_hash": "8f3a...", "chain_hash": "c21e...", "signature": "MEUC...", "key_id": "3fa9c21e0b7d4a11" } ], "problems": [] } }
GET /passports/{id}/integrity/{sequence} vyžaduje passports:read

Úplný záznam v podobe, v akej bol podpísaný, vrátane snímky: čo pas uvádzal v danom okamihu, až po hash každého priloženého súboru.

Požiadavka
curl https://myproductpassport.eu/api/v1/passports/96/integrity/1 \
  -H "Authorization: Bearer pk_your_key"
GET /passports/{id}/epcis vyžaduje passports:read

Pas ako dokument GS1 EPCIS 2.0 vo formáte JSON-LD: uvedenie položky do obehu (commissioning), každý krok dodávateľského reťazca ako pozorovanie, jednotlivé batérie a pas druhého života ako transformácia. Ak má produkt GTIN, identifikátory sú URI GS1 Digital Link.

Požiadavka
curl https://myproductpassport.eu/api/v1/passports/96/epcis \
  -H "Authorization: Bearer pk_your_key"

15 / Koncové bodyŽiadosti dodávateľom

POST /passports/{id}/supplier-requests vyžaduje passports:write

Pošle dodávateľovi e-mailom súkromný odkaz na vyplnenie vami zvolených polí v jeho jazyku. Do pasu sa nič nedostane, kým to neschváli niekto z vášho pracovného priestoru.

ParameterTypOpis
supplier_namestringpovinné
supplier_emailstringpovinné
field_keysarraypovinnéKľúče polí zo šablóny pasu.
localestringJazyk e-mailu a formulára, napr. de.
due_atdateTermín odpovede; ak sa neuvedie, 14 dní.
messagestring
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/passports/96/supplier-requests \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"supplier_name": "Mei Chen", "supplier_email": "[email protected]", "field_keys": ["recycled_content_cobalt", "carbon_footprint"], "locale": "de"}'
GET /passports/{id}/supplier-requests vyžaduje passports:read

Všetky žiadosti k pasu s ich stavom.

Požiadavka
curl https://myproductpassport.eu/api/v1/passports/96/supplier-requests \
  -H "Authorization: Bearer pk_your_key"
GET /supplier-requests/{id} vyžaduje passports:read

Jedna žiadosť s odpoveďami dodávateľa, poznámkou a názvami priložených súborov.

Požiadavka
curl https://myproductpassport.eu/api/v1/supplier-requests/12 \
  -H "Authorization: Bearer pk_your_key"

16 / Koncové bodyPopredajný servis

POST /passports/{id}/items vyžaduje items:write

Dajte kusom výrobku (akéhokoľvek odvetvia okrem batérií, ktoré používajú /units) vlastné sériové číslo: každý dostane vlastnú adresu a QR kód, skrytý kód pravosti pre svoj štítok a môže ho zaregistrovať jeho vlastník. Pošlite až 10 000 kusov alebo rozsah. S kódom GTIN je adresou GS1 Digital Link /01/{gtin}/21/{serial}.

ParameterTypOpis
items[].serialstringpovinnéNajviac 20 písmen, číslic, bodiek, spojovníkov alebo podčiarkovníkov.
items[].batchstringŠarža, najviac 20 znakov.
items[].manufactured_onstringDátum výroby, RRRR-MM-DD.
rangeobjectNamiesto items: prefix, start, count, digits a batch, napríklad SN-00001 až SN-00500.
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/passports/96/items \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"range": {"prefix": "SN-", "start": 1, "count": 500, "digits": 5, "batch": "B2026-10"}}'
Odpoveď
{ "created": 500, "updated": 0, "skipped": 0, "over_limit": 0, "errors": [] }
GET /passports/{id}/items/{serial} vyžaduje items:read

Kus s adresou, stavom, informáciou, či je zaregistrovaný a do kedy platí jeho záruka, s overeniami pravosti a históriou. Kľúč s items:write dostane aj skrytý kód na tlač. GET /passports/{id}/items ich vypíše (filtre status a batch, per_page do 500).

Požiadavka
curl https://myproductpassport.eu/api/v1/passports/96/items/SN-00001 \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{
  "data": { "serial": "SN-00001", "status": "active", "url": "https://myproductpassport.co.uk/01/05012345678900/21/SN-00001", "registered": true, "warranty_ends_on": "2028-10-02", "events": [ { "type": "registered", "country": "IE", "at": "2026-10-03T09:12:00+00:00" } ] }
}
PATCH /passports/{id}/items/{serial} vyžaduje items:write

Nastavte status na stolen alebo recalled a stránka kusu varuje každého, kto ho naskenuje, a zobrazí vašu poznámku status_note; odcudzený kus nemožno zaregistrovať. retired stránku kusu vypne. Meniť možno aj batch a manufactured_on.

ParameterTypOpis
statusstringactive, stolen, recalled alebo retired.
status_notestringZobrazuje sa na stránke kusu, najviac 500 znakov.
Požiadavka
curl -X PATCH https://myproductpassport.eu/api/v1/passports/96/items/SN-00001 \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"status": "stolen", "status_note": "Reported stolen on 2 October 2026."}'
GET /owner-registrations vyžaduje aftersales:read

Ľudia, ktorí zaregistrovali vaše výrobky: meno, e-mail, krajina, dátum nákupu, predajca, dátumy záruky a či súhlasili s novinkami a ponukami (marketing_consent=1 vypíše len ich). Predvolené sú aktívne registrácie; status=pending, transferred alebo ended pre ostatné; since= pre zmeny po určitom dátume.

Požiadavka
curl "https://myproductpassport.eu/api/v1/owner-registrations?marketing_consent=1&since=2026-10-01" \
  -H "Authorization: Bearer pk_your_key"
GET /service-requests vyžaduje aftersales:read

Opravy, reklamácie, spätný zber, náhradné diely a otázky z vašich pasov, od najnovších, s filtrami status a type. GET /service-requests/{reference} pridá konverzáciu.

Požiadavka
curl "https://myproductpassport.eu/api/v1/service-requests?status=new" \
  -H "Authorization: Bearer pk_your_key"
POST /service-requests/{reference}/replies vyžaduje aftersales:write

Vaša odpoveď odíde zákazníkovi e-mailom s odkazom na stránku jeho požiadavky, v jeho jazyku. internal: true pridá poznámku viditeľnú len pre váš tím. PATCH /service-requests/{reference} so statusom posunie požiadavku ďalej (zákazník je informovaný, keď sa vybavuje, je vyriešená alebo uzavretá).

ParameterTypOpis
bodystringpovinnéOdpoveď, najviac 5 000 znakov.
internalbooleanPoznámka pre váš tím namiesto odpovede.
statusstringnew, in_progress, waiting, resolved alebo closed.
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/service-requests/SR-7K3F9Q/replies \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"body": "A new lid is on its way today.", "status": "waiting"}'

17 / Koncové bodyHromadné úpravy a obrázky

PATCH /products/bulk-fields vyžaduje products:write

Nastaví údaj o produkte alebo pole pasu až pre 5 000 produktov. mode je set, fill (iba tam, kde je hodnota prázdna) alebo clear. V rámci požiadavky sa aktualizuje až 100 produktov; väčšie množiny sa zaradia do frontu (202).

ParameterTypOpis
product_idsarraypovinné
targetstringpovinnéproduct | field
keystringpovinné
valuestring
modestringset | fill | clear
Požiadavka
curl -X PATCH https://myproductpassport.eu/api/v1/products/bulk-fields \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"product_ids": [12, 13, 14], "target": "field", "key": "warranty_period", "value": "10 years", "mode": "fill"}'
Odpoveď
{ "data": { "changed": 2, "skipped": 1, "errors": [] } }
POST /products/{id}/images vyžaduje products:write

Nahranie súboru JPG, PNG alebo WebP ako multipart (do 15MB, 8 na produkt). Prvý obrázok je titulným obrázkom verejného pasu.

ParameterTypOpis
imagefilepovinné
altstringPopis obrázka.
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/products/12/images \
  -H "Authorization: Bearer pk_your_key" \
  -F [email protected] -F alt="Front of the battery"
PUT /products/{id}/images/order vyžaduje products:write

Zadajte image_ids v požadovanom poradí; prvý sa stane titulným obrázkom.

ParameterTypOpis
image_idsarraypovinné
Požiadavka
curl -X PUT https://myproductpassport.eu/api/v1/products/12/images/order \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"image_ids": [31, 30]}'
DELETE /products/{id}/images/{imageId} vyžaduje products:write

Odstráni obrázok aj jeho súbor.

Požiadavka
curl -X DELETE https://myproductpassport.eu/api/v1/products/12/images/31 \
  -H "Authorization: Bearer pk_your_key"

18 / Koncové bodyWebhooky

GET /webhooks vyžaduje webhooks:manage

Koncové body zaregistrované pre váš pracovný priestor. Tajné kľúče tu nie sú; na zobrazenie tajného kľúča načítajte jeden koncový bod.

Požiadavka
curl https://myproductpassport.eu/api/v1/webhooks \
  -H "Authorization: Bearer pk_your_key"
POST /webhooks vyžaduje webhooks:manage

Zaregistruje verejnú HTTPS URL pre jednu alebo viac udalostí. Odpoveď obsahuje podpisový kľúč. Súkromných alebo interných hostiteľov odmietame.

ParameterTypOpis
urlstringpovinné
eventsarraypovinnéKtorákoľvek z udalostí uvedených nižšie.
Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/webhooks \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://erp.acme.example/mpp", "events": ["passport.published", "product.updated"]}'
Odpoveď
{
  "data": {
    "id": 3,
    "url": "https://erp.acme.example/mpp",
    "events": ["passport.published", "product.updated"],
    "is_active": true,
    "failure_count": 0,
    "secret": "9f1c...64 hex characters...",
    "created_at": "2026-09-22T10:12:00+00:00"
  }
}
GET /webhooks/{id} vyžaduje webhooks:manage

Požiadavka
curl https://myproductpassport.eu/api/v1/webhooks/3 \
  -H "Authorization: Bearer pk_your_key"
PUT /webhooks/{id} vyžaduje webhooks:manage

Zmeňte URL alebo udalosti, prípadne koncový bod pozastavte a obnovte. Obnovenie vynuluje počet zlyhaní; koncový bod sa automaticky pozastaví po 10 po sebe idúcich neúspešných doručeniach.

ParameterTypOpis
urlstring
eventsarray
is_activeboolean
Požiadavka
curl -X PUT https://myproductpassport.eu/api/v1/webhooks/3 \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"is_active": true}'
POST /webhooks/{id}/test vyžaduje webhooks:manage

Zaradí do frontu doručenie webhook.test, aby ste mohli overiť prijímač a kód podpisu.

Požiadavka
curl -X POST https://myproductpassport.eu/api/v1/webhooks/3/test \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{ "message": "Test delivery queued." }
GET /webhooks/{id}/deliveries vyžaduje webhooks:manage

Nedávne doručenia, od najnovších, s HTTP stavom, ktorý vrátil váš koncový bod, a prvými 500 znakmi tela odpovede.

ParameterTypOpis
per_pageintegerAž 100.
Požiadavka
curl https://myproductpassport.eu/api/v1/webhooks/3/deliveries \
  -H "Authorization: Bearer pk_your_key"
DELETE /webhooks/{id} vyžaduje webhooks:manage

Požiadavka
curl -X DELETE https://myproductpassport.eu/api/v1/webhooks/3 \
  -H "Authorization: Bearer pk_your_key"
Odpoveď
{ "message": "Webhook endpoint deleted." }

19 / UdalostiWebhooky

Namiesto dopytovania zaregistrujte v aplikácii koncový bod webhooku (stránka Webhooky, dostupná od plánu Starter) a MyProductPassport bude na vašu URL posielať JSON metódou POST, keď sa niečo stane:

UdalosťSpustí sa, keď
product.createdVytvorí sa výrobok (aplikácia, API alebo import CSV)
product.updatedProdukt sa aktualizuje
product.deletedVýrobok sa odstráni
passport.createdPas je vygenerovaný
passport.publishedPas je zverejnený
passport.archivedPas je archivovaný
supplier_request.submittedDodávateľ pošle informácie, o ktoré ste požiadali
owner.registeredVlastník potvrdí registráciu
owner.transferredKus prechádza na nového registrovaného vlastníka
service_request.createdZákazník pošle servisnú požiadavku z pasu
service_request.updatedServisná požiadavka dostane odpoveď alebo nový stav
item.status_changedKus je označený ako odcudzený, stiahnutý z trhu alebo vyradený, alebo je označenie zrušené
item.verification_failedNačítanie zabezpečeného tagu zlyhá, hromadia sa nesprávne kódy alebo sa sériové číslo objavuje na príliš mnohých miestach
webhook.testZ aplikácie odošlete testovacie doručenie

Každé doručenie je obálka JSON: ID doručenia (pri opakovaní sa posiela rovnaké ID, takže môžete odstrániť duplicity), udalosť, číslo pokusu, časová pečiatka a údaje udalosti. Udalosti pasov obsahujú uuid pasu a verejnú URL, takže druhú požiadavku potrebujete len zriedka:

Telo doručenia
{
  "id": 8123,
  "event": "passport.published",
  "attempt": 1,
  "created_at": "2026-09-22T10:12:00+00:00",
  "data": {
    "passport_id": 96,
    "uuid": "3f0c8f1e-...",
    "version": 2,
    "status": "published",
    "public_url": "https://myproductpassport.co.uk/p/3f0c8f1e-...",
    "product_id": 512,
    "product": {"id": 512, "name": "Alpine Merino Crew Sweater", "sku": "NL-AMC-001", "gtin": "5012345678900"}
  }
}

Hlavičky obsahujú názov udalosti, ID doručenia, unixovú časovú pečiatku a podpis HMAC nespracovaného tela, takže môžete overiť, že pochádza od nás, a odmietať opakované správy:

Hlavičky doručenia
Content-Type: application/json
User-Agent: MyProductPassport-Webhooks/1.0
X-MPP-Event: passport.published
X-MPP-Delivery: 8123
X-MPP-Timestamp: 1790084320
X-MPP-Signature: sha256=<hex hmac of the raw body, keyed with your endpoint secret>

Odpovedzte ľubovoľným kódom 2xx do 10 sekúnd. Všetko ostatné sa zopakuje päťkrát v priebehu približne 90 minút (30 s, 1 min, 5 min, 15 min, 1 h); po 10 po sebe idúcich zlyhaniach sa koncový bod pozastaví, kým ho znova nepovolíte.

Overenie (PHP)
$expected = 'sha256=' . hash_hmac('sha256', $rawBody, $endpointSecret);
abort_unless(hash_equals($expected, $request->header('X-MPP-Signature')), 401);