Halaman ini menjelaskan cara memperbarui rute yang telah Anda buat menggunakan Roads Selection API:
- Memperbarui rute: Perbarui detail satu rute menggunakan endpoint
patch. - Memperbarui rute secara massal: Perbarui detail beberapa rute dalam satu permintaan menggunakan endpoint
batchUpdate.
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 } ] }