---
title: Verificare la prontezza per il registro
description: "Verifica se un passaporto supererebbe il gate formale di invio dell'EU DPP Registry — campi obbligatori, formato e un link risolvibile. Solo batterie."
canonical: "https://www.tracepass.eu/it/docs/passport-registry-readiness"
locale: it
source: "https://www.tracepass.eu/it/docs/passport-registry-readiness"
---

# Verificare la prontezza per il registro

> Verifica se un passaporto supererebbe il gate formale di invio dell'EU DPP Registry — campi obbligatori, formato e un link risolvibile. Solo batterie.

```http
GET /api/v1/passports/{id}/registry-readiness
```

Restituisce se un passaporto supererebbe il **gate formale di invio dell'EU DPP Registry** — `{ ready, findings[] }`. È il controllo *meccanico* del registro prima dell'invio, distinto da e complementare al verdetto sostanziale `/compliance`: un passaporto può essere pronto per il registro senza essere sostanzialmente conforme, e viceversa. Chiamalo prima dell'invio al registro per individuare presto le lacune formali.

Tre controlli formali, ciascuno portato sulla forma finding standard con un `ruleId` `REG-READY-*`. **`REG-READY-MANDATORY`**: ogni campo obbligatorio applicabile a questo tipo di batteria è presente e approvato — consapevole dell'applicabilità, così un campo non applicabile alla categoria della batteria (es. state-of-certified-energy su una batteria non-EV) non è conteggiato come mancante, e un campo con applicabilità `unknown` appare come warning, non come blocco. **`REG-READY-FORMAT`**: i campi compilati sono ben formati (tipi, enum, pattern, limiti). **`REG-READY-LINK`**: il link pubblico del passaporto si risolve — una prova dal vivo; su un passaporto non pubblicato questo è un warning consultivo anziché un blocco, poiché il preflight è pensato per essere eseguito prima della pubblicazione.

`ready` è `true` solo quando non ci sono findings critici; i warning non bloccano mai la prontezza. **Solo passaporti di batterie** in questa versione — un passaporto non-batteria restituisce `ready: true` con un singolo warning `REG-READY-SCOPE`, poiché il gate formale del registro per le altre categorie non è ancora modellato. Sola lettura; conta come una lettura di passaporto v1 rispetto al limite giornaliero.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Authorization` | header | string | yes | `Bearer <token>` — una chiave API `tp_` (Developer → API Keys; più semplice, per server-to-server) oppure un access token OAuth 2.0 (Developer → OAuth Apps; per app autorizzate dall'utente, scoped e revocabili). La pagina Authentication contiene il flusso OAuth completo e l'elenco degli scopes. |
| `id` | path | ObjectId | yes | ID del passaporto. |

## Examples

```bash
curl -sS \
  https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/registry-readiness \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx"
```

```typescript
const res = await fetch(
  `https://app.tracepass.eu/api/v1/passports/${id}/registry-readiness`,
  { headers: { Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}` } },
);
const result = await res.json();

if (!result.ready) {
  // Each critical finding names the formal gap that blocks registry submission.
  for (const f of result.findings.filter((x) => x.severity === "critical")) {
    console.log(`${f.ruleId}: ${f.target ?? ""} — ${f.why}`);
  }
}
```

```python
import os, requests
res = requests.get(
    f"https://app.tracepass.eu/api/v1/passports/{passport_id}/registry-readiness",
    headers={"Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}"},
)
res.raise_for_status()
result = res.json()
if not result["ready"]:
    for f in [x for x in result["findings"] if x["severity"] == "critical"]:
        print(f["ruleId"], f.get("target", ""), "—", f["why"])
```

## Responses

### 200 — not ready

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

### 200 — ready

```json
{
  "ready": true,
  "findings": []
}
```

### 404 — Non trovato

```json
{ "error": "Passport not found" }
```

## Related

- [Verdetto di conformità](https://www.tracepass.eu/it/docs/passport-compliance.md)
- [Leggere un singolo passaporto](https://www.tracepass.eu/it/docs/get-passport.md)
- [Aggiornare un campo](https://www.tracepass.eu/it/docs/update-field.md)
