---
title: Impostare i flag di classificazione condizionale
description: Imposta o cancella i flag di classificazione condizionale. Approvare un flag può rendere obbligatori i campi e bloccare la pubblicazione se vuoti.
canonical: "https://www.tracepass.eu/it/docs/set-condition-flags"
locale: it
source: "https://www.tracepass.eu/it/docs/set-condition-flags"
---

# Impostare i flag di classificazione condizionale

> Imposta o cancella i flag di classificazione condizionale. Approvare un flag può rendere obbligatori i campi e bloccare la pubblicazione se vuoti.

```http
PATCH /api/v1/passports/{id}/condition-flags
```

Scrive uno o più condition flag su un passaporto. Il corpo della richiesta è `Record<flagKey, boolean | null>` — `true` o `false` imposta il flag; `null` lo cancella. Vengono accettate solo le chiavi registrate per la categoria del passaporto; chiavi sconosciute restituiscono 400 con le chiavi valide per quella categoria.

**Attenzione: approvare un flag può rendere obbligatori campi precedentemente facoltativi.** Per i passaporti delle batterie, `hasBMS: true` attiva i campi BMS dell'Allegato XIII 4(b); `rechargeable: true` attiva i campi di ciclo di carica e state-of-health ai sensi dell'art. 10, par. 1; `isStationaryBess: true` attiva i campi dell'Allegato VII Parti A e B. Se il passaporto è già pubblicato e quei campi sono vuoti, il successivo controllo di conformità solleverà finding critici `conditional_missing` — **compilare quei campi prima o immediatamente dopo aver impostato il flag**, altrimenti la ripubblicazione fallirà.

Le scritture v1 sono predefinite a `status: "approved"` (integrazione fidata). Ogni modifica a un flag viene scritta nel registro di audit interno del flag con `"via API key <prefix>"`. Il registro di audit completo è visibile nella dashboard ma rimosso da questa risposta. Supporta `Idempotency-Key`. Una forma alternativa di indirizzamento è disponibile su `PATCH /api/v1/passports/by-serial/{serial}/condition-flags` con le stesse forme di corpo e risposta. Conta come una scrittura 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. |
| `Idempotency-Key` | header | string | no | Chiave di idempotenza opzionale (UUID v4 o qualsiasi stringa opaca ≤ 64 caratteri). Stessa chiave + stesso corpo riproduce la risposta cached per 24 h. |

## Examples

```bash
curl -sS -X PATCH \
  https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/condition-flags \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"hasBMS": true, "rechargeable": true}'
```

```typescript
const res = await fetch(
  `https://app.tracepass.eu/api/v1/passports/${id}/condition-flags`,
  {
    method: "PATCH",
    headers: {
      Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}`,
      "Content-Type": "application/json",
      "Idempotency-Key": crypto.randomUUID(),
    },
    body: JSON.stringify({ hasBMS: true, rechargeable: true }),
  },
);
const { conditionProfile, version } = await res.json();
console.log("Updated profile:", conditionProfile, "version:", version);
```

```python
import os, uuid, requests
res = requests.patch(
    f"https://app.tracepass.eu/api/v1/passports/{passport_id}/condition-flags",
    headers={
        "Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={"hasBMS": True, "rechargeable": True},
)
res.raise_for_status()
data = res.json()
print("version:", data["version"])
for flag, info in data["conditionProfile"].items():
    print(flag, "→", info["value"], f"({info['status']})")
```

## Responses

### 200 — Flag aggiornati

```json
{
  "passportId": "6650b2c3d4e5f6a7b8c9d0e1",
  "conditionProfile": {
    "hasBMS": {
      "value": true,
      "status": "approved",
      "source": "api:tp_abc123"
    },
    "rechargeable": {
      "value": true,
      "status": "approved",
      "source": "api:tp_abc123"
    }
  },
  "version": 4
}
```

### 400 — Chiave flag sconosciuta

```json
{
  "error": "Unknown condition flag keys",
  "details": "Keys not registered for category \"battery\": unknownFlag"
}
```

### 402 — Pagamento richiesto

```json
{ "error": "Active subscription required" }
```

### 404 — Non trovato

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

## Related

- [Leggere i flag](https://www.tracepass.eu/it/docs/get-condition-flags.md)
- [Verificare la conformità](https://www.tracepass.eu/it/docs/passport-compliance.md)
