---
title: Verificare la conformità del passaporto
description: Verdetto di conformità a tre livelli per un passaporto, con findings che citano il regolamento — verifica delle lacune, correzione, ri-verifica.
canonical: "https://www.tracepass.eu/it/docs/passport-compliance"
locale: it
source: "https://www.tracepass.eu/it/docs/passport-compliance"
---

# Verificare la conformità del passaporto

> Verdetto di conformità a tre livelli per un passaporto, con findings che citano il regolamento — verifica delle lacune, correzione, ri-verifica.

```http
GET /api/v1/passports/{id}/compliance
```

Restituisce un verdetto di conformità a tre livelli per un passaporto — `compliant`, `compliant_with_warnings` o `incomplete` — insieme a findings che citano il regolamento, così un'integrazione può verificare le lacune di un passaporto, correggere le lacune indicate e richiamare per confermare. Quella catena leggere → correggere → verificare è lo scopo: la risposta indica all'agente IA esattamente cosa impostare in seguito.

I findings provengono da tre livelli. **Static**: i campi obbligatori del template mancanti o non approvati, e gli operatori economici obbligatori non impostati, sono `critical`; i valori dei campi che violano il formato del template (pattern / enum / limiti) sono `warning`. **Conditional**: regole per categoria in vigore oggi — l'ambito del passaporto della batteria ai sensi del Regolamento (UE) 2023/1542 art. 77, la comunicazione SVHC ai sensi di REACH art. 33 / SCIP, la dichiarazione di prestazione ai sensi del Regolamento (UE) 2024/3110 — più la regola trasversale secondo cui un prodotto immesso sul mercato UE da un fabbricante extra-UE necessita di un operatore stabilito nell'UE (Regolamento (UE) 2019/1020 art. 4).

**Leggete `conditionalCoverage`.** È `evaluated` quando le regole conditional sono state eseguite per questa categoria, o `static-only` quando nessuna regola conditional vincolante è ancora in vigore (oggi 8 delle 12 categorie). Quando è `static-only`, l'assenza di findings conditional NON significa che la categoria non avrà requisiti futuri — solo che nessuno è ancora giuridicamente vincolante. Un finding con tag `unverifiable_conditional` significa che una regola si applica ma i dati necessari per valutarla (es. categoria della batteria, contenuto SVHC) non sono sul passaporto — verificatelo manualmente. Sola lettura; conta come una lettura di passaporto v1 rispetto al limite giornaliero.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Authorization` | header | string | yes | `Bearer <api-key>`. |
| `id` | path | ObjectId | yes | ID del passaporto. |

## Examples

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

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

if (verdict.verdict === "incomplete") {
  // Each critical finding names the field/party to set and cites the regulation.
  for (const f of verdict.critical) {
    console.log(`${f.target}: ${f.why} (${f.regulation ?? ""} ${f.article ?? ""})`);
  }
}
```

```python
import os, requests
res = requests.get(
    f"https://app.tracepass.eu/api/v1/passports/{passport_id}/compliance",
    headers={"Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}"},
)
res.raise_for_status()
verdict = res.json()
for f in verdict["critical"]:
    print(f["target"], "—", f["why"], f.get("regulation", ""), f.get("article", ""))
```

## Responses

### 200 — incomplete

```json
{
  "verdict": "incomplete",
  "category": "battery",
  "conditionalCoverage": "evaluated",
  "critical": [
    {
      "type": "conditional_missing",
      "severity": "critical",
      "target": "batteryUniqueIdentifier",
      "regulation": "(EU) 2023/1542",
      "article": "Art. 77",
      "ruleId": "BAT-1",
      "why": "This is an in-scope battery (EV); a battery passport with its unique identifier is mandatory.",
      "fix": "Provide batteryUniqueIdentifier — the battery passport's unique identifier (GS1 Digital Link)."
    }
  ],
  "warnings": [],
  "checkedRules": ["static:required-fields", "static:required-parties", "static:format", "BAT-1", "CC-1"],
  "completionPercentage": 72
}
```

### 200 — compliant

```json
{
  "verdict": "compliant",
  "category": "furniture",
  "conditionalCoverage": "static-only",
  "critical": [],
  "warnings": [],
  "checkedRules": ["static:required-fields", "static:required-parties", "static:format", "CC-1"],
  "completionPercentage": 100
}
```

### 404 — Non trovato

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

## Related

- [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)
- [Impostare un operatore economico](https://www.tracepass.eu/it/docs/upsert-party.md)
