Diese Seite bietet eine umfassende Referenz für die Problem-Typ-URIs, die von den Tourfold-REST-APIs verwendet werden. Sie folgen RFC 9457 und enthalten maschinenlesbare URIs.
GraphQL-Fehler sind anders aufgebaut: Sie werden im GraphQL-errors-Array zurückgegeben und nicht als HTTP-Problemdokument. Fehler, die Tourfold selbst auslöst, tragen in extensions.code dieselbe Typ-URI, die ein REST-Fehler im Feld type trägt; Fehler, die die GraphQL-Engine beim Parsen oder Validieren eines Dokuments auslöst, tragen überhaupt kein extensions.code. Siehe GraphQL-Fehler.
Struktur der Fehlertypen
Fehlertypen folgen dieser Struktur:
- Kategoriefehler:
https://problems.tourfold.com/{error-slug} (z. B. https://problems.tourfold.com/validation-failed)
- Namespaced-Fehler:
https://problems.tourfold.com/{category}/{error-slug} (z. B. https://problems.tourfold.com/tours/tour-ended)
Allgemeine Fehler
Diese Fehler sind allgemein und können überall in der API auftreten.
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/unknown-error | Unbekannter Fehler | Ein unerwarteter Fehler ist aufgetreten | 500 |
https://problems.tourfold.com/invalid-input | Ungültige Eingabe | Die übergebene Eingabe war nicht gültig | 400 |
https://problems.tourfold.com/business-rule-violation | Verstoß gegen Geschäftsregel | Die Anfrage verletzt Geschäftsregeln | 422 |
https://problems.tourfold.com/not-found | Nicht gefunden | Die angeforderte Ressource wurde nicht gefunden | 404 |
https://problems.tourfold.com/method-not-allowed | Methode nicht erlaubt | Der Pfad existiert, unterstützt aber die angeforderte HTTP-Methode nicht. Der Allow-Header und data.supported nennen die unterstützten Methoden. | 405 |
https://problems.tourfold.com/not-acceptable | Nicht akzeptabel | Keine Darstellung der Ressource entspricht dem Accept-Header | 406 |
https://problems.tourfold.com/unsupported-media-type | Nicht unterstützter Medientyp | Der Medientyp des Request-Bodys wird nicht akzeptiert. data.content_type enthält den abgelehnten Wert und data.supported die akzeptierten Medientypen. | 415 |
https://problems.tourfold.com/authentication-required | Authentifizierung erforderlich | Gültige Authentifizierungsdaten sind erforderlich. Die Ursache steht in data.reason (token_missing, token_expired, token_invalid) und spiegelt sich im WWW-Authenticate-Header. | 401 |
https://problems.tourfold.com/access-denied | Zugriff verweigert | Sie haben keine Berechtigung, diese Aktion auszuführen. Die Ursache steht in data.reason (missing_grant, not_owner, not_author, not_member, plan_restricted, tenant_scope, resource_locked); grant-basierte Ablehnungen enthalten zusätzlich data.required_grants, wenn die erforderlichen Grants statisch bekannt sind. | 403 |
https://problems.tourfold.com/tenant-disabled | Tenant deaktiviert | Dieser Tenant ist deaktiviert | 403 |
https://problems.tourfold.com/tenant-billing-locked | Tenant durch Abrechnung gesperrt | Dieser Tenant ist gesperrt, weil die Abrechnung Aufmerksamkeit erfordert | 402 |
https://problems.tourfold.com/action-not-allowed | Aktion nicht erlaubt | Diese Aktion ist nicht erlaubt | 403 |
https://problems.tourfold.com/validation-failed | Validierung fehlgeschlagen | Ein oder mehrere Felder haben die Validierung nicht bestanden | 422 |
https://problems.tourfold.com/resource-conflict | Ressourcenkonflikt | Die Anfrage steht im Konflikt mit dem aktuellen Zustand | 409 |
https://problems.tourfold.com/rate-limit-exceeded | Rate-Limit überschritten | Rate-Limit für diesen Endpoint überschritten | 429 |
https://problems.tourfold.com/too-many-requests | Zu viele Anfragen | Zu viele Anfragen im Zeitfenster | 429 |
https://problems.tourfold.com/burst-limit-exceeded | Burst-Limit überschritten | Burst-Rate-Limit überschritten | 429 |
https://problems.tourfold.com/illegal-argument | Ungültiges Argument | Ein ungültiges Argument wurde übergeben | 422 |
https://problems.tourfold.com/not-unique | Nicht eindeutig | Die übergebenen Angaben waren nicht eindeutig | 422 |
https://problems.tourfold.com/payload-too-large | Payload zu groß | Das Request-Payload überschreitet die maximal erlaubte Größe | 413 |
https://problems.tourfold.com/not-implemented | Nicht implementiert | Diese Funktion ist nicht implementiert | 501 |
https://problems.tourfold.com/upstream-service-unavailable | Upstream-Service nicht verfügbar | Ein Upstream-Service ist vorübergehend nicht verfügbar | 503 |
https://problems.tourfold.com/login-failed | Anmeldung fehlgeschlagen | Die Authentifizierungsdaten sind ungültig. Wird für einen abgelehnten Login mit Anmeldedaten zurückgegeben, im Unterschied zu einem fehlenden oder unbrauchbaren Bearer-Token (authentication-required). | 401 |
https://problems.tourfold.com/client-connection-broken | Client-Verbindung abgebrochen | Die Client-Verbindung wurde unterbrochen | 500 |
https://problems.tourfold.com/empty-collection-argument | Leeres Sammlungs-Argument | Das übergebene Sammlungs-Argument darf nicht leer sein | 422 |
Beispiele für allgemeine Fehler
{
"type": "https://problems.tourfold.com/validation-failed",
"title": "Validation failed",
"detail": "One or more fields failed validation",
"status": 422
}
{
"type": "https://problems.tourfold.com/not-found",
"title": "Not found",
"detail": "The requested resource was not found",
"status": 404
}
Validierungs-Unterproblemtypen
Ein Problem validation-failed auf oberster Ebene kann ein errors[]-Array enthalten. Jeder
Eintrag verwendet eine dieser stabilen, feature-übergreifenden Typ-URIs, wenn die Standardbedeutung
passt. Sein pointer benennt das abgelehnte Request-Feld mit JSON-Pointer-Syntax.
Feature-spezifische Validierungstypen sind im Abschnitt des jeweiligen Features dokumentiert.
| Typ-URI | Bedeutung |
|---|
https://problems.tourfold.com/field-validation-error | Die Feldvalidierung ist fehlgeschlagen und kein engerer Standardtyp passt. |
https://problems.tourfold.com/field-required | Das Feld fehlt, ist null, leer oder enthält nur Leerzeichen. |
https://problems.tourfold.com/field-too-large | Ein numerischer Wert liegt über dem erlaubten Maximum. |
https://problems.tourfold.com/field-too-small | Ein numerischer Wert liegt unter dem erlaubten Minimum. |
https://problems.tourfold.com/field-size-invalid | Die Länge eines Strings oder einer Collection liegt außerhalb der erlaubten Grenzen. |
https://problems.tourfold.com/field-type-invalid | Der Wert hat den falschen JSON-Typ oder die falsche Struktur. |
https://problems.tourfold.com/field-out-of-range | Der Wert liegt außerhalb des erlaubten Feldbereichs. |
https://problems.tourfold.com/invalid-email | Der Wert ist keine gültige E-Mail-Adresse. |
https://problems.tourfold.com/invalid-phone-number | Der Wert ist keine gültige internationale Telefonnummer. |
https://problems.tourfold.com/invalid-enum-value | Der Wert gehört nicht zu den erlaubten Enum-Werten. |
https://problems.tourfold.com/not-unique | Der Wert dupliziert einen Datensatz, dessen Feld eindeutig sein muss. |
GraphQL-Fehler
Diese Fehler erscheinen innerhalb der GraphQL-Antwort, nicht als HTTP-Problemdokument: Ein
GraphQL-Fehler wird weiterhin mit HTTP 200 und einem errors-Array ausgeliefert.
Welche Fehler einen Code tragen. Jeder von Tourfold ausgelöste Fehler enthält extensions.code —
die Typ-URI, also exakt denselben Wert, den ein REST-Fehler im Feld type trägt. Daneben stehen flach title und (falls vorhanden) data; ein umschließendes
Problem-Objekt gibt es bewusst nicht, ebenso wie bei Shopify und GitHub. Der lesbare Text steht in
message und wird nicht zusätzlich als detail wiederholt.
Fehler der GraphQL-Engine selbst — ein fehlerhaftes Dokument, ein unbekanntes Feld, ein falsch
typisiertes Argument — tragen kein extensions.code, da sie entstehen, bevor Tourfold-Code überhaupt
ausgeführt wird. Werten Sie extensions.code aus, wenn es vorhanden ist, und weichen Sie sonst auf
message aus; gehen Sie nie davon aus, dass jeder Eintrag in errors einen Code besitzt.
Der Namensraum graphql/ ist nicht der gesamte Katalog. Ihn erhalten nur Fehler ohne REST-Pendant.
Alle übrigen verwenden weiterhin den Typ, den sie an anderer Stelle dieser Seite bereits haben: Ein
abgelehnter Filterwert ist validation-failed und benennt das betroffene Feld unter
extensions.errors, ein unerwarteter serverseitiger Fehler ist unknown-error. Ein Client, der die
REST-Fehler von Tourfold bereits verarbeitet, braucht für GraphQL kein zweites Vokabular.
Ein Feld status gibt es hier nicht, anders als in den REST-Tabellen auf dieser Seite. Die Antwort
wird immer mit HTTP 200 ausgeliefert, es gäbe also keinen Status zu melden; werten Sie stattdessen
code aus.
Ein Fehler kann unter extensions.errors Teilfehler auflisten. Diese tragen nur, was pro Vorkommen
variiert (code, message, path, data) und verschachteln sich nicht weiter. path adressiert ein
Feld so, wie GraphQL alles andere adressiert; dadurch mischt eine Antwort nie Feldpfade mit
JSON-Pointern. Bei der Umwandlung in ein REST-Problemdokument wird daraus ein Pointer nach RFC 6901.
| Typ-URI | Titel | Beschreibung |
|---|
https://problems.tourfold.com/graphql/query-too-deep | Abfrage zu tief verschachtelt | Die Abfrage verschachtelt mehr Ebenen als die konfigurierte Maximaltiefe erlaubt |
https://problems.tourfold.com/graphql/query-too-complex | Abfrage zu komplex | Die Abfrage würde voraussichtlich mehr Datensätze laden, als das konfigurierte Budget zulässt |
https://problems.tourfold.com/graphql/filter-too-deep | Filter zu tief verschachtelt | Das Argument where verschachtelt mehr Ebenen als die konfigurierte maximale Filtertiefe erlaubt |
https://problems.tourfold.com/graphql/invalid-cursor | Ungültiger Cursor | Der übergebene Paginierungs-Cursor stammt nicht von dieser API |
https://problems.tourfold.com/graphql/invalid-pagination | Ungültige Paginierungsargumente | Die übergebenen Paginierungsargumente widersprechen sich oder liegen außerhalb des zulässigen Bereichs |
Jeder Fehler nennt in data genau das, was ein Client zum Nachjustieren braucht, ohne raten zu müssen:
Die beiden Grenzwertfehler geben den gemessenen Wert neben dem Grenzwert an, invalid-cursor gibt den
abgelehnten Cursor zurück, und invalid-pagination nennt die Argumente, die im Widerspruch standen.
{
"data": null,
"errors": [
{
"message": "Query is estimated to materialise 3003001 rows, above the budget of 100000. A connection multiplies its subtree by its page size — request smaller pages or select fewer nested fields.",
"extensions": {
"code": "https://problems.tourfold.com/graphql/query-too-complex",
"title": "Query too complex",
"data": { "cost": 3003001, "limit": 100000 }
}
}
]
}
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/pagination/invalid-page-number | Ungültige Seitennummer | Die Seitennummer muss nicht-negativ sein (0 oder größer) | 422 |
https://problems.tourfold.com/pagination/invalid-page-size | Ungültige Seitengröße | Die Seitengröße muss zwischen 1 und 1000 liegen | 422 |
Zeitbereich-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/time-range/from-after-to | Ungültiger Zeitbereich | Der Parameter from muss vor dem Parameter to liegen | 422 |
Activity-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/activities/wrong-activity-type | Falscher Activity-Typ | Falscher Activity-Typ | 422 |
KI-Assistent-Fehler
Diese Fehler stammen vom integrierten KI-Assistenten („Ask Rob"). Sie treten sowohl als HTTP-Fehlerantworten (REST-Endpoints unter /frontend/v2/ai-assistant/...) als auch im turn.error-SSE-Event-Payload als eingebetteter ProblemDetail auf – das Wire-Format ist identisch.
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/ai-assistant/assistant-disabled | KI-Assistent ist deaktiviert | Der KI-Assistent ist für diesen Tenant deaktiviert. Ein Tenant-Administrator kann ihn in den KI-Assistent-Einstellungen wieder aktivieren. | 403 |
https://problems.tourfold.com/ai-assistant/turn-in-progress | KI-Assistent-Turn läuft bereits | Für diese Session läuft bereits ein KI-Assistent-Turn. Warten Sie, bis er beendet ist, oder brechen Sie ihn ab, bevor Sie eine neue Nachricht senden. Die konfliktverursachende sessionId ist in data enthalten. | 409 |
Adressfehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/addresses/opening-hours-wrong-format | Falsches Format für Öffnungszeiten | Die Öffnungszeiten haben ein falsches Zeitformat | 422 |
Filestore-/Dateifehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/filestore/file-not-found | Datei nicht gefunden | Datei wurde nicht gefunden | 404 |
https://problems.tourfold.com/filestore/file-deleted | Datei gelöscht | Datei ist gelöscht | 422 |
https://problems.tourfold.com/filestore/storage-object-missing | Speicherobjekt fehlt | Die Datei ist als hochgeladen erfasst, aber das zugehörige Objekt fehlt im Speicher — eine Dateninkonsistenz, die sich von einer nie existierenden ID (404) unterscheidet. Das data-Feld benennt das betroffene Objekt: bucket, storageKey sowie — auf Rendition-Lesepfaden — fileId, renditionId, alias. | 410 |
Document-Management-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/document-management/invalid-name | Ungültiger Name | Der angegebene Ordner- oder Dokumentname ist ungültig (nach Trim leer, reservierter Name, verbotenes Zeichen oder Längengrenze überschritten). | 422 |
https://problems.tourfold.com/document-management/name-taken | Name belegt | Ein bestehender Geschwisterordner oder ein Dokument verwendet diesen Namen bereits. | 409 |
https://problems.tourfold.com/document-management/parent-not-found | Übergeordneter Ordner nicht gefunden | Der referenzierte übergeordnete Ordner existiert nicht. | 404 |
https://problems.tourfold.com/document-management/folder-not-found | Ordner nicht gefunden | Der referenzierte Ordner existiert nicht. | 404 |
https://problems.tourfold.com/document-management/move-into-descendant | Verschieben in Unterordner | Ein Ordner kann nicht in sich selbst oder einen seiner Unterordner verschoben werden. | 422 |
https://problems.tourfold.com/document-management/move-across-managed-boundary | Verschieben über verwaltete Grenze | Ein Benutzerordner kann nicht in einen verwalteten Teilbaum (z. B. /objects/...) verschoben werden, und ein verwalteter Ordner kann nicht aus einem solchen herausverschoben werden. | 400 |
https://problems.tourfold.com/document-management/invalid-move-target | Ungültiges Verschiebeziel | Der Zielordner für eine Dokumentverschiebung ist nicht zulässig (fehlt oder ist ein struktureller managed_branch-Ordner). Der Grund wird in data.reason mitgegeben. | 422 |
https://problems.tourfold.com/document-management/must-be-soft-deleted-first | Muss zuerst soft-deleted sein | Das Dokument muss zuerst soft-deleted sein (in den Papierkorb des Benutzers verschoben), bevor es dauerhaft gelöscht (hard-deleted) werden kann. | 409 |
https://problems.tourfold.com/document-management/cannot-modify-managed-folder | Verwalteter Ordner kann nicht geändert werden | Dieser Ordner wird vom System verwaltet (Objekt-Root oder System-Root) und kann nicht umbenannt, verschoben oder gelöscht werden. | 403 |
https://problems.tourfold.com/document-management/cannot-modify-soft-deleted-document | Soft-deleted-Dokument kann nicht geändert werden | Das Dokument ist soft-deleted (im Papierkorb des Benutzers) und schreibgeschützt. Nur restore und Hard-Delete sind erlaubt; Umbenennen, Beschreibung, Verschieben, Tag, Star, Upload einer neuen Version und KI-Analyse werden mit diesem Typ abgelehnt. Ordner werden im neuen Modell nicht soft-deleted, es gibt also kein Pendant für Ordner. | 409 |
https://problems.tourfold.com/document-management/document-not-found | Dokument nicht gefunden | Das referenzierte Dokument existiert nicht oder ist soft-deleted. | 404 |
https://problems.tourfold.com/document-management/version-not-found | Dokumentversion nicht gefunden | Die referenzierte Dokumentversion existiert nicht, gehört zu einem anderen Dokument oder wurde noch nicht finalisiert. | 404 |
https://problems.tourfold.com/document-management/version-mime-mismatch | MIME-Konflikt bei der Version | Eine neue Version muss denselben MIME-Typ wie das bestehende Dokument verwenden. Erwartete und tatsächliche Typen werden in data.expected und data.actual mitgegeben. | 422 |
https://problems.tourfold.com/document-management/invalid-download-rendition | Nicht unterstützte Download-Variante | Der Query-Parameter rendition muss einer der unterstützten Aliase sein. Die erlaubten Werte sind in data.allowed enthalten; der abgelehnte Wert in data.value. | 422 |
https://problems.tourfold.com/document-management/upload-initiate-failed | Upload-Start fehlgeschlagen | Der Upload konnte nicht gestartet werden. Die Ursache (Filestore-Validierung hat MIME oder Größe abgelehnt, oder ein anderer Filestore-Fehler) steht in data.cause und den Unter-Problemen der Antwort. | 422 |
https://problems.tourfold.com/document-management/upload-finalize-failed | Upload-Finalisierung fehlgeschlagen | Der Upload konnte nicht finalisiert werden. Die Ursache (fehlender Storage-Key, keine ausstehende Version oder ein Filestore-Fehler) ist in den Unter-Problemen der Antwort enthalten. | 422 |
https://problems.tourfold.com/document-management/extraction-not-found | Extraktion nicht gefunden | Die referenzierte Extraktion existiert nicht oder gehört nicht zu einem Document-Management-Dokument. | 404 |
https://problems.tourfold.com/document-management/invalid-retention-days | Ungültige Aufbewahrungsdauer | Der Aufbewahrungswert für die automatische Hard-Delete-Funktion liegt außerhalb des erlaubten Bereichs. Der abgelehnte Wert und die Grenzen werden in data.value, data.min und data.max mitgegeben. | 422 |
Wird von der polymorphen Comments-API unter /api/v2/comments zurückgegeben. Validierungsfehler im Body enthalten Unter-Probleme mit Verweis auf den betroffenen JSON-Pointer (#/body_markdown, #/edit_reason usw.).
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/comments/target-not-found | Ziel nicht gefunden | Die angegebene Kombination aus target_type / target_id löst sich nicht auf ein vorhandenes, für den Aufrufer sichtbares Objekt auf. Reserviert für die Phase-5-ACL-Inheritance-Prüfung; wird derzeit nicht geworfen. | 404 |
https://problems.tourfold.com/comments/parent-comment-not-found | Übergeordneter Kommentar nicht gefunden | Die angegebene parent_comment_id löst sich nicht auf einen vorhandenen Kommentar auf. | 404 |
https://problems.tourfold.com/comments/parent-target-mismatch | Übergeordneter Kommentar gehört zu einem anderen Ziel | Die angegebene parent_comment_id gehört zu einem anderen (target_type, target_id) als der neue Kommentar. | 422 |
https://problems.tourfold.com/comments/body-too-long | Kommentar-Body zu lang | body_markdown überschreitet die konfigurierte Maximallänge. Das Limit wird in data.max_length mitgegeben. | 422 |
https://problems.tourfold.com/comments/body-invalid-markdown | Kommentar-Body enthält nicht erlaubtes Markdown | body_markdown enthält Konstrukte, die nicht auf der Allow-List für Kommentare stehen (Überschriften, rohes HTML, Bilder, Nicht-http(s)-Link-Schemes usw.). Die betroffenen Konstrukte werden als Unter-Probleme mit line_number-Verweisen aufgelistet, sofern verfügbar. | 422 |
https://problems.tourfold.com/comments/comment-not-found | Kommentar nicht gefunden | Der referenzierte Kommentar existiert nicht (oder wurde hard-deleted). | 404 |
https://problems.tourfold.com/comments/cannot-edit-others | Kommentar anderer Nutzer kann nicht bearbeitet werden | Zum Bearbeiten eines fremden Kommentars wird das Grant comments:update benötigt. | 403 |
https://problems.tourfold.com/comments/cannot-delete-others | Kommentar anderer Nutzer kann nicht gelöscht werden | Zum Löschen eines fremden Kommentars wird das Grant comments:delete benötigt. | 403 |
https://problems.tourfold.com/comments/moderation-reason-required | Moderations-Edit erfordert eine Begründung | Beim Bearbeiten eines fremden Kommentars unter dem Grant comments:update ist eine nicht-leere edit_reason erforderlich. | 422 |
https://problems.tourfold.com/comments/cannot-restore-not-deleted | Kommentar ist nicht soft-deleted | Nur soft-deleted-Kommentare können wiederhergestellt werden; der referenzierte Kommentar ist aktuell aktiv. | 422 |
https://problems.tourfold.com/comments/read-cursor-target-mismatch | Kommentar gehört nicht zum angegebenen Ziel | Die comment_id in mark-read-until gehört nicht zum angegebenen (target_type, target_id). | 422 |
https://problems.tourfold.com/comments/attachment-mime-not-allowed | MIME-Typ des Anhangs ist nicht erlaubt | Der MIME-Typ der hochgeladenen Datei steht auf der Sperrliste für Kommentar-Anhänge. Der abgelehnte MIME-Typ und die vollständige Sperrliste stehen in data.mime_type und data.blocked_mime_types. | 422 |
https://problems.tourfold.com/comments/attachment-too-large | Anhang überschreitet die maximale Dateigröße | Die hochgeladene Datei überschreitet comments.attachments.max-bytes-per-file. Die angeforderte und die maximale Größe stehen in data.requested_bytes und data.max_bytes. | 422 |
https://problems.tourfold.com/comments/attachment-storage-limit-exceeded | Speicherlimit des Tenants überschritten | Der Upload würde das Speicherlimit des Tenants überschreiten. Der zugrunde liegende Billing-Problemtyp und die Mengenangaben stehen in data.underlying_problem_type und data.underlying_data. | 422 |
https://problems.tourfold.com/comments/attachment-not-found | Kommentar-Anhang nicht gefunden | Die referenzierte attachment_id existiert nicht, wurde hard-deleted oder besitzt keine Original-Rendition. | 404 |
https://problems.tourfold.com/comments/attachment-blob-gone | Blob des Anhangs wurde entfernt | GET /api/v2/comments/attachments/{attachment_id}/download-url wurde für einen Anhang aufgerufen, dessen zugrunde liegender Blob hard-deleted wurde. Der Anhang erscheint weiterhin mit is_deleted=true am Kommentar; nur das Aktualisieren der Presigned-URL gibt 410 zurück. | 410 |
https://problems.tourfold.com/comments/attachment-not-from-comments | Anhang wurde für eine andere Funktion hochgeladen | Der source_key der referenzierten Datei ist nicht COMMENT_ATTACHMENTS; die Wiederverwendung von Blobs über Funktionsgrenzen hinweg wird abgelehnt. Der tatsächliche Source-Key steht in data.source_key. | 422 |
https://problems.tourfold.com/comments/attachment-upload-incomplete | Upload des Anhangs ist noch nicht abgeschlossen | Die referenzierte Datei existiert, ihre Original-Rendition hat aber noch nicht den Status UPLOADED. Der aktuelle Status steht in data.upload_status. | 422 |
https://problems.tourfold.com/comments/attachment-mime-not-inline-previewable | Anhang kann nicht inline referenziert werden | Eine -Referenz im Body verweist auf eine Datei, deren MIME-Typ keine Inline-Vorschau erlaubt. Die Datei muss stattdessen als Anhang-Chip hinzugefügt werden. Der MIME-Typ steht in data.mime_type. | 422 |
https://problems.tourfold.com/comments/attachment-inline-not-linked | Inline-Referenz fehlt in der Anhangsliste | Der Kommentar-Body referenziert attachment:<uuid> für eine Datei, die nicht im attachment_ids-Array des Requests enthalten ist. Die erste nicht verknüpfte ID steht in data.attachment_id, die vollständige Menge in data.all_unlinked_attachment_ids. | 422 |
https://problems.tourfold.com/comments/attachment-inline-invalid-uri | Fehlerhafte attachment:-Referenz im Body | Ein Bildziel verwendet das attachment:-Schema, aber der Suffix ist keine gültige UUID. | 422 |
https://problems.tourfold.com/comments/too-many-attachments | Kommentar überschreitet die maximale Anzahl an Anhängen | Der Request enthält mehr Dateien als durch comments.attachments.max-per-comment erlaubt. Das Limit und die angeforderte Anzahl stehen in data.max_per_comment und data.requested. | 422 |
https://problems.tourfold.com/comments/attachment-already-linked | Anhang ist bereits mit einem Kommentar verknüpft | DELETE /api/v2/comments/attachments/uploads/{attachment_id} wurde für einen bereits verknüpften Anhang aufgerufen. Er muss über das Aktualisieren oder Löschen des Kommentars entfernt werden; dabei wird auch der zugrunde liegende Blob gelöscht. | 409 |
Audit-Log-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/audit-logs/invalid-time-range | Ungültiger Zeitbereich | Der from-Zeitpunkt muss vor dem to-Zeitpunkt liegen | 422 |
https://problems.tourfold.com/audit-logs/invalid-sort | Ungültiger Sortierparameter | Sortierfeld oder -richtung wird nicht unterstützt | 422 |
Vorgangsfehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/cases/cases-active | Vorgänge aktiv | Vorgänge sind aktuell aktiv | 422 |
https://problems.tourfold.com/cases/case-already-assigned | Vorgang bereits zugewiesen | Der Vorgang ist bereits zugewiesen | 422 |
https://problems.tourfold.com/cases/action-not-allowed | Aktion nicht erlaubt | Diese Aktion ist für den Vorgang nicht erlaubt | 422 |
https://problems.tourfold.com/cases/confirmation-present | Bestätigung vorhanden | Vorgangsbestätigung ist bereits vorhanden | 422 |
https://problems.tourfold.com/cases/case-finished | Vorgang abgeschlossen | Der Vorgang ist abgeschlossen | 422 |
https://problems.tourfold.com/cases/not-approved | Vorgang nicht genehmigt | Der Vorgang ist nicht genehmigt | 422 |
https://problems.tourfold.com/cases/oeamtc-missing-id | OEAMTC-Vorgangs-ID fehlt | OEAMTC-Vorgangs-ID fehlt | 422 |
https://problems.tourfold.com/cases/oeamtc-update-failed | OEAMTC-Vorgang kann nicht aktualisiert werden | OEAMTC-Vorgang konnte nicht aktualisiert werden | 422 |
https://problems.tourfold.com/cases/oeamtc-not-found | OEAMTC-Vorgang nicht gefunden | OEAMTC-Vorgang wurde nicht gefunden | 404 |
Gerätefehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/device/platform-error | Plattformfehler | Geräte-Plattformfehler | 422 |
Document-Analyzer-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/document-analyzer/schema-invalid | Schema ist nicht gültig | Das angegebene Schema konnte nicht als JSON Schema (Draft 2020-12) interpretiert werden. | 422 |
https://problems.tourfold.com/document-analyzer/url-not-https | URL muss HTTPS verwenden | Die Dokument-URL muss HTTPS verwenden. | 422 |
https://problems.tourfold.com/document-analyzer/url-host-not-allowed | URL-Host nicht erlaubt | Der Host der Dokument-URL steht nicht auf der konfigurierten Allow-List. Senden Sie eine URL, die auf einen erlaubten Host verweist (typischerweise eine presigned Filestore-URL). | 422 |
https://problems.tourfold.com/document-analyzer/unsupported-media-type | Media-Type nicht unterstützt | Der angegebene Media-Type wird vom Document Analyzer nicht unterstützt. | 422 |
https://problems.tourfold.com/document-analyzer/job-not-found | Job nicht gefunden | Im aktuellen Tenant existiert kein Document-Analyzer-Job mit dieser ID. | 404 |
https://problems.tourfold.com/document-analyzer/url-fetch-failed | Dokument-URL konnte nicht abgerufen werden | Die Dokument-URL konnte nicht abgerufen werden. | 422 |
https://problems.tourfold.com/document-analyzer/document-too-large | Dokument ist zu groß | Das abgerufene Dokument überschreitet die maximal vom Document Analyzer erlaubte Größe. | 422 |
https://problems.tourfold.com/document-analyzer/media-type-mismatch | Dokumentinhalt entspricht nicht dem angegebenen Media-Type | Der angegebene Media-Type stimmt nicht mit dem tatsächlichen Dokumentinhalt überein. | 422 |
https://problems.tourfold.com/document-analyzer/model-output-does-not-match-schema | Modell-Ausgabe entspricht nicht dem Schema | Das Modell konnte keine Antwort erzeugen, die dem übergebenen oder abgeleiteten JSON Schema entspricht. | 422 |
https://problems.tourfold.com/document-analyzer/schema-inference-failed | Aus dem Dokument konnte kein gültiges Schema abgeleitet werden | Das Modell konnte für das Dokument kein gültiges JSON Schema (Draft 2020-12) erzeugen. Senden Sie die Anfrage erneut mit einem expliziten Schema. | 422 |
https://problems.tourfold.com/document-analyzer/provider-unavailable | Modell-Provider nicht verfügbar | Der vorgeschaltete Modell-Provider ist nicht verfügbar. Starten Sie den Job erneut; bleibt der Fehler bestehen, kontaktieren Sie den Support. | 503 |
Geocoding-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/geocoding/no-results | Keine Ergebnisse | Geocoding lieferte keine Ergebnisse | 404 |
Nachrichtenfehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/messages/acknowledged-by-field-empty | Ungültige Eingabe | Das Feld acknowledgedBy darf nicht leer sein | 422 |
Skill-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/skills/not-found | Skill nicht gefunden | Skill wurde nicht gefunden | 404 |
https://problems.tourfold.com/skills/shortkey-not-found | Shortkey nicht gefunden | Skill-Shortkey nicht gefunden | 404 |
SMS-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/sms/send-error | SMS-Sendefehler | Fehler beim Versand der SMS | 500 |
Tag-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/tags/not-found | Tag nicht gefunden | Tag mit der angegebenen ID wurde nicht gefunden | 404 |
https://problems.tourfold.com/tags/tag-already-associated | Tag bereits zugeordnet | Dieser Tag ist bereits mit der Ressource verknüpft | 409 |
Template-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/templates/not-found | Template nicht gefunden | Template wurde nicht gefunden | 404 |
https://problems.tourfold.com/templates/invalid | Template ungültig | Template ist nicht gültig | 500 |
https://problems.tourfold.com/templates/rendering-error | Rendering-Fehler | Fehler beim Rendern des PDF-Templates | 500 |
https://problems.tourfold.com/templates/todo-not-found | Todo-Template nicht gefunden | Todo-Template wurde nicht gefunden | 404 |
Tenant-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/tenants/not-found | Tenant nicht gefunden | Tenant wurde nicht gefunden | 404 |
https://problems.tourfold.com/tenants/template-name-invalid | Ungültiger Template-Name | Template-Name muss mit template_ beginnen | 422 |
https://problems.tourfold.com/tenants/source-tenant-is-frozen | Quell-Tenant ist eingefroren | Ein eingefrorener Template-Tenant kann nicht als neues Template geklont werden | 422 |
Tenant-Template-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/tenant-templates/template-not-found | Template nicht gefunden | Das angeforderte Tenant-Template existiert nicht | 404 |
https://problems.tourfold.com/tenant-templates/tenant-not-frozen | Tenant ist kein eingefrorenes Template | Die tenant_id_to_clone muss auf einen eingefrorenen Tenant verweisen (Name beginnt mit template_) | 422 |
Todo-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/todos/not-found | Todo nicht gefunden | Todo wurde nicht gefunden | 404 |
Tour-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/tours/tour-ended | Tour beendet | Die Tour ist bereits beendet | 422 |
https://problems.tourfold.com/tours/tour-not-accepting-cases | Tour nimmt keine Vorgänge an | Diese Tour nimmt keine neuen Vorgänge an | 422 |
https://problems.tourfold.com/tours/capacity-reached | Kapazität erreicht | Die Tour hat ihre Auslastungs-Kapazität erreicht | 422 |
https://problems.tourfold.com/tours/no-user-associated | Kein Benutzer zugeordnet | Dieser Tour ist kein Benutzer zugeordnet | 422 |
https://problems.tourfold.com/tours/invalid-lea-tours | Ungültige LEA-Touren | Falsche Anzahl von LEA-Touren | 500 |
https://problems.tourfold.com/tours/cannot-duplicate-finished | Abgeschlossene Tour nicht duplizierbar | Eine abgeschlossene Tour kann nicht dupliziert werden | 500 |
https://problems.tourfold.com/tours/association-conflict | Zuordnungskonflikt | Konflikt bei der Zuordnung von Tour und Vorgang | 409 |
https://problems.tourfold.com/tours/start-time-after-end | Startzeit liegt nach Endzeit | Die Startzeit muss vor dem geplanten Ende liegen | 422 |
https://problems.tourfold.com/tours/tour-has-unfinished-activities | Tour hat offene Activities | Eine Tour mit Activities im Status PENDING oder STARTED kann nicht abgeschlossen werden | 409 |
Benutzerfehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/users/password-error | Passwortfehler | Das Passwort konnte nicht gesetzt werden | 422 |
https://problems.tourfold.com/users/already-assigned | Benutzer bereits zugewiesen | Benutzer ist bereits zugewiesen | 422 |
https://problems.tourfold.com/users/token-not-valid | Token nicht gültig | Das übergebene Token ist nicht gültig | 422 |
https://problems.tourfold.com/users/tokens-not-found | Tokens nicht gefunden | Es wurden keine Tokens gefunden | 404 |
https://problems.tourfold.com/users/not-tenant-owner | Nicht der Workspace-Eigentümer | Nur der aktuelle Workspace-Eigentümer darf diese Aktion ausführen — etwa das Übertragen der Eigentümerschaft. Unterscheidet sich von access-denied, weil der Fehler endgültig ist: kein Grant macht aus einem Nicht-Eigentümer einen Eigentümer. Fordern Sie den Benutzer daher nicht auf, weitere Berechtigungen anzufragen. Enthält data.reason: not_owner. | 403 |
Fahrzeugfehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/vehicles/no-active-device-association | Keine aktive Gerätezuordnung | Keine aktive Fahrzeug-Geräte-Zuordnung gefunden | 422 |
https://problems.tourfold.com/vehicles/no-device-association | Keine Gerätezuordnung | Keine Fahrzeug-Geräte-Zuordnung gefunden | 422 |
https://problems.tourfold.com/vehicles/vehicle-already-assigned | Fahrzeug bereits zugewiesen | Fahrzeug ist bereits zugewiesen | 422 |
https://problems.tourfold.com/vehicles/vehicle-has-active-tour | Fahrzeug hat aktive Tour | Fahrzeug hat aktuell eine aktive Tour | 422 |
https://problems.tourfold.com/vehicles/vehicle-not-associated | Fahrzeug nicht zugeordnet | Fahrzeug ist nicht zugeordnet | 422 |
https://problems.tourfold.com/vehicles/vehicle-type-not-found | Fahrzeugtyp nicht gefunden | Der referenzierte Fahrzeugtyp existiert nicht | 422 |
Custom-Objects-Fehler
Custom Objects nutzt auf oberster Ebene generische Problem-Typen (not-found, invalid-input, validation-failed, unknown-error). Der spezifische Fehlerkontext wird über Feld-Validierungs-Fehlertypen im errors-Array der Antwort transportiert.
Problem-Typen auf oberster Ebene
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/not-found | Nicht gefunden | Definition, Instanz oder Relation wurde nicht gefunden | 404 |
https://problems.tourfold.com/invalid-input | Ungültige Eingabe | Der Request-Body konnte nicht geparst werden (z. B. fehlerhaftes oder nicht interpretierbares JSON) | 400 |
https://problems.tourfold.com/validation-failed | Validierung fehlgeschlagen | Schema- oder Instanzvalidierung fehlgeschlagen | 422 |
https://problems.tourfold.com/payload-too-large | Payload zu groß | Request-Payload überschreitet die maximal erlaubte Größe | 413 |
https://problems.tourfold.com/unknown-error | Unbekannter Fehler | Ein unerwarteter Fehler ist aufgetreten (z. B. DDL-Änderungsfehler) | 500 |
Fehlertypen bei Definitions- und Schemavalidierung
Diese erscheinen als errorType-Werte im errors-Array, wenn ein Create- oder Update-Request für eine Definition die Validierung nicht besteht.
| Fehlertyp | Beschreibung |
|---|
title-required | Titel ist für eine Definition erforderlich |
invalid-slug | Slug-Format ist ungültig |
slug-already-exists | Eine Definition mit demselben Slug existiert bereits |
slug-reserved | Slug ist für eine eingebaute schreibgeschützte Definition reserviert |
read-only-schema | Eine eingebaute schreibgeschützte Definition kann nicht geändert werden |
invalid-schema-structure | Schema verletzt das JSON-Schema-2020-12-Meta-Schema. In Fallback-Parser-/Fehlerpfaden kann das Detail lauten: Schema is incorrect and requires updating, please update the schema for slug '<slug>' |
schema-too-deeply-nested | Schema weist eine zu hohe Verschachtelungstiefe auf |
definition-payload-too-large | schema-Payload überschreitet die konfigurierte Maximalgröße (HTTP 413). Top-Level-Typ: payload-too-large. Detail des Unterfehlers: Payload for 'schema' exceeds max size of {maxBytes} bytes (actual: {actualBytes} bytes) |
validation-error | Generischer Fallback für unerwartete Laufzeitfehler während der Schemavalidierung |
Fehlertypen bei Eigenschafts-Validierung
| Fehlertyp | Beschreibung |
|---|
invalid-property-type | Eigenschaftstyp ist kein gültiger JSON-Schema-Typ |
invalid-property-name | Format des Eigenschaftsnamens ist ungültig |
duplicate-property-name | Doppelter Eigenschaftsname (Groß-/Kleinschreibung wird ignoriert) |
property-slug-conflicts-with-relation | Eigenschaftsname kollidiert mit einem bestehenden Relation-Slug |
too-many-properties | Definition überschreitet das Maximum von 20 Eigenschaften |
invalid-default-value | Standardwert passt nicht zum Eigenschafts-Schema |
default-value-required | Eigenschaft kann ohne Standardwert nicht hinzugefügt oder als Pflichtfeld markiert werden, wenn bestehende Instanzen null-Werte enthalten |
unsupported-keyword | Schema verwendet ein JSON-Schema-Schlüsselwort, das nicht unterstützt wird (z. B. patternProperties) |
invalid-pattern | pattern-Wert ist kein syntaktisch gültiger regulärer Ausdruck |
unacceptable-pattern | pattern-Wert ist syntaktisch gültig, nutzt jedoch Features, die nicht unterstützt werden (z. B. Lookaheads oder Rückwärtsreferenzen). Akzeptiert werden nur reguläre Ausdrücke mit linearer Laufzeit |
Fehlertypen bei Umbenennung von Eigenschaften
| Fehlertyp | Beschreibung |
|---|
incompatible-type-change | Ungültige Typkonvertierung der Eigenschaft beim Umbenennen |
invalid-rename-from | renameFrom ist beim Anlegen einer Definition nicht erlaubt |
invalid-rename-from-reference | renameFrom verweist auf eine nicht vorhandene Eigenschaft |
invalid-rename-from-value | Wert von renameFrom hat ein ungültiges Format |
rename-conflict | Ziel-Eigenschaftsname existiert bereits |
Fehlertypen bei Relationen
| Fehlertyp | Beschreibung |
|---|
definition-not-found | Die für die Relation referenzierte Definition existiert nicht |
duplicate-relation-slug | Relation-Slug wird auf dieser Definition bereits verwendet |
https://problems.tourfold.com/relation/relation-id-null | Relation hat eine ID null |
https://problems.tourfold.com/relation/unknown-field-in-order-by | Unbekanntes Feld im order_by-Request |
https://problems.tourfold.com/relation/unknown-nested-field-in-order-by | Unbekanntes verschachteltes Feld im order_by-Request |
https://problems.tourfold.com/relation/invalid-sort-direction | Ungültige Sortierrichtung |
https://problems.tourfold.com/relation/nesting-depth-exceeded | Maximale Verschachtelungstiefe überschritten |
relation-not-found | Relation wurde nicht gefunden |
required-relation | Eine erforderliche Relation fehlt in den Zuordnungen |
Fehlertypen bei Verknüpfungen
| Fehlertyp | Beschreibung |
|---|
cardinality-violation-source | Quell-Kardinalitäts-Constraint verletzt |
cardinality-violation-target | Ziel-Kardinalitäts-Constraint verletzt |
duplicate-association | Doppelte Verknüpfung für dieselbe Relation und dasselbe Ziel |
object-not-found | Verknüpfte Instanz wurde nicht gefunden |
Fehlertypen bei Instanzvalidierung
Diese erscheinen, wenn Instanzdaten gegen das Definitions-Schema validiert werden und fehlschlagen.
| Fehlertyp | Beschreibung |
|---|
type-mismatch | Wert entspricht nicht dem erwarteten Typ |
required-field | Ein Pflichtfeld fehlt |
invalid-enum-value | Wert ist keiner der erlaubten Enum-Werte |
invalid-const-value | Wert entspricht nicht der erwarteten Konstante |
string-too-short | String-Länge unterschreitet das Minimum |
string-too-long | String-Länge überschreitet das Maximum |
pattern-mismatch | String entspricht nicht dem geforderten Pattern |
value-too-small | Numerischer Wert unterschreitet das Minimum |
value-too-large | Numerischer Wert überschreitet das Maximum |
not-multiple-of | Numerischer Wert ist kein Vielfaches des geforderten Wertes |
too-few-items | Array enthält weniger Einträge als erlaubt |
too-many-items | Array enthält mehr Einträge als erlaubt |
duplicate-items | Array enthält doppelte Einträge, obwohl Eindeutigkeit gefordert ist |
invalid-format | Wert entspricht nicht dem geforderten Format |
too-few-properties | Objekt hat weniger Eigenschaften als gefordert |
too-many-properties | Objekt hat mehr Eigenschaften als erlaubt |
additional-properties-not-allowed | Objekt enthält Eigenschaften, die im Schema nicht definiert sind |
oneOf-mismatch | Wert entspricht nicht genau einem der oneOf-Schemas |
anyOf-mismatch | Wert entspricht keinem der anyOf-Schemas |
allOf-mismatch | Wert entspricht nicht allen allOf-Schemas |
not-mismatch | Wert entspricht einem Schema, dem er nicht entsprechen soll |
conditional-mismatch | Wert erfüllt nicht ein bedingtes Schema (if/then/else) |
dependent-required | Eine abhängige Pflichteigenschaft fehlt |
dependent-schema-mismatch | Wert entspricht nicht einem abhängigen Schema |
validation-error | Generischer Validierungsfehler (Fallback) |
instance-payload-too-large | data-Payload überschreitet die konfigurierte Maximalgröße (HTTP 413). Top-Level-Typ: payload-too-large. Detail des Unterfehlers: Payload for 'data' exceeds max size of {maxBytes} bytes (actual: {actualBytes} bytes) |
Beispiel für einen Custom-Objects-Fehler
{
"type": "https://problems.tourfold.com/validation-failed",
"title": "Validation failed",
"detail": "Schema validation failed with 1 error(s)",
"status": 422,
"errors": [
{
"type": "default-value-required",
"title": "Default value required",
"detail": "Cannot add or make property 'priority' required without a default value because existing instances contain null values for this property",
"pointer": "#/priority"
}
]
}
Custom-Objects-GraphQL-Fehler
Diese Fehler treten bei der Verwendung des Custom-Objects-GraphQL-API-Endpoints auf.
GraphQL-Fehler werden im errors-Array zurückgegeben (typischerweise mit HTTP 200 OK) und verwenden keine RFC-9457-Problem-Felder.
Welche Fehler einen Code tragen
Alles, was Tourfold an einer Abfrage ablehnt, trägt einen stabilen extensions.code — die unten
aufgeführten Limits, ein fehlerhafter Cursor, widersprüchliche Paginierungsargumente und jeder abgelehnte
Filter-Operand. Werten Sie diesen Code aus. Die vollständige Liste samt dem jeweils mitgelieferten data
finden Sie unter GraphQL-Fehler und -Limits.
Nur Fehler der GraphQL-Engine selbst, die entstehen, bevor Tourfold-Code ausgeführt wird, haben keinen
Code. Dabei handelt es sich um Probleme des Dokuments; mehr als message und locations gibt es nicht:
| Meldungs-Muster | Bedeutung |
|---|
Validation error (FieldUndefined@...) ... Field ... is undefined | Das Feld existiert im generierten Schema Ihres Workspace nicht. Prüfen Sie den Schema-Endpoint. |
Validation error (WrongType@...) ... not a valid SortDirection | Eine order_by-Richtung außer asc oder desc. |
| Validation error (WrongType@...) ... | Ein Argumentwert passt nicht zum deklarierten Eingabetyp. |
| Invalid syntax ... | Das Dokument lässt sich nicht parsen. |
Frühere Fassungen dieser Seite führten Meldungs-Muster für Fehler bei Filtertiefe, Cursorn und
Filter-Operanden auf. Diese tragen jetzt stabile Codes, und ihr Wortlaut hat sich geändert — werten Sie
den Code aus, nicht den Text.
Query-Validierung
| Einschränkung | Limit | Beschreibung |
|---|
| Query-Länge | 10.000 Zeichen | Maximale Länge des GraphQL-Query-Strings |
| Query-Kosten | 100.000 geschätzte Datensätze | Maximale Anzahl an Datensätzen, die eine Abfrage voraussichtlich lädt. Eine Connection multipliziert ihren Teilbaum mit ihrer Seitengröße; einfache Felder kosten 1. Bei Überschreitung: graphql/query-too-complex. |
| Query-Tiefe | 12 Ebenen | Maximale Verschachtelungstiefe, gezählt in Relay-Ebenen statt in Relationssprüngen: Eine einfache Connection kostet bereits 4, jeder To-many-Sprung weitere 3. Bei Überschreitung: graphql/query-too-deep. |
Seitengröße (first/last) | 100 | Größere Werte werden stillschweigend gekappt. |
| Standard-Seitengröße | 20 (Wurzel), 10 (verschachtelt) | Gilt, wenn weder first noch last angegeben ist. Der verschachtelte Wert ist kleiner, weil eine verschachtelte Connection einmal pro übergeordnetem Datensatz aufgelöst wird. |
| Filter-Verschachtelungstiefe | 4 | Maximale where-Rekursionstiefe (_and / _or). Unabhängig von der Query-Tiefe. |
| Order-by-Verschachtelungstiefe | 3 | Maximale order_by-Verschachtelungstiefe |
| JSON-Filter-Operandengröße | 3.000 Zeichen | Maximale Größe von JSON-Werten in Filter-Operatoren |
| LIKE-Wildcards | 2 | Maximale Anzahl an Wildcard-Zeichen in LIKE-Patterns |
Die Query-Kosten ersetzen einen früheren Komplexitätswert von 25, der Felder zählte und damit
umgekehrt proportional zu den tatsächlichen Kosten war: Er wies eine breite Tabellenansicht zurück und
ließ zugleich eine schmale, tief paginierte Traversierung durch, die um Größenordnungen teurer ist. Eine
Antwort meldet ihre Kosten unter extensions.cost, sofern die Anfrage die Kostenanalyse erreicht hat —
erfolgreiche Ausführungen und Ablehnungen mit query-too-complex —, sodass eine Abfrage angepasst werden
kann, bevor sie abgelehnt wird. Syntax- und Validierungsfehler werden vorher erkannt und tragen keine
Kosten.
Die ausgerechnete Kostenberechnung und die Zählweise jedes Limits finden Sie unter
GraphQL-Fehler und -Limits.
Beispiel für Custom-Objects-GraphQL-Fehler
{
"data": null,
"errors": [
{
"message": "Validation error (WrongType@[product]) : argument 'order_by[0].price' with value 'EnumValue{name='invalid_direction'}' is not a valid 'SortDirection' - Literal value not in allowable values for enum 'SortDirection' - 'EnumValue{name='invalid_direction'}'",
"locations": [{ "line": 1, "column": 11 }],
"path": null
},
{
"message": "Validation error (FieldUndefined@[vending_machine/cpu_processor]) : Field 'cpu_processor' in type 'vending_machine' is undefined",
"locations": [{ "line": 5, "column": 9 }],
"path": null
},
{
"message": "Validation error (FieldUndefined@[vending_machine/manufacturer/founding_year]) : Field 'founding_year' in type 'manufacturer' is undefined",
"locations": [{ "line": 8, "column": 13 }],
"path": null
}
]
}
Billing-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/billing/plan-change-in-progress | Tarifwechsel läuft | Für diesen Tenant läuft bereits ein Tarifwechsel | 409 |
https://problems.tourfold.com/billing/plan-change-not-allowed | Tarifwechsel nicht erlaubt | Im aktuellen Abrechnungszustand kann der Tarif nicht gewechselt werden | 422 |
https://problems.tourfold.com/billing/stripe-billing-unavailable | Stripe-Billing nicht verfügbar | Stripe-Billing war nicht erreichbar oder konnte die Anfrage nicht verarbeiten | 503 |
https://problems.tourfold.com/billing/plan-configuration-invalid | Tarifkonfiguration ungültig | Die Stripe-Konfiguration des Tarifs ist unvollständig oder inkonsistent und kann nicht materialisiert werden (ein serverseitiger/Konfigurationszustand, kein Client-Fehler). | 500 |
Signup-Fehler
| Typ-URI | Titel | Beschreibung | HTTP-Status |
|---|
https://problems.tourfold.com/signup/email-already-verified | E-Mail bereits verifiziert | Diese E-Mail-Adresse wurde bereits verifiziert | 409 |
https://problems.tourfold.com/signup/email-not-verified | E-Mail nicht verifiziert | Verifizieren Sie Ihre E-Mail, bevor Sie den Signup fortsetzen | 409 |
https://problems.tourfold.com/signup/invalid-verification-code | Ungültiger Verifizierungscode | Der angegebene Verifizierungscode ist nicht gültig | 422 |
https://problems.tourfold.com/signup/verification-code-expired | Verifizierungscode abgelaufen | Der Verifizierungscode ist abgelaufen | 422 |
https://problems.tourfold.com/signup/invalid-resume-token | Ungültiges Resume-Token | Das Resume-Token ist ungültig oder abgelaufen | 422 |
https://problems.tourfold.com/signup/subdomain-not-available | Subdomain nicht verfügbar | Die gewünschte Subdomain ist bereits vergeben | 409 |
https://problems.tourfold.com/signup/subdomain-reserved | Subdomain reserviert | Die gewünschte Subdomain ist reserviert und kann nicht verwendet werden | 409 |
https://problems.tourfold.com/signup/subdomain-invalid-format | Ungültiges Subdomain-Format | Subdomain muss 3–16 alphanumerische Kleinbuchstaben verwenden | 422 |
https://problems.tourfold.com/signup/session-not-found | Session nicht gefunden | Die Signup-Session existiert nicht | 404 |
https://problems.tourfold.com/signup/session-already-completed | Session bereits abgeschlossen | Die Signup-Session wurde bereits abgeschlossen | 409 |
https://problems.tourfold.com/signup/session-not-ready | Session nicht bereit | Alle erforderlichen Schritte müssen vor Abschluss des Signups erledigt sein | 422 |
https://problems.tourfold.com/signup/payment-pending | Zahlung ausstehend | Die Zahlung wird noch verarbeitet. Bitte warten und erneut versuchen | 409 |
https://problems.tourfold.com/signup/completion-in-progress | Signup-Abschluss läuft | Der Signup wird gerade abgeschlossen. Bitte warten und erneut versuchen | 409 |
https://problems.tourfold.com/signup/payment-not-completed | Zahlung nicht abgeschlossen | Die Zahlung wurde nicht abgeschlossen | 409 |
https://problems.tourfold.com/signup/payment-failed | Zahlung fehlgeschlagen | Die Zahlung ist fehlgeschlagen. Bitte einen Tarif wählen und erneut versuchen | 409 |
https://problems.tourfold.com/signup/email-rate-limited | E-Mail-Rate begrenzt | Zu viele Verifizierungsanfragen in kurzer Zeit | 429 |
https://problems.tourfold.com/signup/invalid-invite-code | Ungültiger Einladungscode | Der angegebene Einladungscode ist nicht gültig | 422 |
https://problems.tourfold.com/signup/email-sending-failed | E-Mail-Versand fehlgeschlagen | Die Verifizierungs-E-Mail konnte nicht gesendet werden | 503 |
https://problems.tourfold.com/signup/tenant-creation-failed | Tenant-Erstellung fehlgeschlagen | Die Plattform konnte für diesen Signup keinen Tenant erstellen | 500 |