From b874c150b2f4dcbc75b10e0d5a0657192a069480 Mon Sep 17 00:00:00 2001 From: LKSNDRTMLKV Date: Fri, 16 Oct 2026 12:21:36 +0200 Subject: [PATCH] docs(resolver): stop claiming GS1 conformance --- CHANGELOG.md | 10 ++++++++++ api/openapi.bundled.json | 2 +- api/openapi.bundled.yaml | 7 ++++--- api/paths/resolver/01_{gtin}.yaml | 7 ++++--- crates/dpp-resolver/src/handlers/resolve_by_gtin.rs | 6 ++++-- 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31ce1393..7a72e554 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -291,6 +291,16 @@ under the pre-1.0 conventions in [VERSIONING.md](docs/governance/VERSIONING.md): ### Fixed +- **The resolver no longer says it conforms to the GS1 Conformant Resolver + Standard.** The handler's documentation and the description of `GET + /01/{gtin}` called the route a "GS1-conformant resolver", and nothing backed + the claim: no revision was named, no test named the standard's criteria, and + two required criteria are unmet (a description of the resolver served from + `/.well-known/gs1resolver`, and decompression of a compressed Digital Link). + The text now describes the behaviour and says it has not been assessed against + the standard. A conformance claim, if one is made, comes from assessing every + criterion; that work is tracked in #477. (#469) + - **`odal` runs the published images outside a clone of this repository.** The guided setup, the console's Start and `odal update` decided whether to build from the profile kind, and every self-hosted node infers `dev` because it is diff --git a/api/openapi.bundled.json b/api/openapi.bundled.json index a8cbb1ca..f487e290 100644 --- a/api/openapi.bundled.json +++ b/api/openapi.bundled.json @@ -4457,7 +4457,7 @@ "get": { "operationId": "resolveByGtin", "summary": "GS1 Digital Link resolver", - "description": "GS1-conformant resolver (GS1-CRSV1) keyed by GTIN-14 — the carrier this node\nprints for a model-level passport. Behaviour depends\non the `linkType` query / `Accept` header:\n- default → `307` redirect to the HTML DPP page\n- `?linkType=gs1:pip` / `gs1:dpp` (and related) → `307` redirect to the DPP\n- `?linkType=linkset` or `Accept: application/linkset+json` → `200`\n RFC 9264 linkset\n\nA GTIN takes a consumer product variant (AI 22), a batch (AI 10) and a\nserial (AI 21), in that order and each optional, or a third-party\nextension (AI 235) on its own; each of those shapes is its own path below.\nAny other path under `/01/` cannot be a GS1 Digital Link, because its\nqualifiers are out of order, repeated, not ones a GTIN takes, or empty, and\nanswers `400` without a lookup.\n", + "description": "GS1 Digital Link resolution keyed by GTIN-14, the carrier this node prints\nfor a model-level passport. It has not been assessed against the GS1\nConformant Resolver Standard, and nothing here claims conformance. Behaviour\ndepends on the `linkType` query / `Accept` header:\n- default → `307` redirect to the HTML DPP page\n- `?linkType=gs1:pip` / `gs1:dpp` (and related) → `307` redirect to the DPP\n- `?linkType=linkset` or `Accept: application/linkset+json` → `200`\n RFC 9264 linkset\n\nA GTIN takes a consumer product variant (AI 22), a batch (AI 10) and a\nserial (AI 21), in that order and each optional, or a third-party\nextension (AI 235) on its own; each of those shapes is its own path below.\nAny other path under `/01/` cannot be a GS1 Digital Link, because its\nqualifiers are out of order, repeated, not ones a GTIN takes, or empty, and\nanswers `400` without a lookup.\n", "tags": [ "Public Resolver" ], diff --git a/api/openapi.bundled.yaml b/api/openapi.bundled.yaml index 7d143bf0..728da99d 100644 --- a/api/openapi.bundled.yaml +++ b/api/openapi.bundled.yaml @@ -3676,9 +3676,10 @@ paths: operationId: resolveByGtin summary: GS1 Digital Link resolver description: | - GS1-conformant resolver (GS1-CRSV1) keyed by GTIN-14 — the carrier this node - prints for a model-level passport. Behaviour depends - on the `linkType` query / `Accept` header: + GS1 Digital Link resolution keyed by GTIN-14, the carrier this node prints + for a model-level passport. It has not been assessed against the GS1 + Conformant Resolver Standard, and nothing here claims conformance. Behaviour + depends on the `linkType` query / `Accept` header: - default → `307` redirect to the HTML DPP page - `?linkType=gs1:pip` / `gs1:dpp` (and related) → `307` redirect to the DPP - `?linkType=linkset` or `Accept: application/linkset+json` → `200` diff --git a/api/paths/resolver/01_{gtin}.yaml b/api/paths/resolver/01_{gtin}.yaml index e9f2a47f..a62634ad 100644 --- a/api/paths/resolver/01_{gtin}.yaml +++ b/api/paths/resolver/01_{gtin}.yaml @@ -2,9 +2,10 @@ get: operationId: resolveByGtin summary: GS1 Digital Link resolver description: | - GS1-conformant resolver (GS1-CRSV1) keyed by GTIN-14 — the carrier this node - prints for a model-level passport. Behaviour depends - on the `linkType` query / `Accept` header: + GS1 Digital Link resolution keyed by GTIN-14, the carrier this node prints + for a model-level passport. It has not been assessed against the GS1 + Conformant Resolver Standard, and nothing here claims conformance. Behaviour + depends on the `linkType` query / `Accept` header: - default → `307` redirect to the HTML DPP page - `?linkType=gs1:pip` / `gs1:dpp` (and related) → `307` redirect to the DPP - `?linkType=linkset` or `Accept: application/linkset+json` → `200` diff --git a/crates/dpp-resolver/src/handlers/resolve_by_gtin.rs b/crates/dpp-resolver/src/handlers/resolve_by_gtin.rs index 2b99cd03..4964626a 100644 --- a/crates/dpp-resolver/src/handlers/resolve_by_gtin.rs +++ b/crates/dpp-resolver/src/handlers/resolve_by_gtin.rs @@ -1,4 +1,5 @@ -//! Handlers for the GS1 Digital Link routes, conforming to GS1-CRSV1. +//! Handlers for the GS1 Digital Link routes. Not assessed against the GS1 +//! Conformant Resolver Standard (GS1-CRSV1), so nothing here claims conformance. //! //! A printed carrier may carry more than the GTIN. This node's publisher emits //! `/01/{gtin}` for a model-level passport, `/01/{gtin}/10/{batch}` for a @@ -47,7 +48,8 @@ pub struct ByGtinQuery { /// GS1 Digital Link resolver — `GET /01/{gtin}[?linkType=…]` /// -/// Conforms to the GS1 Conformant Resolver Standard (GS1-CRSV1): +/// Implements GS1 Digital Link resolution as described below; not assessed +/// against the GS1 Conformant Resolver Standard (GS1-CRSV1): /// - `?linkType=linkset` or `Accept: application/linkset+json` → RFC 9264 linkset /// - `?linkType=gs1:pip` / `?linkType=gs1:dpp` → 307 redirect to DPP page /// - Default (no qualifier) → 307 redirect to the HTML product page