En esta página, se describe cómo actualizar las rutas que ya creaste con la API de Roads Selection:
- Actualizar una ruta: Actualiza los detalles de una sola ruta con el
patchextremo. - Actualización por lotes de rutas: Actualiza los detalles de varias rutas en una sola solicitud con el extremo
batchUpdate.
Actualizar una ruta
Para actualizar una ruta, envía una solicitud PATCH al extremo patch:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK
El cuerpo de la solicitud debe ser un objeto JSON que contenga los campos del
SelectedRoute que se actualizará. Los campos actualizables incluyen displayName,
routeAttributes y dynamicRoute. Cuando actualizas la geometría de la ruta (dynamicRoute), debes proporcionar todo el objeto dynamicRoute (origen, destino y puntos de ruta intermedios). No se admiten las actualizaciones parciales de subcampos. No se pueden modificar los campos del sistema de solo lectura, como name, createTime y state. Los datos históricos en BigQuery conservarán los datos de la geometría antigua y actualizada en el mismo selectedRouteId. Si necesitas datos históricos separados, crea una ruta nueva en lugar de realizar una actualización.
Para actualizar la geometría de una ruta (dynamicRoute), es necesario volver a validarla.
Se permiten las actualizaciones de geometría cuando la ruta está en STATE_RUNNING o STATE_INVALID, y se rechazan si la ruta está en STATE_VALIDATING o STATE_DELETING. Para obtener más información, consulta Validación y estados de la ruta.
Se permite actualizar metadatos como displayName o routeAttributes en todos los estados, excepto STATE_DELETING.
En la siguiente muestra de código, se muestra la estructura de una solicitud PATCH al
patch extremo:
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"Si la operación se realiza correctamente, la API muestra el recurso SelectedRoute actualizado:
{ "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" }
Actualizar rutas por lotes
Para actualizar varias rutas en una sola solicitud, usa el batchUpdate
extremo. Este extremo te permite actualizar hasta 1,000 rutas en una sola llamada. Las actualizaciones por lotes son atómicas: si alguna ruta de la solicitud no pasa la validación o no se puede actualizar, no se modificará ninguna ruta del lote.
Envía una solicitud POST al extremo batchUpdate:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate
El cuerpo de la solicitud debe ser un objeto JSON que contenga un array requests.
Cada objeto de este array es un UpdateSelectedRouteRequest que especifica el name de la ruta, un updateMask opcional a nivel del elemento y los campos selectedRoute que se actualizarán.
Un updateMask es un parámetro opcional que especifica la lista de campos que se
actualizarán (displayName, routeAttributes o todo el objeto dynamicRoute
). Configurar updateMask=* indica un reemplazo completo. Se puede especificar un updateMask dentro de cada elemento individual en requests o moverlo al nivel superior del cuerpo de la solicitud por lotes para aplicarlo a todas las rutas actualizadas del lote.
Si se omite updateMask, se da por sentado que se actualizarán todos los campos actualizables propagados en la solicitud. Si se establece un updateMask a nivel del lote y a nivel del elemento, deben coincidir. Si se especifican máscaras en conflicto, se genera un error INVALID_ARGUMENT.
En la siguiente muestra de código, se muestra la estructura de una solicitud POST al
batchUpdate extremo:
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"Si la operación se realiza correctamente, la API muestra una respuesta que contiene un array de los
SelectedRoute recursos que se actualizaron:
{ "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" }, { "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" } ] }