Przejdź do głównej zawartości

Resolver GS1

Resolver GS1

Resolver GS1 to publiczna warstwa odczytu dla DPP. Kanoniczny adres URL wygląda następująco:

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}

Przy tworzeniu DPP (POST /v1/dpp) obowiązują następujące zasady: serial i lot muszą używać bezpiecznych segmentów ścieżki GS1: tylko A-Z, a-z, 0-9, ., _, ~, - oraz długość od 1 do 20 znaków. Zarezerwowane separatory adresów URL są odrzucane, aby link kanoniczny pozostał możliwy do rozwiązania.

Negocjacja zawartości

Ten sam resolver dostarcza różne reprezentacje w zależności od nagłówka Accept:

AcceptOdpowiedź
text/htmlHTML dla konsumenta
application/ld+jsonJSON-LD
application/jsonSurowy DPP-JSON
application/linkset+jsonZbiór linków (Linkset) z alternatywami

Trasy widoczne publicznie

  • GET /01/... to kanoniczny resolver
  • GET /dpp/:gtin/:serial?lot=... to alias HTML
  • GET /v1/dpp/:id/qr.svg zwraca SVG
  • GET /v1/dpp/:id/qr.png zwraca PNG
  • GET /v1/dpp/:id/qr.pdf zwraca PDF
  • GET /v1/dpp/:id/qr.eps zwraca EPS

Widoczność zasobów QR zależy od statusu DPP:

  • live jest publicznie dostępny bez uwierzytelniania
  • draft i archived wymagają ważnego kontekstu uwierzytelniania oraz dostępu do obszaru roboczego (Workspace)
  • Nieprawidłowe uwierzytelnienie zwraca 401
  • Niewidoczne lub należące do innych podmiotów obszary robocze (Workspaces) zwracają 404

Fallback

Jeśli nie ma lokalnego dopasowania, resolver GS1 przekierowuje ze statusem 307 do https://id.gs1.org. Dla aliasu GTIN /dpp/:gtin/:serial?lot=... dotyczy to również nieprawidłowej cyfry kontrolnej GTIN: gtin, lot i serial są kodowane oddzielnie jako segmenty ścieżki URL, także zarezerwowane separatory. Przekierowanie nie potwierdza poprawności GTIN ani dostępności danych w GS1.

Wyjątek: jeśli zdekodowany identyfikator to wyłącznie . lub .., alias bez lokalnego dopasowania odpowiada statusem 422, formatem application/problem+json, typem https://docs.qr3.app/errors/validation i wskazuje pole w errors[], bez przekierowania. Parsery URL normalizują te segmenty nawet w zakodowanej postaci. Wartości takie jak LOT.1 i ... nadal można przekazywać. Wyjątek dotyczy tylko tego aliasu bez dopasowania; walidacja przy tworzeniu, resolver kanoniczny i istniejące dopasowania pozostają bez zmian.

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

W praktyce

  1. Utwórz DPP w panelu nawigacyjnym (Dashboard).
  2. Użyj identyfikatora URI GS1 jako celu kodu QR.
  3. Skieruj systemy konsumujące na żądany format za pomocą nagłówka Accept.