CodamAIDocs
Themafertig

Die Fehlerantwort

Jeder Fehler von CRMS hat dieselbe Form: messageKey, code, layer und bei Bedarf violations. Welcher Schlüssel welchen Statuscode bekommt und wo alle Schlüssel stehen.

Ausprägungen
Fehler mit SchlüsselSchlüssel mit ParameternValidierung mit violations (validation-failed, payload-rejected)unbekannter Schlüssel, unerwarteter Fehler (internal-error)400, 401, 403, 404, 409, 410, 413, 415, 422, 500, 502, 503, 504

Worum es geht

Geht in CRMS etwas schief, bekommst du nie einen Satz zurück, sondern einen Schlüssel. Ein Schlüssel ist ein fester Name in kebab-case, also klein geschrieben mit Bindestrichen, zum Beispiel template-not-found. Das Frontend übersetzt ihn in die Sprache der Person, die vor dem Bildschirm sitzt.

Die Form

Anfrage
POST /crms/templates
{ "key": "audit-report", "outputType": "DOCUMENT" }
Fehlerantwort
422
{
  "messageKey": "validation-failed",  ← der Schlüssel
  "code": "422",                      ← der Statuscode, als Text
  "layer": "crms",                    ← wo abgelehnt wurde
  "violations": [                     ← nur bei Feldfehlern
    { "field": "scope", "rule": "required" },
    { "field": "defaultLocale", "rule": "required" }
  ]
}
FeldBedeutung
messageKeyder Schlüssel, Parameter hängen mit | dahinter
codeder HTTP-Statuscode als Text, zum Beispiel "404"
layerbei CRMS immer crms
violationsjedes verletzte Feld mit field und rule. Fehlt, wenn es keine gibt

Die Form heißt ErrorAnswer und ist für alle Module gleich. CDMS und CIAS antworten genauso, siehe Das Fehlerformat.

Schlüssel mit Parametern

Manche Schlüssel tragen Parameter: zusätzliche Werte, die dein Frontend in den übersetzten Text einsetzen kann. Sie stehen hinter dem Schlüssel, getrennt durch |.

messageKeyBedeutung
request-too-large|16777216der Körper ist größer als 16777216 Bytes
format-not-offered|DOCXdiese Installation bietet DOCX nicht an
template-scope-not-admitted|userder Scope USER ist hier nicht zugelassen

Ein Parameter nennt ein Feld, eine Grenze oder ein Format, nie einen Wert aus deiner Anfrage.

Feldfehler: violations

Zwei Schlüssel bringen eine Liste violations mit.

validation-failed
die Anfrage selbst
  • die HTTP-Schnittstelle prüft Form und Felder der Anfrage
  • Regeln required, invalid, not-allowed
  • Felder in Listen heißen z. B. content.assets[0].content
  • Pfadvariablen heißen wie im Pfad: edition, variant, revision
payload-rejected
die Daten für den Bericht
  • die Payload passt nicht zu den Feldregeln der Vorlage
  • Felder wie customer.name
  • Regeln wie required oder payload-too-large
  • dieselben Regeln wie /crms/render/validate
RegelBedeutung
requireddas Feld fehlt oder ist null. reference ist bei FINAL Pflicht
invalidder Wert passt nicht, hat den falschen JSON-Typ, ist keine UUID in Langform, oder ein Grund bei Dokumenten ist kein Schlüssel
not-allowedein unbekanntes Feld, oder pdfProfile bei einem anderen Format als PDF

Die Regeln der Payload stehen unter Die Payload-Prüfung.

Wie der Statuscode entsteht

Die Module von CRMS wissen nichts von HTTP. Sie werfen nur einen Schlüssel. Die HTTP-Schnittstelle von CRMS hat eine Tabelle, die jedem Schlüssel einen Statuscode gibt.

Fehler von CRMS?Schlüssel in der Tabelle?Antwort
jajader Schlüssel mit seinem Status aus der Tabelle
janeinder Schlüssel mit 500
nein–500 internal-error, ohne Text

Fehler, die Spring selbst meldet, etwa eine falsche HTTP-Methode oder ein anderer Content-Type als JSON beim Rendern, beantwortet Spring mit seinem eigenen Status.

Statuscodes und ihre Schlüssel

StatusBedeutungSchlüssel
400Körper ist kein JSONmalformed-json
401niemand angemeldetcrms-authentication-required
403Rolle fehlttemplate-write-denied, approval-role-missing, approval-author-excluded, document-access-denied
404nicht da oder nicht sichtbartemplate-not-found, document-not-found, document-key-unknown
409Zustand passt nichttemplate-edition-exists, template-variant-exists, template-draft-changed, template-draft-missing, template-review-pending, template-revision-not-in-review, approval-already-given, template-rollback-target-invalid, template-not-published, template-concurrent-change, document-revisions-disabled, transient-documents-disabled, journal-concurrent-change, document-retention-active, document-legal-hold-active, document-legal-hold-inactive, document-concurrent-change, document-locked
410gelöschtdocument-erased, document-key-destroyed
413Körper zu groß (Vorlagen, Dokumentgründe)request-too-large
415Kodierung nicht unterstütztcontent-encoding-unsupported
422Inhalt abgelehntvalidation-failed, payload-rejected, alle template-…-Regeln für Scope, Grund, Quelltext, Felder und Assets, template-syntax-error, template-render-failed, render-output-too-large, render-asset-unknown, format-not-offered, format-not-for-template, transient-requires-system-template, template-svg-rejected, template-svg-not-for-output-type, attachments-not-for-final, attachments-not-for-format, render-resource-refused, render-pdf-failed, render-word-invalid, render-word-failed, render-table-invalid, render-csv-single-sheet, render-mode-not-for-format
500Fehler im Betriebinternal-error, render-failed, timestamp-failed, timestamp-certificate-expired, document-key-unavailable, document-decryption-failed, document-integrity-failed, document-object-missing, document-seal-failed, storage-versioning-missing
502Dateispeicher antwortet nicht richtigstorage-failed
503gerade keine Kapazitätrender-capacity-exhausted, render-interrupted
504Rendern dauerte zu langerender-timeout

Ein zu großer Render-Körper ist kein 413, sondern 422 payload-rejected mit der Regel payload-too-large. Die Grenzen beim Rendern stehen unter Grenzen beim Rendern.

Die Schlüssel des Clients

Die Schlüssel von crms-client (crms-authentication-required, crms-access-denied, crms-unavailable) entstehen in der aufrufenden Anwendung, nicht im CRMS-Dienst. Sie stehen unter Der Client für den eigenen Dienst.

Fallen

Weiter

Suchen