Ad Manager API में, मेजर वर्शन रिलीज़ और मौजूदा मेजर वर्शन में, पुराने सिस्टम के साथ काम करने की सुविधा देने वाली रिलीज़.
किसी मुख्य वर्शन (उदाहरण के लिए, v1) में, सेवाओं, तरीकों, और फ़ील्ड को किसी भी समय 'इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया जा सकता है. हालांकि, वे तब तक काम करते रहेंगे, जब तक उस मुख्य वर्शन को बंद नहीं कर दिया जाता.
मेजर वर्शन की रिलीज़
मेजर वर्शन रिलीज़ को ऐसी रिलीज़ के तौर पर परिभाषित किया जाता है जिसमें एपीआई में ऐसे बदलाव किए गए हों जो पुराने वर्शन के साथ काम न करते हों. इन रिलीज़ को नाम दिया जाएगा और इनमें अलग-अलग एपीआई एंडपॉइंट होंगे. पिछले मुख्य वर्शन, माइग्रेशन की अवधि के दौरान काम करते हैं.
Ad Manager API में मेजर के लिए, नियमित तौर पर कॉन्टेंट रिलीज़ करने की फ़्रीक्वेंसी नहीं होती है वर्शन हैं. नए मेजर वर्शन सिर्फ़ ज़रूरत पड़ने पर रिलीज़ किए जाएंगे.
इन-प्लेस रिलीज़
पुराने सिस्टम के साथ काम करने वाले बदलाव रिलीज़ किए गए. इनमें नई सुविधाएं और गड़बड़ियां ठीक करना शामिल हैं उसे मौजूदा मेजर एपीआई वर्शन में बदल दिया जाएगा. क्लाइंट को अनजान फ़ील्ड को हैंडल करना चाहिए एपीआई से मिले जवाबों में.
पुराने सिस्टम के साथ काम करने की सुविधा
मेजर वर्शन में किए गए बदलावों के लिए, पुराने सिस्टम के साथ काम करने की सुविधा को बनाए रखा जाता है. कंपैटबिलिटी को इस तरह परिभाषित किया गया है:
सोर्स के साथ काम करने की सुविधा: किसी पुरानी रिलीज़ के लिए लिखा गया कोड, नई रिलीज़ के लिए भी काम करता है. साथ ही, क्लाइंट लाइब्रेरी के नए वर्शन के साथ भी काम करता है.
वायर के साथ काम करने की सुविधा: किसी पिछली रिलीज़ के लिए लिखा गया कोड, नए सर्वर के साथ सही तरीके से काम करता है. दूसरे शब्दों में, न सिर्फ़ इनपुट और आउटपुट काम करते हैं, बल्कि सीरियलाइज़ेशन और डीसीरियलाइज़ेशन की उम्मीदें भी मैच करती रहती हैं.
सिमैंटिक कंपैटबिलिटी: पिछले वर्शन के हिसाब से कोड लिखा हुआ जारी है वह प्रॉडक्ट पाने के लिए जो सबसे सही डेवलपर की उम्मीद के मुताबिक हो.
नीचे दी गई टेबल में, एपीआई में हुए बदलावों के टाइप और यह जानकारी दी गई है कि क्या वे पुराने सिस्टम के साथ काम करते हैं.
सेवाएं
बदलाव का टाइप | पुराने सिस्टम के साथ काम करने की सुविधा |
---|---|
कोई नई सेवा जोड़ें | हां |
सेवा हटाना | नहीं |
तरीके
बदलाव किस तरह का है | पुराने सिस्टम के साथ काम करने की सुविधा |
---|---|
कोई नया तरीका जोड़ें | हां |
कोई तरीका हटाना | नहीं |
किसी तरीके के अनुरोध या जवाब के टाइप को बदलना | नहीं |
ऑब्जेक्ट
बदलाव का टाइप | पुराने सिस्टम के साथ काम करने की सुविधा |
---|---|
ज़रूरी फ़ील्ड जोड़ना | नहीं |
वैकल्पिक फ़ील्ड जोड़ें | हां |
किसी फ़ील्ड को सबमैसेज में या उससे बाहर ले जाना | नहीं |
फ़ील्ड को 'ज़रूरी' से 'ज़रूरी नहीं' में बदलना | हां |
फ़ील्ड को 'ज़रूरी नहीं' से 'ज़रूरी' में बदलना | नहीं |
बदली नहीं जा सकने वाली पाबंदी हटाना | हां |
बदली न जा सकने वाली पाबंदी जोड़ना | नहीं |
इन्यूमरेशन
बदलाव का टाइप | पुराने सिस्टम के साथ काम करने की सुविधा |
---|---|
वैल्यू जोड़ना | हां |
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,
}