মার্চেন্ট এপিআই আপনার পণ্যের ডেটা পরিচালনা করার জন্য একটি আরও শক্তিশালী এবং সহজবোধ্য উপায় নিয়ে এসেছে। প্রধান পরিবর্তনটি হলো পণ্যের ডেটাকে দুটি স্বতন্ত্র রিসোর্সে বিভক্ত করা: আপনার ডেটা জমা দেওয়ার জন্য ProductInput এবং পণ্যের স্ট্যাটাস ও সমস্যাসহ চূড়ান্ত, প্রক্রিয়াকৃত সংস্করণটি দেখার জন্য Product । এই নতুন কাঠামোটি আরও অনুমানযোগ্য এবং স্বচ্ছ অভিজ্ঞতা প্রদান করে।
এই নির্দেশিকাটি আপনাকে মূল পার্থক্যগুলো বুঝিয়ে দেবে, যা আপনাকে Content API for Shopping থেকে আপনার ইন্টিগ্রেশন মাইগ্রেট করতে সাহায্য করবে। নতুন ফিচারগুলো ব্যবহারের বিস্তারিত নির্দেশিকার জন্য, Manage your products দেখুন।
মূল পার্থক্য
শপিং-এর জন্য কন্টেন্ট এপিআই-এর তুলনায় মার্চেন্ট এপিআই-তে পণ্য ব্যবস্থাপনার সবচেয়ে উল্লেখযোগ্য পরিবর্তনগুলো নিচে দেওয়া হলো:
ইনপুট এবং প্রক্রিয়াকৃত ডেটার জন্য নির্দিষ্ট রিসোর্স : মার্চেন্ট এপিআই প্রোডাক্ট ম্যানেজমেন্টকে দুটি রিসোর্সে বিভক্ত করে। আপনি আপনার প্রোডাক্ট ডেটা ইনসার্ট, আপডেট এবং ডিলিট করার জন্য
ProductInputরিসোর্সটি ব্যবহার করতে পারেন। গুগল আপনার ইনপুটগুলো প্রসেস করার পর, নিয়ম প্রয়োগ করে এবং সম্পূরক উৎস থেকে ডেটা একত্রিত করার পরে চূড়ান্ত প্রোডাক্টটি দেখার জন্য আপনি রিড-অনলিProductরিসোর্সটি ব্যবহার করতে পারেন।পণ্যের নামের জন্য এনকোডিং : আপনি
ProductInput.nameএবংProduct.nameউভয় ফিল্ডের জন্য আনপ্যাডেড base64url (RFC 4648 সেকশন 5) এনকোডিং ব্যবহার করতে পারেন। যদি পণ্যের নামে মার্চেন্ট এপিআই (Merchant API) দ্বারা ব্যবহৃত অক্ষর বা ইউআরএল-সংরক্ষিত অক্ষর থাকে, তবে এনকোডিং বাধ্যতামূলক । উদাহরণস্বরূপ, পণ্যের নামে নিম্নলিখিত অক্ষরগুলির কোনোটি থাকলে আপনাকে অবশ্যই তা এনকোড করতে হবে:% . + / : ~ , ( * ! ) & ? = @ # $সমন্বিত পণ্যের অবস্থা :
productstatusesসার্ভিসটি সরিয়ে ফেলা হয়েছে। পণ্যের যাচাইকরণ সংক্রান্ত সমস্যা এবং গন্তব্যের অবস্থা এখন সরাসরিProductরিসোর্সেরproductStatusফিল্ডের মধ্যে অন্তর্ভুক্ত করা হয়েছে, যা ডেটা পুনরুদ্ধারকে সহজ করে তুলেছে।পূর্বাভাসযোগ্য প্রোডাক্ট আপডেট : নতুন
productInputs.patchমেথডটি সরাসরি একটি নির্দিষ্ট প্রোডাক্ট ইনপুট পরিবর্তন করে। এটি শপিং-এর জন্য ব্যবহৃত কন্টেন্ট এপিআই (Content API)-এর তুলনায় একটি উল্লেখযোগ্য উন্নতি, যেখানে অন্যান্য ফিড আপলোডের কারণে আপডেটগুলো অপ্রত্যাশিতভাবে ওভাররাইট হয়ে যেতে পারত। মার্চেন্ট এপিআই (Merchant API)-তে, একটি আপডেট ততক্ষণ পর্যন্ত থাকে যতক্ষণ না সেই নির্দিষ্ট প্রোডাক্ট ইনপুটটি আবার আপডেট করা হয় বা মুছে ফেলা হয়। প্রোডাক্ট আপডেটগুলো প্রসেসডProductরিসোর্সের পরিবর্তেProductInputরিসোর্সের উপর প্রয়োগ করা হয়।আরও স্বচ্ছ ডেটা ব্যবস্থাপনার জন্য আপনার ডেটা উৎস বেছে নিন : এখন থেকে সমস্ত
productInputsরাইট অপারেশনের জন্য একটিdataSourceকোয়েরি প্যারামিটার প্রয়োজন হবে, যার ফলে আপনি কোন ডেটা উৎসটি পরিবর্তন করছেন তা সুস্পষ্টভাবে বোঝা যায়। আপনার যদি একাধিক উৎস থেকে ডেটা আসে, তবে এটি বিশেষভাবে কার্যকর।নতুন রিসোর্স আইডেন্টিফায়ার : প্রোডাক্টগুলো এখন
idফিল্ডের পরিবর্তে একটি RESTful রিসোর্সnameদ্বারা চিহ্নিত করা হয়। এর ফরম্যাটটি হলোaccounts/{account}/products/{product}।কাস্টম ব্যাচ নেই :
custombatchমেথডটি এখন আর উপলব্ধ নেই। আপনি একটিমাত্র HTTP কলে একাধিক অনুরোধ পাঠাতে অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট অথবা HTTP ব্যাচিং ব্যবহার করতে পারেন।
- যেকোনো ফিড লেবেল এবং ভাষার জন্য ডেটা সোর্স : মার্চেন্ট এপিআই ফিড লেবেল এবং ভাষা নির্দিষ্ট না করেই ডেটা সোর্স তৈরি করা সম্ভব করে, এবং এর ফলে যেকোনো ফিড লেবেল ও ভাষার পণ্য অন্তর্ভুক্ত করা যায়।
অনুরোধ
এই বিভাগে কন্টেন্ট এপিআই ফর শপিং এবং মার্চেন্ট এপিআই-এর রিকোয়েস্ট ফরম্যাটগুলোর তুলনা করা হয়েছে।
| অনুরোধের বিবরণ | কেনাকাটার জন্য কন্টেন্ট এপিআই | মার্চেন্ট এপিআই |
|---|---|---|
| একটি পণ্য নিন | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} | GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| List products | 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 | অ্যাসিঙ্ক্রোনাস অনুরোধ বা HTTP ব্যাচিং ব্যবহার করুন |
শনাক্তকারী
মার্চেন্ট এপিআই-তে প্রোডাক্ট আইডেন্টিফায়ারের ফরম্যাট পরিবর্তন করে একটি স্ট্যান্ডার্ড REST রিসোর্স নেম করা হয়েছে।
| শনাক্তকারী বিবরণ | কেনাকাটার জন্য কন্টেন্ট এপিআই | মার্চেন্ট এপিআই |
|---|---|---|
| পণ্যের আইডি | কোলন : :) দ্বারা পৃথক করা খণ্ডাংশ দিয়ে গঠিত একটি স্ট্রিং।ফর্ম্যাট: 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 .যেসব প্রোডাক্ট আইডিতে মার্চেন্ট এপিআই দ্বারা ব্যবহৃত অক্ষর বা ইউআরএল-সংরক্ষিত অক্ষর থাকে, সেগুলোর ক্ষেত্রে আনপ্যাডেড বেস৬৪ইউআরএল এনকোডিং সুপারিশকৃত এবং বাধ্যতামূলক । |
পদ্ধতি
এই সারণিতে কন্টেন্ট এপিআই-এর শপিং মেথডগুলো এবং মার্চেন্ট এপিআই-তে সেগুলোর সমতুল্য মেথডগুলো দেখানো হয়েছে।
| শপিং পদ্ধতির জন্য কন্টেন্ট এপিআই | মার্চেন্ট এপিআই পদ্ধতি | প্রাপ্যতা ও নোট |
|---|---|---|
products.get | products.get | চূড়ান্ত, প্রক্রিয়াজাত পণ্যটি সংগ্রহ করে। |
products.list | products.list | চূড়ান্ত ও প্রক্রিয়াজাত পণ্যগুলোর তালিকা। |
products.insert | productInputs.insert | পণ্যের তথ্য প্রবেশ করানোর জন্য একটি dataSource প্রয়োজন। |
products.update | productInputs.update | এর আচরণটি উল্লেখযোগ্যভাবে ভিন্ন। এটি একটি নির্দিষ্ট পণ্যের ইনপুট আপডেট করে এবং এটি স্থায়ী। |
products.delete | productInputs.delete | একটি নির্দিষ্ট পণ্যের ইনপুট মুছে ফেলে। এর জন্য একটি dataSource প্রয়োজন। |
products.custombatch | উপলব্ধ নয় | অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট অথবা HTTP ব্যাচিং ব্যবহার করুন। |
productstatuses.get | products.get | productstatuses সার্ভিসটি সরিয়ে ফেলা হয়েছে। স্ট্যাটাস সংক্রান্ত তথ্য এখন Product রিসোর্সের অংশ। |
productstatuses.list | products.list | productstatuses সার্ভিসটি সরিয়ে ফেলা হয়েছে। স্ট্যাটাস সংক্রান্ত তথ্য এখন Product রিসোর্সের অংশ। |
productstatuses.custombatch | উপলব্ধ নয় | অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট অথবা এইচটিটিপি ব্যাচিং ব্যবহার করুন। |
বিস্তারিত ক্ষেত্রের পরিবর্তন
এই সারণিতে মার্চেন্ট এপিআই-তে পরিবর্তন করা, যোগ করা বা সরিয়ে দেওয়া গুরুত্বপূর্ণ ফিল্ডগুলো তুলে ধরা হয়েছে।
| কেনাকাটার জন্য কন্টেন্ট এপিআই | মার্চেন্ট এপিআই | বর্ণনা |
|---|---|---|
id | name | এখন একটি পণ্যের প্রাথমিক শনাক্তকারী হলো REST রিসোর্সের name । পণ্যের নামে মার্চেন্ট এপিআই (Merchant API) দ্বারা ব্যবহৃত অক্ষর বা ইউআরএল-সংরক্ষিত অক্ষর থাকলে, আনপ্যাডেড বেস৬৪ইউআরএল (unpadded base64url) এনকোডিং ব্যবহার করার পরামর্শ দেওয়া হয় এবং এটি বাধ্যতামূলক। |
শীর্ষ-স্তরের পণ্য ডেটা নির্দিষ্টকরণ বৈশিষ্ট্যসমূহ (যেমন, title , price , link ) | productAttributes অবজেক্ট | পণ্যের অ্যাট্রিবিউট যেমন title , price এবং link এখন আর টপ-লেভেল ফিল্ড নয়। এগুলো এখন Product এবং ProductInput উভয় রিসোর্সের productAttributes ) অবজেক্টের মধ্যে গ্রুপ করা হয়েছে। এটি একটি পরিচ্ছন্ন এবং আরও সুসংগঠিত রিসোর্স কাঠামো প্রদান করে। |
targetCountry | feedLabel | মার্চেন্ট সেন্টারের কার্যকারিতার সাথে সামঞ্জস্য রাখতে রিসোর্সের নামে এখন targetCountry পরিবর্তে feedLabel ব্যবহার করা হয়। |
feedId | dataSource (কোয়েরি প্যারামিটার) | এখন থেকে productInputs সকল রাইট মেথডের ( insert , update , delete ) জন্য dataSource নাম একটি আবশ্যিক কোয়েরি প্যারামিটার। |
channel | উপলব্ধ নয়। শুধুমাত্র স্থানীয় পণ্যের জন্য legacy_local ব্যবহার করুন। | মার্চেন্ট এপিআই-তে channel ফিল্ডটি আর নেই। শপিং-এর জন্য কন্টেন্ট এপিআই-তে যেসব প্রোডাক্টের LOCAL চ্যানেল রয়েছে, সেগুলোর ক্ষেত্রে এর পরিবর্তে legacy_local ফিল্ডটির মান true সেট করতে হবে। |
| উপলব্ধ নয় | versionNumber | ProductInput এ একটি নতুন ঐচ্ছিক ফিল্ড যা প্রাথমিক ডেটা উৎসগুলিতে ভুল ক্রমে ডেটা সন্নিবেশ রোধ করতে ব্যবহার করা যেতে পারে। |
নির্দিষ্ট মান সেট সহ string টাইপের ফিল্ড | নির্দিষ্ট মান সেট সহ enum টাইপের ফিল্ড | প্রোডাক্ট অ্যাট্রিবিউটের অন্তর্গত যেসব ফিল্ডের নির্দিষ্ট মান সেট রয়েছে (যেমন excluded_destinations , availability ), সেগুলো এখন enum টাইপের। |