Filter akun yang dapat Anda akses

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 berdasarkan accountName resource account.
  • capabilities: Memfilter menurut capabilities resource account (perhatikan bahwa kolom ini tidak tersedia di resource itu sendiri). Hanya kemampuan CAN_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 produk
    • NOT capabilities:CAN_UPLOAD_PRODUCTS menampilkan akun yang tidak dapat mengupload produk
  • relationship(...): Memfilter berdasarkan jenis hubungan akun dengan akun lain. Anda dapat menyertakan beberapa filter relationship(...) 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 oleh account/123, gunakan providerId = 123.
  • accountIdAlias: Alias ID akun yang dikonfigurasi untuk hubungan. Filter ini juga memerlukan penetapan providerId.
  • service(...): Layanan yang disediakan sebagai bagian dari hubungan. Anda dapat menyertakan beberapa fungsi service(...) dalam satu fungsi relationship(...).

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.