На этой странице описано, как обновить маршруты, созданные с помощью Roads Selection API.
- Обновление маршрута. Обновление сведений об одном маршруте с помощью конечной точки
patch. - Пакетное обновление маршрутов. Обновляйте сведения о нескольких маршрутах в одном запросе, используя конечную точку
batchUpdate.
Изменение маршрута
Чтобы обновить маршрут, отправьте запрос PATCH к конечной точке patch:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK
Тело запроса должно быть объектом JSON, содержащим поля обновляемого объекта SelectedRoute. Обновляемые поля включают displayName, routeAttributes, dynamicRoute и dynamicRouting (независимо от того, является ли маршрут фиксированным или динамическим). При обновлении путевых точек маршрута (dynamicRoute) необходимо предоставить весь объект dynamicRoute (пункты отправления и назначения, а также промежуточные путевые точки). Частичное обновление подполей не поддерживается. Системные поля, доступные только для чтения, например name, createTime и state, изменить нельзя. В BigQuery сохраняются данные как для прежних, так и для обновленных путевых точек с одним и тем же значением selectedRouteId. Если вам нужна отдельная статистика, создайте новый маршрут, а не обновляйте существующий.
Обновление путевых точек маршрута (dynamicRoute) запускает повторную проверку маршрута. Поля static_route_geometry и road_segment_ids в таблице BigQuery routes_status обновляются соответствующим образом.
Обновление путевых точек разрешено, если маршрут находится в состоянии STATE_RUNNING или STATE_INVALID, и отклоняется, если маршрут находится в состоянии STATE_VALIDATING или STATE_DELETING. Подробнее о проверке и статусах маршрутов…
Обновление метаданных, таких как displayName, routeAttributes или dynamicRouting, разрешено во всех статусах, кроме STATE_DELETING.
В приведенном ниже примере кода показана структура запроса PATCH к конечной точке 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"В случае успеха API возвращает обновленный ресурс 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", "dynamicRouting": TRUE_OR_FALSE }
Пакетное обновление маршрутов
Чтобы обновить несколько маршрутов в одном запросе, используйте конечную точку batchUpdate. Эта конечная точка позволяет обновить до 1000 маршрутов за один вызов. Пакетные обновления атомарны: если хотя бы один маршрут в запросе не проходит проверку или не может быть обновлен, ни один маршрут в пакете не изменяется.
Отправьте запрос POST конечной точке batchUpdate:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate
Тело запроса должно быть объектом JSON, содержащим массив requests.
Каждый объект в этом массиве представляет собой UpdateSelectedRouteRequest, в котором указывается name маршрута, необязательное поле updateMask на уровне элемента и поля selectedRoute, которые нужно обновить.
updateMask – это необязательный параметр, который указывает список полей, которые нужно обновить (displayName, routeAttributes, dynamicRouting или весь объект dynamicRoute). Значение updateMask=* указывает на полную замену. Параметр updateMask можно указать для каждого отдельного элемента в requests или переместить на верхний уровень тела пакетного запроса, чтобы применить ко всем обновленным маршрутам в пакете.
Если параметр updateMask не указан, обновляются все поля, которые можно обновить и которые заполнены в запросе. Если атрибут updateMask задан и на уровне пакета, и на уровне товара, значения должны совпадать. Если указать конфликтующие маски, возникнет ошибка INVALID_ARGUMENT.
В приведенном ниже примере кода показана структура запроса POST к конечной точке 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"В случае успеха API возвращает ответ, содержащий массив обновленных ресурсов SelectedRoute:
{ "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 } ] }