Merchant API की मदद से, प्रॉडक्ट डेटा को ज़्यादा बेहतर और आसानी से मैनेज किया जा सकता है. मुख्य बदलाव यह है कि प्रॉडक्ट डेटा को दो अलग-अलग संसाधनों में बांटा गया है: ProductInput का इस्तेमाल डेटा सबमिट करने के लिए किया जाता है और Product का इस्तेमाल, प्रोसेस किए गए फ़ाइनल वर्शन को देखने के लिए किया जाता है. इसमें प्रॉडक्ट की स्थिति और समस्याएं शामिल हैं. इस नए स्ट्रक्चर से, आपको ज़्यादा भरोसेमंद और पारदर्शी अनुभव मिलेगा.
इस गाइड में, मुख्य अंतरों के बारे में बताया गया है. इससे आपको Content API for Shopping से अपने इंटिग्रेशन को माइग्रेट करने में मदद मिलेगी. नई सुविधाओं को इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, अपने प्रॉडक्ट मैनेज करना लेख पढ़ें.
मुख्य अंतर
Content API for Shopping की तुलना में, Merchant API में प्रॉडक्ट मैनेज करने के तरीके में हुए सबसे अहम बदलाव यहां दिए गए हैं:
इनपुट और प्रोसेस किए गए डेटा के लिए खास संसाधन: Merchant API, प्रॉडक्ट मैनेजमेंट को दो संसाधनों में बांटता है. प्रॉडक्ट डेटा को डालने, अपडेट करने, और मिटाने के लिए,
ProductInputरिसॉर्स का इस्तेमाल किया जा सकता है. Google के इनपुट प्रोसेस करने, नियमों को लागू करने, और पूरक सोर्स से मिले डेटा को एक साथ लाने के बाद, फ़ाइनल प्रॉडक्ट देखने के लिए, सिर्फ़ पढ़ने के लिए उपलब्धProductरिसॉर्स का इस्तेमाल किया जा सकता है.प्रॉडक्ट के नामों के लिए एन्कोडिंग:
ProductInput.nameऔरProduct.name, दोनों फ़ील्ड के लिए unpadded base64url (RFC 4648 सेक्शन 5) एन्कोडिंग का इस्तेमाल किया जा सकता है. अगर प्रॉडक्ट के नामों में Merchant API या यूआरएल के लिए रिज़र्व किए गए वर्णों का इस्तेमाल किया गया है, तो एन्कोडिंग करना ज़रूरी है. उदाहरण के लिए, अगर प्रॉडक्ट के नाम में इनमें से कोई वर्ण शामिल है, तो आपको उसे एन्कोड करना होगा:% . + / : ~ , ( * ! ) & ? = @ # $इंटिग्रेट किए गए प्रॉडक्ट का स्टेटस:
productstatusesसेवा हटा दी जाती है. प्रॉडक्ट की पुष्टि से जुड़ी समस्याएं और डेस्टिनेशन की स्थितियां अब सीधे तौर परproductStatusफ़ील्ड में मौजूदProductरिसॉर्स में शामिल की गई हैं. इससे डेटा को आसानी से वापस पाया जा सकता है.प्रॉडक्ट के अपडेट का अनुमान लगाना: नई
productInputs.patchविधि, किसी प्रॉडक्ट के इनपुट में सीधे तौर पर बदलाव करती है. यह Content API for Shopping की तुलना में एक बड़ा सुधार है. Content API for Shopping में, अपडेट को अन्य फ़ीड अपलोड से अचानक बदला जा सकता था. Merchant API में, अपडेट तब तक बना रहता है, जब तक उस प्रॉडक्ट के इनपुट को फिर से अपडेट नहीं किया जाता या मिटाया नहीं जाता. प्रॉडक्ट अपडेट, प्रोसेस किए गएProductरिसॉर्स के बजायProductInputरिसॉर्स पर लागू होते हैं.डेटा को बेहतर तरीके से मैनेज करने के लिए, अपना डेटा सोर्स चुनें: अब सभी
productInputsराइट ऑपरेशन के लिए,dataSourceक्वेरी पैरामीटर की ज़रूरत होती है. इससे यह साफ़ तौर पर पता चलता है कि किस डेटा सोर्स में बदलाव किया जा रहा है. यह सुविधा खास तौर पर तब काम आती है, जब आपके पास डेटा देने वाले कई सोर्स हों.नए संसाधन आइडेंटिफ़ायर: अब प्रॉडक्ट की पहचान
idफ़ील्ड के बजाय, RESTful संसाधनnameसे की जाती है. इसका फ़ॉर्मैटaccounts/{account}/products/{product}है.कस्टम बैच नहीं:
custombatchतरीका अब उपलब्ध नहीं है. एक एचटीटीपी कॉल में कई अनुरोध भेजने के लिए, एसिंक्रोनस अनुरोध या एचटीटीपी बैचिंग का इस्तेमाल किया जा सकता है.
माइग्रेशन के दौरान डेटा सोर्स से जुड़े दिशा-निर्देश
का इस्तेमाल किया जा सकता है. हालांकि, अगर प्रॉडक्ट डालते समय गलतdataSource दिया जाता है, तो गलती से चोरी किए गए का इस्तेमाल हो सकता है.
हमारा सुझाव है कि डेटा सोर्स माइग्रेट करने से पहले, डेटा सोर्स की रणनीति चुनें.
डेटा को आसानी से माइग्रेट करने और ऑफ़र चुराने जैसी समस्याओं से बचने के लिए, इन सुझावों का पालन करें:
अपने डेटाबेस को बैकफ़िल करें: हमारा सुझाव है कि हर प्रॉडक्ट ऑपरेशन से पहले,
dataSources.listको कॉल करने के बजाय, अपने लोकल डेटाबेस को एक बार बैकफ़िल करें. हर प्रॉडक्ट रिकॉर्ड मेंdataSourceनाम फ़ील्ड जोड़ें, ताकि अनुरोधों में सीधे तौर पर सही आइडेंटिफ़ायर दिया जा सके.किसी भी डेटा सोर्स के लेबल और भाषा को एक साथ इस्तेमाल करना: Merchant API की मदद से, डेटा सोर्स का लेबल और भाषा की जानकारी दिए बिना डेटा सोर्स बनाया जा सकता है. इसलिए, इसकी मदद से किसी भी डेटा सोर्स के लेबल और भाषा वाले प्रॉडक्ट डाले जा सकते हैं. किसी भी लेबल और भाषा के लिए, एक ही डेटा सोर्स का इस्तेमाल करें.
अपने प्रॉडक्ट सुरक्षित रखें: अगर डेटा सोर्स के नियमों का इस्तेमाल किया जाता है, तो किसी प्रॉडक्ट को अपडेट या मिटाने से पहले, उससे जुड़ा सटीक
dataSourceढूंढने के लिए,products.getको कॉल करें. इससे यह पक्का होता है कि आपने सही सोर्स में बदलाव किया है. साथ ही, इससे अनजाने में ऑफ़र चुराने से भी बचा जा सकता है.
अनुरोध
इस सेक्शन में, Content API for Shopping और Merchant API के लिए अनुरोध फ़ॉर्मैट की तुलना की गई है.
| अनुरोध की जानकारी | Shopping के लिए Content API | 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 रिसॉर्स नेम के हिसाब से होगा.
| आइडेंटिफ़ायर के बारे में जानकारी | Shopping के लिए Content API | 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 में बदले गए, जोड़े गए या हटाए गए ज़रूरी फ़ील्ड के बारे में बताया गया है.
| Shopping के लिए Content API | Merchant API | ब्यौरा |
|---|---|---|
id |
name |
अब किसी प्रॉडक्ट के लिए मुख्य आइडेंटिफ़ायर, REST संसाधन name है. बिना पैडिंग वाली base64url एन्कोडिंग का इस्तेमाल करने का सुझाव दिया जाता है. साथ ही, यह उन प्रॉडक्ट के नामों के लिए ज़रूरी है जिनमें Merchant API या यूआरएल के लिए रिज़र्व किए गए वर्णों का इस्तेमाल किया जाता है. |
प्रॉडक्ट डेटा स्पेसिफ़िकेशन के टॉप-लेवल एट्रिब्यूट (जैसे, title, price, link) |
productAttributes ऑब्जेक्ट |
प्रॉडक्ट एट्रिब्यूट, जैसे कि title, price, और link अब टॉप-लेवल फ़ील्ड नहीं हैं. अब इन्हें Product और ProductInput, दोनों संसाधनों में productAttributes ऑब्जेक्ट के अंदर ग्रुप किया गया है. इससे, संसाधन का स्ट्रक्चर ज़्यादा व्यवस्थित और साफ़-सुथरा हो जाता है. |
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 टाइप के हैं. |