वर्शन

Ad Manager REST API में, मेजर वर्शन रिलीज़ और दोनों के नाम होते हैं मौजूदा मेजर वर्शन में, पुराने सिस्टम के साथ काम करने की सुविधा देने वाली रिलीज़.

इसके तहत, सेवाओं, तरीकों, और फ़ील्ड को किसी भी समय 'अब काम नहीं करता' के तौर पर मार्क किया जा सकता है हालांकि, मेजर वर्शन (जैसे, v1) उस मेजर वर्शन तक काम करता रहेगा वर्शन मौजूद नहीं है.

मेजर वर्शन की रिलीज़

मेजर वर्शन की ऐसी रिलीज़ को कहा जाता है जो पुराने सिस्टम के साथ काम नहीं करती एपीआई से जुड़े बदलाव. इन रिलीज़ के नाम दिए जाएंगे और इनके एपीआई एंडपॉइंट अलग-अलग होंगे. पिछले मुख्य वर्शन, माइग्रेशन की अवधि के दौरान काम करते हैं.

Ad Manager REST API में मेजर के लिए, नियमित तौर पर कॉन्टेंट रिलीज़ करने की फ़्रीक्वेंसी नहीं होती है वर्शन हैं. नए मेजर वर्शन सिर्फ़ ज़रूरी होने पर ही रिलीज़ किए जाएंगे.

इन-प्लेस रिलीज़

पुराने सिस्टम के साथ काम करने वाले बदलाव रिलीज़ किए गए. इनमें नई सुविधाएं और गड़बड़ियां ठीक करना शामिल हैं उसे मौजूदा मेजर एपीआई वर्शन में बदल दिया जाएगा. क्लाइंट को अनजान फ़ील्ड को हैंडल करना चाहिए एपीआई से मिले जवाबों में.

पुराने सिस्टम के साथ काम करने की सुविधा

मेजर वर्शन में किए गए बदलावों के लिए, पुराने सिस्टम के साथ काम करने की सुविधा को बनाए रखा जाता है. साथ काम करने की सुविधा का मतलब इस तरह है:

  1. सोर्स के साथ काम करने की सुविधा: पिछली रिलीज़ के कंपाइलेशन के साथ लिखा गया कोड और नए वर्शन के साथ काम करता है और क्लाइंट लाइब्रेरी पर जाएं.

  2. वायर के साथ काम करने की सुविधा: पिछली रिलीज़ के साथ लिखा गया कोड नए सर्वर से सही ढंग से संपर्क करता है. दूसरे शब्दों में, न सिर्फ़ इनपुट और आउटपुट के साथ काम करता है, लेकिन सीरियलाइज़ेशन और डीसीरियलाइज़ेशन की उम्मीदें मेल जारी रखें.

  3. सिमैंटिक कंपैटबिलिटी: पिछले वर्शन के साथ लिखा गया कोड जारी रहता है वह प्रॉडक्ट पाने के लिए जो सबसे सही डेवलपर की उम्मीद के मुताबिक हो.

नीचे दी गई टेबल में, एपीआई में होने वाले अलग-अलग तरह के बदलावों की सूची दी गई है. साथ ही, यह भी बताया गया है कि उन बदलावों को लागू किया जा सकता है या नहीं पुराने सिस्टम के साथ काम करने की सुविधा.

सेवाएं

बदलाव किस तरह का है पुराने सिस्टम के साथ काम करने की सुविधा
नई सेवा जोड़ें हां
किसी सेवा को हटाना नहीं

तरीके

बदलाव किस तरह का है पुराने सिस्टम के साथ काम करने की सुविधा
कोई नया तरीका जोड़ें हां
कोई तरीका हटाना नहीं
किसी तरीके से किए गए अनुरोध या रिस्पॉन्स का टाइप बदलना नहीं

ऑब्जेक्ट

बदलाव किस तरह का है पुराने सिस्टम के साथ काम करने की सुविधा
ज़रूरी फ़ील्ड जोड़ें नहीं
वैकल्पिक फ़ील्ड जोड़ें हां
किसी फ़ील्ड को सबमैसेज में ले जाना या उससे बाहर ले जाना नहीं
फ़ील्ड को 'ज़रूरी' से 'ज़रूरी नहीं' में बदलना हां
फ़ील्ड को 'ज़रूरी नहीं' से 'ज़रूरी' में बदलना नहीं
ऐसी पाबंदी हटाना जिसमें बदलाव न किया जा सकता हो हां
ऐसी पाबंदी जोड़ें जिसमें बदलाव न किया जा सके नहीं

इन्यूमरेशन

बदलाव किस तरह का है पुराने सिस्टम के साथ काम करने की सुविधा
एक 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 गड़बड़ी:

costMicros

// 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,
}