Bir Merchant API bölgesi, accounts.products.regionalInventories
kaynağıyla ilgili bir hedef olarak kullanabileceğiniz bir coğrafi bölgeyi temsil eder. Bölgeleri posta kodu koleksiyonları veya bazı ülkelerde önceden tanımlanmış coğrafi hedeflemeler kullanarak tanımlayabilirsiniz. Daha fazla bilgi için Bölgeleri ayarlama başlıklı makaleyi inceleyin.
Merchant API, bölgelerinizi yönetmek için toplu uç noktalar sağlar. Bu sayede tek bir API çağrısında 100 adede kadar bölge oluşturabilir, güncelleyebilir ve silebilirsiniz. Bu özellik, bölgesel stok durumu ve fiyatlandırmayı (RAAP) büyük ölçekte yöneten, verimliliği artıran ve entegrasyonu basitleştiren satıcılar için idealdir.
Genel Bakış
Batch API, ilişkili yöntemlerle aşağıdakileri yapmanıza olanak tanır:
- Tek bir istekte birden fazla bölge oluşturma:
regions:batchCreate
- Aynı anda birden fazla bölgeyi silme:
regions:batchDelete
- Birden fazla bölgeyi aynı anda güncelleme:
regions:batchUpdate
Ön koşullar
Tüm toplu istekler için kimlik doğrulama amacıyla ADMIN kullanıcı rolü gerekir.
Birden fazla bölge oluşturma
Bu örnekte, BatchCreateRegions
tek bir çağrısında posta kodlarıyla tanımlanan bir bölge ve coğrafi hedeflemeyle tanımlanan başka bir bölge olmak üzere iki yeni bölgenin nasıl oluşturulacağı gösterilmektedir.
İstek
İstek URL'sini aşağıdaki gibi oluşturun:
POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchCreate
İstek gövdesi, her nesnenin oluşturulacak regionId
ve region
verilerini belirttiği bir requests
listesi içerir.
{
"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"
]
}
}
}
]
}
Yanıt
Başarılı bir istek, yeni region
nesnelerinin listesini döndürür.
{
"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
}
]
}
Birden fazla bölgeyi güncelleme
Bu örnekte, iki mevcut bölgenin displayName
ve postalCodeArea
değerlerini güncellemek için BatchUpdateRegions
özelliğinin nasıl kullanılacağı gösterilmektedir. Hedeflenen bölgeyi güncellemek için bir region.name
sağlamanız gerekir.
İstek
İstek URL'sini aşağıdaki gibi oluşturun:
POST https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchUpdate
İstek metni, requests
listesini içerir. Her nesne, güncellenecek region
verilerini belirtmelidir. region.name
alanı, güncellenecek bölgenin kimliğini içermelidir. Örneğin,"98005". Kaynağı accounts/{ACCOUNT_ID}/regions/name
yerine name
olarak belirtin. Değiştirilecek alanları belirtmek için updateMask
eklemek isteğe bağlıdır.
{
"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"
}
]
}
Yanıt
Başarılı bir istek, güncellenen region
nesnelerinin listesini döndürür.
{
"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
}
]
}
Birden fazla bölgeyi silme
Tek bir çağrıda birden fazla bölgeyi silebilirsiniz.
İstek
Bu örnekte, tek bir çağrıyla iki bölgeyi silmek için BatchDeleteRegions
yönteminin nasıl kullanılacağı gösterilmektedir.
POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchDelete
İstek gövdesi, requests
listesini içerir. Her nesne, silinecek bölgenin name
değerini ("accounts/{ACCOUNT_ID}/regions/"
olmadan) belirtir.
{
"requests":
[
{
"name": "98005"
},
{
"name": "07086"
}
]
}
Yanıt
Başarılı bir istek, belirtilen bölgelerin silindiğini (veya mevcut olmadığını) gösteren boş bir yanıt gövdesi döndürür.
{}
Sınırlamalar
Başlamadan önce aşağıdaki kuralları göz önünde bulundurun:
- Atomik işlemler: Toplu istekler atomiktir. Toplu işlemdeki tek bir işlem başarısız olursa (örneğin, bir bölge oluşturulamazsa) toplu işlemin tamamı başarısız olur ve hiçbir değişiklik yapılmaz. API, hatanın nedenini açıklayan bir hata döndürür.
- Toplu işlem sınırları: Her toplu istek en fazla 100 bölge işlemi içerebilir.
- Kotalar: Bu uç noktalar, tek işlemli benzerleriyle (
regions.create
,regions.delete
,regions.update
) aynı kota gruplarını kullanır.
Sık karşılaşılan hatalar ve sorunlar
Sık karşılaşılan bazı hatalar ve çözümleri aşağıda açıklanmıştır.
"Bir toplu işlemdeki istek sayısı çok fazla"
Bu hata, istekler dizinizdeki işlem sayısı 100 sınırını aştığında oluşur.
"error":
{
"code": 400,
"message": "The number of requests in a batch is too large.",
"status": "INVALID_ARGUMENT"
}
Bu sorunu düzeltmek için işlemlerinizi 100 veya daha az öğe içeren birden fazla toplu isteğe bölün.
Zorunlu alan boş bırakılmış
Bu hata, zorunlu bir alan eksik olduğunda oluşur. Hata mesajında eksik parametre belirtilir.
Hata mesajları şunlardır:
batchCreate
için:[regionId] Required parameter: regionId
batchUpdate
için:[region.name] Required field not provided.
batchDelete
için:[name] Required parameter: name
Bu sorunu düzeltmek için her işlemde tüm zorunlu alanların bulunduğunu doğrulayın. Örneğin, batchUpdate
isteğindeki her giriş region.name
değerini içermelidir.
Aşağıdaki isteğin yayınlanması hataya neden olur:
{
"requests":
[
{
"region":
{
"displayName": "An update without a region name"
},
"updateMask": "displayName"
}
]
}
"Belirtilen kimliğe sahip bölge zaten mevcut"
Halihazırda mevcut olan bir regionId
ile bölge oluşturmaya çalışırsanız hata oluşur.
Hata mesajı [regionId] Region with specified id already exists.
.
Bu sorunu düzeltmek için tüm regionId
değerlerinin toplu işlem içinde benzersiz olduğunu ve mevcut bölgelerle çakışmadığını doğrulayın.
"Duplicate value found for field region.name or regionId found" ("Bölge.adı veya bölge kimliği alanı için yinelenen değer bulundu")
Tek bir toplu istekte aynı kimliğe sahip birden fazla bölge oluşturmaya veya güncellemeye çalışırsanız hata oluşur.
Hata mesajı Duplicate value found for field {fieldName} in this batch
request with value {duplicated_value}.
.
Bu sorunu düzeltmek için tüm regionId
(batchCreate
için) veya region.name
(batchUpdate
için) değerlerinin tek bir toplu istek içinde benzersiz olduğunu doğrulayın.
"Öğe bulunamadı"
batchUpdate
kullanılırken istekte belirtilen bölgelerden herhangi biri yoksa toplu işlemin tamamı 404 NOT_FOUND
hatasıyla başarısız olur. Bu, var olmayan bölgelerde başarılı olan
batchDelete
işleminden farklıdır.
"error": {
"code": 404,
"message": "item not found",
"status": "NOT_FOUND"
}
Bu sorunu düzeltmek için isteği göndermeden önce güncellemeye çalıştığınız tüm bölgelerin mevcut olduğunu doğrulayın.