{
  "page": "udi",
  "name": "UDI — Unique Device Identification",
  "address": "https://barcoding.dev/schemes/udi",
  "scheme": "udi.gs1",
  "reference": {
    "grammar": "One regulatory regime, three issuing agencies, three grammars: GS1 (GTIN-14 as DI, AIs as PI), HIBCC (+$ conventions), ICCBBA (ISBT 128). The FDA UDI formats document is the umbrella grammar.",
    "check": "Per agency: the GS1 form rides the mod-10 rail; structure per issuing agency's published format.",
    "canonical": "DI (device identifier) split from PI (production identifiers — lot, serial, expiry), each typed.",
    "symbologies": "GS1 DataMatrix and GS1-128 dominate; HIBCC and ICCBBA carriers per agency",
    "enrichment": "AccessGUDID / openFDA device (CC0) — GMDN-licensed columns stripped at ingest; the served record is free and clear by construction",
    "join": "The DI is the what of a device event; the PIs decide instance vs lot grain, the same way AI 21/10 do for retail GTINs."
  },
  "registry": {
    "udi.gs1": {
      "scheme": "udi.gs1",
      "title": "UDI (GS1 issuing agency) — DI | PI",
      "grammar": "^\\(?01\\)?\\d{14}.*",
      "check": {
        "algorithm": "mod10",
        "label": "mod10 pass",
        "source": "FDA UDI formats (GS1 agency); GS1 GenSpecs 26.0",
        "vectors": [
          {
            "value": "(01)00340030011417(17)260930(10)LOT42",
            "valid": true
          }
        ]
      },
      "canonical": "DI = GTIN-14; PI = the AI-keyed production identifiers",
      "segments": [
        {
          "name": "DI",
          "note": "device identifier — AI (01), the GTIN-14"
        },
        {
          "name": "check",
          "note": "the DI's own check digit — the last digit of AI (01)",
          "color": "green",
          "philosophy": "this character exists only to certify the others"
        },
        {
          "name": "PI",
          "note": "production identifiers — expiry (17), lot (10), serial (21)"
        }
      ],
      "symbologies": [
        "gs1datamatrix",
        "gs1-128"
      ],
      "generate": {
        "emits": [
          "gs1datamatrix",
          "gs1-128"
        ]
      },
      "policy": {},
      "handoff": "read here · resolved by id.org.ai",
      "address": "/01/{gtin14}",
      "note": "HIBCC / ICCBBA issuing-agency grammars are not parsed this run — typed unrecognized with the agency named in the hint",
      "digest": "sha256:440db3e1c3ffcda1e8933b7cebc668e8647dcf334b624f70a21f4b134976d249",
      "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/udi-the-fda-multi-scheme-resolver/",
    "https://barcoding.dev/blog/pharma-already-lives-in-2027/"
  ],
  "faces": {
    "html": "https://barcoding.dev/schemes/udi/",
    "json": "https://barcoding.dev/schemes/udi.json",
    "markdown": "https://barcoding.dev/schemes/udi.md"
  }
}
