Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion api/openapi.bundled.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
],
Expand Down
7 changes: 4 additions & 3 deletions api/openapi.bundled.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down
7 changes: 4 additions & 3 deletions api/paths/resolver/01_{gtin}.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down
6 changes: 4 additions & 2 deletions crates/dpp-resolver/src/handlers/resolve_by_gtin.rs
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down
Loading