تمثّل المنطقة في Merchant API منطقة جغرافية يمكنك استخدامها كهدف مرتبط بمورد accounts.products.regionalInventories. يمكنك تحديد المناطق كمجموعات من الرموز البريدية أو، في بعض البلدان، باستخدام أهداف جغرافية محدّدة مسبقًا. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إعداد
المناطق.
توفّر Merchant API نقاط نهاية مجمّعة لإدارة مناطقك، ما يتيح لك إنشاء ما يصل إلى 100 منطقة وتعديلها وحذفها في طلب بيانات من واجهة برمجة التطبيقات واحد. ويُعدّ ذلك مثاليًا للتجّار الذين يديرون ميزة "تحديد السعر والتوفّر محليًا" على نطاق واسع، ما يحسّن الكفاءة ويبسّط عملية التكامل.
نظرة عامة
تتيح لك Batch API تنفيذ ما يلي باستخدام الطرق المرتبطة بها:
- إنشاء مناطق متعددة في طلب واحد:
regions:batchCreate - حذف مناطق متعددة في وقت واحد:
regions:batchDelete - تعديل مناطق متعددة في وقت واحد:
regions:batchUpdate
المتطلبات الأساسية
تتطلّب جميع الطلبات المجمّعة دور مستخدم المشرف للمصادقة.
إنشاء مناطق متعددة
يوضّح هذا المثال كيفية إنشاء منطقتَين جديدتَين في طلب واحد من BatchCreateRegions، إحداهما محدّدة بالرموز البريدية والأخرى بالاستهداف الجغرافي.
طلب
أنشئ عنوان URL للطلب على النحو التالي:
POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchCreate
يحتوي نص الطلب على قائمة requests، حيث يحدّد كل عنصر
regionId وبيانات region المطلوب إنشاؤها.
{
"requests": [
{
"regionId": "seattle-area-98340",
"region": {
"displayName": "Seattle Region",
"postalCodeArea": {
"regionCode": "US",
"postalCodes": [
{
"begin": "98340"
}
]
}
}
},
{
"regionId": "co-de-states",
"region": {
"displayName": "Colorado and Delaware",
"geoTargetArea": {
"geotargetCriteriaIds": [
"21138",
"21141"
]
}
}
}
]
}
الردّ
يعرض الطلب الناجح قائمة بعناصر region الجديدة.
{
"regions": [
{
"name": "accounts/{ACCOUNT_ID}/regions/seattle-area-98340",
"displayName": "Seattle Region",
"postalCodeArea": {
"regionCode": "US",
"postalCodes": [
{
"begin": "98340"
}
]
},
"regionalInventoryEligible": true,
"shippingEligible": true
},
{
"name": "accounts/{ACCOUNT_ID}/regions/co-de-states",
"displayName": "Colorado and Delaware",
"geotargetArea": {
"geotargetCriteriaIds": [
"21138",
"21141"
]
},
"regionalInventoryEligible": false,
"shippingEligible": false
}
]
}
تعديل مناطق متعددة
يوضّح هذا المثال كيفية استخدام BatchUpdateRegions لتعديل displayName وpostalCodeArea لمنطقتَين حاليتَين. يجب تقديم region.name لتعديل المنطقة المستهدَفة.
طلب
أنشئ عنوان URL للطلب على النحو التالي:
POST https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchUpdate
يحتوي نص الطلب على قائمة requests. يجب أن يحدّد كل عنصر بيانات region المطلوب تعديلها. يجب أن يحتوي الحقل region.name على رقم تعريف المنطقة المطلوب تعديلها، مثلاً "98005". حدِّد المورد على أنّه name بدلاً من accounts/{ACCOUNT_ID}/regions/name. إنّ تضمين updateMask للإشارة إلى الحقول المطلوب تغييرها أمر اختياري.
{
"requests": [
{
"region": {
"name": "98005",
"displayName": "Seattle Updated Region",
"postalCodeArea": {
"regionCode": "US",
"postalCodes": [
{
"begin": "98330"
}
]
}
},
"updateMask": "displayName,postalCodeArea"
},
{
"region": {
"name": "07086",
"displayName": "NewYork Updated Region",
"postalCodeArea": {
"regionCode": "US",
"postalCodes": [
{
"begin": "11*"
}
]
}
},
"updateMask": "displayName,postalCodeArea"
}
]
}
الردّ
يعرض الطلب الناجح قائمة بعناصر region المعدَّلة.
{
"regions": [
{
"name": "accounts/{ACCOUNT_ID}/regions/98005",
"displayName": "Seattle Updated Region",
"postalCodeArea": {
"regionCode": "US",
"postalCodes": [
{
"begin": "98330"
}
]
},
"regionalInventoryEligible": true,
"shippingEligible": true
},
{
"name": "accounts/{ACCOUNT_ID}/regions/07086",
"displayName": "NewYork Updated Region",
"postalCodeArea": {
"regionCode": "US",
"postalCodes": [
{
"begin": "11*"
}
]
},
"regionalInventoryEligible": true,
"shippingEligible": true
}
]
}
حذف مناطق متعددة
يمكنك حذف مناطق متعددة في طلب واحد.
طلب
يوضّح هذا المثال كيفية استخدام BatchDeleteRegions لحذف منطقتَين في طلب واحد.
POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchDelete
يحتوي نص الطلب على قائمة requests، حيث يحدّد كل عنصر
name (بدون "accounts/{ACCOUNT_ID}/regions/") للمنطقة المطلوب حذفها.
{
"requests":
[
{
"name": "98005"
},
{
"name": "07086"
}
]
}
الردّ
يعرض الطلب الناجح نص ردّ فارغًا، ما يشير إلى أنّه تم حذف المناطق المحدّدة (أو أنّها لم تكن متوفّرة).
{}
القيود
قبل البدء، ضَع هذه القواعد في الاعتبار:
- العمليات غير القابلة للتجزئة: الطلبات المجمّعة غير القابلة للتجزئة. إذا فشلت أي عملية فردية ضمن الطلب المجمّع (على سبيل المثال، تعذّر إنشاء منطقة واحدة)، سيفشل الطلب المجمّع بأكمله ولن يتم إجراء أي تغييرات. ستعرض واجهة برمجة التطبيقات خطأً يوضّح سبب الفشل.
- الحدود المجمّعة: يمكن أن يحتوي كل طلب مجمّع على 100 عملية منطقة كحد أقصى.
- الحصص: تستخدم نقاط النهاية هذه مجموعات الحصص نفسها التي تستخدمها نظيراتها من العمليات الفردية (
regions.createوregions.deleteوregions.update).
الأخطاء والمشاكل الشائعة
في ما يلي بعض المشاكل الشائعة وحلولها.
"The number of requests in a batch is too large"
يظهر هذا الخطأ إذا كان عدد العمليات في مصفوفة الطلبات يتجاوز الحدّ الأقصى البالغ 100.
"error":
{
"code": 400,
"message": "The number of requests in a batch is too large.",
"status": "INVALID_ARGUMENT"
}
لحلّ هذه المشكلة، قسِّم عملياتك إلى طلبات مجمّعة متعددة تحتوي على 100 عملية أو أقل.
لم يتم إدخال حقل مطلوب
يظهر هذا الخطأ عند عدم إدخال حقل مطلوب. تحدّد رسالة الخطأ المعلمة غير المضمَّنة.
رسائل الخطأ هي كما يلي:
- بالنسبة إلى
batchCreate:[regionId] Required parameter: regionId - بالنسبة إلى
batchUpdate:[region.name] Required field not provided. - بالنسبة إلى
batchDelete:[name] Required parameter: name
لحلّ هذه المشكلة، تأكَّد من تضمين جميع الحقول المطلوبة في كل عملية. على سبيل المثال، يجب أن يتضمّن كل إدخال في طلب batchUpdate السمة region.name.
سيؤدي نشر الطلب التالي إلى حدوث خطأ:
{
"requests":
[
{
"region":
{
"displayName": "An update without a region name"
},
"updateMask": "displayName"
}
]
}
"Region with specified ID already exists"
يحدث خطأ إذا حاولت إنشاء منطقة باستخدام regionId موجود من قبل.
رسالة الخطأ هي [regionId] Region with specified id already exists..
لحلّ هذه المشكلة، تأكَّد من أنّ جميع قيم regionId فريدة ضمن الطلب المجمّع ولا تتعارض مع المناطق الحالية.
"Duplicate value found for field region.name or regionId found"
يحدث خطأ إذا حاولت إنشاء مناطق متعددة أو تعديلها باستخدام رقم التعريف نفسه ضمن طلب مجمّع واحد.
رسالة الخطأ هي Duplicate value found for field {fieldName} in this batch
request with value {duplicated_value}..
لحلّ هذه المشكلة، تأكَّد من أنّ جميع قيم regionId (بالنسبة إلى batchCreate) أو region.name (بالنسبة إلى batchUpdate) فريدة ضمن طلب مجمّع واحد.
"لم يتم العثور على العنصر"
عند استخدام batchUpdate، إذا لم تكن أي منطقة محدّدة في الطلب متوفّرة، سيفشل الطلب المجمّع بأكمله ويظهر الخطأ 404 NOT_FOUND. يختلف ذلك عن batchDelete، الذي ينجح للمناطق غير المتوفّرة.
"error": {
"code": 404,
"message": "item not found",
"status": "NOT_FOUND"
}
لحلّ هذه المشكلة، تأكَّد من أنّ جميع المناطق التي تحاول تعديلها متوفّرة قبل إرسال الطلب.