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

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 से बेहतर है. इसमें अपडेट को अन्य फ़ीड अपलोड से अचानक बदला जा सकता है. Merchant API में, अपडेट तब तक लागू रहता है, जब तक उस प्रॉडक्ट के इनपुट को फिर से अपडेट नहीं किया जाता या मिटाया नहीं जाता. प्रॉडक्ट अपडेट, प्रोसेस किए गए Product संसाधन के बजाय ProductInput संसाधन पर लागू होते हैं.

  • डेटा को बेहतर तरीके से मैनेज करने के लिए, अपना डेटा सोर्स चुनें: अब सभी productInputs राइट ऑपरेशन के लिए dataSource क्वेरी पैरामीटर की ज़रूरत होती है. इससे यह साफ़ तौर पर पता चलता है कि कौनसे डेटा सोर्स में बदलाव किया जा रहा है. यह तरीका तब ज़्यादा काम आता है, जब आपके पास डेटा देने वाले कई सोर्स हों.

  • नए संसाधन आइडेंटिफ़ायर: अब प्रॉडक्ट की पहचान id फ़ील्ड के बजाय, RESTful संसाधन name से की जाती है. फ़ॉर्मैट accounts/{account}/products/{product} है.

  • कस्टम बैच नहीं: custombatch तरीका अब उपलब्ध नहीं है. एक एचटीटीपी कॉल में कई अनुरोध भेजने के लिए, एसिंक्रोनस अनुरोधों या एचटीटीपी बैचिंग का इस्तेमाल किया जा सकता है.

  • किसी भी फ़ीड के लेबल और भाषा के लिए डेटा सोर्स: Merchant API की मदद से, फ़ीड का लेबल और भाषा तय किए बिना डेटा सोर्स बनाया जा सकता है. इसलिए, किसी भी फ़ीड के लेबल और भाषा के साथ प्रॉडक्ट डाला जा सकता है.

अनुरोध

इस सेक्शन में, 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.update व्यवहार में काफ़ी अंतर है. यह कुकी, किसी प्रॉडक्ट के इनपुट को अपडेट करती है और यह लगातार बनी रहती है.
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 का इस्तेमाल करें. channel फ़ील्ड अब Merchant API में मौजूद नहीं है. Content API for Shopping में LOCAL चैनल वाले प्रॉडक्ट के लिए, legacy_local फ़ील्ड को सही पर सेट करना चाहिए.
उपलब्ध नहीं है versionNumber ProductInput पर एक नया वैकल्पिक फ़ील्ड जोड़ा गया है. इसका इस्तेमाल, प्राइमरी डेटा सोर्स में क्रम से बाहर के डेटा को डालने से रोकने के लिए किया जा सकता है.
string टाइप वाले फ़ील्ड, जिनमें वैल्यू का सेट तय किया गया है enum टाइप वाले फ़ील्ड, जिनमें वैल्यू का सेट तय किया गया है प्रॉडक्ट एट्रिब्यूट में मौजूद ऐसे फ़ील्ड जिनके लिए वैल्यू का सेट तय किया गया है (उदाहरण के लिए, excluded_destinations, availability), अब enum टाइप के हैं.