---
title: "Ustvarjanje EU digitalnih potnih listov izdelkov prek API-ja — qr3.app Blog"
description: "Večina vodičev o DPP vam pove, kaj mora potni list vsebovati. Ta pa pokaže, kako programsko ustvariti EU-skladne digitalne potne liste izdelkov — s curl, qr3 SDK-jem, paketnim ustvarjanjem, validacijo, GS1 QR-kodami in webhooki."
canonical: "https://qr3.app/sl/blog/dpp-api-generate-passports/"
lang: "sl"
robots: "index,follow,max-image-preview:large,max-snippet:-1"
---

# Ustvarjanje EU digitalnih potnih listov izdelkov prek API-ja — qr3.app Blog

> Večina vodičev o DPP vam pove, kaj mora potni list vsebovati. Ta pa pokaže, kako programsko ustvariti EU-skladne digitalne potne liste izdelkov — s curl, qr3 SDK-jem, paketnim ustvarjanjem, validacijo, GS1 QR-kodami in webhooki.

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

[← Blog](/sl/blog/) [Vodiči](/sl/blog/category/tutorials/)

30. maj 2026 4 min branja [Vodiči](/sl/blog/category/tutorials/) [dpp](/sl/blog/tag/dpp/)[api](/sl/blog/tag/api/)[gs1-digital-link](/sl/blog/tag/gs1-digital-link/)[developers](/sl/blog/tag/developers/)[eu-2024-1781](/sl/blog/tag/eu-2024-1781/)

# Ustvarjanje EU digitalnih potnih listov izdelkov prek API-ja

Večina vodičev o DPP vam pove, kaj mora potni list vsebovati. Ta pa pokaže, kako programsko ustvariti EU-skladne digitalne potne liste izdelkov — s curl, qr3 SDK-jem, paketnim ustvarjanjem, validacijo, GS1 QR-kodami in webhooki.

avtor **QR3 Redaktion**

![Ustvarjanje EU digitalnih potnih listov izdelkov prek API-ja](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-api-generate-passports/hero.png)

Večina člankov o EU digitalnem potnem listu izdelka (DPP) pojasnjuje, *kaj* mora potni list vsebovati. Veliko manj jih pokaže, *kako* ga ustvariti — in skoraj nobeden ne pokaže, kako to storiti za katalog s 500 ali 50.000 SKU-ji, ne da bi 50.000-krat klikali skozi obrazec.

Ta vodič je različica za razvijalce. Vsak korak spodaj je resničen, delujoč klic proti API-ju qr3.app (`https://qr3.app/v1`). Če podatke o izdelkih upravljate v ERP-ju, PIM-u ali podatkovni bazi, lahko generiranje DPP vključite neposredno v svoj obstoječi cevovod.

## Zakaj je API pomemben za DPP-je

Digitalni potni list izdelka ni enkraten dokument. V okviru [Uredbe o okoljsko primerni zasnovi trajnostnih izdelkov (ESPR, EU 2024/1781)](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781) in [EU uredbe o baterijah 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj) vsaka regulirana enota potrebuje potni list, ki ostane aktualen skozi vso svojo življenjsko dobo. Za proizvajalca to pomeni:

- **Obseg** — od stotin do desettisočev izdelkov, vsak s svojim GTIN/serijsko številko.

- **Aktualnost** — podatki (ogljični odtis, delež recikliranega materiala, informacije o popravilih) se spreminjajo in jih je treba posodabljati, ne pa ustvarjati znova.

- **Integracija** — vir resnice je vaš ERP/PIM, ne spletni obrazec.

To je problem za API. Ročno spletno orodje vam priskrbi prvih deset potnih listov; API jih priskrbi vse.

## 1. Avtentikacija

Vsaka zahteva uporablja žeton bearer (API-ključ ustvarite v nadzorni plošči). Osnovni URL je `https://qr3.app/v1`.

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

Ali z uradnim SDK-jem:

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

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

## 2. Ustvarjanje potnega lista za baterijo

DPP ustvarite z `POST /dpp`. Polja na najvišji ravni so enaka za vsako kategorijo; podatki, specifični za kategorijo, gredo v `battery_data`, `textile_data` ali `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"]
    }
  }'
```

Isti klic s SDK-jem:

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

Odgovor vključuje pristajalno stran za potrošnike (lokalizirano v 25 jezikov EU) in **GS1 Digital Link** QR-kodo, pripravljeno za tiskanje na nalepke — ločen korak za QR ni potreben.

## 3. Validacija pred ustvarjanjem

Želite ujeti manjkajoča ali neveljavna polja, preden jih shranite? `POST /dpp/validate` izvede natanko ista pravila validacije EU, ne da bi karkoli ustvaril. Idealno kot pred-commit preverjanje v CI.

```
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. Paketno ustvarjanje celotnega kataloga

Za katalog izdelkov pošljite do **100 potnih listov na zahtevo** na `POST /dpp/batch`. Pojdite v zanki čez izvoz iz ERP-ja in v nekaj minutah imate celoten asortiman.

```
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. Pridobivanje QR-kode za tiskanje nalepk

Vsak potni list izpostavi svojo GS1 Digital Link QR-kodo v štirih formatih za tisk. Pridobite jih prek objekta potnega lista ali neposredno:

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

Na voljo so `qr.svg`, `qr.png`, `qr.pdf` in `qr.eps` — SVG/EPS za vaš tiskalnik nalepk, PNG za splet.

## 6. Ohranjanje aktualnosti podatkov (brez kvarjenja QR-kode)

GTIN/serijska številka/serija (lot) so po ustvarjanju **nespremenljivi** — to ohranja natisnjeni GS1 URI za vedno stabilen. Vse drugo je mogoče posodobiti z `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-koda na fizičnem izdelku se nikoli ne spremeni; podatki za njo pa se. V tem je celotno bistvo *dinamičnega* potnega lista.

## 7. Oddaja v register EU

Ko je za vaš izdelek v obsegu centralni register DPP EU, oddajte potni list z enim klicem (od paketa Business naprej):

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

> **Stanje danes:** EU še ni objavila API-ja svojega osrednjega registra DPP. Do takrat je ta klic testna pot — status ostane `pending` in noben organ ne prejme potnega lista. Ko bo API zaživel, bo isti klic postal prava prijava.

## 8. Odzivanje na skeniranja z webhooki

Skeniranja DPP so dogodki. Naročite se na `qr.scanned` in jih lahko v realnem času pretakate v svojo analitiko, sprožite ponovna naročila ali označite odpoklic. Vsebine (payloads) so podpisane (HMAC-SHA256); vedno preverite podpis.

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

## Vse skupaj: generiranje DPP v CI

Končno stanje, ki ga želi večina proizvajalcev: podatki o izdelkih živijo v ERP-ju/PIM-u, načrtovano opravilo pa ohranja potne liste sinhronizirane.

1. Izvozite spremenjene izdelke iz svojega ERP-ja.

2. `client.dpp.validate(...)` za vsakega — gradnja naj ne uspe ob napakah validacije.

3. `client.dpp.batch(...)` za nove izdelke; `client.dpp.update(...)` za spremenjene.

4. Vrnjene URL-je `qr.svg` potisnite v svoj sistem za tiskanje nalepk.

Brez spletnega obrazca, brez kopiranja in lepljenja, brez razhajanj med vašimi matičnimi podatki in potnimi listi.

## Pogosta vprašanja

**Ali potrebujem ločeno orodje za QR-kode?**
Ne. Vsak DPP vrne GS1 Digital Link QR-kodo v SVG/PNG/PDF/EPS. QR-koda *je* dostopna točka do potnega lista.

**Ali lahko posodobim potni list, potem ko je nalepka že natisnjena?**
Da — to je osrednja zamisel. GTIN/serijska številka sta nespremenljiva, tako da natisnjeni URI ostane veljaven; vsa podatkovna polja je mogoče posodobiti prek `PUT /dpp/{id}`.

**Koliko potnih listov lahko ustvarim naenkrat?**
Do 100 na zahtevo `POST /dpp/batch`. Večje kataloge razdelite na dele; omejitev je 60 zahtev na minuto na API ključ, v vseh naročninah.

**Katere kategorije so podprte?**
`battery` in `textile` danes vključujeta polno EU-validacijo; `general` pokriva druge vrste izdelkov. Baterija in tekstil vključujeta sprotno preverjanje skladnosti z EU (ESPR / AGEC).

## Viri

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

- [EU uredba o baterijah 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj)

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

**Začnite brezplačno** in ustvarite svoj prvi DPP prek API-ja: [app.qr3.app/sign-up](https://app.qr3.app/sign-up)

## Povezani članki

- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-resolver-test-suite-dpp-links/hero.png) Vodiči Testna zbirka za razreševalnik GS1: DPP-povezave zanesljivo preverite pred uvedbo v produkcijo Stabilna testna zbirka GS1 omogoča preverjanje razreševalnika 1.2. Tako pred uvedbo v produkcijo testirate preusmeritve, množice povezav, CORS, jezike in napake.](/sl/blog/gs1-resolver-test-suite-dpp-links/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-battery-passport-2027-20260715/hero.png) Novice iz panoge BatteryPass-Ready je zagnal testno okolje za digitalni potni list baterije Konzorcij BatteryPass-Ready je 24. junija 2026 zagnal javno testno okolje za digitalni potni list baterije, saj se februarja 2027 začne obveznost EU.](/sl/blog/dpp-battery-passport-2027-20260715/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260713/hero.png) Novice iz panoge Digitalni potni list baterije 2027: kaj morajo proizvajalci vedeti že zdaj Spletni seminarji, odprtokodna orodja in novi standardi: digitalni potni list EU za baterije dobiva zagon. Pregled stanja julija 2026 in odprtih vprašanj do februarja 2027.](/sl/blog/sector-20260713/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260711/hero.png) Novice iz panoge Digitalni potni list baterije 2026: testna okolja, standardi in odprta vprašanja Kje je industrija pri digitalnem potnem listu baterije? Pregled testnih okolij, standardov CEN/CENELEC, odprtokodnih orodij in regulativnih usmeritev julija 2026.](/sl/blog/sector-20260711/)

[← Vsi članki](/sl/blog/) [Začni brezplačno](https://app.qr3.app/sign-up)
