Update selected routes

이 페이지에서는 Roads Selection API를 사용하여 이미 만든 경로를 업데이트하는 방법을 설명합니다.

  • 경로 업데이트: patch 엔드포인트를 사용하여 단일 경로의 세부정보를 업데이트합니다.
  • 경로 일괄 업데이트: batchUpdate 엔드포인트를 사용하여 단일 요청으로 여러 경로의 세부정보를 업데이트합니다.

경로 업데이트

경로를 업데이트하려면 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
}

경로 일괄 업데이트

단일 요청에서 여러 경로를 업데이트하려면 batchUpdate 엔드포인트를 사용합니다. 이 엔드포인트를 사용하면 한 번의 호출로 최대 1,000개의 경로를 업데이트할 수 있습니다. 일괄 업데이트는 원자적입니다. 요청의 경로가 검증에 실패하거나 업데이트할 수 없는 경우 일괄의 경로가 수정되지 않습니다.

batchUpdate 엔드포인트에 POST 요청을 보냅니다.

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

요청 본문은 requests 배열을 포함하는 JSON 객체여야 합니다. 이 배열 내의 각 객체는 경로 name, 선택적 항목 수준 updateMask, 업데이트할 selectedRoute 필드를 지정하는 UpdateSelectedRouteRequest입니다.

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