Merchant API memperkenalkan cara yang lebih andal dan intuitif untuk mengelola data produk Anda. Perubahan utamanya adalah pemisahan data produk menjadi dua resource
yang berbeda: ProductInput untuk mengirimkan data Anda dan Product untuk melihat versi
akhir yang diproses, termasuk status dan masalah produk. Struktur baru ini memberikan pengalaman yang lebih mudah diprediksi dan transparan.
Panduan ini akan menjelaskan perbedaan utama untuk membantu Anda memigrasikan integrasi dari Content API for Shopping. Untuk panduan mendetail tentang cara menggunakan fitur baru, lihat Mengelola produk Anda.
Perbedaan utama
Berikut adalah perubahan paling signifikan pada cara Anda mengelola produk di Merchant API dibandingkan dengan Content API for Shopping:
Resource khusus untuk data input dan data yang diproses: Merchant API membagi pengelolaan produk menjadi dua resource. Anda dapat menggunakan
ProductInputresource untuk menyisipkan, memperbarui, dan menghapus data produk Anda. Anda dapat menggunakan resource hanya bacaProductuntuk melihat produk akhir setelah Google memproses input Anda, menerapkan aturan, dan menggabungkan data dari sumber tambahan.Encoding untuk nama produk: Anda dapat menggunakan encoding base64url tanpa padding (RFC 4648 Bagian 5) untuk kolom
ProductInput.namedanProduct.name. Jika nama produk berisi karakter yang digunakan oleh Merchant API atau karakter yang dicadangkan URL, encoding bersifat wajib. Misalnya, Anda harus mengenkode nama produk jika nama tersebut berisi salah satu karakter berikut:% . + / : ~ , ( * ! ) & ? = @ # $Status produk terintegrasi: Layanan
productstatusesdihapus. Masalah validasi produk dan status tujuan kini disertakan langsung dalamProductresource di dalam kolomproductStatus, sehingga menyederhanakan pengambilan data.Pembaruan produk yang dapat diprediksi: Metode
productInputs.patchyang baru mengubah input produk tertentu secara langsung. Hal ini merupakan peningkatan signifikan dibandingkan Content API for Shopping, yang pembaruannya dapat ditimpa secara tidak terduga oleh upload feed lainnya. Di Merchant API, pembaruan akan tetap ada hingga input produk tertentu diperbarui lagi atau dihapus. Pembaruan produk diterapkan padaProductInputresource, bukan resourceProductyang diproses.Pilih sumber data Anda untuk pengelolaan data yang lebih bersih: Semua
productInputsoperasi tulis kini memerlukan parameter kueridataSource, sehingga sumber data yang Anda ubah menjadi jelas. Hal ini sangat berguna jika Anda memiliki beberapa sumber yang menyediakan data.ID resource baru: Produk kini diidentifikasi berdasarkan resource RESTful
name, bukan kolomid. Formatnya adalahaccounts/{account}/products/{product}.Tidak ada batch kustom: Metode
custombatchtidak lagi tersedia. Anda dapat menggunakan permintaan asinkron atau batch HTTP untuk mengirim beberapa permintaan dalam satu panggilan HTTP.
Panduan sumber data selama migrasi
Sebelum memigrasikan sumber data, sebaiknya pilih strategi sumber data Anda .
Untuk memastikan migrasi yang lancar dan mencegah masalah seperti pencurian penawaran, ikuti rekomendasi berikut:
Isi ulang database Anda: Daripada memanggil
dataSources.listsebelum setiap operasi produk, sebaiknya lakukan pengisian ulang database lokal Anda satu kali. Tambahkan kolom namadataSourceke setiap catatan produk sehingga Anda dapat memberikan ID yang benar langsung dalam permintaan Anda.Gabungkan dan gunakan sumber data untuk label dan bahasa apa pun: Merchant API memungkinkan pembuatan sumber data tanpa menentukan label dan bahasa, sehingga memungkinkan penyisipan produk dengan label dan bahasa sumber data apa pun. Pertimbangkan untuk menggunakan satu sumber data untuk label dan bahasa apa pun.
Lindungi produk Anda: Jika Anda menggunakan aturan sumber data, panggil
products.getuntuk menemukandataSourceyang tepat yang terkait dengan produk sebelum memperbarui atau menghapusnya. Hal ini memastikan Anda mengubah sumber yang diinginkan dan mencegah pencurian penawaran yang tidak disengaja.
Permintaan
Bagian ini membandingkan format permintaan untuk Content API for Shopping dan Merchant API.
| Deskripsi permintaan | Content API for Shopping | Merchant API |
|---|---|---|
| Mendapatkan produk | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| Membuat daftar produk | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| Menyisipkan produk | POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products |
POST https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs:insert |
| Memperbarui produk | PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
PATCH https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| Menghapus produk | DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
DELETE https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| Mendapatkan status produk | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses/{productId} |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| Membuat daftar status produk | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| Memproses beberapa permintaan dalam batch | POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch |
Menggunakan permintaan asinkron atau batch HTTP |
ID
Format untuk ID produk telah berubah di Merchant API menjadi nama resource REST standar.
| Deskripsi ID | Content API for Shopping | Merchant API |
|---|---|---|
| ID Produk | String yang terdiri dari segmen yang dipisahkan oleh titik dua (:).Format: channel:contentLanguage:targetCountry:offerId atau channel:contentLanguage:feedLabel:offerId.Contoh: online:en:US:sku123 |
String resource REST name.Format: accounts/{account}/products/{product} dengan {product} adalah contentLanguage~feedLabel~offerId.Contoh: accounts/12345/products/en~US~sku123.Encoding: Encoding base64url tanpa padding direkomendasikan dan wajib jika ID produk berisi karakter yang digunakan oleh Merchant API atau karakter yang dicadangkan URL. |
Metode
Tabel ini menampilkan metode Content API for Shopping dan metode yang setara di Merchant API.
| Metode Content API for Shopping | Metode Merchant API | Ketersediaan &catatan |
|---|---|---|
products.get |
products.get |
Mengambil produk akhir yang diproses. |
products.list |
products.list |
Mencantumkan produk akhir yang diproses. |
products.insert |
productInputs.insert |
Menyisipkan input produk. Memerlukan dataSource. |
products.update |
productInputs.patch |
Perilakunya sangat berbeda. Metode ini memperbarui input produk tertentu dan bersifat persisten. |
products.delete |
productInputs.delete |
Menghapus input produk tertentu. Memerlukan dataSource. |
products.custombatch |
Tidak tersedia | Menggunakan permintaan asinkron atau batch HTTP. |
productstatuses.get |
products.get |
Layanan productstatuses dihapus. Informasi status kini menjadi bagian dari resource Product. |
productstatuses.list |
products.list |
Layanan productstatuses dihapus. Informasi status kini menjadi bagian dari resource Product. |
productstatuses.custombatch |
Tidak tersedia | Menggunakan permintaan asinkron atau batch HTTP. |
Perubahan kolom mendetail
Tabel ini menyoroti kolom penting yang telah diubah, ditambahkan, atau dihapus di Merchant API.
| Content API for Shopping | Merchant API | Deskripsi |
|---|---|---|
id |
name |
ID utama untuk produk kini adalah name resource REST. Encoding base64url tanpa padding direkomendasikan dan wajib jika nama produk berisi karakter yang digunakan oleh Merchant API atau karakter yang dicadangkan URL. |
Atribut spesifikasi data produk tingkat atas (misalnya, title, price, link) |
Objek productAttributes |
Atribut produk seperti title, price, dan link tidak lagi menjadi kolom tingkat atas. Atribut tersebut kini dikelompokkan dalam objek productAttributes di resource Product dan ProductInput. Hal ini memberikan struktur resource yang lebih bersih dan teratur. |
targetCountry |
feedLabel |
Nama resource kini menggunakan feedLabel, bukan targetCountry, agar selaras dengan fungsi Merchant Center. |
feedId |
dataSource (parameter kueri) |
Nama dataSource kini menjadi parameter kueri yang diperlukan untuk semua metode tulis productInputs (insert, update, delete). |
channel |
Tidak tersedia. Gunakan legacy_local untuk produk khusus lokal. |
Kolom channel tidak lagi ada di Merchant API. Produk dengan saluran LOCAL di Content API for Shopping harus menetapkan kolom legacy_local ke benar. |
| Tidak tersedia | versionNumber |
Kolom opsional baru di ProductInput yang dapat digunakan untuk mencegah penyisipan yang tidak berurutan ke sumber data utama. |
Kolom jenis string dengan kumpulan nilai yang ditentukan |
Kolom jenis enum dengan kumpulan nilai yang ditentukan |
Kolom dalam atribut produk dengan kumpulan nilai yang ditentukan (misalnya, excluded_destinations, availability) kini berjenis enum. |