Pirmais ES DPP termiņš (Baterijas): 130 dienas Nodrošiniet atbilstību tagad
Valoda
EN DE FR IT ES NL PL BG CS DA EL ET FI HR HU LT LV MT PT RO SK SL SV
Produkts
Funkcijas Pēcpārdošana Kā tas darbojas Demonstrācija Enterprise Cenas
Nozares
Visas nozares Tekstilizstrādājumi Elektronika Baterijas
Resursi
Emuārs Salīdziniet DPP programmatūru Valstu prasības Gatavības novērtējums Vides apgalvojumu pārbaude Bezmaksas lejupielādes Vārdnīca
Uzņēmums
Partneri Kontakti
Pieteikties Sākt bez maksas
Izstrādātāji / REST API

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.

v1 https://myproductpassport.eu/api/v1 Sākt bez maksas OpenAPI specifikācija ↓

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.

Pieprasījuma galvene
Authorization: Bearer pk_your_api_key
Visos plānos. API atslēgas var izveidot un lietot visos plānos, arī bezmaksas. Plāns nosaka, cik pieprasījumu minūtē atslēga drīkst sūtīt (zemāk) un cik produktu un pasu var būt darbvietā.
Testa režīms. Testa atslēga (pk_test_...) izpilda katru izsaukumu tieši tāpat kā tiešsaistes atslēga, ar tādu pašu validāciju, ID un atbildēm, un pēc tam to atceļ: nekas netiek saglabāts, netiek nosūtīts neviens e-pasts vai webhook, un netiek paturēts neviens fails. Atbildēs ir "test_mode": true un galvene X-MPP-Mode: test. Izveidojiet un testējiet integrāciju ar saviem reālajiem datiem, pēc tam nomainiet testa atslēgu pret tiešsaistes atslēgu.

Atļaujas tiek piešķirtas katrai atslēgai, tāpēc integrācija saņem tikai to, kas tai vajadzīgs:

AtļaujaPiešķirtās piekļuves
products:readProduktu lasīšana
products:writeProduktu izveide, atjaunināšana un dzēšana
passports:readPasu lasīšana
passports:writeĢenerēt pases
passports:publishPasu publicēšana un arhivēšana
webhooks:manageTīmekļa āķu galapunktu izveide, testēšana un noņemšana
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 / Darba sākšanaPieprasījumu limiti

Limiti ir katrai atslēgai, minūtē, un tos nosaka plāns:

PlānsPieprasījumi / minūtē
Bez maksas30
Micro60
E-etiķete60
Starter120
Professional300
Business600
Battery600

Katrā atbildē ir galvenes X-RateLimit-Limit un X-RateLimit-Remaining. Pārsniedzot limitu, tiek atgriezts 429:

429 Too Many Requests
{ "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:

StatussNozīmeSatura piemērs
401Trūkstoša, nederīga, atsaukta vai beigusies atslēga{"error": "Invalid or revoked API key."}
403Atslē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."}
404Resurss jūsu darbvietā neeksistē{"message": "Not found."}
422Validācija neizdevās{"message": "…", "errors": {"gtin": ["…"]}}
429Pā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ē.

Servera adrese (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 un citi klienti, kas palaiž lokālu serveri
{
  "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īksKo tas dara
list_productsDarbvietas produkti, jaunākie vispirms, pa 25 lapā, ar nozari un jaunāko pasi.
get_productViens produkts ar datiem, nozari, regulējuma sadaļām un jaunāko pasi.
list_sectorsNozaru 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_productPievieno produktu darbvietai. Izmantojiet sector_id no list_sectors. compliance_sections pievieno pasei regulējuma sadaļas: gpsr, epr, france, chemicals, eudr.
list_passportsDarbvietas pases, jaunākās vispirms, pa 25 lapā, ar statusu (draft, published, archived), pilnīguma procentu un publisko adresi.
get_passportViena pase: statuss, versija, pilnīguma procents, publiskā adrese un QR koda saites.
create_passportIzveido produktam pases melnrakstu. Tas netiek publicēts: to publicē cilvēks lietotnē.
get_passport_fieldsKo 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_fieldsIeraksta 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_compliancePases pilnīgums: procents, statuss un vēl trūkstošie obligātie lauki.
Izmēģiniet ar testa atslēgu. Ar testa atslēgu (pk_test_...) asistenta izmaiņas tiek pārbaudītas un tad atsauktas, lai redzētu, ko tas darītu, pirms dodat tam īstu atslēgu.

06 / GalapunktiKonts

GET /me

Atgriež autentificēto kontu, tā abonementa līmeni un to, cik daudz no produktu limita ir izmantots. Noderīgi savienojuma pārbaudei.

Pieprasījums
curl https://myproductpassport.eu/api/v1/me \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{
  "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

GET /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.

ParametrsVeidsApraksts
pageintegerLapas numurs.
Pieprasījums
curl "https://myproductpassport.eu/api/v1/products?page=1" \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{
  "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 prasa products:write

Izveido vienu produktu. Atgriež 403, ja plāna produktu limits ir izsmelts.

ParametrsVeidsApraksts
namestringobligātsProdukta nosaukums, līdz 255 rakstzīmēm.
skustringJūsu iekšējais SKU, līdz 100 rakstzīmēm.
gtinstringGTIN-8, 12, 13 vai 14 (tikai cipari).
brandstringPubliskajā pasē redzamais zīmols.
descriptionstringLīdz 2000 rakstzīmēm.
categorystringBrīva teksta kategorija. Noklusējums "general".
sector_idintegerNozares ID, kas izvēlas pases lauku veidni.
country_of_originstringValsts kods, piem., "PT".
weightnumberNeto svars.
weight_unitstringViens no kg, g, lb, oz. Noklusējums kg.
materialsarrayObjekti {name, percentage 0-100}.
has_packagingbooleanPievieno pasei iepakojuma veidnes laukus (atslēgas, kas sākas ar pkg_), ar to pašu QR kodu.
Pieprasījums
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}
    ]
  }'
Atbilde
{
  "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 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ē.

ParametrsVeidsApraksts
productsarrayobligāts1–100 produktu objekti ar tiem pašiem laukiem kā “Izveidot produktu” (bez materiāliem).
Pieprasījums
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}
    ]
  }'
Atbilde
{
  "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} prasa products:read

Atgriež vienu produktu ar tā nozari un jaunākās pases kopsavilkumu. 404, ja ID nav jūsu darbvietā.

Pieprasījums
curl https://myproductpassport.eu/api/v1/products/512 \
  -H "Authorization: Bearer pk_your_key"
PUT /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.

Pieprasījums
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} 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.

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

08 / GalapunktiPases

GET /passports prasa passports:read

Uzskaita pases, jaunākās vispirms, 25 lapā, ar produkta kopsavilkumu un visiem pases laukiem.

ParametrsVeidsApraksts
pageintegerLapas numurs.
Pieprasījums
curl https://myproductpassport.eu/api/v1/passports \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{
  "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 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.

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

Atgriež vienu pasi ar produktu, laukiem, publisko URL un GS1 Digital Link.

Pieprasījums
curl https://myproductpassport.eu/api/v1/passports/96 \
  -H "Authorization: Bearer pk_your_key"
POST /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.

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

Arhivē pasi un izņem tās publisko lapu no aprites.

Pieprasījums
curl -X POST https://myproductpassport.eu/api/v1/passports/96/archive \
  -H "Authorization: Bearer pk_your_key"
POST /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.

ParametrsVeidsApraksts
passport_idsarrayobligāts1–50 pašu ID.
Pieprasījums
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]}'
Atbilde
{
  "published": 2,
  "failed": 1,
  "published_ids": [96, 97],
  "errors": [
    { "id": 98, "error": "Compliance below the publishing threshold." }
  ]
}
POST /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.

ParametrsVeidsApraksts
stagestringobligātsprepared_for_reuse, repurposed vai remanufactured.
Pieprasījums
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" }'
Atbilde
{
  "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 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.

Pieprasījums
curl https://myproductpassport.eu/api/v1/passports/96/fields \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{
  "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 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.

ParametrsVeidsApraksts
fieldsobjectobligātsLauka 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ā.
Pieprasījums
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%"
    }
  }'
Atbilde
{
  "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 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.

ParametrsVeidsApraksts
state_of_healthstringpiem., "97% pēc 412 cikliem".
state_of_certified_energystringAtlikušā sertificētā enerģija (elektrotransportlīdzekļu baterijas).
battery_statusstringoriginal, repurposed, re-used, remanufactured vai waste.
capacity_fadestringLīdzšinējais ietilpības zudums. Tiek glabāts kā current_capacity_fade.
power_capabilitystringPašreizējā jaudas spēja. Tiek glabāta kā current_power_capability.
internal_resistancestringIzmērītā iekšējā pretestība. Tiek glabāta kā current_internal_resistance.
use_datastringCikli, negatīvi notikumi, temperatūra un uzlādes stāvoklis, līdz 5000 rakstzīmēm.
Pieprasījums
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"
  }'
Atbilde
{
  "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 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.

ParametrsVeidsApraksts
units[].serialstringobligātsBaterijas sērijas numurs.
units[].manufacturing_datestringMēnesis un gads, piem., "2026-09".
units[].battery_statusstringoriginal 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_healthstringArī 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.
Pieprasījums
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%"}]}'
Atbilde
{ "created": 1, "updated": 0, "skipped": 0, "errors": [] }
PATCH /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).

Pieprasījums
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"}'
Atbilde
{
  "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 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.

Pieprasījums
curl https://myproductpassport.eu/api/v1/passports/96/units/KES-00001/snapshots \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{
  "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 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.

ParametrsVeidsApraksts
stagestringobligātsprepared_for_reuse, repurposed vai remanufactured.
valuesobjectobligātsIzmaiņ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).
serialstringJaunais sērijas numurs. Pēc noklusējuma: oriģinālais sērijas numurs ar -RU, -RP vai -RM.
measured_atstringKad vērtības tika izmērītas.
member_statestringTās dalībvalsts divburtu kods, kurā tika pārbaudīts veselības stāvoklis (73. panta 1. punkta a) apakšpunkts).
target_passport_idintegerEsošs šī baterijas modeļa otrās dzīves modelis, kurā to reģistrēt.
Pieprasījums
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"}}'
Atbilde
{
  "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 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.

ParametrsVeidsApraksts
statusstringnot_submitted, submitted, registered vai failed.
product_groupstringReģistra produktu grupa, piemēram, batteries.
granularitystringmodelis, partija vai vienība.
upistringUnikāls produkta identifikators kā https URL. Noklusējums ir publiskās pases URL.
correlation_idstringKorelācijas ID, ko reģistrs piešķir iesniegšanas brīdī.
uristringReģistra atgrieztais reģistrācijas identifikators.
backup_urlstringhttps saite uz DPP pakalpojumu sniedzēja mitinātu rezerves kopiju.
submitted_atdateIesniegšanas datums.
registered_atdateReģistrācijas datums.
errorstringKļūdas apraksts neveiksmīgai iesniegšanai.
Pieprasījums
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"
  }'
Atbilde
{
  "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 prasa passports:read

Pases QR kods kā fails: svg (noklusējums), png (ar zīmolu, gatavs drukai) vai pdf (etiķešu lapa).

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

09 / GalapunktiAtbilstība

GET /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.

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

10 / GalapunktiNozares

GET /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.

Pieprasījums
curl https://myproductpassport.eu/api/v1/sectors \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{
  "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

GET /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.

Pieprasījums
curl https://myproductpassport.eu/api/v1/products/512/documents \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{
  "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 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ā.

ParametrsVeidsApraksts
filefileobligātsDokuments.
is_publicbooleanRādīt publiskajā pasē (noklusējums false).
Pieprasījums
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} prasa products:write

Pārslēdz, vai dokuments ir saistīts no publiskās pases.

ParametrsVeidsApraksts
is_publicbooleanobligāts
Pieprasījums
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} prasa products:write

Noņem failu un tā saiti ar pasi.

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

12 / GalapunktiPiegādes ķēde

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

Produkta pasē parādītie soļi secīgi.

Pieprasījums
curl https://myproductpassport.eu/api/v1/products/512/supply-chain \
  -H "Authorization: Bearer pk_your_key"
PUT /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.

ParametrsVeidsApraksts
stepsarrayobligātsLīdz 50 soļiem.
steps[].step_typestringobligāts
steps[].supplier_namestringobligāts
steps[].supplier_locationstring
steps[].supplier_countrystringISO 3166-1 alpha-2.
steps[].lat / lngnumber
steps[].descriptionstring
steps[].certificationsarray
steps[].datedate
Pieprasījums
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

GET /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.

Pieprasījums
curl https://myproductpassport.eu/api/v1/passports/96/translations \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{
  "data": {
    "passport_id": 96,
    "available_locales": ["bg", "cs", "da", "de", "..."],
    "translations": {
      "de": {"care_instructions": {"value": "Kalt waschen", "source": "manual"}}
    }
  }
}
PUT /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.

ParametrsVeidsApraksts
fieldsobjectobligātsfield_key: tulkotā vērtība
Pieprasījums
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"}}'
Atbilde
{ "message": "1 translation(s) written, 0 removed.", "locale": "de", "written": 1, "removed": 0 }

14 / GalapunktiIntegritāte un eksports

GET /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.

Pieprasījums
curl https://myproductpassport.eu/api/v1/passports/96/integrity \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{ "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} 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.

Pieprasījums
curl https://myproductpassport.eu/api/v1/passports/96/integrity/1 \
  -H "Authorization: Bearer pk_your_key"
GET /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.

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

15 / GalapunktiPiegādātāju pieprasījumi

POST /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.

ParametrsVeidsApraksts
supplier_namestringobligāts
supplier_emailstringobligāts
field_keysarrayobligātsLauku atslēgas no pases veidnes.
localestringE-pasta un veidlapas valoda, piemēram, de.
due_atdateAtbildes termiņš; ja nav norādīts, 14 dienas.
messagestring
Pieprasījums
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 prasa passports:read

Visi pases pieprasījumi ar to statusu.

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

Viens pieprasījums ar piegādātāja atbildēm, piezīmi un pievienoto failu nosaukumiem.

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

16 / GalapunktiPēcpārdošana

POST /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}.

ParametrsVeidsApraksts
items[].serialstringobligātsLīdz 20 burtiem, cipariem, punktiem, defisēm vai pasvītrām.
items[].batchstringPartija, līdz 20 rakstzīmēm.
items[].manufactured_onstringRažošanas datums, GGGG-MM-DD.
rangeobjectItems vietā: prefix, start, count, digits un batch, piemēram, no SN-00001 līdz SN-00500.
Pieprasījums
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"}}'
Atbilde
{ "created": 500, "updated": 0, "skipped": 0, "over_limit": 0, "errors": [] }
GET /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).

Pieprasījums
curl https://myproductpassport.eu/api/v1/passports/96/items/SN-00001 \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{
  "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} 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.

ParametrsVeidsApraksts
statusstringactive, stolen, recalled vai retired.
status_notestringTiek rādīts vienības lapā, līdz 500 rakstzīmēm.
Pieprasījums
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 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.

Pieprasījums
curl "https://myproductpassport.eu/api/v1/owner-registrations?marketing_consent=1&since=2026-10-01" \
  -H "Authorization: Bearer pk_your_key"
GET /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.

Pieprasījums
curl "https://myproductpassport.eu/api/v1/service-requests?status=new" \
  -H "Authorization: Bearer pk_your_key"
POST /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).

ParametrsVeidsApraksts
bodystringobligātsAtbilde, līdz 5000 rakstzīmēm.
internalbooleanPiezīme jūsu komandai atbildes vietā.
statusstringnew, in_progress, waiting, resolved vai closed.
Pieprasījums
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

PATCH /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).

ParametrsVeidsApraksts
product_idsarrayobligāts
targetstringobligātsproduct | field
keystringobligāts
valuestring
modestringset | fill | clear
Pieprasījums
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"}'
Atbilde
{ "data": { "changed": 2, "skipped": 1, "errors": [] } }
POST /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.

ParametrsVeidsApraksts
imagefileobligāts
altstringAttēla apraksts.
Pieprasījums
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 prasa products:write

Norādiet image_ids vēlamajā secībā; pirmais attēls kļūst par titulattēlu.

ParametrsVeidsApraksts
image_idsarrayobligāts
Pieprasījums
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} prasa products:write

Noņem attēlu un tā failu.

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

18 / GalapunktiTīmekļa aizķeres

GET /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.

Pieprasījums
curl https://myproductpassport.eu/api/v1/webhooks \
  -H "Authorization: Bearer pk_your_key"
POST /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.

ParametrsVeidsApraksts
urlstringobligāts
eventsarrayobligātsJebkurš no tālāk minētajiem notikumiem.
Pieprasījums
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"]}'
Atbilde
{
  "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} prasa webhooks:manage

Pieprasījums
curl https://myproductpassport.eu/api/v1/webhooks/3 \
  -H "Authorization: Bearer pk_your_key"
PUT /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.

ParametrsVeidsApraksts
urlstring
eventsarray
is_activeboolean
Pieprasījums
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 prasa webhooks:manage

Ievieto rindā webhook.test piegādi, lai varētu pārbaudīt uztvērēju un paraksta kodu.

Pieprasījums
curl -X POST https://myproductpassport.eu/api/v1/webhooks/3/test \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{ "message": "Test delivery queued." }
GET /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.

ParametrsVeidsApraksts
per_pageintegerLīdz 100.
Pieprasījums
curl https://myproductpassport.eu/api/v1/webhooks/3/deliveries \
  -H "Authorization: Bearer pk_your_key"
DELETE /webhooks/{id} prasa webhooks:manage

Pieprasījums
curl -X DELETE https://myproductpassport.eu/api/v1/webhooks/3 \
  -H "Authorization: Bearer pk_your_key"
Atbilde
{ "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:

NotikumsTiek aktivizēts, kad
product.createdTiek izveidots produkts (lietotne, API vai CSV imports)
product.updatedProdukts tiek atjaunināts
product.deletedProdukts tiek dzēsts
passport.createdPase tiek ģenerēta
passport.publishedPase tiek publicēta
passport.archivedPase tiek arhivēta
supplier_request.submittedPiegādātājs nosūta pieprasīto informāciju
owner.registeredĪpašnieks apstiprina savu reģistrāciju
owner.transferredVienība pāriet jaunam reģistrētam īpašniekam
service_request.createdKlients nosūta servisa pieprasījumu no pases
service_request.updatedServisa pieprasījums saņem atbildi vai jaunu statusu
item.status_changedVienība atzīmēta kā zagta, atsaukta vai izņemta no aprites, vai atzīme noņemta
item.verification_failedDrošās birkas nolasījums neizdodas, nepareizi kodi uzkrājas vai sērijas numurs parādās pārāk daudzās vietās
webhook.testJū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:

Piegādes saturs
{
  "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:

Piegādes galvenes
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.

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