Puoi utilizzare l'API Merchant Accounts per visualizzare un elenco filtrato degli account a cui puoi accedere, inclusi i subaccount. Puoi filtrarli per nome visualizzato e per le loro relazioni con altri account.
Ad esempio, per visualizzare tutti i tuoi negozi che non hanno accettato una richiesta di collegamento dell'account, puoi filtrare per gli account con nomi visualizzati contenenti la stringa "store"
e con stato del collegamento PENDING
.
Filtri di base
Per visualizzare tutti i tuoi subaccount, chiama
accounts.v1beta.accounts.listSubAccounts
.
Per visualizzare un elenco filtrato di tutti gli account a cui hai accesso, inclusi i subaccount e gli account in cui sei un User
, chiama accounts.v1beta.accounts.list
e specifica i criteri di filtro nel campo filter
.
Per informazioni dettagliate sulla sintassi del campo filter
, consulta la documentazione di riferimento sulla sintassi dei filtri.
Filtri account
Puoi utilizzare i seguenti campi per filtrare a livello di account
:
accountName
: filtra in base alaccountName
della risorsaaccount
.capabilities
: filtra in base al valorecapabilities
della risorsaaccount
(tieni presente che questo campo non è disponibile nella risorsa stessa). È supportata solo la funzionalitàCAN_UPLOAD_PRODUCTS
. Questo campo supporta la negazione e utilizza la sintassi di raccolta. Ad esempio:capabilities:CAN_UPLOAD_PRODUCTS
restituisce gli account che possono caricare i prodotti-capabilities:CAN_UPLOAD_PRODUCTS
restituisce gli account che non possono caricare prodottiNOT capabilities:CAN_UPLOAD_PRODUCTS
restituisce gli account che non possono caricare i prodotti
relationship(...)
: filtra in base al tipo di relazione dell'account con un altro account. Puoi includere più filtrirelationship(...)
in un'unica richiesta.
Filtri delle relazioni
AccountRelationship
è un elemento secondario della risorsa Account
. L'unico campo mutabile è accountIdAlias
. Questo campo consente a un fornitore di specificare un alias per un account, un modo alternativo per farvi riferimento. L'impostazione di un servizio tra un account Merchant Center e una terza parte crea un'istanza di questa risorsa.
Puoi utilizzare la funzione relationship(...)
per filtrare in base ai seguenti criteri:
providerId
: l'ID commerciante del fornitore di servizi. Ad esempio, se il filtro deve restituire solo gli account con un servizio fornito daaccount/123
, utilizzaproviderId = 123
.accountIdAlias:
L'alias dell'ID account configurato per la relazione. Questo filtro richiede anche l'impostazione di unproviderId
.service(...)
: il servizio fornito nell'ambito della relazione. Puoi includere più funzioniservice(...)
in una funzionerelationship(...)
.
Filtri dei servizi
Puoi utilizzare la funzione service(...)
per filtrare ulteriormente gli account in base allo stato dei loro rapporti e ai tipi di servizi forniti da questi rapporti:
externalAccountId
: l'ID account esterno del fornitore di servizi per l'account a cui fornisce un servizio.handshakeState
: lo stato di un contratto di servizio tra due account. Accetta i seguenti valori:PENDING
APPROVED
type:
Il tipo di servizio fornito dal fornitore. Accetta i seguenti valori:ACCOUNT_MANAGEMENT
Il fornitore gestisce l'account.ACCOUNT_AGGREGATION
Il fornitore è un aggregatore dell'account.
Esempi
Ecco alcuni esempi di filtri che puoi provare.
Filtra per gli account con nomi visualizzati contenenti "negozio" e fornitori con ID "123":
accountName = "*store*" AND relationship(providerId = 123)
Filtra per gli account con nomi visualizzati contenenti "negozio" che non possono caricare prodotti:
accountName = "*store*" AND -capabilities:CAN_UPLOAD_PRODUCTS
Filtra per tutti i subaccount dell'account "123":
relationship(providerId = 123 AND service(type = "ACCOUNT_AGGREGATION"))
Filtra per gli account con servizi di gestione dell'account approvati:
relationship(service(handshakeState = "APPROVED" AND type = "ACCOUNT_MANAGEMENT"))
Filtra per gli account con una relazione che ha un alias specifico e la relazione ha un servizio con un ID account esterno specifico.
relationship(accountIdAlias = "alias" AND service(externalAccountId = "extAcctId"))
L'esempio seguente mostra come utilizzare il pacchetto ListAccountsRequest
per recuperare un elenco filtrato degli account.
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);
}
}
Passaggi successivi
- Per saperne di più su come filtrare gli account, consulta la sintassi dei filtri.