Memigrasikan produk

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 telah diproses, termasuk status dan masalah produk. Struktur baru ini memberikan pengalaman yang lebih dapat 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 input dan data yang diproses: Merchant API membagi pengelolaan produk menjadi dua resource. Anda dapat menggunakan resource ProductInput untuk menyisipkan, memperbarui, dan menghapus data produk. Anda dapat menggunakan resource Product hanya baca untuk 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.name dan Product.name. Jika nama produk berisi karakter yang digunakan oleh Merchant API atau karakter yang dicadangkan URL, encoding wajib dilakukan. Misalnya, Anda harus mengenkode nama produk jika berisi salah satu karakter berikut:

    % . + / : ~ , ( * ! ) & ? = @ # $
    
  • Status produk terintegrasi: Layanan productstatuses dihapus. Masalah validasi produk dan status tujuan kini langsung disertakan dalam resource Product dalam kolom productStatus, sehingga menyederhanakan pengambilan data.

  • Pembaruan produk yang dapat diprediksi: Metode productInputs.patch baru mengubah input produk tertentu secara langsung. Ini adalah peningkatan signifikan dibandingkan Content API for Shopping, yang pembaruannya dapat ditimpa secara tidak terduga oleh upload feed lain. Di Merchant API, pembaruan akan tetap ada hingga input produk tertentu tersebut diperbarui lagi atau dihapus. Pembaruan produk diterapkan pada resource ProductInput, bukan resource Product yang diproses.

  • Pilih sumber data Anda untuk pengelolaan data yang lebih rapi: Semua operasi tulis productInputs kini memerlukan parameter kueri dataSource, sehingga memperjelas sumber data yang Anda ubah. Hal ini sangat berguna jika Anda memiliki beberapa sumber yang menyediakan data.

  • ID resource baru: Produk kini diidentifikasi oleh resource RESTful name, bukan kolom id. Formatnya adalah accounts/{account}/products/{product}.

  • Tidak ada batch kustom: Metode custombatch tidak lagi tersedia. Anda dapat menggunakan konten asinkron atau batch HTTP untuk mengirim beberapa permintaan dalam satu panggilan HTTP.

Panduan sumber data selama migrasi

Sebelum memigrasikan sumber data, sebaiknya Anda memilih strategi sumber data.

Untuk memastikan migrasi yang lancar dan mencegah masalah seperti pencurian penawaran, ikuti rekomendasi berikut:

  • Mengisi ulang database Anda: Daripada memanggil dataSources.list sebelum setiap operasi produk, sebaiknya lakukan pengisian ulang satu kali untuk database lokal Anda. Tambahkan kolom nama dataSource ke setiap data produk agar Anda dapat memberikan ID yang benar secara langsung dalam permintaan Anda.

  • Menggabungkan dan menggunakan sumber data untuk label dan bahasa apa pun: Merchant API memungkinkan pembuatan sumber data tanpa menentukan label sumber data dan bahasa, sehingga memungkinkan penyisipan produk dengan label sumber data 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.get untuk menemukan dataSource yang 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
Masukkan 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}
Hapus 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}
Mencantumkan status produk GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products
Mengelompokkan beberapa permintaan POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch Menggunakan permintaan asinkron atau pengelompokan HTTP

ID

Format untuk kode 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 name resource REST.
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 untuk ID produk yang berisi karakter yang digunakan oleh Merchant API atau karakter yang dicadangkan URL.

Metode

Tabel ini menampilkan metode Content API for Shopping dan padanannya di Merchant API.

Metode Content API for Shopping Metode Merchant API Ketersediaan & catatan
products.get products.get Mengambil produk akhir yang telah 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. Atribut ini memperbarui input produk tertentu dan bersifat persisten.
products.delete productInputs.delete Menghapus input produk tertentu. Memerlukan dataSource.
products.custombatch Tidak tersedia Gunakan konten asinkron atau pengelompokan 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 Gunakan konten 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 resource REST name. Encoding base64url tanpa padding direkomendasikan dan wajib untuk nama produk yang berisi karakter yang digunakan oleh Merchant API atau karakter yang dicadangkan URL.
Atribut spesifikasi data produk tingkat teratas (misalnya, title, price, link) Objek productAttributes Atribut produk seperti title, price, dan link tidak lagi menjadi kolom tingkat teratas. Keduanya 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 ada lagi di Merchant API. Produk dengan saluran LOCAL di Content API for Shopping harus menetapkan kolom legacy_local ke true.
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.