Cette page explique comment mettre à jour des itinéraires que vous avez déjà créés à l'aide de l'API Roads Selection :
- Mettre à jour une route : mettez à jour les détails d'une seule route à l'aide du point de terminaison
patch. - Mise à jour groupée des routes : mettez à jour les détails de plusieurs routes dans une seule requête à l'aide du point de terminaison
batchUpdate.
Mettre à jour une route
Pour mettre à jour une route, envoyez une requête PATCH au point de terminaison patch :
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK
Le corps de la requête doit être un objet JSON contenant les champs de l'objet SelectedRoute à mettre à jour. Les champs modifiables incluent displayName, routeAttributes, dynamicRoute et dynamicRouting (que la route soit fixe ou dynamique). Lorsque vous mettez à jour les points de cheminement d'un itinéraire (dynamicRoute), vous devez fournir l'intégralité de l'objet dynamicRoute (point de départ, destination et points de cheminement intermédiaires). Les mises à jour partielles de sous-champs ne sont pas acceptées. Les champs système en lecture seule tels que name, createTime et state ne peuvent pas être modifiés. Les données historiques de BigQuery conservent les données des points de cheminement précédents et mis à jour sous le même selectedRouteId. Si vous avez besoin de données historiques distinctes, créez une route plutôt que d'effectuer une mise à jour.
La mise à jour des points de cheminement d'un itinéraire (dynamicRoute) déclenche une revalidation de l'itinéraire. Les champs static_route_geometry et road_segment_ids de la table BigQuery routes_status sont mis à jour en conséquence.
Les mises à jour des points de cheminement sont autorisées lorsque l'itinéraire est à l'état STATE_RUNNING ou STATE_INVALID, et sont rejetées si l'itinéraire est à l'état STATE_VALIDATING ou STATE_DELETING. Pour en savoir plus, consultez Validation et états des routes.
La mise à jour des métadonnées telles que displayName, routeAttributes ou dynamicRouting est autorisée dans tous les états, sauf STATE_DELETING.
L'exemple de code suivant montre la structure d'une requête PATCH envoyée au point de terminaison patch :
curl -X PATCH -d '{
"dynamicRoute": {
"origin": {
"latitude": 38.5817,
"longitude": -121.4944
},
"destination": {
"latitude": 38.5449,
"longitude": -121.7405
}
}
}' \
-H 'X-Goog-User-Project: PROJECT_NUMBER' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
"https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes/"\
"SELECTED_ROUTE_ID?updateMask=dynamicRoute"En cas de réussite, l'API renvoie la ressource SelectedRoute mise à jour :
{ "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID", "dynamicRoute": { "origin": { "latitude": 38.5817, "longitude": -121.4944 }, "destination": { "latitude": 38.5449, "longitude": -121.7405 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING", "dynamicRouting": TRUE_OR_FALSE }
Mise à jour groupée des routes
Pour mettre à jour plusieurs routes dans une même requête, utilisez le point de terminaison batchUpdate. Ce point de terminaison vous permet de mettre à jour jusqu'à 1 000 itinéraires en un seul appel. Les mises à jour groupées sont atomiques : si une route de la requête échoue à la validation ou ne peut pas être mise à jour, aucune route du groupe n'est modifiée.
Envoyez une requête POST au point de terminaison batchUpdate :
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate
Le corps de la requête doit être un objet JSON contenant un tableau requests.
Chaque objet de ce tableau est un UpdateSelectedRouteRequest qui spécifie l'name de la route, un updateMask facultatif au niveau de l'élément et les champs selectedRoute à mettre à jour.
updateMask est un paramètre facultatif qui spécifie la liste des champs à mettre à jour (displayName, routeAttributes, dynamicRouting ou l'intégralité de l'objet dynamicRoute). La définition de updateMask=* indique un remplacement complet. Un updateMask peut être spécifié dans chaque élément individuel de requests ou déplacé au niveau supérieur du corps de la requête par lot pour s'appliquer à toutes les routes mises à jour dans le lot.
Si updateMask est omis, tous les champs modifiables renseignés dans la requête sont implicitement mis à jour. Si un updateMask est défini à la fois au niveau du lot et au niveau de l'élément, ils doivent correspondre. La spécification de masques en conflit entraîne une erreur INVALID_ARGUMENT.
L'exemple de code suivant montre la structure d'une requête POST envoyée au point de terminaison batchUpdate :
curl -X POST -d '{
"requests": [
{
"selectedRoute": {
"name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_1",
"displayName": "DISPLAY_NAME_1",
"dynamicRoute": {
"origin": {"latitude": 37.5, "longitude": -122.1},
"destination": {"latitude": 37.8, "longitude": -122.5}
}
},
"updateMask": "displayName,dynamicRoute"
},
{
"selectedRoute": {
"name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_2",
"displayName": "DISPLAY_NAME_2",
"dynamicRoute": {
"origin": {"latitude": 37.5, "longitude": -122.1},
"destination": {"latitude": 37.8, "longitude": -122.5}
}
},
"updateMask": "displayName,dynamicRoute"
}
]}' \
-H 'X-Goog-User-Project: PROJECT_NUMBER' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
"https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes:batchUpdate"En cas de réussite, l'API renvoie une réponse contenant un tableau des ressources SelectedRoute qui ont été mises à jour :
{ "selectedRoutes": [ { "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_1", "displayName": "DISPLAY_NAME_1", "dynamicRoute": { "origin": { "latitude": 37.5, "longitude": -122.1 }, "destination": { "latitude": 37.8, "longitude": -122.5 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING", "dynamicRouting": TRUE_OR_FALSE }, { "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_2", "displayName": "DISPLAY_NAME_2", "dynamicRoute": { "origin": { "latitude": 37.5, "longitude": -122.1 }, "destination": { "latitude": 37.8, "longitude": -122.5 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING", "dynamicRouting": TRUE_OR_FALSE } ] }