Update selected routes

इस पेज पर, Roads Selection API का इस्तेमाल करके पहले से बनाए गए रूट अपडेट करने का तरीका बताया गया है:

किसी रास्ते की जानकारी अपडेट करना

किसी रूट को अपडेट करने के लिए, 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) अपडेट करने पर, रास्ते की फिर से पुष्टि की जाती है. routes_status BigQuery टेबल में, static_route_geometry और road_segment_ids फ़ील्ड को इसके हिसाब से अपडेट किया जाता है.

वेपॉइंट को तब अपडेट किया जा सकता है, जब रूट STATE_RUNNING या STATE_INVALID स्टेटस में हो. अगर रूट STATE_VALIDATING या STATE_DELETING स्टेटस में है, तो वेपॉइंट को अपडेट नहीं किया जा सकता. ज़्यादा जानकारी के लिए, पुष्टि और रूट की स्थितियां देखें. STATE_DELETING को छोड़कर, अन्य सभी राज्यों में displayName, routeAttributes या dynamicRouting जैसे मेटाडेटा को अपडेट करने की अनुमति है.

यहां दिए गए कोड सैंपल में, 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"

काम पूरा होने पर, एपीआई अपडेट किया गया 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

अनुरोध के मुख्य हिस्से में एक JSON ऑब्जेक्ट होना चाहिए, जिसमें requests कलेक्शन शामिल हो. इस कलेक्शन में मौजूद हर ऑब्जेक्ट एक UpdateSelectedRouteRequest है, जो रूट name, आइटम-लेवल पर वैकल्पिक updateMask, और अपडेट किए जाने वाले selectedRoute फ़ील्ड के बारे में बताता है.

updateMask एक वैकल्पिक पैरामीटर है. इससे उन फ़ील्ड की सूची के बारे में पता चलता है जिन्हें अपडेट करना है (displayName, routeAttributes, dynamicRouting या पूरा dynamicRoute ऑब्जेक्ट). updateMask=* सेट करने का मतलब है कि पूरी तरह से बदलाव किया गया है. requests में मौजूद हर आइटम के लिए, updateMask तय किया जा सकता है. इसके अलावा, इसे बैच अनुरोध के मुख्य हिस्से के टॉप लेवल पर ले जाया जा सकता है, ताकि बैच में अपडेट किए गए सभी रूट पर इसे लागू किया जा सके. अगर 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"

अनुरोध पूरा होने पर, एपीआई एक जवाब दिखाता है. इसमें अपडेट किए गए 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
    }
  ]
}