Merchant API की मदद से, प्रॉडक्ट डेटा को ज़्यादा बेहतर और आसानी से मैनेज किया जा सकता है. इसमें मुख्य बदलाव यह है कि प्रॉडक्ट डेटा को दो अलग-अलग
संसाधनों में बांटा गया है. पहला, ProductInput, जिसका इस्तेमाल डेटा सबमिट करने के लिए किया जाता है. दूसरा, Product, जिसका इस्तेमाल प्रॉडक्ट की स्थिति और समस्याओं के साथ-साथ, प्रोसेस किया गया
फ़ाइनल वर्शन देखने के लिए किया जाता है. इस नए स्ट्रक्चर से, ज़्यादा अनुमान लगाया जा सकता है और पारदर्शी अनुभव मिलता है.
यह गाइड, Content API for Shopping से इंटिग्रेशन को माइग्रेट करने में आपकी मदद करने के लिए, मुख्य अंतरों के बारे में बताती है. नई सुविधाओं का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, अपने प्रॉडक्ट मैनेज करना लेख पढ़ें.
मुख्य अंतर
Merchant API में प्रॉडक्ट मैनेज करने के तरीके में, Content API for Shopping की तुलना में ये सबसे अहम बदलाव किए गए हैं:
इनपुट और प्रोसेस किए गए डेटा के लिए अलग-अलग संसाधन: Merchant API, प्रॉडक्ट मैनेजमेंट को दो संसाधनों में बांटता है. प्रॉडक्ट डेटा को जोड़ने, अपडेट करने, और मिटाने के लिए,
ProductInputसंसाधन का इस्तेमाल किया जा सकता है. Google की ओर से आपके इनपुट प्रोसेस करने, नियम लागू करने, और अतिरिक्त सोर्स से डेटा को एक साथ लाने के बाद, फ़ाइनल प्रॉडक्ट देखने के लिए, सिर्फ़ पढ़ने के लिए उपलब्धProductसंसाधन का इस्तेमाल किया जा सकता है.प्रॉडक्ट के नामों के लिए एन्कोडिंग: आप दोनों फ़ील्ड के लिए बिना पैडिंग वाले base64url (RFC 4648 सेक्शन 5) एन्कोडिंग का इस्तेमाल कर सकते हैं:
ProductInput.nameऔरProduct.nameअगर प्रॉडक्ट के नामों में Merchant API के इस्तेमाल किए गए वर्ण या यूआरएल के लिए रिज़र्व किए गए वर्ण शामिल हैं, तो एन्कोडिंग करना ज़रूरी है. उदाहरण के लिए, अगर प्रॉडक्ट के नामों में इनमें से कोई भी वर्ण शामिल है, तो आपको उन्हें एन्कोड करना होगा:% . + / : ~ , ( * ! ) & ? = @ # $इंटिग्रेट किया गया प्रॉडक्ट स्टेटस:
productstatusesसेवा हटा दी गई है. प्रॉडक्ट की पुष्टि करने से जुड़ी समस्याएं और डेस्टिनेशन के स्टेटस अब सीधे तौर पर शामिल किए जाते हैं मेंProductसंसाधन में,productStatusफ़ील्ड में. इससे डेटा को आसानी से हासिल किया जा सकता है.प्रॉडक्ट के अपडेट का अनुमान लगाना: नया
productInputs.patchतरीका, किसी खास प्रॉडक्ट इनपुट में सीधे तौर पर बदलाव करता है. यह Content API for Shopping की तुलना में एक अहम सुधार है. Content API for Shopping में, फ़ीड अपलोड करने के दौरान, अपडेट अनचाहे तौर पर ओवरराइट हो सकते थे. Merchant API में, कोई अपडेट तब तक बना रहता है, जब तक उस खास प्रॉडक्ट इनपुट को फिर से अपडेट या मिटाया नहीं जाता. प्रॉडक्ट के अपडेट, प्रोसेस किए गएProductसंसाधन के बजाय,ProductInputसंसाधन पर लागू होते हैं.डेटा को बेहतर तरीके से मैनेज करने के लिए, अपना डेटा सोर्स चुनें: अब
productInputsराइट ऑपरेशन के सभी ऑपरेशन के लिए,dataSourceक्वेरी पैरामीटर की ज़रूरत होती है. इससे यह साफ़ तौर पर पता चलता है कि आप किस डेटा सोर्स में बदलाव कर रहे हैं. यह तब ज़्यादा काम का होता है, जब आपके पास डेटा देने वाले कई सोर्स हों.नए संसाधन आइडेंटिफ़ायर: अब प्रॉडक्ट की पहचान,
idफ़ील्ड के बजाय, RESTful संसाधनnameसे की जाती है. इसका फ़ॉर्मैटaccounts/{account}/products/{product}है.कस्टम बैच उपलब्ध नहीं हैं:
custombatchतरीका अब उपलब्ध नहीं है. एक एचटीटीपी कॉल में कई अनुरोध भेजने के लिए, एसिंक्रोनस रिक्वेस्ट या एचटीटीपी बैचिंग का इस्तेमाल किया जा सकता है.
माइग्रेशन के दौरान डेटा सोर्स के लिए दिशा-निर्देश
हमारा सुझाव है कि डेटा सोर्स माइग्रेट करने से पहले, डेटा सोर्स की रणनीति तय कर लें .
डेटा सोर्स को आसानी से माइग्रेट करने और ऑफ़र चुराने जैसी समस्याओं से बचने के लिए, इन सुझावों का पालन करें:
अपने डेटाबेस को बैकफ़िल करें: हर प्रॉडक्ट ऑपरेशन से पहले
dataSources.listको कॉल करने के बजाय, हमारा सुझाव है कि अपने स्थानीय डेटाबेस को एक बार बैकफ़िल करें. हर प्रॉडक्ट रिकॉर्ड में,dataSourceनाम का फ़ील्ड जोड़ें, ताकि अपने अनुरोधों में सही आइडेंटिफ़ायर सीधे तौर पर दिया जा सके.किसी भी लेबल और भाषा के लिए डेटा सोर्स को एक साथ लाएं और उनका इस्तेमाल करें: Merchant API की मदद से, लेबल और भाषा तय किए बिना डेटा सोर्स बनाया जा सकता है. इसलिए, किसी भी डेटा सोर्स लेबल और भाषा वाले प्रॉडक्ट जोड़े जा सकते हैं. हमारा सुझाव है कि किसी भी लेबल और भाषा के लिए एक ही डेटा सोर्स का इस्तेमाल करें.
अपने प्रॉडक्ट को सुरक्षित रखें: अगर डेटा सोर्स के नियमों का इस्तेमाल किया जाता है, तो किसी प्रॉडक्ट को अपडेट करने या मिटाने से पहले, उससे जुड़े सही
dataSourceको ढूंढने के लिए,products.getको कॉल करें. इससे यह पक्का होता है कि आप सही सोर्स में बदलाव कर रहे हैं और ऑफ़र चुराने की स्थिति गलती से नहीं होती है.
अनुरोध
इस सेक्शन में, Content API for Shopping और Merchant API के अनुरोध फ़ॉर्मैट की तुलना की गई है.
| अनुरोध का ब्यौरा | Content API for Shopping | Merchant API |
|---|---|---|
| प्रॉडक्ट पाना | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| प्रॉडक्ट की सूची पाना | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| प्रॉडक्ट जोड़ना | POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products |
POST https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs:insert |
| प्रॉडक्ट अपडेट करना | PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
PATCH https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| प्रॉडक्ट मिटाना | DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
DELETE https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| प्रॉडक्ट का स्टेटस पाना | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses/{productId} |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| प्रॉडक्ट के स्टेटस की सूची पाना | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| कई अनुरोधों को बैच में भेजना | POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch |
एसिंक्रोनस रिक्वेस्ट या एचटीटीपी बैचिंग का इस्तेमाल करना |
आइडेंटिफ़ायर
Merchant API में, प्रॉडक्ट आइडेंटिफ़ायर का फ़ॉर्मैट बदलकर, स्टैंडर्ड REST संसाधन का नाम कर दिया गया है.
| आइडेंटिफ़ायर का ब्यौरा | Content API for Shopping | Merchant API |
|---|---|---|
| प्रॉडक्ट आईडी | यह कॉलन (:) से अलग किए गए सेगमेंट से बनी एक स्ट्रिंग है.फ़ॉर्मैट: channel:contentLanguage:targetCountry:offerId या channel:contentLanguage:feedLabel:offerId.उदाहरण: online:en:US:sku123 |
यह REST संसाधन name स्ट्रिंग है.फ़ॉर्मैट: accounts/{account}/products/{product} जहां {product} का मतलब contentLanguage~feedLabel~offerId है.उदाहरण: accounts/12345/products/en~US~sku123.एन्कोडिंग: बिना पैडिंग वाले base64url एन्कोडिंग का सुझाव दिया जाता है. साथ ही, अगर प्रॉडक्ट आईडी में Merchant API के इस्तेमाल किए गए वर्ण या यूआरएल के लिए रिज़र्व किए गए वर्ण शामिल हैं, तो यह ज़रूरी है. |
तरीके
इस टेबल में, Content API for Shopping के तरीके और Merchant API में उनके बराबर के तरीके दिखाए गए हैं.
| Content API for Shopping का तरीका | Merchant API का तरीका | उपलब्धता और अहम जानकारी |
|---|---|---|
products.get |
products.get |
प्रोसेस किया गया फ़ाइनल प्रॉडक्ट दिखाता है. |
products.list |
products.list |
प्रोसेस किए गए फ़ाइनल प्रॉडक्ट की सूची दिखाता है. |
products.insert |
productInputs.insert |
प्रॉडक्ट इनपुट जोड़ता है. इसके लिए, dataSource की ज़रूरत होती है. |
products.update |
productInputs.patch |
इसका व्यवहार काफ़ी अलग है. यह किसी खास प्रॉडक्ट इनपुट को अपडेट करता है और यह अपडेट बना रहता है. |
products.delete |
productInputs.delete |
किसी खास प्रॉडक्ट इनपुट को मिटाता है. इसके लिए, dataSource की ज़रूरत होती है. |
products.custombatch |
उपलब्ध नहीं है | एसिंक्रोनस रिक्वेस्ट या एचटीटीपी बैचिंग का इस्तेमाल करें. |
productstatuses.get |
products.get |
productstatuses सेवा हटा दी गई है. स्टेटस की जानकारी अब Product संसाधन का हिस्सा है. |
productstatuses.list |
products.list |
productstatuses सेवा हटा दी गई है. स्टेटस की जानकारी अब Product संसाधन का हिस्सा है. |
productstatuses.custombatch |
उपलब्ध नहीं है | एसिंक्रोनस रिक्वेस्ट या एचटीटीपी बैचिंग का इस्तेमाल करें. |
फ़ील्ड में किए गए बदलावों के बारे में ज़्यादा जानकारी
इस टेबल में, Merchant API में जोड़े, हटाए या बदले गए अहम फ़ील्ड के बारे में बताया गया है.
| Content API for Shopping | Merchant API | ब्यौरा |
|---|---|---|
id |
name |
अब किसी प्रॉडक्ट के लिए प्राइमरी आइडेंटिफ़ायर, REST संसाधन name है. बिना पैडिंग वाले base64url एन्कोडिंग का सुझाव दिया जाता है. साथ ही, अगर प्रॉडक्ट के नामों में Merchant API के इस्तेमाल किए गए वर्ण या यूआरएल के लिए रिज़र्व किए गए वर्ण शामिल हैं, तो यह ज़रूरी है. |
टॉप-लेवल प्रॉडक्ट डेटा स्पेसिफ़िकेशन एट्रिब्यूट (उदाहरण के लिए, title, price, link) |
productAttributes ऑब्जेक्ट |
title, price, और link जैसे प्रॉडक्ट एट्रिब्यूट अब टॉप-लेवल फ़ील्ड नहीं हैं. इन्हें अब productAttributes ऑब्जेक्ट में Product और ProductInput संसाधन, दोनों में ग्रुप किया गया है. इससे, संसाधन का स्ट्रक्चर ज़्यादा व्यवस्थित और साफ़-सुथरा दिखता है. |
targetCountry |
feedLabel |
अब संसाधन के नाम में, Merchant Center की सुविधाओं के मुताबिक, targetCountry के बजाय feedLabel का इस्तेमाल किया जाता है. |
feedId |
dataSource (क्वेरी पैरामीटर) |
अब dataSource नाम, productInputs के सभी राइट मेथड (insert, update, delete) के लिए ज़रूरी क्वेरी पैरामीटर है. |
channel |
उपलब्ध नहीं है. सिर्फ़ स्थानीय प्रॉडक्ट के लिए, legacy_local का इस्तेमाल करें. |
Merchant API में, channel फ़ील्ड अब मौजूद नहीं है. Content API for Shopping में LOCAL चैनल वाले प्रॉडक्ट के लिए, legacy_local फ़ील्ड को 'सही' पर सेट किया जाना चाहिए. |
| उपलब्ध नहीं है | versionNumber |
ProductInput पर एक नया वैकल्पिक फ़ील्ड, जिसका इस्तेमाल प्राइमरी डेटा सोर्स में क्रम से बाहर की गई एंट्री को रोकने के लिए किया जा सकता है. |
string टाइप के फ़ील्ड, जिनमें वैल्यू का सेट तय किया गया है |
enum टाइप के फ़ील्ड, जिनमें वैल्यू का सेट तय किया गया है |
प्रॉडक्ट एट्रिब्यूट में मौजूद वे फ़ील्ड जिनमें वैल्यू का सेट तय किया गया है (उदाहरण के लिए, excluded_destinations, availability), अब enum टाइप के हैं. |