API für den Digitalen Produktpass: Dokumentation für Entwickler
Mit der Kunden-API legen eigene Systeme Produkte an, pflegen Datenfelder, veröffentlichen Passports und laden QR-Code und PDF herunter. Die Anmeldung erfolgt mit einem API-Key, den Sie in der Plattform selbst erzeugen. Die vollständige Beschreibung gibt es als OpenAPI-3.1-Datei.
Stand: 1. Oktober 2026
Überblick
Die Kunden-API ist eine REST-Schnittstelle mit JSON. Sie arbeitet auf Ihren Mandantendaten, also auf denselben Produkten und Passports, die Sie in der Weboberfläche sehen. Typische Einsatzfälle sind die Anbindung an ein ERP- oder PLM-System, ein nächtlicher Abgleich von Stammdaten oder ein Skript, das QR-Codes für den Druck holt.
Die Basis-URL lautet https://dpp.com2u.selfhost.eu/api/v1/integration. Alle Antworten sind JSON, ausgenommen die Downloads von QR-Code und PDF.
Spezifikation herunterladen
Die maschinenlesbare Referenz aller Endpunkte, Felder, Beispiele und Fehlerantworten ist eine OpenAPI-3.1-Spezifikation mit dem Sicherheitsschema ApiKeyAuth:
Dieselbe Datei liefert die API selbst unter GET /api/v1/integration/openapi.json, ohne Key. Importieren Sie sie in Swagger UI, Postman oder einen Code-Generator Ihrer Wahl.
Schnellstart
- Registrieren Sie sich oder melden Sie sich an. Die API gehört zu den bezahlten Tarifen, siehe Preise.
- Öffnen Sie in der Plattform den Bereich Mandant und erzeugen Sie den API-Key. Kopieren Sie ihn sofort, denn er wird nur einmal angezeigt.
- Testen Sie die Verbindung:
curl -H "X-API-Key: $DPP_API_KEY" \
https://dpp.com2u.selfhost.eu/api/v1/integration/me
Die Antwort nennt Ihren Mandanten, die Scopes des Keys, Ihren Tarif und den Verbrauch an API-Aufrufen.
Authentifizierung
Senden Sie den Key bei jedem Aufruf im Header X-API-Key. Gleichwertig ist Authorization: Bearer dpp_key_…. Der Mandant ergibt sich immer aus dem Key, eine Mandanten-ID als Parameter wird nicht ausgewertet. Sitzungs-Tokens der Weboberfläche akzeptiert die API nicht.
Der Key gehört zu der Person, die ihn erzeugt hat. Aktionen laufen mit deren Rechten als Owner oder Admin. Verliert die Person diese Rolle, antwortet die API mit 403, bis ein neuer Key erzeugt wurde. Eine Neuerzeugung widerruft den bisherigen Key sofort. Die Plattform speichert nur einen SHA-256-Hash des Keys.
Endpunkte
Alle Pfade stehen unter /api/v1/integration. Jeder Endpunkt verlangt einen Scope, ein neuer Key trägt alle vier.
| Methode und Pfad | Zweck | Scope |
|---|---|---|
GET /me | Mandant, Scopes, Tarif, Verbrauch | jeder Key |
GET /schemas | Schemata mit Datenfeldern | products:read |
POST /products | Produkt anlegen, optional mit Datenfeldern | products:write |
GET /products | Produkte auflisten (status, q, limit, offset) | products:read |
GET /products/{id} | Produkt lesen | products:read |
GET /products/{id}/fields | Aktuelle Datenfelder lesen | products:read |
PATCH /products/{id}/fields | Datenfelder setzen | products:write |
POST /products/{id}/passports | Passport erzeugen und veröffentlichen | passports:write |
GET /products/{id}/passports | Passport-Versionen auflisten | passports:read |
POST /passports/{id}/publish | Entwurfsversion veröffentlichen | passports:write |
GET /products/{id}/passport/qr | QR-Code als PNG oder SVG | passports:read |
GET /products/{id}/passport/pdf | Passport als PDF | passports:read |
Produkt anlegen
name ist Pflicht. Ohne schema_key gilt das Standard-Schema Ihres Mandanten; verfügbare Schlüssel liefert GET /schemas. Datenfelder lassen sich direkt mitgeben. Mit field_status bestimmen Sie den Status der Werte, nur approved fließt in einen Passport.
curl -X POST https://dpp.com2u.selfhost.eu/api/v1/integration/products \
-H "X-API-Key: $DPP_API_KEY" -H "Content-Type: application/json" \
-d '{"name":"Batteriemodul X1","category":"Industriebatterien",
"manufacturer_ref":"ART-4711","schema_key":"battery-v1",
"fields":{"battery_chemistry":"LFP"},"field_status":"approved"}'
Die Antwort mit Status 201 enthält die id des Produkts. Sie ist zugleich der eindeutige Produktidentifikator, der im QR-Code steckt. Das Produktkontingent Ihres Tarifs gilt wie in der Weboberfläche.
Passport veröffentlichen, QR-Code und PDF laden
Ein Passport friert die freigegebenen Datenfelder als neue Version ein. Fehlen Pflichtfelder, antwortet die API mit 422 und nennt sie in missing_fields.
curl -X POST -H "X-API-Key: $DPP_API_KEY" \
https://dpp.com2u.selfhost.eu/api/v1/integration/products/{id}/passports
curl -o qr.png -H "X-API-Key: $DPP_API_KEY" \
"https://dpp.com2u.selfhost.eu/api/v1/integration/products/{id}/passport/qr?format=png&size=600"
curl -o passport.pdf -H "X-API-Key: $DPP_API_KEY" \
https://dpp.com2u.selfhost.eu/api/v1/integration/products/{id}/passport/pdf
Für den QR-Code in Vektorform nutzen Sie format=svg. Das PDF gibt es erst nach der Veröffentlichung, vorher antwortet die API mit 404. Der QR-Code verweist auf die öffentliche Passportseite, mehr dazu unter Digitalen Produktpass aus Excel erstellen.
Fehlercodes
| Status | Bedeutung |
|---|---|
| 401 | Key fehlt, ist ungültig, widerrufen oder abgelaufen |
| 402 | Kontingent erschöpft: API-Aufrufe, Produkte oder Passports |
| 403 | Scope fehlt, Tarif ohne API, Key-Ersteller nicht mehr Owner oder Admin, Mandant gesperrt |
| 404 | Objekt nicht gefunden oder zu einem anderen Mandanten gehörig |
| 422 | Eingabe ungültig, unbekanntes Feld oder fehlende Pflichtfelder |
Bei 401 und 403 enthält detail ein Objekt mit code und message, zum Beispiel insufficient_scope oder api_not_in_plan. Bei 402 nennt detail Ressource, Limit und bisherigen Verbrauch.
Grenzen
Über die API setzen Sie Datenfelder der Produktebene. Felder für Chargen oder Einzelartikel pflegen Sie in der Weboberfläche. Es gibt kein Ratenlimit, aber ein Aufruf-Kontingent je Tarif; jeder authentifizierte Aufruf zählt. Das Abrufen der Spezifikation zählt nicht. Aktuelle Tarife und Kontingente finden Sie auf der Seite Preise. Eine Vorlage für den Massenimport ohne API bietet die Datenvorlage.
Häufige Fragen
- Wo bekomme ich einen API-Key?
In der Plattform im Bereich Mandant. Owner und Admins erzeugen dort den Key. Er wird nur einmal angezeigt und pro Mandant gibt es genau einen Key.
- In welchen Tarifen ist die API enthalten?
In Starter, Professional und Enterprise, nicht im Test-Tarif. Je Passport-Kontingent des Tarifs sind 10 API-Aufrufe enthalten. Aktuelle Werte stehen auf der Seite Preise.
- Gibt es ein Ratenlimit?
Es gibt kein eigenes Ratenlimit (HTTP 429). Begrenzt wird über das Aufruf-Kontingent des Tarifs. Ist es erschöpft, antwortet die API mit 402.
- Kann ich die Spezifikation in Swagger UI oder Postman laden?
Ja. Die OpenAPI-3.1-Datei steht als JSON und YAML zum Download bereit und lässt sich in gängige Werkzeuge und Code-Generatoren importieren.
Mit Ihren Produktdaten starten
30 Tage kostenlos testen: Daten importieren, prüfen und als Produktpass veröffentlichen.