---
title: "ES skaitmeninių produkto pasų generavimas per API — qr3.app Blog"
description: "Daugumoje DPP vadovų aprašoma, ką turi turėti pasas. Šiame parodoma, kaip programiškai kurti ES reikalavimus atitinkančius skaitmeninius produkto pasus — su curl, qr3 SDK, paketiniu kūrimu, validavimu, GS1 QR kodais ir webhook"
canonical: "https://qr3.app/lt/blog/dpp-api-generate-passports/"
lang: "lt"
robots: "index,follow,max-image-preview:large,max-snippet:-1"
---

# ES skaitmeninių produkto pasų generavimas per API — qr3.app Blog

> Daugumoje DPP vadovų aprašoma, ką turi turėti pasas. Šiame parodoma, kaip programiškai kurti ES reikalavimus atitinkančius skaitmeninius produkto pasus — su curl, qr3 SDK, paketiniu kūrimu, validavimu, GS1 QR kodais ir webhook

Canonical: <https://qr3.app/lt/blog/dpp-api-generate-passports/>

[← Blog](/lt/blog/) [Pamokos](/lt/blog/category/tutorials/)

2026 m. gegužės 30 d. 4 min skaitymo [Pamokos](/lt/blog/category/tutorials/) [dpp](/lt/blog/tag/dpp/)[api](/lt/blog/tag/api/)[gs1-digital-link](/lt/blog/tag/gs1-digital-link/)[developers](/lt/blog/tag/developers/)[eu-2024-1781](/lt/blog/tag/eu-2024-1781/)

# ES skaitmeninių produkto pasų generavimas per API

Daugumoje DPP vadovų aprašoma, ką turi turėti pasas. Šiame parodoma, kaip programiškai kurti ES reikalavimus atitinkančius skaitmeninius produkto pasus — su curl, qr3 SDK, paketiniu kūrimu, validavimu, GS1 QR kodais ir webhook'ais.

autorius **QR3 Redaktion**

![ES skaitmeninių produkto pasų generavimas per API](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-api-generate-passports/hero.png)

Daugumoje straipsnių apie ES skaitmeninį produkto pasą (DPP) paaiškinama, *ką* turi turėti pasas. Kur kas mažiau paaiškina, *kaip* jį sukurti — ir beveik nė vienas neparodo, kaip tai padaryti 500 ar 50 000 SKU katalogui, nespaudant formos 50 000 kartų.

Šis vadovas yra kūrėjams skirta versija. Kiekvienas toliau pateiktas žingsnis yra realus, veikiantis užklausimas į qr3.app API (`https://qr3.app/v1`). Jei produktų duomenis tvarkote ERP, PIM sistemoje ar duomenų bazėje, DPP generavimą galite tiesiogiai integruoti į esamą savo procesą.

## Kodėl DPP atveju svarbus API

Skaitmeninis produkto pasas nėra vienkartinis dokumentas. Pagal [Tvarių produktų ekologinio projektavimo reglamentą (ESPR, ES 2024/1781)](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781) ir [ES baterijų reglamentą 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj) kiekvienam reguliuojamam vienetui reikalingas pasas, kuris išliktų aktualus per visą jo gyvavimo laikotarpį. Gamintojui tai reiškia:

- **Mastas** — nuo šimtų iki dešimčių tūkstančių produktų, kiekvienas su savo GTIN/serijos numeriu.

- **Aktualumas** — duomenys (anglies pėdsakas, perdirbtų medžiagų kiekis, remonto informacija) keičiasi ir turi būti atnaujinami, o ne kuriami iš naujo.

- **Integracija** — tiesos šaltinis yra jūsų ERP/PIM, o ne žiniatinklio forma.

Tai yra API uždavinys. Rankinis žiniatinklio įrankis duos jums pirmuosius dešimt pasų; API duos visus.

## 1. Autentifikacija

Kiekvienoje užklausoje naudojamas bearer žetonas (API raktą sukurkite valdymo skydelyje). Bazinis URL adresas yra `https://qr3.app/v1`.

```
curl https://qr3.app/v1/dpp \
  -H "Authorization: Bearer $QR3_API_KEY"
```

Arba su oficialiu SDK:

```
import { QR3 } from "@qr3/sdk";

const client = new QR3({ apiKey: process.env.QR3_API_KEY! });
```

## 2. Sukurkite baterijos pasą

DPP sukuriamas su `POST /dpp`. Aukščiausio lygio laukai yra vienodi kiekvienai kategorijai; konkrečiai kategorijai būdingi duomenys patenka į `battery_data`, `textile_data` arba `general_data`.

```
curl -X POST https://qr3.app/v1/dpp \
  -H "Authorization: Bearer $QR3_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "gtin": "09506000134376",
    "serial": "SN-00012345",
    "product_name": "PowerCell 5 kWh LFP",
    "manufacturer": "ExampleTech GmbH",
    "origin_country": "DE",
    "category": "battery",
    "market_countries": ["DE", "FR", "AT"],
    "status": "live",
    "battery_data": {
      "capacity_kwh": 5,
      "carbon_footprint_kg": 62,
      "carbon_footprint_class": "B",
      "recycled_content_pct": 12,
      "recyclability_pct": 95,
      "manufacturer_warranty_years": 8,
      "lithium_content_pct": 6.5,
      "certifications": ["CE", "UN38.3"]
    }
  }'
```

Tas pats užklausimas su SDK:

```
const passport = await client.dpp.create({
  gtin: "09506000134376",
  serial: "SN-00012345",
  product_name: "PowerCell 5 kWh LFP",
  manufacturer: "ExampleTech GmbH",
  origin_country: "DE",
  category: "battery",
  market_countries: ["DE", "FR", "AT"],
  battery_data: {
    capacity_kwh: 5,
    carbon_footprint_kg: 62,
    recycled_content_pct: 12,
    recyclability_pct: 95,
    manufacturer_warranty_years: 8,
  },
});

console.log(passport.id);      // dpp_xxxxxxxx
console.log(passport.qr.svg);  // print-ready GS1 Digital Link QR
```

Atsakymas apima vartotojui skirtą nukreipimo puslapį (lokalizuotą į 25 ES kalbas) ir spausdinti etiketei paruoštą **GS1 Digital Link** QR kodą — atskiro QR žingsnio nereikia.

## 3. Validuokite prieš kurdami

Norite aptikti trūkstamus ar netinkamus laukus prieš įrašydami? `POST /dpp/validate` paleidžia tiksliai tas pačias ES validavimo taisykles nieko nesukurdamas. Idealiai tinka kaip patikra prieš įsipareigojant CI procese.

```
const result = await client.dpp.validate({
  gtin: "09506000134376",
  product_name: "PowerCell 5 kWh LFP",
  manufacturer: "ExampleTech GmbH",
  origin_country: "DE",
  category: "battery",
  battery_data: {
    capacity_kwh: 5,
    carbon_footprint_kg: 62,
    recycled_content_pct: 12,
    recyclability_pct: 95,
    manufacturer_warranty_years: 8,
  },
});

if (!result.valid) {
  console.error(result.errors);
  // [{ field: "battery_data.recyclability_pct", message: "..." }]
}
```

## 4. Paketinis viso katalogo kūrimas

Produktų katalogui siųskite iki **100 pasų vienoje užklausoje** į `POST /dpp/batch`. Pereikite per savo ERP eksportą ciklu ir per kelias minutes turėsite visą savo asortimentą.

```
const items = products.map((p) => ({
  gtin: p.gtin,
  serial: p.serial,
  product_name: p.name,
  manufacturer: "ExampleTech GmbH",
  origin_country: "DE",
  category: "battery" as const,
  battery_data: {
    capacity_kwh: p.capacityKwh,
    carbon_footprint_kg: p.co2Kg,
    recycled_content_pct: p.recycledPct,
    recyclability_pct: p.recyclablePct,
    manufacturer_warranty_years: p.warrantyYears,
  },
}));

// Chunk into batches of 100
const result = await client.dpp.batch({ items: items.slice(0, 100) });
```

## 5. Gaukite QR kodą etiketei spausdinti

Kiekvienas pasas pateikia savo GS1 Digital Link QR keturiais spausdinimo formatais. Gaukite juos per paso objektą arba tiesiogiai:

```
curl https://qr3.app/v1/dpp/dpp_xxxxxxxx/qr.svg \
  -H "Authorization: Bearer $QR3_API_KEY" -o label.svg
```

`qr.svg`, `qr.png`, `qr.pdf` ir `qr.eps` — visi prieinami: SVG/EPS jūsų etikečių spausdintuvui, PNG žiniatinkliui.

## 6. Palaikykite duomenis aktualius (nesugadindami QR)

GTIN/serijos numeris/partija po sukūrimo yra **nekintami** — tai amžinai išlaiko stabilų atspausdintą GS1 URI. Visa kita galima atnaujinti su `PUT /dpp/{id}`:

```
await client.dpp.update(passport.id, {
  battery_data: {
    capacity_kwh: 5,
    carbon_footprint_kg: 58, // re-measured, lower footprint
    recycled_content_pct: 16, // 2031 target reached early
    recyclability_pct: 95,
    manufacturer_warranty_years: 8,
  },
});
```

QR ant fizinio produkto niekada nesikeičia; už jo esantys duomenys keičiasi. Tai ir yra visa *dinaminio* paso esmė.

## 7. Pateikimas į ES registrą

Kai ES centrinis DPP registras yra aktualus jūsų produktui, pateikite pasą viena užklausa (Business planas ir aukštesni):

```
const reg = await client.dpp.registerForEuRegistry(passport.id);
console.log(reg.data.eu_registry_status);          // "pending"
console.log(reg.data.registry_request_id);
```

> **Šiandienos būklė:** ES dar nepaskelbė savo centrinio DPP registro API. Iki tol ši užklausa yra bandomasis kelias — būsena lieka `pending`, ir jokia institucija negauna paso. Kai tik API pradės veikti, ta pati užklausa taps tikra registracija.

## 8. Reaguokite į nuskaitymus su webhook'ais

DPP nuskaitymai yra įvykiai. Užsiprenumeruokite `qr.scanned` ir galėsite juos realiuoju laiku perduoti į savo analitiką, suaktyvinti pakartotinius užsakymus arba pažymėti atšaukimą. Naudingosios apkrovos yra pasirašytos (HMAC-SHA256); visada patikrinkite parašą.

```
import { createHmac, timingSafeEqual } from "crypto";

app.post("/webhooks/qr3", express.raw({ type: "application/json" }), (req, res) => {
  const expected = createHmac("sha256", secret).update(req.body).digest("hex");
  const expectedBytes = Buffer.from(`sha256=${expected}`);
  const receivedBytes = Buffer.from(String(req.headers["x-qr3-signature"] ?? ""));
  const ok =
    expectedBytes.length === receivedBytes.length &&
    timingSafeEqual(expectedBytes, receivedBytes);
  if (!ok) return res.sendStatus(401);

  const event = JSON.parse(req.body.toString("utf8"));
  if (event.type === "qr.scanned") {
    console.log(event.data.country, event.data.dpp_id);
  }
  res.sendStatus(200);
});
```

## Viską sudėjus į vietą: DPP generavimas CI procese

Galutinė būsena, kurios nori dauguma gamintojų: produktų duomenys gyvuoja ERP/PIM, o suplanuota užduotis nuolat sinchronizuoja pasus.

1. Eksportuokite pasikeitusius produktus iš savo ERP.

2. `client.dpp.validate(...)` kiekvieną iš jų — nutraukite kūrimą, jei yra validavimo klaidų.

3. `client.dpp.batch(...)` naujus produktus; `client.dpp.update(...)` pasikeitusius.

4. Perduokite grąžintus `qr.svg` URL adresus į savo etikečių spausdinimo sistemą.

Jokios žiniatinklio formos, jokio kopijavimo-įklijavimo, jokio neatitikimo tarp jūsų pagrindinių duomenų ir pasų.

## DUK

**Ar man reikia atskiro QR kodų įrankio?**
Ne. Kiekvienas DPP grąžina GS1 Digital Link QR formatu SVG/PNG/PDF/EPS. QR *yra* prieigos prie paso taškas.

**Ar galiu atnaujinti pasą po to, kai etiketė atspausdinta?**
Taip — tai yra pagrindinė idėja. GTIN/serijos numeris yra nekintami, todėl atspausdintas URI lieka galiojantis; visus duomenų laukus galima atnaujinti per `PUT /dpp/{id}`.

**Kiek pasų galiu sukurti vienu metu?**
Iki 100 vienoje `POST /dpp/batch` užklausoje. Didesnius katalogus skaidykite dalimis; visuose planuose taikomas 60 užklausų per minutę apribojimas vienam API raktui.

**Kurios kategorijos palaikomos?**
`battery` ir `textile` šiandien pateikiamos su visu ES validavimu; `general` apima kitus produktų tipus. Baterijos ir tekstilė apima realaus laiko ES atitikties patikrą (ESPR / AGEC).

## Šaltiniai

- [ESPR — Reglamentas (ES) 2024/1781](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781)

- [ES baterijų reglamentas 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj)

- [GS1 Digital Link](https://www.gs1.org/standards/gs1-digital-link)

**Pradėkite nemokamai** ir sukurkite savo pirmąjį DPP per API: [app.qr3.app/sign-up](https://app.qr3.app/sign-up)

## Susiję straipsniai

- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-resolver-test-suite-dpp-links/hero.png) Pamokos GS1 sprendiklio testų rinkinys: DPP nuorodų patikimumo tikrinimas prieš paleidimą Stabilus GS1 testų rinkinys leidžia tikrinti Resolver 1.2. Prieš paleidimą patikrinkite peradresavimus, nuorodų rinkinius, CORS, kalbas ir klaidų scenarijus.](/lt/blog/gs1-resolver-test-suite-dpp-links/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-battery-passport-2027-20260715/hero.png) Pramonės naujienos „BatteryPass-Ready“ pradėjo skaitmeninio baterijos paso bandymų aplinką 2026 m. birželio 24 d. „BatteryPass-Ready“ konsorciumas pradėjo viešą skaitmeninio baterijos paso bandymų aplinką, artėjant ES prievolei nuo 2027 m. vasario.](/lt/blog/dpp-battery-passport-2027-20260715/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260713/hero.png) Pramonės naujienos Skaitmeninis baterijos pasas 2027 m.: ką dabar turi žinoti gamintojai Internetiniai seminarai, atvirojo kodo įrankiai ir nauji standartai: ES baterijos pasas įgauna pagreitį. 2026 m. liepos apžvalga ir neatsakyti klausimai iki 2027 m. vasario.](/lt/blog/sector-20260713/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260711/hero.png) Pramonės naujienos Skaitmeninis baterijos pasas 2026 m.: testavimo aplinkos, standartai ir neatsakyti klausimai Kokia pramonės padėtis diegiant skaitmeninį baterijos pasą? Apžvelgiamos testavimo aplinkos, CEN/CENELEC standartai, atvirojo kodo įrankiai ir reguliavimo sprendimai 2026 m. liepą.](/lt/blog/sector-20260711/)

[← Visi straipsniai](/lt/blog/) [Pradėti nemokamai](https://app.qr3.app/sign-up)
