Gå til indhold

GS1-identifikatorer & onboarding

GS1-identifikatorer & onboarding

qr3.app er baseret på en BYO-GTIN/BYO-GLN-model (Bring Your Own): Du medbringer dine eksisterende GS1-identifikatorer — qr3 overtager det digitale produktlag ovenpå.

Hvad gør GS1?

GS1 udsteder globalt unikke identifikatorer til produkter og lokationer:

IdentifikatorBeskrivelseEksempel
GTIN-14Global Trade Item Number (Produkt-ID)04012345678901
GLN-13Global Location Number (Lokation/Virksomhed)4012345000009
Company PrefixVirksomhedspræfiks (7-12 cifre), som GTIN’er afledes fra4012345

For at få GTIN’er skal du have et GS1-medlemskab hos din nationale GS1-organisation (f.eks. GS1 Denmark, GS1 Germany).

Hvad gør qr3.app?

qr3.app bruger dine eksisterende GS1-identifikatorer og tilbyder:

  • GS1-kompatibel resolver — /01/{GTIN}/21/{Serial} med Content-Negotiation
  • EU Digital Product Passport — DPP-oprettelse, validering, forbrugervisning
  • Trykklare QR-aktiver — SVG, PNG, vektor-PDF, EPS
  • JSON-LD, DCAT-AP — Maskinlæsbare produktdata

Onboarding-flow

1. Registrer GS1-identifikatorer

Før du kan oprette DPP’er, skal du registrere dine GTIN’er (eller dit Company Prefix):

Per API:

Terminal window
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"}'

Via dashboard:

  1. Gå til Dashboard → GS1
  2. Vælg type (GTIN, GLN eller Company Prefix)
  3. Indtast værdien — kontrolciffer-valideringen sker automatisk
  4. Klik på Tilføj identifikator

Din organisation har hver identifikator kun én gang, i et af sine workspaces. Registrerer du en fjernet identifikator igen, kommer den tilbage (201, samme id) som egen erklæring og ikke verificeret, også selvom den var verificeret, før den blev fjernet; lå den i et andet workspace, flytter den hertil. Er den stadig registreret, er svaret 409 med reason already_registered (i dette workspace) eller registered_in_other_workspace (i et andet; workspace nævner det, hvis du må åbne det). Arkiveres workspacet imens, er reason workspace_archived; der registreres intet.

2. Opret DPP’er

Så snart et GTIN er registreret (direkte eller via et Company Prefix), kan du oprette DPP’er med det:

Terminal window
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. Ejerskabskontrol

qr3.app kontrollerer ved hver DPP-oprettelse, om det anvendte GTIN tilhører din organisation:

  1. Direkte registrering — GTIN’et er registreret som identifier_type: "gtin"
  2. Præfiks-match — GTIN’et begynder med et registreret Company Prefix (position 2..N i GTIN-14)

Uden en matchende registrering returneres en 422-fejl med besked om at registrere GTIN’et først.

Samme kontrol gælder for POST /v1/dpp/batch og POST /v1/dpp/import, synkront og som job i kø: ét GTIN uden registrering afviser hele forespørgslen med 422 (titel GTIN Not Registered, de afviste GTIN’er i gtins, deres antal i total); intet oprettes eller stilles i kø. Eksisterende pas berøres ikke. Indsendelse af et pas til EU-produktregisteret (POST /v1/dpp/:id/register) kræver desuden, at passets organisation er indehaver af GTIN’et (se afsnit 4); ellers er svaret 409 (titel GTIN Held by Another Organization).

4. Verificering

En registrering via API’et eller dashboardet er en selverklæring (verified_by: "self", verified_at: null). En verificeret identifikator har verified_at (verified_by: "gs1_registry" eller "admin"); det sætter qr3, når en anmodning med bevis er tjekket (se nedenfor). Et verificeret GTIN eller Company Prefix:

  • binder den offentlige GS1-resolver for disse GTIN’er til din organisation, også selvom en anden organisation har oprettet et pas tidligere;
  • spærrer for alle andre organisationer: oprettelse af et DPP for et sådant GTIN, også via batch eller import, giver 409 (errors/conflict, titel GTIN Verified by Another Organization, de afviste GTIN’er i gtins). Batch og import afvises i deres helhed.

Uden verificering tilhører et GTIN den organisation, der har haft det længst uden afbrydelse (detaljer: GS1-resolver). Opløses dit GTIN til en anden organisations pas, så anmod om at få det verificeret.

Anmod om verificering

I dashboardet under GS1, afsnittet Anmod om verificering: indtast typen (GTIN eller Company Prefix) og værdien, upload et bevis, og indsend anmodningen. Beviset viser, at din organisation har GTIN’et eller Company Prefix fra GS1, for eksempel licensbekræftelsen fra din GS1-organisation (PDF, PNG, JPEG eller WebP). Det gemmes privat; kun din organisation og qr3-teamet kan se det. Der er ingen automatisk forespørgsel hos GS1.

qr3-teamet tjekker beviset og godkender anmodningen eller afviser den med en begrundelse. Efter godkendelsen er identifikatoren verificeret (verified_by: "admin") og virker som beskrevet ovenfor. Du får en e-mail om hver afgørelse, sendt til din organisations notifikationsadresse eller ellers til ejerens adresse.

  • Hvem: kun organisationsadministratorer (org_admin eller ejeren). Andre roller og direkte API-nøgler får 403. Heller ikke qr3-support kan indsende en anmodning i dit navn.
  • Status: pending (under behandling), approved, rejected, withdrawn (trukket tilbage af dig) eller revoked (verificering tilbagekaldt senere). En anmodning under behandling kan du trække tilbage.
  • 409: reason er request_pending (din organisation har allerede en anmodning for denne identifikator), already_verified eller verified_elsewhere (en anden organisation har verificeret den; den nævnes ikke). Har din organisation GS1-licensen til den, så skriv til [email protected]: qr3 tjekker begge sider og kan tilbagekalde en verificering. Ændres beviset, mens anmodningen indsendes, er reason proof_changed; indsend så anmodningen igen.
  • Andet workspace: ved request_pending nævner workspace (id, name) og request_id den åbne anmodning, hvis du må åbne dens workspace; træk den tilbage der. Ellers er begge null. Arkiveres workspacet, mens du indsender anmodningen, er reason workspace_archived; der indsendes intet.
  • Arkivering: når et workspace arkiveres, trækkes dets anmodninger under behandling tilbage (withdrawn, i auditloggen med årsagen workspace archived). Beviset er derefter frit igen, og du kan anmode om identifikatoren igen fra et andet workspace.
  • Bevis: så længe anmodningen er under behandling eller godkendt, kan filen hverken erstattes eller slettes (409, reason: "gs1_verification_proof"). Efter afvisning, tilbagetrækning eller tilbagekaldelse er den fri igen.
  • Fjern: en verificeret identifikator kan ikke fjernes (409, reason: "verified"). Kun qr3 ophæver verificeringen ved at tilbagekalde den.

Hvornår har jeg brug for hvad?

OpgaveGS1qr3.app
Få egne GTIN’er/GLN’er✅ Medlemskab påkrævet—
Validere GTIN-kontrolciffer—✅ API + Dashboard
Generere QR-kode til produkt—✅
Oprette DPP i henhold til EU-forordning—✅
Opløse GS1 Digital Link—✅ Resolver + /.well-known/gs1resolver
Registrere i EU-registretPlanlagt (Q4 2026)Planlagt (Fase 4c)

API-reference

  • POST /v1/gs1/identifiers — Registrer
  • GET /v1/gs1/identifiers — Vis liste
  • DELETE /v1/gs1/identifiers/:id — Fjern
  • POST /v1/gs1/validate — Valider (uden registrering, ingen godkendelse)
  • POST /v1/gs1/verifications — Anmod om verificering (organisationsadministratorer)
  • GET /v1/gs1/verifications — List anmodninger
  • GET /v1/gs1/verifications/:id — Hent en anmodning
  • POST /v1/gs1/verifications/:id/withdraw — Træk en anmodning tilbage

Se API-dokumentation for detaljer.