accounts.list
পদ্ধতি আপনাকে
Account রিসোর্সের একটি তালিকা
রিট্রিভ করতে দেয় যা যাচাই করা ব্যবহারকারী অ্যাক্সেস করতে পারেন। আপনি filter কোয়েরি প্যারামিটার ব্যবহার করে
বিভিন্ন মানদণ্ডের ভিত্তিতে ফলাফলকে আরও নির্দিষ্ট করতে পারেন, যেমন:
- অ্যাকাউন্ট প্রপার্টি
- অন্যান্য অ্যাকাউন্টের সাথে সম্পর্ক (যেমন, উন্নত অ্যাকাউন্ট স্ট্রাকচারে পরিষেবা প্রদানকারী)
- অ্যাকাউন্টের সাথে যুক্ত পরিষেবা
একাধিক অ্যাকাউন্ট ম্যানেজ করা বা নির্দিষ্ট শর্ত পূরণ করে এমন নির্দিষ্ট ব্যবসা অ্যাকাউন্ট খুঁজে পাওয়ার ক্ষেত্রে এটি সহায়ক হতে পারে।
account লেভেলে ফিল্টার করার জন্য আপনি নিম্নলিখিত ফিল্ড ব্যবহার করতে পারবেন:
access: ব্যবহারকারীরaccount-এ অ্যাক্সেসের ধরন অনুযায়ী ফিল্টার করে। এই ফিল্টার নিম্নলিখিত ভ্যালু গ্রহণ করে:DIRECT: ব্যবহারকারী সরাসরি অ্যাক্সেস করতে পারেন এমন অ্যাকাউন্টই শুধু রিটার্ন করে। এইসব অ্যাকাউন্টে ব্যবহারকারীকে সরাসরি যোগ করা হয়েছে।INDIRECT: ব্যবহারকারীর পরোক্ষ অ্যাক্সেস আছে এমন অ্যাকাউন্টই শুধু রিটার্ন করে। এগুলি হল সেইসব অ্যাকাউন্ট যেগুলি ব্যবহারকারী অ্যাকাউন্টটির ব্যবহারকারী না হয়েও অ্যাক্সেস করতে পারেন। যেমন, কোনও MCA ব্যবহারকারীর MCA-এর সাবঅ্যাকাউন্টে 'ইনডাইরেক্ট' অ্যাক্সেস থাকবে। একইভাবে, CSS-এর ব্যবহারকারীরা CSS-এর সাথে কাজ করা অ্যাকাউন্টগুলিতে পরোক্ষ অ্যাক্সেস পাবেন।ALL: ব্যবহারকারীর অ্যাক্সেস আছে এমন সব অ্যাকাউন্ট (সরাসরি ও পরোক্ষ) রিটার্ন করে। ফিল্টার নির্দিষ্ট করা না থাকলে এটি হল ডিফল্ট আচরণ।
capabilities:accountরিসোর্সেরcapabilitiesঅনুযায়ী ফিল্টার করুন (মনে রাখবেন, এই ফিল্ডটি রিসোর্সে উপলভ্য নেই)। শুধুমাত্রCAN_UPLOAD_PRODUCTSকাজ করে। এই ফিল্ডে নেগেশন কাজ করে এবং এটি কালেকশন সিনট্যাক্স ব্যবহার করে।relationship(...): অ্যাকাউন্টের সাথে অন্য অ্যাকাউন্টের সম্পর্কের ধরন অনুযায়ী ফিল্টার করে দেখুন। আপনি একটি অনুরোধে একাধিকrelationship(...)ফিল্টার অন্তর্ভুক্ত করতে পারবেন।accountName:accountরিসোর্সেরaccountNameঅনুসারে ফিল্টার করে।
ফিল্টার সিনট্যাক্স সম্পর্কে আরও বিস্তারিত তথ্য পেতে, সিনট্যাক্স ফিল্টার গাইড দেখুন।
উদাহরণ
সবচেয়ে সাধারণ কোয়েরি কীভাবে তৈরি করতে হয় তা নিম্নলিখিত উদাহরণ থেকে জানতে পারবেন। নিচে দেওয়া সব
উদাহরণে accounts.list পদ্ধতি ব্যবহার করা হয়েছে। আরও তথ্যের জন্য, accounts.list
রেফারেন্স ডকুমেন্টেশন দেখুন।
নির্দিষ্ট পরিষেবা প্রদানকারীর সাব-অ্যাকাউন্ট খুঁজে পাওয়া
এই
accounts.listSubaccounts
পদ্ধতি সাব-অ্যাকাউন্ট তালিকাভুক্ত করার একটি সরাসরি উপায় প্রদান করে। এছাড়াও, আপনি নিম্নলিখিত বিভাগে বর্ণিত
ফিল্টার করার ক্ষমতা ব্যবহার করতে পারেন। আপনি কোনও
উন্নত অ্যাকাউন্ট ম্যানেজ করলে, আপনি
providerId-এ ফিল্টার করে এর সমস্ত সাব-অ্যাকাউন্ট তালিকাভুক্ত করতে পারবেন। PROVIDER_ID-এর জায়গায় আপনার উন্নত অ্যাকাউন্টের
আইডি বসান।
যেমন, প্রদানকারীর আইডি
123 হলে relationship(providerId=123) ব্যবহার করুন।
এটি আপনার অ্যাকাউন্টের স্ট্রাকচার ম্যানেজ করার জন্য উপযোগী।
GET https://merchantapi.googleapis.com/accounts/v1/accounts?filter=relationship(providerId%20%3D%20PROVIDER_ID)
সফল অনুরোধের ক্ষেত্রে 200 স্ট্যাটাস কোড এবং মিলে যাওয়া সাব-অ্যাকাউন্টের তালিকা সহ রেসপন্স বডি রিটার্ন করা হয়:
{
"accounts": [
{
"name": "accounts/77777",
"accountId": "77777",
"accountName": "SubAccount A of Provider",
"adultContent": false,
"languageCode": "fr",
"timeZone": {
"id": "Europe/Paris"
}
},
{
"name": "accounts/88888",
"accountId": "88888",
"accountName": "SubAccount B of Provider",
"adultContent": false,
"languageCode": "de",
"timeZone": {
"id": "Europe/Berlin"
}
}
],
"nextPageToken": "XYZ123abcDEF..."
}
যেসব অ্যাকাউন্ট প্রোডাক্ট আপলোড করতে পারে না সেগুলি খুঁজে দেখা
আরও নির্দিষ্ট সার্চ তৈরি করতে আপনি একাধিক ফিল্টার কন্ডিশন একত্রিত করতে পারবেন।
যেসব অ্যাকাউন্টের নামে "স্টোর" আছে এবং যেগুলি সরাসরি প্রোডাক্ট আপলোড করার জন্য কনফিগার করা নেই, accountName=*store* AND -capabilities:CAN_UPLOAD_PRODUCTS ফিল্টার
সেগুলি খুঁজে পায়।
capabilities-এর আগে থাকা - নেগেশন অপারেটর হিসেবে কাজ করে। এটি শুধুমাত্র উন্নত অ্যাকাউন্ট ফিরিয়ে আনার জন্য
উপযোগী হতে পারে।
GET https://merchantapi.googleapis.com/accounts/v1/accounts?filter=accountName%20%3D%20%22*store*%22%20AND%20-capabilities%3ACAN_UPLOAD_PRODUCTS
অনুরোধ সফল হলে, 200 স্ট্যাটাস কোড এবং মিলে যাওয়া অ্যাকাউন্টের তালিকা সহ একটি রেসপন্স বডি রিটার্ন করা হয়:
{
"accounts": [
{
"name": "accounts/54321",
"accountId": "54321",
"accountName": "Partner Store - US",
"adultContent": false,
"languageCode": "en",
"timeZone": {
"id": "America/New_York"
}
},
{
"name": "accounts/98765",
"accountId": "98765",
"accountName": "Auxiliary Brand Store",
"adultContent": false,
"languageCode": "fr",
"timeZone": {
"id": "Europe/Paris"
}
}
],
"nextPageToken": "CDEfghIJKlmnOPQ..."
}
নাম দিয়ে অ্যাকাউন্ট খুঁজুন
আপনি এমন অ্যাকাউন্ট সার্চ করতে পারেন যেগুলির ডিসপ্লে নাম একটি নির্দিষ্ট প্যাটার্নের সাথে মেলে।
যেমন, accountName=*store* নামের কোয়েরিটি সেইসব অ্যাকাউন্ট খুঁজে দেখবে যেগুলির নামে "স্টোর" শব্দটি আছে।
এটি নির্দিষ্ট ব্যবসার অ্যাকাউন্ট দ্রুত খুঁজে পেতে সাহায্য করে।
GET https://merchantapi.googleapis.com/accounts/v1/accounts?filter=accountName%20%3D%20%22*store*%22
অনুরোধ সফল হলে, 200 স্ট্যাটাস কোড এবং মিলে যাওয়া অ্যাকাউন্টের তালিকা সহ একটি রেসপন্স বডি রিটার্ন করা হয়:
{
"accounts": [
{
"name": "accounts/12345",
"accountId": "12345",
"accountName": "My Awesome Store",
"adultContent": false,
"languageCode": "en",
"timeZone": {
"id": "America/Los_Angeles"
}
},
{
"name": "accounts/67890",
"accountId": "67890",
"accountName": "Another Store Online",
"adultContent": false,
"languageCode": "en",
"timeZone": {
"id": "Europe/London"
}
}
],
"nextPageToken": "ABSdefGHIjklMNO..."
}
নির্দিষ্ট পরিষেবার জন্য কোনও প্রদানকারীর সাথে লিঙ্ক করা অ্যাকাউন্ট খোঁজা
আপনি এমন অ্যাকাউন্ট খুঁজে পেতে পারেন যেগুলির সাথে কোনও পরিষেবা প্রদানকারীর নির্দিষ্ট পরিষেবা সংক্রান্ত সম্পর্ক আছে।
যেমন, অ্যাকাউন্ট এগ্রিগেশনের জন্য PROVIDER_ID প্রোভাইডারের অধীনে এগ্রিগেট করা সব অ্যাকাউন্ট খুঁজে পেতে, ফিল্টার
relationship(providerId=PROVIDER_ID) AND
service(type="ACCOUNT_AGGREGATION") ব্যবহার করুন।
GET https://merchantapi.googleapis.com/accounts/v1/accounts?filter=relationship(providerId%20%3D%20PROVIDER_ID%20AND%20service(type%20%3D%20%22ACCOUNT_AGGREGATION%22))
অনুরোধ সফল হলে, 200 স্ট্যাটাস কোড এবং মিলে যাওয়া অ্যাকাউন্টের তালিকা সহ একটি রেসপন্স বডি রিটার্ন করা হয়:
{
"accounts": [
{
"name": "accounts/54321",
"accountId": "54321",
"accountName": "Aggregated Account X",
"adultContent": false,
"languageCode": "en",
"timeZone": {
"id": "America/New_York"
}
}
]
}
পরিষেবা সংক্রান্ত সম্পর্কের অনুমোদনের স্ট্যাটাসের ভিত্তিতে অ্যাকাউন্ট খোঁজা
আপনি কোনও পরিষেবা প্রদানকারীর সাথে অ্যাকাউন্টের পরিষেবা সংক্রান্ত সম্পর্কের স্ট্যাটাসের উপর ভিত্তি করে অ্যাকাউন্ট ফিল্টার করতে পারবেন। যেমন, (handshakeState = "PENDING") কোনও নির্দিষ্ট পরিষেবা প্রদানকারীর PROVIDER_ID পাঠানো অ্যাকাউন্ট
লিঙ্ক করার অনুরোধ গ্রহণ করেনি এমন সব অ্যাকাউন্ট খুঁজে পেতে।
যেমন, 123 হল প্রোভাইডার আইডি, ACCOUNT_MANAGEMENT হল পরিষেবার ধরন এবং PENDING হল স্ট্যাটাস, এমন অ্যাকাউন্ট খুঁজে পেতে
relationship(service(handshakeState = "PENDING" AND type =
"ACCOUNT_MANAGEMENT") AND providerId = 123) ব্যবহার করুন।
GET https://merchantapi.googleapis.com/accounts/v1/accounts?filter=relationship(service(handshakeState%20%3D%20%22PENDING%22%20AND%20type%20%3D%20%22ACCOUNT_MANAGEMENT%22)%20AND%20providerId%20%3D%20PROVIDER_ID)
অনুরোধ সফল হলে, 200 স্ট্যাটাস কোড এবং মিলে যাওয়া অ্যাকাউন্টের তালিকা সহ একটি রেসপন্স বডি রিটার্ন করা হয়:
{
"accounts": [
{
"name": "accounts/98765",
"accountId": "98765",
"accountName": "Managed Account Y",
"adultContent": false,
"languageCode": "es",
"timeZone": {
"id": "Europe/Madrid"
}
}
]
}
ক্লায়েন্ট লাইব্রেরি ব্যবহার করে অ্যাকাউন্ট ফিল্টার করা
নিচে দেওয়া উদাহরণ থেকে বোঝা যাবে যে কীভাবে ক্লায়েন্ট লাইব্রেরি ব্যবহার করে অ্যাকাউন্ট ফিল্টার
করা যায়। এর জন্য অ্যাকাউন্ট নেম ও কোনও প্রোভাইডারের সাথে
সম্পর্কের মতো সম্মিলিত মানদণ্ড ব্যবহার করা হয়। এইসব উদাহরণে accounts.list পদ্ধতি ব্যবহার করা হয়েছে। আরও তথ্যের জন্য,
accounts.list
রেফারেন্স ডকুমেন্টেশন দেখুন।
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.Account;
import com.google.shopping.merchant.accounts.v1.AccountsServiceClient;
import com.google.shopping.merchant.accounts.v1.AccountsServiceClient.ListAccountsPagedResponse;
import com.google.shopping.merchant.accounts.v1.AccountsServiceSettings;
import com.google.shopping.merchant.accounts.v1.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);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\AccountsServiceClient;
use Google\Shopping\Merchant\Accounts\V1\ListAccountsRequest;
/**
* This class demonstrates how to filter the accounts the user making the request has access to.
*/
class FilterAccounts
{
public static function filterAccounts(array $config): void
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$accountsServiceClient = new AccountsServiceClient($options);
// Calls the API and catches and prints any network failures/errors.
try {
// Filter for accounts with display names containing "store" and a provider with the ID "123":
$filter = "accountName = \"*store*\" AND relationship(providerId = 123)";
// Filter for all subaccounts of account "123":
// $filter = "relationship(providerId = 123 AND service(type = \"ACCOUNT_AGGREGATION\"))";
// $filter = "relationship(service(handshakeState = \"APPROVED\" AND type =
// \"ACCOUNT_MANAGEMENT\") AND providerId = 123)";
$request = new ListAccountsRequest(['filter' => $filter]);
print "Sending list accounts request with filter:\n";
$response = $accountsServiceClient->listAccounts($request);
$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.
foreach ($response->iterateAllElements() as $account) {
print_r($account);
$count++;
}
print "The following count of elements were returned: ";
print $count . PHP_EOL;
} catch (ApiException $e) {
print $e->getMessage();
}
}
public function callSample(): void
{
$config = Config::generateConfig();
self::filterAccounts($config);
}
}
$sample = new FilterAccounts();
$sample->callSample();
Python
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import AccountsServiceClient
from google.shopping.merchant_accounts_v1 import ListAccountsRequest
def filter_accounts():
"""Filters the accounts the user making the request has access to."""
# Get OAuth credentials.
credentials = generate_user_credentials.main()
# Create a client.
client = AccountsServiceClient(credentials=credentials)
# Create the filter string.
filter_string = 'accountName = "*store*" AND relationship(providerId = 123)'
# Create the request.
request = ListAccountsRequest(filter=filter_string)
# Make the request and print the response.
try:
print("Sending list accounts request with filter:")
response = client.list_accounts(request=request)
count = 0
for account in response:
print(account)
count += 1
print(f"The following count of elements were returned: {count}")
except RuntimeError as e:
print(e)
if __name__ == "__main__":
filter_accounts()
AppsScript
/**
* Filters and lists accounts for which the logged-in user has access to
*/
function filterAccounts() {
// IMPORTANT:
// Enable the Merchant API Accounts sub-API Advanced Service and call it
// "MerchantApiAccounts"
// Create the filter string.
// Documentation can be found at
// https://developers.google.com/merchant/api/guides/accounts/filter-syntax
const filter = 'accountName = "*store*" AND relationship(providerId = 123)';
try {
console.log('Sending filter Accounts request');
let pageToken;
const pageSize = 500;
// Call the Accounts.list API method with a filter. Use the pageToken to iterate through
// all pages of results.
do {
const response =
MerchantApiAccounts.Accounts.list({pageSize, pageToken, filter});
for (const account of response.accounts) {
console.log(account);
}
pageToken = response.nextPageToken;
} while (pageToken); // Exits when there is no next page token.
} catch (e) {
console.log('ERROR!');
console.log(e);
}
}
cURL
curl --location 'https://merchantapi.googleapis.com/accounts/v1/accounts?filter=accountName%20%3D%20%22*store*%22%20AND%20relationship(providerId%20%3D%20PROVIDER_ID)' \
--header 'Authorization: Bearer API_TOKEN'