TracePass
Passports

Check 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.

GET/api/v1/passports/{id}/registry-readiness
Download OpenAPI 3.1
GET/api/v1/passports/{id}/registry-readiness

Check 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."
    }
  ]
}