data_validation_error
HTTP 422 · code: "data_validation_error" · type: https://docs.formfeed.dev/errors/data-validation
Das Rendering hat validate_data: true verlangt, und seine data passen nicht zum Datenschema, das mit der Vorlagenversion gespeichert ist. Formfeed prüft die Daten nur, wenn ein Rendering oder Batch-Element das mit validate_data: true verlangt; ohne das werden die Daten gar nicht gegen das Schema geprüft.
Die Prüfung läuft, bevor etwas gerendert, aufgezeichnet oder gezählt wird; die fehlgeschlagene Anfrage kostet also nichts. errors führt jede Stelle auf, an der die Daten nicht passen, jeweils mit path und message; detail wiederholt die erste und sagt, wie viele weitere es gibt. In einem Batch beginnt detail mit dem Element (Item 3: …), index nennt es, failing_items sagt, wie viele Elemente derselben Vorlagenversion fehlschlugen, und es wird nichts eingereiht.
Beispiel
{
"type": "https://docs.formfeed.dev/errors/data-validation",
"title": "Data validation failed",
"status": 422,
"detail": "data.invoice.number: must be string (and 1 more)",
"code": "data_validation_error",
"errors": [
{
"path": "data.invoice.number",
"message": "data.invoice.number: must be string"
},
{
"path": "data.invoice.lines[0].qty",
"message": "data.invoice.lines[0].qty: is required"
}
],
"request_id": "req_4b7c1e9a2f3d4c5b8a6e7f9012"
}
Häufige Ursachen
- Ein Pflichtfeld fehlt, oder ein Feld hat den falschen Typ.
- Ein Wert gehört nicht zu den Werten, die ein
enumerlaubt (must be one of "draft", "sent"). - Ein Feld, das das Schema nicht erlaubt, wo es
additionalProperties: falsesetzt (is not allowed by the schema). - Die Daten wurden für eine ältere Version der Vorlage gebaut, und das Schema der veröffentlichten Version hat sich geändert.
So beheben Sie es
- Korrigieren Sie die Felder, die
errorsnennt. Pfade beginnen beidata,data.invoice.lines[0].qtyist alsoqtyin der ersten Zeile. - Vergleichen Sie Ihre Daten mit
GET /v1/templates/{id}/schema, oder prüfen Sie sie ohne Rendering mitPOST /v1/templates/{id}/validate. - Erzeugen Sie mit
formfeed typesTypen aus dem Schema, damit Ihr Code keine Daten in falscher Form senden kann. Siehe Typisierte Vorlagendaten.
Eine Anfrage mit validate_data: true für eine Vorlagenversion ohne gespeichertes Schema, oder für html oder eine url, wird stattdessen mit invalid_request abgelehnt.
Wiederholen?
Nein. Dieselbe Anfrage erhält dieselbe Antwort. Korrigieren Sie die Daten, und senden Sie die Anfrage dann mit einem neuen Idempotency-Key oder ohne: Eine 4xx-Antwort wird 24 Stunden unter ihrem Schlüssel gespeichert, der alte Schlüssel liefert also wieder dieses Problem. Siehe Wiederholen.