সংস্করণ করা

অ্যাড ম্যানেজার REST API উভয়ই মেজর সংস্করণ রিলিজ এবং বর্তমান প্রধান সংস্করণের সাথে ব্যাকওয়ার্ড সামঞ্জস্যপূর্ণ ইন-প্লেস রিলিজ নাম দিয়েছে।

মেজর সংস্করণের (যেমন v1) মধ্যে পরিষেবা, পদ্ধতি এবং ক্ষেত্রগুলি যেকোন সময় অবচয় হিসাবে চিহ্নিত করা যেতে পারে, তবে, মেজর সংস্করণটি অবসর না হওয়া পর্যন্ত তারা সমর্থিত থাকবে।

প্রধান সংস্করণ রিলিজ

একটি প্রধান সংস্করণ রিলিজ একটি রিলিজ হিসাবে সংজ্ঞায়িত করা হয় পিছনের বেমানান API পরিবর্তন সহ। এই রিলিজের নাম দেওয়া হবে এবং আলাদা API এন্ডপয়েন্ট থাকবে। পূর্ববর্তী প্রধান সংস্করণগুলি মাইগ্রেশন সময়ের জন্য সমর্থিত।

Ad Manager REST API-এর প্রধান সংস্করণগুলির জন্য নিয়মিত প্রকাশের ক্যাডেন্স নেই। নতুন মেজর সংস্করণ শুধুমাত্র প্রয়োজন হলে প্রকাশ করা হবে.

ইন-প্লেস রিলিজ

নতুন বৈশিষ্ট্য এবং বাগ ফিক্স সহ পশ্চাদগামী সামঞ্জস্যপূর্ণ পরিবর্তনগুলি বর্তমান মেজর API সংস্করণে জায়গায় প্রকাশিত হয়েছে। ক্লায়েন্টদের অবশ্যই API প্রতিক্রিয়াগুলিতে অজানা ক্ষেত্রগুলি পরিচালনা করতে হবে।

পশ্চাদপদ সামঞ্জস্য

একটি প্রধান সংস্করণের মধ্যে পরিবর্তনের জন্য পশ্চাদগামী সামঞ্জস্য বজায় রাখা হয়। সামঞ্জস্য এইভাবে সংজ্ঞায়িত করা হয়:

  1. উত্স সামঞ্জস্যতা: পূর্ববর্তী রিলিজের বিপরীতে লেখা কোড একটি নতুন রিলিজের সাথে কম্পাইল করে এবং ক্লায়েন্ট লাইব্রেরির একটি নতুন সংস্করণের সাথে সফলভাবে চলে।

  2. তারের সামঞ্জস্য: পূর্ববর্তী রিলিজের বিপরীতে লেখা কোড একটি নতুন সার্ভারের সাথে সঠিকভাবে যোগাযোগ করে। অন্য কথায়, শুধুমাত্র ইনপুট এবং আউটপুটগুলিই সামঞ্জস্যপূর্ণ নয়, তবে সিরিয়ালাইজেশন এবং ডিসিরিয়ালাইজেশন প্রত্যাশাগুলি মেলে চলেছে।

  3. শব্দার্থগত সামঞ্জস্যতা: পূর্ববর্তী সংস্করণের বিপরীতে লেখা কোডটি সবচেয়ে যুক্তিসঙ্গত বিকাশকারীরা যা আশা করবে তা পেতেই থাকে।

নিম্নলিখিত সারণীগুলি API পরিবর্তনের প্রকারগুলি গণনা করে এবং যদি সেগুলি পশ্চাদমুখী সামঞ্জস্যপূর্ণ বলে বিবেচিত হয়৷

সেবা

পরিবর্তনের ধরন পশ্চাদপদ সামঞ্জস্যপূর্ণ
একটি নতুন পরিষেবা যোগ করুন হ্যাঁ
একটি পরিষেবা সরান না

পদ্ধতি

পরিবর্তনের ধরন পশ্চাদপদ সামঞ্জস্যপূর্ণ
একটি নতুন পদ্ধতি যোগ করুন হ্যাঁ
একটি পদ্ধতি সরান না
একটি পদ্ধতির অনুরোধ বা প্রতিক্রিয়া প্রকার পরিবর্তন করুন না

বস্তু

পরিবর্তনের ধরন পশ্চাদপদ সামঞ্জস্যপূর্ণ
একটি প্রয়োজনীয় ক্ষেত্র যোগ করুন না
একটি ঐচ্ছিক ক্ষেত্র যোগ করুন হ্যাঁ
একটি সাবমেসেজের মধ্যে বা বাইরে একটি ক্ষেত্র সরানো৷ না
প্রয়োজনীয় থেকে ঐচ্ছিক একটি ক্ষেত্র পরিবর্তন করুন হ্যাঁ
ঐচ্ছিক থেকে প্রয়োজনীয় ক্ষেত্র পরিবর্তন করুন না
একটি অপরিবর্তনীয় সীমাবদ্ধতা সরান হ্যাঁ
একটি অপরিবর্তনীয় সীমাবদ্ধতা যোগ করুন না

গণনা

পরিবর্তনের ধরন পশ্চাদপদ সামঞ্জস্যপূর্ণ
একটি enum মান যোগ করুন হ্যাঁ
একটি enum মান সরান না

অবচিত ক্ষেত্রের আচরণ

প্রতিস্থাপন ক্ষেত্র

একটি প্রতিস্থাপন আছে যে ক্ষেত্রে, উভয় ক্ষেত্র সম্ভাব্য যখন পপুলেট করা হবে. আপডেট করার সময়, যেকোনো একটি ক্ষেত্র সেট করা যেতে পারে। একটি আপডেট অনুরোধে উভয় ক্ষেত্র অন্তর্ভুক্ত করার ফলে একটি INVALID_ARGUMENT ত্রুটি দেখা দেয়৷

নিম্নলিখিত স্কিমা বিবেচনা করুন:

{
  // The cost of this Foo in micros.
  // Deprecated: Use `cost` instead.
  "costMicros": number,

  // The cost of this Foo.
  "cost": {
    object (Money)
  }
}

একটি পঠিত প্রতিক্রিয়া সমতুল্য মান সহ উভয় ক্ষেত্রেই পপুলেট করে:

{
  "costMicros": 1250000,
  "cost": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 250000000
  }
}

আপডেট অনুরোধ যে কোনো মান সেট করতে পারে। উভয় ক্ষেত্র অন্তর্ভুক্ত করার ফলে একটি INVALID_ARGUMENT ত্রুটি দেখা দেয়:

খরচমাইক্রোস

// Update payload
{
  "costMicros": 1500000
}

// Response payload
{
  "costMicros": 1500000,
  "cost": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 500000000
  }
}

খরচ

// Update payload
{
  "cost": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 500000000
  }
}

// Response payload
{
  "costMicros": 1500000,
  "cost": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 500000000
  }
}

উভয়

// Update payload
{
  "costMicros": 1250000,
  "cost": {
    "currencyCode": "USD",
    "units": "1",
    "nanos": 500000000
  }
}

// Response payload
{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "costMicros",
            "description": "Cannot update both costMicros and cost."
          }
        ]
      }
    ]
  }
}

বন্ধ বৈশিষ্ট্য

যদি একটি পণ্য বৈশিষ্ট্য বন্ধ করা হয়, সংশ্লিষ্ট ক্ষেত্রগুলি অবচয় হিসাবে চিহ্নিত করা হবে এবং একটি শব্দার্থগতভাবে উপযুক্ত ডিফল্ট মান ফিরিয়ে দিতে পারে। আপডেট উপেক্ষা করা যেতে পারে.

{
  // The salesperson split amount in micros.
  // Deprecated: The Sales Management feature has been deprecated. This field
  // will always be `0`.
  "salespersonSplitMicros": number,
}