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 demaccountName
deraccount
-Ressource.capabilities
: Filtert nach demcapabilities
deraccount
-Ressource. Hinweis: Dieses Feld ist in der Ressource selbst nicht verfügbar. Es wird nur die FunktionCAN_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önnenNOT 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 mehrererelationship(...)
-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 vonaccount/123
bereitgestellten Dienst nutzen, verwenden SieproviderId = 123
.accountIdAlias:
Der Alias der Konto-ID, der für die Beziehung konfiguriert ist. Für diesen Filter muss auch eineproviderId
festgelegt werden.service(...)
: Der Dienst, der im Rahmen der Beziehung erbracht wird. Sie können mehrereservice(...)
-Funktionen in einerrelationship(...)
-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.