JSON ম্যাপিং

Google Ads API-এর REST ইন্টারফেস ব্যবহার করার সময়, আপনি Google Ads API-এর .proto ডেসক্রিপটর ফাইলে উল্লেখ করা একই রিসোর্স ও প্রকারের JSON রিপ্রেজেন্টেশন নিয়ে কাজ করেন। JSON এনকোডিং স্কিম, প্রোটোকল বাফারের ভাষা নির্দেশিকা-এর JSON ম্যাপিং বিভাগে বর্ণিত ক্যানোনিকাল এনকোডিং স্কিম অনুসরণ করে।

সাধারণত, পরিষেবা থেকে ও সেটিতে পাঠানো সব টপ-লেভেল মেসেজ হল সিঙ্গল JSON অবজেক্ট। অধিকাংশ মিউটেট রিকোয়েস্টে একটি operations অ্যারে থাকে যার মধ্যে অনেক create, update বা delete অপারেশন থাকে। একইভাবে, search রেসপন্স হল JSON অবজেক্ট যাতে আপনার কোয়েরির ফলাফল সেট সহ একটি results অ্যারে থাকে।

JSON-এ শনাক্তকারী snake_case (প্রোটোকল বাফারে) থেকে lowerCamelCase-এ রূপান্তরিত হয়। এই নিয়মের একটি উল্লেখযোগ্য ব্যতিক্রম হল, Google Ads কোয়েরি ল্যাঙ্গুয়েজ কোয়েরি পাঠানোর জন্য search বা searchStream ব্যবহার করা। আপনি যে ইন্টারফেস ব্যবহার করছেন তা নির্বিশেষে, কোয়েরি ভাষাটি নিজেই স্নেক কেস ব্যবহার করে। তবে, REST-এ কোয়েরির ফলাফল সাধারণ JSON অবজেক্ট হিসেবে রিটার্ন করা হয় এবং সেগুলির আইডেন্টিফায়ার lowerCamelCase-এ থাকে।

যেমন, কোনও অ্যাকাউন্টে অ্যাক্টিভ কীওয়ার্ডের তালিকা পাওয়ার জন্য কোয়েরি কোয়েরির মধ্যেই স্নেক কেস ব্যবহার করে (ad_group_criterion, adGroupCriterion নয়):

POST /v26/customers/CUSTOMER_ID/googleAds:searchStream HTTP/1.1
Host: googleads.googleapis.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN

{
  "query": "SELECT ad_group_criterion.keyword.text
            FROM ad_group_criterion
            WHERE ad_group_criterion.type = 'KEYWORD'
            AND ad_group_criterion.status = 'ENABLED'"
}

তবে, উত্তরটি হল অবজেক্টের JSON উপস্থাপনা (যেহেতু এই অনুরোধে searchStream ব্যবহার করা হয়েছে তাই এটি JSON অ্যারেতে মোড়ানো) এবং এর পরিবর্তে camelCase শনাক্তকারী adGroupCriterion ব্যবহার করে:

[
  {
    "results": [
      {
        "adGroupCriterion": {
          "resourceName": "customers/1842689525/adGroupCriteria/55771861891~10003060",
          "keyword": {
            "text": "pay per click"
          }
        }
      },
      ...
    ]
  }
]