Zum Inhalt springen

Grundlagen

Fehler

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.

Format

Response, 422
{
  "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" }
  ]
}
FeldInhalt
typeURL der Erklärung auf dieser Seite, https://staystryk.com/developers/errors#<code>
titleKurze Zusammenfassung auf Englisch
statusHTTP-Status
detailErklärung dieses konkreten Falls auf Englisch, ohne interne Details
instancePfad der Anfrage
codeMaschinenlesbarer Code aus der Liste unten
requestIdWie der Header X-Request-Id; nenne ihn bei Supportanfragen
errorsBei validation_failed: betroffene Felder und Grund
JavaScript
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'));
}

Fehlercodes

bad_request400

Die Anfrage ist nicht lesbar, etwa fehlerhaftes JSON oder ein ungültiges Parameterformat.

Anfrage korrigieren, nicht unverändert wiederholen.

invalid_cursor400

Der cursor ist unbekannt, beschädigt oder gehört zu einer anderen Liste oder anderen Filtern.

Liste ohne cursor mit denselben Filtern neu beginnen.

unauthorized401

Kein 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_expired401

Das Ablaufdatum des Schlüssels ist überschritten.

Hotel bitten, den Schlüssel zu rotieren oder neu anzulegen.

ip_not_allowed403

Die 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_scope403

Dem Schlüssel fehlt der Scope für diesen Endpunkt.

Hotel bitten, einen Schlüssel mit dem in detail genannten Scope anzulegen.

module_disabled403

Das Hotel ist inaktiv oder hat das Modul Kanäle nicht freigeschaltet.

Hotel kontaktieren. Wiederholen hilft nicht.

not_found404

Die Ressource existiert für dieses Hotel nicht, oder die Route ist unbekannt.

ID und Pfad prüfen. IDs anderer Hotels sind nie sichtbar.

conflict409

Die 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_progress409

Eine Anfrage mit demselben Idempotency-Key wird noch verarbeitet.

Kurz warten und mit demselben Schlüssel wiederholen.

not_available409

Die 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_modifiable409

Die Buchung ist eingecheckt, ausgecheckt oder storniert und lässt sich per API nicht ändern.

Nicht wiederholen. Das Hotel ändert die Buchung in STRYK.

precondition_failed412

Der 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_large413

Der Request-Body ist größer als 64 KiB.

Weniger Daten je Anfrage senden.

validation_failed422

Felder fehlen oder sind ungültig; errors[] nennt sie.

Die in errors[] genannten Felder korrigieren.

idempotency_key_reused422

Der Idempotency-Key wurde bereits mit einem anderen Request-Body verwendet.

Für eine geänderte Anfrage einen neuen Schlüssel verwenden.

precondition_required428

Dieser Schreibzugriff verlangt den Header If-Match.

Ressource lesen und ihren ETag als If-Match senden.

rate_limited429

Der Schlüssel hat mehr Anfragen in 60 Sekunden gesendet, als sein Limit erlaubt (standardmäßig 120).

Retry-After Sekunden warten, siehe Rate-Limits.

internal_error500

Ein unerwarteter Fehler in STRYK.

Mit Backoff wiederholen, Schreibzugriffe mit demselben Idempotency-Key. Bleibt der Fehler, den Support mit der requestId kontaktieren.

service_unavailable503

STRYK ist vorübergehend nicht erreichbar, etwa während einer Wartung.

Mit Backoff wiederholen und ein vorhandenes Retry-After beachten.