[{"data":1,"prerenderedAt":1374},["ShallowReactive",2],{"navigation-docsEN":3,"navigation-blogEN":725,"docs-EN-\u002Fdocs\u002Fdigital-data-management\u002Fconnector-tokens":743,"docsNav-EN-\u002Fdocs":1019,"docsSecNav-EN-\u002Fdocs\u002Fdigital-data-management\u002Fconnector-tokens":1219},[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":560,"body":746,"description":563,"extension":998,"icon":564,"lastUpdated":999,"meta":1000,"navigation":1011,"path":561,"seo":1013,"sitemap":1014,"stem":562,"__hash__":1018},"docsEN\u002Fdocs\u002F13.digital-data-management\u002F12.connector-tokens.md",{"type":747,"value":748,"toc":987},"minimark",[749,754,758,766,770,782,785,789,796,799,805,811,829,833,836,851,854,857,861,868,884,891,899,907,914,918,925,928,931,935,947,954,958,961,964,983],[750,751,753],"h2",{"id":752},"why-a-machine-needs-its-own-credential","Why a machine needs its own credential",[755,756,757],"p",{},"An ERP that publishes products into your catalog every night has to prove who it\nis on every call. The obvious shortcut is to give it a person's username and\npassword, and it is the wrong one for three reasons that all arrive later rather\nthan sooner: passwords expire and the nightly job stops at 3 a.m.; people leave\nand their account goes with them; and when something publishes a wrong price,\nthe audit trail names a colleague who was asleep.",[755,759,760,761,765],{},"An ",[762,763,764],"strong",{},"integration token"," is the alternative. It belongs to a system rather than\nto a person, it is named after that system, and — issued the way the next\nsection describes — it can be revoked on its own without touching anything\nelse. It is what every OpenEPCIS connector — the UnoPim route, the ERPNext\nroute, the Odoo add-on — authenticates with.",[750,767,769],{"id":768},"what-the-token-actually-is","What the token actually is",[755,771,772,773,776,777,781],{},"It is an ",[762,774,775],{},"offline token",": an OAuth refresh token issued with the\n",[778,779,780],"code",{},"offline_access"," scope. The distinction matters, because it is the reason the\nthing works at all. An ordinary refresh token dies with the session that\ncreated it, so an integration built on one runs for a few minutes after you set\nit up and then stops — a failure mode that looks like a bug in the connector\nand is not.",[755,783,784],{},"The integration never sends the offline token to the catalog. It trades it at\nthe identity provider for a short-lived access token, and uses that. So the\nlong-lived value sits in one place — the integration's own configuration — and\nthe credential that travels on every request expires in minutes.",[750,786,788],{"id":787},"issuing-one","Issuing one",[755,790,791,792,795],{},"Open ",[762,793,794],{},"Profile"," in DDM and use the integration-tokens card. It takes you\nthrough the identity provider's own login and consent screen, and back to a\npage that shows the token.",[755,797,798],{},"Three things about that trip are deliberate and worth knowing before you take\nit:",[755,800,801,804],{},[762,802,803],{},"You will be asked to consent, even though you are already logged in."," That\nprompt is not a redundancy. An offline token outlives the session that made it,\nand quite possibly the person who made it, so the person is asked once,\nexplicitly, to allow that.",[755,806,807,810],{},[762,808,809],{},"The token is shown exactly once."," Nothing stores it — not DDM, not the\nresolver. What remains afterwards is the row in your list: the name, when it\nwas issued, when it was last used. If you close the page before copying the\nvalue, nothing is broken and nothing is lost except two clicks: issue another\none, and revoke the one you abandoned.",[755,812,813,816,817,820,821,824,825,828],{},[762,814,815],{},"Name it after the system, not after yourself."," ",[778,818,819],{},"unopim-production"," and\n",[778,822,823],{},"odoo-nightly"," are useful names; ",[778,826,827],{},"sven-token-2"," is not, because the whole point\nof a per-system token is that you can retire one system without wondering what\nelse you are breaking. You can supply the name when you start the flow, or\nrename it afterwards. A flow started without a name stores none — nothing\nfails, the row simply comes out unnamed, and naming it later is the remedy.",[750,830,832],{"id":831},"issuing-a-second-one-log-out-first","Issuing a second one: log out first",[755,834,835],{},"This is the one step that surprises people, and getting it wrong quietly\nremoves the property the whole mechanism exists for.",[755,837,838,839,842,843,846,847,850],{},"A token is bound to a ",[762,840,841],{},"session"," at the identity provider, not to the click\nthat produced it. Run the flow twice in the same browser without logging out\nand the second run reuses the session you are already in: you get two\ndifferent token values that belong to ",[762,844,845],{},"one"," session. The list then shows a\nsingle row, not two — and revoking that row invalidates ",[762,848,849],{},"both"," tokens at\nonce. One system retired, two integrations down.",[755,852,853],{},"So when you need a token per system, end the session between issues: log out,\nor run the second flow in a private window. Each run then gets its own\nsession, the list shows one row per token, and revoking one leaves the other\nrunning.",[755,855,856],{},"If you already have two tokens from one session, nothing is broken — they\nwork. They are simply not independently revocable, and the fix is to issue\nfresh ones with separated sessions and revoke the shared row afterwards.",[750,858,860],{"id":859},"putting-it-into-a-connector","Putting it into a connector",[755,862,863,864,867],{},"The token is one property. In the connectors' configuration it is the\n",[778,865,866],{},"target.offline-token"," of a connection:",[869,870,875],"pre",{"className":871,"code":872,"language":873,"meta":874,"style":874},"language-properties shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast monokai","openepcis.connectors.connections.pim1.target.offline-token=\u003Cthe value>\n","properties","",[778,876,877],{"__ignoreMap":874},[878,879,882],"span",{"class":880,"line":881},"line",1,[878,883,872],{},[755,885,886,887,890],{},"In a cluster the same key arrives as an environment variable — upper-cased,\nevery non-alphanumeric character turned into ",[778,888,889],{},"_",":",[869,892,897],{"className":893,"code":895,"language":896},[894],"language-text","OPENEPCIS_CONNECTORS_CONNECTIONS_PIM1_TARGET_OFFLINE_TOKEN\n","text",[778,898,895],{"__ignoreMap":874},[755,900,901,902,906],{},"Put it in a Kubernetes secret mounted into the deployment, not in a properties\nfile on disk. See ",[903,904,905],"a",{"href":684},"How a connector works","\nfor the rest of a connection's configuration.",[755,908,909,910,913],{},"A token is bound to the realm, the client and the person who issued it. That\nhas a consequence people meet when they build a second environment: ",[762,911,912],{},"a token\nissued on one environment does not work on another."," Copying the value from a\nstaging deployment into production, or the reverse, produces an authentication\nfailure that looks like a typo. Issue one per environment.",[750,915,917],{"id":916},"seeing-what-a-token-has-been-doing","Seeing what a token has been doing",[755,919,920,921,924],{},"The list on the Profile page is metadata only — it never shows a token value\nagain. Each row carries the name, the issue time and the ",[762,922,923],{},"last used"," time,\nand that last column is the useful one. A token that has never been used points\nat an integration that was configured but never started. A token that stopped\nbeing used weeks ago points at a system that was retired without anyone\nrevoking its credential, which is exactly the kind of key that should not still\nbe lying around.",[755,926,927],{},"You only ever see your own tokens. The list is anchored on the account that\nissued them, so a colleague's integration tokens are not yours to inspect or\nrevoke — and yours are not theirs.",[755,929,930],{},"One row means one session, which is why the section above matters: if two\ntokens share a session, this list cannot tell them apart, because there is\nnothing in it that distinguishes them.",[750,932,934],{"id":933},"revoking","Revoking",[755,936,937,938,942,943,946],{},"Revoking deletes the offline session behind the token — and ",[939,940,941],"em",{},"the session"," is\nthe unit, which is the second reason to keep one session per token. The\nintegration's next attempt to trade its token for an access token fails with\n",[778,944,945],{},"invalid_grant",", and it will keep failing until someone gives the integration a\nnew token. That is the\nintended behaviour and it is abrupt on purpose: a credential you decided to\nwithdraw should stop working, not wind down.",[755,948,949,950,953],{},"So revoke when the system is retired, when a token has been exposed, or when\nthe list shows one nobody can account for. What you should ",[939,951,952],{},"not"," do is revoke a\ntoken to \"refresh\" it — there is nothing to refresh, and the integration stops\nuntil it is reconfigured.",[750,955,957],{"id":956},"when-the-card-is-not-there","When the card is not there",[755,959,960],{},"The feature is off unless a deployment turns it on, and it needs the identity\nprovider's client to be configured for it. If the Profile page shows no\nintegration-tokens card, or the flow answers that it is unavailable, the\ndeployment has not enabled it — that is an administrator's task, not something\na retry will fix.",[755,962,963],{},"Two failures have a specific cause worth naming:",[965,966,967,977],"ul",{},[968,969,970,973,974,976],"li",{},[762,971,972],{},"\"This is not an offline token.\""," The flow refuses to hand over a refresh\ntoken that is not an offline one, rather than giving you a credential that\nworks for minutes. The client needs the ",[778,975,780],{}," scope allowed.",[968,978,979,982],{},[762,980,981],{},"An expired or unrecognised request."," A started flow has to be finished\nwithin a short window — ten minutes, by default. Leaving the consent screen\nopen over lunch and then continuing means starting again.",[984,985,986],"style",{},"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);}",{"title":874,"searchDepth":988,"depth":988,"links":989},2,[990,991,992,993,994,995,996,997],{"id":752,"depth":988,"text":753},{"id":768,"depth":988,"text":769},{"id":787,"depth":988,"text":788},{"id":831,"depth":988,"text":832},{"id":859,"depth":988,"text":860},{"id":916,"depth":988,"text":917},{"id":933,"depth":988,"text":934},{"id":956,"depth":988,"text":957},"md","2026-09-01T00:00:00.000Z",{"head":1001,"readingTime":1006},{"meta":1002},[1003],{"name":1004,"content":1005},"keywords","integration token, offline token, connector token, offline_access, ERP integration, PIM integration, revoke token, Keycloak offline session, OpenEPCIS",{"text":1007,"minutes":1008,"time":1009,"words":1010},"7 min read",6.115,366900,1223,{"title":560,"tags":1012},[437,566,567,568,569,570,448],{"title":560,"description":563},{"loc":561,"lastmod":1015,"changefreq":1016,"priority":1017},"2026-09-01","monthly",0.8,"mDmkbih-AOm-lSIElNmYP6QpIKpz0k0d_v4WAi9oCfA",[1020],{"title":5,"path":6,"stem":7,"children":1021},[1022,1024,1029,1034,1039,1044,1049,1054,1064,1069,1074,1079,1144,1149,1178,1196,1201,1204],{"title":10,"path":6,"stem":11,"description":12,"icon":13,"tags":1023},[15,16,17,18,19,20,21],{"title":23,"path":24,"stem":25,"children":1025,"description":28,"icon":29,"tags":1028},[1026],{"title":23,"path":24,"stem":25,"description":28,"icon":29,"tags":1027},[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":1030,"description":47,"icon":48,"tags":1033},[1031],{"title":42,"path":43,"stem":44,"description":47,"icon":48,"tags":1032},[16,31,32,33,50,51,39],[16,31,32,33,50,51,39],{"title":54,"path":55,"stem":56,"children":1035,"description":59,"icon":60,"tags":1038},[1036],{"title":54,"path":55,"stem":56,"description":59,"icon":60,"tags":1037},[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":1040,"description":80,"icon":81,"tags":1043},[1041],{"title":75,"path":76,"stem":77,"description":80,"icon":81,"tags":1042},[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":1045,"description":94,"icon":95,"tags":1048},[1046],{"title":89,"path":90,"stem":91,"description":94,"icon":95,"tags":1047},[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":1050,"description":120,"icon":121,"tags":1053},[1051],{"title":115,"path":116,"stem":117,"description":120,"icon":121,"tags":1052},[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":1055,"description":134,"icon":135,"tags":1063},[1056,1058],{"title":129,"path":130,"stem":131,"description":134,"icon":135,"tags":1057},[16,123,62,63,64,65,21,124,125,126,71,72],{"title":138,"path":139,"stem":140,"children":1059,"description":143,"icon":144,"tags":1062},[1060],{"title":138,"path":139,"stem":140,"description":143,"icon":144,"tags":1061},[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":1065,"description":162,"icon":163,"tags":1068},[1066],{"title":157,"path":158,"stem":159,"description":162,"icon":163,"tags":1067},[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":1070,"description":173,"icon":174,"tags":1073},[1071],{"title":168,"path":169,"stem":170,"description":173,"icon":174,"tags":1072},[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":1075,"description":188,"icon":189,"tags":1078},[1076],{"title":183,"path":184,"stem":185,"description":188,"icon":189,"tags":1077},[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":1080,"description":212,"icon":213,"tags":1143},[1081,1083,1088,1099,1112,1121,1126,1128,1130,1132,1141],{"title":207,"path":208,"stem":209,"description":212,"icon":213,"tags":1082},[215,216,217,31,218,35,219,220],{"title":222,"path":223,"stem":224,"children":1084,"description":227,"icon":228,"tags":1087},[1085],{"title":222,"path":223,"stem":224,"description":227,"icon":228,"tags":1086},[230,231,218,216,217,232],[230,231,218,216,217,232],{"title":235,"path":236,"stem":237,"children":1089,"description":240,"icon":241,"tags":1098},[1090,1092,1094,1096],{"title":235,"path":236,"stem":237,"description":240,"icon":241,"tags":1091},[243,244,216,31,103,35,218,245],{"title":247,"path":248,"stem":249,"description":250,"icon":174,"tags":1093},[243,244,216,31,220],{"title":253,"path":254,"stem":255,"description":256,"icon":257,"tags":1095},[243,31,65,39,216],{"title":260,"path":261,"stem":262,"description":263,"icon":13,"tags":1097},[243,265,266,63,267,245],[243,244,216,31,103,35,218,245],{"title":270,"path":271,"stem":272,"children":1100,"description":275,"icon":276,"tags":1111},[1101,1103,1105,1107,1109],{"title":270,"path":271,"stem":272,"description":275,"icon":276,"tags":1102},[278,279,280,216,31,103,35,218,245],{"title":247,"path":282,"stem":283,"description":284,"icon":285,"tags":1104},[278,279,280,216,31,245],{"title":253,"path":288,"stem":289,"description":290,"icon":285,"tags":1106},[278,31,65,39,216],{"title":293,"path":294,"stem":295,"description":296,"icon":285,"tags":1108},[278,97,298,299,216,245],{"title":260,"path":301,"stem":302,"description":303,"icon":13,"tags":1110},[278,265,280,245,305],[278,279,280,216,31,103,35,218,245],{"title":308,"path":309,"stem":310,"children":1113,"description":313,"icon":314,"tags":1120},[1114,1116,1118],{"title":308,"path":309,"stem":310,"description":313,"icon":314,"tags":1115},[316,317,318,216,218,319],{"title":247,"path":321,"stem":322,"description":323,"icon":324,"tags":1117},[316,317,318,326],{"title":260,"path":328,"stem":329,"description":330,"icon":13,"tags":1119},[316,265,317,318,332,63],[316,317,318,216,218,319],{"title":335,"path":336,"stem":337,"children":1122,"description":340,"icon":60,"tags":1125},[1123],{"title":335,"path":336,"stem":337,"description":340,"icon":60,"tags":1124},[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":1127},[354,97,299,355,298],{"title":357,"path":358,"stem":359,"description":360,"icon":361,"tags":1129},[298,97,299],{"title":364,"path":365,"stem":366,"description":367,"icon":368,"tags":1131},[370,371,372,344],{"title":374,"path":375,"stem":376,"children":1133,"description":379,"icon":380,"tags":1140},[1134,1136,1138],{"title":374,"path":375,"stem":376,"description":379,"icon":380,"tags":1135},[382,383,384,385,386],{"title":247,"path":388,"stem":389,"description":390,"icon":174,"tags":1137},[382,326,383,384,385],{"title":260,"path":393,"stem":394,"description":395,"icon":13,"tags":1139},[382,265,397,398,63],[382,383,384,385,386],{"title":401,"path":402,"stem":403,"description":404,"icon":228,"tags":1142},[406,407,408,409,342,410],[215,216,217,31,218,35,219,220],{"title":413,"path":414,"stem":415,"children":1145,"description":418,"icon":419,"tags":1148},[1146],{"title":413,"path":414,"stem":415,"description":418,"icon":419,"tags":1147},[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":1150,"description":434,"icon":435,"tags":1177},[1151,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175],{"title":429,"path":430,"stem":431,"description":434,"icon":435,"tags":1152},[437,438,215,97,439,298],{"title":441,"path":442,"stem":443,"description":444,"icon":445,"tags":1154},[437,447,448,449,450,451],{"title":453,"path":454,"stem":455,"description":456,"icon":457,"tags":1156},[437,459,105,460,461,439],{"title":463,"path":464,"stem":465,"description":466,"icon":467,"tags":1158},[437,469,63,424,470,471,472],{"title":474,"path":475,"stem":476,"description":477,"icon":478,"tags":1160},[437,480,481,111,482,483],{"title":485,"path":486,"stem":487,"description":488,"icon":489,"tags":1162},[437,299,97,298,491,492],{"title":494,"path":495,"stem":496,"description":497,"icon":498,"tags":1164},[437,500,501,502,503,504],{"title":506,"path":507,"stem":508,"description":509,"icon":419,"tags":1166},[437,503,511,512,513,514],{"title":516,"path":517,"stem":518,"description":519,"icon":520,"tags":1168},[437,522,523,230,524,525],{"title":527,"path":528,"stem":529,"description":530,"icon":29,"tags":1170},[437,298,532,533,534,112],{"title":536,"path":537,"stem":538,"description":539,"icon":540,"tags":1172},[437,542,543,544,545,546],{"title":548,"path":549,"stem":550,"description":551,"icon":552,"tags":1174},[437,554,555,556,557,558],{"title":560,"path":561,"stem":562,"description":563,"icon":564,"tags":1176},[437,566,567,568,569,570,448],[437,438,215,97,439,298],{"title":573,"path":574,"stem":575,"children":1179,"description":578,"icon":579},[1180,1181,1182,1183],{"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":1184,"description":598,"icon":599},[1185,1186,1188,1190,1192,1193,1194,1195],{"title":593,"path":594,"stem":595,"description":598,"icon":599},{"title":601,"path":602,"stem":603,"description":604,"icon":605,"tags":1187},[298,97,103,299,220],{"title":608,"path":609,"stem":610,"description":611,"icon":612,"tags":1189},[220,614,103,298,63],{"title":616,"path":617,"stem":618,"description":619,"icon":620,"tags":1191},[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":1197,"description":653,"icon":29,"tags":1200},[1198],{"title":648,"path":649,"stem":650,"description":653,"icon":29,"tags":1199},[655,656,657,406,343,658,659,660],[655,656,657,406,343,658,659,660],{"title":663,"path":664,"stem":665,"children":1202,"description":668,"icon":634},[1203],{"title":663,"path":664,"stem":665,"description":668,"icon":634},{"title":670,"path":671,"stem":672,"children":1205,"description":675,"icon":540,"tags":1218},[1206,1208,1210,1212,1214,1216],{"title":670,"path":671,"stem":672,"description":675,"icon":540,"tags":1207},[677,678,679,680,681,215,31,298],{"title":683,"path":684,"stem":685,"description":686,"icon":60,"tags":1209},[677,543,688,689,690,691],{"title":693,"path":694,"stem":695,"description":696,"icon":697,"tags":1211},[677,105,699,109,110,104,700],{"title":702,"path":703,"stem":704,"description":705,"icon":540,"tags":1213},[677,678,570,105,688,690,500],{"title":708,"path":709,"stem":710,"description":711,"icon":228,"tags":1215},[677,31,65,713,714,715,406,343,523,716],{"title":718,"path":719,"stem":720,"description":721,"icon":457,"tags":1217},[677,679,31,65,104,372,714,723],[677,678,679,680,681,215,31,298],{"id":745,"title":560,"body":1220,"description":563,"extension":998,"icon":564,"lastUpdated":999,"meta":1365,"navigation":1370,"path":561,"seo":1372,"sitemap":1373,"stem":562,"__hash__":1018},{"type":747,"value":1221,"toc":1355},[1222,1224,1226,1230,1232,1238,1240,1242,1246,1248,1252,1256,1266,1268,1270,1278,1280,1282,1284,1288,1296,1300,1305,1309,1313,1315,1319,1321,1323,1325,1331,1335,1337,1339,1341,1353],[750,1223,753],{"id":752},[755,1225,757],{},[755,1227,760,1228,765],{},[762,1229,764],{},[750,1231,769],{"id":768},[755,1233,772,1234,776,1236,781],{},[762,1235,775],{},[778,1237,780],{},[755,1239,784],{},[750,1241,788],{"id":787},[755,1243,791,1244,795],{},[762,1245,794],{},[755,1247,798],{},[755,1249,1250,804],{},[762,1251,803],{},[755,1253,1254,810],{},[762,1255,809],{},[755,1257,1258,816,1260,820,1262,824,1264,828],{},[762,1259,815],{},[778,1261,819],{},[778,1263,823],{},[778,1265,827],{},[750,1267,832],{"id":831},[755,1269,835],{},[755,1271,838,1272,842,1274,846,1276,850],{},[762,1273,841],{},[762,1275,845],{},[762,1277,849],{},[755,1279,853],{},[755,1281,856],{},[750,1283,860],{"id":859},[755,1285,863,1286,867],{},[778,1287,866],{},[869,1289,1290],{"className":871,"code":872,"language":873,"meta":874,"style":874},[778,1291,1292],{"__ignoreMap":874},[878,1293,1294],{"class":880,"line":881},[878,1295,872],{},[755,1297,886,1298,890],{},[778,1299,889],{},[869,1301,1303],{"className":1302,"code":895,"language":896},[894],[778,1304,895],{"__ignoreMap":874},[755,1306,901,1307,906],{},[903,1308,905],{"href":684},[755,1310,909,1311,913],{},[762,1312,912],{},[750,1314,917],{"id":916},[755,1316,920,1317,924],{},[762,1318,923],{},[755,1320,927],{},[755,1322,930],{},[750,1324,934],{"id":933},[755,1326,937,1327,942,1329,946],{},[939,1328,941],{},[778,1330,945],{},[755,1332,949,1333,953],{},[939,1334,952],{},[750,1336,957],{"id":956},[755,1338,960],{},[755,1340,963],{},[965,1342,1343,1349],{},[968,1344,1345,973,1347,976],{},[762,1346,972],{},[778,1348,780],{},[968,1350,1351,982],{},[762,1352,981],{},[984,1354,986],{},{"title":874,"searchDepth":988,"depth":988,"links":1356},[1357,1358,1359,1360,1361,1362,1363,1364],{"id":752,"depth":988,"text":753},{"id":768,"depth":988,"text":769},{"id":787,"depth":988,"text":788},{"id":831,"depth":988,"text":832},{"id":859,"depth":988,"text":860},{"id":916,"depth":988,"text":917},{"id":933,"depth":988,"text":934},{"id":956,"depth":988,"text":957},{"head":1366,"readingTime":1369},{"meta":1367},[1368],{"name":1004,"content":1005},{"text":1007,"minutes":1008,"time":1009,"words":1010},{"title":560,"tags":1371},[437,566,567,568,569,570,448],{"title":560,"description":563},{"loc":561,"lastmod":1015,"changefreq":1016,"priority":1017},1788349674631]