GS1-Identifikatoren & Onboarding
GS1-Identifikatoren & Onboarding
qr3.app setzt auf ein BYO-GTIN/BYO-GLN-Modell (Bring Your Own): Du bringst deine bestehenden GS1-Identifikatoren mit — qr3 übernimmt den digitalen Product-Layer darüber.
Was macht GS1?
GS1 vergibt weltweit eindeutige Identifikatoren für Produkte und Standorte:
| Identifikator | Beschreibung | Beispiel |
|---|---|---|
| GTIN-14 | Global Trade Item Number (Produkt-ID) | 04012345678901 |
| GLN-13 | Global Location Number (Standort/Firma) | 4012345000009 |
| Company Prefix | Firmen-Präfix (7-12 Stellen), aus dem GTINs abgeleitet werden | 4012345 |
Um GTINs zu erhalten, brauchst du eine GS1-Mitgliedschaft bei deiner nationalen GS1-Organisation (z. B. GS1 Austria, GS1 Germany).
Was macht qr3.app?
qr3.app nutzt deine vorhandenen GS1-Identifikatoren und bietet:
- GS1-konformer Resolver —
/01/{GTIN}/21/{Serial}mit Content-Negotiation - EU Digital Product Passport — DPP-Erstellung, Validierung, Consumer-Ansicht
- Druckfertige QR-Assets — SVG, PNG, Vektor-PDF, EPS
- JSON-LD, DCAT-AP — Maschinenlesbare Produktdaten
Onboarding-Flow
1. GS1-Identifikatoren registrieren
Bevor du DPPs erstellen kannst, musst du deine GTINs (oder deinen Company Prefix) registrieren:
Per API:
curl -X POST https://qr3.app/v1/gs1/identifiers \ -H "Authorization: Bearer qr3_sk_..." \ -H "Content-Type: application/json" \ -d '{"identifier_type": "company_prefix", "value": "4012345", "label": "GreenPower GmbH"}'Per Dashboard:
- Navigiere zu Dashboard → GS1
- Wähle den Typ (GTIN, GLN oder Company Prefix)
- Gib den Wert ein — die Check-Digit-Validierung erfolgt automatisch
- Klicke Identifikator hinzufügen
Deine Organisation hält jeden Identifikator nur einmal, in einem ihrer Workspaces. Registrierst du einen entfernten Identifikator erneut, kommt er zurück (201, dieselbe id), als Selbstauskunft und nicht verifiziert, auch wenn er vor dem Entfernen verifiziert war; lag er in einem anderen Workspace, zieht er in diesen um. Ist er noch registriert, lautet die Antwort 409 mit reason already_registered (in diesem Workspace) oder registered_in_other_workspace (in einem anderen; workspace nennt ihn, wenn du ihn öffnen darfst). Wird der Workspace währenddessen archiviert, lautet reason workspace_archived; registriert wird nichts.
2. DPPs erstellen
Sobald eine GTIN registriert ist (direkt oder über einen Company Prefix), kannst du DPPs damit anlegen:
curl -X POST https://qr3.app/v1/dpp \ -H "Authorization: Bearer qr3_sk_..." \ -H "Content-Type: application/json" \ -d '{"gtin": "04012345678901", "product_name": "EcoMax Battery", ...}'3. Ownership-Prüfung
qr3.app prüft bei jeder DPP-Erstellung, ob die verwendete GTIN zu deiner Organisation gehört:
- Direkte Registrierung — Die GTIN ist als
identifier_type: "gtin"registriert - Prefix-Match — Die GTIN beginnt mit einem registrierten Company Prefix (Position 2..N der GTIN-14)
Ohne passende Registrierung gibt es einen 422-Fehler mit dem Hinweis, die GTIN zuerst zu registrieren.
Dieselbe Prüfung gilt für POST /v1/dpp/batch und POST /v1/dpp/import, synchron und als eingereihter Job: Eine GTIN ohne Registrierung weist die ganze Anfrage mit 422 ab (Titel GTIN Not Registered, die abgewiesenen GTINs in gtins, ihre Zahl in total); angelegt oder eingereiht wird nichts. Bestehende Pässe bleiben unberührt. Die Meldung eines Passes ans EU-Produktregister (POST /v1/dpp/:id/register) verlangt zusätzlich, dass die Organisation des Passes die GTIN hält (siehe Abschnitt 4); sonst lautet die Antwort 409 (Titel GTIN Held by Another Organization).
4. Verifizierung
Eine Registrierung über API oder Dashboard ist eine Selbstauskunft (verified_by: "self", verified_at: null). Ein verifizierter Identifikator trägt verified_at (verified_by: "gs1_registry" oder "admin"); qr3 setzt das, nachdem es einen Antrag mit Nachweis geprüft hat (siehe unten). Eine verifizierte GTIN oder ein verifizierter Company Prefix:
- bindet den öffentlichen GS1-Resolver für diese GTINs an deine Organisation, auch wenn eine andere Organisation früher einen Pass angelegt hat;
- sperrt jede andere Organisation: Ein DPP für eine solche GTIN, auch per Batch oder Import, ergibt
409(errors/conflict, TitelGTIN Verified by Another Organization, die abgewiesenen GTINs ingtins). Batch und Import werden als Ganzes abgewiesen.
Ohne Verifizierung gehört eine GTIN der Organisation, die sie am längsten ohne Unterbrechung hält (Details: GS1-Resolver). Löst deine GTIN zum Pass einer anderen Organisation auf, beantrage ihre Verifizierung.
Verifizierung beantragen
Im Dashboard unter GS1, Abschnitt Verifizierung beantragen: Typ (GTIN oder Company Prefix) und Wert eingeben, einen Nachweis hochladen und den Antrag stellen. Der Nachweis zeigt, dass deine Organisation die GTIN oder den Company Prefix von GS1 hat, zum Beispiel die Lizenzbestätigung deiner GS1-Organisation (PDF, PNG, JPEG oder WebP). Er wird privat gespeichert; nur deine Organisation und das qr3-Team sehen ihn. Eine automatische Abfrage bei GS1 gibt es nicht.
Das qr3-Team prüft den Nachweis und gibt frei oder lehnt mit Begründung ab. Nach der Freigabe ist der Identifikator verifiziert (verified_by: "admin") und wirkt wie oben beschrieben. Über jede Entscheidung bekommst du eine E-Mail an die Benachrichtigungsadresse deiner Organisation, sonst an die Adresse des Eigentümers.
- Wer: nur Organisations-Admins (
org_adminoder der Eigentümer). Andere Rollen und direkte API-Keys erhalten403. Auch der qr3-Support kann keinen Antrag in deinem Namen stellen. - Status:
pending(in Prüfung),approved,rejected,withdrawn(von dir zurückgezogen) oderrevoked(Verifizierung später widerrufen). Einen Antrag in Prüfung kannst du zurückziehen. 409:reasonistrequest_pending(für diesen Identifikator läuft schon ein Antrag deiner Organisation),already_verifiedoderverified_elsewhere(eine andere Organisation hat ihn verifiziert; sie wird nicht genannt). Hält deine Organisation die GS1-Lizenz dafür, schreib an [email protected]: qr3 prüft beide Seiten und kann eine Verifizierung widerrufen. Ändert sich der Nachweis, während der Antrag eingereicht wird, lautetreasonproof_changed; dann den Antrag erneut stellen.- Anderer Workspace: Bei
request_pendingnennenworkspace(id,name) undrequest_idden offenen Antrag, wenn du seinen Workspace öffnen darfst; zieh ihn dort zurück. Sonst sind beidenull. Wird der Workspace archiviert, während du den Antrag stellst, lautetreasonworkspace_archived; gestellt wird nichts. - Archivieren: Wird ein Workspace archiviert, werden seine Anträge in Prüfung zurückgezogen (
withdrawn, im Audit-Log mit dem Grundworkspace archived). Der Nachweis ist danach wieder frei, und du kannst den Identifikator aus einem anderen Workspace erneut beantragen. - Nachweis: Solange der Antrag in Prüfung oder freigegeben ist, lässt sich die Datei weder ersetzen noch löschen (
409,reason: "gs1_verification_proof"). Nach Ablehnung, Rückzug oder Widerruf ist sie wieder frei. - Entfernen: Ein verifizierter Identifikator lässt sich nicht entfernen (
409,reason: "verified"). Die Verifizierung hebt nur qr3 per Widerruf auf.
Wann brauche ich beides?
| Aufgabe | GS1 | qr3.app |
|---|---|---|
| Eigene GTINs/GLNs erhalten | ✅ Mitgliedschaft nötig | — |
| GTIN-Check-Digit validieren | — | ✅ API + Dashboard |
| QR-Code für Produkt erzeugen | — | ✅ |
| DPP nach EU-Verordnung erstellen | — | ✅ |
| GS1 Digital Link auflösen | — | ✅ Resolver + /.well-known/gs1resolver |
| In der EU-Registry registrieren | Geplant (Q4 2026) | Geplant (Phase 4c) |
API-Referenz
POST /v1/gs1/identifiers— RegistrierenGET /v1/gs1/identifiers— AuflistenDELETE /v1/gs1/identifiers/:id— EntfernenPOST /v1/gs1/validate— Validieren (ohne Registrierung, kein Auth)POST /v1/gs1/verifications— Verifizierung beantragen (Organisations-Admins)GET /v1/gs1/verifications— Anträge auflistenGET /v1/gs1/verifications/:id— Antrag abrufenPOST /v1/gs1/verifications/:id/withdraw— Antrag zurückziehen
Siehe API-Dokumentation für Details.