[{"data":1,"prerenderedAt":1787},["ShallowReactive",2],{"navigation-docsEN":3,"navigation-blogEN":725,"docs-EN-\u002Fdocs\u002Fconnectors\u002Fidentifiers-gtin-and-sku":743,"docsNav-EN-\u002Fdocs":1274,"docsSecNav-EN-\u002Fdocs\u002Fconnectors\u002Fidentifiers-gtin-and-sku":1474},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,22,41,53,74,88,114,128,156,167,182,206,412,428,572,647,662,669],{"title":10,"path":6,"stem":11,"description":12,"icon":13,"tags":14},"Documentation","docs\u002Findex","Introduction to documentation on EPCIS and OpenEPCIS tools","heroicons-outline:document-text",[15,16,17,18,19,20,21],"openepcis","epcis-2-0","epcis-documentation","epcis-standard","open-core","open-source","epcis-tools",{"title":23,"path":24,"stem":25,"children":26,"description":28,"icon":29,"tags":40},"Introduction","\u002Fdocs\u002Fintroduction","docs\u002F01.introduction\u002Findex",[27],{"title":23,"path":24,"stem":25,"description":28,"icon":29,"tags":30},"Why EPCIS is necessary and how it can help organizations of all sizes and types.","heroicons-outline:globe-alt",[16,31,32,33,34,35,36,37,38,39],"epcis","epcis-1-2","gs1-epcis-standard","supply-chain","traceability","data-sharing","tracking","tracing","visibility-events",[16,31,32,33,34,35,36,37,38,39],{"title":42,"path":43,"stem":44,"children":45,"description":47,"icon":48,"tags":52},"EPCIS","\u002Fdocs\u002Fepcis","docs\u002F02.epcis\u002Findex",[46],{"title":42,"path":43,"stem":44,"description":47,"icon":48,"tags":49},"Discover the specifics of EPCIS, how it works, and what OpenEPCIS is.","i-custom-open-epcis",[16,31,32,33,50,51,39],"iso-iec-19987","iso-iec-19988",[16,31,32,33,50,51,39],{"title":54,"path":55,"stem":56,"children":57,"description":59,"icon":60,"tags":73},"Format Converter","\u002Fdocs\u002Fformat-converter","docs\u002F03.format-converter\u002Findex",[58],{"title":54,"path":55,"stem":56,"description":59,"icon":60,"tags":61},"OpenEPCIS solution to convert EPCIS 2.0 and 1.2 document or single event from XML to JSON\u002FJSON-LD and vice versa.","heroicons-outline:arrows-right-left",[16,62,63,64,65,66,67,21,68,69,70,71,72],"json","json-ld","xml","events","format-converter","convert","convert-epcis-events","format","converter","epcis-tool","tools",[16,62,63,64,65,66,67,21,68,69,70,71,72],{"title":75,"path":76,"stem":77,"children":78,"description":80,"icon":81,"tags":87},"Version Converter","\u002Fdocs\u002Fversion-converter","docs\u002F04.version-converter\u002Findex",[79],{"title":75,"path":76,"stem":77,"description":80,"icon":81,"tags":82},"OpenEPCIS solution to convert EPCIS XML document from version 1.2 to 2.0 and vice versa.","heroicons:arrows-up-down",[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],"version-converter","convert-epcis-version","version","epcis-version",[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],{"title":89,"path":90,"stem":91,"children":92,"description":94,"icon":95,"tags":113},"Identifier Converter","\u002Fdocs\u002Fidentifier-converter","docs\u002F05.identifier-converter\u002Findex",[93],{"title":89,"path":90,"stem":91,"description":94,"icon":95,"tags":96},"OpenEPCIS solution to convert EPCIS instance or class identifier from URN to digital link WebURI and vice versa.","i-heroicons-link",[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],"gs1-digital-link","urn-format","epc-uri","epc","weburi","gs1-standard","gs1","sscc","gtin","giai","grai","gdti","lgtin","sgtin","gln","gcp",[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],{"title":115,"path":116,"stem":117,"children":118,"description":120,"icon":121,"tags":127},"Event Hash Generator","\u002Fdocs\u002Fevent-hash-generator","docs\u002F06.event-hash-generator\u002Findex",[119],{"title":115,"path":116,"stem":117,"description":120,"icon":121,"tags":122},"OpenEPCIS solution to generate unique event hash for EPCIS XML or JSON\u002FJSON-LD document or event list.","heroicons-outline:finger-print",[16,123,62,63,64,65,21,124,125,126,71,72],"event-hash","event","hash","generator",[16,123,62,63,64,65,21,124,125,126,71,72],{"title":129,"path":130,"stem":131,"children":132,"description":134,"icon":135,"tags":155},"Test Data Generator","\u002Fdocs\u002Ftest-data-generator","docs\u002F07.test-data-generator\u002Findex",[133,137],{"title":129,"path":130,"stem":131,"description":134,"icon":135,"tags":136},"OpenEPCIS solution to generate a large set of EPCIS test data events for all use cases\u002Fsupply chain requirements.","heroicons-outline:cog",[16,123,62,63,64,65,21,124,125,126,71,72],{"title":138,"path":139,"stem":140,"children":141,"description":143,"icon":144,"tags":154},"EPCIS Implementation Guidelines","\u002Fdocs\u002Ftest-data-generator\u002Fgs1-epcis-implementation-guidelines","docs\u002F07.test-data-generator\u002F01.gs1-epcis-implementation-guidelines\u002Findex",[142],{"title":138,"path":139,"stem":140,"description":143,"icon":144,"tags":145},"EPCIS event examples from the GS1 EPCIS and CBV implementation guidelines, modeled with the OpenEPCIS Test Data Generator.","heroicons-outline:badge-check",[16,62,63,146,21,147,148,149,35,150,151,152,153],"testing","test-data-generator","design","design-template","process-automation","compliance","supply-chain-management","load-tests",[16,62,63,146,21,147,148,149,35,150,151,152,153],[16,123,62,63,64,65,21,124,125,126,71,72],{"title":157,"path":158,"stem":159,"children":160,"description":162,"icon":163,"tags":166},"Test Resource Management","\u002Fdocs\u002Ftest-resource-management","docs\u002F08.test-resource-management\u002Findex",[161],{"title":157,"path":158,"stem":159,"description":162,"icon":163,"tags":164},"Collection of EPCIS 1.2\u002F2.0 documents\u002Fevents in XML\u002FJSON\u002FJSON-LD formats, intended for various testing purposes","heroicons-outline:archive-box",[16,62,63,146,21,165,35,150,151,152,153],"performance-tests",[16,62,63,146,21,165,35,150,151,152,153],{"title":168,"path":169,"stem":170,"children":171,"description":173,"icon":174,"tags":181},"Vocabulary Management","\u002Fdocs\u002Fvocabulary-management","docs\u002F09.vocabulary-management\u002Findex",[172],{"title":168,"path":169,"stem":170,"description":173,"icon":174,"tags":175},"Collection of standardized constants and strings for EPCIS event data.","heroicons-outline:book-open",[16,176,15,177,21,178,35,179,151,152,180],"constants","centralization","standardization","vocabulary","data-dictionary",[16,176,15,177,21,178,35,179,151,152,180],{"title":183,"path":184,"stem":185,"children":186,"description":188,"icon":189,"tags":205},"Dependency Management","\u002Fdocs\u002Fdependency-management","docs\u002F10.dependency-management\u002Findex",[187],{"title":183,"path":184,"stem":185,"description":188,"icon":189,"tags":190},"Centralized Maven Bill of Materials (BOM) for all the OpenEPCIS modules.","heroicons-outline:folder",[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],"maven-bom","dependency-management","java-dependencies","pom","software-dependencies","version-control","open-source-java","build-management","modular-software","dependency-resolution","java-libraries","maven-project","centralized-dependencies","dependency-consistency",[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],{"title":207,"path":208,"stem":209,"children":210,"description":212,"icon":213,"tags":411},"Digital Product Passport","\u002Fdocs\u002Fdigital-product-passport","docs\u002F11.digital-product-passport\u002Findex",[211,221,234,269,307,334,348,356,363,373,400],{"title":207,"path":208,"stem":209,"description":212,"icon":213,"tags":214},"Introduction to Digital Product Passport and how EPCIS enables product traceability for DPP compliance.","heroicons-outline:identification",[215,216,217,31,218,35,219,220],"digital-product-passport","dpp","eu-regulation","sustainability","circular-economy","gs1-web-vocabulary",{"title":222,"path":223,"stem":224,"children":225,"description":227,"icon":228,"tags":233},"ESPR Framework","\u002Fdocs\u002Fdigital-product-passport\u002Fespr-framework","docs\u002F11.digital-product-passport\u002F00.espr-framework\u002Findex",[226],{"title":222,"path":223,"stem":224,"description":227,"icon":228,"tags":229},"Guide to the EU Ecodesign for Sustainable Products Regulation (ESPR) 2024\u002F1781 and how OpenEPCIS supports Digital Product Passport requirements.","heroicons-outline:shield-check",[230,231,218,216,217,232],"espr","ecodesign","en-standards",[230,231,218,216,217,232],{"title":235,"path":236,"stem":237,"children":238,"description":240,"icon":241,"tags":268},"Battery DPP","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002Findex",[239,246,252,259],{"title":235,"path":236,"stem":237,"description":240,"icon":241,"tags":242},"GS1-native implementation of EU Battery Regulation 2023\u002F1542 Digital Product Passport using EPCIS 2.0","heroicons:battery-100",[243,244,216,31,103,35,218,245],"battery","eu-battery-regulation","due-diligence",{"title":247,"path":248,"stem":249,"description":250,"icon":174,"tags":251},"Implementation Guide","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002F01.implementation-guide","Step-by-step guide for implementing a GS1-native Battery Digital Product Passport with OpenEPCIS extensions",[243,244,216,31,220],{"title":253,"path":254,"stem":255,"description":256,"icon":257,"tags":258},"Event Types","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp\u002Fevent-types","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002F02.event-types","Complete reference for all EPCIS event types and sensor measurements in the Battery DPP","heroicons-outline:collection",[243,31,65,39,216],{"title":260,"path":261,"stem":262,"description":263,"icon":13,"tags":264},"Complete Examples","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002F05.complete-examples","Reference Battery Digital Product Passport examples mapped to EU Battery Regulation 2023\u002F1542 Annex XIII",[243,265,266,63,267,245],"examples","annex-xiii","carbon-footprint",[243,244,216,31,103,35,218,245],{"title":270,"path":271,"stem":272,"children":273,"description":275,"icon":276,"tags":306},"EUDR","\u002Fdocs\u002Fdigital-product-passport\u002Feudr","docs\u002F11.digital-product-passport\u002F02.eudr\u002Findex",[274,281,287,292,300],{"title":270,"path":271,"stem":272,"description":275,"icon":276,"tags":277},"GS1-native implementation of EU Deforestation Regulation 2023\u002F1115 compliance using EPCIS 2.0","heroicons-outline:globe-europe-africa",[278,279,280,216,31,103,35,218,245],"eudr","deforestation","timber",{"title":247,"path":282,"stem":283,"description":284,"icon":285,"tags":286},"\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F02.eudr\u002F01.implementation-guide","Step-by-step guide for implementing EU Deforestation Regulation compliance using GS1 standards",null,[278,279,280,216,31,245],{"title":253,"path":288,"stem":289,"description":290,"icon":285,"tags":291},"\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Fevent-types","docs\u002F11.digital-product-passport\u002F02.eudr\u002F02.event-types","EPCIS event types for EU Deforestation Regulation compliance",[278,31,65,39,216],{"title":293,"path":294,"stem":295,"description":296,"icon":285,"tags":297},"URL Patterns","\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Furl-patterns","docs\u002F11.digital-product-passport\u002F02.eudr\u002F03.url-patterns","GS1 Digital Link URL patterns for EUDR implementations",[278,97,298,299,216,245],"resolver","linkset",{"title":260,"path":301,"stem":302,"description":303,"icon":13,"tags":304},"\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F02.eudr\u002F04.complete-examples","Reference EUDR examples — timber product passport, derived product, regulatory notification, harvesting \u002F origin-declaration \u002F processing \u002F supply-chain-transfer \u002F exemption events",[278,265,280,245,305],"geolocation",[278,279,280,216,31,103,35,218,245],{"title":308,"path":309,"stem":310,"children":311,"description":313,"icon":314,"tags":333},"Textile DPP","\u002Fdocs\u002Fdigital-product-passport\u002Ftextile","docs\u002F11.digital-product-passport\u002F03.textile\u002Findex",[312,320,327],{"title":308,"path":309,"stem":310,"description":313,"icon":314,"tags":315},"Digital Product Passport vocabulary for textiles and apparel under the EU Sustainable Textiles Strategy and ESPR 2024\u002F1781.","heroicons-outline:sparkles",[316,317,318,216,218,319],"textile","apparel","footwear","fibre-composition",{"title":247,"path":321,"stem":322,"description":323,"icon":324,"tags":325},"\u002Fdocs\u002Fdigital-product-passport\u002Ftextile\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F03.textile\u002F01.implementation-guide","How to assemble a Textile Digital Product Passport against the published openepcis-dpp-ready textile vocabulary","heroicons-outline:scissors",[316,317,318,326],"implementation",{"title":260,"path":328,"stem":329,"description":330,"icon":13,"tags":331},"\u002Fdocs\u002Fdigital-product-passport\u002Ftextile\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F03.textile\u002F02.complete-examples","Reference Textile Digital Product Passport documents covering apparel and footwear",[316,265,317,318,332,63],"fiber-composition",[316,317,318,216,218,319],{"title":335,"path":336,"stem":337,"children":338,"description":340,"icon":60,"tags":347},"Interoperability","\u002Fdocs\u002Fdigital-product-passport\u002Finteroperability","docs\u002F11.digital-product-passport\u002F04.interoperability\u002Findex",[339],{"title":335,"path":336,"stem":337,"description":340,"icon":60,"tags":341},"Guide to OpenEPCIS DPP interoperability with GS1, UNTP, CIRPASS2, and ESPR standards.",[342,343,103,344,230,345,346,220],"interoperability","untp","cirpass2","standards","alignment",[342,343,103,344,230,345,346,220],{"title":349,"path":350,"stem":351,"description":352,"icon":29,"tags":353},"DPP Resolution Flow","\u002Fdocs\u002Fdigital-product-passport\u002Fdpp-resolution-flow","docs\u002F11.digital-product-passport\u002F05.dpp-resolution-flow","How OpenEPCIS combined GS1 Digital Link, the IETF linkset format and content negotiation into one DPP resolution flow",[354,97,299,355,298],"walkthrough","content-negotiation",{"title":357,"path":358,"stem":359,"description":360,"icon":361,"tags":362},"Resolver Setup","\u002Fdocs\u002Fdigital-product-passport\u002Fresolver-setup","docs\u002F11.digital-product-passport\u002F06.resolver-setup","How to expose your DPP behind a GS1 Digital Link resolver","heroicons-outline:server",[298,97,299],{"title":364,"path":365,"stem":366,"description":367,"icon":368,"tags":369},"Multi-Component Example","\u002Fdocs\u002Fdigital-product-passport\u002Fmulti-component-example","docs\u002F11.digital-product-passport\u002F07.multi-component-example","How a composite product references separately-passported components via standard GS1 Digital Link and EPCIS aggregation","heroicons-outline:puzzle-piece",[370,371,372,344],"example","components","aggregation",{"title":374,"path":375,"stem":376,"children":377,"description":379,"icon":380,"tags":399},"Electronics DPP","\u002Fdocs\u002Fdigital-product-passport\u002Felectronics","docs\u002F11.digital-product-passport\u002F08.electronics\u002Findex",[378,387,392],{"title":374,"path":375,"stem":376,"description":379,"icon":380,"tags":381},"Digital Product Passport vocabulary for electronic devices under ESPR, the French Repairability Index, EU Right to Repair and WEEE.","heroicons-outline:device-phone-mobile",[382,383,384,385,386],"electronics","repairability","weee","energy-label","right-to-repair",{"title":247,"path":388,"stem":389,"description":390,"icon":174,"tags":391},"\u002Fdocs\u002Fdigital-product-passport\u002Felectronics\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F08.electronics\u002F01.implementation-guide","How to assemble an Electronics Digital Product Passport against the published openepcis-dpp-ready electronics vocabulary",[382,326,383,384,385],{"title":260,"path":393,"stem":394,"description":395,"icon":13,"tags":396},"\u002Fdocs\u002Fdigital-product-passport\u002Felectronics\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F08.electronics\u002F02.complete-examples","Reference Electronics Digital Product Passport documents covering smartphone, laptop, display and server",[382,265,397,398,63],"smartphone","laptop",[382,383,384,385,386],{"title":401,"path":402,"stem":403,"description":404,"icon":228,"tags":405},"Signed Passports","\u002Fdocs\u002Fdigital-product-passport\u002Fsigned-passports","docs\u002F11.digital-product-passport\u002F09.signed-passports","How OpenEPCIS signs product passports so that software nobody here wrote can verify them — W3C Data Integrity, did:web, and the canonicalization layer that decides whether a signature travels.",[406,407,408,409,342,410],"verifiable-credentials","data-integrity","did-web","canonicalization","trust",[215,216,217,31,218,35,219,220],{"title":413,"path":414,"stem":415,"children":416,"description":418,"icon":419,"tags":427},"Profile Checker","\u002Fdocs\u002Fprofile-checker","docs\u002F12.profile-checker\u002Findex",[417],{"title":413,"path":414,"stem":415,"description":418,"icon":419,"tags":420},"OpenEPCIS tool to define EPCIS event profiles as JSON Schema and validate EPCIS documents or events against them.","heroicons-outline:clipboard-document-check",[16,421,422,423,424,425,426,21,72],"event-profile","profile-checker","json-schema","validation","data-quality","conformance",[16,421,422,423,424,425,426,21,72],{"title":429,"path":430,"stem":431,"children":432,"description":434,"icon":435,"tags":571},"Digital Data Management","\u002Fdocs\u002Fdigital-data-management","docs\u002F13.digital-data-management\u002Findex",[433,440,452,462,473,484,493,505,515,526,535,547,559],{"title":429,"path":430,"stem":431,"description":434,"icon":435,"tags":436},"End-user guide to OpenEPCIS Digital Data Management — curate GS1 master data, publish digital product passports, manage resolver links and analyze scans.","heroicons-outline:circle-stack",[437,438,215,97,439,298],"ddm","master-data","catalog",{"title":441,"path":442,"stem":443,"description":444,"icon":445,"tags":446},"Getting Started","\u002Fdocs\u002Fdigital-data-management\u002Fgetting-started","docs\u002F13.digital-data-management\u002F01.getting-started","Signing in to Digital Data Management, finding your way around the catalog workspace, and setting up your profile and integration tokens.","heroicons-outline:rocket-launch",[437,447,448,449,450,451],"login","keycloak","workspace","roles","profile",{"title":453,"path":454,"stem":455,"description":456,"icon":457,"tags":458},"Products","\u002Fdocs\u002Fdigital-data-management\u002Fproduct-catalog","docs\u002F13.digital-data-management\u002F02.product-catalog","The DDM product catalog — creating products from a passport type, importing in bulk, and keeping the catalog tidy.","heroicons-outline:cube",[437,459,105,460,461,439],"products","passport-type","bulk-import",{"title":463,"path":464,"stem":465,"description":466,"icon":467,"tags":468},"Passport Editor","\u002Fdocs\u002Fdigital-data-management\u002Fpassport-editor","docs\u002F13.digital-data-management\u002F03.passport-editor","One editor for products, organizations and places — ontology-generated forms, rich field widgets, GS1 validation, access levels and full version history.","heroicons-outline:pencil-square",[437,469,63,424,470,471,472],"editor","gpc","access-level","versions",{"title":474,"path":475,"stem":476,"description":477,"icon":478,"tags":479},"Organizations & Places","\u002Fdocs\u002Fdigital-data-management\u002Forganizations-and-places","docs\u002F13.digital-data-management\u002F04.organizations-and-places","GLN-keyed party and location records in DDM — organization roles, primary locations, and the public GLN information pages.","heroicons-outline:building-office-2",[437,480,481,111,482,483],"organizations","places","party","location",{"title":485,"path":486,"stem":487,"description":488,"icon":489,"tags":490},"Linksets","\u002Fdocs\u002Fdigital-data-management\u002Flinksets","docs\u002F13.digital-data-management\u002F05.linksets","Managing the resolver links behind every scan — the linkset explorer, the ownership model, and templated links that adapt to the scanned code.","heroicons-outline:link",[437,299,97,298,491,492],"linktype","templated-links",{"title":494,"path":495,"stem":496,"description":497,"icon":498,"tags":499},"Public Passports","\u002Fdocs\u002Fdigital-data-management\u002Fpublic-passports","docs\u002F13.digital-data-management\u002F06.public-passports","What consumers see — the demo gallery, the passport viewer at model, lot and item level, and template-driven rendering.","heroicons-outline:qr-code",[437,500,501,502,503,504],"passport","qr-code","consumer","templates","digital-link",{"title":506,"path":507,"stem":508,"description":509,"icon":419,"tags":510},"Passport Templates","\u002Fdocs\u002Fdigital-data-management\u002Fpassport-templates","docs\u002F13.digital-data-management\u002F07.passport-templates","What each passport type asks for — field obligations, hidden fields and creation defaults, layered from shipped defaults to deployment and tenant overrides.",[437,503,511,512,513,514],"requirements","obligations","creation-defaults","dpp-ready",{"title":516,"path":517,"stem":518,"description":519,"icon":520,"tags":521},"Field Access","\u002Fdocs\u002Fdigital-data-management\u002Ffield-access","docs\u002F13.digital-data-management\u002F08.field-access","Deciding which data fields consumers, operators and authorities can see — tier by tier, with persona preview and a reviewer workflow.","heroicons-outline:lock-closed",[437,522,523,230,524,525],"field-access","access-tiers","governance","skos",{"title":527,"path":528,"stem":529,"description":530,"icon":29,"tags":531},"Resolver Domains","\u002Fdocs\u002Fdigital-data-management\u002Fresolver-domains","docs\u002F13.digital-data-management\u002F09.resolver-domains","Serving GS1 Digital Links from your own hostname — CNAME setup, verification, and test prefixes to try it without a GS1 license.",[437,298,532,533,534,112],"custom-domain","cname","dns",{"title":536,"path":537,"stem":538,"description":539,"icon":540,"tags":541},"GS1 Sync","\u002Fdocs\u002Fdigital-data-management\u002Fgs1-sync","docs\u002F13.digital-data-management\u002F10.gs1-sync","Publishing your catalog to GS1 Germany — service tokens, licensed prefixes, the key pool, Verified by GS1, and the per-record Sync tab.","heroicons-outline:arrow-path",[437,542,543,544,545,546],"gs1-germany","sync","service-token","key-pool","verified-by-gs1",{"title":548,"path":549,"stem":550,"description":551,"icon":552,"tags":553},"Scan Analytics","\u002Fdocs\u002Fdigital-data-management\u002Fscan-analytics","docs\u002F13.digital-data-management\u002F11.scan-analytics","What only a resolver can know — anonymous scan statistics, demand insights, and a live privacy report that shows exactly what is and is not collected.","heroicons-outline:chart-bar",[437,554,555,556,557,558],"scans","analytics","privacy","k-anonymity","insights",{"title":560,"path":561,"stem":562,"description":563,"icon":564,"tags":565},"Integration Tokens","\u002Fdocs\u002Fdigital-data-management\u002Fconnector-tokens","docs\u002F13.digital-data-management\u002F12.connector-tokens","How a machine gets its own long-lived credential for your catalog — issuing an offline token, naming it, seeing what it did, and revoking it when the system it belonged to is retired.","heroicons-outline:key",[437,566,567,568,569,570,448],"integration","offline-token","connector","erp","pim",[437,438,215,97,439,298],{"title":573,"path":574,"stem":575,"children":576,"description":578,"icon":579},"OpenEPCIS Overview","\u002Fdocs\u002Fplatform-overview","docs\u002F14.platform-overview\u002Findex",[577,580,586,592],{"title":573,"path":574,"stem":575,"description":578,"icon":579},"A GS1-conformant supply-chain data platform — Resolver, Masterdata, EPCIS Events — in open source and business editions.","lucide:layout-dashboard",{"title":581,"path":582,"stem":583,"description":584,"icon":585},"Architecture","\u002Fdocs\u002Fplatform-overview\u002Farchitecture","docs\u002F14.platform-overview\u002F01.architecture","How OpenEPCIS handles identity, isolation, events, and GS1 conformance — the four things that distinguish the platform.","lucide:cpu",{"title":587,"path":588,"stem":589,"description":590,"icon":591},"Feature Matrix","\u002Fdocs\u002Fplatform-overview\u002Ffeature-matrix","docs\u002F14.platform-overview\u002F02.feature-matrix","OpenEPCIS capabilities by edition, aligned to the relevant GS1 standards.","lucide:check-square",{"title":593,"path":594,"stem":595,"children":596,"description":598,"icon":599},"Modules","\u002Fdocs\u002Fplatform-overview\u002Fmodules","docs\u002F14.platform-overview\u002Fmodules\u002Findex",[597,600,607,615,623,629,635,641],{"title":593,"path":594,"stem":595,"description":598,"icon":599},"Seven module families that organise the OpenEPCIS platform — Resolver, Masterdata, EPCIS Events, Formats & Validation, Integration, Testdata, Platform.","lucide:layers",{"title":601,"path":602,"stem":603,"description":604,"icon":605,"tags":606},"GS1 Conformant Resolver","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fresolver","docs\u002F14.platform-overview\u002Fmodules\u002F01.resolver","Resolves GS1 Digital Link URIs to product information, masterdata, EPCIS endpoints, and twelve more standard link types.","lucide:link-2",[298,97,103,299,220],{"title":608,"path":609,"stem":610,"description":611,"icon":612,"tags":613},"GS1 Web Vocabulary & Masterdata","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fmasterdata","docs\u002F14.platform-overview\u002Fmodules\u002F02.masterdata","Web Vocabulary models, masterdata-to-resolver REST pattern, GS1 Germany Activate Plus \u002F GEPIR sync, and the event-driven masterdata bus.","lucide:database",[220,614,103,298,63],"masterdata",{"title":616,"path":617,"stem":618,"description":619,"icon":620,"tags":621},"EPCIS Events — Capture, Query, Subscriptions","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fepcis-events","docs\u002F14.platform-overview\u002Fmodules\u002F03.epcis-events","EPCIS 2.0 REST and SOAP, live streaming subscriptions, resilient pagination, OpenSearch event store.","lucide:activity",[39,16,31,65,622,35],"subscriptions",{"title":624,"path":625,"stem":626,"description":627,"icon":628},"Formats, Validation & Identity","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fformats","docs\u002F14.platform-overview\u002Fmodules\u002F04.formats","XML ↔ JSON-LD conversion, multi-layer validation, identifier translation, idempotent event hashing.","lucide:file-check",{"title":630,"path":631,"stem":632,"description":633,"icon":634},"Integration & Gateways","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fintegration","docs\u002F14.platform-overview\u002Fmodules\u002F05.integration","AS2 gateway for EDI partners, cloud storage, file service, natural-language AI assistant.","lucide:plug",{"title":636,"path":637,"stem":638,"description":639,"icon":640},"Testdata & Developer Tooling","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Ftestdata","docs\u002F14.platform-overview\u002Fmodules\u002F06.testdata","Synthetic EPCIS test event generation, reference event collections, conformance test suite, SDKs.","lucide:wrench",{"title":642,"path":643,"stem":644,"description":645,"icon":646},"Platform, Build & Observability","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fplatform","docs\u002F14.platform-overview\u002Fmodules\u002F07.platform","How OpenEPCIS is built, deployed, and observed.","lucide:server",{"title":648,"path":649,"stem":650,"children":651,"description":653,"icon":29,"tags":661},"Vision","\u002Fdocs\u002Fvision","docs\u002F15.vision\u002Findex",[652],{"title":648,"path":649,"stem":650,"description":653,"icon":29,"tags":654},"How UNTP, DIDs, Verifiable Credentials, and EPCIS work together to create unified product identity infrastructure for the connected supply chain.",[655,656,657,406,343,658,659,660],"vision","digital-twin","did","rfid","industry-4-0","web-3-0",[655,656,657,406,343,658,659,660],{"title":663,"path":664,"stem":665,"children":666,"description":668,"icon":634},"API Reference","\u002Fdocs\u002Fapi-reference","docs\u002F16.api-reference\u002Findex",[667],{"title":663,"path":664,"stem":665,"description":668,"icon":634},"Interactive OpenAPI references for the GS1 Digital Link Resolver and the EPCIS 2.0 REST bindings.",{"title":670,"path":671,"stem":672,"children":673,"description":675,"icon":540,"tags":724},"Connectors","\u002Fdocs\u002Fconnectors","docs\u002F16.connectors\u002Findex",[674,682,692,701,707,717],{"title":670,"path":671,"stem":672,"description":675,"icon":540,"tags":676},"How the master data you already keep in a PIM or an ERP becomes two passport forms, a stream of EPCIS events and a resolvable GS1 Digital Link — and how far each connector has come.",[677,678,679,680,681,215,31,298],"connectors","unopim","odoo","erpnext","metasfresh",{"title":683,"path":684,"stem":685,"description":686,"icon":60,"tags":687},"How It Works","\u002Fdocs\u002Fconnectors\u002Fhow-a-connector-works","docs\u002F16.connectors\u002F01.how-a-connector-works","The mechanics of a connector — the outbound half that polls, maps and publishes, the inbound bridge that answers identity questions, and the design rules the code holds you to.",[677,543,688,689,690,691],"mapping","bridge","webhook","idempotency",{"title":693,"path":694,"stem":695,"description":696,"icon":697,"tags":698},"Identifiers","\u002Fdocs\u002Fconnectors\u002Fidentifiers-gtin-and-sku","docs\u002F16.connectors\u002F02.identifiers-gtin-and-sku","One product needs exactly one GS1 identifier — the GTIN. Where the connector finds it, why your SKU is a different thing, and how batch, serial and logistics-unit levels build on top.","heroicons-outline:hashtag",[677,105,699,109,110,104,700],"sku","check-digit",{"title":702,"path":703,"stem":704,"description":705,"icon":540,"tags":706},"UnoPim","\u002Fdocs\u002Fconnectors\u002Funopim","docs\u002F16.connectors\u002F03.unopim","The whole UnoPim route — what has to exist in the PIM, how the connection is configured, what the first sync publishes, and where the data surfaces in DDM and on the published passport page.",[677,678,570,105,688,690,500],{"title":708,"path":709,"stem":710,"description":711,"icon":228,"tags":712},"Events & Credentials","\u002Fdocs\u002Fconnectors\u002Fevents-credentials-and-representations","docs\u002F16.connectors\u002F04.events-credentials-and-representations","What happens after a record is published — how a movement in your source system becomes an EPCIS event, where UNTP answers the same question differently, and how a passport gains a signed, selectively disclosed representation.",[677,31,65,713,714,715,406,343,523,716],"event-types","transformation","error-declaration","representations",{"title":718,"path":719,"stem":720,"description":721,"icon":457,"tags":722},"Odoo walkthrough","\u002Fdocs\u002Fconnectors\u002Fodoo","docs\u002F16.connectors\u002F05.odoo","One warehouse day walked through end to end — goods in, packed onto a pallet, shipped, part of it back, the rest ground into another article, and one report taken back — with the screen and the EPCIS event it produces side by side.",[677,679,31,65,104,372,714,723],"tutorial",[677,678,679,680,681,215,31,298],[726],{"title":727,"path":728,"stem":729,"children":730,"page":742},"Blog","\u002Fblog","blog",[731,737],{"title":732,"path":733,"stem":734,"description":735,"icon":736},"The Web-based DPP doesn't need new infrastructure","\u002Fblog\u002Fdpp-stack-for-agents","blog\u002F01.dpp-stack-for-agents","Three GS1 standards — Digital Link, Web Vocabulary, Conformant Resolver — plus EPCIS 2.0 already cover the agent-facing layer of the Digital Product Passport.","heroicons-outline:newspaper",{"title":738,"path":739,"stem":740,"description":741,"icon":736},"Fascinating in Theory. It Just Doesn't Work in Practice.","\u002Fblog\u002Fblockchain-traceability","blog\u002F02.blockchain-traceability","Why blockchain is the wrong answer to traceability, and why it refuses to die anyway.",false,{"doc":744,"usedFallback":742},{"id":745,"title":746,"body":747,"description":696,"extension":1253,"icon":697,"lastUpdated":1254,"meta":1255,"navigation":1266,"path":694,"seo":1268,"sitemap":1269,"stem":695,"__hash__":1273},"docsEN\u002Fdocs\u002F16.connectors\u002F02.identifiers-gtin-and-sku.md","Identifiers: GTIN, SKU and What Identifies What",{"type":748,"value":749,"toc":1239},"minimark",[750,755,769,776,781,784,795,814,825,855,859,866,869,903,936,945,969,973,985,992,996,999,1093,1098,1132,1151,1165,1168,1172,1190,1197,1215,1219,1236],[751,752,754],"h2",{"id":753},"one-product-one-gs1-identifier","One product, one GS1 identifier",[756,757,758,759,763,764,768],"p",{},"Every integration project runs into the same confusion in its first week, and it is worth settling before anything is configured: the number your company uses to order, pick and invoice a product is usually not the number the world uses to identify it. A product needs exactly one GS1 identifier, and that identifier is the ",[760,761,762],"strong",{},"GTIN",". It identifies the ",[765,766,767],"em",{},"model"," — the article as such, the thing a shopper would call \"this shirt in size M, in blue\" — not the individual garment on the shelf and not the box it arrived in.",[756,770,771,772,775],{},"If your master data calls this field EAN, nothing is missing. EAN and GTIN are the same key under two names: EAN is the older European term, GTIN the current global one, and a thirteen-digit EAN-13 ",[765,773,774],{},"is"," a GTIN-13. When you see a GTIN written with fourteen digits, that is the same key padded on the left with a zero so that all trade-item keys share one length.",[777,778,780],"h3",{"id":779},"how-a-gtin-is-built","How a GTIN is built",[756,782,783],{},"A GTIN is not an opaque serial number. It is composed of three parts, and reading them apart explains most of what the connector does with it:",[785,786,792],"pre",{"className":787,"code":789,"language":790,"meta":791},[788],"language-text","9 5 2 1 2 3 4   0 0 0 1 2   9\n└─── prefix ─┘  └─ item ─┘  └ check digit\n                 reference\n","text","",[793,794,789],"code",{"__ignoreMap":791},[756,796,797,798,801,802,805,806,809,810,813],{},"The ",[760,799,800],{},"GS1 Company Prefix"," (the base number) is licensed to one company and identifies it globally. The ",[760,803,804],{},"item reference"," is yours to assign: you decide that ",[793,807,808],{},"00012"," is the linen shirt, and nobody outside your company has a say in it. The final digit is a ",[760,811,812],{},"check digit"," computed from all the others, so that a mistyped key almost always announces itself rather than quietly pointing at somebody else's product.",[756,815,816,817,820,821,824],{},"What the digits do not tell you is where the prefix ends. Company prefixes vary in length, and ",[793,818,819],{},"9521234000129"," could in principle carry a seven-digit or a nine-digit prefix. That boundary comes from the GS1 GCP Length Table, which the platform reads from the same ",[793,822,823],{},"openepcis-epc-digitallink-translator"," toolkit that supplies its identifier grammar; no connector reimplements it and none guesses it.",[826,827,829,848],"alert",{"type":828},"warning",[756,830,831,837,838,841,842,847],{},[760,832,833,836],{},[793,834,835],{},"9521234"," is a test prefix."," Every key printed on this page sits in the GS1 test range — the keys beginning ",[793,839,840],{},"952…"," that exist so that examples can be worked through without touching a licensed prefix. They are safe to copy into a sandbox and wrong to print on a package. Your own keys come from your own licensed prefix; see ",[843,844,846],"a",{"href":845},"\u002Fdocs\u002Fdigital-data-management\u002Fresolver-domains#test-prefixes-952-range","test prefixes",".",[756,849,850,851,854],{},"The example is also chosen so that the split above is the real one: the GCP Length Table gives the entry ",[793,852,853],{},"9521"," a length of seven, so the prefix genuinely ends where the diagram says it does. An invented prefix usually lands on a different length, and then the item reference begins a digit earlier or later than intended.",[751,856,858],{"id":857},"the-sku-is-your-number-not-gs1s","The SKU is your number, not GS1's",[756,860,861,862,865],{},"The SKU is the article number your house assigns to itself. It is the key your PIM or ERP stores its record under, the string your colleagues quote on the phone, and — this is the part that surprises people — it has no GS1 meaning whatsoever. Sometimes a SKU happens to be a GTIN, because the business bought the goods with a manufacturer's EAN and adopted it as its own record key. Sometimes a SKU contains the item reference of the GTIN, because someone chose the numbering that way years ago. And in a great many houses the SKU is ",[793,863,864],{},"LIN-SHIRT-BLUE-M",", an internal ordering scheme with a history of its own, related to nothing.",[756,867,868],{},"So the connector never assumes. Instead, each adapter knows where its host system keeps the GS1 key, and the SKU's role is stated in the connection's configuration rather than inferred.",[756,870,871,872,874,875,878,879,882,883,885,886,888,889,892,893,895,896,898,899,902],{},"In ",[760,873,702],{}," the SKU is the record's unique key and the PIM knows nothing of GS1, so one option decides everything: ",[793,876,877],{},"source.options.gtin-from"," takes ",[793,880,881],{},"composed",", ",[793,884,699],{}," or an attribute code. Under ",[793,887,881],{}," — the default — the connector builds the GTIN itself from the company prefix configured as the connection's ",[793,890,891],{},"target.gcp-prefixes",", the SKU as the item reference, and the check digit, left-padding to twelve data digits. Under ",[793,894,699],{},", the SKU ",[765,897,774],{}," the complete GTIN, which is the right setting for traded goods that arrived with a foreign EAN, where composing would be wrong because the base number is not yours. Under an attribute code, usually ",[793,900,901],{},"dpp_gtin",", the key lives in a field of its own — the setting for SKUs that are not numeric or not derived from the prefix.",[756,904,905,906,908,909,912,913,916,917,919,920,923,924,927,928,931,932,935],{},"Composing raises one question a PIM forces on you: SKUs are unique, but a batch of a product shares its model's GTIN. Under ",[793,907,881],{},", the connector reads only the part of the SKU in front of the first hyphen as the item reference — always the first, so ",[793,910,911],{},"95201-DE-L240815"," also reduces to ",[793,914,915],{},"95201"," — and ",[793,918,915],{}," and ",[793,921,922],{},"95201-L240815"," therefore compose the same key ",[793,925,926],{},"9521234952015",". The suffix does no more than keep the two records distinct in UnoPim. Which batch the second record stands for is stated in an attribute of its own — ",[793,929,930],{},"dpp_batch_identifier"," by default, configurable as ",[793,933,934],{},"source.options.batch-from"," — rather than parsed back out of the SKU; a record that carries a batch number is published only at its instance path as an LGTIN, never as the model record, so batch master data cannot overwrite the model's.",[756,937,938,939,941,942,944],{},"This splitting happens in the UnoPim adapter and only under ",[793,940,881],{},". Under ",[793,943,699],{}," and under an attribute code the value is taken as the key exactly as it stands, hyphens and all, and no article number is cut out of it. The other adapters read their key from a field of their own and have no comparable SKU arithmetic at all — batches there do not depend on how a SKU is written.",[756,946,871,947,950,951,954,955,958,959,961,962,965,966,968],{},[760,948,949],{},"ERPNext"," the key comes from the Item's ",[793,952,953],{},"barcodes"," child table: rows are read in table order, and the first row with a GS1-family ",[793,956,957],{},"barcode_type"," whose value passes the check digit wins. A row with the right type and a broken check digit is skipped rather than treated as fatal, so one mistyped legacy barcode cannot hide a correct one below it. In ",[760,960,681],{}," the GTIN lives in the product's ",[793,963,964],{},"ean"," field, and a GLN in the ",[793,967,111],{}," of a business partner's locations — again, the first one that survives the check digit.",[777,970,972],{"id":971},"when-there-is-no-gtin","When there is no GTIN",[756,974,975,976,978,979,981,982,984],{},"A record without a publishable key is skipped, and only that record: the connector logs which record it was and what was wrong with the key, advances the cursor, and carries on with the batch. One unpublishable article must not sink the two hundred behind it. Under ",[793,977,881],{},", UnoPim refuses loudly and specifically — no SKU, no configured prefix, more than one prefix (the connector will not pick one for you), a non-numeric SKU, or a prefix and reference that together exceed the available digits. A tenant licensed for several prefixes is a normal case, not an error: list them all as ",[793,980,891],{},", keep the keys in the source system and point ",[793,983,877],{}," at the attribute that holds them. Only composing is ruled out, not multiple prefixes — ownership is decided across all of them.",[756,986,987,988,991],{},"That leaves the question of where a first GTIN comes from, and the answer is not the connector. The UnoPim plugin's panel offers a product without a key two equally prominent paths: draw the next number from your own prefix pool, or deposit a GTIN you already have. Both go through the platform: drawing calls the bridge's ",[793,989,990],{},"POST \u002Fv1\u002Fidentifiers\u002Fallocate",", and depositing sends the typed number to the bridge first, refusing it in the bridge's own words when the verdict reports a data problem. Where the key turns out to sit on the tenant's own prefix and the connection composes, what gets written is the item reference into the SKU rather than a second copy of the whole number — so the product keeps one place where its identity lives.",[751,993,995],{"id":994},"model-batch-item-and-the-pallet-they-travel-on","Model, batch, item, and the pallet they travel on",[756,997,998],{},"Once the model has its GTIN, everything more specific is that GTIN plus a qualifier. This is the vocabulary the rest of this chapter relies on.",[1000,1001,1002,1021],"table",{},[1003,1004,1005],"thead",{},[1006,1007,1008,1012,1015,1018],"tr",{},[1009,1010,1011],"th",{},"Level",[1009,1013,1014],{},"Key",[1009,1016,1017],{},"Digital Link path",[1009,1019,1020],{},"What the catalog holds",[1022,1023,1024,1040,1059,1077],"tbody",{},[1006,1025,1026,1030,1032,1037],{},[1027,1028,1029],"td",{},"Model",[1027,1031,762],{},[1027,1033,1034],{},[793,1035,1036],{},"\u002F01\u002F{gtin}",[1027,1038,1039],{},"The product record: name, brand, GPC, net content, measurements, images",[1006,1041,1042,1045,1048,1053],{},[1027,1043,1044],{},"Batch",[1027,1046,1047],{},"LGTIN (GTIN + AI 10)",[1027,1049,1050],{},[793,1051,1052],{},"\u002F01\u002F{gtin}\u002F10\u002F{lot}",[1027,1054,1055,1056],{},"An instance document carrying ",[793,1057,1058],{},"hasBatchLotNumber",[1006,1060,1061,1064,1067,1072],{},[1027,1062,1063],{},"Item",[1027,1065,1066],{},"SGTIN (GTIN + AI 21)",[1027,1068,1069],{},[793,1070,1071],{},"\u002F01\u002F{gtin}\u002F21\u002F{serial}",[1027,1073,1055,1074],{},[793,1075,1076],{},"hasSerialNumber",[1006,1078,1079,1082,1085,1090],{},[1027,1080,1081],{},"Logistics unit",[1027,1083,1084],{},"SSCC (AI 00)",[1027,1086,1087],{},[793,1088,1089],{},"\u002F00\u002F{sscc}",[1027,1091,1092],{},"Nothing — it is an event subject, not a catalog record",[756,1094,797,1095,1097],{},[760,1096,762],{}," is what you need for anything said about the article in general, and it is the level at which registries ask their questions: brand name, GPC category and a product description are required of a model, never of a batch. It is also the only level a PIM contributes, because a PIM describes articles.",[756,1099,1100,1101,1104,1105,1108,1109,1112,1113,1116,1117,1120,1121,1124,1125,1128,1129,1131],{},"An ",[760,1102,1103],{},"LGTIN"," is a GTIN qualified by a batch or lot number, and despite naming something narrower it is still a ",[765,1106,1107],{},"class",": a batch is a quantity of goods, not one thing, which is why an EPCIS event reports it as an ",[793,1110,1111],{},"epcClass"," in a ",[793,1114,1115],{},"quantityList"," rather than in the ",[793,1118,1119],{},"epcList",". Use it for anything that is true of a production run — a manufacturing date, a best-before date, a certificate covering that run. The catalog stores it as its own instance document beneath the model's GTIN, with the qualifier stated inside the document as a term as well as standing in the path. The term in the document is what the resolver derives the per-instance anchor from, and the anchor is what makes ",[793,1122,1123],{},"?linkType=masterData"," stop at the batch instead of redirecting up to the model. The Java connectors do not leave that to inference: after every instance write they register a ",[793,1126,1127],{},"gs1:masterData"," link on the instance anchor explicitly, because the resolver merges linksets from the most specific anchor downwards and a model-level entry would otherwise always win. Batches reach the catalog from ERPNext's Batch DocType, from UnoPim's ",[793,1130,930],{},", and from Odoo's lots.",[756,1133,1100,1134,1137,1138,1140,1141,1143,1144,1147,1148,847],{},[760,1135,1136],{},"SGTIN"," is a GTIN qualified by a serial number, and that one ",[765,1139,774],{}," an individual thing — one battery, one appliance — so an event names it in the ",[793,1142,1119],{},". Use it wherever a warranty, a repair history or an individual passport has to attach to a single item. ERPNext feeds this level from its Serial No records, and Odoo from those ",[793,1145,1146],{},"stock.lot"," records whose product is tracked by unique serial number — the same record type that yields a batch when the product is tracked by lot. A PIM does not feed it at all, because a PIM has no serialised goods to describe. A record can also carry both qualifiers at once, which the catalog addresses as ",[793,1149,1150],{},"\u002F01\u002F{gtin}\u002F10\u002F{lot}\u002F21\u002F{serial}",[756,1152,1100,1153,1156,1157,1160,1161,1164],{},[760,1154,1155],{},"SSCC"," identifies neither an article nor a piece of it but the ",[765,1158,1159],{},"logistics unit"," — this carton, this pallet, this roll cage — and it is the one GS1 number a company always assigns entirely itself: an extension digit, your company prefix, a serial reference of your choosing and a check digit, eighteen digits in all. It never identifies what is inside; it identifies the packed unit, and the link between the two is made by an aggregation event whose ",[793,1162,1163],{},"parentID"," is the SSCC. Odoo mints one when a package is created — deliberately at creation, not at the first event, so that earlier events already have something to name the unit by.",[756,1166,1167],{},"Finally, a note that saves an afternoon of confusion: a serial number that was never registered as its own document still resolves. The resolver walks up to the nearest level it does know and serves the model's links, so an unregistered item behaves like the model rather than like a dead link.",[751,1169,1171],{"id":1170},"the-check-digit-and-what-the-bridge-answers","The check digit, and what the bridge answers",[756,1173,1174,1175,1178,1179,1182,1183,1185,1186,1189],{},"The check digit is the cheapest correctness test there is, and the connectors apply it everywhere a key enters the system: weight three on the rightmost data digit alternating leftwards, sum, and the check digit is what brings that sum up to a multiple of ten. ",[793,1176,1177],{},"952123400012"," gives ",[793,1180,1181],{},"9",", so ",[793,1184,819],{}," is a well-formed key and ",[793,1187,1188],{},"9521234000123"," is not.",[756,1191,1192,1193,1196],{},"That arithmetic is one of several statements the bridge makes about an identifier. When an adapter asks it to resolve a key, the answer is not a boolean but a ",[760,1194,1195],{},"verdict",", and each part of it is separately meaningful: whether the value matches the grammar of its Application Identifier, whether the check digit agrees, where the company prefix ends, whether that prefix is yours, how far the Verified by GS1 lookup got, who GS1 says licenses the key, and the canonical Digital Link that all of this adds up to. Every offline statement — syntax, check digit, prefix boundary, canonical link — is computed before anything can fail, so it stands even on a call where the registry never answered.",[756,1198,1199,1200,1203,1204,1207,1208,1211,1212,1214],{},"Read the verdict's ",[793,1201,1202],{},"reason"," before its booleans. A verdict marks ",[793,1205,1206],{},"dataProblem"," only when a person editing the record can actually fix what is wrong; an unreachable registry, an expired credential or a spent quota make the verdict ",[765,1209,1210],{},"degraded",", not the data wrong. A user interface that renders \"invalid\" from an unfinished registry lookup accuses your colleagues of bad data every time a token expires, which is why the connectors branch on ",[793,1213,1206],{}," and never on the registry status.",[777,1216,1218],{"id":1217},"own-prefix-foreign-prefix","Own prefix, foreign prefix",[756,1220,1221,1222,1225,1226,1231,1232,1235],{},"The prefix boundary answers a second question beyond where the number ends: whether the key sits inside a prefix your tenant is licensed for. ",[793,1223,1224],{},"own_prefix"," says it does — you issued this key, and no external lookup is needed to know who it belongs to. ",[760,1227,1228],{},[793,1229,1230],{},"foreign_prefix"," says the key is perfectly valid but belongs to somebody else, which is the normal state of a supplier's article in your catalogue; that is the case where a registry call is worth making, because only GS1 can say who the licensee is. ",[793,1233,1234],{},"unknown"," says no prefix boundary could be established at all, so ownership is simply undecidable and nothing should be concluded from it.",[756,1237,1238],{},"The distinction has practical consequences beyond display. Ownership decides whether a lookup happens at all, and it decides commissioning: where a product has not explicitly said otherwise, the connector mints an EPCIS commissioning event only for keys on a prefix the tenant is licensed for. Announcing that you brought a supplier's article into existence is not a claim you want a connector making on your behalf.",{"title":791,"searchDepth":1240,"depth":1240,"links":1241},2,[1242,1246,1249,1250],{"id":753,"depth":1240,"text":754,"children":1243},[1244],{"id":779,"depth":1245,"text":780},3,{"id":857,"depth":1240,"text":858,"children":1247},[1248],{"id":971,"depth":1245,"text":972},{"id":994,"depth":1240,"text":995},{"id":1170,"depth":1240,"text":1171,"children":1251},[1252],{"id":1217,"depth":1245,"text":1218},"md","2026-08-28T00:00:00.000Z",{"head":1256,"readingTime":1261},{"meta":1257},[1258],{"name":1259,"content":1260},"keywords","GTIN, EAN, SKU, GS1 company prefix, check digit, LGTIN, SGTIN, SSCC, gcp length, foreign prefix, identifier verdict",{"text":1262,"minutes":1263,"time":1264,"words":1265},"12 min read",11.595,695700,2319,{"title":693,"tags":1267},[677,105,699,109,110,104,700],{"title":746,"description":696},{"loc":694,"lastmod":1270,"changefreq":1271,"priority":1272},"2026-08-28","monthly",0.8,"xFDn80sRcjHsjCP6LjrLS-HUUBKMJZtZPDR05zIQDOs",[1275],{"title":5,"path":6,"stem":7,"children":1276},[1277,1279,1284,1289,1294,1299,1304,1309,1319,1324,1329,1334,1399,1404,1433,1451,1456,1459],{"title":10,"path":6,"stem":11,"description":12,"icon":13,"tags":1278},[15,16,17,18,19,20,21],{"title":23,"path":24,"stem":25,"children":1280,"description":28,"icon":29,"tags":1283},[1281],{"title":23,"path":24,"stem":25,"description":28,"icon":29,"tags":1282},[16,31,32,33,34,35,36,37,38,39],[16,31,32,33,34,35,36,37,38,39],{"title":42,"path":43,"stem":44,"children":1285,"description":47,"icon":48,"tags":1288},[1286],{"title":42,"path":43,"stem":44,"description":47,"icon":48,"tags":1287},[16,31,32,33,50,51,39],[16,31,32,33,50,51,39],{"title":54,"path":55,"stem":56,"children":1290,"description":59,"icon":60,"tags":1293},[1291],{"title":54,"path":55,"stem":56,"description":59,"icon":60,"tags":1292},[16,62,63,64,65,66,67,21,68,69,70,71,72],[16,62,63,64,65,66,67,21,68,69,70,71,72],{"title":75,"path":76,"stem":77,"children":1295,"description":80,"icon":81,"tags":1298},[1296],{"title":75,"path":76,"stem":77,"description":80,"icon":81,"tags":1297},[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],{"title":89,"path":90,"stem":91,"children":1300,"description":94,"icon":95,"tags":1303},[1301],{"title":89,"path":90,"stem":91,"description":94,"icon":95,"tags":1302},[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],{"title":115,"path":116,"stem":117,"children":1305,"description":120,"icon":121,"tags":1308},[1306],{"title":115,"path":116,"stem":117,"description":120,"icon":121,"tags":1307},[16,123,62,63,64,65,21,124,125,126,71,72],[16,123,62,63,64,65,21,124,125,126,71,72],{"title":129,"path":130,"stem":131,"children":1310,"description":134,"icon":135,"tags":1318},[1311,1313],{"title":129,"path":130,"stem":131,"description":134,"icon":135,"tags":1312},[16,123,62,63,64,65,21,124,125,126,71,72],{"title":138,"path":139,"stem":140,"children":1314,"description":143,"icon":144,"tags":1317},[1315],{"title":138,"path":139,"stem":140,"description":143,"icon":144,"tags":1316},[16,62,63,146,21,147,148,149,35,150,151,152,153],[16,62,63,146,21,147,148,149,35,150,151,152,153],[16,123,62,63,64,65,21,124,125,126,71,72],{"title":157,"path":158,"stem":159,"children":1320,"description":162,"icon":163,"tags":1323},[1321],{"title":157,"path":158,"stem":159,"description":162,"icon":163,"tags":1322},[16,62,63,146,21,165,35,150,151,152,153],[16,62,63,146,21,165,35,150,151,152,153],{"title":168,"path":169,"stem":170,"children":1325,"description":173,"icon":174,"tags":1328},[1326],{"title":168,"path":169,"stem":170,"description":173,"icon":174,"tags":1327},[16,176,15,177,21,178,35,179,151,152,180],[16,176,15,177,21,178,35,179,151,152,180],{"title":183,"path":184,"stem":185,"children":1330,"description":188,"icon":189,"tags":1333},[1331],{"title":183,"path":184,"stem":185,"description":188,"icon":189,"tags":1332},[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],{"title":207,"path":208,"stem":209,"children":1335,"description":212,"icon":213,"tags":1398},[1336,1338,1343,1354,1367,1376,1381,1383,1385,1387,1396],{"title":207,"path":208,"stem":209,"description":212,"icon":213,"tags":1337},[215,216,217,31,218,35,219,220],{"title":222,"path":223,"stem":224,"children":1339,"description":227,"icon":228,"tags":1342},[1340],{"title":222,"path":223,"stem":224,"description":227,"icon":228,"tags":1341},[230,231,218,216,217,232],[230,231,218,216,217,232],{"title":235,"path":236,"stem":237,"children":1344,"description":240,"icon":241,"tags":1353},[1345,1347,1349,1351],{"title":235,"path":236,"stem":237,"description":240,"icon":241,"tags":1346},[243,244,216,31,103,35,218,245],{"title":247,"path":248,"stem":249,"description":250,"icon":174,"tags":1348},[243,244,216,31,220],{"title":253,"path":254,"stem":255,"description":256,"icon":257,"tags":1350},[243,31,65,39,216],{"title":260,"path":261,"stem":262,"description":263,"icon":13,"tags":1352},[243,265,266,63,267,245],[243,244,216,31,103,35,218,245],{"title":270,"path":271,"stem":272,"children":1355,"description":275,"icon":276,"tags":1366},[1356,1358,1360,1362,1364],{"title":270,"path":271,"stem":272,"description":275,"icon":276,"tags":1357},[278,279,280,216,31,103,35,218,245],{"title":247,"path":282,"stem":283,"description":284,"icon":285,"tags":1359},[278,279,280,216,31,245],{"title":253,"path":288,"stem":289,"description":290,"icon":285,"tags":1361},[278,31,65,39,216],{"title":293,"path":294,"stem":295,"description":296,"icon":285,"tags":1363},[278,97,298,299,216,245],{"title":260,"path":301,"stem":302,"description":303,"icon":13,"tags":1365},[278,265,280,245,305],[278,279,280,216,31,103,35,218,245],{"title":308,"path":309,"stem":310,"children":1368,"description":313,"icon":314,"tags":1375},[1369,1371,1373],{"title":308,"path":309,"stem":310,"description":313,"icon":314,"tags":1370},[316,317,318,216,218,319],{"title":247,"path":321,"stem":322,"description":323,"icon":324,"tags":1372},[316,317,318,326],{"title":260,"path":328,"stem":329,"description":330,"icon":13,"tags":1374},[316,265,317,318,332,63],[316,317,318,216,218,319],{"title":335,"path":336,"stem":337,"children":1377,"description":340,"icon":60,"tags":1380},[1378],{"title":335,"path":336,"stem":337,"description":340,"icon":60,"tags":1379},[342,343,103,344,230,345,346,220],[342,343,103,344,230,345,346,220],{"title":349,"path":350,"stem":351,"description":352,"icon":29,"tags":1382},[354,97,299,355,298],{"title":357,"path":358,"stem":359,"description":360,"icon":361,"tags":1384},[298,97,299],{"title":364,"path":365,"stem":366,"description":367,"icon":368,"tags":1386},[370,371,372,344],{"title":374,"path":375,"stem":376,"children":1388,"description":379,"icon":380,"tags":1395},[1389,1391,1393],{"title":374,"path":375,"stem":376,"description":379,"icon":380,"tags":1390},[382,383,384,385,386],{"title":247,"path":388,"stem":389,"description":390,"icon":174,"tags":1392},[382,326,383,384,385],{"title":260,"path":393,"stem":394,"description":395,"icon":13,"tags":1394},[382,265,397,398,63],[382,383,384,385,386],{"title":401,"path":402,"stem":403,"description":404,"icon":228,"tags":1397},[406,407,408,409,342,410],[215,216,217,31,218,35,219,220],{"title":413,"path":414,"stem":415,"children":1400,"description":418,"icon":419,"tags":1403},[1401],{"title":413,"path":414,"stem":415,"description":418,"icon":419,"tags":1402},[16,421,422,423,424,425,426,21,72],[16,421,422,423,424,425,426,21,72],{"title":429,"path":430,"stem":431,"children":1405,"description":434,"icon":435,"tags":1432},[1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430],{"title":429,"path":430,"stem":431,"description":434,"icon":435,"tags":1407},[437,438,215,97,439,298],{"title":441,"path":442,"stem":443,"description":444,"icon":445,"tags":1409},[437,447,448,449,450,451],{"title":453,"path":454,"stem":455,"description":456,"icon":457,"tags":1411},[437,459,105,460,461,439],{"title":463,"path":464,"stem":465,"description":466,"icon":467,"tags":1413},[437,469,63,424,470,471,472],{"title":474,"path":475,"stem":476,"description":477,"icon":478,"tags":1415},[437,480,481,111,482,483],{"title":485,"path":486,"stem":487,"description":488,"icon":489,"tags":1417},[437,299,97,298,491,492],{"title":494,"path":495,"stem":496,"description":497,"icon":498,"tags":1419},[437,500,501,502,503,504],{"title":506,"path":507,"stem":508,"description":509,"icon":419,"tags":1421},[437,503,511,512,513,514],{"title":516,"path":517,"stem":518,"description":519,"icon":520,"tags":1423},[437,522,523,230,524,525],{"title":527,"path":528,"stem":529,"description":530,"icon":29,"tags":1425},[437,298,532,533,534,112],{"title":536,"path":537,"stem":538,"description":539,"icon":540,"tags":1427},[437,542,543,544,545,546],{"title":548,"path":549,"stem":550,"description":551,"icon":552,"tags":1429},[437,554,555,556,557,558],{"title":560,"path":561,"stem":562,"description":563,"icon":564,"tags":1431},[437,566,567,568,569,570,448],[437,438,215,97,439,298],{"title":573,"path":574,"stem":575,"children":1434,"description":578,"icon":579},[1435,1436,1437,1438],{"title":573,"path":574,"stem":575,"description":578,"icon":579},{"title":581,"path":582,"stem":583,"description":584,"icon":585},{"title":587,"path":588,"stem":589,"description":590,"icon":591},{"title":593,"path":594,"stem":595,"children":1439,"description":598,"icon":599},[1440,1441,1443,1445,1447,1448,1449,1450],{"title":593,"path":594,"stem":595,"description":598,"icon":599},{"title":601,"path":602,"stem":603,"description":604,"icon":605,"tags":1442},[298,97,103,299,220],{"title":608,"path":609,"stem":610,"description":611,"icon":612,"tags":1444},[220,614,103,298,63],{"title":616,"path":617,"stem":618,"description":619,"icon":620,"tags":1446},[39,16,31,65,622,35],{"title":624,"path":625,"stem":626,"description":627,"icon":628},{"title":630,"path":631,"stem":632,"description":633,"icon":634},{"title":636,"path":637,"stem":638,"description":639,"icon":640},{"title":642,"path":643,"stem":644,"description":645,"icon":646},{"title":648,"path":649,"stem":650,"children":1452,"description":653,"icon":29,"tags":1455},[1453],{"title":648,"path":649,"stem":650,"description":653,"icon":29,"tags":1454},[655,656,657,406,343,658,659,660],[655,656,657,406,343,658,659,660],{"title":663,"path":664,"stem":665,"children":1457,"description":668,"icon":634},[1458],{"title":663,"path":664,"stem":665,"description":668,"icon":634},{"title":670,"path":671,"stem":672,"children":1460,"description":675,"icon":540,"tags":1473},[1461,1463,1465,1467,1469,1471],{"title":670,"path":671,"stem":672,"description":675,"icon":540,"tags":1462},[677,678,679,680,681,215,31,298],{"title":683,"path":684,"stem":685,"description":686,"icon":60,"tags":1464},[677,543,688,689,690,691],{"title":693,"path":694,"stem":695,"description":696,"icon":697,"tags":1466},[677,105,699,109,110,104,700],{"title":702,"path":703,"stem":704,"description":705,"icon":540,"tags":1468},[677,678,570,105,688,690,500],{"title":708,"path":709,"stem":710,"description":711,"icon":228,"tags":1470},[677,31,65,713,714,715,406,343,523,716],{"title":718,"path":719,"stem":720,"description":721,"icon":457,"tags":1472},[677,679,31,65,104,372,714,723],[677,678,679,680,681,215,31,298],{"id":745,"title":746,"body":1475,"description":696,"extension":1253,"icon":697,"lastUpdated":1254,"meta":1778,"navigation":1783,"path":694,"seo":1785,"sitemap":1786,"stem":695,"__hash__":1273},{"type":748,"value":1476,"toc":1766},[1477,1479,1485,1489,1491,1493,1498,1508,1514,1530,1532,1536,1538,1558,1576,1582,1596,1598,1606,1610,1612,1614,1682,1686,1704,1716,1724,1726,1728,1738,1742,1752,1754,1764],[751,1478,754],{"id":753},[756,1480,758,1481,763,1483,768],{},[760,1482,762],{},[765,1484,767],{},[756,1486,771,1487,775],{},[765,1488,774],{},[777,1490,780],{"id":779},[756,1492,783],{},[785,1494,1496],{"className":1495,"code":789,"language":790,"meta":791},[788],[793,1497,789],{"__ignoreMap":791},[756,1499,797,1500,801,1502,805,1504,809,1506,813],{},[760,1501,800],{},[760,1503,804],{},[793,1505,808],{},[760,1507,812],{},[756,1509,816,1510,820,1512,824],{},[793,1511,819],{},[793,1513,823],{},[826,1515,1516,1526],{"type":828},[756,1517,1518,837,1522,841,1524,847],{},[760,1519,1520,836],{},[793,1521,835],{},[793,1523,840],{},[843,1525,846],{"href":845},[756,1527,850,1528,854],{},[793,1529,853],{},[751,1531,858],{"id":857},[756,1533,861,1534,865],{},[793,1535,864],{},[756,1537,868],{},[756,1539,871,1540,874,1542,878,1544,882,1546,885,1548,888,1550,892,1552,895,1554,898,1556,902],{},[760,1541,702],{},[793,1543,877],{},[793,1545,881],{},[793,1547,699],{},[793,1549,881],{},[793,1551,891],{},[793,1553,699],{},[765,1555,774],{},[793,1557,901],{},[756,1559,905,1560,908,1562,912,1564,916,1566,919,1568,923,1570,927,1572,931,1574,935],{},[793,1561,881],{},[793,1563,911],{},[793,1565,915],{},[793,1567,915],{},[793,1569,922],{},[793,1571,926],{},[793,1573,930],{},[793,1575,934],{},[756,1577,938,1578,941,1580,944],{},[793,1579,881],{},[793,1581,699],{},[756,1583,871,1584,950,1586,954,1588,958,1590,961,1592,965,1594,968],{},[760,1585,949],{},[793,1587,953],{},[793,1589,957],{},[760,1591,681],{},[793,1593,964],{},[793,1595,111],{},[777,1597,972],{"id":971},[756,1599,975,1600,978,1602,981,1604,984],{},[793,1601,881],{},[793,1603,891],{},[793,1605,877],{},[756,1607,987,1608,991],{},[793,1609,990],{},[751,1611,995],{"id":994},[756,1613,998],{},[1000,1615,1616,1628],{},[1003,1617,1618],{},[1006,1619,1620,1622,1624,1626],{},[1009,1621,1011],{},[1009,1623,1014],{},[1009,1625,1017],{},[1009,1627,1020],{},[1022,1629,1630,1642,1656,1670],{},[1006,1631,1632,1634,1636,1640],{},[1027,1633,1029],{},[1027,1635,762],{},[1027,1637,1638],{},[793,1639,1036],{},[1027,1641,1039],{},[1006,1643,1644,1646,1648,1652],{},[1027,1645,1044],{},[1027,1647,1047],{},[1027,1649,1650],{},[793,1651,1052],{},[1027,1653,1055,1654],{},[793,1655,1058],{},[1006,1657,1658,1660,1662,1666],{},[1027,1659,1063],{},[1027,1661,1066],{},[1027,1663,1664],{},[793,1665,1071],{},[1027,1667,1055,1668],{},[793,1669,1076],{},[1006,1671,1672,1674,1676,1680],{},[1027,1673,1081],{},[1027,1675,1084],{},[1027,1677,1678],{},[793,1679,1089],{},[1027,1681,1092],{},[756,1683,797,1684,1097],{},[760,1685,762],{},[756,1687,1100,1688,1104,1690,1108,1692,1112,1694,1116,1696,1120,1698,1124,1700,1128,1702,1131],{},[760,1689,1103],{},[765,1691,1107],{},[793,1693,1111],{},[793,1695,1115],{},[793,1697,1119],{},[793,1699,1123],{},[793,1701,1127],{},[793,1703,930],{},[756,1705,1100,1706,1137,1708,1140,1710,1143,1712,1147,1714,847],{},[760,1707,1136],{},[765,1709,774],{},[793,1711,1119],{},[793,1713,1146],{},[793,1715,1150],{},[756,1717,1100,1718,1156,1720,1160,1722,1164],{},[760,1719,1155],{},[765,1721,1159],{},[793,1723,1163],{},[756,1725,1167],{},[751,1727,1171],{"id":1170},[756,1729,1174,1730,1178,1732,1182,1734,1185,1736,1189],{},[793,1731,1177],{},[793,1733,1181],{},[793,1735,819],{},[793,1737,1188],{},[756,1739,1192,1740,1196],{},[760,1741,1195],{},[756,1743,1199,1744,1203,1746,1207,1748,1211,1750,1214],{},[793,1745,1202],{},[793,1747,1206],{},[765,1749,1210],{},[793,1751,1206],{},[777,1753,1218],{"id":1217},[756,1755,1221,1756,1225,1758,1231,1762,1235],{},[793,1757,1224],{},[760,1759,1760],{},[793,1761,1230],{},[793,1763,1234],{},[756,1765,1238],{},{"title":791,"searchDepth":1240,"depth":1240,"links":1767},[1768,1771,1774,1775],{"id":753,"depth":1240,"text":754,"children":1769},[1770],{"id":779,"depth":1245,"text":780},{"id":857,"depth":1240,"text":858,"children":1772},[1773],{"id":971,"depth":1245,"text":972},{"id":994,"depth":1240,"text":995},{"id":1170,"depth":1240,"text":1171,"children":1776},[1777],{"id":1217,"depth":1245,"text":1218},{"head":1779,"readingTime":1782},{"meta":1780},[1781],{"name":1259,"content":1260},{"text":1262,"minutes":1263,"time":1264,"words":1265},{"title":693,"tags":1784},[677,105,699,109,110,104,700],{"title":746,"description":696},{"loc":694,"lastmod":1270,"changefreq":1271,"priority":1272},1788349684218]