---
title: Aggiornare un campo su un passaporto
description: Patch di un singolo campo con voce di audit. Default status approved; ai_suggested o supplier per instradare in coda di revisione.
canonical: "https://www.tracepass.eu/it/docs/update-field"
locale: it
source: "https://www.tracepass.eu/it/docs/update-field"
---

# Aggiornare un campo su un passaporto

> Patch di un singolo campo con voce di audit. Default status approved; ai_suggested o supplier per instradare in coda di revisione.

```http
PATCH /api/v1/passports/{id}/fields/{key}
```

Applica una patch a un singolo campo su un passaporto. Il valore viene convalidato rispetto alla chiave del campo (deve esistere nel template del passaporto) e persistito con una voce di traccia di controllo contrassegnata `via API key <prefix>`. Preferite questo alla scrittura dell'intera mappa `fields` quando dovete aggiornare un solo numero — è una scrittura più piccola e la voce di controllo per campo è ciò che vedono i revisori della dashboard.

Le scritture predefinite hanno `status: "approved"` — le integrazioni guidate da chiave API sono affidabili per convenzione (a differenza degli editor della dashboard, dove i non amministratori scrivono `pending_review`). Sovrascrivete con `source: "ai_suggested"` o `source: "supplier"` se volete che il valore finisca invece nella coda di revisione.

Esiste una forma di indirizzamento alternativa su PATCH /api/v1/passports/by-serial/{serial}/fields/{key} — stesso corpo, stessa risposta, utile quando il vostro ERP conosce solo il numero di serie lato cliente. Conta come una scrittura v1. Rispetta `Idempotency-Key`.

## 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. |
| `Idempotency-Key` | header | string | no | UUID v4 per operazione logica. |
| `id` | path | ObjectId | yes | ID del passaporto. Per indirizzare invece tramite numero di serie, usate PATCH /api/v1/passports/by-serial/{serial}/fields/{key}. |
| `key` | path | string | yes | Chiave del campo (camelCase) come definita nel template del passaporto — es. `nominalVoltage`, `batteryChemistry`, `recycledContentCobalt`. 400 se la chiave non è nel template. |
| `value` | body | string \| number \| boolean \| array \| object | yes | Nuovo valore. La piattaforma non riformatta le stringhe in numeri — inviate il valore nel tipo che il campo del template si aspetta. |
| `source` | body | enum | no | Contrassegna l'origine del valore. Uno tra: `manual`, `ai_suggested`, `ai_approved`, `reference_db`, `supplier`, `system`. Predefinito `manual`. `ai_suggested` e `supplier` finiscono nella coda di revisione; tutto il resto viene scritto come approved. |
| `sourceLocale` | body | string (ISO 639-1) | no | Locale del valore (uno dei 24 locale dell'UE). Governa la direzione della traduzione + la risoluzione della lingua del visualizzatore pubblico. Per impostazione predefinita è il `sourceLocale` del passaporto quando omesso. |

## Examples

```bash
curl -sS -X PATCH \
  https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/fields/ratedCapacity \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ "value": 5.24 }'
```

```typescript
await fetch(
  `https://app.tracepass.eu/api/v1/passports/${id}/fields/ratedCapacity`,
  {
    method: "PATCH",
    headers: {
      Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ value: 5.24 }),
  },
);
```

```python
import os, requests
res = requests.patch(
    f"https://app.tracepass.eu/api/v1/passports/{passport_id}/fields/ratedCapacity",
    headers={"Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}"},
    json={"value": 5.24},
)
res.raise_for_status()
```

## Responses

### 200 — Aggiornato

```json
{
  "field": {
    "value": 5.24,
    "source": "manual",
    "status": "approved",
    "accessLevel": "public",
    "sourceLocale": "en",
    "lastUpdatedAt": "2026-05-09T10:30:00.000Z",
    "lastUpdatedBy": "api_key:tp_89b2482d"
  },
  "version": 4
}
```

### 400 — Chiave di campo non valida

```json
{ "error": "Invalid field key: notARealField" }
```

### 404 — Non trovato

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

## Related

- [Creare un passaporto](https://www.tracepass.eu/it/docs/create-passport.md)
- [Collegare una parte operatore economico](https://www.tracepass.eu/it/docs/upsert-party.md)
