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

অনুরোধের বডি অবশ্যই একটি 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"

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

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"

সফল হলে, 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
    }
  ]
}