Erreurs

La porte Brave utilise les codes HTTP classiques. Les portes compatibles OS-Travel et Cyberesa répondent toujours HTTP 200 et transportent l'erreur dans le corps — lisez bien les trois sections.

Porte Brave — codes HTTP

Codeerror.code typiqueSignification
400validation_failedCorps ou paramètres invalides (détail dans error.fields)
401invalid_signature, stale_timestamp, missing_credentialsAuthentification refusée — voir Signature
403ip_not_allowed, key_revoked, gateway_not_enabledIP non autorisée, clé révoquée, porte ou format non activé
404not_foundHôtel, réservation ou référentiel inconnu
409invalid_stateConflit d'état (ex. annulation d'une réservation déjà annulée)
422rate_expired, stop_sales, on_request_onlyOffre expirée, arrêt des ventes, ou offre « sur demande » non réservable
429rate_limitedQuota dépassé — l'en-tête Retry-After indique quand réessayer
500internal_errorErreur interne — réessayable en lecture seule uniquement

Porte Brave — enveloppe d'erreur

JSON (Accept: application/json) :

{
  "error": {
    "code": "rate_expired",
    "message": "Le tarif a expiré. Relancez une recherche.",
    "fields": { "rateKey": "expiré le 2026-11-13T10:22:00+01:00" }
  }
}

XML (Accept: application/xml) :

<ErrorResponse>
  <Code>rate_expired</Code>
  <Message>Le tarif a expiré. Relancez une recherche.</Message>
</ErrorResponse>

Porte OS-Travel — ErrorMessage

Toujours HTTP 200, même en erreur : le client V1/V2 ne parse que le 200.

{
  "ErrorMessage": {
    "Code": 401,
    "Description": "Invalid credentials."
  }
}
  • En succès, ErrorMessage est toujours présent avec Code: null et Description: null (V2).
  • Quota dépassé : Description contient "Too many requests ... Retry after YYYY-MM-DD HH:MM:SS.".
  • Pour BookingCancellation, l'erreur se lit dans BookingCancellation.ErrorMessage (Code ≠ 200).

Porte Cyberesa — ErrorResult

Toujours HTTP 200 + XML valide, sans CDATA. L'erreur métier apparaît sous l'une de ces formes :

<ErrorResult>
  <Message>Invalid credentials</Message>
</ErrorResult>

ou <Error><Message>…</Message></Error>, ou <Error>…</Error>. Testez la présence de ces nœuds avant de parser la réponse métier.

Conduite à tenir

  • 429 — respectez Retry-After et réduisez votre rythme ; voir Quotas.
  • 401 — vérifiez le calcul de signature et la synchronisation d'horloge (NTP).
  • 422 rate_expired — le rateKey n'est plus valable : nouvelle recherche, nouveau checkrate.
  • Réservations — jamais de retry aveugle : rejouez avec la même clientReference (voir Idempotence).
  • Lectures — un nouvel essai unique est accepté (GET, recherche) en cas d'erreur 500 ou de timeout.

Cette page vous a-t-elle été utile ?