Nesta página, descrevemos como atualizar rotas que você já criou usando a API Roads Selection:
- Atualizar uma rota: atualize os detalhes de uma única rota usando o endpoint
patch. - Atualização em lote de rotas: atualize os detalhes de várias rotas em uma única solicitação usando o endpoint
batchUpdate.
Atualizar uma rota
Para atualizar uma rota, envie uma solicitação PATCH ao endpoint patch:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK
O corpo da solicitação precisa ser um objeto JSON que contenha os campos do
SelectedRoute a serem atualizados. Os campos atualizáveis incluem displayName,
routeAttributes, dynamicRoute e dynamicRouting (se a
rota é fixa ou dinâmica). Ao atualizar os waypoints do trajeto (dynamicRoute), é necessário fornecer todo o objeto dynamicRoute (origem, destino e waypoints intermediários). Não é possível fazer atualizações parciais de subcampos. Os campos do sistema somente leitura, como name, createTime e state,
não podem ser modificados. Os dados históricos no BigQuery retêm os dados dos waypoints anteriores e
atualizados no mesmo selectedRouteId. Se você precisar de dados históricos separados, crie uma nova rota em vez de realizar uma atualização.
Atualizar os waypoints de um trajeto (dynamicRoute) aciona uma revalidação do
trajeto. Os campos static_route_geometry e road_segment_ids na tabela routes_status do BigQuery são atualizados de acordo.
As atualizações de waypoints são permitidas quando o trajeto está em STATE_RUNNING ou
STATE_INVALID e são rejeitadas se o trajeto está em STATE_VALIDATING ou
STATE_DELETING. Para mais informações, consulte Estados de validação e rota.
A atualização de metadados como displayName, routeAttributes ou
dynamicRouting é permitida em todos os estados, exceto STATE_DELETING.
O exemplo de código a seguir mostra a estrutura de uma solicitação PATCH para o endpoint 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"Se a operação for bem-sucedida, a API vai retornar o recurso SelectedRoute atualizado:
{ "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 }
Atualização em lote de rotas
Para atualizar várias rotas em uma única solicitação, use o endpoint batchUpdate. Esse endpoint permite atualizar até 1.000 rotas em uma chamada. As atualizações em lote são atômicas: se alguma rota na solicitação falhar na validação ou não puder ser atualizada, nenhuma rota no lote será modificada.
Envie uma solicitação POST para o endpoint batchUpdate:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate
O corpo da solicitação precisa ser um objeto JSON que contenha uma matriz requests.
Cada objeto nessa matriz é um UpdateSelectedRouteRequest que
especifica a rota name, um updateMask opcional no nível do item e os
campos selectedRoute a serem atualizados.
Um updateMask é um parâmetro opcional que especifica a lista de campos a serem atualizados (displayName, routeAttributes, dynamicRouting ou todo o objeto dynamicRoute). Definir updateMask=* indica uma substituição
completa. É possível especificar um updateMask
em cada item individual em requests ou movê-lo para o
nível superior do corpo da solicitação em lote para aplicar a todas as rotas atualizadas no lote.
Se updateMask for omitido, todos os campos atualizáveis preenchidos na solicitação serão
atualizados. Se um updateMask for definido no nível do lote e do item, eles precisarão ser correspondentes. Especificar máscaras conflitantes resulta em um
erro INVALID_ARGUMENT.
O exemplo de código a seguir mostra a estrutura de uma solicitação POST para o endpoint 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"Se a solicitação for bem-sucedida, a API vai retornar uma resposta com uma matriz dos recursos SelectedRoute que foram atualizados:
{ "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 } ] }