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 । রুটের জ্যামিতি ( dynamicRoute ) আপডেট করার সময়, আপনাকে অবশ্যই সম্পূর্ণ dynamicRoute অবজেক্টটি (অরিজিন, ডেস্টিনেশন এবং মধ্যবর্তী ওয়েপয়েন্ট) সরবরাহ করতে হবে। আংশিক সাবফিল্ড আপডেট সমর্থিত নয়। name , createTime , এবং state মতো রিড-অনলি সিস্টেম ফিল্ডগুলো পরিবর্তন করা যাবে না। BigQuery-এর হিস্টোরিক্যাল ডেটা একই selectedRouteId অধীনে পুরোনো এবং আপডেট করা জ্যামিতির ডেটা ধরে রাখবে। আপনার যদি আলাদা হিস্টোরিক্যাল ডেটার প্রয়োজন হয়, তবে আপডেট না করে একটি নতুন রুট তৈরি করুন।

একটি রাউটের জ্যামিতি ( dynamicRoute ) আপডেট করার জন্য এটিকে পুনরায় যাচাই (revalidate) করতে হয়। রাউটটি STATE_RUNNING বা STATE_INVALID অবস্থায় থাকলে জ্যামিতি আপডেট করার অনুমতি দেওয়া হয়, এবং STATE_VALIDATING বা STATE_DELETING অবস্থায় থাকলে তা প্রত্যাখ্যান করা হয়। আরও তথ্যের জন্য, 'Validation and route states' দেখুন। STATE_DELETING ছাড়া অন্য সব অবস্থায় displayName বা routeAttributes মতো মেটাডেটা আপডেট করার অনুমতি আছে।

নিম্নলিখিত কোড নমুনাটি 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 এন্ডপয়েন্টটি ব্যবহার করুন। এই এন্ডপয়েন্টটি আপনাকে এক কলে ১,০০০টি পর্যন্ত রুট আপডেট করার সুযোগ দেয়। ব্যাচ আপডেটগুলো অ্যাটমিক হয়: যদি অনুরোধের কোনো রুট ভ্যালিডেশনে ব্যর্থ হয় বা আপডেট করা না যায়, তবে ব্যাচের কোনো রুটই পরিবর্তিত হয় না।

batchUpdate এন্ডপয়েন্টে একটি POST অনুরোধ পাঠান:

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 ত্রুটি দেখা দেয়।

নিম্নলিখিত কোড নমুনাটি 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"
    },
    {
      "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"
    }
  ]
}