Update selected routes

このページでは、Roads Selection API を使用して、作成済みのルートを更新する方法について説明します。

ルートの更新

ルートを更新するには、patch エンドポイントに PATCH リクエストを送信します。

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

リクエストの本文は、更新する SelectedRoute のフィールドを含む JSON オブジェクトにする必要があります。更新可能なフィールドには、displayName、routeAttributes、dynamicRoute、dynamicRouting(ルートが固定か動的か)があります。ルートのウェイポイント(dynamicRoute)を更新する場合は、dynamicRoute オブジェクト全体(出発地、目的地、中間のウェイポイント)を指定する必要があります。サブフィールドの部分更新はサポートされていません。name、createTime、state などの読み取り専用システム フィールドは変更できません。BigQuery の過去のデータには、同じ selectedRouteId の以前のウェイポイントと更新されたウェイポイントのデータが保持されます。個別の過去のデータが必要な場合は、更新を行うのではなく、新しいルートを作成します。

ルートのウェイポイント(dynamicRoute)を更新すると、ルートの再検証がトリガーされます。routes_status BigQuery テーブルの static_route_geometry フィールドと road_segment_ids フィールドが、それに応じて更新されます。

ウェイポイントの更新は、ルートが 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
}

ルートをバッチ アップデートする

1 つのリクエストで複数のルートを更新するには、batchUpdate エンドポイントを使用します。このエンドポイントを使用すると、1 回の呼び出しで最大 1,000 件のルートを更新できます。バッチ アップデートはアトミックです。リクエスト内のいずれかのルートが検証に失敗した場合、または更新できない場合、バッチ内のルートは変更されません。

POST リクエストを batchUpdate エンドポイントに送信します。

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

リクエストの本文は、requests 配列を含む JSON オブジェクトにする必要があります。この配列内の各オブジェクトは UpdateSelectedRouteRequest で、ルート name、オプションのアイテムレベルの updateMask、更新する selectedRoute フィールドを指定します。

updateMask は、更新するフィールドのリスト(displayName、routeAttributes、dynamicRouting、または dynamicRoute オブジェクト全体)を指定するオプションのパラメータです。updateMask=* を設定すると、完全な置換が行われます。updateMask は、requests 内の個々のアイテム内で指定することも、バッチ リクエスト本文の最上位に移動して、バッチ内の更新されたすべてのルートに適用することもできます。updateMask を省略すると、リクエストに入力された更新可能なすべてのフィールドが更新されることを意味します。updateMask がバッチレベルとアイテムレベルの両方で設定されている場合は、一致している必要があります。競合するマスクを指定すると、INVALID_ARGUMENT エラーが発生します。

次のコードサンプルは、batchUpdate エンドポイントへの POST リクエストの構造を示しています。

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