Update selected routes

На этой странице описано, как обновить уже созданные маршруты с помощью API выбора дорог:

Обновить маршрут

Для обновления маршрута отправьте PATCH запрос на конечную точку patch :

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

Тело запроса должно представлять собой JSON-объект, содержащий поля объекта SelectedRoute , которые необходимо обновить. К обновляемым полям относятся displayName , routeAttributes и dynamicRoute . При обновлении геометрии маршрута ( dynamicRoute ) необходимо предоставить весь объект dynamicRoute (начальная, конечная и промежуточные точки). Частичное обновление подполей не поддерживается. Системные поля только для чтения, такие как name , createTime и state , нельзя изменить. Исторические данные в BigQuery сохранят данные для старой и обновленной геометрии под одним и тем же selectedRouteId . Если вам нужны отдельные исторические данные, создайте новый маршрут, а не выполняйте обновление.

Обновление геометрии маршрута ( dynamicRoute ) требует его повторной проверки. Обновление геометрии разрешено, если маршрут находится в состоянии STATE_RUNNING или STATE_INVALID , и отклоняется, если маршрут находится в состоянии STATE_VALIDATING или STATE_DELETING . Для получения дополнительной информации см. раздел «Проверка и состояния маршрута» . Обновление метаданных, таких как displayName или routeAttributes разрешено во всех состояниях, кроме 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"
}

Маршруты пакетного обновления

Для обновления нескольких маршрутов в одном запросе используйте конечную точку batchUpdate . Эта конечная точка позволяет обновить до 1000 маршрутов за один вызов. Пакетные обновления являются атомарными: если какой-либо маршрут в запросе не проходит проверку или не может быть обновлен, ни один маршрут в пакете не изменяется.

Отправьте POST запрос на конечную точку batchUpdate :

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

Тело запроса должно представлять собой JSON-объект, содержащий массив requests . Каждый объект в этом массиве является объектом UpdateSelectedRouteRequest , который указывает name маршрута, необязательную updateMask на уровне элемента и поля selectedRoute для обновления.

Параметр updateMask является необязательным и указывает список полей, подлежащих обновлению ( displayName , routeAttributes или весь объект 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"
    },
    {
      "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"
    }
  ]
}