/api/v1/passports/{id}/fields/{key}Einzelnes Feld in einem Pass aktualisieren
Patcht ein einzelnes Feld auf einem Pass. Der Wert wird gegen den Feldschlüssel validiert (muss in der Vorlage des Passes vorhanden sein) und mit einem Audit-Trail-Eintrag persistiert, der die Zugangsdaten nennt (`via API key <prefix>` oder `via OAuth app <client>`) und, wenn der Header `X-Source` gesetzt ist, den aufrufenden Client, z. B. `(mcp)`. Bevorzugen Sie das gegenüber dem Schreiben der gesamten `fields`-Karte, wenn Sie nur eine Zahl aktualisieren müssen — das ist ein kleinerer Schreibvorgang und der Audit-Eintrag ist das, was Dashboard-Prüfer sehen.
Der Status richtet sich danach, wer schreibt, nicht nach dem Kanal. Ein API-Schlüssel schreibt `status: "approved"` (er ist ein unternehmensweites Dienstkonto). Ein OAuth-Token schreibt mit den Dashboard-Rechten seines Nutzers, eine Rolle unterhalb von Admin landet also in `pending_review`. Ein mit `source: "ai_suggested"` gesendeter Wert landet immer in `pending_review` und wird mit 400 abgelehnt, wenn das Feld nur vom Wirtschaftsakteur erklärt oder gemessen werden darf (z. B. `stateOfHealth` einer Batterie); senden Sie ihn mit einer anderen Quelle, wenn Ihre Organisation diese Angabe macht. `ai_approved` und `system` setzt TracePass; als Anfragewerte werden sie abgelehnt.
Eine alternative Adressierungsform existiert unter PATCH /api/v1/passports/by-serial/{serial}/fields/{key} — gleicher Body, gleiche Antwort, nützlich wenn Ihr ERP nur die kundenseitige Seriennummer kennt. Zählt als ein v1-Schreibvorgang. Unterstützt Idempotency-Key.
Pfad-Parameter
- iderforderlich
ObjectId
Pass-ID. Adressierung per Seriennummer: PATCH /api/v1/passports/by-serial/{serial}/fields/{key}.
e.g. 6650b2c3d4e5f6a7b8c9d0e1
- keyerforderlich
string
Feldschlüssel (camelCase) wie in der Vorlage des Passes definiert — z. B. `nominalVoltage`, `batteryChemistry`, `recycledContentCobalt`. 400, wenn der Schlüssel nicht in der Vorlage existiert.
e.g. ratedCapacity
Header
- Authorizationerforderlich
string
`Bearer <token>` — entweder ein `tp_` API-Schlüssel (Developer → API Keys; am einfachsten, für Server-zu-Server) oder ein OAuth-2.0-Access-Token (Developer → OAuth Apps; für nutzerautorisierte Apps, scoped und widerrufbar). Die Authentication-Seite enthält den vollständigen OAuth-Flow und die Scope-Liste.
e.g. Bearer tp_REDACTED_xxxxxxxxxxxx
- Idempotency-Key
string
UUID v4 pro logischer Operation.
Body-Felder
- valueerforderlich
string | number | boolean | array | object
Neuer Wert. Die Plattform formatiert keine Strings in Zahlen um — senden Sie den Wert im erwarteten Feldtyp.
e.g. 5.24
- source
enum
Markiert den Ursprung des Werts. Einer von: `manual`, `ai_suggested`, `reference_db`, `supplier`. Standard `manual`. `ai_suggested` landet in der Prüf-Queue; die anderen werden mit den Rechten Ihrer Zugangsdaten geschrieben. `ai_approved` und `system` setzt TracePass; hier werden sie abgelehnt.
- sourceLocale
string (ISO 639-1)
Locale des Werts (eines der 24 EU-Locales). Steuert Übersetzungsrichtung + Sprachauflösung des öffentlichen Viewers. Standardmäßig der `sourceLocale` des Passes, wenn ausgelassen.
Anfrage
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 }'Antwort
{
"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
}