Update selected routes

Questa pagina descrive come aggiornare le route che hai già creato utilizzando l'API Roads Selection:

Aggiorna una route

Per aggiornare una route, invia una richiesta PATCH all'endpoint patch:

https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK

Il corpo della richiesta deve essere un oggetto JSON contenente i campi di SelectedRoute da aggiornare. I campi aggiornabili includono displayName, routeAttributes, e dynamicRoute. Quando aggiorni la geometria della route (dynamicRoute), devi fornire l'intero oggetto dynamicRoute (origine, destinazione e waypoint intermedi). Gli aggiornamenti parziali dei sottocampi non sono supportati. I campi di sistema di sola lettura come name, createTime e state non possono essere modificati. I dati storici in BigQuery conserveranno i dati per la geometria precedente e aggiornata con lo stesso selectedRouteId. Se hai bisogno di dati storici separati, crea una nuova route anziché eseguire un aggiornamento.

L'aggiornamento della geometria di una route (dynamicRoute) richiede la sua convalida. Gli aggiornamenti della geometria sono consentiti quando la route è in STATE_RUNNING o STATE_INVALID e vengono rifiutati se la route è in STATE_VALIDATING o STATE_DELETING. Per saperne di più, consulta la sezione Convalida e stati delle route. L'aggiornamento dei metadati come displayName o routeAttributes è consentito in tutti gli stati tranne STATE_DELETING.

Il seguente esempio di codice mostra la struttura di una PATCH richiesta all' 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"

In caso di esito positivo, l'API restituisce la risorsa aggiornata SelectedRoute:

{
  "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"
}

Aggiornamento batch delle route

Per aggiornare più route in un'unica richiesta, utilizza l'batchUpdate endpoint. Questo endpoint ti consente di aggiornare fino a 1000 route in una singola chiamata. Gli aggiornamenti batch sono atomici: se la convalida di una route nella richiesta non va a buon fine o non può essere aggiornata, non vengono modificate le route nel batch.

Invia una richiesta POST all'endpoint batchUpdate:

https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate

Il corpo della richiesta deve essere un oggetto JSON contenente un array requests. Ogni oggetto all'interno di questo array è un UpdateSelectedRouteRequest che specifica il name della route, un updateMask facoltativo a livello di elemento e i campi selectedRoute da aggiornare.

Un updateMask è un parametro facoltativo che specifica l'elenco dei campi da aggiornare (displayName, routeAttributes o l'intero oggetto dynamicRoute ). L'impostazione di updateMask=* indica una sostituzione completa. Un updateMask può essere specificato all'interno di ogni singolo elemento in requests o spostato al livello superiore del corpo della richiesta batch per essere applicato a tutte le route aggiornate nel batch. Se updateMask viene omesso, si presuppone che vengano aggiornati tutti i campi aggiornabili compilati nella richiesta. Se un updateMask è impostato sia a livello di batch che a livello di elemento, devono corrispondere. La specifica di maschere in conflitto genera un errore INVALID_ARGUMENT.

Il seguente esempio di codice mostra la struttura di una richiesta POST all' 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"

In caso di esito positivo, l'API restituisce una risposta contenente un array delle SelectedRoute risorse aggiornate:

{
  "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"
    }
  ]
}