API viide
Kõik MyProductPassportis on saadaval võtmega autenditud REST API kaudu: looge tooteid, genereerige ja avaldage digitaalseid tootepasse, saatke reaalajas akuandmeid ja kontrollige vastavust otse oma ERP-, PIM- või ehitustorustikust.
01 / AlustamineAutentimine
Iga päring autenditakse Bearer-tõendina edastatud API-võtmega. Võtmed luuakse rakenduses jaotises API-võtmed, neid näidatakse üks kord ja hoitakse räsituna; igal võtmel on oma õiguste komplekt, valikuline lubatud IP-de loend ja valikuline aegumiskuupäev. Võtmeid saab vahetada ilma katkestuseta.
Authorization: Bearer pk_your_api_keyÕigused antakse võtme kaupa, nii et integratsioon saab ainult seda, mida vajab:
| Õigus | Õigused |
|---|---|
| products:read | Toodete lugemine |
| products:write | Toodete loomine, muutmine ja kustutamine |
| passports:read | Passide lugemine |
| passports:write | Loo passid |
| passports:publish | Passide avaldamine ja arhiveerimine |
| webhooks:manage | Veebikonksude otspunktide loomine, testimine ja eemaldamine |
| items:read | Read individual items and their history |
| items:write | Add, update and flag individual items |
| aftersales:read | Read owner registrations and service requests |
| aftersales:write | Update service requests and reply to customers |
02 / AlustaminePäringute limiidid
Limiidid kehtivad võtme ja minuti kohta ning sõltuvad paketist:
| Pakett | Päringuid / minutis |
|---|---|
| Tasuta | 30 |
| Micro | 60 |
| E-silt | 60 |
| Starter | 120 |
| Professional | 300 |
| Business | 600 |
| Battery | 600 |
Iga vastus sisaldab päiseid X-RateLimit-Limit ja X-RateLimit-Remaining. Limiidi ületamisel tagastatakse 429:
{ "error": "Rate limit exceeded.", "limit": 300, "retry_after": 60 }03 / AlustamineVead
Vead on JSON-vormingus tavapärase olekukoodiga. Levinumad:
| Olek | Tähendus | Näidissisu |
|---|---|---|
| 401 | Puuduv, kehtetu, tühistatud või aegunud võti | {"error": "Invalid or revoked API key."} |
| 403 | Võtmel puudub õigus, IP-aadress ei ole lubatud loendis või paketi piir on täis | {"message": "API key does not have 'products:write' permission."} |
| 404 | Ressurssi teie tööruumis ei ole | {"message": "Not found."} |
| 422 | Valideerimine ebaõnnestus | {"message": "…", "errors": {"gtin": ["…"]}} |
| 429 | Päringute limiit ületatud | {"error": "Rate limit exceeded."} |
04 / AlustamineLehekülgedeks jagamine
Loendi lõpp-punktid tagastavad 25 kirjet lehe kohta koos standardsete objektidega links ja meta. Kogus liikumiseks lisage ?page=2.
05 / AlustamineTehisintellekti assistendi ühendus (MCP)
Ühendage Claude, Cursor või mõni muu Model Context Protocoli toetav assistent ja paluge tal lihtsate sõnadega luua tooteid, täita passe teie öeldu põhjal ja kontrollida, mis veel puudu on. See kasutab API-võtit selle õiguste ja päringupiiriga. See saab luua mustandeid ja täita välju; see ei avalda, arhiveeri ega kustuta kunagi midagi: see jääb teile rakenduses.
https://myproductpassport.eu/api/mcpclaude mcp add --transport http myproductpassport https://myproductpassport.eu/api/mcp \
--header "Authorization: Bearer pk_live_your_key"{
"mcpServers": {
"myproductpassport": {
"url": "https://myproductpassport.eu/api/mcp",
"headers": { "Authorization": "Bearer pk_live_your_key" }
}
}
}{
"mcpServers": {
"myproductpassport": {
"command": "npx",
"args": ["mcp-remote", "https://myproductpassport.eu/api/mcp", "--header", "Authorization: Bearer pk_live_your_key"]
}
}
}Pakutavad tööriistad:
| Tööriist | Mida see teeb |
|---|---|
| list_products | Tööruumi tooted, uuemad eespool, 25 lehel, koos sektori ja viimase passiga. |
| get_product | Üks toode koos andmete, sektori, regulatiivsete jaotiste ja viimase passiga. |
| list_sectors | Sektorimallid, mida toode saab kasutada (tekstiil, elektroonika, akud, vein ja muu), koos nende ID-dega. Toote sektor määrab, millised passi väljad on kohustuslikud. |
| create_product | Lisab tööruumi toote. Kasutage list_sectors väljundist sector_id väärtust. compliance_sections lisab passile regulatiivsed jaotised: gpsr, epr, france, chemicals, eudr. |
| list_passports | Tööruumi passid, uuemad eespool, 25 lehel, koos oleku (draft, published, archived), täielikkuse protsendi ja avaliku aadressiga. |
| get_passport | Üks pass: olek, versioon, täielikkuse protsent, avalik aadress ja QR-koodi lingid. |
| create_passport | Loob tootele passi mustandi. Seda ei avaldata: selle avaldab inimene rakenduses. |
| get_passport_fields | Mida pass nõuab: kohustuslike ja valikuliste väljade võtmed, iga välja tähendus (silt, kirjeldus, näide), olemasolevad väärtused ja puuduvad kohustuslikud väljad. |
| update_passport_fields | Kirjutab väljade väärtused mustandisse või avaldatud passi (avaldatud pass uuendatakse kohapeal: sama aadress, sama QR-kood). Võtmed get_passport_fields väljundist; tühi tekst eemaldab väärtuse. Kirjutage ainult fakte, mida kasutaja või tema dokumendid esitavad. |
| get_compliance | Passi täielikkus: protsent, olek ja veel puuduvad kohustuslikud väljad. |
06 / Lõpp-punktidKonto
/me
Tagastab autenditud konto, selle tellimuse taseme ja kui suur osa toodete limiidist on kasutatud. Kasulik ühenduse kontrollimiseks.
curl https://myproductpassport.eu/api/v1/me \
-H "Authorization: Bearer pk_your_key"{
"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 / Lõpp-punktidTooted
/products
nõuab products:read Loetleb teie tööruumi tooted, uusimad eespool, 25 lehe kohta. Iga toode sisaldab oma sektorit ja viimase passi kokkuvõtet.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| page | integer | Lehekülje number. |
curl "https://myproductpassport.eu/api/v1/products?page=1" \
-H "Authorization: Bearer pk_your_key"{
"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 }
}/products
nõuab products:write Loob ühe toote. Tagastab 403, kui paketi toodete limiit on täis.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| name | string | nõutav | Toote nimi, kuni 255 tähemärki. |
| sku | string | Teie sisemine SKU, kuni 100 tähemärki. | |
| gtin | string | GTIN-8, 12, 13 või 14 (ainult numbrid). | |
| brand | string | Avalikul passil kuvatav kaubamärk. | |
| description | string | Kuni 2000 tähemärki. | |
| category | string | Vabatekstiline kategooria. Vaikimisi "general". | |
| sector_id | integer | Sektori ID, mis valib passi väljade malli. | |
| country_of_origin | string | Riigikood, nt "PT". | |
| weight | number | Netokaal. | |
| weight_unit | string | Üks väärtustest kg, g, lb, oz. Vaikimisi kg. | |
| materials | array | Objektid {name, percentage 0-100}. | |
| has_packaging | boolean | Lisab passile pakendimalli väljad (võtmed algavad pkg_), sama QR-koodi alla. |
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}
]
}'{
"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"
}
}/products/bulk
nõuab products:write Loob ühe päringuga kuni 100 toodet. Kogu partii lükatakse koodiga 403 tagasi, kui see ületaks teie järelejäänud toodete limiiti. Tuhandete toodetega kataloogide puhul kutsuge seda lõpp-punkti tsüklis või kasutage rakenduses CSV-importi.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| products | array | nõutav | 1–100 tooteobjekti samade väljadega nagu „Loo toode“ (ilma materjalideta). |
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}
]
}'{
"message": "2 product(s) created.",
"products": [
{ "id": 514, "name": "PSL-BT-122000", "status": "active" },
{ "id": 515, "name": "PSL-BT-123000", "status": "active" }
]
}/products/{id}
nõuab products:read Tagastab ühe toote koos selle sektori ja viimase passi kokkuvõttega. 404, kui ID pole teie tööruumis.
curl https://myproductpassport.eu/api/v1/products/512 \
-H "Authorization: Bearer pk_your_key"/products/{id}
nõuab products:write Uuendab toodet osaliselt. Saatke ainult väljad, mida soovite muuta; väljade loend on sama mis Loo toode.
curl -X PUT https://myproductpassport.eu/api/v1/products/512 \
-H "Authorization: Bearer pk_your_key" \
-H "Content-Type: application/json" \
-d '{"brand": "Northloom"}'/products/{id}
nõuab products:write Kustutab toote taastatavalt. Toote avaldatud passid töötavad edasi, nii et prinditud QR-koodid ei jää kunagi ilma lehte.
curl -X DELETE https://myproductpassport.eu/api/v1/products/512 \
-H "Authorization: Bearer pk_your_key"{ "message": "Product deleted." }08 / Lõpp-punktidPassid
/passports
nõuab passports:read Loetleb passid, uusimad eespool, 25 lehe kohta, koos tootekokkuvõtte ja kõigi passiväljadega.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| page | integer | Lehekülje number. |
curl https://myproductpassport.eu/api/v1/passports \
-H "Authorization: Bearer pk_your_key"{
"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 }
}/products/{productId}/passports
nõuab passports:write Loob tootele passimustandi, eeltäites väljad tooteandmetest ja sektori mallist. Tagastab mustandi koos selle vastavusskooriga. Kui tootel on juba aktiivne pass, tagastatakse 409 koos selle passiga: parandage seda päringuga PUT /passports/{id}/fields, mis säilitab selle aadressi ja QR-koodi.
curl -X POST https://myproductpassport.eu/api/v1/products/512/passports \
-H "Authorization: Bearer pk_your_key"/passports/{id}
nõuab passports:read Tagastab ühe passi koos toote, väljade, avaliku URL-i ja GS1 Digital Linkiga.
curl https://myproductpassport.eu/api/v1/passports/96 \
-H "Authorization: Bearer pk_your_key"/passports/{id}/publish
nõuab passports:publish Avaldab passimustandi, tehes selle avaliku lehe ja QR-koodi kättesaadavaks. Avaldada saab ainult mustandeid; kõige muu puhul tagastatakse 404.
curl -X POST https://myproductpassport.eu/api/v1/passports/96/publish \
-H "Authorization: Bearer pk_your_key"/passports/{id}/archive
nõuab passports:publish Arhiveerib passi ja eemaldab selle avaliku lehe kasutusest.
curl -X POST https://myproductpassport.eu/api/v1/passports/96/archive \
-H "Authorization: Bearer pk_your_key"/passports/bulk-publish
nõuab passports:publish Avaldab ühe päringuga kuni 50 passimustandit ja annab tulemused passide kaupa, nii et üks tõrge ei katkesta kunagi kogu partiid.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| passport_ids | array | nõutav | 1–50 passi ID-d. |
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]}'{
"published": 2,
"failed": 1,
"published_ids": [96, 97],
"errors": [
{ "id": 98, "error": "Compliance below the publishing threshold." }
]
}/passports/{id}/successor
nõuab passports:write Korduskasutuseks ette valmistatud, ümber kasutatud või taastoodetud toote puhul nõuab akumäärus (artikli 77 lõige 7) uut passi, mis on seotud algsega. See loob uue tootekirje ja passimustandi, mis on eeltäidetud avaldatud passist ja lingitud selle juurde. Algne pass jääb aktiivseks ja mõlemad passid näitavad linki. Avaldage uus pass päringuga POST /passports/{id}/publish.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| stage | string | nõutav | prepared_for_reuse, repurposed või remanufactured. |
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" }'{
"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": []
}
}
}/passports/{id}/fields
nõuab passports:read Tagastab väljavõtmed, mida passi sektori mall nõuab (kohustuslikud ja valikulised), hetkel talletatud väärtused ja puuduolevad kohustuslikud võtmed. Kasutage seda PUT /passports/{id}/fields sisu koostamiseks.
curl https://myproductpassport.eu/api/v1/passports/96/fields \
-H "Authorization: Bearer pk_your_key"{
"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", "...": "..." }
}/passports/{id}/fields
nõuab passports:write Kirjutab mis tahes väljaväärtuste komplekti mustandisse või avaldatud passi: aku jaoks kogu XIII lisa komplekti, sektorimalli väljad või teie enda võtmed. Saatke ainult võtmed, mida soovite muuta; null või tühi väärtus eemaldab välja. Avaldatud passi uuendatakse kohapeal, selle aadress ja QR-kood ei muutu ning masintõlked genereeritakse uuesti. Vastavus hinnatakse uuesti. Mustandit see päring ei avalda; kasutage POST /passports/{id}/publish.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| fields | object | nõutav | Väljavõtme ja väärtuse vastavus. Võtmed on väiketähed, numbrid ja alakriipsud; väärtused kuni 5000 tähemärki. Kuni 200 võtit päringu kohta. |
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%"
}
}'{
"message": "3 field(s) changed, 0 removed.",
"changed": ["carbon_footprint", "carbon_footprint_class", "recycled_content"],
"removed": [],
"passport": { "id": 96, "status": "published", "compliance_percentage": 92 }
}/passports/{id}/state-of-health
nõuab passports:write Saadab selle aku enda andmed (määruse (EL) 2023/1542 XIII lisa punkt 4) avaldatud passile, BMS- ja autopargisüsteemide jaoks. Saatke mis tahes alamhulk allolevatest väljadest; vastavust kontrollitakse pärast uuendust uuesti. Neid väärtusi näidatakse ainult passi omaniku kinnitatud vaatajatele (artikli 77 lõige 2), mitte kunagi avalikul lehel. capacity_fade, power_capability ja internal_resistance salvestatakse selle aku praeguste näitudena (current_*), eraldi mudeli algväärtustest.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| state_of_health | string | nt "97% 412 tsükli juures". | |
| state_of_certified_energy | string | Järelejäänud sertifitseeritud energia (elektrisõidukite akud). | |
| battery_status | string | original, repurposed, re-used, remanufactured või waste. | |
| capacity_fade | string | Senine mahtuvuse vähenemine. Salvestatakse kui current_capacity_fade. | |
| power_capability | string | Praegune võimsusvõime. Salvestatakse kui current_power_capability. | |
| internal_resistance | string | Mõõdetud sisetakistus. Salvestatakse kui current_internal_resistance. | |
| use_data | string | Tsüklid, negatiivsed sündmused, temperatuur ja laetuse tase, kuni 5000 tähemärki. |
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"
}'{
"message": "2 field(s) updated.",
"updated_fields": ["state_of_health", "current_capacity_fade"],
"passport": { "id": 96, "status": "published", "compliance_percentage": 100 }
}/passports/{id}/units
nõuab passports:write Iga aku vajab oma passi (määrus (EL) 2023/1542, artikli 77 lõige 1). Registreerige ühe päringuga kuni 10 000 ühe mudeli akut, igaüks oma seerianumbriga (kuni 20 tähte, numbrit, punkti, sidekriipsu või alakriipsu) ning soovi korral manufacturing_date, battery_status ja XIII lisa punkti 4 andmetega. Olemasolevad seerianumbrid uuendatakse; välja jäetud väärtused säilivad. Kui tootel on GTIN, on iga aku aadressiks selle GS1 Digital Link, /01/{gtin}/21/{serial}. Punkti 4 andmeid näidatakse ainult omaniku kinnitatud vaatajatele.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| units[].serial | string | nõutav | Aku seerianumber. |
| units[].manufacturing_date | string | Kuu ja aasta, nt "2026-09". | |
| units[].battery_status | string | original või waste. Oleku muutumisel on vaja sel hetkel mõõdetud väärtusi (XIII lisa punkti 4 alapunkt a); waste puhul on vaja ka välju responsible_party_type (producer, pro või waste_operator), responsible_party_name ja responsible_party_contact (artikli 77 lõige 7). recycled koos väljadega recycled_at ja recycler_name lõpetab passi (artikli 77 lõige 8). Ümberotstarbestatud, korduskasutatud või ümbertöödeldud aku saab uue passi: POST /passports/{id}/units/{serial}/successor. | |
| units[].state_of_health | string | Samuti 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 ja use_data. |
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%"}]}'{ "created": 1, "updated": 0, "skipped": 0, "errors": [] }/passports/{id}/units/{serial}
nõuab passports:write Akuhaldussüsteemile, mis saadab ühe aku andmeid: mis tahes järgmistest: battery_status, state_of_health, state_of_certified_energy, current_capacity_fade, current_power_capability, current_internal_resistance ja use_data. Lugemiseks kasutage GET-päringut samale teele või loendi jaoks GET /passports/{id}/units (per_page kuni 500).
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"}'{
"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" } }
}/passports/{id}/units/{serial}/snapshots
nõuab passports:read XIII lisa punkti 4 alapunkt a nõuab jõudlus- ja vastupidavusväärtusi aku turule laskmisel ja selle oleku muutumisel. Need näidud säilitatakse muutmata kujul, olenemata sellest, mida hiljem saadetakse; perioodilise näidu säilitamiseks saatke PATCH-päringuga ka record_snapshot: true.
curl https://myproductpassport.eu/api/v1/passports/96/units/KES-00001/snapshots \
-H "Authorization: Bearer pk_your_key"{
"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" }
]
}/passports/{id}/units/{serial}/successor
nõuab passports:write Artikli 77 lõige 7: korduskasutuseks ette valmistatud, ümberotstarbestatud või ümbertöödeldud akul on uus pass, mis on lingitud algse aku passiga. See registreerib aku uuesti uue seerianumbri ja identifikaatoriga teie tööruumi teise elu akumudeli all (kui seda veel pole, luuakse see sellest mudelist), lingib need kaks ja säilitab muutmise ajal mõõdetud väärtused. Algne aku säilitab oma passi. Täitke ja avaldage teise elu mudel päringuga POST /passports/{id}/publish.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| stage | string | nõutav | prepared_for_reuse, repurposed või remanufactured. |
| values | object | nõutav | Muutuse ajal mõõdetud väärtused: vähemalt üks väärtustest remaining_capacity_ah või current_capacity_fade, current_power_capability või power_fade, current_internal_resistance või internal_resistance_increase ning expected_lifetime_cycles_remaining (IV lisa A osa). |
| serial | string | Uus seerianumber. Vaikimisi: algne seerianumber koos järelliitega -RU, -RP või -RM. | |
| measured_at | string | Millal väärtused mõõdeti. | |
| member_state | string | Selle liikmesriigi kahetäheline kood, kus tervislikku seisundit testiti (artikli 73 lõike 1 punkt a). | |
| target_passport_id | integer | Selle akumudeli olemasolev teise elu mudel, mille alla see registreerida. |
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"}}'{
"data": {
"serial": "KES-00001-RP", "battery_status": "repurposed", "passport_id": 131,
"lineage": { "originals": [{ "serial": "KES-00001", "passport_id": 96, "stage": "repurposed" }], "successors": [] }
}
}/passports/{id}/registry
nõuab passports:write Salvestab passile ELi DPP registrisse esitamise ja selle tulemuse: oleku, korrelatsiooni-ID, registri tagastatud registreerimistunnuse ja valikulise lingi DPP teenusepakkuja hostitud varukoopiale. Registreerimine ise toimub komisjoni registris (veebivorm või faili üleslaadimine); see hoiab tulemuse passi juures. GET /passports/{id} tagastab sama ploki välja registry all.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| status | string | not_submitted, submitted, registered või failed. | |
| product_group | string | Registri tooterühm, näiteks batteries. | |
| granularity | string | mudel, partii või üksus. | |
| upi | string | Kordumatu tootetunnus https-URL-ina. Vaikimisi avaliku passi URL. | |
| correlation_id | string | Registri poolt esitamisel määratud korrelatsiooni-ID. | |
| uri | string | Registri tagastatud registreerimistunnus. | |
| backup_url | string | https-link DPP teenusepakkuja majutatud varukoopiale. | |
| submitted_at | date | Esitamise kuupäev. | |
| registered_at | date | Registreerimise kuupäev. | |
| error | string | Ebaõnnestunud esitamise veakirjeldus. |
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"
}'{
"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"
}
}
}/passports/{id}/qr
nõuab passports:read Passi QR-kood failina: svg (vaikimisi), png (brändiga, trükivalmis) või pdf (etiketileht).
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| format | string | svg | png | pdf |
curl "https://myproductpassport.eu/api/v1/passports/96/qr?format=png" \
-H "Authorization: Bearer pk_your_key" -o passport-96.png09 / Lõpp-punktidVastavus
/passports/{passportId}/compliance
nõuab passports:read Teeb passile reaalajas vastavuskontrolli selle sektori kohustuslike väljade suhtes ja teatab täpselt, mis puudub.
curl https://myproductpassport.eu/api/v1/passports/96/compliance \
-H "Authorization: Bearer pk_your_key"{
"data": {
"passport_id": 96,
"product_name": "Alpine Merino Crew Sweater",
"status": "compliant",
"percentage": 100,
"completed_fields": 12,
"total_fields": 12,
"missing_fields": []
}
}10 / Lõpp-punktidSektorid
/sectors
Sektorid, mille alla toote saab liigitada: platvormi süsteemisektorid ja teie tööruumis määratletud sektorid. Kasutage toodete loomisel id-d ja passi väljade kirjutamisel väljavõtmeid.
curl https://myproductpassport.eu/api/v1/sectors \
-H "Authorization: Bearer pk_your_key"{
"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 / Lõpp-punktidDokumendid
/products/{productId}/documents
nõuab products:read Tootele lisatud vastavusdeklaratsioonid, katsearuanded ja sertifikaadid. Avalik dokument on lingitud toote igast avaldatud passist.
curl https://myproductpassport.eu/api/v1/products/512/documents \
-H "Authorization: Bearer pk_your_key"{
"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"
}
]
}/products/{productId}/documents
nõuab products:write Mitmeosaline üleslaadimine. PDF, Word, Excel, CSV, tekst, PNG ja JPEG kuni 10 MB, kuni 20 toote kohta. Tekst eraldatakse taustal.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| file | file | nõutav | Dokument. |
| is_public | boolean | Kuva avalikul passil (vaikimisi false). |
curl -X POST https://myproductpassport.eu/api/v1/products/512/documents \
-H "Authorization: Bearer pk_your_key" \
-F "[email protected]" \
-F "is_public=1"/products/{productId}/documents/{id}
nõuab products:write Lülitab, kas dokument on avalikult passilt lingitud.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| is_public | boolean | nõutav |
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}'/products/{productId}/documents/{id}
nõuab products:write Eemaldab faili ja selle lingi passiga.
curl -X DELETE https://myproductpassport.eu/api/v1/products/512/documents/31 \
-H "Authorization: Bearer pk_your_key"{ "message": "Document deleted." }12 / Lõpp-punktidTarneahel
/products/{productId}/supply-chain
nõuab products:read Toote passil näidatud sammud järjekorras.
curl https://myproductpassport.eu/api/v1/products/512/supply-chain \
-H "Authorization: Bearer pk_your_key"/products/{productId}/supply-chain
nõuab products:write Asendab kõik sammud teie saadetud loendiga, saadetud järjekorras. Tühjendamiseks saatke tühi loend. Sammutüübid: raw_material, processing, manufacturing, assembly, packaging, distribution.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| steps | array | nõutav | Kuni 50 sammu. |
| steps[].step_type | string | nõutav | |
| steps[].supplier_name | string | nõutav | |
| steps[].supplier_location | string | ||
| steps[].supplier_country | string | ISO 3166-1 alpha-2. | |
| steps[].lat / lng | number | ||
| steps[].description | string | ||
| steps[].certifications | array | ||
| steps[].date | date |
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 / Lõpp-punktidTõlked
/passports/{id}/translations
nõuab passports:read Iga tõlgitud välja väärtus keelte kaupa koos allikaga: auto (masintõlge, tehtud avaldamisel) või manual.
curl https://myproductpassport.eu/api/v1/passports/96/translations \
-H "Authorization: Bearer pk_your_key"{
"data": {
"passport_id": 96,
"available_locales": ["bg", "cs", "da", "de", "..."],
"translations": {
"de": {"care_instructions": {"value": "Kalt waschen", "source": "manual"}}
}
}
}/passports/{id}/translations/{locale}
nõuab passports:write Määrab ühe keele tõlked väljavõtme kaupa. Käsitsi tõlget ei kirjutata kunagi masinaga üle. Tõlke eemaldamiseks saatke tühi string.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| fields | object | nõutav | field_key: tõlgitud väärtus |
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"}}'{ "message": "1 translation(s) written, 0 removed.", "locale": "de", "written": 1, "removed": 0 }14 / Lõpp-punktidTerviklikkus ja eksport
/passports/{id}/integrity
nõuab passports:read Passi iga avaldatud olek räsiahelaga seotud, Ed25519-allkirjaga kirjena: sõrmejälg (SHA-256), ahela väärtus ja allkiri. Avalikud võtmed asuvad aadressil /.well-known/mpp-integrity-keys.json, nii et igaüks saab ahelat kontrollida.
curl https://myproductpassport.eu/api/v1/passports/96/integrity \
-H "Authorization: Bearer pk_your_key"{ "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": [] } }/passports/{id}/integrity/{sequence}
nõuab passports:read Täielik kirje sellisena, nagu see allkirjastati, koos hetktõmmisega: mida pass sel hetkel sisaldas, kuni iga lisatud faili räsini.
curl https://myproductpassport.eu/api/v1/passports/96/integrity/1 \
-H "Authorization: Bearer pk_your_key"/passports/{id}/epcis
nõuab passports:read Pass GS1 EPCIS 2.0 JSON-LD dokumendina: toote kasutuselevõtt, iga tarneahela etapp vaatlusena, üksikud akud ning teise elu pass teisendusena. Kui tootel on GTIN, on identifikaatorid GS1 Digital Link URI-d.
curl https://myproductpassport.eu/api/v1/passports/96/epcis \
-H "Authorization: Bearer pk_your_key"15 / Lõpp-punktidTarnijapäringud
/passports/{id}/supplier-requests
nõuab passports:write Saadab tarnijale e-kirjaga privaatse lingi, et ta saaks teie valitud väljad oma keeles täita. Passi ei jõua midagi enne, kui keegi teie tööruumist selle kinnitab.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| supplier_name | string | nõutav | |
| supplier_email | string | nõutav | |
| field_keys | array | nõutav | Väljade võtmed passi mallist. |
| locale | string | E-kirja ja vormi keel, nt de. | |
| due_at | date | Vastamise tähtaeg; vaikimisi 14 päeva. | |
| message | string |
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"}'/passports/{id}/supplier-requests
nõuab passports:read Kõik passi päringud koos nende olekuga.
curl https://myproductpassport.eu/api/v1/passports/96/supplier-requests \
-H "Authorization: Bearer pk_your_key"/supplier-requests/{id}
nõuab passports:read Üks päring koos tarnija vastuste, märkuse ja lisatud failide nimedega.
curl https://myproductpassport.eu/api/v1/supplier-requests/12 \
-H "Authorization: Bearer pk_your_key"16 / Lõpp-punktidMüügijärgne teenindus
/passports/{id}/items
nõuab items:write Andke toote eksemplaridele (mis tahes sektor peale akude, mis kasutavad /units) oma seerianumber: igaüks saab oma aadressi ja QR-koodi, etiketi jaoks peidetud ehtsuskoodi ning omanik saab selle registreerida. Saatke kuni 10 000 eksemplari või vahemik. GTIN-iga on aadress GS1 Digital Link /01/{gtin}/21/{serial}.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| items[].serial | string | nõutav | Kuni 20 tähte, numbrit, punkti, sidekriipsu või alakriipsu. |
| items[].batch | string | Partii, kuni 20 märki. | |
| items[].manufactured_on | string | Tootmiskuupäev, AAAA-KK-PP. | |
| range | object | Items asemel: prefix, start, count, digits ja batch, näiteks SN-00001 kuni SN-00500. |
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"}}'{ "created": 500, "updated": 0, "skipped": 0, "over_limit": 0, "errors": [] }/passports/{id}/items/{serial}
nõuab items:read Eksemplar koos aadressi, oleku, registreeritusega ja garantii lõpukuupäevaga, ehtsuskontrollide ja ajalooga. Võti õigusega items:write saab ka printimiseks peidetud koodi. GET /passports/{id}/items loetleb need (filtrid status ja batch, per_page kuni 500).
curl https://myproductpassport.eu/api/v1/passports/96/items/SN-00001 \
-H "Authorization: Bearer pk_your_key"{
"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" } ] }
}/passports/{id}/items/{serial}
nõuab items:write Määrake olekuks stolen või recalled ja selle leht hoiatab kõiki, kes seda skannivad, koos teie status_note-iga; varastatud eksemplari ei saa registreerida. retired lülitab lehe välja. Muuta saab ka batch ja manufactured_on.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| status | string | active, stolen, recalled või retired. | |
| status_note | string | Näidatakse eksemplari lehel, kuni 500 märki. |
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."}'/owner-registrations
nõuab aftersales:read Inimesed, kes on registreerinud teie tooteid: nimi, e-post, riik, ostukuupäev, müüja, garantii kuupäevad ja kas nad on nõustunud uudiseid ja pakkumisi saama (marketing_consent=1 loetleb ainult need). Vaikimisi aktiivsed registreeringud; status=pending, transferred või ended ülejäänute jaoks; since= kuupäevast hilisemate muudatuste jaoks.
curl "https://myproductpassport.eu/api/v1/owner-registrations?marketing_consent=1&since=2026-10-01" \
-H "Authorization: Bearer pk_your_key"/service-requests
nõuab aftersales:read Remondid, garantiinõuded, tagastused, varuosad ja küsimused teie passidest, uusimad eespool, filtritega status ja type. GET /service-requests/{reference} lisab vestluse.
curl "https://myproductpassport.eu/api/v1/service-requests?status=new" \
-H "Authorization: Bearer pk_your_key"/service-requests/{reference}/replies
nõuab aftersales:write Teie vastus saadetakse kliendile e-posti teel koos lingiga tema taotluse lehele, tema keeles. internal: true lisab märke, mida näeb ainult teie meeskond. PATCH /service-requests/{reference} koos olekuga viib selle edasi (klienti teavitatakse, kui see on töös, lahendatud või suletud).
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| body | string | nõutav | Vastus, kuni 5000 märki. |
| internal | boolean | Märge teie meeskonnale vastuse asemel. | |
| status | string | new, in_progress, waiting, resolved või closed. |
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 / Lõpp-punktidHulgimuudatused ja pildid
/products/bulk-fields
nõuab products:write Määrab tooteandme või passi välja väärtuse kuni 5000 tootele. mode on set, fill (ainult tühjadele) või clear. Päringu käigus uuendatakse kuni 100 toodet; suuremad hulgad pannakse järjekorda (202).
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| product_ids | array | nõutav | |
| target | string | nõutav | product | field |
| key | string | nõutav | |
| value | string | ||
| mode | string | set | fill | clear |
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"}'{ "data": { "changed": 2, "skipped": 1, "errors": [] } }/products/{id}/images
nõuab products:write JPG-, PNG- või WebP-faili mitmeosaline üleslaadimine (kuni 15MB, 8 pilti toote kohta). Esimene pilt on avaliku passi kaanepilt.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| image | file | nõutav | |
| alt | string | Pildi kirjeldus. |
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"/products/{id}/images/order
nõuab products:write Edastage image_ids soovitud järjekorras; esimesest saab kaanepilt.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| image_ids | array | nõutav |
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]}'/products/{id}/images/{imageId}
nõuab products:write Eemaldab pildi ja selle faili.
curl -X DELETE https://myproductpassport.eu/api/v1/products/12/images/31 \
-H "Authorization: Bearer pk_your_key"18 / Lõpp-punktidVeebihaagid
/webhooks
nõuab webhooks:manage Teie tööruumi jaoks registreeritud lõpp-punktid. Saladusi siin ei ole; saladuse nägemiseks laadige üks lõpp-punkt.
curl https://myproductpassport.eu/api/v1/webhooks \
-H "Authorization: Bearer pk_your_key"/webhooks
nõuab webhooks:manage Registreerib ühe või mitme sündmuse jaoks avaliku HTTPS-URL-i. Vastus sisaldab allkirjastamise saladust. Privaatsed või sisevõrgu hostid lükatakse tagasi.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| url | string | nõutav | |
| events | array | nõutav | Mõni allpool loetletud sündmustest. |
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"]}'{
"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"
}
}/webhooks/{id}
nõuab webhooks:manage curl https://myproductpassport.eu/api/v1/webhooks/3 \
-H "Authorization: Bearer pk_your_key"/webhooks/{id}
nõuab webhooks:manage Muutke URL-i või sündmusi või peatage ja jätkake lõpp-punkti. Jätkamine nullib tõrgete arvu; lõpp-punkt peatatakse automaatselt pärast 10 järjestikust ebaõnnestunud edastust.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| url | string | ||
| events | array | ||
| is_active | boolean |
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}'/webhooks/{id}/test
nõuab webhooks:manage Paneb järjekorda webhook.test edastuse, et saaksite kontrollida vastuvõtjat ja allkirjakoodi.
curl -X POST https://myproductpassport.eu/api/v1/webhooks/3/test \
-H "Authorization: Bearer pk_your_key"{ "message": "Test delivery queued." }/webhooks/{id}/deliveries
nõuab webhooks:manage Viimased edastused, uusimad eespool, koos HTTP-olekuga, mille teie lõpp-punkt tagastas, ja vastuse esimese 500 tähemärgiga.
| Parameeter | Tüüp | Kirjeldus | |
|---|---|---|---|
| per_page | integer | Kuni 100. |
curl https://myproductpassport.eu/api/v1/webhooks/3/deliveries \
-H "Authorization: Bearer pk_your_key"/webhooks/{id}
nõuab webhooks:manage curl -X DELETE https://myproductpassport.eu/api/v1/webhooks/3 \
-H "Authorization: Bearer pk_your_key"{ "message": "Webhook endpoint deleted." }19 / SündmusedVeebihaagid
Päringute asemel registreerige rakenduses veebihaagi lõpp-punkt (leht Webhooks, saadaval alates Starter-paketist) ja MyProductPassport saadab sündmuste toimumisel teie URL-ile JSON-i POST-päringuga:
| Sündmus | Käivitub, kui |
|---|---|
| product.created | Toode luuakse (rakendus, API või CSV-import) |
| product.updated | Toodet uuendatakse |
| product.deleted | Toode kustutatakse |
| passport.created | Pass luuakse |
| passport.published | Pass avaldatakse |
| passport.archived | Pass arhiveeritakse |
| supplier_request.submitted | Tarnija saadab teie küsitud teabe |
| owner.registered | Omanik kinnitab oma registreeringu |
| owner.transferred | Eksemplar läheb uuele registreeritud omanikule |
| service_request.created | Klient saadab passist teenindustaotluse |
| service_request.updated | Teenindustaotlus saab vastuse või uue oleku |
| item.status_changed | Eksemplar märgitakse varastatuks, tagasi kutsutuks või kasutusest kõrvaldatuks või märgistus eemaldatakse |
| item.verification_failed | Turvasildi lugemine ebaõnnestub, valed koodid kuhjuvad või seerianumber ilmub liiga paljudes kohtades |
| webhook.test | Saadate rakendusest testedastuse |
Iga edastus on JSON-ümbrik: edastuse ID (korduskatsetel saadetakse sama ID, et saaksite duplikaadid eemaldada), sündmus, katse number, ajatempel ja sündmuse andmed. Passisündmused sisaldavad passi uuid-d ja avalikku URL-i, nii et teist päringut on harva vaja:
{
"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"}
}
}Päised sisaldavad sündmuse nime, edastuse ID-d, Unixi ajatemplit ja töötlemata sisu HMAC-allkirja, et saaksite kontrollida, et see tuli meilt, ja korduseid tagasi lükata:
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>Vastake 10 sekundi jooksul mis tahes 2xx-koodiga. Kõike muud proovitakse uuesti viis korda umbes 90 minuti jooksul (30 s, 1 min, 5 min, 15 min, 1 h); pärast 10 järjestikust ebaõnnestumist peatatakse lõpp-punkt, kuni selle uuesti lubate.
$expected = 'sha256=' . hash_hmac('sha256', $rawBody, $endpointSecret);
abort_unless(hash_equals($expected, $request->header('X-MPP-Signature')), 401);