Update selected routes

Halaman ini menjelaskan cara memperbarui rute yang telah Anda buat menggunakan Roads Selection API:

Memperbarui rute

Untuk memperbarui rute, kirim permintaan PATCH ke endpoint patch:

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

Isi permintaan harus berupa objek JSON yang berisi kolom SelectedRoute yang akan diperbarui. Kolom yang dapat diupdate mencakup displayName, routeAttributes, dynamicRoute, dan dynamicRouting (apakah rutenya tetap atau dinamis). Saat memperbarui titik jalan rute (dynamicRoute), Anda harus menyediakan seluruh objek dynamicRoute (titik jalan asal, tujuan, dan perantara). Pembaruan subkolom parsial tidak didukung. Kolom sistem hanya baca seperti name, createTime, dan state tidak dapat diubah. Data historis di BigQuery menyimpan data untuk titik jalan sebelumnya dan yang diperbarui di bawah selectedRouteId yang sama. Jika Anda memerlukan data historis terpisah, buat rute baru, bukan melakukan update.

Memperbarui titik jalan rute (dynamicRoute) akan memicu validasi ulang rute. Kolom static_route_geometry dan road_segment_ids di tabel BigQuery routes_status akan diperbarui.

Pembaruan titik jalan diizinkan saat rute berada di STATE_RUNNING atau STATE_INVALID, dan ditolak jika rute berada di STATE_VALIDATING atau STATE_DELETING. Untuk mengetahui informasi selengkapnya, lihat Status validasi dan rute. Memperbarui metadata seperti displayName, routeAttributes, atau dynamicRouting diizinkan di semua status kecuali STATE_DELETING.

Contoh kode berikut menunjukkan struktur permintaan PATCH ke 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"

Jika berhasil, API akan menampilkan resource SelectedRoute yang diperbarui:

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

Rute kumpulan update

Untuk memperbarui beberapa rute dalam satu permintaan, gunakan endpoint batchUpdate. Endpoint ini memungkinkan Anda memperbarui hingga 1.000 rute dalam satu panggilan. Kumpulan update bersifat menyeluruh: jika ada rute dalam permintaan yang gagal divalidasi atau tidak dapat diupdate, tidak ada rute dalam kumpulan yang diubah.

Kirim permintaan POST ke endpoint batchUpdate:

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

Isi permintaan harus berupa objek JSON yang berisi array requests. Setiap objek dalam array ini adalah UpdateSelectedRouteRequest yang menentukan name rute, updateMask tingkat item opsional, dan kolom selectedRoute yang akan diperbarui.

updateMask adalah parameter opsional yang menentukan daftar kolom yang akan diperbarui (displayName, routeAttributes, dynamicRouting, atau seluruh objek dynamicRoute). Menetapkan updateMask=* menunjukkan penggantian penuh. updateMask dapat ditentukan di dalam setiap item di requests, atau dipindahkan ke tingkat teratas isi permintaan batch untuk diterapkan ke semua rute yang diperbarui dalam batch. Jika updateMask dihilangkan, semua kolom yang dapat diupdate yang diisi dalam permintaan akan diperbarui. Jika updateMask ditetapkan di tingkat batch dan tingkat item, keduanya harus cocok. Menentukan mask yang bertentangan akan menghasilkan error INVALID_ARGUMENT.

Contoh kode berikut menunjukkan struktur permintaan POST ke 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"

Jika berhasil, API akan menampilkan respons yang berisi array resource SelectedRoute yang telah diperbarui:

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