{
  "page": "dl",
  "name": "GS1 Digital Link — the URI form",
  "address": "https://barcoding.dev/schemes/dl",
  "scheme": "gs1.digital-link",
  "reference": {
    "grammar": "An https URI whose path carries AI key/value pairs — /01/<gtin>/21/<serial> — with qualifier order fixed by the Digital Link grammar; canonical (uncompressed) and compressed forms are both defined, both directions.",
    "check": "The carried AIs bring their rails (AI 01 mod-10); the URI grammar itself is structural.",
    "canonical": "The canonical uncompressed URI, byte-round-trippable with the element-string form of the same AI map.",
    "symbologies": "QR and GS1 DataMatrix are the Sunrise 2027 carriers; the URI is also a plain link",
    "enrichment": "— (a form of GS1 keys; enrichment attaches to the resolved key)",
    "join": "Resolution: GS1-Conformant Resolver 1.2.0 — description file at /.well-known/gs1resolver, RFC 9264 linksets, gs1:defaultLink; 400 for an invalid URI, 404 for an absent linkType."
  },
  "registry": {
    "gs1.digital-link": {
      "scheme": "gs1.digital-link",
      "title": "GS1 Digital Link URI",
      "grammar": "^https?://[^/]+/(01|00|417|8006|8003|8004|8018|8017|253|255|401|402|414|415|8010)/.+",
      "check": {
        "algorithm": "per-key",
        "label": "mod10 pass",
        "source": "GS1 Digital Link URI Syntax 1.6.0; DL 1.1.4 (compression)",
        "vectors": [
          {
            "value": "https://id.gs1.org/01/09506000134352/10/LOT42/21/SER1?17=260930",
            "valid": true
          },
          {
            "value": "https://id.gs1.org/01/09506000134353",
            "valid": false
          }
        ]
      },
      "canonical": "canonical uncompressed DL URI at https://id.gs1.org, ordered path qualifiers 22 → 10 → 21, other AIs as sorted query",
      "segments": [
        {
          "name": "primary key",
          "note": "/01/{gtin14}"
        },
        {
          "name": "primary-key check digit",
          "note": "the check lives inside the /01/ key — its last digit",
          "color": "green",
          "philosophy": "this character exists only to certify the others"
        },
        {
          "name": "qualifiers",
          "note": "fixed order: 22 CPV → 10 lot → 21 serial"
        },
        {
          "name": "data attributes",
          "note": "query parameters, AI-keyed"
        }
      ],
      "symbologies": [
        "qrcode",
        "gs1datamatrix"
      ],
      "generate": {
        "emits": [
          "qrcode",
          "gs1datamatrix"
        ]
      },
      "policy": {},
      "handoff": "read here · resolved by id.org.ai",
      "address": "/01/{gtin14}",
      "digest": "sha256:d1bebebada37a8d48554954335427b3437d25079ef7e81bf81cb4055659e9b03",
      "digest_source": "engine/pins/PINS.json — pin verified against the artifact this build consumed"
    }
  },
  "resolution_stance": "barcoding.dev detects, parses, verifies, enriches and generates — the codec and the data layer. Resolution — an identifier answered with identity and its linkset of live doors — is ONE capability family-wide, served by the family's identity layer, id.org.ai; vertical estates project the same one capability (vehicles: auto.dev). This registry row is the data that resolution consumes.",
  "posts": [
    "https://barcoding.dev/blog/digital-link-from-the-uri-down/",
    "https://barcoding.dev/blog/sunrise-2027-stated-exactly/",
    "https://barcoding.dev/blog/qr-or-datamatrix-who-scans/",
    "https://barcoding.dev/blog/linksets-doors-with-provenance/",
    "https://barcoding.dev/blog/resolve-through-not-over/"
  ],
  "faces": {
    "html": "https://barcoding.dev/schemes/dl/",
    "json": "https://barcoding.dev/schemes/dl.json",
    "markdown": "https://barcoding.dev/schemes/dl.md"
  }
}
