Prvi rok EU za DPP (Baterije): 130 dni Uskladite se zdaj
Jezik
EN DE FR IT ES NL PL BG CS DA EL ET FI HR HU LT LV MT PT RO SK SL SV
Izdelek
Funkcije Poprodaja Kako deluje Predstavitev Enterprise Cene
Sektorji
Vsi sektorji Tekstil Elektronika Baterije
Viri
Blog Primerjajte programsko opremo za DPP Zahteve po državah Ocena pripravljenosti Preverjanje okoljskih trditev Brezplačni prenosi Slovar
Podjetje
Partnerji Kontakt
Prijava Začnite brezplačno
Razvijalci / REST API

Referenca API-ja

Vse v MyProductPassport je na voljo prek REST API-ja, overjenega s ključem: ustvarjajte izdelke, generirajte in objavljajte digitalne potne liste izdelkov, pošiljajte sprotne podatke o baterijah in preverjajte skladnost neposredno iz svojega ERP, PIM ali cevovoda gradnje.

v1 https://myproductpassport.eu/api/v1 Začnite brezplačno Specifikacija OpenAPI ↓

01 / Prvi korakiPreverjanje pristnosti

Vsaka zahteva je overjena s ključem API, poslanim kot žeton Bearer. Ključi se ustvarijo v aplikaciji pod Ključi API, prikažejo se enkrat in shranijo kot zgoščeni zapis; vsak ključ ima svoj nabor dovoljenj, neobvezen seznam dovoljenih IP-jev in neobvezen datum poteka. Ključe je mogoče zamenjati brez izpada.

Glava zahteve
Authorization: Bearer pk_your_api_key
V vseh paketih. Ključe API lahko ustvarite in uporabljate v vseh paketih, tudi v brezplačnem. Paket določa, koliko zahtev na minuto lahko pošlje ključ (spodaj) in koliko proizvodov in potnih listov lahko ima delovni prostor.
Preskusni način. Preskusni ključ (pk_test_...) izvede vsak klic natanko tako, kot bi ga aktivni ključ, z enakim preverjanjem, ID-ji in odgovori, nato pa ga razveljavi: nič se ne shrani, ne pošlje se nobeno e-sporočilo ali webhook in nobena datoteka se ne ohrani. Odgovori vsebujejo "test_mode": true in glavo X-MPP-Mode: test. Integracijo zgradite in preizkusite na svojih resničnih podatkih, nato pa preskusni ključ zamenjajte z aktivnim.

Dovoljenja se dodelijo na ključ, zato integracija dobi le tisto, kar potrebuje:

DovoljenjeDodelitve dostopa
products:readBranje izdelkov
products:writeUstvarjanje, posodabljanje in brisanje izdelkov
passports:readBranje potnih listov
passports:writeUstvari potne liste
passports:publishObjava in arhiviranje potnih listov
webhooks:manageUstvarjanje, preizkušanje in odstranjevanje končnih točk 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 / Prvi korakiOmejitve zahtev

Omejitve veljajo na ključ, na minuto, in jih določa paket:

PaketZahtev / minuto
Brezplačno30
Micro60
E-etiketa60
Starter120
Professional300
Business600
Battery600

Vsak odgovor vsebuje glavi X-RateLimit-Limit in X-RateLimit-Remaining. Ob prekoračitvi omejitve se vrne 429:

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

03 / Prvi korakiNapake

Napake so v obliki JSON z običajno statusno kodo. Najpogostejše:

StanjePomenPrimer telesa
401Manjkajoč, neveljaven, preklican ali potekel ključ{"error": "Invalid or revoked API key."}
403Ključu manjka dovoljenje, naslov IP ni na seznamu dovoljenih ali je dosežena omejitev paketa{"message": "API key does not have 'products:write' permission."}
404Vir v vašem delovnem prostoru ne obstaja{"message": "Not found."}
422Preverjanje ni uspelo{"message": "…", "errors": {"gtin": ["…"]}}
429Prekoračena omejitev zahtev{"error": "Rate limit exceeded."}

04 / Prvi korakiŠtevilčenje strani

Končne točke seznamov vrnejo 25 elementov na stran s standardnima objektoma links in meta. Za premikanje po zbirki podajte ?page=2.

05 / Prvi korakiPovezava z asistentom UI (MCP)

Povežite Claude, Cursor ali katerega koli asistenta, ki podpira Model Context Protocol, in ga s preprostimi besedami prosite, naj ustvarja proizvode, izpolnjuje potne liste s tem, kar mu poveste, in preverja, kaj še manjka. Uporablja ključ API z njegovimi dovoljenji in omejitvijo zahtev. Lahko ustvarja osnutke in izpolnjuje polja; nikoli ničesar ne objavi, arhivira ali izbriše: to ostane pri vas v aplikaciji.

Naslov strežnika (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 in drugi odjemalci, ki zaženejo lokalni strežnik
{
  "mcpServers": {
    "myproductpassport": {
      "command": "npx",
      "args": ["mcp-remote", "https://myproductpassport.eu/api/mcp", "--header", "Authorization: Bearer pk_live_your_key"]
    }
  }
}

Orodja, ki jih ponuja:

OrodjeKaj naredi
list_productsProizvodi delovnega prostora, od najnovejših, 25 na stran, s sektorjem in najnovejšim potnim listom.
get_productEn proizvod s podatki, sektorjem, regulativnimi razdelki in najnovejšim potnim listom.
list_sectorsPredloge sektorjev, ki jih lahko uporablja proizvod (tekstil, elektronika, baterije, vino in drugo), z njihovimi ID-ji. Sektor proizvoda določa, katera polja potnega lista so obvezna.
create_productDoda proizvod v delovni prostor. Uporabite sector_id iz list_sectors. compliance_sections doda potnemu listu regulativne razdelke: gpsr, epr, france, chemicals, eudr.
list_passportsPotni listi delovnega prostora, od najnovejših, 25 na stran, s stanjem (draft, published, archived), odstotkom popolnosti in javnim naslovom.
get_passportEn potni list: stanje, različica, odstotek popolnosti, javni naslov in povezave do kode QR.
create_passportUstvari osnutek potnega lista za proizvod. Ni objavljen: objavi ga oseba v aplikaciji.
get_passport_fieldsKaj zahteva potni list: ključi obveznih in neobveznih polj, pomen vsakega (oznaka, opis, primer), obstoječe vrednosti in manjkajoča obvezna polja.
update_passport_fieldsZapiše vrednosti polj v osnutek ali objavljen potni list (objavljen se posodobi na mestu: isti naslov, ista koda QR). Ključi iz get_passport_fields; prazno besedilo odstrani vrednost. Zapisujte samo dejstva, ki jih navaja uporabnik ali njegovi dokumenti.
get_compliancePopolnost potnega lista: odstotek, stanje in obvezna polja, ki še manjkajo.
Preizkusite s testnim ključem. S testnim ključem (pk_test_...) se spremembe asistenta preverijo in nato razveljavijo, tako da vidite, kaj bi naredil, preden mu date pravi ključ.

06 / Končne točkeRačun

GET /me

Vrne overjeni račun, njegovo raven naročnine in koliko omejitve izdelkov je porabljene. Uporabno za preverjanje povezave.

Zahteva
curl https://myproductpassport.eu/api/v1/me \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{
  "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 / Končne točkeIzdelki

GET /products zahteva products:read

Navede izdelke v vašem delovnem prostoru od najnovejših, 25 na stran. Vsak izdelek vključuje svoj sektor in povzetek najnovejšega potnega lista.

ParameterVrstaOpis
pageintegerŠtevilka strani.
Zahteva
curl "https://myproductpassport.eu/api/v1/products?page=1" \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{
  "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 zahteva products:write

Ustvari en izdelek. Vrne 403, če je omejitev izdelkov paketa porabljena.

ParameterVrstaOpis
namestringobveznoIme izdelka, do 255 znakov.
skustringVaš notranji SKU, do 100 znakov.
gtinstringGTIN-8, 12, 13 ali 14 (samo števke).
brandstringBlagovna znamka, prikazana na javnem potnem listu.
descriptionstringDo 2.000 znakov.
categorystringKategorija v prostem besedilu. Privzeto "general".
sector_idintegerID sektorja, ki izbere predlogo polj potnega lista.
country_of_originstringOznaka države, npr. "PT".
weightnumberNeto teža.
weight_unitstringEno od kg, g, lb, oz. Privzeto kg.
materialsarrayObjekti {name, percentage 0-100}.
has_packagingbooleanDoda v potni list polja predloge za embalažo (ključi, ki se začnejo s pkg_), pod isto kodo QR.
Zahteva
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}
    ]
  }'
Odgovor
{
  "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 zahteva products:write

Z enim klicem ustvari do 100 izdelkov. Celoten paket se zavrne s 403, če bi presegel vašo preostalo omejitev izdelkov. Za kataloge s tisoči izdelkov kličite to končno točko v zanki ali uporabite uvoz CSV v aplikaciji.

ParameterVrstaOpis
productsarrayobveznoOd 1 do 100 objektov izdelkov z enakimi polji kot »Ustvari izdelek« (brez materialov).
Zahteva
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}
    ]
  }'
Odgovor
{
  "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} zahteva products:read

Vrne en izdelek z njegovim sektorjem in povzetkom najnovejšega potnega lista. 404, če ID ni v vašem delovnem prostoru.

Zahteva
curl https://myproductpassport.eu/api/v1/products/512 \
  -H "Authorization: Bearer pk_your_key"
PUT /products/{id} zahteva products:write

Delno posodobi izdelek. Pošljite samo polja, ki jih želite spremeniti; seznam polj je enak kot pri Ustvari izdelek.

Zahteva
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} zahteva products:write

Izbriše izdelek z možnostjo obnovitve. Objavljeni potni listi izdelka še naprej delujejo, zato natisnjene QR-kode nikoli ne ostanejo brez strani.

Zahteva
curl -X DELETE https://myproductpassport.eu/api/v1/products/512 \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{ "message": "Product deleted." }

08 / Končne točkePotni listi

GET /passports zahteva passports:read

Navede potne liste od najnovejših, 25 na stran, s povzetkom izdelka in vsemi polji potnega lista.

ParameterVrstaOpis
pageintegerŠtevilka strani.
Zahteva
curl https://myproductpassport.eu/api/v1/passports \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{
  "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 zahteva passports:write

Ustvari osnutek potnega lista za izdelek in vnaprej izpolni polja iz podatkov o izdelku in predloge sektorja. Vrne osnutek z oceno skladnosti. Za izdelek, ki že ima aktiven potni list, vrne 409 s tem potnim listom: popravite ga s PUT /passports/{id}/fields, ki ohrani njegov naslov in kodo QR.

Zahteva
curl -X POST https://myproductpassport.eu/api/v1/products/512/passports \
  -H "Authorization: Bearer pk_your_key"
GET /passports/{id} zahteva passports:read

Vrne en potni list z izdelkom, polji, javnim URL-jem in GS1 Digital Link.

Zahteva
curl https://myproductpassport.eu/api/v1/passports/96 \
  -H "Authorization: Bearer pk_your_key"
POST /passports/{id}/publish zahteva passports:publish

Objavi osnutek potnega lista in aktivira njegovo javno stran in kodo QR. Objaviti je mogoče samo osnutke; vse drugo vrne 404.

Zahteva
curl -X POST https://myproductpassport.eu/api/v1/passports/96/publish \
  -H "Authorization: Bearer pk_your_key"
POST /passports/{id}/archive zahteva passports:publish

Arhivira potni list in njegovo javno stran umakne iz obtoka.

Zahteva
curl -X POST https://myproductpassport.eu/api/v1/passports/96/archive \
  -H "Authorization: Bearer pk_your_key"
POST /passports/bulk-publish zahteva passports:publish

Z enim klicem objavi do 50 osnutkov potnih listov in poroča o rezultatu za vsak potni list, zato ena napaka nikoli ne prekine paketa.

ParameterVrstaOpis
passport_idsarrayobveznoOd 1 do 50 ID-jev potnih listov.
Zahteva
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]}'
Odgovor
{
  "published": 2,
  "failed": 1,
  "published_ids": [96, 97],
  "errors": [
    { "id": 98, "error": "Compliance below the publishing threshold." }
  ]
}
POST /passports/{id}/successor zahteva passports:write

Za izdelek, pripravljen za ponovno uporabo, prenamenjen ali ponovno izdelan, Uredba o baterijah (člen 77(7)) zahteva nov potni list, povezan z izvirnim. S tem se ustvari nov zapis izdelka in osnutek potnega lista, vnaprej izpolnjen iz objavljenega in povezan z njim. Izvirnik ostane aktiven, oba potna lista pa prikazujeta povezavo. Novega objavite s POST /passports/{id}/publish.

ParameterVrstaOpis
stagestringobveznoprepared_for_reuse, repurposed ali remanufactured.
Zahteva
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" }'
Odgovor
{
  "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 zahteva passports:read

Vrne ključe polj, ki jih zahteva predloga sektorja potnega lista (obvezne in neobvezne), trenutne vrednosti in katerih obveznih ključev še manjka. Uporabite ga za sestavo vsebine za PUT /passports/{id}/fields.

Zahteva
curl https://myproductpassport.eu/api/v1/passports/96/fields \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{
  "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 zahteva passports:write

Zapiše poljuben nabor vrednosti polj v osnutek ali objavljen potni list: celoten nabor iz Priloge XIII za baterijo, polja predloge sektorja ali lastne ključe. Pošljite samo ključe, ki jih želite spremeniti; vrednost null ali prazna polje odstrani. Objavljeni potni list se posodobi na mestu, njegov naslov in QR-koda se ne spremenita, strojni prevodi pa se ustvarijo znova. Skladnost se ponovno oceni. Osnutek s tem klicem ni objavljen; uporabite POST /passports/{id}/publish.

ParameterVrstaOpis
fieldsobjectobveznoPreslikava ključa polja v vrednost. Ključi so male črke, števke in podčrtaji; vrednosti do 5.000 znakov. Do 200 ključev na klic.
Zahteva
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%"
    }
  }'
Odgovor
{
  "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 zahteva passports:write

Pošlje lastne podatke te baterije (točka 4 Priloge XIII k Uredbi (EU) 2023/1542) v objavljen potni list, za sisteme BMS in vozne parke. Pošljite poljuben podnabor spodnjih polj; skladnost se po posodobitvi ponovno preveri. Te vrednosti so prikazane samo gledalcem, ki jih je odobril lastnik potnega lista (člen 77(2)), nikoli na javni strani. capacity_fade, power_capability in internal_resistance se shranijo kot trenutne meritve te baterije (current_*), ločeno od izvirnih vrednosti modela.

ParameterVrstaOpis
state_of_healthstringnpr. "97% pri 412 ciklih".
state_of_certified_energystringPreostala certificirana energija (baterije za električna vozila).
battery_statusstringoriginal, repurposed, re-used, remanufactured ali waste.
capacity_fadestringDosedanje zmanjšanje kapacitete. Shranjeno kot current_capacity_fade.
power_capabilitystringTrenutna zmogljivost moči. Shranjeno kot current_power_capability.
internal_resistancestringIzmerjena notranja upornost. Shranjeno kot current_internal_resistance.
use_datastringCikli, negativni dogodki, temperatura in stanje napolnjenosti, do 5.000 znakov.
Zahteva
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"
  }'
Odgovor
{
  "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 zahteva passports:write

Vsaka baterija potrebuje svoj potni list (Uredba (EU) 2023/1542, člen 77(1)). Z enim klicem registrirajte do 10.000 baterij enega modela, vsako s svojo serijsko številko (do 20 črk, števk, pik, vezajev ali podčrtajev) in po želji manufacturing_date, battery_status ter njene podatke iz točke 4 Priloge XIII. Obstoječe serijske številke se posodobijo; izpuščene vrednosti se ohranijo. Če ima izdelek GTIN, je naslov vsake baterije njen GS1 Digital Link, /01/{gtin}/21/{serial}. Podatki iz točke 4 so prikazani samo gledalcem, ki jih odobri lastnik.

ParameterVrstaOpis
units[].serialstringobveznoSerijska številka baterije.
units[].manufacturing_datestringMesec in leto, npr. "2026-09".
units[].battery_statusstringoriginal ali waste. Sprememba statusa zahteva vrednosti, izmerjene ob njej (Priloga XIII, 4(a)); waste potrebuje tudi responsible_party_type (producer, pro ali waste_operator), responsible_party_name in responsible_party_contact (člen 77(7)). recycled z recycled_at in recycler_name konča potni list (člen 77(8)). Prenamenjena, ponovno uporabljena ali ponovno izdelana baterija dobi nov potni list: POST /passports/{id}/units/{serial}/successor.
units[].state_of_healthstringTudi 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 in use_data.
Zahteva
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%"}]}'
Odgovor
{ "created": 1, "updated": 0, "skipped": 0, "errors": [] }
PATCH /passports/{id}/units/{serial} zahteva passports:write

Za sistem za upravljanje baterije, ki pošilja podatke ene baterije: kar koli od battery_status, state_of_health, state_of_certified_energy, current_capacity_fade, current_power_capability, current_internal_resistance in use_data. Za branje uporabite GET na isti poti ali GET /passports/{id}/units za seznam (per_page do 500).

Zahteva
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"}'
Odgovor
{
  "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 zahteva passports:read

Priloga XIII, točka 4(a), zahteva vrednosti zmogljivosti in trajnosti ob dajanju baterije na trg in ob spremembi njenega stanja. Te meritve se ohranijo nespremenjene, ne glede na pozneje poslane podatke; če želite ohraniti tudi redno meritev, pošljite record_snapshot: true z zahtevo PATCH.

Zahteva
curl https://myproductpassport.eu/api/v1/passports/96/units/KES-00001/snapshots \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{
  "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 zahteva passports:write

Člen 77(7): baterija, ki je bila pripravljena za ponovno uporabo, prenamenjena ali ponovno izdelana, ima nov potni list, povezan z izvirnim. S tem se baterija ponovno registrira z novo serijsko številko in identifikatorjem v okviru modela baterije za drugo življenje v vašem delovnem prostoru (ustvarjenega iz tega modela, če ga še ni), oba se povežeta, vrednosti, izmerjene ob spremembi, pa se ohranijo. Izvirna baterija obdrži svoj potni list. Model za drugo življenje dopolnite in objavite s POST /passports/{id}/publish.

ParameterVrstaOpis
stagestringobveznoprepared_for_reuse, repurposed ali remanufactured.
valuesobjectobveznoVrednosti, izmerjene ob spremembi: vsaj ena od remaining_capacity_ah ali current_capacity_fade, od current_power_capability ali power_fade, od current_internal_resistance ali internal_resistance_increase ter expected_lifetime_cycles_remaining (Priloga IV, del A).
serialstringNova serijska številka. Privzeto: izvirna serijska številka s pripono -RU, -RP ali -RM.
measured_atstringKdaj so bile vrednosti izmerjene.
member_statestringDvočrkovna koda države članice, v kateri je bilo preskušeno zdravstveno stanje (člen 73(1)(a)).
target_passport_idintegerObstoječi model za drugo življenje tega modela baterije, pod katerim jo registrirate.
Zahteva
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"}}'
Odgovor
{
  "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 zahteva passports:write

Na potnem listu shrani oddajo v register DPP EU in njen rezultat: stanje, korelacijski ID, registracijski identifikator, ki ga vrne register, in neobvezno povezavo do varnostne kopije, ki jo gosti ponudnik storitev DPP. Sama registracija poteka v registru Komisije (spletni obrazec ali nalaganje datoteke); to ohrani rezultat ob potnem listu. GET /passports/{id} vrne isti blok pod registry.

ParameterVrstaOpis
statusstringnot_submitted, submitted, registered ali failed.
product_groupstringSkupina izdelkov v registru, na primer batteries.
granularitystringmodel, serija ali kos.
upistringEnolični identifikator izdelka kot URL https. Privzeto URL javnega potnega lista.
correlation_idstringID korelacije, ki ga register dodeli ob oddaji.
uristringIdentifikator registracije, ki ga vrne register.
backup_urlstringPovezava https do varnostne kopije, ki jo gosti ponudnik storitev DPP.
submitted_atdateDatum oddaje.
registered_atdateDatum registracije.
errorstringOpis napake za neuspelo oddajo.
Zahteva
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"
  }'
Odgovor
{
  "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 zahteva passports:read

QR-koda potnega lista kot datoteka: svg (privzeto), png (z blagovno znamko, pripravljena za tisk) ali pdf (pola nalepk).

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

09 / Končne točkeSkladnost

GET /passports/{passportId}/compliance zahteva passports:read

Izvede sprotno preverjanje skladnosti potnega lista glede na obvezna polja njegovega sektorja in natančno poroča, kaj manjka.

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

10 / Končne točkeSektorji

GET /sectors

Sektorji, v katere je mogoče uvrstiti izdelek: sistemski sektorji platforme in vsi, ki jih je določil vaš delovni prostor. Pri ustvarjanju izdelkov uporabite id, pri pisanju polj potnega lista pa ključe polj.

Zahteva
curl https://myproductpassport.eu/api/v1/sectors \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{
  "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 / Končne točkeDokumenti

GET /products/{productId}/documents zahteva products:read

Izjave o skladnosti, poročila o preskusih in certifikati, priloženi izdelku. Javni dokument je povezan z vsakega objavljenega potnega lista izdelka.

Zahteva
curl https://myproductpassport.eu/api/v1/products/512/documents \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{
  "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 zahteva products:write

Večdelno nalaganje. PDF, Word, Excel, CSV, besedilo, PNG in JPEG do 10 MB, največ 20 na izdelek. Besedilo se izlušči v ozadju.

ParameterVrstaOpis
filefileobveznoDokument.
is_publicbooleanPrikaži na javnem potnem listu (privzeto false).
Zahteva
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} zahteva products:write

Preklopi, ali je dokument povezan z javnega potnega lista.

ParameterVrstaOpis
is_publicbooleanobvezno
Zahteva
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} zahteva products:write

Odstrani datoteko in njeno povezavo s potnim listom.

Zahteva
curl -X DELETE https://myproductpassport.eu/api/v1/products/512/documents/31 \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{ "message": "Document deleted." }

12 / Končne točkeDobavna veriga

GET /products/{productId}/supply-chain zahteva products:read

Koraki, prikazani na potnem listu izdelka, po vrsti.

Zahteva
curl https://myproductpassport.eu/api/v1/products/512/supply-chain \
  -H "Authorization: Bearer pk_your_key"
PUT /products/{productId}/supply-chain zahteva products:write

Zamenja vse korake s seznamom, ki ga pošljete, v poslanem vrstnem redu. Za izpraznitev pošljite prazen seznam. Vrste korakov: raw_material, processing, manufacturing, assembly, packaging, distribution.

ParameterVrstaOpis
stepsarrayobveznoDo 50 korakov.
steps[].step_typestringobvezno
steps[].supplier_namestringobvezno
steps[].supplier_locationstring
steps[].supplier_countrystringISO 3166-1 alpha-2.
steps[].lat / lngnumber
steps[].descriptionstring
steps[].certificationsarray
steps[].datedate
Zahteva
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 / Končne točkePrevodi

GET /passports/{id}/translations zahteva passports:read

Vsaka prevedena vrednost polja po jezikih z virom: auto (strojno, ustvarjeno ob objavi) ali manual.

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

Nastavi prevode za en jezik po ključu polja. Ročnega prevoda strojni nikoli ne prepiše. Za odstranitev pošljite prazen niz.

ParameterVrstaOpis
fieldsobjectobveznofield_key: prevedena vrednost
Zahteva
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"}}'
Odgovor
{ "message": "1 translation(s) written, 0 removed.", "locale": "de", "written": 1, "removed": 0 }

14 / Končne točkeCelovitost in izvozi

GET /passports/{id}/integrity zahteva passports:read

Vsako objavljeno stanje potnega lista kot zapis, povezan v verigo zgoščenih vrednosti in podpisan z Ed25519: prstni odtis (SHA-256), vrednost verige in podpis. Javni ključi so na voljo na /.well-known/mpp-integrity-keys.json, zato lahko verigo preveri kdor koli.

Zahteva
curl https://myproductpassport.eu/api/v1/passports/96/integrity \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{ "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} zahteva passports:read

Celoten zapis, kot je bil podpisan, vključno s posnetkom stanja: kaj je potni list navajal v tistem trenutku, vse do zgoščene vrednosti vsake priložene datoteke.

Zahteva
curl https://myproductpassport.eu/api/v1/passports/96/integrity/1 \
  -H "Authorization: Bearer pk_your_key"
GET /passports/{id}/epcis zahteva passports:read

Potni list kot dokument GS1 EPCIS 2.0 JSON-LD: vzpostavitev izdelka (commissioning), vsak korak dobavne verige kot opazovanje, posamezne baterije in potni list za drugo življenje kot transformacija. Identifikatorji so URI-ji GS1 Digital Link, če ima izdelek GTIN.

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

15 / Končne točkeZahteve za dobavitelje

POST /passports/{id}/supplier-requests zahteva passports:write

Dobavitelju po e-pošti pošlje zasebno povezavo, prek katere v svojem jeziku izpolni polja, ki jih izberete. V potni list ne pride nič, dokler tega ne odobri nekdo iz vašega delovnega prostora.

ParameterVrstaOpis
supplier_namestringobvezno
supplier_emailstringobvezno
field_keysarrayobveznoKljuči polj iz predloge potnega lista.
localestringJezik e-sporočila in obrazca, npr. de.
due_atdateRok za odgovor; če ni naveden, 14 dni.
messagestring
Zahteva
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 zahteva passports:read

Vse zahteve za potni list z njihovim stanjem.

Zahteva
curl https://myproductpassport.eu/api/v1/passports/96/supplier-requests \
  -H "Authorization: Bearer pk_your_key"
GET /supplier-requests/{id} zahteva passports:read

Ena zahteva z odgovori dobavitelja, opombo in imeni priloženih datotek.

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

16 / Končne točkePoprodaja

POST /passports/{id}/items zahteva items:write

Kosom izdelka (iz katerega koli sektorja razen baterij, ki uporabljajo /units) dajte lastno serijsko številko: vsak dobi lastni naslov in kodo QR, skrito kodo pristnosti za svojo nalepko, lastnik pa ga lahko registrira. Pošljite do 10.000 kosov ali razpon. Z GTIN je naslov GS1 Digital Link /01/{gtin}/21/{serial}.

ParameterVrstaOpis
items[].serialstringobveznoNajveč 20 črk, števk, pik, vezajev ali podčrtajev.
items[].batchstringSerija, največ 20 znakov.
items[].manufactured_onstringDatum izdelave, LLLL-MM-DD.
rangeobjectNamesto items: prefix, start, count, digits in batch, na primer od SN-00001 do SN-00500.
Zahteva
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"}}'
Odgovor
{ "created": 500, "updated": 0, "skipped": 0, "over_limit": 0, "errors": [] }
GET /passports/{id}/items/{serial} zahteva items:read

Kos z naslovom, stanjem, podatkom, ali je registriran in do kdaj velja njegova garancija, s preverjanji pristnosti in zgodovino. Ključ z items:write dobi tudi skrito kodo za tiskanje. GET /passports/{id}/items jih navede (filtra status in batch, per_page do 500).

Zahteva
curl https://myproductpassport.eu/api/v1/passports/96/items/SN-00001 \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{
  "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} zahteva items:write

Nastavite status na stolen ali recalled in stran kosa bo vsakogar, ki ga skenira, opozorila z vašo opombo status_note; ukradenega kosa ni mogoče registrirati. retired izklopi stran kosa. Spremenite lahko tudi batch in manufactured_on.

ParameterVrstaOpis
statusstringactive, stolen, recalled ali retired.
status_notestringPrikazano na strani kosa, največ 500 znakov.
Zahteva
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 zahteva aftersales:read

Osebe, ki so registrirale vaše izdelke: ime, e-pošta, država, datum nakupa, trgovec, datumi garancije in ali so privolile v novice in ponudbe (marketing_consent=1 navede samo njih). Privzeto aktivne registracije; status=pending, transferred ali ended za ostale; since= za spremembe po datumu.

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

Popravila, garancijski zahtevki, vračila, nadomestni deli in vprašanja iz vaših potnih listov, najnovejši najprej, s filtroma status in type. GET /service-requests/{reference} doda pogovor.

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

Vaš odgovor je stranki poslan po e-pošti s povezavo do strani njenega zahtevka, v njenem jeziku. internal: true doda opombo, ki jo vidi le vaša ekipa. PATCH /service-requests/{reference} s stanjem ga premakne naprej (stranka je obveščena, ko je v obdelavi, rešen ali zaprt).

ParameterVrstaOpis
bodystringobveznoOdgovor, največ 5.000 znakov.
internalbooleanOpomba za vašo ekipo namesto odgovora.
statusstringnew, in_progress, waiting, resolved ali closed.
Zahteva
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 / Končne točkeMnožično urejanje in slike

PATCH /products/bulk-fields zahteva products:write

Nastavi podatek o izdelku ali polje potnega lista za največ 5.000 izdelkov. mode je set, fill (samo kjer je prazno) ali clear. V okviru zahteve se posodobi do 100 izdelkov; večji nabori se uvrstijo v čakalno vrsto (202).

ParameterVrstaOpis
product_idsarrayobvezno
targetstringobveznoproduct | field
keystringobvezno
valuestring
modestringset | fill | clear
Zahteva
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"}'
Odgovor
{ "data": { "changed": 2, "skipped": 1, "errors": [] } }
POST /products/{id}/images zahteva products:write

Večdelno nalaganje datoteke JPG, PNG ali WebP (do 15MB, največ 8 na izdelek). Prva slika je naslovna slika na javnem potnem listu.

ParameterVrstaOpis
imagefileobvezno
altstringOpis slike.
Zahteva
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 zahteva products:write

Posredujte image_ids v želenem vrstnem redu; prva slika postane naslovna.

ParameterVrstaOpis
image_idsarrayobvezno
Zahteva
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} zahteva products:write

Odstrani sliko in njeno datoteko.

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

18 / Končne točkeWebhooki

GET /webhooks zahteva webhooks:manage

Končne točke, registrirane za vaš delovni prostor. Skrivnosti tukaj niso vključene; za ogled skrivnosti pridobite eno končno točko.

Zahteva
curl https://myproductpassport.eu/api/v1/webhooks \
  -H "Authorization: Bearer pk_your_key"
POST /webhooks zahteva webhooks:manage

Registrira javni URL HTTPS za enega ali več dogodkov. Odgovor vključuje skrivnost za podpisovanje. Zasebni ali notranji gostitelji so zavrnjeni.

ParameterVrstaOpis
urlstringobvezno
eventsarrayobveznoKateri koli od spodaj navedenih dogodkov.
Zahteva
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"]}'
Odgovor
{
  "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} zahteva webhooks:manage

Zahteva
curl https://myproductpassport.eu/api/v1/webhooks/3 \
  -H "Authorization: Bearer pk_your_key"
PUT /webhooks/{id} zahteva webhooks:manage

Spremenite URL ali dogodke ali končno točko začasno ustavite in nadaljujte. Nadaljevanje ponastavi število neuspehov; končna točka se samodejno ustavi po 10 zaporednih neuspelih dostavah.

ParameterVrstaOpis
urlstring
eventsarray
is_activeboolean
Zahteva
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 zahteva webhooks:manage

V čakalno vrsto doda dostavo webhook.test, da lahko preverite prejemnik in kodo podpisa.

Zahteva
curl -X POST https://myproductpassport.eu/api/v1/webhooks/3/test \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{ "message": "Test delivery queued." }
GET /webhooks/{id}/deliveries zahteva webhooks:manage

Nedavne dostave, od najnovejše, s statusom HTTP, ki ga je vrnila vaša končna točka, in prvimi 500 znaki odgovora.

ParameterVrstaOpis
per_pageintegerDo 100.
Zahteva
curl https://myproductpassport.eu/api/v1/webhooks/3/deliveries \
  -H "Authorization: Bearer pk_your_key"
DELETE /webhooks/{id} zahteva webhooks:manage

Zahteva
curl -X DELETE https://myproductpassport.eu/api/v1/webhooks/3 \
  -H "Authorization: Bearer pk_your_key"
Odgovor
{ "message": "Webhook endpoint deleted." }

19 / DogodkiWebhooki

Namesto sprotnega poizvedovanja v aplikaciji registrirajte končno točko webhooka (stran Webhooks, na voljo od paketa Starter naprej) in MyProductPassport bo ob dogodkih pošiljal JSON z metodo POST na vaš URL:

DogodekSproži se, ko
product.createdIzdelek je ustvarjen (aplikacija, API ali uvoz CSV)
product.updatedIzdelek je posodobljen
product.deletedIzdelek je izbrisan
passport.createdPotni list je ustvarjen
passport.publishedPotni list postane aktiven
passport.archivedPotni list je arhiviran
supplier_request.submittedDobavitelj pošlje zahtevane podatke
owner.registeredLastnik potrdi svojo registracijo
owner.transferredKos preide na novega registriranega lastnika
service_request.createdStranka iz potnega lista pošlje servisni zahtevek
service_request.updatedServisni zahtevek dobi odgovor ali novo stanje
item.status_changedKos je označen kot ukraden, odpoklican ali umaknjen iz uporabe ali pa je označitev preklicana
item.verification_failedBranje varne oznake ne uspe, napačne kode se kopičijo ali se serijska številka pojavi na preveč mestih
webhook.testIz aplikacije pošljete preizkusno dostavo

Vsaka dostava je ovojnica JSON: ID dostave (pri ponovnih poskusih se pošlje isti ID, da lahko odstranite dvojnike), dogodek, številka poskusa, časovni žig in podatki o dogodku. Dogodki potnih listov vsebujejo uuid in javni URL potnega lista, zato drugo zahtevo potrebujete le redko:

Telo dostave
{
  "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"}
  }
}

Glave vsebujejo ime dogodka, ID dostave, časovni žig Unix in podpis HMAC neobdelanega telesa, da lahko preverite, da prihaja od nas, in zavrnete ponovitve:

Glave dostave
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>

Odgovorite s katero koli kodo 2xx v 10 sekundah. Vse drugo se ponovi petkrat v približno 90 minutah (30 s, 1 min, 5 min, 15 min, 1 h); po 10 zaporednih neuspehih se končna točka začasno ustavi, dokler je znova ne omogočite.

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