Wilayah Merchant API mewakili wilayah geografis yang dapat Anda gunakan sebagai target yang terkait dengan resource accounts.products.regionalInventories
. Anda dapat
menentukan wilayah sebagai kumpulan kode pos atau, di beberapa negara,
menggunakan geotarget yang telah ditentukan sebelumnya. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
wilayah.
Merchant API menyediakan endpoint batch untuk mengelola wilayah, sehingga Anda dapat membuat, memperbarui, dan menghapus hingga 100 wilayah dalam satu panggilan API. Hal ini ideal bagi penjual yang mengelola ketersediaan dan harga regional (RAAP) dalam skala besar, sehingga meningkatkan efisiensi dan menyederhanakan integrasi.
Ringkasan
Batch API memungkinkan Anda melakukan hal berikut dengan metode terkait:
- Membuat beberapa wilayah dalam satu permintaan:
regions:batchCreate
- Menghapus beberapa wilayah sekaligus:
regions:batchDelete
- Perbarui beberapa wilayah secara bersamaan:
regions:batchUpdate
Prasyarat
Semua permintaan batch memerlukan peran pengguna ADMIN untuk autentikasi.
Membuat beberapa wilayah
Contoh ini menunjukkan cara membuat dua wilayah baru — satu ditentukan oleh kode pos dan satu lagi oleh penargetan geografis — dalam satu panggilan BatchCreateRegions
.
Permintaan
Buat URL permintaan sebagai berikut:
POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchCreate
Isi permintaan berisi daftar requests
, di mana setiap objek menentukan
regionId
dan data region
yang akan dibuat.
{
"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"
]
}
}
}
]
}
Respons
Permintaan yang berhasil akan menampilkan daftar objek region
baru.
{
"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
}
]
}
Memperbarui beberapa wilayah
Contoh ini menunjukkan cara menggunakan BatchUpdateRegions
untuk memperbarui displayName
dan postalCodeArea
untuk dua wilayah yang ada. Anda harus memberikan region.name
untuk memperbarui wilayah target.
Permintaan
Buat URL permintaan sebagai berikut:
POST https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchUpdate
Isi permintaan berisi daftar requests
. Setiap objek harus menentukan data
region
yang akan diperbarui. Kolom region.name
harus berisi ID
wilayah yang akan diperbarui, misalnya,"98005". Tentukan resource sebagai name
, bukan
accounts/{ACCOUNT_ID}/regions/name
. Menyertakan updateMask
untuk menunjukkan
kolom yang akan diubah bersifat opsional.
{
"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"
}
]
}
Respons
Permintaan yang berhasil akan menampilkan daftar objek region
yang diperbarui.
{
"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
}
]
}
Menghapus beberapa wilayah
Anda dapat menghapus beberapa wilayah dalam satu panggilan.
Permintaan
Contoh ini menunjukkan cara menggunakan BatchDeleteRegions
untuk menghapus dua region dalam
satu panggilan.
POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchDelete
Isi permintaan berisi daftar requests
, dengan setiap objek menentukan
name
(tanpa "accounts/{ACCOUNT_ID}/regions/"
) region yang akan dihapus.
{
"requests":
[
{
"name": "98005"
},
{
"name": "07086"
}
]
}
Respons
Permintaan yang berhasil akan menampilkan isi respons kosong, yang menunjukkan bahwa wilayah yang ditentukan telah dihapus (atau tidak ada).
{}
Batasan
Sebelum memulai, perhatikan aturan berikut:
- Operasi atomik: Permintaan batch bersifat atomik. Jika satu operasi dalam batch gagal (misalnya, satu region gagal dibuat), seluruh batch akan gagal, dan tidak ada perubahan yang akan dilakukan. API akan menampilkan error yang menjelaskan penyebab kegagalan.
- Batas batch: Setiap permintaan batch dapat berisi maksimum 100 operasi wilayah.
- Kuota: Endpoint ini menggunakan grup kuota yang sama dengan
endpoint operasi tunggalnya (
regions.create
,regions.delete
,regions.update
).
Error dan masalah umum
Berikut beberapa kesalahan umum dan solusinya.
"Jumlah permintaan dalam batch terlalu besar"
Error ini terjadi jika jumlah operasi dalam array permintaan Anda melebihi batas 100.
"error":
{
"code": 400,
"message": "The number of requests in a batch is too large.",
"status": "INVALID_ARGUMENT"
}
Untuk memperbaikinya, bagi operasi Anda menjadi beberapa permintaan batch yang masing-masing berisi 100 atau kurang.
Bidang wajib belum diisi
Error ini terjadi saat kolom wajib diisi tidak ada. Pesan error menentukan parameter yang tidak ada.
Pesan errornya adalah sebagai berikut:
- Untuk
batchCreate
:[regionId] Required parameter: regionId
- Untuk
batchUpdate
:[region.name] Required field not provided.
- Untuk
batchDelete
:[name] Required parameter: name
Untuk memperbaikinya, pastikan semua kolom wajib diisi ada di setiap operasi. Misalnya, setiap entri dalam permintaan batchUpdate
harus menyertakan region.name
.
Memposting permintaan berikut akan menghasilkan error:
{
"requests":
[
{
"region":
{
"displayName": "An update without a region name"
},
"updateMask": "displayName"
}
]
}
"Wilayah dengan ID yang ditentukan sudah ada"
Error akan terjadi jika Anda mencoba membuat wilayah dengan regionId
yang sudah ada.
Pesan errornya adalah [regionId] Region with specified id already exists.
.
Untuk memperbaikinya, pastikan semua nilai regionId
unik dalam batch dan tidak bertentangan dengan wilayah yang ada.
"Nilai duplikat ditemukan untuk kolom region.name atau regionId"
Error akan terjadi jika Anda mencoba membuat atau memperbarui beberapa wilayah dengan ID yang sama dalam satu permintaan batch.
Pesan errornya adalah Duplicate value found for field {fieldName} in this batch
request with value {duplicated_value}.
.
Untuk memperbaikinya, pastikan semua nilai regionId
(untuk batchCreate
) atau region.name
(untuk batchUpdate
) bersifat unik dalam satu permintaan batch.
"Item tidak ditemukan"
Saat menggunakan batchUpdate
, jika ada wilayah yang ditentukan dalam permintaan tidak ada,
seluruh batch akan gagal dengan error 404 NOT_FOUND
. Hal ini berbeda dengan
batchDelete
, yang berhasil untuk wilayah yang tidak ada.
"error": {
"code": 404,
"message": "item not found",
"status": "NOT_FOUND"
}
Untuk memperbaikinya, verifikasi bahwa semua wilayah yang Anda coba perbarui ada sebelum mengirim permintaan.