É possível usar a API Merchant Accounts para conferir uma lista filtrada das contas
a que você tem acesso, incluindo subcontas. É possível filtrar por nomes de exibição e
relacionamentos com outras contas.
Por exemplo, você pode filtrar contas com nomes de exibição que contenham a
string "store"
e que também tenham um status de vinculação PENDING
para ver todas as
lojas que ainda não aceitaram uma solicitação de vinculação de conta.
Para conferir todas as subcontas, chame
accounts.v1beta.accounts.listSubAccounts
.
Para conferir uma lista filtrada de todas as contas a que você tem acesso, incluindo
subcontas e contas que têm você como
User
, chame
accounts.v1beta.accounts.list
e especifique seus critérios de filtro no campo filter
.
Para detalhes sobre a sintaxe do campo filter
, consulte a referência da sintaxe de filtro.
Estes são os tipos de filtros que você pode usar:
Filtros de conta
É possível usar os seguintes campos para filtrar no nível account
:
accountName
: filtra peloaccountName
do recursoaccount
.relationship(...)
: filtra pelo tipo de relacionamento que a conta tem com outra. É possível incluir vários filtrosrelationship(...)
em uma solicitação.
Filtros de relacionamento
Use a função relationship(...)
para filtrar com base nos seguintes
critérios:
providerId
: o ID do comerciante do provedor de serviços. Por exemplo, se o filtro precisar retornar apenas contas que tenham um serviço fornecido poraccount/123
, useproviderId = 123
.accountIdAlias:
O alias do ID da conta configurado para a relação.service(...)
: o serviço fornecido como parte do relacionamento. É possível incluir várias funçõesservice(...)
em uma funçãorelationship(...)
.
Filtros de serviço
É possível usar a função service(...)
para filtrar ainda mais as contas com base no
status das relações e nos tipos de serviços que essas relações
oferecem:
externalAccountId
: o ID da conta externa do provedor de serviços para a conta a que ele fornece um serviço.handshakeState
: o estado de um contrato de serviço entre duas contas. Aceita os seguintes valores:PENDING
APPROVED
type:
O tipo de serviço fornecido pelo provedor. Aceita os seguintes valores:ACCOUNT_MANAGEMENT
O provedor gerencia a conta.ACCOUNT_AGGREGATION
O provedor é um agregador da conta.
Exemplos
Confira alguns exemplos de filtros que você pode testar.
Filtrar contas com nomes de exibição que contenham "store" e provedores com o ID "123":
accountName = "*store*" AND relationship(providerId = 123)
Filtrar todas as subcontas da conta "123":
relationship(providerId = 123 AND service(type = "ACCOUNT_AGGREGATION"))
Filtrar contas com serviços de gerenciamento de contas aprovados:
relationship(service(handshakeState = "APPROVED" AND type = "ACCOUNT_MANAGEMENT"))
Filtrar contas com uma relação que tenha um alias específico e que tenha um serviço com um ID de conta externa específico.
relationship(accountIdAlias = "alias" AND service(externalAccountId = "extAcctId"))
O exemplo a seguir demonstra como usar o pacote
ListAccountsRequest
para recuperar uma lista filtrada
das contas.
Java
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(callerHasAccessToProvider() AND 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);
}
}
A seguir
- Para mais informações sobre como filtrar contas, consulte Sintaxe de filtro.