Merchant Center खातों के एपीआई का इस्तेमाल करके, उन खातों की फ़िल्टर की गई सूची देखी जा सकती है जिनका ऐक्सेस आपके पास है. इसमें उप-खाते भी शामिल हैं. इन्हें डिसप्ले नेम और दूसरे खातों के साथ रिश्ते के हिसाब से फ़िल्टर किया जा सकता है.
उदाहरण के लिए, खाते को लिंक करने का अनुरोध स्वीकार न करने वाले सभी स्टोर देखने के लिए, ऐसे खातों को फ़िल्टर किया जा सकता है जिनके डिसप्ले नेम में "store"
स्ट्रिंग शामिल हो और जिनका लिंक स्टेटस PENDING
हो.
बुनियादी फ़िल्टर
अपने सभी उप-खाते देखने के लिए, accounts.v1beta.accounts.listSubAccounts
को कॉल करें.
आपके पास जिन खातों का ऐक्सेस है उनकी फ़िल्टर की गई सूची देखने के लिए, accounts.v1beta.accounts.list
को कॉल करें. इसमें सब-खाते और ऐसे सभी खाते शामिल हैं जिनमें आपका ऐक्सेस लेवल User
है. साथ ही, filter
फ़ील्ड में फ़िल्टर करने की शर्तें बताएं.
filter
फ़ील्ड के सिंटैक्स के बारे में जानने के लिए, फ़िल्टर सिंटैक्स का रेफ़रंस देखें.
खाता फ़िल्टर
account
लेवल पर फ़िल्टर करने के लिए, इन फ़ील्ड का इस्तेमाल किया जा सकता है:
accountName
:account
संसाधन केaccountName
के हिसाब से फ़िल्टर करता है.capabilities
:account
रिसॉर्स केcapabilities
के हिसाब से फ़िल्टर करता है (ध्यान दें कि यह फ़ील्ड, रिसॉर्स पर उपलब्ध नहीं है). सिर्फ़CAN_UPLOAD_PRODUCTS
सुविधा का इस्तेमाल किया जा सकता है. इस फ़ील्ड में, 'नहीं' का इस्तेमाल किया जा सकता है और कलेक्शन सिंटैक्स का इस्तेमाल किया जाता है. उदाहरण के लिए:capabilities:CAN_UPLOAD_PRODUCTS
ऐसे खातों की जानकारी दिखाता है जिनसे प्रॉडक्ट अपलोड किए जा सकते हैं-capabilities:CAN_UPLOAD_PRODUCTS
ऐसे खातों की जानकारी दिखाता है जिनसे प्रॉडक्ट अपलोड नहीं किए जा सकतेNOT capabilities:CAN_UPLOAD_PRODUCTS
ऐसे खाते दिखाता है जिनसे प्रॉडक्ट अपलोड नहीं किए जा सकते
relationship(...)
: इस फ़िल्टर की मदद से, यह पता लगाया जा सकता है कि खाते का किसी दूसरे खाते से क्या संबंध है. एक अनुरोध में कईrelationship(...)
फ़िल्टर शामिल किए जा सकते हैं.
संबंध के हिसाब से फ़िल्टर
AccountRelationship
, Account
संसाधन का चाइल्ड है. इसका सिर्फ़ एक बदला जा सकने वाला फ़ील्ड accountIdAlias
है. इस फ़ील्ड की मदद से, सेवा देने वाली कंपनी किसी खाते के लिए कोई दूसरा नाम तय कर सकती है. यह नाम, खाते का रेफ़रंस देने का एक अन्य तरीका है. Merchant Center खाते और तीसरे पक्ष के बीच सेवा सेट अप करने पर, इस संसाधन का एक इंस्टेंस बन जाता है.
relationship(...)
फ़ंक्शन का इस्तेमाल करके, इन शर्तों के आधार पर फ़िल्टर किया जा सकता है:
providerId
: सेवा देने वाली कंपनी का मर्चेंट आईडी. उदाहरण के लिए, अगर फ़िल्टर को सिर्फ़ ऐसे खाते दिखाने हैं जिनमेंaccount/123
की सेवा उपलब्ध है, तोproviderId = 123
का इस्तेमाल करें.accountIdAlias:
खाता आईडी का वह दूसरा नाम जो संबंध के लिए कॉन्फ़िगर किया गया है. इस फ़िल्टर के लिए,providerId
सेट करना भी ज़रूरी है.service(...)
: वह सेवा जो पार्टनरशिप के तहत दी जाती है. एकrelationship(...)
फ़ंक्शन में कईservice(...)
फ़ंक्शन शामिल किए जा सकते हैं.
सेवा के लिए फ़िल्टर
service(...)
फ़ंक्शन का इस्तेमाल करके, खातों को उनके संबंधों की स्थिति और उनसे मिलने वाली सेवाओं के आधार पर फ़िल्टर किया जा सकता है:
externalAccountId
: सेवा देने वाली कंपनी के उस खाते का बाहरी खाता आईडी जिसे सेवा दी जा रही है.handshakeState
: दो खातों के बीच हुए सेवा समझौते की स्थिति. ये वैल्यू स्वीकार की जाती हैं:PENDING
APPROVED
type:
सेवा देने वाली कंपनी किस तरह की सेवा देती है. ये वैल्यू स्वीकार की जाती हैं:ACCOUNT_MANAGEMENT
सेवा देने वाली कंपनी खाता मैनेज करती है.ACCOUNT_AGGREGATION
सेवा देने वाली कंपनी, खाते का एग्रीगेटर है.
उदाहरण
यहां कुछ फ़िल्टर के उदाहरण दिए गए हैं.
ऐसे खातों के लिए फ़िल्टर करें जिनके डिसप्ले नेम में "स्टोर" और आईडी "123" वाले प्रोवाइडर शामिल हों:
accountName = "*store*" AND relationship(providerId = 123)
ऐसे खातों को फ़िल्टर करें जिनके डिसप्ले नेम में "स्टोर" शामिल है और जो प्रॉडक्ट अपलोड नहीं कर सकते:
accountName = "*store*" AND -capabilities:CAN_UPLOAD_PRODUCTS
खाते "123" के सभी उप-खातों के लिए फ़िल्टर:
relationship(providerId = 123 AND service(type = "ACCOUNT_AGGREGATION"))
खाता मैनेज करने की अनुमति वाली सेवाओं वाले खातों के लिए फ़िल्टर:
relationship(service(handshakeState = "APPROVED" AND type = "ACCOUNT_MANAGEMENT"))
ऐसे खातों के लिए फ़िल्टर करें जिनका संबंध किसी खास उपनाम से है और जिनके संबंध में, किसी खास बाहरी खाता आईडी वाली सेवा है.
relationship(accountIdAlias = "alias" AND service(externalAccountId = "extAcctId"))
यहां दिए गए सैंपल में, खातों की फ़िल्टर की गई सूची पाने के लिए, ListAccountsRequest
पैकेज का इस्तेमाल करने का तरीका बताया गया है.
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);
}
}
आगे क्या करना है
- खातों को फ़िल्टर करने के बारे में ज़्यादा जानने के लिए, फ़िल्टर के सिंटैक्स लेख पढ़ें.