प्रॉडक्ट माइग्रेट करना

Merchant API, प्रॉडक्ट डेटा को मैनेज करने का एक बेहतर और आसान तरीका है. मुख्य बदलाव यह है कि प्रॉडक्ट डेटा को दो अलग-अलग रिसॉर्स में बांटा गया है: डेटा सबमिट करने के लिए ProductInput और प्रॉडक्ट की स्थिति और समस्याओं के साथ-साथ, प्रोसेस किए गए फ़ाइनल वर्शन को देखने के लिए Product. इस नए स्ट्रक्चर से, आपको ज़्यादा पारदर्शी और अनुमानित अनुभव मिलता है.

इस गाइड में, Content API for Shopping से Merchant Center Next API पर माइग्रेट करने के लिए, मुख्य अंतरों के बारे में बताया गया है. नई सुविधाओं को इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, अपने प्रॉडक्ट मैनेज करना लेख पढ़ें.

मुख्य अंतर

Content API for Shopping की तुलना में, Merchant API में प्रॉडक्ट मैनेज करने के तरीके में ये अहम बदलाव किए गए हैं:

  • इनपुट और प्रोसेस किए गए डेटा के लिए अलग-अलग रिसॉर्स: Merchant API, प्रॉडक्ट मैनेजमेंट को दो रिसॉर्स में बांटता है. ProductInput संसाधन का इस्तेमाल करके, प्रॉडक्ट डेटा को डाला, अपडेट किया, और मिटाया जा सकता है. रीड-ओनली Product रिसोर्स का इस्तेमाल करके, फ़ाइनल प्रॉडक्ट देखा जा सकता है. ऐसा तब किया जा सकता है, जब Google आपके इनपुट को प्रोसेस कर ले, नियम लागू कर दे, और पूरक सोर्स से मिले डेटा को जोड़ दे.

  • प्रॉडक्ट के नामों को कोड में बदलना: ProductInput.name और Product.name, दोनों फ़ील्ड के लिए, अनपैडेड base64url (आरएफ़सी 4648 सेक्शन 5) को कोड में बदलने के तरीके का इस्तेमाल किया जा सकता है. अगर प्रॉडक्ट के नामों में 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 के लिए अनुरोध के फ़ॉर्मैट की तुलना की गई है.

अनुरोध का ब्यौरा 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 (क्वेरी पैरामीटर) अब productInputs के डेटा में बदलाव करने के सभी तरीकों (insert, update, delete) के लिए, dataSource का नाम एक ज़रूरी क्वेरी पैरामीटर है.
channel यह सुविधा उपलब्ध नहीं है. सिर्फ़ स्थानीय प्रॉडक्ट के लिए, legacy_local का इस्तेमाल करें. channel फ़ील्ड, अब Merchant API में मौजूद नहीं है. Content API for Shopping में LOCAL चैनल वाले प्रॉडक्ट के लिए, legacy_local फ़ील्ड को 'सही है' पर सेट करना चाहिए.
उपलब्ध नहीं है versionNumber ProductInput पर मौजूद एक नया वैकल्पिक फ़ील्ड. इसका इस्तेमाल, प्राइमरी डेटा सोर्स में गलत क्रम में डेटा डालने से रोकने के लिए किया जा सकता है.
string टाइप के फ़ील्ड, जिनमें वैल्यू का सेट तय किया गया है enum टाइप के फ़ील्ड, जिनमें वैल्यू का सेट तय किया गया है प्रॉडक्ट एट्रिब्यूट के अंदर मौजूद ऐसे फ़ील्ड जिनकी वैल्यू पहले से तय होती हैं (उदाहरण के लिए, excluded_destinations, availability) अब enum टाइप के हैं.
gtin productAttributes.gtins सिंगल स्ट्रिंग (gtin) से बदलकर रिपीटेड स्ट्रिंग (gtins) किया गया.
sizes productAttributes.size इसे रिपीटेड स्ट्रिंग (sizes) से सिंगुलर स्ट्रिंग (size) में बदल दिया गया है.
sizeType, additionalSizeType productAttributes.sizeTypes sizeType और additionalSizeType को बार-बार इस्तेमाल होने वाले SizeType ईनम (sizeTypes) से बदल दिया गया है. इसमें ज़्यादा से ज़्यादा दो वैल्यू डाली जा सकती हैं. उदाहरण के लिए, ["PETITE", "MATERNITY"].