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, dan dynamicRoute. Saat memperbarui geometri rute (dynamicRoute), Anda harus menyediakan seluruh objek dynamicRoute (asal, tujuan, dan titik jalan perantara). Pembaruan sub-kolom sebagian tidak didukung. Kolom sistem hanya baca seperti name, createTime, dan state tidak dapat diubah. Data historis di BigQuery akan menyimpan data untuk geometri lama dan yang diperbarui dengan selectedRouteId yang sama. Jika Anda memerlukan data historis terpisah, buat rute baru, bukan melakukan update.

Memperbarui geometri rute (dynamicRoute) mengharuskan rute divalidasi ulang. Pembaruan geometri diizinkan saat rute berada dalam STATE_RUNNING atau STATE_INVALID, dan ditolak jika rute berada dalam STATE_VALIDATING atau STATE_DELETING. Untuk mengetahui informasi selengkapnya, lihat Status validasi dan rute. Memperbarui metadata seperti displayName atau routeAttributes 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"
}

Kumpulan update rute

Untuk memperbarui beberapa rute dalam satu permintaan, gunakan endpoint batchUpdate. Endpoint ini memungkinkan Anda memperbarui hingga 1.000 rute dalam satu panggilan. Update batch bersifat atomik: jika ada rute dalam permintaan yang gagal divalidasi atau tidak dapat diperbarui, tidak ada rute dalam batch 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 rute name, updateMask tingkat item opsional, dan kolom selectedRoute yang akan diupdate.

updateMask adalah parameter opsional yang menentukan daftar kolom yang akan diperbarui (displayName, routeAttributes, atau seluruh objek dynamicRoute). Menetapkan updateMask=* menunjukkan penggantian penuh. updateMask dapat ditentukan di dalam setiap item individual dalam requests, atau dipindahkan ke tingkat teratas isi permintaan batch untuk diterapkan ke semua rute yang diperbarui dalam batch. Jika updateMask tidak ada, semua kolom yang dapat diupdate yang diisi dalam permintaan dianggap akan diupdate. 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"
    },
    {
      "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"
    }
  ]
}