/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.
Three 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 passport's public link resolves — 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.
`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
ObjectId
Passport ID.
Headers
- Authorizationrequired
string
`Bearer <token>` — either a `tp_` 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."
}
]
}