read_only_fieldHTTP 400Die Anfrage setzt ein Feld, das der Server bestimmt
Der Rumpf enthält ein Feld, das entweder der Datenbank gehört (`id`, `createdAt`, `updatedAt`) oder aus anderen Werten ABGELEITET wird (`packagePriceGrossCents` aus Netto und Satz, `totalCostCents` aus den Zutaten, `stockTotal` aus allen Lagern). Solche Felder werden abgelehnt statt ignoriert — sonst glaubte der Aufrufer, er habe den Bruttopreis gesetzt, und zwei Quellen für dieselbe Zahl liefen auseinander, ohne dass es jemandem auffällt.
Wiederholen?
Nein — unverändertes Wiederholen ergibt genau dieselbe Antwort. Die Anfrage muss sich ändern.
Woran es liegt
- Ein gelesener Datensatz wurde unverändert zurückgeschickt — der häufigste Fall: `GET`, ein Feld ändern, alles wieder `PATCH`en.
- Eine abgeleitete Zahl wurde mitgerechnet und mitgeschickt.
Was zu tun ist
Schicken Sie nur die Felder, die Sie wirklich ändern. `fields` im Körper nennt die beanstandeten Namen; entfernen Sie genau diese aus dem Rumpf.
Zusätzliche Felder im Körper
Neben error, message, docs und requestId, die jede Fehlerantwort trägt:
fieldsissuesWo dieser Fehler entsteht
- POST /api/v1/reservationsDer Rumpf setzt ein Feld, das der Server bestimmt — `startsAt`, `durationMin`, `depositAmount`, `notify`, `force` und weitere.
- PATCH /api/v1/reservations/{id}Der Rumpf enthält `status` (das läuft über die eigene Route) oder ein anderes vom Server bestimmtes Feld.
- POST /api/v1/reservations/{id}/statusDer Rumpf enthält ein Feld, das der Server bestimmt.
- POST /api/v1/guestsDer Rumpf enthält ein abgeleitetes Feld (`totalVisits`, `totalSpent`, `noShowCount`, `privacyConsentAt`, `newsletterConfirmedAt`, ein Token …). Die Meldung nennt je Feld den Grund.
- PATCH /api/v1/guests/{id}Ein abgeleitetes Feld im Rumpf.
- POST /api/v1/suppliersDer Rumpf enthält `id`, `createdAt` oder `updatedAt` — die gehören der Datenbank.
- PATCH /api/v1/suppliers/{id}`id`, `createdAt` oder `updatedAt` im Rumpf.
- POST /api/v1/raw-materials`packagePriceGrossCents`, `stockTotal`, `id`, `createdAt` oder `updatedAt` stehen im Rumpf. Alle fünf bestimmt der Server.
- PATCH /api/v1/raw-materials/{id}`packagePriceGrossCents` oder `stockTotal` im Rumpf — der klassische Fall „gelesenen Datensatz unverändert zurückgeschickt".
- POST /api/v1/recipes`totalCostCents`, `ingredientCount`, `stepCount` oder `productCount` im Rumpf — alle vier rechnet der Server.
- PATCH /api/v1/recipes/{id}`totalCostCents`, `ingredientCount`, `stepCount` oder `productCount` im Rumpf.
- PUT /api/v1/warehouse-stock`id`, `createdAt` oder `updatedAt` stehen im Rumpf.