Sari la conținut

GS1-Resolver

GS1-Resolver

GS1-Resolver este stratul public de citire pentru un DPP. URL-ul canonic arată astfel:

https://qr3.app/01/{GTIN}
https://qr3.app/01/{GTIN}/10/{LOT}
https://qr3.app/01/{GTIN}/21/{SERIAL}
https://qr3.app/01/{GTIN}/10/{LOT}/21/{SERIAL}

La crearea unui DPP (POST /v1/dpp), se aplică următoarele reguli: serial și lot trebuie să utilizeze segmente de cale GS1 sigure: doar A-Z, a-z, 0-9, ., _, ~, - și o lungime de la 1 până la 20 de caractere. Delimitatorii URL rezervați sunt respinși pentru ca linkul canonic să rămână rezolvabil.

Content Negotiation

Același resolver oferă reprezentări diferite în funcție de antetul Accept:

AcceptRăspuns
text/htmlHTML pentru consumatori
application/ld+jsonJSON-LD
application/jsonJSON DPP brut
application/linkset+jsonLinkset cu alternative

Rute vizibile public

  • GET /01/... este resolverul canonic
  • GET /dpp/:gtin/:serial?lot=... este un alias HTML
  • GET /v1/dpp/:id/qr.svg returnează SVG-ul
  • GET /v1/dpp/:id/qr.png returnează PNG-ul
  • GET /v1/dpp/:id/qr.pdf returnează PDF-ul
  • GET /v1/dpp/:id/qr.eps returnează EPS-ul

Vizibilitatea activelor QR depinde de starea DPP:

  • live este accesibil public fără autentificare
  • draft și archived necesită un context de autentificare valid plus acces la spațiul de lucru (workspace)
  • Autentificarea nevalidă returnează 401
  • Spațiile de lucru (workspaces) invizibile sau străine returnează 404

Fallback

Fără o potrivire locală, resolverul GS1 redirecționează cu 307 către https://id.gs1.org. Pentru aliasul GTIN /dpp/:gtin/:serial?lot=..., acest lucru se aplică și unui GTIN cu cifră de control nevalidă: gtin, lot și serial sunt codificate separat ca segmente de cale URL, inclusiv delimitatorii rezervați. Redirecționarea nu confirmă validitatea GTIN sau disponibilitatea datelor la GS1.

Excepție: dacă un identificator decodificat este doar . sau .., aliasul fără potrivire locală răspunde cu 422, application/problem+json, tipul https://docs.qr3.app/errors/validation și câmpul afectat în errors[], fără redirecționare. Parserele URL normalizează aceste segmente chiar și în forma codificată. Valori precum LOT.1 și ... pot fi în continuare delegate. Excepția privește doar acest alias fără potrivire; validarea la creare, resolverul canonic și potrivirile existente rămân neschimbate.

GET /dpp/{GTIN}/UNKNOWN?lot=LOT%2F1
307 Location: https://id.gs1.org/01/{GTIN}/10/LOT%2F1/21/UNKNOWN
GET /dpp/{GTIN}/UNKNOWN?lot=.
422 Content-Type: application/problem+json

În practică

  1. Creează DPP în panoul de control (dashboard).
  2. Utilizează URI-ul GS1 ca țintă pentru codul QR.
  3. Direcționează sistemele consumatoare către formatul dorit utilizând antetul Accept.