[{"data":1,"prerenderedAt":946},["ShallowReactive",2],{"page-\u002Fguides\u002Fdpp-registry-api":3,"related-\u002Fguides\u002Fdpp-registry-api":925},{"id":4,"title":5,"author":6,"body":7,"category":911,"description":912,"extension":913,"heading":914,"heroImage":911,"heroImageAlt":915,"howTo":911,"layout":916,"meta":917,"navigation":317,"ogImage":918,"path":919,"publishedAt":920,"sections":911,"seo":921,"sourcePath":922,"stem":923,"updatedAt":920,"videoPosition":911,"videos":911,"__hash__":924},"pages\u002Fguides\u002Fdpp-registry-api.md","DPP Registry API: what integration actually involves","Mia",{"type":8,"value":9,"toc":888},"minimark",[10,17,30,33,42,47,57,143,146,155,159,162,178,181,185,188,194,197,203,217,221,228,231,267,270,274,277,391,402,421,463,470,473,480,597,600,604,607,614,621,629,634,641,645,648,665,678,682,690,699,707,711,714,717,721,724,766,769,773,824,832,836,840,843,847,850,854,860,864,870,874,877,881,884],[11,12,13],"p",{},[14,15,16],"strong",{},"TL;DR",[18,19,20,24,27],"ul",{},[21,22,23],"li",{},"On 30 October 2026 the European Commission published the technical specifications for the DPP Registry API: an integration guide, OpenAPI files, service account and self-hosted authentication guides, and the semantic data models for batteries.",[21,25,26],{},"Registration is asynchronous and all-or-nothing: you send up to 100 passports per submission, the Registry fetches and validates each passport from its web address, and if one item fails, none is registered.",[21,28,29],{},"Batteries are the only product group defined so far. EV, LMT and industrial batteries over 2 kWh need a registered passport from 18 February 2027, and your organisation has to be verified with a qualified electronic seal before any API call will work.",[11,31,32],{},"The DPP Registry API is how a manufacturer, importer or the platform working for them registers Digital Product Passports with the EU without clicking through a web form one product at a time. The Registry itself has been live since 20 July 2026. What arrived on 30 October is the detail a developer needs to build against it: endpoints, authentication, error codes, polling rules and the data models the Registry validates passports against.",[11,34,35,36,41],{},"This guide is for the person who has to make battery passports appear in the Registry by February. It follows the documents in the order you will meet them and separates what is decided from what is still open. For what the Registry is and why it exists, see our ",[37,38,40],"a",{"href":39},"\u002Fguides\u002Feuropean-dpp-registry\u002F","EU DPP registry explainer",". Everything below is stated as of November 2026.",[43,44,46],"h2",{"id":45},"what-did-the-commission-publish-on-30-october","What did the Commission publish on 30 October?",[11,48,49,50,56],{},"Six technical documents appeared on the Commission's ",[37,51,55],{"href":52,"rel":53},"https:\u002F\u002Fsingle-market-economy.ec.europa.eu\u002Fsingle-market\u002Fdigital-product-passport\u002Fresources-documentation_en",[54],"nofollow","DPP resources page",", without a news item to announce them. They sit alongside the User Guide for Economic Operators from September 2026.",[58,59,60,76],"table",{},[61,62,63],"thead",{},[64,65,66,70,73],"tr",{},[67,68,69],"th",{},"Document",[67,71,72],{},"Version",[67,74,75],{},"What it gives you",[77,78,79,91,102,112,123,133],"tbody",{},[64,80,81,85,88],{},[82,83,84],"td",{},"API Integration Guide for Economic Operators",[82,86,87],{},"1.0",[82,89,90],{},"The registration flow, task tracking, headers, polling and error handling",[64,92,93,96,99],{},[82,94,95],{},"OpenAPI Specifications (ZIP)",[82,97,98],{},"1.0.0, EUPL-1.2",[82,100,101],{},"Three OpenAPI 3.1.0 files: registry, dashboard (task tracking) and common",[64,103,104,107,109],{},[82,105,106],{},"Semantic Data Guide",[82,108,87],{},[82,110,111],{},"How passport data is modelled, serialised and validated",[64,113,114,117,120],{},[82,115,116],{},"Semantic Data Artifacts (ZIP)",[82,118,119],{},"core 1.0.0, batteries 1.0.0",[82,121,122],{},"JSON Schemas, JSON-LD contexts, SHACL shapes and SKOS vocabularies, with EV, LMT and industrial sub-groups",[64,124,125,128,130],{},[82,126,127],{},"Service Account Technical Integration Guide",[82,129,87],{},[82,131,132],{},"Machine-to-machine authentication for your systems",[64,134,135,138,140],{},[82,136,137],{},"Self-Hosted Authentication Guide",[82,139,87],{},[82,141,142],{},"How your passport server must handle requests from the Registry",[11,144,145],{},"On 19 October the Commission also published version 3.2 of its battery passport guidance, which lists the data points by battery category. We cover it below.",[11,147,148,149,154],{},"The binding part is ",[37,150,153],{"href":151,"rel":152},"https:\u002F\u002Feur-lex.europa.eu\u002Feli\u002Freg_impl\u002F2026\u002F1778\u002Foj\u002Feng",[54],"Implementing Regulation (EU) 2026\u002F1778"," of 16 July 2026. Article 3(b) provides for an API for registering, Article 8(6) allows registration through the user interface or the API, and Article 8(7) requires automatic checks of semantics and granularity. The specifications are how the Commission implements those articles.",[43,156,158],{"id":157},"what-does-the-registry-do-with-your-passport","What does the Registry do with your passport?",[11,160,161],{},"The Registry is an index, not a store. You send it a unique product identifier (UPI) for each passport, and the API requires that UPI to be an HTTPS URL. At submission, the Registry goes to that URL, fetches the passport, and validates it against the data model for the product group. In the words of the integration guide, the Registry \"does not persist the fetched DPP payload content\".",[11,163,164,165,168,169,173,174,177],{},"That one design choice drives most of the engineering work. The passport has to be online, complete and valid ",[14,166,167],{},"at the moment you submit",", not later. If the Registry cannot reach it, the item fails with ",[170,171,172],"code",{},"UPI_NOT_RESOLVABLE",". If the content does not match the schema, it fails as ",[170,175,176],{},"ITEM_NON_COMPLIANT",". A workflow that registers first and publishes the passport afterwards will not work.",[11,179,180],{},"Once registration succeeds, Article 9 of the Implementing Regulation gives you a proof of registration sealed with the Commission's qualified electronic seal, available for 90 days. Download and archive it; it is your evidence that the passport was registered and when.",[43,182,184],{"id":183},"what-has-to-be-in-place-before-the-first-api-call","What has to be in place before the first API call?",[11,186,187],{},"More than most teams expect, and almost none of it is code.",[11,189,190,193],{},[14,191,192],{},"A verified organisation."," Users log in with EU Login, but the API rejects requests from an organisation that is not verified, with a 403. Under Article 4 of the Implementing Regulation, a legal person proves its identity and establishment with a qualified electronic seal (or an electronic attestation of attributes); a sole trader can use a qualified electronic signature or an eID at eIDAS assurance level \"high\". In practice, the Registry gives you a declaration sealed by the Commission, and you sign or seal it. The verified status lasts until your identification means expire, and no more than three years, after which you have to verify again.",[11,195,196],{},"A qualified seal comes from a qualified trust service provider, with its own identity checks. If your company does not hold one, start here.",[11,198,199,202],{},[14,200,201],{},"An administrator and a service account."," Your organisation's administrator creates service accounts in the Registry interface. A service account is a non-human identity bound to your verified organisation, and it needs the role that allows registering DPPs. The organisation is taken from the access token, so you never pass an organisation ID in the request.",[11,204,205,208,209,212,213,216],{},[14,206,207],{},"Product classification."," Each submission names a product group and sub-group, which you take from ",[170,210,211],{},"GET \u002Fapi\u002Fv1\u002Fdpp\u002Fproduct-groups"," rather than hard-coding. Today that call returns one group, ",[170,214,215],{},"BATTERIES",", with EV, LMT and industrial sub-groups.",[43,218,220],{"id":219},"how-does-a-service-account-authenticate","How does a service account authenticate?",[11,222,223,224,227],{},"The Registry uses OAuth 2.0 client credentials with ",[170,225,226],{},"private_key_jwt",". The guide is blunt: \"Shared client secrets are not supported.\" Your system holds a private key, signs a short-lived assertion, and exchanges it for an access token.",[11,229,230],{},"The details that will catch people out:",[18,232,233,239,249,255,261],{},[21,234,235,238],{},[14,236,237],{},"Elliptic-curve keys only"," (ES256, ES384 or ES512). RSA keys are not accepted. You upload the public key as a JWK or PEM, and the guide recommends keeping the private key in a hardware security module.",[21,240,241,244,245,248],{},[14,242,243],{},"Short assertions."," The client assertion should expire in 60 to 120 seconds, never more than 5 minutes, with a fresh ",[170,246,247],{},"jti"," every time.",[21,250,251,254],{},[14,252,253],{},"A resource indicator."," The token request must name the Registry as the resource, using the value published for each environment.",[21,256,257,260],{},[14,258,259],{},"Short tokens."," Access tokens last at most 15 minutes, so your client has to refresh them inside long batch runs.",[21,262,263,266],{},[14,264,265],{},"Limits."," Up to 5 service accounts per organisation and 2 active credentials per account, which is what makes key rotation without downtime possible. Credentials are recommended to last one year, two at most.",[11,268,269],{},"If a platform registers passports for you, the model the version 1.0 documents describe is a service account inside your verified organisation. That is how integration works today, but it is not the only route the law allows. The Implementing Regulation also provides for verified third parties acting on an operator's behalf: Article 6(1) lets verified operators delegate access rights to third parties where Union law provides for it, Article 8(2) allows a verified third party to perform registration actions in that case, and Article 19(4) requires a third party authorised by an operator to go through its own verification. The Registry will also keep a list of verified DPP service providers (Article 3(f)). How that delegation will work technically is not yet described in the integration guides. Whichever route is used, the economic operator remains fully responsible for compliance.",[43,271,273],{"id":272},"how-does-a-registration-submission-work","How does a registration submission work?",[11,275,276],{},"The flow has four calls. You fetch the product groups, submit, then track the task through what the Commission calls the Activity Dashboard API.",[278,279,284],"pre",{"className":280,"code":281,"language":282,"meta":283,"style":283},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","POST \u002Fapi\u002Fv1\u002Fdpp\u002Fsubmission\nAuthorization: Bearer \u003Caccess token>\nIdempotency-Key: 7f3c9a2e-batch-2027-02-01-001\nContent-Type: application\u002Fjson\n\n{\n  \"productGroup\": \"BATTERIES\",\n  \"productSubGroup\": \"EV\",\n  \"submissionItems\": [\n    {\n      \"uniqueProductIdentifier\": \"https:\u002F\u002Fexample.com\u002Fdpp\u002Fbattery\u002F0001\",\n      \"granularity\": \"item\",\n      \"batchIdentifier\": \"xxx-000\",\n      \"modelIdentifier\": \"yyy-111\"\n    }\n  ]\n}\n","http","",[170,285,286,294,300,306,312,319,325,331,337,343,349,355,361,367,373,379,385],{"__ignoreMap":283},[287,288,291],"span",{"class":289,"line":290},"line",1,[287,292,293],{},"POST \u002Fapi\u002Fv1\u002Fdpp\u002Fsubmission\n",[287,295,297],{"class":289,"line":296},2,[287,298,299],{},"Authorization: Bearer \u003Caccess token>\n",[287,301,303],{"class":289,"line":302},3,[287,304,305],{},"Idempotency-Key: 7f3c9a2e-batch-2027-02-01-001\n",[287,307,309],{"class":289,"line":308},4,[287,310,311],{},"Content-Type: application\u002Fjson\n",[287,313,315],{"class":289,"line":314},5,[287,316,318],{"emptyLinePlaceholder":317},true,"\n",[287,320,322],{"class":289,"line":321},6,[287,323,324],{},"{\n",[287,326,328],{"class":289,"line":327},7,[287,329,330],{},"  \"productGroup\": \"BATTERIES\",\n",[287,332,334],{"class":289,"line":333},8,[287,335,336],{},"  \"productSubGroup\": \"EV\",\n",[287,338,340],{"class":289,"line":339},9,[287,341,342],{},"  \"submissionItems\": [\n",[287,344,346],{"class":289,"line":345},10,[287,347,348],{},"    {\n",[287,350,352],{"class":289,"line":351},11,[287,353,354],{},"      \"uniqueProductIdentifier\": \"https:\u002F\u002Fexample.com\u002Fdpp\u002Fbattery\u002F0001\",\n",[287,356,358],{"class":289,"line":357},12,[287,359,360],{},"      \"granularity\": \"item\",\n",[287,362,364],{"class":289,"line":363},13,[287,365,366],{},"      \"batchIdentifier\": \"xxx-000\",\n",[287,368,370],{"class":289,"line":369},14,[287,371,372],{},"      \"modelIdentifier\": \"yyy-111\"\n",[287,374,376],{"class":289,"line":375},15,[287,377,378],{},"    }\n",[287,380,382],{"class":289,"line":381},16,[287,383,384],{},"  ]\n",[287,386,388],{"class":289,"line":387},17,[287,389,390],{},"}\n",[11,392,393,394,397,398,401],{},"That body follows the official example. ",[170,395,396],{},"uniqueProductIdentifier"," and ",[170,399,400],{},"granularity"," (item, batch or model) are required for every item; the batch and model identifiers are optional.",[11,403,404,405,408,409,412,413,416,417,420],{},"The Registry answers ",[170,406,407],{},"202 Accepted"," with a ",[170,410,411],{},"taskId",". A 202 means only that the request was accepted for processing. You then poll ",[170,414,415],{},"GET \u002Fapi\u002Fv1\u002Ftasks\u002F{taskId}",", and when you need to know which items passed, ",[170,418,419],{},"GET \u002Fapi\u002Fv1\u002Ftasks\u002F{taskId}\u002Fitems",", which returns JSON or CSV.",[11,422,423,424,427,428,431,432,431,435,438,439,442,443,446,447,438,450,453,454,456,457,459,460,462],{},"Two status fields matter, and they mean different things. The task ",[170,425,426],{},"status"," moves through ",[170,429,430],{},"PENDING",", ",[170,433,434],{},"PROCESSING",[170,436,437],{},"COMPLETED"," or ",[170,440,441],{},"ERROR",". Once completed, ",[170,444,445],{},"outcomeResult"," says ",[170,448,449],{},"SUCCEEDED",[170,451,452],{},"FAILED",". A task can be ",[170,455,437],{}," with outcome ",[170,458,452],{},": processing worked, and your data did not pass. ",[170,461,441],{}," is a technical failure on the Registry's side.",[11,464,465,466,469],{},"There are no webhooks. The guide recommends polling at 1, 1, 2, 3, 5, 8, 13, 21, 34 and 55 seconds, then at most every 60 seconds, and a ",[170,467,468],{},"Retry-After"," header always wins over your own schedule.",[11,471,472],{},"The rule that should shape your batch design is atomicity. A submission holds 1 to 100 passports of the same product group and sub-group, and if any one of them is non-compliant, none of them is registered, including the ones that passed. One bad record in a batch of 100 holds back 99 good ones. We would validate every passport locally against the published schemas before submitting, keep batches smaller while your data is still settling, and resubmit the clean items quickly after a failure.",[11,474,475,476,479],{},"The ",[170,477,478],{},"Idempotency-Key"," header is mandatory, up to 128 characters. Retrying with the same key returns the original task rather than creating a duplicate, which is what you want after a timeout or a 500. A changed submission needs a new key; reusing a key for different content returns a 409.",[58,481,482,492],{},[61,483,484],{},[64,485,486,489],{},[67,487,488],{},"Limit or rule",[67,490,491],{},"Value",[77,493,494,502,510,518,526,534,541,549,557,565,573,581,589],{},[64,495,496,499],{},[82,497,498],{},"Passports per submission",[82,500,501],{},"1 to 100, same product group and sub-group",[64,503,504,507],{},[82,505,506],{},"Maximum request body",[82,508,509],{},"10 MB",[64,511,512,515],{},[82,513,514],{},"Batch behaviour",[82,516,517],{},"All-or-nothing",[64,519,520,523],{},[82,521,522],{},"UPI format",[82,524,525],{},"HTTPS URL, reachable at submission",[64,527,528,531],{},[82,529,530],{},"Granularity",[82,532,533],{},"Required: item, batch or model",[64,535,536,538],{},[82,537,478],{},[82,539,540],{},"Mandatory, max 128 characters",[64,542,543,546],{},[82,544,545],{},"Access token lifetime",[82,547,548],{},"Max 15 minutes",[64,550,551,554],{},[82,552,553],{},"Client assertion lifetime",[82,555,556],{},"60 to 120 seconds recommended, max 5 minutes",[64,558,559,562],{},[82,560,561],{},"Key types",[82,563,564],{},"EC only: ES256, ES384, ES512",[64,566,567,570],{},[82,568,569],{},"Service accounts",[82,571,572],{},"Max 5 per organisation, 2 active credentials each",[64,574,575,578],{},[82,576,577],{},"Status updates",[82,579,580],{},"Polling only, no webhooks",[64,582,583,586],{},[82,584,585],{},"Redirects followed when fetching a passport",[82,587,588],{},"Max 3 across the whole chain",[64,590,591,594],{},[82,592,593],{},"Proof of registration",[82,595,596],{},"Sealed by the Commission, available 90 days",[11,598,599],{},"Error codes are conventional (400, 403, 409, 413, 422, 429, 500), and the guide says for each whether to retry with the same key or a new one. A 403 usually means the organisation is not verified or the service account lacks the registration role.",[43,601,603],{"id":602},"what-changes-if-you-host-the-passports-yourself","What changes if you host the passports yourself?",[11,605,606],{},"Battery passports carry public and restricted data, and the Registry reads both when it validates. If the passport is on your own server, that server has to recognise the Registry and show it more than it shows the public.",[11,608,609,610,613],{},"Your passport host acts as an OAuth 2.0 resource server. The Registry first requests the UPI with no credentials and expects the public passport. It then requests the same URL with a bearer token issued by the Commission's authentication service, and expects the public plus restricted data. The token is short (ES384, at most 120 seconds), carries the scope ",[170,611,612],{},"dpp:registry:read",", and is addressed to your host's HTTPS origin. You validate it only against the keys in the Commission's published JWKS, never against keys referenced from inside the token.",[11,615,616,617,620],{},"The response rules are strict. No token: return the public passport. Valid token and authorised requester: return public plus restricted. A token that is present but invalid: return 401, with no fallback to the public view. Valid token with the wrong scope or requester: 403. Send ",[170,618,619],{},"Vary: Authorization"," so caches keep the two versions apart, and use TLS 1.2 or later. JSON is the baseline response format; JSON-LD and XML are also accepted.",[11,622,623,624,628],{},"The guide describes only one caller, the Registry itself. It does not cover how authorities, recyclers or other parties with a legitimate interest will authenticate, so you will need a separate answer for them; our guide to ",[37,625,627],{"href":626},"\u002Fguides\u002Fdigital-product-passport-access-rights\u002F","Digital Product Passport access rights"," covers who is entitled to what. Unique operator identifiers are not yet processed either; the guide plans them for a future version.",[630,631,633],"h3",{"id":632},"where-gs1-digital-link-fits","Where GS1 Digital Link fits",[11,635,636,637,640],{},"The Registry follows redirects, at most three across the whole resolution, and it resolves the UPI and every redirect without credentials, so each step must be publicly reachable. That is compatible with a resolver. A GS1 Digital Link URI on your own domain, such as ",[170,638,639],{},"https:\u002F\u002Fid.yourbrand.com\u002F01\u002F09520123456788\u002F21\u002FSN0001",", is one way to give each battery a persistent HTTPS identifier that leads to its passport and also works as the QR code on the product. It is not required; any stable HTTPS URL meets the API's format rule. If you use a resolver, count the hops: a chain from QR domain to resolver to hosting provider to final URL already uses all three. The guide also advises avoiding redirects after authentication, so the authorised request should land directly on the passport.",[43,642,644],{"id":643},"which-data-models-does-the-registry-validate-against","Which data models does the Registry validate against?",[11,646,647],{},"The Semantic Data Artifacts ZIP contains the models the Registry checks. Only two exist today: a core model and a batteries model, both 1.0.0, with sub-group schemas for EV, LMT and industrial batteries. Each comes as JSON Schema (draft 2020-12), JSON-LD contexts, SHACL shapes and SKOS vocabularies, plus a DCAT-AP catalogue. The guide also describes XSD, which is not shipped in this release.",[11,649,650,651,654,655,431,658,431,661,664],{},"The schemas are split by access level: a public view (",[170,652,653],{},"pub",") and three restricted views (",[170,656,657],{},"res1",[170,659,660],{},"res2",[170,662,663],{},"res3","). Your passport has to present the right fields to the right requester, and the schema tells you which fields sit where. The ZIP also includes sample instances that conform to each schema, which make a good first test fixture.",[11,666,667,668,672,673,677],{},"Four serialisations are described (JSON, JSON-LD, XML and RDF), but JSON is the only one mandatory for registration, in line with EN 18216:2026. The guide also cites EN 18223:2026 on interoperability. We explain both standards in ",[37,669,671],{"href":670},"\u002Fguides\u002Fcen-dpp-standards\u002F","the CEN DPP standards guide",", and why structured data matters in our guide to the ",[37,674,676],{"href":675},"\u002Fguides\u002Fmachine-readable-digital-product-passport\u002F","machine-readable Digital Product Passport",". Article 12 of the Implementing Regulation adds that the semantic repository is free to use and has public APIs.",[43,679,681],{"id":680},"what-does-the-battery-guidance-v32-add","What does the battery guidance v3.2 add?",[11,683,475,684,689],{},[37,685,688],{"href":686,"rel":687},"https:\u002F\u002Fsingle-market-economy.ec.europa.eu\u002Fsingle-market\u002Fdigital-product-passport\u002Fbatteries_en",[54],"Guidance Document: Digital Batteries Passport, data points by category",", version 3.2 of 19 October 2026, lists 71 data points for EV, LMT and industrial batteries. It is guidance and says itself that it is not legally binding; the obligations come from the Battery Regulation (EU) 2023\u002F1542.",[11,691,692,693,397,695,698],{},"For each data point and battery category, it gives a status: mandatory; optional, to be filled if the data is available; if applicable; only for certain battery types; or not to be filled or displayed as of February 2027. That last status is the useful one for planning. The carbon footprint declaration and label, for example, are marked as not to be filled in February 2027 because their format still awaits an implementing act, and the instructions for use are on hold pending the Omnibus. Each data point also carries an access level: public, restricted to persons with a legitimate interest, notified bodies, Member State authorities and the Commission, or narrower restricted levels. Those levels are what the ",[170,694,653],{},[170,696,697],{},"res"," schema views implement.",[11,700,701,702,706],{},"Our ",[37,703,705],{"href":704},"\u002Fguides\u002Fbattery-passport\u002F","battery passport guide"," covers the legal requirements. For the integration work, use v3.2 as the mapping sheet between your product data and the schema fields.",[43,708,710],{"id":709},"what-is-decided-and-what-is-still-open","What is decided, and what is still open?",[11,712,713],{},"Decided: the endpoints, the authentication model, the atomic batch rule, polling, the batteries data model and the requirement that passports be live at submission. Verification by qualified seal is in the Implementing Regulation itself.",[11,715,716],{},"Still open as of November 2026: how registration by verified third parties on an operator's behalf will work technically, data models for anything other than batteries, the carbon footprint format, how other parties authenticate against self-hosted passports, and unique operator identifiers. The Implementing Regulation also covers construction products, toys and detergents, which have no data model yet; for products other than batteries, obligations start at least 18 months after each delegated act. Member States must name their national registry administrators by 18 February 2027 (Article 7).",[43,718,720],{"id":719},"rough-edges-in-the-version-10-documents","Rough edges in the version 1.0 documents",[11,722,723],{},"A first release always has inconsistencies, and these are worth knowing before you write code:",[18,725,726,741,744,755],{},[21,727,728,729,732,733,736,737,740],{},"The Service Account guide gives the API base as ",[170,730,731],{},"reg.product-passport.ec.europa.eu",", while the OpenAPI files use ",[170,734,735],{},"registry.product-passport.ec.europa.eu"," (and ",[170,738,739],{},"registry.acc.product-passport.ec.europa.eu"," for acceptance). Confirm the current value in the Registry before you configure production.",[21,742,743],{},"The 100-item limit is stated in the guide but not enforced in the OpenAPI schema, so a client generated from the schema will happily build a 101-item request.",[21,745,746,747,750,751,754],{},"The integration guide says errors return the identifier as ",[170,748,749],{},"traceId",", while the OpenAPI error schema calls it ",[170,752,753],{},"correlationId",". Log both.",[21,756,757,758,761,762,765],{},"The API uses the sub-group code ",[170,759,760],{},"EV",", while the semantic artefacts use ",[170,763,764],{},"evb"," in their paths. Map them explicitly.",[11,767,768],{},"None of these blocks integration, but recheck them with each new version of the documents.",[43,770,772],{"id":771},"what-to-do-now","What to do now",[774,775,776,782,788,794,800,806,812,818],"ol",{},[21,777,778,781],{},[14,779,780],{},"Get a qualified electronic seal"," from a qualified trust service provider, if your company does not already hold one, and verify your organisation in the Registry. This has the longest lead time of anything on this list.",[21,783,784,787],{},[14,785,786],{},"Enrol in the acceptance environment"," and name an administrator who can create service accounts.",[21,789,790,793],{},[14,791,792],{},"Decide where the passports live:"," on your own server, which then has to implement the self-hosted authentication rules, or with a provider that already does.",[21,795,796,799],{},[14,797,798],{},"Fix your UPIs."," Choose a stable HTTPS URL pattern for each battery, decide on item, batch or model granularity, and count the redirects in the chain.",[21,801,802,805],{},[14,803,804],{},"Map your data to v3.2 and the batteries schemas,"," field by field, including the public and restricted views. Mark what is not required in February 2027 so nobody wastes time on it.",[21,807,808,811],{},[14,809,810],{},"Validate locally before you submit,"," against the shipped JSON Schemas, and design batches so one bad record does not hold back the rest.",[21,813,814,817],{},[14,815,816],{},"Build the client properly:"," EC keys in an HSM, token refresh, idempotency keys you can reproduce, Fibonacci polling, and storage of every proof of registration.",[21,819,820,823],{},[14,821,822],{},"Run a full test in acceptance"," well before 18 February 2027, including a failed batch and a key rotation.",[11,825,826,827,831],{},"Digital Link is a GS1 solution partner, and our platform builds battery and product passports on a persistent GS1 Digital Link identifier per product, with public and restricted data served from the same record. We are preparing our own Registry integration. That involves three separate steps: obtaining our qualified electronic seal, completing our verification in the Registry, and building and testing the API connection. We are not connected to the Registry yet. If you want to plan your Registry integration, or check whether your passport data will pass validation, ",[37,828,830],{"href":829},"mailto:support@digital-link.com","get in touch"," and our team will review your case.",[43,833,835],{"id":834},"frequently-asked-questions","Frequently asked questions",[630,837,839],{"id":838},"is-the-dpp-registry-api-mandatory","Is the DPP Registry API mandatory?",[11,841,842],{},"No. Article 8(6) of Implementing Regulation (EU) 2026\u002F1778 allows registration through the user interface or the API. In practice, anyone registering more than a handful of passports will want the API.",[630,844,846],{"id":845},"does-the-registry-store-my-passport-data","Does the Registry store my passport data?",[11,848,849],{},"No. It fetches the passport from its URL at submission to validate it, and the integration guide states that it does not persist the fetched content. The passport stays where you host it, which is why it has to be reachable at submission.",[630,851,853],{"id":852},"can-i-use-an-rsa-key-or-a-client-secret-for-my-service-account","Can I use an RSA key or a client secret for my service account?",[11,855,856,857,859],{},"No. Service accounts authenticate with ",[170,858,226],{}," using elliptic-curve keys (ES256, ES384 or ES512). Shared client secrets and RSA keys are not supported.",[630,861,863],{"id":862},"what-happens-if-one-passport-in-a-batch-fails-validation","What happens if one passport in a batch fails validation?",[11,865,866,867,869],{},"The whole submission fails and none of its passports is registered. The task completes with outcome ",[170,868,452],{},", and the per-item results tell you which items caused it. Fix them and resubmit with a new idempotency key.",[630,871,873],{"id":872},"do-i-need-gs1-digital-link-to-register-a-passport","Do I need GS1 Digital Link to register a passport?",[11,875,876],{},"No. The unique product identifier must be an HTTPS URL that resolves to the passport. A GS1 Digital Link URI on your own domain is one way to meet that, and doubles as the product's QR code, but any stable HTTPS URL is accepted.",[630,878,880],{"id":879},"when-do-battery-passports-have-to-be-registered","When do battery passports have to be registered?",[11,882,883],{},"For EV batteries, LMT batteries and industrial batteries over 2 kWh, the battery passport obligation under Regulation (EU) 2023\u002F1542 applies from 18 February 2027. The Registry and its acceptance environment are open now, so there is time to test first.",[885,886,887],"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);}",{"title":283,"searchDepth":302,"depth":302,"links":889},[890,891,892,893,894,895,898,899,900,901,902,903],{"id":45,"depth":296,"text":46},{"id":157,"depth":296,"text":158},{"id":183,"depth":296,"text":184},{"id":219,"depth":296,"text":220},{"id":272,"depth":296,"text":273},{"id":602,"depth":296,"text":603,"children":896},[897],{"id":632,"depth":302,"text":633},{"id":643,"depth":296,"text":644},{"id":680,"depth":296,"text":681},{"id":709,"depth":296,"text":710},{"id":719,"depth":296,"text":720},{"id":771,"depth":296,"text":772},{"id":834,"depth":296,"text":835,"children":904},[905,906,907,908,909,910],{"id":838,"depth":302,"text":839},{"id":845,"depth":302,"text":846},{"id":852,"depth":302,"text":853},{"id":862,"depth":302,"text":863},{"id":872,"depth":302,"text":873},{"id":879,"depth":302,"text":880},null,"The DPP Registry API specs are out. How registration, service accounts and self-hosted passports work, and what battery makers must do before 18 Feb 2027.","md","DPP Registry API: how to register battery passports with the EU, step by step","Two engineers in a battery test lab, one pointing at a laptop while the other holds a battery module with a small QR code label","article",{},"\u002Fimages\u002F2026\u002F11\u002Fdpp-registry-api-hero.webp","\u002Fguides\u002Fdpp-registry-api","2026-11-10T13:00:00+01:00",{"title":5,"description":912},"\u002Fguides\u002Fdpp-registry-api\u002F","guides\u002Fdpp-registry-api","BZ5RJN8--I-6pWpnzM5xPk-R3BkImMuXZulnGHmiskU",[926,933,939],{"path":927,"sourcePath":928,"title":929,"heading":930,"ogImage":931,"publishedAt":932},"\u002Fguides\u002Fagentic-commerce","\u002Fguides\u002Fagentic-commerce\u002F","Agentic commerce: how AI agents buy and what products need","Agentic commerce: how AI agents buy, and what your product needs","\u002Fimages\u002F2026\u002F11\u002Fagentic-commerce-hero.webp","2026-11-03T12:13:00+01:00",{"path":934,"sourcePath":675,"title":935,"heading":936,"ogImage":937,"publishedAt":938},"\u002Fguides\u002Fmachine-readable-digital-product-passport","The machine-readable Digital Product Passport, explained","The machine-readable Digital Product Passport: what the ESPR requires, and why AI agents will read it","\u002Fimages\u002F2026\u002F11\u002Fmachine-readable-digital-product-passport-hero.webp","2026-11-02T11:00:00+01:00",{"path":940,"sourcePath":941,"title":942,"heading":943,"ogImage":944,"publishedAt":945},"\u002Fguides\u002Fproduct-authentication-for-ai-agents","\u002Fguides\u002Fproduct-authentication-for-ai-agents\u002F","Product authentication for AI agents: what can be verified","Product authentication for AI agents: how an agent checks that a product is genuine","\u002Fimages\u002F2026\u002F11\u002Fproduct-authentication-for-ai-agents-hero.webp","2026-10-30T12:13:00+01:00",1794322837202]