bad_request400
Die Anfrage ist nicht lesbar, etwa fehlerhaftes JSON oder ein ungültiges Parameterformat.
Anfrage korrigieren, nicht unverändert wiederholen.
Grundlagen
Fehler sind RFC 9457 Problem Details mit dem Content-Type application/problem+json. Verzweige anhand von code: Der Wert ist stabil. title und detail sind für Menschen gedacht und können anders formuliert werden.
{
"type": "https://staystryk.com/developers/errors#validation_failed",
"title": "Validation failed",
"status": 422,
"detail": "The request contains invalid fields.",
"instance": "/api/partner/v1/bookings",
"code": "validation_failed",
"requestId": "e1d2c3b4-a596-4877-8695-a4b3c2d1e0f9",
"errors": [
{ "field": "checkOut", "message": "must be after checkIn" },
{ "field": "guest.email", "message": "must be a valid email address" }
]
}| Feld | Inhalt |
|---|---|
type | URL der Erklärung auf dieser Seite, https://staystryk.com/developers/errors#<code> |
title | Kurze Zusammenfassung auf Englisch |
status | HTTP-Status |
detail | Erklärung dieses konkreten Falls auf Englisch, ohne interne Details |
instance | Pfad der Anfrage |
code | Maschinenlesbarer Code aus der Liste unten |
requestId | Wie der Header X-Request-Id; nenne ihn bei Supportanfragen |
errors | Bei validation_failed: betroffene Felder und Grund |
const response = await fetch(url, options);
if (!response.ok) {
const isProblem = response.headers.get('Content-Type')?.includes('application/problem+json');
const problem = isProblem ? await response.json() : { code: 'internal_error', status: response.status };
// Branch on problem.code, it is stable. title and detail are for humans and may change.
console.error(problem.code, problem.detail, 'request', problem.requestId ?? response.headers.get('X-Request-Id'));
}bad_request400Die Anfrage ist nicht lesbar, etwa fehlerhaftes JSON oder ein ungültiges Parameterformat.
Anfrage korrigieren, nicht unverändert wiederholen.
idempotency_key_required400Diese Operation verlangt den Header Idempotency-Key.
Schlüssel mitsenden, siehe Idempotenz.
invalid_cursor400Der cursor ist unbekannt, beschädigt oder gehört zu einer anderen Liste oder anderen Filtern.
Liste ohne cursor mit denselben Filtern neu beginnen.
unauthorized401Kein Schlüssel, ein fehlerhafter oder ein widerrufener Schlüssel.
Header Authorization: Bearer prüfen. Ist der Schlüssel widerrufen, beim Hotel einen neuen anfragen.
key_expired401Das Ablaufdatum des Schlüssels ist überschritten.
Hotel bitten, den Schlüssel zu rotieren oder neu anzulegen.
ip_not_allowed403Die Anfrage kommt von einer Adresse außerhalb der IP-Allowlist des Schlüssels.
Von einer erlaubten Adresse aufrufen oder das Hotel bitten, die Liste zu erweitern.
insufficient_scope403Dem Schlüssel fehlt der Scope für diesen Endpunkt.
Hotel bitten, einen Schlüssel mit dem in detail genannten Scope anzulegen.
module_disabled403Das Hotel ist inaktiv oder hat das Modul Kanäle nicht freigeschaltet.
Hotel kontaktieren. Wiederholen hilft nicht.
not_found404Die Ressource existiert für dieses Hotel nicht, oder die Route ist unbekannt.
ID und Pfad prüfen. IDs anderer Hotels sind nie sichtbar.
method_not_allowed405Die Route existiert, aber nicht mit dieser HTTP-Methode.
Methode aus der Referenz verwenden.
conflict409Die Anfrage widerspricht dem aktuellen Stand. Bei Buchungen: Der Preis weicht von expectedTotal ab; currentTotal enthält den aktuellen Preis.
Dem Gast den neuen Preis zeigen und nach Bestätigung neu anfragen.
idempotency_in_progress409Eine Anfrage mit demselben Idempotency-Key wird noch verarbeitet.
Kurz warten und mit demselben Schlüssel wiederholen.
not_available409Die gewählte Kategorie ist für den Aufenthalt nicht verfügbar, oder eine Restriktion verhindert ihn.
Verfügbarkeit neu laden und Alternativen anbieten.
booking_not_modifiable409Die Buchung ist eingecheckt, ausgecheckt oder storniert und lässt sich per API nicht ändern.
Nicht wiederholen. Das Hotel ändert die Buchung in STRYK.
precondition_failed412Der If-Match-ETag ist veraltet: Die Ressource hat sich seit dem Lesen geändert.
Neu lesen, Änderung erneut anwenden, mit neuem ETag schreiben.
payload_too_large413Der Request-Body ist größer als 64 KiB.
Weniger Daten je Anfrage senden.
unsupported_media_type415Der Body ist nicht application/json.
JSON mit Content-Type: application/json senden.
validation_failed422Felder fehlen oder sind ungültig; errors[] nennt sie.
Die in errors[] genannten Felder korrigieren.
idempotency_key_reused422Der Idempotency-Key wurde bereits mit einem anderen Request-Body verwendet.
Für eine geänderte Anfrage einen neuen Schlüssel verwenden.
precondition_required428Dieser Schreibzugriff verlangt den Header If-Match.
Ressource lesen und ihren ETag als If-Match senden.
rate_limited429Der Schlüssel hat mehr Anfragen in 60 Sekunden gesendet, als sein Limit erlaubt (standardmäßig 120).
Retry-After Sekunden warten, siehe Rate-Limits.
internal_error500Ein unerwarteter Fehler in STRYK.
Mit Backoff wiederholen, Schreibzugriffe mit demselben Idempotency-Key. Bleibt der Fehler, den Support mit der requestId kontaktieren.
service_unavailable503STRYK ist vorübergehend nicht erreichbar, etwa während einer Wartung.
Mit Backoff wiederholen und ein vorhandenes Retry-After beachten.