Erreurs et dépannage

L'API Isochrones renvoie les erreurs au format JSON google.rpc.Status standard de Google Cloud :

{
  "error": {
    "code": 400,
    "message": "Violation in GenerateIsochroneRequest.travel_duration: travel_duration must be at least 1 second and not exceed 3600 seconds (60 minutes) for DRIVE or TWO_WHEELER mode or 7200 seconds (120 minutes) for other modes",
    "status": "INVALID_ARGUMENT"
  }
}

Utilisez le champ status (ou HTTP code) pour gérer les erreurs de manière programmatique. Le texte message est destiné aux développeurs et peut changer. Ne l'analysez donc pas.

Lorsque vous utilisez l'API Isochrones, vous pouvez rencontrer les codes d'état d'erreur courants suivants :

  • 400 INVALID_ARGUMENT : la requête contient des paramètres non valides ou une syntaxe incorrecte :
    • Limites de durée : assurez-vous que travelDuration est au moins égal à "1s", se termine par "s" (par exemple, "1800s") et ne dépasse pas la limite du mode : 3600s (60 minutes) pour DRIVE et TWO_WHEELER, ou 7200s (120 minutes) pour WALK et BICYCLE. La valeur zéro ("0s"), les valeurs négatives et les valeurs inférieures à une seconde (telles que "0.5s") sont refusées.
    • Préférence de trafic : assurez-vous que routingPreference n'est pas défini sur TRAFFIC_AWARE lorsque travelMode est défini sur WALK ou BICYCLE. Le trafic en temps réel n'est compatible qu'avec DRIVE et TWO_WHEELER.
    • Énumérations obligatoires : assurez-vous que travelMode et travelDirection (FROM ou TO) sont spécifiés et ne sont pas définis sur *_UNSPECIFIED.
    • Coordonnées d'origine (location) : définissez à la fois latitude (en [-90, 90]) et longitude (en [-180, 180]). Un champ omis est traité comme 0 sans erreur : l'omission des deux donne (0, 0), qui est rejeté ; l'omission de latitude uniquement place l'origine sur l'équateur ; et l'omission de longitude uniquement la place sur le méridien d'origine.
    • Format de l'ID de lieu (place) : assurez-vous que place est un ID de lieu ou un nom de ressource places/{place_id} (par exemple, "places/ChIJIQBpAG2ahYAR_6128GcTUEo"), sans segment de chemin supplémentaire, et qu'il fait référence à un ID de lieu valide.
    • Masque de champ (X-Goog-FieldMask) : s'il est fourni, l'en-tête doit référencer des chemins de réponse valides tels que isochrone, isochrone.geoJson ou *.
    • Clé API non valide (API_KEY_INVALID) : une clé API incorrecte ou non reconnue dans X-Goog-Api-Key ou ?key= renvoie 400 INVALID_ARGUMENT avec le motif API_KEY_INVALID.
  • 403 PERMISSION_DENIED : échec de l'authentification ou de l'autorisation :
    • Aucun identifiant d'authentification (jeton X-Goog-Api-Key, ?key= ou Authorization: Bearer) n'a été fourni dans la requête.
    • L'API Isochrones (isochrones.googleapis.com) n'est pas activée dans votre projet Google Cloud, ou la facturation n'est pas activée.
    • Votre clé API comporte des restrictions de cible d'API, d'adresse IP ou de référent HTTP qui bloquent les requêtes vers isochrones.googleapis.com.
  • 404 NOT_FOUND : l'origine n'a pas pu être résolue ou alignée sur le réseau routier :
    • Impossible de résoudre place en un emplacement. Vérifiez que l'ID de lieu est valide et à jour.
    • Le centroïde de l'origine location ou place se trouve plus loin d'un segment de route compatible avec le mode que la distance d'alignement maximale (environ 200 mètres, ou moins pour WALK et BICYCLE). Rapprochez la coordonnée d'une route publique ou transmettez les coordonnées d'une entrée de route au lieu d'un grand parc ou d'un ID de lieu d'un point de repère.
    • La coordonnée se trouve dans une zone sans données routières (par exemple, en pleine mer).
  • 429 RESOURCE_EXHAUSTED : votre projet a dépassé sa limite de quota par minute (par défaut, 300 requêtes par minute) :

    {
      "error": {
        "code": 429,
        "message": "Quota exceeded for quota metric 'Requests' and limit 'Requests per minute' of service 'isochrones.googleapis.com'.",
        "status": "RESOURCE_EXHAUSTED"
      }
    }
    

    Limitez les taux de demandes client et relancez les réponses 429 à l'aide d'un intervalle exponentiel entre les tentatives avec une gigue aléatoire.

  • 503 UNAVAILABLE : le service est temporairement indisponible ou surchargé. Relancez la requête avec un intervalle exponentiel entre les tentatives.

  • 500 INTERNAL : une erreur interne du serveur s'est produite, par exemple un délai avant expiration du backend. Relancez la requête avec un intervalle exponentiel entre les tentatives.