نقل المنتجات

توفّر Merchant API طريقة أكثر فعالية وسهولة لإدارة بيانات منتجاتك. التغيير الرئيسي هو فصل بيانات المنتجات إلى مرجعَين مختلفَين: ProductInput لإرسال بياناتك وProduct لعرض النسخة النهائية المعالَجة التي تتضمّن حالة المنتج والمشاكل. ويوفّر هذا الهيكل الجديد تجربة أكثر قابلية للتوقّع وشفافية.

يشرح لك هذا الدليل الاختلافات الرئيسية لمساعدتك في نقل عملية الدمج من Content API for Shopping. للحصول على دليل تفصيلي حول استخدام الميزات الجديدة، اطّلِع على إدارة منتجاتك.

الاختلافات الرئيسية

في ما يلي أهم التغييرات في طريقة إدارة المنتجات في Merchant API مقارنةً بـ Content API for Shopping:

  • موارد مخصّصة للبيانات المدخلة والمعالَجة: تقسّم Merchant API إدارة المنتجات إلى موردَين. يمكنك استخدام المورد ProductInput لإدراج بيانات منتجاتك وتعديلها وحذفها. ويمكنك استخدام المورد Product للقراءة فقط من أجل الاطّلاع على المنتج النهائي بعد أن تعالج Google البيانات المدخلة وتطبّق القواعد وتدمج البيانات من المصادر التكميلية.

  • ترميز أسماء المنتجات: يمكنك استخدام ترميز base64url غير المضمّن (القسم 5 من RFC 4648) للحقلَين ProductInput.name وProduct.name. وفي حال كانت أسماء المنتجات تتضمّن أحرفًا تستخدمها Merchant API أو أحرفًا محجوزة في عناوين URL، يكون الترميز إلزاميًا. على سبيل المثال، عليك ترميز أسماء المنتجات إذا كانت تتضمّن أيًا من الأحرف التالية:

    % . + / : ~ , ( * ! ) & ? = @ # $
    
  • حالة المنتج المدمج: تمت إزالة خدمة productstatuses. يتم الآن تضمين مشاكل التحقّق من صحة المنتج وحالات الوجهة مباشرةً في مصدر Product ضمن الحقل productStatus، ما يسهّل عملية استرداد البيانات.

  • تعديلات متوقّعة على المنتجات: تعدّل طريقة productInputs.patch الجديدة إدخال منتج محدّد مباشرةً، ما يمثّل تحسّنًا كبيرًا مقارنةً بـ Content API for Shopping، حيث كان من الممكن أن يتم بشكل غير متوقّع استبدال التعديلات بعمليات تحميل أخرى للخلاصة. في Merchant API، يبقى التعديل ساريًا إلى أن يتم تعديل إدخال المنتج المحدّد مرة أخرى أو حذفه. يتم تطبيق التعديلات على المنتجات على مورد ProductInput بدلاً من معالجة مورد Product.

  • اختيار مصدر البيانات لإدارة البيانات بشكل أكثر فعالية: تتطلّب جميع عمليات الكتابة productInputs الآن مَعلمة طلب بحث dataSource، ما يوضّح مصدر البيانات الذي تعدّله. ويكون ذلك مفيدًا بشكل خاص إذا كان لديك مصادر متعدّدة تقدّم البيانات.

  • معرّفات الموارد الجديدة: يتم الآن تحديد المنتجات من خلال مورد name متوافق مع RESTful بدلاً من الحقل id. التنسيق هو accounts/{account}/products/{product}.

  • ما مِن دفعات مخصّصة: لم تعُد طريقة custombatch متاحة. يمكنك استخدام الطلبات غير المتزامنة أو تجميع طلبات HTTP لإرسال طلبات متعددة في طلب HTTP واحد.

.

إرشادات مصادر البيانات أثناء نقل البيانات

قبل نقل مصادر البيانات، ننصحك بشدة باختيار استراتيجية مصدر البيانات.

لضمان عملية نقل سلسة وتجنُّب مشاكل مثل سرقة العروض، اتّبِع التوصيات التالية:

  • تعبئة قاعدة البيانات: بدلاً من طلب dataSources.list قبل كل عملية متعلقة بالمنتج، ننصحك بشدة بتعبئة قاعدة البيانات المحلية لمرة واحدة. أضِف حقل اسم dataSource إلى كل سجلّ منتج حتى تتمكّن من تقديم المعرّف الصحيح مباشرةً في طلباتك.

  • دمج مصادر البيانات واستخدامها لأي تصنيف ولغة: تتيح Merchant API إنشاء مصدر بيانات بدون تحديد التصنيف واللغة، وبالتالي تسمح بإدراج المنتجات بأي تصنيف ولغة لمصدر البيانات. ننصحك باستخدام مصدر بيانات واحد لأي تصنيف ولغة.

  • حماية منتجاتك: إذا كنت تستخدم قواعد مصدر البيانات، استخدِم products.get للعثور على dataSource المرتبط بمنتج معيّن قبل تعديله أو حذفه، ما يضمن تعديل المصدر المقصود ويمنع سرقة العروض الترويجية عن طريق الخطأ.

الطلبات

يقارن هذا القسم بين صيغ الطلبات في Content API for Shopping وMerchant API.

وصف الطلب واجهة برمجة تطبيقات المحتوى في Shopping 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 استخدام الطلبات غير المتزامنة أو تجميع طلبات HTTP

المعرّفات

تم تغيير تنسيق معرّفات المنتجات في Merchant API إلى اسم مرجع REST عادي.

وصف المعرّف واجهة برمجة تطبيقات المحتوى في Shopping Merchant API
معرّف المنتج سلسلة تتألف من أجزاء مفصولة بنقطتين رأسيتين (:).
التنسيق: 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 أو أحرف محجوزة في عناوين URL.

الطُرق

يعرض هذا الجدول طرق 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 غير متوفر استخدِم الطلبات غير المتزامنة أو تجميع طلبات HTTP.
productstatuses.get products.get تمت إزالة خدمة productstatuses، وأصبحت معلومات الحالة جزءًا من مورد Product.
productstatuses.list products.list تمت إزالة خدمة productstatuses، وأصبحت معلومات الحالة جزءًا من مورد Product.
productstatuses.custombatch غير متوفر استخدِم الطلبات غير المتزامنة أو تجميع طلبات HTTP.

التغييرات التفصيلية في الحقول

يبرز هذا الجدول الحقول المهمة التي تم تغييرها أو إضافتها أو إزالتها في Merchant API.

واجهة برمجة تطبيقات المحتوى في Shopping Merchant API الوصف
id name المعرّف الأساسي للمنتج هو الآن مورد REST name. يُنصح باستخدام ترميز base64url غير المضمّن وهو إلزامي في حال كانت أسماء المنتجات تحتوي على أحرف تستخدمها Merchant API أو أحرف محجوزة في عناوين URL.
سمات مواصفات بيانات المنتج ذات المستوى الأعلى (مثل title وprice وlink) عنصر productAttributes لم تعُد سمات المنتج، مثل title وprice وlink، حقولاً في المستوى الأعلى، بل أصبحت مجمّعة الآن ضمن العنصر productAttributes في كل من الموردَين Product وProductInput، ما يوفّر بنية موارد أكثر وضوحًا وتنظيمًا.
targetCountry feedLabel يستخدم اسم المرجع الآن feedLabel بدلاً من targetCountry ليتوافق مع وظائف Merchant Center.
feedId dataSource (مَعلمة طلب البحث) أصبح اسم dataSource الآن مَعلمة طلب بحث مطلوبة لجميع طرق الكتابة في productInputs (insert وupdate وdelete).
channel هذه الميزة غير متوفّرة. استخدِم القيمة legacy_local للمنتجات المتوفّرة في المتجر فقط. لم يعُد الحقل channel متوفّرًا في Merchant API. يجب بدلاً من ذلك ضبط الحقل legacy_local على "صحيح" للمنتجات التي تتضمّن القناة LOCAL في Content API for Shopping.
غير متوفر versionNumber حقل اختياري جديد في ProductInput يمكن استخدامه لمنع عمليات الإدراج غير المنظَّمة في مصادر البيانات الأساسية.
حقول من النوع string مع مجموعة محدّدة من القيم حقول من النوع enum مع مجموعة محدّدة من القيم أصبحت الحقول ضمن سمات المنتجات التي تتضمّن مجموعة محدّدة من القيم (مثل excluded_destinations وavailability) من النوع enum.