انتقال محصولات

Merchant API روشی قوی‌تر و شهودی‌تر برای مدیریت داده‌های محصولتان معرفی می‌کند. تغییر اصلی، جداسازی داده‌های محصول به دو منبع متمایز است: ProductInput برای ارسال داده‌هایتان و Product برای مشاهده نسخه نهایی پردازش‌شده، ازجمله وضعیت محصول و مشکلات. این ساختار جدید تجربه‌ای قابل‌پیش‌بینی‌تر و شفاف‌تر ارائه می‌دهد.

این راهنما تفاوت‌های کلیدی را به شما نشان می‌دهد تا به شما کمک کند ادغام خود را از Content API for Shopping منتقل کنید. برای راهنمای دقیق درباره استفاده از ویژگی‌های جدید، به مدیریت محصولات مراجعه کنید.

تفاوت‌های اصلی

در اینجا مهم‌ترین تغییرات در نحوه مدیریت محصولات در Merchant API درمقایسه با Content API for Shopping آورده شده است:

  • منابع اختصاصی برای داده‌های ورودی و پردازش‌شده: Merchant API مدیریت محصول را به دو منبع تقسیم می‌کند. می‌توانید از منبع ProductInput برای درج، به‌روزرسانی، و حذف داده‌های محصولتان استفاده کنید. می‌توانید از منبع فقط خواندنی Product برای مشاهده محصول نهایی پس‌از پردازش ورودی‌هایتان توسط Google، اعمال قوانین، و ترکیب داده‌ها از منابع تکمیلی استفاده کنید.

  • کدبندی برای نام‌های محصول: می‌توانید از کدبندی unpadded base64url (RFC 4648 Section 5) برای هر دو فیلد ProductInput.name و Product.name استفاده کنید. اگر نام محصول حاوی نویسه‌هایی باشد که Merchant API از آن‌ها استفاده می‌کند یا نویسه‌هایی که برای نشانی وب رزرو شده‌اند، کدبندی اجباری است. برای مثال، اگر نام محصول حاوی هریک از نویسه‌های زیر باشد، باید آن را کدبندی کنید:

    % . + / : ~ , ( * ! ) & ? = @ # $
    
  • وضعیت محصول ادغام‌شده: سرویس productstatuses برداشته شده است. مشکلات اعتبارسنجی محصول و وضعیت‌های مقصد اکنون مستقیماً در منبع Product در فیلد productStatus گنجانده شده‌اند که بازیابی داده‌ها را ساده‌تر می‌کند.

  • به‌روزرسانی‌های قابل‌پیش‌بینی محصول: روش جدید productInputs.patch ورودی محصول خاصی را مستقیماً اصلاح می‌کند. این بهبود قابل‌توجهی نسبت به Content API ویژه Shopping است که در آن به‌روزرسانی‌ها ممکن است به‌طور غیرمنتظره‌ای توسط بارگذاری‌های فید دیگر بازنویسی شوند. در Merchant API، به‌روزرسانی تا زمانی که آن ورودی محصول خاص دوباره به‌روزرسانی یا حذف شود باقی می‌ماند. به‌روزرسانی‌های محصول به‌جای منبع پردازش‌شده Product روی منبع ProductInput اعمال می‌شود.

  • منبع داده‌تان را برای مدیریت تمیزتر داده‌ها انتخاب کنید: همه عملیات‌های نوشتن productInputs اکنون به پارامتر پُرسمان dataSource نیاز دارند، که باعث می‌شود منبع داده‌ای که درحال اصلاح آن هستید به‌طور صریح مشخص شود. این ویژگی به‌خصوص زمانی مفید است که چندین منبع داده ارائه می‌دهند.

  • شناسه‌های منبع جدید: محصولات اکنون با منبع RESTful name به‌جای فیلد id شناسایی می‌شوند. قالب accounts/{account}/products/{product} است.

  • بدون دسته‌های سفارشی: روش custombatch دیگر دردسترس نیست. می‌توانید از درخواست‌های ناهمگام یا دسته‌بندی HTTP برای ارسال چند درخواست در یک تماس HTTP استفاده کنید.

مراجعه کنید

دستورالعمل‌های منبع داده درطول انتقال

قبل‌از انتقال منابع داده، اکیداً توصیه می‌کنیم استراتژی منبع داده‌تان را انتخاب کنید.

برای اطمینان از انتقال بی‌دردسر و جلوگیری از مشکلاتی مانند سرقت پیشنهاد، این توصیه‌ها را دنبال کنید:

  • پایگاه داده‌تان را پر کنید: به‌جای فراخوانی dataSources.list قبل‌از هر عملیات محصول، اکیداً توصیه می‌کنیم که پایگاه داده محلی‌تان را یک‌بار پر کنید. فیلد نام dataSource را به هر سابقه محصول اضافه کنید تا بتوانید شناسه صحیح را مستقیماً در درخواست‌هایتان ارائه دهید.

  • ادغام و استفاده از منابع داده برای هر برچسب و زبان: Merchant API امکان ایجاد منبع داده را بدون مشخص کردن برچسب و زبان فراهم می‌کند و بنابراین اجازه می‌دهد محصولات با هر برچسب منبع داده و زبانی درج شوند. برای هر برچسب و زبان، از یک منبع داده استفاده کنید.

  • از محصولاتتان محافظت کنید: اگر از قوانین منبع داده استفاده می‌کنید، products.get را فراخوانی کنید تا قبل‌از به‌روزرسانی یا حذف محصول، dataSource دقیق مرتبط با آن را پیدا کنید. این کار تضمین می‌کند که منبع موردنظر را اصلاح می‌کنید و از سرقت تصادفی پیشنهاد جلوگیری می‌کند.

درخواست‌ها

این بخش قالب‌های درخواست را برای Content API for Shopping و Merchant API مقایسه می‌کند.

شرح درخواست Content API for Shopping میانای برنامه‌سازی کاربردی فروشنده
دریافت محصول 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 از درخواست‌های ناهمگام یا دسته‌بندی HTTP استفاده کنید

شناسه‌ها

قالب شناسه‌های محصول در Merchant API به نام منبع REST استاندارد تغییر کرده است.

شرح شناسه Content API for Shopping میانای برنامه‌سازی کاربردی فروشنده
شناسه محصول رشته‌ای متشکل از بخش‌هایی که با دونقطه (:) از هم جدا شده‌اند.
قالب: channel:contentLanguage:targetCountry:offerId یا channel:contentLanguage:feedLabel:offerId.
مثال: online:en:US:sku123
رشته name منبع REST.
قالب: 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 ویژه 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 دردسترس نیست از درخواست‌های ناهمگام یا دسته‌بندی HTTP استفاده کنید.
productstatuses.get products.get سرویس productstatuses برداشته شد. اطلاعات وضعیت اکنون بخشی از منبع Product است.
productstatuses.list products.list سرویس productstatuses برداشته شد. اطلاعات وضعیت اکنون بخشی از منبع Product است.
productstatuses.custombatch دردسترس نیست از درخواست‌های ناهمگام یا دسته‌بندی HTTP استفاده کنید.

تغییرات دقیق فیلد

این جدول فیلدهای مهمی را که در Merchant API تغییر کرده، اضافه شده، یا برداشته شده است برجسته می‌کند.

Content API for Shopping میانای برنامه‌سازی کاربردی فروشنده شرح
id name شناسه اصلی محصول اکنون منبع REST name است. کدبندی base64url بدون لایه توصیه می‌شود و درصورت وجود نام‌های محصولی که حاوی نویسه‌های استفاده‌شده توسط Merchant API یا نویسه‌های رزروشده نشانی وب هستند، اجباری است.
مشخصه‌های مشخصات داده محصول سطح بالا (مثلاً title، price، link) ‫productAttributes شیء مشخصه‌های محصول مانند title، price، و link دیگر فیلدهای سطح بالا نیستند. اکنون آن‌ها در شیء productAttributes در هر دو منبع Product و ProductInput گروه‌بندی شده‌اند. این کار ساختار منبع تمیزتر و سازمان‌یافته‌تری را فراهم می‌کند.
targetCountry feedLabel نام منبع اکنون به‌جای targetCountry از feedLabel استفاده می‌کند تا با عملکرد Merchant Center مطابقت داشته باشد.
feedId dataSource (پارامتر پُرسمان) نام dataSource اکنون پارامتر پُرسمان الزامی برای همه روش‌های نوشتن productInputs (insert،‏ update،‏ delete) است.
channel دردسترس نیست. از legacy_local فقط برای محصولات محلی استفاده کنید. فیلد channel دیگر در Merchant API وجود ندارد. محصولات دارای کانال LOCAL در Content API for Shopping باید درعوض فیلد legacy_local را روی true تنظیم کنند.
دردسترس نیست versionNumber فیلد اختیاری جدیدی در ProductInput که می‌توان از آن برای جلوگیری از درج‌های نامرتب در منابع داده اصلی استفاده کرد.
فیلدهای نوع string با مجموعه مقادیر تعریف‌شده فیلدهای نوع enum با مجموعه مقادیر تعریف‌شده فیلدهای درون مشخصه‌های محصول با مجموعه مقادیر تعریف‌شده (برای مثال excluded_destinations، availability) اکنون از نوع enum هستند.
gtin productAttributes.gtins از رشته مفرد (gtin) به رشته تکراری (gtins) تغییر کرد.
sizes productAttributes.size از رشته تکراری (sizes) به رشته مفرد (size) تغییر کرد.
sizeType، additionalSizeType productAttributes.sizeTypes ‫sizeType و additionalSizeType با یک enum تکراری SizeType (sizeTypes) جایگزین شده است که حداکثر دو مقدار را می‌پذیرد (برای مثال، ["PETITE", "MATERNITY"]).