---
title: "Generování evropských digitálních pasů produktů přes API — qr3.app Blog"
description: "Většina návodů k DPP vám řekne, co musí pas obsahovat. Tento ukazuje, jak vytvářet digitální pasy produktů odpovídající předpisům EU programově — pomocí curl, qr3 SDK, hromadného vytváření, validace, GS1 QR kódů a webhooků."
canonical: "https://qr3.app/cs/blog/dpp-api-generate-passports/"
lang: "cs"
robots: "index,follow,max-image-preview:large,max-snippet:-1"
---

# Generování evropských digitálních pasů produktů přes API — qr3.app Blog

> Většina návodů k DPP vám řekne, co musí pas obsahovat. Tento ukazuje, jak vytvářet digitální pasy produktů odpovídající předpisům EU programově — pomocí curl, qr3 SDK, hromadného vytváření, validace, GS1 QR kódů a webhooků.

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

[← Blog](/cs/blog/) [Tutoriály](/cs/blog/category/tutorials/)

30. května 2026 4 min čtení [Tutoriály](/cs/blog/category/tutorials/) [dpp](/cs/blog/tag/dpp/)[api](/cs/blog/tag/api/)[gs1-digital-link](/cs/blog/tag/gs1-digital-link/)[developers](/cs/blog/tag/developers/)[eu-2024-1781](/cs/blog/tag/eu-2024-1781/)

# Generování evropských digitálních pasů produktů přes API

Většina návodů k DPP vám řekne, co musí pas obsahovat. Tento ukazuje, jak vytvářet digitální pasy produktů odpovídající předpisům EU programově — pomocí curl, qr3 SDK, hromadného vytváření, validace, GS1 QR kódů a webhooků.

autor **QR3 Redaktion**

![Generování evropských digitálních pasů produktů přes API](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-api-generate-passports/hero.png)

Většina článků o evropském digitálním pasu produktu (EU DPP) vysvětluje, *co* musí pas obsahovat. Mnohem méně jich ukazuje, *jak* takový pas vytvořit — a téměř žádný neukazuje, jak to udělat pro katalog 500 nebo 50 000 SKU, aniž byste 50 000krát proklikávali formulář.

Tento průvodce je verzí pro vývojáře. Každý krok níže je reálné, funkční volání proti API qr3.app (`https://qr3.app/v1`). Pokud spravujete data o produktech v ERP, PIM nebo databázi, můžete generování DPP zapojit přímo do své stávající pipeline.

## Proč na DPP záleží API

Digitální pas produktu není jednorázový dokument. Podle [nařízení o ekodesignu pro udržitelné produkty (ESPR, EU 2024/1781)](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781) a [nařízení EU o bateriích 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj) potřebuje každá regulovaná jednotka pas, který zůstává aktuální po celou dobu své životnosti. Pro výrobce to znamená:

- **Škálu** — stovky až desetitisíce produktů, každý s vlastním GTIN/sériovým číslem.

- **Aktuálnost** — data (uhlíková stopa, podíl recyklovaného obsahu, informace o opravách) se mění a musí být aktualizována, nikoli vytvářena znovu.

- **Integraci** — zdrojem pravdy je vaše ERP/PIM, nikoli webový formulář.

To je problém pro API. Manuální webový nástroj vám dá prvních deset pasů; API vám dá všechny.

## 1. Autentizace

Každý požadavek používá bearer token (vytvořte si API klíč v nástěnce). Základní URL je `https://qr3.app/v1`.

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

Nebo pomocí oficiálního SDK:

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

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

## 2. Vytvoření pasu baterie

DPP se vytváří pomocí `POST /dpp`. Pole na nejvyšší úrovni jsou stejná pro každou kategorii; data specifická pro danou kategorii se uvádějí v `battery_data`, `textile_data` nebo `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"]
    }
  }'
```

Totéž volání pomocí 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
```

Odpověď zahrnuje vstupní stránku pro spotřebitele (lokalizovanou do 25 jazyků EU) a QR kód **GS1 Digital Link** připravený k tisku na etiketu — žádný samostatný krok pro QR není potřeba.

## 3. Validujte před vytvořením

Chcete zachytit chybějící nebo neplatná pole ještě před uložením? `POST /dpp/validate` spustí přesně ta validační pravidla EU, aniž by cokoli vytvořilo. Ideální jako kontrola před commitem 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. Hromadné vytvoření celého katalogu

Pro produktový katalog odešlete až **100 pasů na jeden požadavek** na `POST /dpp/batch`. Projděte ve smyčce svůj export z ERP a celý sortiment máte během několika minut.

```
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. Získání QR kódu pro tisk na etiketu

Každý pas zpřístupňuje svůj QR kód GS1 Digital Link ve čtyřech tiskových formátech. Stáhněte je prostřednictvím objektu pasu nebo přímo:

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

K dispozici jsou `qr.svg`, `qr.png`, `qr.pdf` i `qr.eps` — SVG/EPS pro vaši etiketovací tiskárnu, PNG pro web.

## 6. Udržujte data aktuální (aniž byste rozbili QR)

GTIN/sériové číslo/šarže jsou po vytvoření **neměnné** — to udržuje vytištěné GS1 URI navždy stabilní. Vše ostatní lze aktualizovat pomocí `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 na fyzickém produktu se nikdy nemění; data za ním ano. To je celý smysl *dynamického* pasu.

## 7. Odeslání do registru EU

Když je pro váš produkt v rozsahu centrální registr DPP EU, odešlete pas jediným voláním (plán Business a vyšší):

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

> **Stav k dnešnímu dni:** EU dosud nezveřejnila API svého centrálního registru DPP. Do té doby je toto volání testovací cestou — stav zůstává `pending` a žádný úřad pas neobdrží. Jakmile bude API spuštěno, stejné volání se stane skutečnou registrací.

## 8. Reagujte na naskenování pomocí webhooků

Naskenování DPP jsou události. Přihlaste se k odběru `qr.scanned` a můžete je v reálném čase přenášet do své analytiky, spouštět doobjednávky nebo signalizovat stažení z trhu. Datové zprávy jsou podepsané (HMAC-SHA256); vždy ověřte 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);
});
```

## Spojeno dohromady: generování DPP v CI

Cílový stav, který chce většina výrobců: data o produktech žijí v ERP/PIM a naplánovaná úloha udržuje pasy synchronizované.

1. Exportujte změněné produkty z vašeho ERP.

2. `client.dpp.validate(...)` u každého z nich — při validačních chybách nechte build selhat.

3. `client.dpp.batch(...)` nové produkty; `client.dpp.update(...)` ty změněné.

4. Předejte vrácené URL `qr.svg` svému systému pro tisk etiket.

Žádný webový formulář, žádné kopírování a vkládání, žádný rozdíl mezi vašimi kmenovými daty a vašimi pasy.

## Časté dotazy

**Potřebuji samostatný nástroj pro QR kódy?**
Ne. Každý DPP vrací QR kód GS1 Digital Link ve formátech SVG/PNG/PDF/EPS. Tento QR *je* přístupovým bodem k pasu.

**Mohu pas aktualizovat poté, co je etiketa vytištěna?**
Ano — to je hlavní myšlenka. GTIN/sériové číslo jsou neměnné, takže vytištěné URI zůstává platné; všechna datová pole lze aktualizovat pomocí `PUT /dpp/{id}`.

**Kolik pasů mohu vytvořit najednou?**
Až 100 na jeden požadavek `POST /dpp/batch`. Větší katalogy rozdělte do dávek; limit je 60 požadavků za minutu na jeden API klíč, ve všech plánech.

**Které kategorie jsou podporovány?**
`battery` a `textile` dnes přicházejí s plnou validací EU; `general` pokrývá ostatní typy produktů. Baterie a textil zahrnují živou kontrolu shody s předpisy EU (ESPR / AGEC).

## Zdroje

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

- [Nařízení EU o bateriích 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj)

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

**Začněte zdarma** a vytvořte svůj první DPP přes API: [app.qr3.app/sign-up](https://app.qr3.app/sign-up)

## Související články

- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-resolver-test-suite-dpp-links/hero.png) Tutoriály Testovací sada Resolveru GS1: DPP-odkazy důkladně ověřit před uvedením do provozu Stabilní testovací sada GS1 umožňuje ověřit Resolver 1.2. Před uvedením do provozu otestujete přesměrování, sady odkazů, CORS, jazyky i chybové stavy.](/cs/blog/gs1-resolver-test-suite-dpp-links/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-battery-passport-2027-20260715/hero.png) Novinky z oboru BatteryPass-Ready spouští testovací prostředí pro digitální bateriový pas Konsorcium BatteryPass-Ready spustilo 24. června 2026 veřejné testovací prostředí pro digitální bateriový pas s ohledem na povinnost EU od února 2027.](/cs/blog/dpp-battery-passport-2027-20260715/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260713/hero.png) Novinky z oboru Digitální bateriový pas 2027: Co nyní výrobci potřebují vědět Webináře, nástroje s otevřeným zdrojovým kódem a nové normy: evropský bateriový pas nabírá na rychlosti. Přehled stavu v červenci 2026 a otevřených otázek do února 2027.](/cs/blog/sector-20260713/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260711/hero.png) Novinky z oboru Digitální pas baterie 2026: testovací prostředí, normy a otevřené otázky Jak si průmysl vede v oblasti digitálního pasu baterie? Přehled testovacích prostředí, norem CEN/CENELEC, open source nástrojů a regulatorních kroků v červenci 2026.](/cs/blog/sector-20260711/)

[← Všechny články](/cs/blog/) [Začít zdarma](https://app.qr3.app/sign-up)
