/api/v1/passports/{id}/registry-readinessCheck passport registry readiness
Returns whether a passport would pass the EU DPP Registry's formal submission gate — { ready, findings[] }. This is the registry's *mechanical* pre-submission check, distinct from and complementary to the substantive /compliance verdict: a passport can be registry-ready yet not substantively compliant, and vice-versa. Call it before submitting to the registry to catch formal gaps early.
Six formal checks, each carried on the standard finding shape with a REG-READY-* ruleId. REG-READY-MANDATORY: every mandatory field that applies to this battery type is present and approved — applicability-aware, so a field not applicable to the battery's category (e.g. state-of-certified-energy on a non-EV battery) is not counted as missing, and an unknown-applicability field surfaces as a warning, not a block. REG-READY-FORMAT: filled fields are well-formed (types, enums, patterns, ranges). REG-READY-LINK: the address the Registry would be given resolves — the address frozen when a registration was prepared (registryUpi), otherwise the passport's current public address. A live probe; on an unpublished passport this is an advisory warning rather than a block, since the preflight is meant to run before publishing. REG-READY-GRANULARITY: the passport carries a serial number — batteries register at item-level granularity, so a missing serial is a block. REG-READY-COMMODITY: the commodity code (CN/TARIC) is well-formed where the category carries one; batteries carry no commodity code, so for batteries this is an advisory warning only, never a block. REG-READY-SEMANTIC: for electric-vehicle, light-means-of-transport and industrial batteries over 2 kWh, the passport's data is checked against the Commission's battery data model (semantic package 1.0.0), the model the Registry validates submissions against. A missing or malformed value in the public information is a block; a gap in the restricted information (Battery Regulation Annex XIII points 2–4) is a warning. A missing EU Registry organisation identifier (an account setting) or an unrecognised battery category is also a block. Portable, SLI and industrial batteries of 2 kWh or less fall outside the Commission's model and get no finding from this check.
ready is true only when there are zero critical findings; warnings never block readiness. Battery passports only in this version — a non-battery passport returns ready: true with a single REG-READY-SCOPE warning, because the registry's formal gate for other categories isn't modelled yet. Read-only; counts as one v1 passport read against the daily cap.
Path parameters
- idrequired
string (24 hex chars)
Passport ID.
Headers
- Authorizationrequired
string
Bearer <token>— either atp_API key (Developer → API Keys; simplest, for server-to-server) or an OAuth 2.0 access token (Developer → OAuth Apps; for user-authorized apps, scoped + revocable). The Authentication page has the full OAuth flow and scope list.e.g. Bearer tp_REDACTED_xxxxxxxxxxxx
Request
curl -sS \
https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/registry-readiness \
-H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx"Response
{
"ready": false,
"findings": [
{
"type": "missing_field",
"severity": "critical",
"target": "batteryUniqueIdentifier",
"ruleId": "REG-READY-MANDATORY",
"why": "A mandatory field that applies to this battery is missing.",
"fix": "Provide batteryUniqueIdentifier before submitting to the registry."
},
{
"type": "unverifiable_conditional",
"severity": "warning",
"target": "https://id.tracepass.eu/p/01/...",
"ruleId": "REG-READY-LINK",
"why": "This passport isn't published yet, so the registry link can't be checked live."
}
]
}