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.

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