API rokasgrāmata
Viss MyProductPassport ir pieejams, izmantojot ar atslēgu autentificētu REST API: izveidojiet produktus, ģenerējiet un publicējiet digitālās produktu pases, sūtiet reāllaika bateriju datus un pārbaudiet atbilstību tieši no savas ERP, PIM vai būvēšanas plūsmas.
01 / Darba sākšanaAutentifikācija
Katrs pieprasījums tiek autentificēts ar API atslēgu, kas nodota kā Bearer marķieris. Atslēgas tiek izveidotas lietotnē sadaļā API atslēgas, tiek parādītas vienreiz un glabātas jaucētā veidā; katrai atslēgai ir savs atļauju kopums, neobligāts atļauto IP saraksts un neobligāts derīguma termiņš. Atslēgas var mainīt bez dīkstāves.
Authorization: Bearer pk_your_api_keyAtļaujas tiek piešķirtas katrai atslēgai, tāpēc integrācija saņem tikai to, kas tai vajadzīgs:
| Atļauja | Piešķirtās piekļuves |
|---|---|
| products:read | Produktu lasīšana |
| products:write | Produktu izveide, atjaunināšana un dzēšana |
| passports:read | Pasu lasīšana |
| passports:write | Ģenerēt pases |
| passports:publish | Pasu publicēšana un arhivēšana |
| webhooks:manage | Tīmekļa āķu galapunktu izveide, testēšana un noņemšana |
| 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 / Darba sākšanaPieprasījumu limiti
Limiti ir katrai atslēgai, minūtē, un tos nosaka plāns:
| Plāns | Pieprasījumi / minūtē |
|---|---|
| Bez maksas | 30 |
| Micro | 60 |
| E-etiķete | 60 |
| Starter | 120 |
| Professional | 300 |
| Business | 600 |
| Battery | 600 |
Katrā atbildē ir galvenes X-RateLimit-Limit un X-RateLimit-Remaining. Pārsniedzot limitu, tiek atgriezts 429:
{ "error": "Rate limit exceeded.", "limit": 300, "retry_after": 60 }03 / Darba sākšanaKļūdas
Kļūdas ir JSON formātā ar parastu statusa kodu. Biežākās:
| Statuss | Nozīme | Satura piemērs |
|---|---|---|
| 401 | Trūkstoša, nederīga, atsaukta vai beigusies atslēga | {"error": "Invalid or revoked API key."} |
| 403 | Atslēgai trūkst atļaujas, IP adrese nav atļauto sarakstā vai sasniegts plāna limits | {"message": "API key does not have 'products:write' permission."} |
| 404 | Resurss jūsu darbvietā neeksistē | {"message": "Not found."} |
| 422 | Validācija neizdevās | {"message": "…", "errors": {"gtin": ["…"]}} |
| 429 | Pārsniegts pieprasījumu limits | {"error": "Rate limit exceeded."} |
04 / Darba sākšanaLapošana
Saraksta galapunkti atgriež 25 vienumus lapā ar standarta objektiem links un meta. Lai pārvietotos pa kolekciju, norādiet ?page=2.
05 / Darba sākšanaMI asistenta savienotājs (MCP)
Pievienojiet Claude, Cursor vai jebkuru asistentu, kas atbalsta Model Context Protocol, un vienkāršiem vārdiem lūdziet to veidot produktus, aizpildīt pases ar to, ko jūs pastāstāt, un pārbaudīt, kas vēl trūkst. Tas izmanto API atslēgu ar tās atļaujām un pieprasījumu limitu. Tas var veidot melnrakstus un aizpildīt laukus; tas nekad neko nepublicē, nearhivē un nedzēš: tas paliek jums lietotnē.
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"]
}
}
}Piedāvātie rīki:
| Rīks | Ko tas dara |
|---|---|
| list_products | Darbvietas produkti, jaunākie vispirms, pa 25 lapā, ar nozari un jaunāko pasi. |
| get_product | Viens produkts ar datiem, nozari, regulējuma sadaļām un jaunāko pasi. |
| list_sectors | Nozaru veidnes, ko produkts var izmantot (tekstils, elektronika, baterijas, vīns un citas), ar to ID. Produkta nozare nosaka, kuri pases lauki ir obligāti. |
| create_product | Pievieno produktu darbvietai. Izmantojiet sector_id no list_sectors. compliance_sections pievieno pasei regulējuma sadaļas: gpsr, epr, france, chemicals, eudr. |
| list_passports | Darbvietas pases, jaunākās vispirms, pa 25 lapā, ar statusu (draft, published, archived), pilnīguma procentu un publisko adresi. |
| get_passport | Viena pase: statuss, versija, pilnīguma procents, publiskā adrese un QR koda saites. |
| create_passport | Izveido produktam pases melnrakstu. Tas netiek publicēts: to publicē cilvēks lietotnē. |
| get_passport_fields | Ko pase prasa: obligāto un neobligāto lauku atslēgas, ko katrs nozīmē (nosaukums, apraksts, piemērs), esošās vērtības un trūkstošie obligātie lauki. |
| update_passport_fields | Ieraksta lauku vērtības melnrakstā vai publicētā pasē (publicētā tiek atjaunināta uz vietas: tā pati adrese, tas pats QR kods). Atslēgas no get_passport_fields; tukšs teksts noņem vērtību. Rakstiet tikai faktus, ko norāda lietotājs vai viņa dokumenti. |
| get_compliance | Pases pilnīgums: procents, statuss un vēl trūkstošie obligātie lauki. |
06 / GalapunktiKonts
/me
Atgriež autentificēto kontu, tā abonementa līmeni un to, cik daudz no produktu limita ir izmantots. Noderīgi savienojuma pārbaudei.
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 / GalapunktiProdukti
/products
prasa products:read Uzskaita jūsu darbvietas produktus, jaunākos vispirms, 25 lapā. Katrā produktā ir tā nozare un jaunākās pases kopsavilkums.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| page | integer | Lapas numurs. |
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
prasa products:write Izveido vienu produktu. Atgriež 403, ja plāna produktu limits ir izsmelts.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| name | string | obligāts | Produkta nosaukums, līdz 255 rakstzīmēm. |
| sku | string | Jūsu iekšējais SKU, līdz 100 rakstzīmēm. | |
| gtin | string | GTIN-8, 12, 13 vai 14 (tikai cipari). | |
| brand | string | Publiskajā pasē redzamais zīmols. | |
| description | string | Līdz 2000 rakstzīmēm. | |
| category | string | Brīva teksta kategorija. Noklusējums "general". | |
| sector_id | integer | Nozares ID, kas izvēlas pases lauku veidni. | |
| country_of_origin | string | Valsts kods, piem., "PT". | |
| weight | number | Neto svars. | |
| weight_unit | string | Viens no kg, g, lb, oz. Noklusējums kg. | |
| materials | array | Objekti {name, percentage 0-100}. | |
| has_packaging | boolean | Pievieno pasei iepakojuma veidnes laukus (atslēgas, kas sākas ar pkg_), ar to pašu QR kodu. |
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
prasa products:write Ar vienu izsaukumu izveido līdz 100 produktiem. Visa partija tiek noraidīta ar 403, ja tā pārsniegtu atlikušo produktu limitu. Katalogiem ar tūkstošiem produktu izsauciet šo galapunktu ciklā vai izmantojiet CSV importu lietotnē.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| products | array | obligāts | 1–100 produktu objekti ar tiem pašiem laukiem kā “Izveidot produktu” (bez materiāliem). |
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}
prasa products:read Atgriež vienu produktu ar tā nozari un jaunākās pases kopsavilkumu. 404, ja ID nav jūsu darbvietā.
curl https://myproductpassport.eu/api/v1/products/512 \
-H "Authorization: Bearer pk_your_key"/products/{id}
prasa products:write Daļēji atjaunina produktu. Nosūtiet tikai laukus, kurus vēlaties mainīt; lauku saraksts ir tāds pats kā sadaļā Izveidot produktu.
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}
prasa products:write Dzēš produktu ar atjaunošanas iespēju. Produkta publicētās pases turpina darboties, tāpēc izdrukātie QR kodi nekad nepaliek bez lapas.
curl -X DELETE https://myproductpassport.eu/api/v1/products/512 \
-H "Authorization: Bearer pk_your_key"{ "message": "Product deleted." }08 / GalapunktiPases
/passports
prasa passports:read Uzskaita pases, jaunākās vispirms, 25 lapā, ar produkta kopsavilkumu un visiem pases laukiem.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| page | integer | Lapas numurs. |
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
prasa passports:write Ģenerē produktam pases melnrakstu, iepriekš aizpildot laukus no produkta datiem un nozares veidnes. Atgriež melnrakstu ar tā atbilstības vērtējumu. Produktam, kuram jau ir aktīva pase, tiek atgriezts 409 ar šo pasi: labojiet to ar PUT /passports/{id}/fields, kas saglabā tās adresi un QR kodu.
curl -X POST https://myproductpassport.eu/api/v1/products/512/passports \
-H "Authorization: Bearer pk_your_key"/passports/{id}
prasa passports:read Atgriež vienu pasi ar produktu, laukiem, publisko URL un GS1 Digital Link.
curl https://myproductpassport.eu/api/v1/passports/96 \
-H "Authorization: Bearer pk_your_key"/passports/{id}/publish
prasa passports:publish Publicē pases melnrakstu, aktivizējot tās publisko lapu un QR kodu. Publicēt var tikai melnrakstus; viss pārējais atgriež 404.
curl -X POST https://myproductpassport.eu/api/v1/passports/96/publish \
-H "Authorization: Bearer pk_your_key"/passports/{id}/archive
prasa passports:publish Arhivē pasi un izņem tās publisko lapu no aprites.
curl -X POST https://myproductpassport.eu/api/v1/passports/96/archive \
-H "Authorization: Bearer pk_your_key"/passports/bulk-publish
prasa passports:publish Ar vienu izsaukumu publicē līdz 50 pasu melnrakstiem un ziņo rezultātus katrai pasei, tāpēc viena kļūda nekad nepārtrauc partiju.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| passport_ids | array | obligāts | 1–50 pašu ID. |
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
prasa passports:write Produktam, kas sagatavots atkārtotai lietošanai, pārveidots citam mērķim vai pārražots, Bateriju regula (77. panta 7. punkts) prasa jaunu pasi, kas saistīta ar sākotnējo. Tādējādi tiek izveidots jauns produkta ieraksts un pases melnraksts, iepriekš aizpildīts no publicētās pases un saistīts ar to. Oriģināls paliek aktīvs, un abās pasēs redzama saite. Publicējiet jauno ar POST /passports/{id}/publish.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| stage | string | obligāts | prepared_for_reuse, repurposed vai 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
prasa passports:read Atgriež lauku atslēgas, ko prasa pases nozares veidne (obligātās un neobligātās), pašreizējās vērtības un to, kuras obligātās atslēgas vēl trūkst. Izmantojiet to, lai sagatavotu PUT /passports/{id}/fields saturu.
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
prasa passports:write Ieraksta jebkuru lauku vērtību kopu melnrakstā vai aktīvā pasē: baterijai pilnu XIII pielikuma kopu, nozares veidnes laukus vai jūsu pašu atslēgas. Sūtiet tikai atslēgas, kuras vēlaties mainīt; null vai tukša vērtība noņem lauku. Aktīva pase tiek atjaunināta uz vietas, tās adrese un QR kods nemainās, un tās mašīntulkojumi tiek ģenerēti no jauna. Atbilstība tiek novērtēta no jauna. Šis izsaukums melnrakstu nepublicē; izmantojiet POST /passports/{id}/publish.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| fields | object | obligāts | Lauka atslēgas un vērtības kartējums. Atslēgas ir mazie burti, cipari un apakšsvītras; vērtības līdz 5000 rakstzīmēm. Līdz 200 atslēgām vienā izsaukumā. |
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
prasa passports:write Nosūta šīs baterijas datus (Regulas (ES) 2023/1542 XIII pielikuma 4. punkts) uz publicētu pasi BMS un autoparku sistēmām. Nosūtiet jebkuru tālāk minēto lauku apakškopu; pēc atjaunināšanas atbilstība tiek pārbaudīta vēlreiz. Šīs vērtības tiek rādītas tikai pases īpašnieka apstiprinātiem skatītājiem (77. panta 2. punkts), nekad publiskajā lapā. capacity_fade, power_capability un internal_resistance tiek glabātas kā šīs baterijas pašreizējie rādījumi (current_*), atsevišķi no modeļa sākotnējām vērtībām.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| state_of_health | string | piem., "97% pēc 412 cikliem". | |
| state_of_certified_energy | string | Atlikušā sertificētā enerģija (elektrotransportlīdzekļu baterijas). | |
| battery_status | string | original, repurposed, re-used, remanufactured vai waste. | |
| capacity_fade | string | Līdzšinējais ietilpības zudums. Tiek glabāts kā current_capacity_fade. | |
| power_capability | string | Pašreizējā jaudas spēja. Tiek glabāta kā current_power_capability. | |
| internal_resistance | string | Izmērītā iekšējā pretestība. Tiek glabāta kā current_internal_resistance. | |
| use_data | string | Cikli, negatīvi notikumi, temperatūra un uzlādes stāvoklis, līdz 5000 rakstzīmēm. |
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
prasa passports:write Katrai baterijai vajadzīga sava pase (Regulas (ES) 2023/1542 77. panta 1. punkts). Ar vienu izsaukumu reģistrējiet līdz 10 000 viena modeļa baterijām, katru ar savu sērijas numuru (līdz 20 burtiem, cipariem, punktiem, defisēm vai apakšsvītrām) un pēc izvēles manufacturing_date, battery_status un tās XIII pielikuma 4. punkta datiem. Esošie sērijas numuri tiek atjaunināti; izlaistās vērtības tiek saglabātas. Ja produktam ir GTIN, katras baterijas adrese ir tās GS1 Digital Link, /01/{gtin}/21/{serial}. 4. punkta dati tiek rādīti tikai īpašnieka apstiprinātiem skatītājiem.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| units[].serial | string | obligāts | Baterijas sērijas numurs. |
| units[].manufacturing_date | string | Mēnesis un gads, piem., "2026-09". | |
| units[].battery_status | string | original vai waste. Statusa maiņai vajadzīgas tās brīdī izmērītās vērtības (XIII pielikuma 4. punkta a) apakšpunkts); statusam waste vajadzīgi arī responsible_party_type (producer, pro vai waste_operator), responsible_party_name un responsible_party_contact (77. panta 7. punkts). Statuss recycled ar recycled_at un recycler_name izbeidz pasi (77. panta 8. punkts). Citam mērķim pārveidotai, atkārtoti izmantotai vai pārražotai baterijai tiek izveidota jauna pase: POST /passports/{id}/units/{serial}/successor. | |
| units[].state_of_health | string | Arī 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 un 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}
prasa passports:write Baterijas pārvaldības sistēmai, kas sūta vienas baterijas datus: jebkurš no battery_status, state_of_health, state_of_certified_energy, current_capacity_fade, current_power_capability, current_internal_resistance un use_data. Lai nolasītu, izmantojiet GET tam pašam ceļam vai GET /passports/{id}/units sarakstam (per_page līdz 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
prasa passports:read XIII pielikuma 4. punkta a) apakšpunkts prasa veiktspējas un ilgizturības vērtības brīdī, kad baterija tiek laista tirgū, un brīdī, kad mainās tās statuss. Šie rādījumi tiek saglabāti nemainīti neatkarīgi no tā, kas tiek nosūtīts vēlāk; lai saglabātu arī periodisku rādījumu, nosūtiet record_snapshot: true ar PATCH.
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
prasa passports:write 77. panta 7. punkts: baterijai, kas sagatavota atkārtotai lietošanai, pārveidota citam mērķim vai pārražota, ir jauna pase, kas saistīta ar tās oriģinālu. Šī darbība bateriju reģistrē no jauna ar jaunu sērijas numuru un identifikatoru jūsu darbvietas otrās dzīves baterijas modelī (ja tāda vēl nav, tas tiek izveidots no šī modeļa), sasaista abas un saglabā maiņas brīdī izmērītās vērtības. Sākotnējai baterijai paliek sava pase. Pabeidziet un publicējiet otrās dzīves modeli ar POST /passports/{id}/publish.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| stage | string | obligāts | prepared_for_reuse, repurposed vai remanufactured. |
| values | object | obligāts | Izmaiņu brīdī izmērītās vērtības: vismaz viena no remaining_capacity_ah vai current_capacity_fade, no current_power_capability vai power_fade, no current_internal_resistance vai internal_resistance_increase, kā arī expected_lifetime_cycles_remaining (IV pielikuma A daļa). |
| serial | string | Jaunais sērijas numurs. Pēc noklusējuma: oriģinālais sērijas numurs ar -RU, -RP vai -RM. | |
| measured_at | string | Kad vērtības tika izmērītas. | |
| member_state | string | Tās dalībvalsts divburtu kods, kurā tika pārbaudīts veselības stāvoklis (73. panta 1. punkta a) apakšpunkts). | |
| target_passport_id | integer | Esošs šī baterijas modeļa otrās dzīves modelis, kurā to reģistrēt. |
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
prasa passports:write Saglabā pasē iesniegumu ES DPP reģistram un tā rezultātu: statusu, korelācijas ID, reģistra atgriezto reģistrācijas identifikatoru un neobligātu saiti uz DPP pakalpojumu sniedzēja mitinātu rezerves kopiju. Pati reģistrācija notiek Komisijas reģistrā (tīmekļa veidlapa vai faila augšupielāde); šis saglabā rezultātu kopā ar pasi. GET /passports/{id} atgriež to pašu bloku laukā registry.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| status | string | not_submitted, submitted, registered vai failed. | |
| product_group | string | Reģistra produktu grupa, piemēram, batteries. | |
| granularity | string | modelis, partija vai vienība. | |
| upi | string | Unikāls produkta identifikators kā https URL. Noklusējums ir publiskās pases URL. | |
| correlation_id | string | Korelācijas ID, ko reģistrs piešķir iesniegšanas brīdī. | |
| uri | string | Reģistra atgrieztais reģistrācijas identifikators. | |
| backup_url | string | https saite uz DPP pakalpojumu sniedzēja mitinātu rezerves kopiju. | |
| submitted_at | date | Iesniegšanas datums. | |
| registered_at | date | Reģistrācijas datums. | |
| error | string | Kļūdas apraksts neveiksmīgai iesniegšanai. |
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
prasa passports:read Pases QR kods kā fails: svg (noklusējums), png (ar zīmolu, gatavs drukai) vai pdf (etiķešu lapa).
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| 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 / GalapunktiAtbilstība
/passports/{passportId}/compliance
prasa passports:read Veic pases atbilstības pārbaudi reāllaikā pret tās nozares obligātajiem laukiem un precīzi ziņo, kas trūkst.
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 / GalapunktiNozares
/sectors
Nozares, kurās var iekļaut produktu: platformas sistēmas nozares un visas, ko definējusi jūsu darbvieta. Izveidojot produktus, izmantojiet id, bet, rakstot pases laukus, – lauku atslēgas.
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 / GalapunktiDokumenti
/products/{productId}/documents
prasa products:read Produktam pievienotās atbilstības deklarācijas, testu pārskati un sertifikāti. Publisks dokuments ir saistīts no katras publicētās produkta pases.
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
prasa products:write Daudzdaļu augšupielāde. PDF, Word, Excel, CSV, teksts, PNG un JPEG līdz 10 MB, ne vairāk kā 20 vienam produktam. Teksts tiek izgūts fonā.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| file | file | obligāts | Dokuments. |
| is_public | boolean | Rādīt publiskajā pasē (noklusējums 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}
prasa products:write Pārslēdz, vai dokuments ir saistīts no publiskās pases.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| is_public | boolean | obligāts |
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}
prasa products:write Noņem failu un tā saiti ar pasi.
curl -X DELETE https://myproductpassport.eu/api/v1/products/512/documents/31 \
-H "Authorization: Bearer pk_your_key"{ "message": "Document deleted." }12 / GalapunktiPiegādes ķēde
/products/{productId}/supply-chain
prasa products:read Produkta pasē parādītie soļi secīgi.
curl https://myproductpassport.eu/api/v1/products/512/supply-chain \
-H "Authorization: Bearer pk_your_key"/products/{productId}/supply-chain
prasa products:write Aizstāj visus soļus ar jūsu nosūtīto sarakstu nosūtītajā secībā. Lai notīrītu, nosūtiet tukšu sarakstu. Soļu veidi: raw_material, processing, manufacturing, assembly, packaging, distribution.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| steps | array | obligāts | Līdz 50 soļiem. |
| steps[].step_type | string | obligāts | |
| steps[].supplier_name | string | obligāts | |
| 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 / GalapunktiTulkojumi
/passports/{id}/translations
prasa passports:read Katra tulkotā lauka vērtība pa valodām ar tās avotu: auto (mašīntulkojums, izveidots publicējot) vai 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}
prasa passports:write Iestata vienas valodas tulkojumus pēc lauka atslēgas. Manuālu tulkojumu nekad nepārraksta mašīntulkojums. Lai noņemtu tulkojumu, nosūtiet tukšu virkni.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| fields | object | obligāts | field_key: tulkotā vērtība |
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 / GalapunktiIntegritāte un eksports
/passports/{id}/integrity
prasa passports:read Katrs publicētais pases stāvoklis kā jaucējķēdē saistīts, ar Ed25519 parakstīts ieraksts: nospiedums (SHA-256), ķēdes vērtība un paraksts. Publiskās atslēgas ir pieejamas /.well-known/mpp-integrity-keys.json, tāpēc ikviens var pārbaudīt ķēdi.
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}
prasa passports:read Pilns ieraksts tāds, kāds tas tika parakstīts, ieskaitot momentuzņēmumu: ko pase norādīja tajā brīdī, līdz pat katra pievienotā faila jaucējvērtībai.
curl https://myproductpassport.eu/api/v1/passports/96/integrity/1 \
-H "Authorization: Bearer pk_your_key"/passports/{id}/epcis
prasa passports:read Pase kā GS1 EPCIS 2.0 JSON-LD dokuments: vienības nodošana ekspluatācijā (commissioning), katrs piegādes ķēdes solis kā novērojums, atsevišķas baterijas un otrās dzīves pase kā transformācija. Ja produktam ir GTIN, identifikatori ir GS1 Digital Link URI.
curl https://myproductpassport.eu/api/v1/passports/96/epcis \
-H "Authorization: Bearer pk_your_key"15 / GalapunktiPiegādātāju pieprasījumi
/passports/{id}/supplier-requests
prasa passports:write Nosūta piegādātājam e-pastā privātu saiti, lai tas savā valodā aizpildītu jūsu izvēlētos laukus. Pasē nekas netiek iekļauts, kamēr kāds jūsu darbvietā to neapstiprina.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| supplier_name | string | obligāts | |
| supplier_email | string | obligāts | |
| field_keys | array | obligāts | Lauku atslēgas no pases veidnes. |
| locale | string | E-pasta un veidlapas valoda, piemēram, de. | |
| due_at | date | Atbildes termiņš; ja nav norādīts, 14 dienas. | |
| 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
prasa passports:read Visi pases pieprasījumi ar to statusu.
curl https://myproductpassport.eu/api/v1/passports/96/supplier-requests \
-H "Authorization: Bearer pk_your_key"/supplier-requests/{id}
prasa passports:read Viens pieprasījums ar piegādātāja atbildēm, piezīmi un pievienoto failu nosaukumiem.
curl https://myproductpassport.eu/api/v1/supplier-requests/12 \
-H "Authorization: Bearer pk_your_key"16 / GalapunktiPēcpārdošana
/passports/{id}/items
prasa items:write Piešķiriet produkta vienībām (jebkurā nozarē, izņemot baterijas, kas izmanto /units) savu sērijas numuru: katra saņem savu adresi un QR kodu, slēpto autentiskuma kodu etiķetei, un īpašnieks to var reģistrēt. Nosūtiet līdz 10 000 vienībām vai diapazonu. Ar GTIN adrese ir GS1 Digital Link /01/{gtin}/21/{serial}.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| items[].serial | string | obligāts | Līdz 20 burtiem, cipariem, punktiem, defisēm vai pasvītrām. |
| items[].batch | string | Partija, līdz 20 rakstzīmēm. | |
| items[].manufactured_on | string | Ražošanas datums, GGGG-MM-DD. | |
| range | object | Items vietā: prefix, start, count, digits un batch, piemēram, no SN-00001 līdz 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}
prasa items:read Vienība ar adresi, statusu, informāciju, vai tā ir reģistrēta un līdz kuram datumam ir garantija, autentiskuma pārbaudēm un vēsturi. Atslēga ar items:write saņem arī slēpto kodu drukāšanai. GET /passports/{id}/items tās uzskaita (filtri status un batch, per_page līdz 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}
prasa items:write Iestatiet statusu stolen vai recalled, un tās lapa brīdina ikvienu, kas to skenē, ar jūsu status_note; zagtu vienību nevar reģistrēt. retired izslēdz lapu. Var mainīt arī batch un manufactured_on.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| status | string | active, stolen, recalled vai retired. | |
| status_note | string | Tiek rādīts vienības lapā, līdz 500 rakstzīmēm. |
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
prasa aftersales:read Personas, kas reģistrēja jūsu produktus: vārds, e-pasts, valsts, pirkuma datums, mazumtirgotājs, garantijas datumi un vai viņi piekrita jaunumiem un piedāvājumiem (marketing_consent=1 uzskaita tikai tos). Pēc noklusējuma aktīvās reģistrācijas; status=pending, transferred vai ended pārējām; since= izmaiņām pēc datuma.
curl "https://myproductpassport.eu/api/v1/owner-registrations?marketing_consent=1&since=2026-10-01" \
-H "Authorization: Bearer pk_your_key"/service-requests
prasa aftersales:read Remonti, garantijas prasības, atpakaļpieņemšana, rezerves daļas un jautājumi no jūsu pasēm, jaunākie vispirms, ar filtriem status un type. GET /service-requests/{reference} pievieno sarunu.
curl "https://myproductpassport.eu/api/v1/service-requests?status=new" \
-H "Authorization: Bearer pk_your_key"/service-requests/{reference}/replies
prasa aftersales:write Jūsu atbilde tiek nosūtīta klientam pa e-pastu ar saiti uz viņa pieprasījuma lapu, viņa valodā. internal: true pievieno piezīmi, ko redz tikai jūsu komanda. PATCH /service-requests/{reference} ar statusu virza to tālāk (klients tiek informēts, kad tas tiek apstrādāts, atrisināts vai slēgts).
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| body | string | obligāts | Atbilde, līdz 5000 rakstzīmēm. |
| internal | boolean | Piezīme jūsu komandai atbildes vietā. | |
| status | string | new, in_progress, waiting, resolved vai 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 / GalapunktiMasveida labojumi un attēli
/products/bulk-fields
prasa products:write Iestata produkta datu vienumu vai pases lauku līdz 5000 produktiem. mode ir set, fill (tikai tur, kur vērtības nav) vai clear. Pieprasījuma laikā tiek atjaunināti līdz 100 produktiem; lielākas kopas tiek ievietotas rindā (202).
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| product_ids | array | obligāts | |
| target | string | obligāts | product | field |
| key | string | obligāts | |
| 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
prasa products:write JPG, PNG vai WebP faila multipart augšupielāde (līdz 15MB, 8 attēli vienam produktam). Pirmais attēls ir publiskās pases titulattēls.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| image | file | obligāts | |
| alt | string | Attēla apraksts. |
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
prasa products:write Norādiet image_ids vēlamajā secībā; pirmais attēls kļūst par titulattēlu.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| image_ids | array | obligāts |
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}
prasa products:write Noņem attēlu un tā failu.
curl -X DELETE https://myproductpassport.eu/api/v1/products/12/images/31 \
-H "Authorization: Bearer pk_your_key"18 / GalapunktiTīmekļa aizķeres
/webhooks
prasa webhooks:manage Jūsu darbvietai reģistrētie galapunkti. Noslēpumi šeit nav iekļauti; lai redzētu noslēpumu, iegūstiet vienu galapunktu.
curl https://myproductpassport.eu/api/v1/webhooks \
-H "Authorization: Bearer pk_your_key"/webhooks
prasa webhooks:manage Reģistrē publisku HTTPS URL vienam vai vairākiem notikumiem. Atbildē ir parakstīšanas noslēpums. Privāti vai iekšēji resursdatori tiek noraidīti.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| url | string | obligāts | |
| events | array | obligāts | Jebkurš no tālāk minētajiem notikumiem. |
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}
prasa webhooks:manage curl https://myproductpassport.eu/api/v1/webhooks/3 \
-H "Authorization: Bearer pk_your_key"/webhooks/{id}
prasa webhooks:manage Mainiet URL vai notikumus, vai apturiet un atsāciet galapunktu. Atsākšana atiestata neveiksmju skaitu; galapunkts tiek automātiski apturēts pēc 10 neveiksmīgām piegādēm pēc kārtas.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| 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
prasa webhooks:manage Ievieto rindā webhook.test piegādi, lai varētu pārbaudīt uztvērēju un paraksta kodu.
curl -X POST https://myproductpassport.eu/api/v1/webhooks/3/test \
-H "Authorization: Bearer pk_your_key"{ "message": "Test delivery queued." }/webhooks/{id}/deliveries
prasa webhooks:manage Nesenās piegādes, jaunākās vispirms, ar jūsu galapunkta atgriezto HTTP statusu un atbildes pirmajām 500 rakstzīmēm.
| Parametrs | Veids | Apraksts | |
|---|---|---|---|
| per_page | integer | Līdz 100. |
curl https://myproductpassport.eu/api/v1/webhooks/3/deliveries \
-H "Authorization: Bearer pk_your_key"/webhooks/{id}
prasa webhooks:manage curl -X DELETE https://myproductpassport.eu/api/v1/webhooks/3 \
-H "Authorization: Bearer pk_your_key"{ "message": "Webhook endpoint deleted." }19 / NotikumiTīmekļa aizķeres
Vaicājumu vietā reģistrējiet lietotnē webhook galapunktu (lapa Webhooks, pieejama no Starter plāna), un MyProductPassport notikumu brīdī sūtīs JSON ar POST uz jūsu URL:
| Notikums | Tiek aktivizēts, kad |
|---|---|
| product.created | Tiek izveidots produkts (lietotne, API vai CSV imports) |
| product.updated | Produkts tiek atjaunināts |
| product.deleted | Produkts tiek dzēsts |
| passport.created | Pase tiek ģenerēta |
| passport.published | Pase tiek publicēta |
| passport.archived | Pase tiek arhivēta |
| supplier_request.submitted | Piegādātājs nosūta pieprasīto informāciju |
| owner.registered | Īpašnieks apstiprina savu reģistrāciju |
| owner.transferred | Vienība pāriet jaunam reģistrētam īpašniekam |
| service_request.created | Klients nosūta servisa pieprasījumu no pases |
| service_request.updated | Servisa pieprasījums saņem atbildi vai jaunu statusu |
| item.status_changed | Vienība atzīmēta kā zagta, atsaukta vai izņemta no aprites, vai atzīme noņemta |
| item.verification_failed | Drošās birkas nolasījums neizdodas, nepareizi kodi uzkrājas vai sērijas numurs parādās pārāk daudzās vietās |
| webhook.test | Jūs nosūtāt testa piegādi no lietotnes |
Katra piegāde ir JSON aploksne: piegādes ID (atkārtojumos tiek sūtīts tas pats ID, lai varētu noņemt dublikātus), notikums, mēģinājuma numurs, laikspiedols un notikuma dati. Pases notikumos ir pases uuid un publiskais URL, tāpēc otrs pieprasījums reti ir vajadzīgs:
{
"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"}
}
}Galvenēs ir notikuma nosaukums, piegādes ID, Unix laikspiedols un neapstrādātā satura HMAC paraksts, lai varētu pārbaudīt, ka tas nāk no mums, un noraidīt atkārtojumus:
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>Atbildiet ar jebkuru 2xx kodu 10 sekunžu laikā. Viss pārējais tiek atkārtots piecas reizes aptuveni 90 minūtēs (30 s, 1 min, 5 min, 15 min, 1 h); pēc 10 neveiksmēm pēc kārtas galapunkts tiek apturēts, līdz to atkal iespējojat.
$expected = 'sha256=' . hash_hmac('sha256', $rawBody, $endpointSecret);
abort_unless(hash_equals($expected, $request->header('X-MPP-Signature')), 401);