Anda dapat menggunakan Merchant Accounts API untuk melihat daftar akun yang difilter yang dapat Anda akses, termasuk sub-akun. Anda dapat memfilternya berdasarkan nama tampilan dan berdasarkan hubungan dengan akun lain.
Misalnya, untuk melihat semua toko yang belum menerima permintaan penautan akun, Anda dapat memfilter akun dengan nama tampilan yang berisi string "store"
dan memiliki status penautan PENDING
.
Pemfilteran dasar
Untuk melihat semua sub-akun Anda, panggil
accounts.v1beta.accounts.listSubAccounts
.
Untuk melihat daftar yang difilter dari semua akun yang aksesnya Anda miliki, termasuk
sub-akun dan akun apa pun yang menjadikan Anda sebagai
User
, panggil
accounts.v1beta.accounts.list
dan tentukan kriteria filter di kolom filter
.
Untuk mengetahui detail sintaksis kolom filter
, lihat referensi sintaksis filter.
Filter akun
Anda dapat menggunakan kolom berikut untuk memfilter di tingkat account
:
accountName
: Memfilter berdasarkanaccountName
resourceaccount
.capabilities
: Memfilter menurutcapabilities
resourceaccount
(perhatikan bahwa kolom ini tidak tersedia di resource itu sendiri). Hanya kemampuanCAN_UPLOAD_PRODUCTS
yang didukung. Kolom ini mendukung penyangkalan dan menggunakan sintaksis koleksi. Misalnya:capabilities:CAN_UPLOAD_PRODUCTS
menampilkan akun yang dapat mengupload produk-capabilities:CAN_UPLOAD_PRODUCTS
menampilkan akun yang tidak dapat mengupload produkNOT capabilities:CAN_UPLOAD_PRODUCTS
menampilkan akun yang tidak dapat mengupload produk
relationship(...)
: Memfilter berdasarkan jenis hubungan akun dengan akun lain. Anda dapat menyertakan beberapa filterrelationship(...)
dalam satu permintaan.
Filter hubungan
AccountRelationship
adalah turunan dari resource Account
. Satu-satunya kolom
yang dapat diubah adalah accountIdAlias
. Kolom ini memungkinkan penyedia menentukan alias untuk akun, yaitu cara alternatif untuk mereferensikannya. Membuat layanan antara akun Merchant Center dan pihak ketiga akan membuat instance resource ini.
Anda dapat menggunakan fungsi relationship(...)
untuk memfilter berdasarkan kriteria
berikut:
providerId
: ID penjual penyedia layanan. Misalnya, jika filter hanya menampilkan akun yang memiliki layanan yang disediakan olehaccount/123
, gunakanproviderId = 123
.accountIdAlias:
Alias ID akun yang dikonfigurasi untuk hubungan. Filter ini juga memerlukan penetapanproviderId
.service(...)
: Layanan yang disediakan sebagai bagian dari hubungan. Anda dapat menyertakan beberapa fungsiservice(...)
dalam satu fungsirelationship(...)
.
Filter layanan
Anda dapat menggunakan fungsi service(...)
untuk memfilter akun lebih lanjut berdasarkan
status hubungannya, dan jenis layanan yang disediakan hubungan tersebut:
externalAccountId
: ID akun eksternal penyedia layanan untuk akun yang menerima layanan darinya.handshakeState
: Status perjanjian layanan antara dua akun. Menerima nilai berikut:PENDING
APPROVED
type:
Jenis layanan yang diberikan oleh penyedia. Menerima nilai berikut:ACCOUNT_MANAGEMENT
Penyedia mengelola akun.ACCOUNT_AGGREGATION
Penyedia adalah agregator akun.
Contoh
Berikut beberapa contoh filter yang dapat Anda coba.
Filter akun dengan nama tampilan yang berisi "store" dan penyedia dengan ID "123":
accountName = "*store*" AND relationship(providerId = 123)
Filter akun dengan nama tampilan yang berisi "toko" yang tidak dapat mengupload produk:
accountName = "*store*" AND -capabilities:CAN_UPLOAD_PRODUCTS
Memfilter semua sub-akun akun "123":
relationship(providerId = 123 AND service(type = "ACCOUNT_AGGREGATION"))
Filter akun dengan layanan pengelolaan akun yang disetujui:
relationship(service(handshakeState = "APPROVED" AND type = "ACCOUNT_MANAGEMENT"))
Filter akun dengan hubungan yang memiliki alias tertentu dan hubungan tersebut memiliki layanan dengan ID akun eksternal tertentu.
relationship(accountIdAlias = "alias" AND service(externalAccountId = "extAcctId"))
Contoh berikut menunjukkan cara menggunakan paket
ListAccountsRequest
untuk mengambil daftar akun yang difilter.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1beta.Account;
import com.google.shopping.merchant.accounts.v1beta.AccountsServiceClient;
import com.google.shopping.merchant.accounts.v1beta.AccountsServiceClient.ListAccountsPagedResponse;
import com.google.shopping.merchant.accounts.v1beta.AccountsServiceSettings;
import com.google.shopping.merchant.accounts.v1beta.ListAccountsRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to filter the accounts the user making the request has access to. */
public class FilterAccountsSample {
public static void filterAccounts(Config config) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
AccountsServiceSettings accountsServiceSettings =
AccountsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Calls the API and catches and prints any network failures/errors.
try (AccountsServiceClient accountsServiceClient =
AccountsServiceClient.create(accountsServiceSettings)) {
// Filter for accounts with display names containing "store" and a provider with the ID "123":
String filter = "accountName = \"*store*\" AND relationship(providerId = 123)";
// Filter for all subaccounts of account "123":
// String filter2 = "relationship(providerId = 123 AND service(type =
// \"ACCOUNT_AGGREGATION\"))";
// String filter3 = "relationship(service(handshakeState = \"APPROVED\" AND type =
// \"ACCOUNT_MANAGEMENT\") AND providerId = 123)";
ListAccountsRequest request = ListAccountsRequest.newBuilder().setFilter(filter).build();
System.out.println("Sending list accounts request with filter:");
ListAccountsPagedResponse response = accountsServiceClient.listAccounts(request);
int count = 0;
// Iterates over all rows in all pages and prints the sub-account
// in each row.
// `response.iterateAll()` automatically uses the `nextPageToken` and recalls the
// request to fetch all pages of data.
for (Account account : response.iterateAll()) {
System.out.println(account);
count++;
}
System.out.print("The following count of elements were returned: ");
System.out.println(count);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
filterAccounts(config);
}
}
Langkah berikutnya
- Untuk mengetahui informasi selengkapnya tentang pemfilteran akun, lihat Sintaksis filter.