[{"data":1,"prerenderedAt":2238},["ShallowReactive",2],{"navigation-docsEN":3,"navigation-blogEN":500,"docs-EN-\u002Fdocs\u002Fprofile-checker":518,"docsNav-EN-\u002Fdocs":1454,"docsSecNav-EN-\u002Fdocs\u002Fprofile-checker":1598},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,22,40,52,73,87,113,127,154,165,180,204,392,408,484],{"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":39},"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],"epcis","epcis-1-2","gs1-epcis-standard","supply-chain","traceability","data-sharing","tracking","tracing",[16,31,32,33,34,35,36,37,38],{"title":41,"path":42,"stem":43,"children":44,"description":46,"icon":47,"tags":51},"EPCIS","\u002Fdocs\u002Fepcis","docs\u002F02.epcis\u002Findex",[45],{"title":41,"path":42,"stem":43,"description":46,"icon":47,"tags":48},"Discover the specifics of EPCIS, how it works, and what OpenEPCIS is.","i-custom-open-epcis",[16,31,32,33,49,50],"iso-iec-19987","iso-iec-19988",[16,31,32,33,49,50],{"title":53,"path":54,"stem":55,"children":56,"description":58,"icon":59,"tags":72},"Format Converter","\u002Fdocs\u002Fformat-converter","docs\u002F03.format-converter\u002Findex",[57],{"title":53,"path":54,"stem":55,"description":58,"icon":59,"tags":60},"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,61,62,63,64,65,66,21,67,68,69,70,71],"json","json-ld","xml","events","format-converter","convert","convert-epcis-events","format","converter","epcis-tool","tools",[16,61,62,63,64,65,66,21,67,68,69,70,71],{"title":74,"path":75,"stem":76,"children":77,"description":79,"icon":80,"tags":86},"Version Converter","\u002Fdocs\u002Fversion-converter","docs\u002F04.version-converter\u002Findex",[78],{"title":74,"path":75,"stem":76,"description":79,"icon":80,"tags":81},"OpenEPCIS solution to convert EPCIS XML document from version 1.2 to 2.0 and vice versa.","heroicons:arrows-up-down",[16,32,61,62,63,64,82,66,21,83,84,85,69,70,71],"version-converter","convert-epcis-version","version","epcis-version",[16,32,61,62,63,64,82,66,21,83,84,85,69,70,71],{"title":88,"path":89,"stem":90,"children":91,"description":93,"icon":94,"tags":112},"Identifier Converter","\u002Fdocs\u002Fidentifier-converter","docs\u002F05.identifier-converter\u002Findex",[92],{"title":88,"path":89,"stem":90,"description":93,"icon":94,"tags":95},"OpenEPCIS solution to convert EPCIS instance or class identifier from URN to digital link WebURI and vice versa.","i-heroicons-link",[16,96,97,98,99,100,21,101,102,103,104,105,106,107,108,109,110,111],"gs1-digital-link","urn-format","epc-uri","epc","weburi","gs1-standard","gs1","sscc","gtin","giai","grai","gdti","lgtin","sgtin","gln","gcp",[16,96,97,98,99,100,21,101,102,103,104,105,106,107,108,109,110,111],{"title":114,"path":115,"stem":116,"children":117,"description":119,"icon":120,"tags":126},"Event Hash Generator","\u002Fdocs\u002Fevent-hash-generator","docs\u002F06.event-hash-generator\u002Findex",[118],{"title":114,"path":115,"stem":116,"description":119,"icon":120,"tags":121},"OpenEPCIS solution to generate unique event hash for EPCIS XML or JSON\u002FJSON-LD document or event list.","heroicons-outline:finger-print",[16,122,61,62,63,64,21,123,124,125,70,71],"event-hash","event","hash","generator",[16,122,61,62,63,64,21,123,124,125,70,71],{"title":128,"path":129,"stem":130,"children":131,"description":133,"icon":134,"tags":153},"Test Data Generator","\u002Fdocs\u002Ftest-data-generator","docs\u002F07.test-data-generator\u002Findex",[132,136],{"title":128,"path":129,"stem":130,"description":133,"icon":134,"tags":135},"OpenEPCIS solution to generate a large set of EPCIS test data events for all use cases\u002Fsupply chain requirements.","heroicons-outline:cog",[16,122,61,62,63,64,21,123,124,125,70,71],{"title":137,"path":138,"stem":139,"children":140,"description":133,"icon":142,"tags":152},"EPCIS Implementation Guidelines","\u002Fdocs\u002Ftest-data-generator\u002Fgs1-epcis-implementation-guidelines","docs\u002F07.test-data-generator\u002F01.gs1-epcis-implementation-guidelines\u002Findex",[141],{"title":137,"path":138,"stem":139,"description":133,"icon":142,"tags":143},"heroicons-outline:badge-check",[16,61,62,144,21,145,146,147,35,148,149,150,151],"testing","test-data-generator","design","design-template","process-automation","compliance","supply-chain-management","load-tests",[16,61,62,144,21,145,146,147,35,148,149,150,151],[16,122,61,62,63,64,21,123,124,125,70,71],{"title":155,"path":156,"stem":157,"children":158,"description":160,"icon":161,"tags":164},"Test Resource Management","\u002Fdocs\u002Ftest-resource-management","docs\u002F08.test-resource-management\u002Findex",[159],{"title":155,"path":156,"stem":157,"description":160,"icon":161,"tags":162},"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,61,62,144,21,163,35,148,149,150,151],"performance-tests",[16,61,62,144,21,163,35,148,149,150,151],{"title":166,"path":167,"stem":168,"children":169,"description":171,"icon":172,"tags":179},"Vocabulary Management","\u002Fdocs\u002Fvocabulary-management","docs\u002F09.vocabulary-management\u002Findex",[170],{"title":166,"path":167,"stem":168,"description":171,"icon":172,"tags":173},"Collection of standardized constants and strings for EPCIS event data.","heroicons-outline:book-open",[16,174,15,175,21,176,35,177,149,150,178],"constants","centralization","standardization","vocabulary","data-dictionary",[16,174,15,175,21,176,35,177,149,150,178],{"title":181,"path":182,"stem":183,"children":184,"description":186,"icon":187,"tags":203},"Dependency Management","\u002Fdocs\u002Fdependency-management","docs\u002F10.dependency-management\u002Findex",[185],{"title":181,"path":182,"stem":183,"description":186,"icon":187,"tags":188},"Centralized Maven Bill of Materials (BOM) for all the OpenEPCIS modules.","heroicons-outline:folder",[189,15,190,191,192,193,194,31,195,196,197,198,199,200,201,202],"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",[189,15,190,191,192,193,194,31,195,196,197,198,199,200,201,202],{"title":205,"path":206,"stem":207,"children":208,"description":210,"icon":211,"tags":391},"Digital Product Passport","\u002Fdocs\u002Fdigital-product-passport","docs\u002F11.digital-product-passport\u002Findex",[209,218,230,262,296,323,337,346,354,364],{"title":205,"path":206,"stem":207,"description":210,"icon":211,"tags":212},"Introduction to Digital Product Passport and how EPCIS enables product traceability for DPP compliance.","heroicons-outline:identification",[213,214,215,31,216,35,217],"digital-product-passport","dpp","eu-regulation","sustainability","circular-economy",{"title":219,"path":220,"stem":221,"children":222,"description":224,"icon":225,"tags":229},"ESPR Framework","\u002Fdocs\u002Fdigital-product-passport\u002Fespr-framework","docs\u002F11.digital-product-passport\u002F00.espr-framework\u002Findex",[223],{"title":219,"path":220,"stem":221,"description":224,"icon":225,"tags":226},"Guide to the EU Ecodesign for Sustainable Products Regulation (ESPR) 2024\u002F1781 and how OpenEPCIS supports Digital Product Passport requirements.","heroicons-outline:shield-check",[227,228,216,214,215],"espr","ecodesign",[227,228,216,214,215],{"title":231,"path":232,"stem":233,"children":234,"description":236,"icon":237,"tags":261},"Battery DPP","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002Findex",[235,241,246,252],{"title":231,"path":232,"stem":233,"description":236,"icon":237,"tags":238},"GS1-native implementation of EU Battery Regulation 2023\u002F1542 Digital Product Passport using EPCIS 2.0","heroicons:battery-100",[239,240,214,31,102,35,216],"battery","eu-battery-regulation",{"title":242,"path":243,"stem":244,"description":245,"icon":172},"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",{"title":247,"path":248,"stem":249,"description":250,"icon":251},"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",{"title":253,"path":254,"stem":255,"description":256,"icon":13,"tags":257},"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",[239,258,259,62,260],"examples","annex-xiii","carbon-footprint",[239,240,214,31,102,35,216],{"title":263,"path":264,"stem":265,"children":266,"description":268,"icon":269,"tags":295},"EUDR","\u002Fdocs\u002Fdigital-product-passport\u002Feudr","docs\u002F11.digital-product-passport\u002F02.eudr\u002Findex",[267,274,279,283,288],{"title":263,"path":264,"stem":265,"description":268,"icon":269,"tags":270},"GS1-native implementation of EU Deforestation Regulation 2023\u002F1115 compliance using EPCIS 2.0","heroicons-outline:globe-europe-africa",[271,272,273,214,31,102,35,216],"eudr","deforestation","timber",{"title":242,"path":275,"stem":276,"description":277,"icon":278},"\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,{"title":247,"path":280,"stem":281,"description":282,"icon":278},"\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",{"title":284,"path":285,"stem":286,"description":287,"icon":278},"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",{"title":253,"path":289,"stem":290,"description":291,"icon":13,"tags":292},"\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",[271,258,273,293,294],"due-diligence","geolocation",[271,272,273,214,31,102,35,216],{"title":297,"path":298,"stem":299,"children":300,"description":302,"icon":303,"tags":322},"Textile DPP","\u002Fdocs\u002Fdigital-product-passport\u002Ftextile","docs\u002F11.digital-product-passport\u002F03.textile\u002Findex",[301,309,316],{"title":297,"path":298,"stem":299,"description":302,"icon":303,"tags":304},"Digital Product Passport vocabulary for textiles and apparel under the EU Sustainable Textiles Strategy and ESPR 2024\u002F1781.","heroicons-outline:sparkles",[305,306,307,214,216,308],"textile","apparel","footwear","fibre-composition",{"title":242,"path":310,"stem":311,"description":312,"icon":313,"tags":314},"\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",[305,306,307,315],"implementation",{"title":253,"path":317,"stem":318,"description":319,"icon":13,"tags":320},"\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",[305,258,306,307,321,62],"fiber-composition",[305,306,307,214,216,308],{"title":324,"path":325,"stem":326,"children":327,"description":329,"icon":59,"tags":336},"Interoperability","\u002Fdocs\u002Fdigital-product-passport\u002Finteroperability","docs\u002F11.digital-product-passport\u002F04.interoperability\u002Findex",[328],{"title":324,"path":325,"stem":326,"description":329,"icon":59,"tags":330},"Guide to OpenEPCIS DPP interoperability with GS1, UNTP, CIRPASS2, and ESPR standards.",[331,332,102,333,227,334,335],"interoperability","untp","cirpass2","standards","alignment",[331,332,102,333,227,334,335],{"title":338,"path":339,"stem":340,"description":341,"icon":29,"tags":342},"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",[343,96,344,345],"walkthrough","linkset","content-negotiation",{"title":347,"path":348,"stem":349,"description":350,"icon":351,"tags":352},"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",[353,96,344],"resolver",{"title":355,"path":356,"stem":357,"description":358,"icon":359,"tags":360},"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",[361,362,363,333],"example","components","aggregation",{"title":365,"path":366,"stem":367,"children":368,"description":370,"icon":371,"tags":390},"Electronics DPP","\u002Fdocs\u002Fdigital-product-passport\u002Felectronics","docs\u002F11.digital-product-passport\u002F08.electronics\u002Findex",[369,378,383],{"title":365,"path":366,"stem":367,"description":370,"icon":371,"tags":372},"Digital Product Passport vocabulary for electronic devices under ESPR, the French Repairability Index, EU Right to Repair and WEEE.","heroicons-outline:device-phone-mobile",[373,374,375,376,377],"electronics","repairability","weee","energy-label","right-to-repair",{"title":242,"path":379,"stem":380,"description":381,"icon":172,"tags":382},"\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",[373,315,374,375,376],{"title":253,"path":384,"stem":385,"description":386,"icon":13,"tags":387},"\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",[373,258,388,389,62],"smartphone","laptop",[373,374,375,376,377],[213,214,215,31,216,35,217],{"title":393,"path":394,"stem":395,"children":396,"description":398,"icon":399,"tags":407},"Profile Checker","\u002Fdocs\u002Fprofile-checker","docs\u002F12.profile-checker\u002Findex",[397],{"title":393,"path":394,"stem":395,"description":398,"icon":399,"tags":400},"OpenEPCIS tool to define EPCIS event profiles as JSON Schema and validate EPCIS documents or events against them.","heroicons-outline:clipboard-document-check",[16,401,402,403,404,405,406,21,71],"event-profile","profile-checker","json-schema","validation","data-quality","conformance",[16,401,402,403,404,405,406,21,71],{"title":409,"path":410,"stem":411,"children":412,"description":414,"icon":415},"OpenEPCIS Overview","\u002Fdocs\u002Fplatform-overview","docs\u002F14.platform-overview\u002Findex",[413,416,422,428,434],{"title":409,"path":410,"stem":411,"description":414,"icon":415},"A GS1-conformant supply-chain data platform — Resolver, Masterdata, EPCIS Events — in open source and business editions.","lucide:layout-dashboard",{"title":417,"path":418,"stem":419,"description":420,"icon":421},"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":423,"path":424,"stem":425,"description":426,"icon":427},"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":429,"path":430,"stem":431,"description":432,"icon":433},"Roadmap","\u002Fdocs\u002Fplatform-overview\u002Froadmap","docs\u002F14.platform-overview\u002F03.roadmap","Three horizons — Now, Next, Later. Skeleton awaiting user-confirmed dates.","lucide:map",{"title":435,"path":436,"stem":437,"children":438,"description":440,"icon":441},"Modules","\u002Fdocs\u002Fplatform-overview\u002Fmodules","docs\u002F14.platform-overview\u002Fmodules\u002Findex",[439,442,448,454,460,466,472,478],{"title":435,"path":436,"stem":437,"description":440,"icon":441},"Seven module families that organise the OpenEPCIS platform — Resolver, Masterdata, EPCIS Events, Formats & Validation, Integration, Testdata, Platform.","lucide:layers",{"title":443,"path":444,"stem":445,"description":446,"icon":447},"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",{"title":449,"path":450,"stem":451,"description":452,"icon":453},"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",{"title":455,"path":456,"stem":457,"description":458,"icon":459},"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",{"title":461,"path":462,"stem":463,"description":464,"icon":465},"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":467,"path":468,"stem":469,"description":470,"icon":471},"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":473,"path":474,"stem":475,"description":476,"icon":477},"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":479,"path":480,"stem":481,"description":482,"icon":483},"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":485,"path":486,"stem":487,"children":488,"description":490,"icon":29,"tags":499},"Vision","\u002Fdocs\u002Fvision","docs\u002F15.vision\u002Findex",[489],{"title":485,"path":486,"stem":487,"description":490,"icon":29,"tags":491},"How UNTP, DIDs, Verifiable Credentials, and EPCIS work together to create unified product identity infrastructure for the connected supply chain.",[492,493,494,495,332,496,497,498],"vision","digital-twin","did","verifiable-credentials","rfid","industry-4-0","web-3-0",[492,493,494,495,332,496,497,498],[501],{"title":502,"path":503,"stem":504,"children":505,"page":517},"Blog","\u002Fblog","blog",[506,512],{"title":507,"path":508,"stem":509,"description":510,"icon":511},"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":513,"path":514,"stem":515,"description":516,"icon":511},"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":519,"usedFallback":517},{"id":520,"title":521,"body":522,"description":398,"extension":1433,"icon":399,"lastUpdated":1434,"meta":1435,"navigation":1450,"path":394,"seo":1452,"stem":395,"__hash__":1453},"docsEN\u002Fdocs\u002F12.profile-checker\u002Findex.md","EPCIS Profile Checker",{"type":523,"value":524,"toc":1417},"minimark",[525,530,534,543,550,557,564,571,578,581,584,599,602,605,609,612,654,676,680,685,688,695,699,702,708,714,718,721,725,731,986,996,1127,1130,1134,1161,1165,1174,1194,1198,1201,1236,1250,1253,1293,1297,1300,1307,1341,1344,1385,1389,1413],[526,527,529],"h2",{"id":528},"quick-links","Quick links",[531,532,533],"p",{},"Please find below the links to the application, its source code and the shared profile library referenced on this documentation page. We recommend using the web application and trying the examples as you read:",[531,535,536,537],{},"• Profile Checker web application : ",[538,539,540],"a",{"href":540,"rel":541},"https:\u002F\u002Fprofile-checker.openepcis.io",[542],"nofollow",[531,544,545,546],{},"• Web application source code : ",[538,547,548],{"href":548,"rel":549},"https:\u002F\u002Fgithub.com\u002Fopenepcis\u002Fopenepcis-snippet-web",[542],[531,551,552,553],{},"• Event Sentry SDK and profile library : ",[538,554,555],{"href":555,"rel":556},"https:\u002F\u002Fgithub.com\u002Fopenepcis\u002Fopenepcis-event-sentry",[542],[531,558,559,560],{},"• Example profiles with matching events : ",[538,561,562],{"href":562,"rel":563},"https:\u002F\u002Fgithub.com\u002Fopenepcis\u002Fopenepcis-event-sentry\u002Ftree\u002Fmain\u002Fexamples",[542],[531,565,566,567],{},"• Reusable JSON Schema snippets : ",[538,568,569],{"href":569,"rel":570},"https:\u002F\u002Fgithub.com\u002Fopenepcis\u002Fopenepcis-event-sentry\u002Ftree\u002Fmain\u002Fjson-schema-epcis-snippets",[542],[531,572,573,574],{},"• Container image : ",[575,576,577],"code",{},"ghcr.io\u002Fopenepcis\u002Fopenepcis-snippet-web:latest",[526,579,23],{"id":580},"introduction",[531,582,583],{},"The GS1 EPCIS standard was intentionally designed to be highly flexible. It tells you how to express the WHAT, WHEN, WHERE, WHY and HOW dimension of a critical business operation, and it leaves most of the detail to the implementer. That flexibility is what makes EPCIS usable across industries. But there is a downside. Two companies can both follow the standard correctly and yet still not be able to use each other's data. For example, if Company-A sends a shipping event without the read point, a partner Company-B that needs that field to know which warehouse the goods left from cannot use the data, even though no rule was broken.",[531,585,586,587,590,591,594,595,598],{},"Trading companies solve this by agreeing on stricter rules on their own: which ",[575,588,589],{},"event type"," to use for a shipment, which identifier must appear in ",[575,592,593],{},"epcList",", whether a ",[575,596,597],{},"readPoint"," needs to be a plain GLN. These agreements are usually written down in a specification document, and somebody then manually validates incoming data against specification. That work is slow, requires manual efforts and prone to errors.",[531,600,601],{},"An event profile turns such an agreement into something a machine can check. A profile is a JSON Schema document that references the official GS1 EPCIS JSON Schema and adds the constraints the users have agreed on. Once the rules exist in that form, every partner can verify their own events before sending them, and the receiving side can reject bad data at the entry point instead of fixing them later.",[531,603,604],{},"The EPCIS Profile Checker covers both halves of that workflow. It gives you an editor for writing profiles and a validator for testing real events against them, with a library of pre-written schema fragments so you rarely have to start from an empty file.",[526,606,608],{"id":607},"what-a-profile-defines","What a profile defines",[531,610,611],{},"Consider an industry wants every shipping event exchanged between its members to follow the same shape. The agreement might read:",[613,614,615,625,638,643,648,651],"ul",{},[616,617,618,621,622],"li",{},[575,619,620],{},"type"," must be ",[575,623,624],{},"ObjectEvent",[616,626,627,630,631,634,635],{},[575,628,629],{},"bizStep"," must be either ",[575,632,633],{},"shipping"," or ",[575,636,637],{},"departing",[616,639,640,642],{},[575,641,593],{}," must contain at least one SSCC",[616,644,645,647],{},[575,646,597],{}," must be a GLN without an extension",[616,649,650],{},"every GS1 identifier must be expressed as a GS1 Digital Link URI",[616,652,653],{},"the extension field for estimated time of arrival must contain a valid date and time",[531,655,656,657,660,661,663,664,667,668,675],{},"Each line becomes a constraint in the profile: an ",[575,658,659],{},"enum"," for the allowed business steps, a regular expression for the SSCC and GLN patterns, a ",[575,662,68],{}," check for the timestamp, and a ",[575,665,666],{},"required"," list for the fields that may not be missing. Because the profile also references ",[538,669,672],{"href":670,"rel":671},"https:\u002F\u002Fref.gs1.org\u002Fstandards\u002Fepcis\u002Fepcis-json-schema.json",[542],[575,673,674],{},"epcis-json-schema.json"," from GS1, an event still has to satisfy the base standard before the extra rules are even considered.",[526,677,679],{"id":678},"usage","Usage",[681,682,684],"h3",{"id":683},"profile-builder","Profile Builder",[531,686,687],{},"The builder is a form-driven editor for profiles. You pick the event type, choose the business step and disposition values you want to allow, mark which identifiers and locations are mandatory, and add your own extension fields where the agreement calls for them. The resulting JSON Schema is shown next to the form and updates as you go, so you can see exactly which rule produced which constraint. Existing profiles from the Event Sentry repository can be loaded as a starting point and edited into a variant of your own. You also have an option to export\u002Fimport the generated profile and configuration for future use.",[531,689,690],{},[691,692],"img",{"alt":693,"src":694},"EPCIS Profile Builder. | Figure 1: EPCIS Profile Builder.","\u002Fimg\u002F12.Profile-Checker\u002FEPCIS_Profile_Builder.png",[681,696,698],{"id":697},"event-validator","Event Validator",[531,700,701],{},"Here you select\u002Fpaste a profile, paste an EPCIS document or a bare event into the editor, and run the check. A conforming event is reported as valid. A failing one is reported field by field, with the JSON path of the offending value and the reason it was rejected, which is usually enough to fix the source system without further investigation. All errors are collected in a single pass, so a document with several problems does not have to be validated multiple times.",[531,703,704],{},[691,705],{"alt":706,"src":707},"EPCIS Profile validation success. | Figure 2: EPCIS Profile validation success.","\u002Fimg\u002F12.Profile-Checker\u002FEPCIS_Profile_Validation_Success.png",[531,709,710],{},[691,711],{"alt":712,"src":713},"EPCIS Profile validation failure. | Figure 3: EPCIS Profile validation failure.","\u002Fimg\u002F12.Profile-Checker\u002FEPCIS_Profile_Validation_Failure.png",[681,715,717],{"id":716},"snippet-search","Snippet Search",[531,719,720],{},"Profiles share a lot of building blocks. The patterns for an SGTIN, an SSCC or a GLN are the same wherever they appear, and rewriting those regular expressions manually is an easy way to introduce a bug. Snippet Search lets you look up ready-made JSON Schema fragments from the snippet library and drop them into a profile. The fragments are plain JSON Schema, so they are equally usable in projects that have nothing to do with EPCIS.",[526,722,724],{"id":723},"a-worked-example","A worked example",[531,726,727,728,730],{},"A company publishes the shipping profile described above. A member company has just implemented its warehouse integration and wants to confirm the output before connecting to a partner. They generate a sample event with the ",[538,729,128],{"href":129},", open the Event Validator, select the published profile and paste the document:",[732,733,737],"pre",{"className":734,"code":735,"language":61,"meta":736,"style":736},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast monokai","{\n  \"@context\": [\n    { \"example\": \"http:\u002F\u002Fexample.com\u002F\" },\n    \"https:\u002F\u002Fref.gs1.org\u002Fstandards\u002Fepcis\u002Fepcis-context.jsonld\"\n  ],\n  \"type\": \"EPCISDocument\",\n  \"schemaVersion\": \"2.0\",\n  \"creationDate\": \"2026-04-02T12:43:58.63Z\",\n  \"epcisBody\": {\n    \"eventList\": [\n      {\n        \"type\": \"ObjectEvent\",\n        \"eventTime\": \"2026-04-02T14:42:36+02:00\",\n        \"eventTimeZoneOffset\": \"+02:00\",\n        \"epcList\": [\"https:\u002F\u002Fid.gs1.org\u002F00\u002F092567800000000018\"],\n        \"action\": \"OBSERVE\",\n        \"bizStep\": \"shipping\",\n        \"readPoint\": { \"id\": \"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520123456788\" },\n        \"example:estimatedTimeOfArrival\": \"2026-04-02T14:30:00Z\"\n      }\n    ]\n  }\n}\n","",[575,738,739,748,758,777,783,789,803,816,829,838,846,852,865,878,891,906,919,932,951,962,968,974,980],{"__ignoreMap":736},[740,741,744],"span",{"class":742,"line":743},"line",1,[740,745,747],{"class":746},"se58z","{\n",[740,749,751,755],{"class":742,"line":750},2,[740,752,754],{"class":753},"sSp2P","  \"@context\"",[740,756,757],{"class":746},": [\n",[740,759,761,764,767,770,774],{"class":742,"line":760},3,[740,762,763],{"class":746},"    { ",[740,765,766],{"class":753},"\"example\"",[740,768,769],{"class":746},": ",[740,771,773],{"class":772},"sTdxB","\"http:\u002F\u002Fexample.com\u002F\"",[740,775,776],{"class":746}," },\n",[740,778,780],{"class":742,"line":779},4,[740,781,782],{"class":772},"    \"https:\u002F\u002Fref.gs1.org\u002Fstandards\u002Fepcis\u002Fepcis-context.jsonld\"\n",[740,784,786],{"class":742,"line":785},5,[740,787,788],{"class":746},"  ],\n",[740,790,792,795,797,800],{"class":742,"line":791},6,[740,793,794],{"class":753},"  \"type\"",[740,796,769],{"class":746},[740,798,799],{"class":772},"\"EPCISDocument\"",[740,801,802],{"class":746},",\n",[740,804,806,809,811,814],{"class":742,"line":805},7,[740,807,808],{"class":753},"  \"schemaVersion\"",[740,810,769],{"class":746},[740,812,813],{"class":772},"\"2.0\"",[740,815,802],{"class":746},[740,817,819,822,824,827],{"class":742,"line":818},8,[740,820,821],{"class":753},"  \"creationDate\"",[740,823,769],{"class":746},[740,825,826],{"class":772},"\"2026-04-02T12:43:58.63Z\"",[740,828,802],{"class":746},[740,830,832,835],{"class":742,"line":831},9,[740,833,834],{"class":753},"  \"epcisBody\"",[740,836,837],{"class":746},": {\n",[740,839,841,844],{"class":742,"line":840},10,[740,842,843],{"class":753},"    \"eventList\"",[740,845,757],{"class":746},[740,847,849],{"class":742,"line":848},11,[740,850,851],{"class":746},"      {\n",[740,853,855,858,860,863],{"class":742,"line":854},12,[740,856,857],{"class":753},"        \"type\"",[740,859,769],{"class":746},[740,861,862],{"class":772},"\"ObjectEvent\"",[740,864,802],{"class":746},[740,866,868,871,873,876],{"class":742,"line":867},13,[740,869,870],{"class":753},"        \"eventTime\"",[740,872,769],{"class":746},[740,874,875],{"class":772},"\"2026-04-02T14:42:36+02:00\"",[740,877,802],{"class":746},[740,879,881,884,886,889],{"class":742,"line":880},14,[740,882,883],{"class":753},"        \"eventTimeZoneOffset\"",[740,885,769],{"class":746},[740,887,888],{"class":772},"\"+02:00\"",[740,890,802],{"class":746},[740,892,894,897,900,903],{"class":742,"line":893},15,[740,895,896],{"class":753},"        \"epcList\"",[740,898,899],{"class":746},": [",[740,901,902],{"class":772},"\"https:\u002F\u002Fid.gs1.org\u002F00\u002F092567800000000018\"",[740,904,905],{"class":746},"],\n",[740,907,909,912,914,917],{"class":742,"line":908},16,[740,910,911],{"class":753},"        \"action\"",[740,913,769],{"class":746},[740,915,916],{"class":772},"\"OBSERVE\"",[740,918,802],{"class":746},[740,920,922,925,927,930],{"class":742,"line":921},17,[740,923,924],{"class":753},"        \"bizStep\"",[740,926,769],{"class":746},[740,928,929],{"class":772},"\"shipping\"",[740,931,802],{"class":746},[740,933,935,938,941,944,946,949],{"class":742,"line":934},18,[740,936,937],{"class":753},"        \"readPoint\"",[740,939,940],{"class":746},": { ",[740,942,943],{"class":753},"\"id\"",[740,945,769],{"class":746},[740,947,948],{"class":772},"\"https:\u002F\u002Fid.gs1.org\u002F414\u002F9520123456788\"",[740,950,776],{"class":746},[740,952,954,957,959],{"class":742,"line":953},19,[740,955,956],{"class":753},"        \"example:estimatedTimeOfArrival\"",[740,958,769],{"class":746},[740,960,961],{"class":772},"\"2026-04-02T14:30:00Z\"\n",[740,963,965],{"class":742,"line":964},20,[740,966,967],{"class":746},"      }\n",[740,969,971],{"class":742,"line":970},21,[740,972,973],{"class":746},"    ]\n",[740,975,977],{"class":742,"line":976},22,[740,978,979],{"class":746},"  }\n",[740,981,983],{"class":742,"line":982},23,[740,984,985],{"class":746},"}\n",[531,987,988,989,991,992,995],{},"This document passes. If the same integration had written ",[575,990,629],{}," as ",[575,993,994],{},"departing_from_dock"," and left the arrival time out, the validator would answer with the two reasons instead\nof a plain rejection:",[732,997,999],{"className":734,"code":998,"language":61,"meta":736,"style":736},"{\n  \"success\": false,\n  \"message\": \"Invalid Event\",\n  \"errors\": [\n    {\n      \"field\": \"\u002FepcisBody\u002FeventList\u002F0\u002FbizStep\",\n      \"message\": \"must be equal to one of the allowed values\"\n    },\n    {\n      \"field\": \"\u002FepcisBody\u002FeventList\u002F0\",\n      \"message\": \"must have required property 'example:estimatedTimeOfArrival'\",\n      \"params\": { \"missingProperty\": \"example:estimatedTimeOfArrival\" }\n    }\n  ]\n}\n",[575,1000,1001,1005,1018,1030,1037,1042,1054,1064,1069,1073,1084,1095,1113,1118,1123],{"__ignoreMap":736},[740,1002,1003],{"class":742,"line":743},[740,1004,747],{"class":746},[740,1006,1007,1010,1012,1016],{"class":742,"line":750},[740,1008,1009],{"class":753},"  \"success\"",[740,1011,769],{"class":746},[740,1013,1015],{"class":1014},"sCHB2","false",[740,1017,802],{"class":746},[740,1019,1020,1023,1025,1028],{"class":742,"line":760},[740,1021,1022],{"class":753},"  \"message\"",[740,1024,769],{"class":746},[740,1026,1027],{"class":772},"\"Invalid Event\"",[740,1029,802],{"class":746},[740,1031,1032,1035],{"class":742,"line":779},[740,1033,1034],{"class":753},"  \"errors\"",[740,1036,757],{"class":746},[740,1038,1039],{"class":742,"line":785},[740,1040,1041],{"class":746},"    {\n",[740,1043,1044,1047,1049,1052],{"class":742,"line":791},[740,1045,1046],{"class":753},"      \"field\"",[740,1048,769],{"class":746},[740,1050,1051],{"class":772},"\"\u002FepcisBody\u002FeventList\u002F0\u002FbizStep\"",[740,1053,802],{"class":746},[740,1055,1056,1059,1061],{"class":742,"line":805},[740,1057,1058],{"class":753},"      \"message\"",[740,1060,769],{"class":746},[740,1062,1063],{"class":772},"\"must be equal to one of the allowed values\"\n",[740,1065,1066],{"class":742,"line":818},[740,1067,1068],{"class":746},"    },\n",[740,1070,1071],{"class":742,"line":831},[740,1072,1041],{"class":746},[740,1074,1075,1077,1079,1082],{"class":742,"line":840},[740,1076,1046],{"class":753},[740,1078,769],{"class":746},[740,1080,1081],{"class":772},"\"\u002FepcisBody\u002FeventList\u002F0\"",[740,1083,802],{"class":746},[740,1085,1086,1088,1090,1093],{"class":742,"line":848},[740,1087,1058],{"class":753},[740,1089,769],{"class":746},[740,1091,1092],{"class":772},"\"must have required property 'example:estimatedTimeOfArrival'\"",[740,1094,802],{"class":746},[740,1096,1097,1100,1102,1105,1107,1110],{"class":742,"line":854},[740,1098,1099],{"class":753},"      \"params\"",[740,1101,940],{"class":746},[740,1103,1104],{"class":753},"\"missingProperty\"",[740,1106,769],{"class":746},[740,1108,1109],{"class":772},"\"example:estimatedTimeOfArrival\"",[740,1111,1112],{"class":746}," }\n",[740,1114,1115],{"class":742,"line":867},[740,1116,1117],{"class":746},"    }\n",[740,1119,1120],{"class":742,"line":880},[740,1121,1122],{"class":746},"  ]\n",[740,1124,1125],{"class":742,"line":893},[740,1126,985],{"class":746},[531,1128,1129],{},"The same profile now serves three purposes: the association maintains one machine-readable definition, the sender checks its own data before transmission, and the receiver applies\nidentical rules on arrival. Nobody compares events against a PDF.",[526,1131,1133],{"id":1132},"where-this-is-useful","Where this is useful",[613,1135,1136,1143,1149,1155],{},[616,1137,1138,1142],{},[1139,1140,1141],"strong",{},"Onboarding a new trading partner."," Hand over a profile instead of a specification chapter. The partner tests against it on their own schedule and only asks for help when a\ncheck fails.",[616,1144,1145,1148],{},[1139,1146,1147],{},"Regulatory reporting."," Food traceability under FSMA 204, deforestation reporting under the EUDR and product passport schemes all prescribe specific data points. Encoding those\nrequirements as a profile makes the gap between what a regulation asks for and what a system actually sends visible immediately. The Event Sentry repository ships FSMA 204 test\nschemas as a reference.",[616,1150,1151,1154],{},[1139,1152,1153],{},"Continuous checks in a pipeline."," Because validation is ordinary JSON Schema work, the same profile can run in a build job or an integration test and fail the build when an\nevent drifts out of shape.",[616,1156,1157,1160],{},[1139,1158,1159],{},"Reviewing supplier data quality."," Running a batch of received events through a profile gives you a concrete list of what each supplier gets wrong, which is a far better basis\nfor a conversation than a general complaint about data quality.",[526,1162,1164],{"id":1163},"where-the-api-sits","Where the API sits",[531,1166,1167,1168,1173],{},"Validation itself runs in the browser. The web application compiles the selected profile with ",[538,1169,1172],{"href":1170,"rel":1171},"https:\u002F\u002Fajv.js.org\u002F",[542],"AJV"," on the client and supports JSON Schema draft-06, draft-07,\ndraft 2019-09 and draft 2020-12, so the draft your profile declares is the draft that gets applied. Event data you paste into the validator stays on your machine, which matters\nwhen the events contain production identifiers.",[531,1175,1176,1177,1181,1182,1185,1186,1189,1190,1193],{},"Two remote sources are involved. Example profiles and the identifier snippets used by the builder are read directly from the public\n",[538,1178,1180],{"href":555,"rel":1179},[542],"openepcis-event-sentry"," repository through the GitHub contents API. Snippet Search queries a backend endpoint,\n",[575,1183,1184],{},"GET {SNIPPET_API_URL}\u002Fsnippet?searchText=...",", which the published container image points at ",[575,1187,1188],{},"https:\u002F\u002Fapi.epcis.cloud",". Both the hosted application and your own instance can be\nrepointed with the ",[575,1191,1192],{},"NUXT_PUBLIC_SNIPPET_API_URL"," environment variable. There is no server-side validation endpoint at present: profile checking happens in the browser or in your\nown code through the SDK.",[526,1195,1197],{"id":1196},"running-your-own-instance","Running your own instance",[531,1199,1200],{},"The container image is the quickest route:",[732,1202,1206],{"className":1203,"code":1204,"language":1205,"meta":736,"style":736},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast monokai","docker pull ghcr.io\u002Fopenepcis\u002Fopenepcis-snippet-web:latest\ndocker run -p 3000:3000 ghcr.io\u002Fopenepcis\u002Fopenepcis-snippet-web:latest\n","bash",[575,1207,1208,1221],{"__ignoreMap":736},[740,1209,1210,1214,1218],{"class":742,"line":743},[740,1211,1213],{"class":1212},"sqej0","docker",[740,1215,1217],{"class":1216},"sQH_i"," pull",[740,1219,1220],{"class":1216}," ghcr.io\u002Fopenepcis\u002Fopenepcis-snippet-web:latest\n",[740,1222,1223,1225,1228,1231,1234],{"class":742,"line":750},[740,1224,1213],{"class":1212},[740,1226,1227],{"class":1216}," run",[740,1229,1230],{"class":1014}," -p",[740,1232,1233],{"class":1216}," 3000:3000",[740,1235,1220],{"class":1216},[531,1237,1238,1239,1243,1244,1249],{},"The application is then available at ",[538,1240,1241],{"href":1241,"rel":1242},"http:\u002F\u002Flocalhost:3000",[542],". Podman works the same way, and the\n",[538,1245,1248],{"href":1246,"rel":1247},"https:\u002F\u002Fgithub.com\u002Fopenepcis\u002Fopenepcis-snippet-web\u002Fblob\u002Fmain\u002FDOCKER.md",[542],"Docker guide"," in the repository covers compose files and the available environment variables.",[531,1251,1252],{},"To run from source you need Node.js 18 or later and pnpm:",[732,1254,1256],{"className":1203,"code":1255,"language":1205,"meta":736,"style":736},"git clone https:\u002F\u002Fgithub.com\u002Fopenepcis\u002Fopenepcis-snippet-web.git\ncd openepcis-snippet-web\npnpm install\npnpm dev\n",[575,1257,1258,1269,1278,1286],{"__ignoreMap":736},[740,1259,1260,1263,1266],{"class":742,"line":743},[740,1261,1262],{"class":1212},"git",[740,1264,1265],{"class":1216}," clone",[740,1267,1268],{"class":1216}," https:\u002F\u002Fgithub.com\u002Fopenepcis\u002Fopenepcis-snippet-web.git\n",[740,1270,1271,1275],{"class":742,"line":750},[740,1272,1274],{"class":1273},"s3mHW","cd",[740,1276,1277],{"class":1216}," openepcis-snippet-web\n",[740,1279,1280,1283],{"class":742,"line":760},[740,1281,1282],{"class":1212},"pnpm",[740,1284,1285],{"class":1216}," install\n",[740,1287,1288,1290],{"class":742,"line":779},[740,1289,1282],{"class":1212},[740,1291,1292],{"class":1216}," dev\n",[526,1294,1296],{"id":1295},"application-code","Application code",[531,1298,1299],{},"The tool is split across two repositories, both under the Apache 2.0 licence.",[531,1301,1302,1306],{},[538,1303,1305],{"href":548,"rel":1304},[542],"openepcis-snippet-web"," is the web application, built with Nuxt 4 and Nuxt UI, with CodeMirror 6 as the JSON editor and AJV as\nthe validation engine.",[531,1308,1309,1312,1313,1316,1317,1320,1321,1324,1325,1328,1329,1332,1333,1336,1337,1340],{},[538,1310,1180],{"href":555,"rel":1311},[542]," is the JavaScript SDK together with the shared profile and snippet library. It builds bundles for both\nNode.js and the browser, and it is the piece to reach for when profile checking has to happen inside your own application. Alongside ",[575,1314,1315],{},"validate(document, schema)"," it provides the\nhelpers that surround validation in practice: ",[575,1318,1319],{},"detectDocumentType"," to tell an EPCIS document from a query document or a bare event, ",[575,1322,1323],{},"isValidEpcisEvent",", ",[575,1326,1327],{},"isValidEpcisDocument"," and\n",[575,1330,1331],{},"isValidEpcisQueryDocument"," for structural checks, and ",[575,1334,1335],{},"profileDetectionRulesSchema"," and ",[575,1338,1339],{},"profileValidationRulesSchema"," for describing profile rules themselves.",[531,1342,1343],{},"The validator is imported from its module path, the way the repository's own tests use it:",[732,1345,1349],{"className":1346,"code":1347,"language":1348,"meta":736,"style":736},"language-javascript shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast monokai","import { validate } from '.\u002Fsrc\u002Fvalidation\u002Fvalidator';\n\nconst result = validate(epcisDocument, shippingProfile);\n\nif (!result.success) {\n  result.errors.forEach((error) => console.error(`${error.field}: ${error.message}`));\n}\n","javascript",[575,1350,1351,1356,1362,1367,1371,1376,1381],{"__ignoreMap":736},[740,1352,1353],{"class":742,"line":743},[740,1354,1355],{},"import { validate } from '.\u002Fsrc\u002Fvalidation\u002Fvalidator';\n",[740,1357,1358],{"class":742,"line":750},[740,1359,1361],{"emptyLinePlaceholder":1360},true,"\n",[740,1363,1364],{"class":742,"line":760},[740,1365,1366],{},"const result = validate(epcisDocument, shippingProfile);\n",[740,1368,1369],{"class":742,"line":779},[740,1370,1361],{"emptyLinePlaceholder":1360},[740,1372,1373],{"class":742,"line":785},[740,1374,1375],{},"if (!result.success) {\n",[740,1377,1378],{"class":742,"line":791},[740,1379,1380],{},"  result.errors.forEach((error) => console.error(`${error.field}: ${error.message}`));\n",[740,1382,1383],{"class":742,"line":805},[740,1384,985],{},[526,1386,1388],{"id":1387},"further-references","Further references",[613,1390,1391,1403,1408],{},[616,1392,1393,1336,1398,1402],{},[538,1394,1397],{"href":1395,"rel":1396},"https:\u002F\u002Fref.gs1.org\u002Fstandards\u002Fepcis\u002F",[542],"GS1 EPCIS and CBV standard",[538,1399,1401],{"href":670,"rel":1400},[542],"EPCIS JSON Schema"," for the base standard and the schema the profiles build on.",[616,1404,1405,1407],{},[538,1406,128],{"href":129}," to produce sample events.",[616,1409,1410,1412],{},[538,1411,205],{"href":206}," section for the regulatory context in which profiles are most often needed.",[1414,1415,1416],"style",{},"html pre.shiki code .se58z, html code.shiki .se58z{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6;--shiki-sepia:#F8F8F2}html pre.shiki code .sSp2P, html code.shiki .sSp2P{--shiki-light:#024C1A;--shiki-light-font-style:inherit;--shiki-default:#024C1A;--shiki-default-font-style:inherit;--shiki-dark:#72F088;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sTdxB, html code.shiki .sTdxB{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF;--shiki-sepia:#CFCFC2}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html pre.shiki code .sCHB2, html code.shiki .sCHB2{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF;--shiki-sepia:#AE81FF}html pre.shiki code .sqej0, html code.shiki .sqej0{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757;--shiki-sepia:#A6E22E}html pre.shiki code .sQH_i, html code.shiki .sQH_i{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF;--shiki-sepia:#E6DB74}html pre.shiki code .s3mHW, html code.shiki .s3mHW{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF;--shiki-sepia:#66D9EF}",{"title":736,"searchDepth":750,"depth":750,"links":1418},[1419,1420,1421,1422,1427,1428,1429,1430,1431,1432],{"id":528,"depth":750,"text":529},{"id":580,"depth":750,"text":23},{"id":607,"depth":750,"text":608},{"id":678,"depth":750,"text":679,"children":1423},[1424,1425,1426],{"id":683,"depth":760,"text":684},{"id":697,"depth":760,"text":698},{"id":716,"depth":760,"text":717},{"id":723,"depth":750,"text":724},{"id":1132,"depth":750,"text":1133},{"id":1163,"depth":750,"text":1164},{"id":1196,"depth":750,"text":1197},{"id":1295,"depth":750,"text":1296},{"id":1387,"depth":750,"text":1388},"md","2026-07-27T00:00:00.000Z",{"head":1436,"sitemap":1441,"readingTime":1445},{"meta":1437},[1438],{"name":1439,"content":1440},"keywords","EPCIS Profile Checker, EPCIS event profile, JSON Schema, EPCIS validation, data quality, conformance, GS1 EPCIS, OpenEPCIS tools",{"loc":394,"lastmod":1442,"changefreq":1443,"priority":1444},"2026-07-27","monthly",0.8,{"text":1446,"minutes":1447,"time":1448,"words":1449},"8 min read",7.445,446700,1489,{"title":393,"tags":1451},[16,401,402,403,404,405,406,21,71],{"title":521,"description":398},"qWmBOoiTx1hlxqrIv5Pic66y2em1Y365WDtxu1DYn9c",[1455],{"title":5,"path":6,"stem":7,"children":1456},[1457,1459,1464,1469,1474,1479,1484,1489,1499,1504,1509,1514,1572,1577,1593],{"title":10,"path":6,"stem":11,"description":12,"icon":13,"tags":1458},[15,16,17,18,19,20,21],{"title":23,"path":24,"stem":25,"children":1460,"description":28,"icon":29,"tags":1463},[1461],{"title":23,"path":24,"stem":25,"description":28,"icon":29,"tags":1462},[16,31,32,33,34,35,36,37,38],[16,31,32,33,34,35,36,37,38],{"title":41,"path":42,"stem":43,"children":1465,"description":46,"icon":47,"tags":1468},[1466],{"title":41,"path":42,"stem":43,"description":46,"icon":47,"tags":1467},[16,31,32,33,49,50],[16,31,32,33,49,50],{"title":53,"path":54,"stem":55,"children":1470,"description":58,"icon":59,"tags":1473},[1471],{"title":53,"path":54,"stem":55,"description":58,"icon":59,"tags":1472},[16,61,62,63,64,65,66,21,67,68,69,70,71],[16,61,62,63,64,65,66,21,67,68,69,70,71],{"title":74,"path":75,"stem":76,"children":1475,"description":79,"icon":80,"tags":1478},[1476],{"title":74,"path":75,"stem":76,"description":79,"icon":80,"tags":1477},[16,32,61,62,63,64,82,66,21,83,84,85,69,70,71],[16,32,61,62,63,64,82,66,21,83,84,85,69,70,71],{"title":88,"path":89,"stem":90,"children":1480,"description":93,"icon":94,"tags":1483},[1481],{"title":88,"path":89,"stem":90,"description":93,"icon":94,"tags":1482},[16,96,97,98,99,100,21,101,102,103,104,105,106,107,108,109,110,111],[16,96,97,98,99,100,21,101,102,103,104,105,106,107,108,109,110,111],{"title":114,"path":115,"stem":116,"children":1485,"description":119,"icon":120,"tags":1488},[1486],{"title":114,"path":115,"stem":116,"description":119,"icon":120,"tags":1487},[16,122,61,62,63,64,21,123,124,125,70,71],[16,122,61,62,63,64,21,123,124,125,70,71],{"title":128,"path":129,"stem":130,"children":1490,"description":133,"icon":134,"tags":1498},[1491,1493],{"title":128,"path":129,"stem":130,"description":133,"icon":134,"tags":1492},[16,122,61,62,63,64,21,123,124,125,70,71],{"title":137,"path":138,"stem":139,"children":1494,"description":133,"icon":142,"tags":1497},[1495],{"title":137,"path":138,"stem":139,"description":133,"icon":142,"tags":1496},[16,61,62,144,21,145,146,147,35,148,149,150,151],[16,61,62,144,21,145,146,147,35,148,149,150,151],[16,122,61,62,63,64,21,123,124,125,70,71],{"title":155,"path":156,"stem":157,"children":1500,"description":160,"icon":161,"tags":1503},[1501],{"title":155,"path":156,"stem":157,"description":160,"icon":161,"tags":1502},[16,61,62,144,21,163,35,148,149,150,151],[16,61,62,144,21,163,35,148,149,150,151],{"title":166,"path":167,"stem":168,"children":1505,"description":171,"icon":172,"tags":1508},[1506],{"title":166,"path":167,"stem":168,"description":171,"icon":172,"tags":1507},[16,174,15,175,21,176,35,177,149,150,178],[16,174,15,175,21,176,35,177,149,150,178],{"title":181,"path":182,"stem":183,"children":1510,"description":186,"icon":187,"tags":1513},[1511],{"title":181,"path":182,"stem":183,"description":186,"icon":187,"tags":1512},[189,15,190,191,192,193,194,31,195,196,197,198,199,200,201,202],[189,15,190,191,192,193,194,31,195,196,197,198,199,200,201,202],{"title":205,"path":206,"stem":207,"children":1515,"description":210,"icon":211,"tags":1571},[1516,1518,1523,1532,1542,1551,1556,1558,1560,1562],{"title":205,"path":206,"stem":207,"description":210,"icon":211,"tags":1517},[213,214,215,31,216,35,217],{"title":219,"path":220,"stem":221,"children":1519,"description":224,"icon":225,"tags":1522},[1520],{"title":219,"path":220,"stem":221,"description":224,"icon":225,"tags":1521},[227,228,216,214,215],[227,228,216,214,215],{"title":231,"path":232,"stem":233,"children":1524,"description":236,"icon":237,"tags":1531},[1525,1527,1528,1529],{"title":231,"path":232,"stem":233,"description":236,"icon":237,"tags":1526},[239,240,214,31,102,35,216],{"title":242,"path":243,"stem":244,"description":245,"icon":172},{"title":247,"path":248,"stem":249,"description":250,"icon":251},{"title":253,"path":254,"stem":255,"description":256,"icon":13,"tags":1530},[239,258,259,62,260],[239,240,214,31,102,35,216],{"title":263,"path":264,"stem":265,"children":1533,"description":268,"icon":269,"tags":1541},[1534,1536,1537,1538,1539],{"title":263,"path":264,"stem":265,"description":268,"icon":269,"tags":1535},[271,272,273,214,31,102,35,216],{"title":242,"path":275,"stem":276,"description":277,"icon":278},{"title":247,"path":280,"stem":281,"description":282,"icon":278},{"title":284,"path":285,"stem":286,"description":287,"icon":278},{"title":253,"path":289,"stem":290,"description":291,"icon":13,"tags":1540},[271,258,273,293,294],[271,272,273,214,31,102,35,216],{"title":297,"path":298,"stem":299,"children":1543,"description":302,"icon":303,"tags":1550},[1544,1546,1548],{"title":297,"path":298,"stem":299,"description":302,"icon":303,"tags":1545},[305,306,307,214,216,308],{"title":242,"path":310,"stem":311,"description":312,"icon":313,"tags":1547},[305,306,307,315],{"title":253,"path":317,"stem":318,"description":319,"icon":13,"tags":1549},[305,258,306,307,321,62],[305,306,307,214,216,308],{"title":324,"path":325,"stem":326,"children":1552,"description":329,"icon":59,"tags":1555},[1553],{"title":324,"path":325,"stem":326,"description":329,"icon":59,"tags":1554},[331,332,102,333,227,334,335],[331,332,102,333,227,334,335],{"title":338,"path":339,"stem":340,"description":341,"icon":29,"tags":1557},[343,96,344,345],{"title":347,"path":348,"stem":349,"description":350,"icon":351,"tags":1559},[353,96,344],{"title":355,"path":356,"stem":357,"description":358,"icon":359,"tags":1561},[361,362,363,333],{"title":365,"path":366,"stem":367,"children":1563,"description":370,"icon":371,"tags":1570},[1564,1566,1568],{"title":365,"path":366,"stem":367,"description":370,"icon":371,"tags":1565},[373,374,375,376,377],{"title":242,"path":379,"stem":380,"description":381,"icon":172,"tags":1567},[373,315,374,375,376],{"title":253,"path":384,"stem":385,"description":386,"icon":13,"tags":1569},[373,258,388,389,62],[373,374,375,376,377],[213,214,215,31,216,35,217],{"title":393,"path":394,"stem":395,"children":1573,"description":398,"icon":399,"tags":1576},[1574],{"title":393,"path":394,"stem":395,"description":398,"icon":399,"tags":1575},[16,401,402,403,404,405,406,21,71],[16,401,402,403,404,405,406,21,71],{"title":409,"path":410,"stem":411,"children":1578,"description":414,"icon":415},[1579,1580,1581,1582,1583],{"title":409,"path":410,"stem":411,"description":414,"icon":415},{"title":417,"path":418,"stem":419,"description":420,"icon":421},{"title":423,"path":424,"stem":425,"description":426,"icon":427},{"title":429,"path":430,"stem":431,"description":432,"icon":433},{"title":435,"path":436,"stem":437,"children":1584,"description":440,"icon":441},[1585,1586,1587,1588,1589,1590,1591,1592],{"title":435,"path":436,"stem":437,"description":440,"icon":441},{"title":443,"path":444,"stem":445,"description":446,"icon":447},{"title":449,"path":450,"stem":451,"description":452,"icon":453},{"title":455,"path":456,"stem":457,"description":458,"icon":459},{"title":461,"path":462,"stem":463,"description":464,"icon":465},{"title":467,"path":468,"stem":469,"description":470,"icon":471},{"title":473,"path":474,"stem":475,"description":476,"icon":477},{"title":479,"path":480,"stem":481,"description":482,"icon":483},{"title":485,"path":486,"stem":487,"children":1594,"description":490,"icon":29,"tags":1597},[1595],{"title":485,"path":486,"stem":487,"description":490,"icon":29,"tags":1596},[492,493,494,495,332,496,497,498],[492,493,494,495,332,496,497,498],{"id":520,"title":521,"body":1599,"description":398,"extension":1433,"icon":399,"lastUpdated":1434,"meta":2229,"navigation":2235,"path":394,"seo":2237,"stem":395,"__hash__":1453},{"type":523,"value":1600,"toc":2213},[1601,1603,1605,1610,1615,1620,1625,1630,1634,1636,1638,1646,1648,1650,1652,1654,1682,1695,1697,1699,1701,1705,1707,1709,1713,1717,1719,1721,1723,1727,1905,1911,2021,2023,2025,2043,2045,2050,2061,2063,2065,2089,2097,2099,2129,2131,2133,2138,2157,2159,2191,2193,2211],[526,1602,529],{"id":528},[531,1604,533],{},[531,1606,536,1607],{},[538,1608,540],{"href":540,"rel":1609},[542],[531,1611,545,1612],{},[538,1613,548],{"href":548,"rel":1614},[542],[531,1616,552,1617],{},[538,1618,555],{"href":555,"rel":1619},[542],[531,1621,559,1622],{},[538,1623,562],{"href":562,"rel":1624},[542],[531,1626,566,1627],{},[538,1628,569],{"href":569,"rel":1629},[542],[531,1631,573,1632],{},[575,1633,577],{},[526,1635,23],{"id":580},[531,1637,583],{},[531,1639,586,1640,590,1642,594,1644,598],{},[575,1641,589],{},[575,1643,593],{},[575,1645,597],{},[531,1647,601],{},[531,1649,604],{},[526,1651,608],{"id":607},[531,1653,611],{},[613,1655,1656,1662,1670,1674,1678,1680],{},[616,1657,1658,621,1660],{},[575,1659,620],{},[575,1661,624],{},[616,1663,1664,630,1666,634,1668],{},[575,1665,629],{},[575,1667,633],{},[575,1669,637],{},[616,1671,1672,642],{},[575,1673,593],{},[616,1675,1676,647],{},[575,1677,597],{},[616,1679,650],{},[616,1681,653],{},[531,1683,656,1684,660,1686,663,1688,667,1690,675],{},[575,1685,659],{},[575,1687,68],{},[575,1689,666],{},[538,1691,1693],{"href":670,"rel":1692},[542],[575,1694,674],{},[526,1696,679],{"id":678},[681,1698,684],{"id":683},[531,1700,687],{},[531,1702,1703],{},[691,1704],{"alt":693,"src":694},[681,1706,698],{"id":697},[531,1708,701],{},[531,1710,1711],{},[691,1712],{"alt":706,"src":707},[531,1714,1715],{},[691,1716],{"alt":712,"src":713},[681,1718,717],{"id":716},[531,1720,720],{},[526,1722,724],{"id":723},[531,1724,727,1725,730],{},[538,1726,128],{"href":129},[732,1728,1729],{"className":734,"code":735,"language":61,"meta":736,"style":736},[575,1730,1731,1735,1741,1753,1757,1761,1771,1781,1791,1797,1803,1807,1817,1827,1837,1847,1857,1867,1881,1889,1893,1897,1901],{"__ignoreMap":736},[740,1732,1733],{"class":742,"line":743},[740,1734,747],{"class":746},[740,1736,1737,1739],{"class":742,"line":750},[740,1738,754],{"class":753},[740,1740,757],{"class":746},[740,1742,1743,1745,1747,1749,1751],{"class":742,"line":760},[740,1744,763],{"class":746},[740,1746,766],{"class":753},[740,1748,769],{"class":746},[740,1750,773],{"class":772},[740,1752,776],{"class":746},[740,1754,1755],{"class":742,"line":779},[740,1756,782],{"class":772},[740,1758,1759],{"class":742,"line":785},[740,1760,788],{"class":746},[740,1762,1763,1765,1767,1769],{"class":742,"line":791},[740,1764,794],{"class":753},[740,1766,769],{"class":746},[740,1768,799],{"class":772},[740,1770,802],{"class":746},[740,1772,1773,1775,1777,1779],{"class":742,"line":805},[740,1774,808],{"class":753},[740,1776,769],{"class":746},[740,1778,813],{"class":772},[740,1780,802],{"class":746},[740,1782,1783,1785,1787,1789],{"class":742,"line":818},[740,1784,821],{"class":753},[740,1786,769],{"class":746},[740,1788,826],{"class":772},[740,1790,802],{"class":746},[740,1792,1793,1795],{"class":742,"line":831},[740,1794,834],{"class":753},[740,1796,837],{"class":746},[740,1798,1799,1801],{"class":742,"line":840},[740,1800,843],{"class":753},[740,1802,757],{"class":746},[740,1804,1805],{"class":742,"line":848},[740,1806,851],{"class":746},[740,1808,1809,1811,1813,1815],{"class":742,"line":854},[740,1810,857],{"class":753},[740,1812,769],{"class":746},[740,1814,862],{"class":772},[740,1816,802],{"class":746},[740,1818,1819,1821,1823,1825],{"class":742,"line":867},[740,1820,870],{"class":753},[740,1822,769],{"class":746},[740,1824,875],{"class":772},[740,1826,802],{"class":746},[740,1828,1829,1831,1833,1835],{"class":742,"line":880},[740,1830,883],{"class":753},[740,1832,769],{"class":746},[740,1834,888],{"class":772},[740,1836,802],{"class":746},[740,1838,1839,1841,1843,1845],{"class":742,"line":893},[740,1840,896],{"class":753},[740,1842,899],{"class":746},[740,1844,902],{"class":772},[740,1846,905],{"class":746},[740,1848,1849,1851,1853,1855],{"class":742,"line":908},[740,1850,911],{"class":753},[740,1852,769],{"class":746},[740,1854,916],{"class":772},[740,1856,802],{"class":746},[740,1858,1859,1861,1863,1865],{"class":742,"line":921},[740,1860,924],{"class":753},[740,1862,769],{"class":746},[740,1864,929],{"class":772},[740,1866,802],{"class":746},[740,1868,1869,1871,1873,1875,1877,1879],{"class":742,"line":934},[740,1870,937],{"class":753},[740,1872,940],{"class":746},[740,1874,943],{"class":753},[740,1876,769],{"class":746},[740,1878,948],{"class":772},[740,1880,776],{"class":746},[740,1882,1883,1885,1887],{"class":742,"line":953},[740,1884,956],{"class":753},[740,1886,769],{"class":746},[740,1888,961],{"class":772},[740,1890,1891],{"class":742,"line":964},[740,1892,967],{"class":746},[740,1894,1895],{"class":742,"line":970},[740,1896,973],{"class":746},[740,1898,1899],{"class":742,"line":976},[740,1900,979],{"class":746},[740,1902,1903],{"class":742,"line":982},[740,1904,985],{"class":746},[531,1906,988,1907,991,1909,995],{},[575,1908,629],{},[575,1910,994],{},[732,1912,1913],{"className":734,"code":998,"language":61,"meta":736,"style":736},[575,1914,1915,1919,1929,1939,1945,1949,1959,1967,1971,1975,1985,1995,2009,2013,2017],{"__ignoreMap":736},[740,1916,1917],{"class":742,"line":743},[740,1918,747],{"class":746},[740,1920,1921,1923,1925,1927],{"class":742,"line":750},[740,1922,1009],{"class":753},[740,1924,769],{"class":746},[740,1926,1015],{"class":1014},[740,1928,802],{"class":746},[740,1930,1931,1933,1935,1937],{"class":742,"line":760},[740,1932,1022],{"class":753},[740,1934,769],{"class":746},[740,1936,1027],{"class":772},[740,1938,802],{"class":746},[740,1940,1941,1943],{"class":742,"line":779},[740,1942,1034],{"class":753},[740,1944,757],{"class":746},[740,1946,1947],{"class":742,"line":785},[740,1948,1041],{"class":746},[740,1950,1951,1953,1955,1957],{"class":742,"line":791},[740,1952,1046],{"class":753},[740,1954,769],{"class":746},[740,1956,1051],{"class":772},[740,1958,802],{"class":746},[740,1960,1961,1963,1965],{"class":742,"line":805},[740,1962,1058],{"class":753},[740,1964,769],{"class":746},[740,1966,1063],{"class":772},[740,1968,1969],{"class":742,"line":818},[740,1970,1068],{"class":746},[740,1972,1973],{"class":742,"line":831},[740,1974,1041],{"class":746},[740,1976,1977,1979,1981,1983],{"class":742,"line":840},[740,1978,1046],{"class":753},[740,1980,769],{"class":746},[740,1982,1081],{"class":772},[740,1984,802],{"class":746},[740,1986,1987,1989,1991,1993],{"class":742,"line":848},[740,1988,1058],{"class":753},[740,1990,769],{"class":746},[740,1992,1092],{"class":772},[740,1994,802],{"class":746},[740,1996,1997,1999,2001,2003,2005,2007],{"class":742,"line":854},[740,1998,1099],{"class":753},[740,2000,940],{"class":746},[740,2002,1104],{"class":753},[740,2004,769],{"class":746},[740,2006,1109],{"class":772},[740,2008,1112],{"class":746},[740,2010,2011],{"class":742,"line":867},[740,2012,1117],{"class":746},[740,2014,2015],{"class":742,"line":880},[740,2016,1122],{"class":746},[740,2018,2019],{"class":742,"line":893},[740,2020,985],{"class":746},[531,2022,1129],{},[526,2024,1133],{"id":1132},[613,2026,2027,2031,2035,2039],{},[616,2028,2029,1142],{},[1139,2030,1141],{},[616,2032,2033,1148],{},[1139,2034,1147],{},[616,2036,2037,1154],{},[1139,2038,1153],{},[616,2040,2041,1160],{},[1139,2042,1159],{},[526,2044,1164],{"id":1163},[531,2046,1167,2047,1173],{},[538,2048,1172],{"href":1170,"rel":2049},[542],[531,2051,1176,2052,1181,2055,1185,2057,1189,2059,1193],{},[538,2053,1180],{"href":555,"rel":2054},[542],[575,2056,1184],{},[575,2058,1188],{},[575,2060,1192],{},[526,2062,1197],{"id":1196},[531,2064,1200],{},[732,2066,2067],{"className":1203,"code":1204,"language":1205,"meta":736,"style":736},[575,2068,2069,2077],{"__ignoreMap":736},[740,2070,2071,2073,2075],{"class":742,"line":743},[740,2072,1213],{"class":1212},[740,2074,1217],{"class":1216},[740,2076,1220],{"class":1216},[740,2078,2079,2081,2083,2085,2087],{"class":742,"line":750},[740,2080,1213],{"class":1212},[740,2082,1227],{"class":1216},[740,2084,1230],{"class":1014},[740,2086,1233],{"class":1216},[740,2088,1220],{"class":1216},[531,2090,1238,2091,1243,2094,1249],{},[538,2092,1241],{"href":1241,"rel":2093},[542],[538,2095,1248],{"href":1246,"rel":2096},[542],[531,2098,1252],{},[732,2100,2101],{"className":1203,"code":1255,"language":1205,"meta":736,"style":736},[575,2102,2103,2111,2117,2123],{"__ignoreMap":736},[740,2104,2105,2107,2109],{"class":742,"line":743},[740,2106,1262],{"class":1212},[740,2108,1265],{"class":1216},[740,2110,1268],{"class":1216},[740,2112,2113,2115],{"class":742,"line":750},[740,2114,1274],{"class":1273},[740,2116,1277],{"class":1216},[740,2118,2119,2121],{"class":742,"line":760},[740,2120,1282],{"class":1212},[740,2122,1285],{"class":1216},[740,2124,2125,2127],{"class":742,"line":779},[740,2126,1282],{"class":1212},[740,2128,1292],{"class":1216},[526,2130,1296],{"id":1295},[531,2132,1299],{},[531,2134,2135,1306],{},[538,2136,1305],{"href":548,"rel":2137},[542],[531,2139,2140,1312,2143,1316,2145,1320,2147,1324,2149,1328,2151,1332,2153,1336,2155,1340],{},[538,2141,1180],{"href":555,"rel":2142},[542],[575,2144,1315],{},[575,2146,1319],{},[575,2148,1323],{},[575,2150,1327],{},[575,2152,1331],{},[575,2154,1335],{},[575,2156,1339],{},[531,2158,1343],{},[732,2160,2161],{"className":1346,"code":1347,"language":1348,"meta":736,"style":736},[575,2162,2163,2167,2171,2175,2179,2183,2187],{"__ignoreMap":736},[740,2164,2165],{"class":742,"line":743},[740,2166,1355],{},[740,2168,2169],{"class":742,"line":750},[740,2170,1361],{"emptyLinePlaceholder":1360},[740,2172,2173],{"class":742,"line":760},[740,2174,1366],{},[740,2176,2177],{"class":742,"line":779},[740,2178,1361],{"emptyLinePlaceholder":1360},[740,2180,2181],{"class":742,"line":785},[740,2182,1375],{},[740,2184,2185],{"class":742,"line":791},[740,2186,1380],{},[740,2188,2189],{"class":742,"line":805},[740,2190,985],{},[526,2192,1388],{"id":1387},[613,2194,2195,2203,2207],{},[616,2196,2197,1336,2200,1402],{},[538,2198,1397],{"href":1395,"rel":2199},[542],[538,2201,1401],{"href":670,"rel":2202},[542],[616,2204,2205,1407],{},[538,2206,128],{"href":129},[616,2208,2209,1412],{},[538,2210,205],{"href":206},[1414,2212,1416],{},{"title":736,"searchDepth":750,"depth":750,"links":2214},[2215,2216,2217,2218,2223,2224,2225,2226,2227,2228],{"id":528,"depth":750,"text":529},{"id":580,"depth":750,"text":23},{"id":607,"depth":750,"text":608},{"id":678,"depth":750,"text":679,"children":2219},[2220,2221,2222],{"id":683,"depth":760,"text":684},{"id":697,"depth":760,"text":698},{"id":716,"depth":760,"text":717},{"id":723,"depth":750,"text":724},{"id":1132,"depth":750,"text":1133},{"id":1163,"depth":750,"text":1164},{"id":1196,"depth":750,"text":1197},{"id":1295,"depth":750,"text":1296},{"id":1387,"depth":750,"text":1388},{"head":2230,"sitemap":2233,"readingTime":2234},{"meta":2231},[2232],{"name":1439,"content":1440},{"loc":394,"lastmod":1442,"changefreq":1443,"priority":1444},{"text":1446,"minutes":1447,"time":1448,"words":1449},{"title":393,"tags":2236},[16,401,402,403,404,405,406,21,71],{"title":521,"description":398},1785436444728]