GET) ne renvoient ni 400 ni 422.
Format d’erreur
Toutes les erreurs partagent la même structure JSON à plat :string
required
Message d’erreur lisible décrivant la nature du problème.
string[]
Optionnel et réservé : les endpoints de lecture actuels (
GET) ne renvoient jamais de details. Le champ existe dans le schéma d’erreur mais n’est pas émis aujourd’hui.Codes HTTP
Les endpoints de lecture n’émettent pas de
400 Bad Request ni de 422 Unprocessable Entity. Un paramètre invalide (par exemple une locale inconnue) est silencieusement corrigé plutôt que rejeté.401 Unauthorized
La clé d’API est absente de l’en-tête X-Api-Key, ou ne correspond à aucun établissement.
404 Not found
Trois causes possibles, indistinguables par conception :
- le
slugd’établissement n’existe pas ; - l’établissement existe mais son API est désactivée (
public_api_enabledàfalse) ; - le
menu_type_slugdemandé n’a pas de menu courant.
Le
404 est volontairement renvoyé à la place d’un 403 quand l’API est désactivée, afin de ne pas divulguer l’existence de l’établissement. Détails dans Authentification.429 Rate limit exceeded
Le
429 peut provenir du quota par clé d’API ou du quota par adresse IP. Le corps de réponse ne précise pas lequel des deux a été atteint : appliquez la même stratégie de backoff dans les deux cas.Réagir aux erreurs
JavaScript