---
title: "ELi digitaalsete tootepasside loomine API kaudu — qr3.app Blog"
description: "Enamik DPP-juhendeid räägib, mida pass peab sisaldama. See näitab, kuidas luua ELi nõuetele vastavaid digitaalseid tootepasse programmiliselt — curl"
canonical: "https://qr3.app/et/blog/dpp-api-generate-passports/"
lang: "et"
robots: "index,follow,max-image-preview:large,max-snippet:-1"
---

# ELi digitaalsete tootepasside loomine API kaudu — qr3.app Blog

> Enamik DPP-juhendeid räägib, mida pass peab sisaldama. See näitab, kuidas luua ELi nõuetele vastavaid digitaalseid tootepasse programmiliselt — curl

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

[← Blogi](/et/blog/) [Õpetused](/et/blog/category/tutorials/)

30. mai 2026 4 min lugemist [Õpetused](/et/blog/category/tutorials/) [dpp](/et/blog/tag/dpp/)[api](/et/blog/tag/api/)[gs1-digital-link](/et/blog/tag/gs1-digital-link/)[developers](/et/blog/tag/developers/)[eu-2024-1781](/et/blog/tag/eu-2024-1781/)

# ELi digitaalsete tootepasside loomine API kaudu

Enamik DPP-juhendeid räägib, mida pass peab sisaldama. See näitab, kuidas luua ELi nõuetele vastavaid digitaalseid tootepasse programmiliselt — curl'iga, qr3 SDK-ga, partii kaupa loomise, valideerimise, GS1 QR-koodide ja webhook'idega.

autor **QR3 Redaktion**

![ELi digitaalsete tootepasside loomine API kaudu](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-api-generate-passports/hero.png)

Enamik artikleid ELi digitaalse tootepassi (DPP) kohta selgitab, *mida* pass peab sisaldama. Palju vähem näitab, *kuidas* seda luua — ja peaaegu mitte ükski ei näita, kuidas teha seda 500 või 50 000 SKU kataloogi jaoks, ilma et peaks 50 000 korda läbi vormi klikkima.

See juhend on arendaja versioon. Iga alljärgnev samm on reaalne töötav päring qr3.app API vastu (`https://qr3.app/v1`). Kui haldad tooteandmeid ERP-s, PIM-is või andmebaasis, saad DPP loomise ühendada otse oma olemasolevasse torujuhtmesse.

## Miks on API DPP-de jaoks oluline

Digitaalne tootepass ei ole ühekordne dokument. [Säästvate toodete ökodisaini määruse (ESPR, EU 2024/1781)](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781) ja [ELi akumääruse 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj) alusel vajab iga reguleeritud üksus passi, mis püsib ajakohasena kogu oma eluea jooksul. Tootja jaoks tähendab see:

- **Mastaap** — sadu kuni kümneid tuhandeid tooteid, igaüks oma GTIN-i/seerianumbriga.

- **Värskus** — andmed (süsiniku jalajälg, ringlussevõetud materjali osakaal, remondiinfo) muutuvad ning neid tuleb uuendada, mitte uuesti luua.

- **Integratsioon** — tõeallikas on sinu ERP/PIM, mitte veebivorm.

See on API probleem. Käsitsi veebitööriist annab sulle esimesed kümme passi; API annab need kõik.

## 1. Autentimine

Iga päring kasutab bearer-tokenit (loo API võti juhtpaneelis). Baas-URL on `https://qr3.app/v1`.

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

Või ametliku SDK-ga:

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

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

## 2. Akupassi loomine

DPP luuakse käsuga `POST /dpp`. Ülataseme väljad on iga kategooria puhul samad; kategooriapõhised andmed lähevad `battery_data`, `textile_data` või `general_data` sisse.

```
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"]
    }
  }'
```

Sama päring SDK-ga:

```
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
```

Vastus sisaldab tarbijale suunatud sihtlehte (lokaliseeritud 25 ELi keelde) ja sildiprintimiseks valmis **GS1 Digital Link** QR-koodi — eraldi QR-sammu ei ole vaja.

## 3. Valideeri enne loomist

Soovid püüda puuduvad või kehtetud väljad enne salvestamist? `POST /dpp/validate` käivitab täpselt samad ELi valideerimisreeglid, ilma midagi loomata. Ideaalne eelkontroll CI-s.

```
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. Loo partiina terve kataloog

Tootekataloogi jaoks saada kuni **100 passi päringu kohta** aadressile `POST /dpp/batch`. Itereeri oma ERP-ekspordi üle ja saad kogu oma valiku minutitega.

```
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. QR-koodi hankimine sildiprintimiseks

Iga pass avab oma GS1 Digital Link QR-koodi neljas prindiformaadis. Tõmba need passi objekti kaudu või otse:

```
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` ja `qr.eps` on kõik saadaval — SVG/EPS sinu sildiprinterile, PNG veebi jaoks.

## 6. Hoia andmed ajakohasena (QR-koodi rikkumata)

GTIN/seerianumber/partii on pärast loomist **muutumatud** — see hoiab prinditud GS1 URI igavesti stabiilsena. Kõike muud saab uuendada käsuga `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-kood füüsilisel tootel ei muutu kunagi; selle taga olevad andmed muutuvad. Just selles on *dünaamilise* passi mõte.

## 7. Esita ELi registrisse

Kui ELi keskne DPP-register on sinu toote jaoks asjakohane, esita pass ühe päringuga (Business-plaan ja kõrgem):

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

> **Praeguse seisuga:** EL ei ole veel avaldanud oma keskse DPP-registri API-t. Seni on see päring testtee — staatus jääb `pending` ja ükski asutus ei saa passi. Niipea kui API on live, muutub sama päring tegelikuks registreerimiseks.

## 8. Reageeri skannimistele webhook'idega

DPP skannimised on sündmused. Telli `qr.scanned` ja saad neid voogesitada oma analüütikasse, käivitada tellimusi või märgistada tagasikutsumise — reaalajas. Andmekoormused on allkirjastatud (HMAC-SHA256); kontrolli alati allkirja.

```
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);
});
```

## Kõik kokku: DPP genereerimine CI-s

Lõppseisund, mida enamik tootjaid soovib: tooteandmed asuvad ERP-s/PIM-is ning ajastatud töö hoiab passid sünkroonis.

1. Ekspordi muutunud tooted oma ERP-st.

2. `client.dpp.validate(...)` igaühe jaoks — laske valideerimisvigade korral ehitus ebaõnnestuda.

3. `client.dpp.batch(...)` uute toodete jaoks; `client.dpp.update(...)` muutunute jaoks.

4. Lükka tagastatud `qr.svg` URL-id oma sildiprintimise süsteemi.

Ei mingit veebivormi, ei mingit kopeeri-kleebi, ei mingit erinevust sinu põhiandmete ja passide vahel.

## KKK

**Kas mul on vaja eraldi QR-koodi tööriista?**
Ei. Iga DPP tagastab GS1 Digital Link QR-koodi formaadis SVG/PNG/PDF/EPS. QR-kood *ongi* passile juurdepääsupunkt.

**Kas ma saan passi uuendada pärast sildi printimist?**
Jah — see on põhiidee. GTIN/seerianumber on muutumatud, nii et prinditud URI jääb kehtima; kõiki andmevälju saab uuendada käsuga `PUT /dpp/{id}`.

**Mitu passi saan korraga luua?**
Kuni 100 ühe `POST /dpp/batch` päringu kohta. Tükelda suuremad kataloogid; piirang on 60 päringut minutis iga API-võtme kohta, kõigis pakettides.

**Milliseid kategooriaid toetatakse?**
`battery` ja `textile` on täna saadaval täieliku ELi valideerimisega; `general` katab muud tootetüübid. Aku ja tekstiil sisaldavad reaalajas ELi vastavuskontrolli (ESPR / AGEC).

## Allikad

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

- [ELi akumäärus 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj)

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

**Alusta tasuta** ja loo oma esimene DPP API kaudu: [app.qr3.app/sign-up](https://app.qr3.app/sign-up)

## Seotud artiklid

- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-resolver-test-suite-dpp-links/hero.png) Õpetused GS1 Resolveri testikomplekt: DPP-linkide töökindluse kontroll enne kasutuselevõttu Stabiilne GS1-testikomplekt võimaldab Resolver 1.2 kontrollimist. Nii testite ümbersuunamisi, lingikogumeid, CORS-i, keeli ja veajuhtumeid enne kasutuselevõttu.](/et/blog/gs1-resolver-test-suite-dpp-links/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-battery-passport-2027-20260715/hero.png) Valdkonnauudised BatteryPass-Ready käivitas digitaalse akupassi testikeskkonna BatteryPass-Ready konsortsium käivitas 24. juunil 2026 digitaalse akupassi avaliku testikeskkonna, pidades silmas 2027. aasta veebruarist kehtima hakkavat ELi kohustust.](/et/blog/dpp-battery-passport-2027-20260715/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260713/hero.png) Valdkonnauudised Digitaalne akupass 2027: mida tootjad peavad nüüd teadma Veebiseminarid, avatud lähtekoodiga tööriistad ja uued standardid: ELi akupass kogub hoogu. Ülevaade 2026. aasta juuli seisust ja 2027. aasta veebruarini lahendamist vajavatest küsimustest.](/et/blog/sector-20260713/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260711/hero.png) Valdkonnauudised Digitaalne akupass 2026: testkeskkonnad, standardid ja lahtised küsimused Milline on tööstuse seis digitaalse akupassi kasutuselevõtul? Ülevaade 2026. aasta juuli testkeskkondadest, CEN/CENELEC-i standarditest, avatud lähtekoodiga tööriistadest ja regulatiivsetest suunaval?](/et/blog/sector-20260711/)

[← Kõik artiklid](/et/blog/) [Alusta tasuta](https://app.qr3.app/sign-up)
