Update selected routes

Esta página descreve como atualizar as rotas já criadas usando a API Roads Selection:

Atualizar uma rota

Para atualizar uma rota, envie uma solicitação PATCH para o 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, e dynamicRoute. Ao atualizar a geometria da rota (dynamicRoute), é necessário fornecer todo o objeto dynamicRoute (origem, destino e waypoints intermediários). Não há suporte para atualizações parciais de subcampos. Campos de sistema somente leitura, como name, createTime e state, não podem ser modificados. Os dados históricos no BigQuery vão reter dados para a geometria antiga e atualizada no mesmo selectedRouteId. Se você precisar de dados históricos separados, crie uma nova rota em vez de fazer uma atualização.

A atualização da geometria de uma rota (dynamicRoute) exige que ela seja revalidada. As atualizações de geometria são permitidas quando a rota está em STATE_RUNNING ou STATE_INVALID e são rejeitadas se a rota estiver em STATE_VALIDATING ou STATE_DELETING. Para mais informações, consulte Validação e estados de rota. A atualização de metadados, como displayName ou routeAttributes, é 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 patch endpoint:

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 for bem-sucedida, a API 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"
}

Atualização em lote de rotas

Para atualizar várias rotas em uma única solicitação, use o batchUpdate endpoint. 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 batchUpdate endpoint:

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 o name da rota, 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 ou todo o objeto dynamicRoute). A configuração updateMask=* indica uma substituição completa. Um updateMask pode ser especificado dentro de cada item individual em requests ou movido para o nível superior do corpo da solicitação em lote para ser aplicado 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 no nível do item, eles precisarão corresponder. A especificação de 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 batchUpdate endpoint:

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 for bem-sucedida, a API retornará uma resposta que contém uma matriz dos SelectedRoute recursos 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"
    },
    {
      "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"
    }
  ]
}