توفّر 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، ما يوضّح مصدر البيانات الذي يتم تعديله. هذا مفيد بشكل خاص إذا كان لديك مصادر متعددة توفر البيانات.معرّفات الموارد الجديدة: يتم الآن تحديد المنتجات من خلال مورد RESTful
nameبدلاً من الحقل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. بالنسبة إلى المنتجات التي تتضمّن القناة LOCAL في Content API for Shopping، يجب ضبط الحقل 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"]). |