Update selected routes

Trang này mô tả cách cập nhật các tuyến đường mà bạn đã tạo bằng Roads Selection API:

Cập nhật tuyến đường

Để cập nhật một tuyến đường, hãy gửi yêu cầu PATCH đến điểm cuối patch:

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

Nội dung yêu cầu phải là một đối tượng JSON chứa các trường của SelectedRoute cần được cập nhật. Các trường có thể cập nhật bao gồm displayName, routeAttributesdynamicRoute. Khi cập nhật hình học tuyến đường (dynamicRoute), bạn phải cung cấp toàn bộ đối tượng dynamicRoute (điểm xuất phát, đích đến và các điểm tham chiếu trung gian). Hệ thống không hỗ trợ cập nhật một phần trường con. Bạn không thể sửa đổi các trường hệ thống chỉ đọc như name, createTimestate. Dữ liệu cũ và dữ liệu mới của hình học sẽ được giữ lại trong dữ liệu cũ trong BigQuery theo cùng một selectedRouteId. Nếu bạn cần dữ liệu riêng biệt trong quá khứ, hãy tạo một tuyến đường mới thay vì cập nhật.

Bạn cần xác thực lại khi cập nhật hình học của một tuyến đường (dynamicRoute). Bạn được phép cập nhật hình học khi tuyến đường ở trạng thái STATE_RUNNING hoặc STATE_INVALID, và bị từ chối nếu tuyến đường ở trạng thái STATE_VALIDATING hoặc STATE_DELETING. Để biết thêm thông tin, hãy xem phần Xác thực và trạng thái tuyến đường. Bạn có thể cập nhật siêu dữ liệu như displayName hoặc routeAttributes ở tất cả các tiểu bang, ngoại trừ STATE_DELETING.

Mã mẫu sau đây cho thấy cấu trúc của một yêu cầu PATCH đến điểm cuối 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"

Khi thành công, API sẽ trả về tài nguyên SelectedRoute đã cập nhật:

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

Cập nhật tuyến đường theo lô

Để cập nhật nhiều tuyến đường trong một yêu cầu duy nhất, hãy sử dụng điểm cuối batchUpdate. Điểm cuối này cho phép bạn cập nhật tối đa 1.000 tuyến đường trong một lệnh gọi. Các bản cập nhật hàng loạt có tính chất độc lập: nếu bất kỳ tuyến đường nào trong yêu cầu không xác thực được hoặc không cập nhật được, thì không có tuyến đường nào trong lô được sửa đổi.

Gửi yêu cầu POST đến điểm cuối batchUpdate:

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

Nội dung yêu cầu phải là một đối tượng JSON chứa một mảng requests. Mỗi đối tượng trong mảng này là một UpdateSelectedRouteRequest chỉ định tuyến đường name, updateMask ở cấp mục (không bắt buộc) và các trường selectedRoute cần cập nhật.

updateMask là một tham số không bắt buộc, chỉ định danh sách các trường cần cập nhật (displayName, routeAttributes hoặc toàn bộ đối tượng dynamicRoute). Việc đặt updateMask=* cho biết yêu cầu thay thế toàn bộ. Bạn có thể chỉ định một updateMask trong từng mục riêng lẻ trong requests hoặc chuyển đến cấp cao nhất của nội dung yêu cầu hàng loạt để áp dụng cho tất cả các tuyến đường được cập nhật trong lô. Nếu bạn bỏ qua updateMask, tất cả các trường có thể cập nhật được điền sẵn trong yêu cầu đều ngầm được cập nhật. Nếu bạn đặt updateMask ở cả cấp lô và cấp mặt hàng, thì các giá trị này phải khớp nhau. Việc chỉ định các mặt nạ xung đột sẽ dẫn đến lỗi INVALID_ARGUMENT.

Mã mẫu sau đây cho thấy cấu trúc của một yêu cầu POST đến điểm cuối 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"

Khi thành công, API sẽ trả về một phản hồi chứa một mảng các tài nguyên SelectedRoute đã được cập nhật:

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