Konten filtern, auf die Sie Zugriff haben

Mit der Merchant Accounts API können Sie eine gefilterte Liste der Konten aufrufen, auf die Sie zugreifen können, einschließlich Unterkonten. Sie können sie nach Anzeigenamen und nach Beziehungen zu anderen Konten filtern.

Wenn Sie beispielsweise alle Geschäfte sehen möchten, die einen Antrag auf Kontoverknüpfung nicht akzeptiert haben, können Sie nach Konten mit Anzeigenamen filtern, die den String "store" enthalten und den Verknüpfungsstatus PENDING haben.

Einfache Filterung

Wenn Sie alle Ihre Unterkonten aufrufen möchten, geben Sie accounts.v1beta.accounts.listSubAccounts ein.

Wenn Sie eine gefilterte Liste aller Konten aufrufen möchten, auf die Sie Zugriff haben, einschließlich untergeordneter Konten und Konten, in denen Sie als User aufgeführt sind, rufen Sie accounts.v1beta.accounts.list auf und geben Sie Ihre Filterkriterien im Feld filter an.

Weitere Informationen zur Syntax für das Feld filter finden Sie in der Referenz zur Filtersyntax.

Kontofilter

Sie können die folgenden Felder verwenden, um auf account-Ebene zu filtern:

  • accountName: Filtert nach dem accountName der account-Ressource.
  • capabilities: Filtert nach dem capabilities der account-Ressource. Hinweis: Dieses Feld ist in der Ressource selbst nicht verfügbar. Es wird nur die Funktion CAN_UPLOAD_PRODUCTS unterstützt. Dieses Feld unterstützt die Negation und verwendet die Sammlungssyntax. Beispiel:
    • capabilities:CAN_UPLOAD_PRODUCTS gibt Konten zurück, in denen Produkte hochgeladen werden können
    • -capabilities:CAN_UPLOAD_PRODUCTS gibt Konten zurück, in denen keine Produkte hochgeladen werden können
    • NOT capabilities:CAN_UPLOAD_PRODUCTS gibt Konten zurück, in denen keine Produkte hochgeladen werden können
  • relationship(...): Hier können Sie nach der Art der Beziehung zwischen dem Konto und einem anderen Konto filtern. Eine Anfrage kann mehrere relationship(...)-Filter enthalten.

Beziehungsfilter

AccountRelationship ist eine untergeordnete Ressource der Account-Ressource. Das einzige veränderbare Feld ist accountIdAlias. In diesem Feld kann ein Anbieter einen Alias für ein Konto angeben, eine alternative Möglichkeit, auf das Konto zu verweisen. Wenn Sie einen Dienst zwischen einem Merchant Center-Konto und einem Drittanbieter herstellen, wird eine Instanz dieser Ressource erstellt.

Mit der Funktion relationship(...) können Sie nach den folgenden Kriterien filtern:

  • providerId: Die Händler-ID des Dienstanbieters. Wenn der Filter beispielsweise nur Konten zurückgeben soll, die einen von account/123 bereitgestellten Dienst nutzen, verwenden Sie providerId = 123.
  • accountIdAlias: Der Alias der Konto-ID, der für die Beziehung konfiguriert ist. Für diesen Filter muss auch eine providerId festgelegt werden.
  • service(...): Der Dienst, der im Rahmen der Beziehung erbracht wird. Sie können mehrere service(...)-Funktionen in einer relationship(...)-Funktion verwenden.

Servicefilter

Mit der Funktion service(...) können Sie Konten weiter nach dem Status ihrer Beziehungen und den Arten von Diensten filtern, die diese Beziehungen bieten:

  • externalAccountId: Die externe Konto-ID des Dienstanbieters für das Konto, für das er einen Dienst erbringt.
  • handshakeState: Der Status einer Dienstleistungsvereinbarung zwischen zwei Konten. Akzeptiert die folgenden Werte:
    • PENDING
    • APPROVED
  • type: Die Art der Dienstleistung, die vom Anbieter erbracht wird. Akzeptiert die folgenden Werte:
    • ACCOUNT_MANAGEMENT Der Anbieter verwaltet das Konto.
    • ACCOUNT_AGGREGATION Der Anbieter ist ein Dienstleister des Kontos.

Beispiele

Hier sind einige Beispiele für Filter, die Sie ausprobieren können.

Filtern Sie nach Konten mit Anzeigenamen, die „Laden“ enthalten, und nach Anbietern mit der ID „123“:

accountName = "*store*" AND relationship(providerId = 123)

Filtern Sie nach Konten mit Anzeigenamen, die „Laden“ enthalten und in denen keine Produkte hochgeladen werden können:

accountName = "*store*" AND -capabilities:CAN_UPLOAD_PRODUCTS

Filtern nach allen Unterkonten des Kontos „123“:

relationship(providerId = 123 AND service(type = "ACCOUNT_AGGREGATION"))

Filtern Sie nach Konten mit genehmigten Diensten zur Kontoverwaltung:

relationship(service(handshakeState = "APPROVED" AND type = "ACCOUNT_MANAGEMENT"))

Filtern Sie nach Konten mit einer Beziehung, die einen bestimmten Alias hat, und die Beziehung hat einen Dienst mit einer bestimmten externen Konto-ID.

relationship(accountIdAlias = "alias" AND service(externalAccountId = "extAcctId"))

Im folgenden Beispiel wird gezeigt, wie Sie mit dem Paket ListAccountsRequest eine gefilterte Liste der Konten abrufen.

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);
  }
}

Nächste Schritte

  • Weitere Informationen zum Filtern von Konten finden Sie unter Filtersyntax.