Method: accounts.list

列出呼叫使用者可存取的帳戶,且符合要求的限制 (例如頁面大小或篩選條件)。這項功能不僅列出 MCA 的子帳戶,通話使用者也能存取所有帳戶,包括其他 MCA、已連結帳戶和獨立帳戶等。

HTTP 要求

GET https://merchantapi.googleapis.com/accounts/v1beta/accounts

這個網址使用 gRPC 轉碼語法。

查詢參數

參數
pageSize

integer

選用設定。傳回的帳戶數量上限。服務傳回的產品數量可能會少於這個值。如未指定,最多將傳回 250 個帳戶。最大值是 500;超過 500 的值將強制轉換成 500。

pageToken

string

選用設定。屬於接收自前一個 accounts.list 呼叫的網頁權杖。提供此項目即可擷取後續網頁。

進行分頁時,提供至 accounts.list 的所有其他參數須與提供網頁權杖的呼叫相符。

filter

string

選用設定。選用篩選器,只傳回符合篩選條件的帳戶。

以下列舉幾個有效篩選器的範例:

  • accountName = "*store*" AND relationship(providerId = 123)
  • relationship(providerId = 123 AND service(type = "ACCOUNT_AGGREGATION"))
  • (accountName = "storeA") OR (accountName = "storeB")
  • relationship(service( handshakeState = "APPROVED" AND type = "ACCOUNT_MANAGEMENT"))
  • relationship(callerHasAccessToProvider() AND externalAccountId = "extAcctId" AND accountIdAlias = "alias")
  • (relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))

帳戶層級的篩選器具有下列語意:

  • accountName這是指帳戶的「accountName」欄位。
  • relationship(...)表示此帳戶與其他帳戶有關係。在函式中,可進一步指定這個關係。

relationship 層級的篩選器具有下列語意:

  • providerId這是指與其他關係成員的帳戶數字 ID。舉例來說,如果篩選器應將篩選器限制在與帳戶 accounts/name/123 有關係的帳戶,則 providerId 應篩選為 providerId = 123
  • callerHasAccessToProvider()這會限制最終帳戶,只有與另一個帳戶有關聯的帳戶,通話使用者也有權存取該關係的其他成員 (或供應商)。
  • externalAccountId是指為關係設定的外部帳戶 ID。
  • accountIdAlias這是指為關係設定的帳戶 ID 別名。
  • service(...) 是指在關係中提供的服務。注意:兩個帳戶之間的關係可包含多項服務。

service 層級的篩選器具有下列語意:

  • handshakeState 是指服務的握手狀態。建立服務後,有時需要取得對方關係 (或兩者) 的核准。因此,服務可以處於 PENDINGAPPROVED 狀態。
  • type 是指服務類型。可能的值包括:
    • ACCOUNT_MANAGEMENT帳戶由供應商管理。
    • ACCOUNT_AGGREGATION 供應商為帳戶的集結網站。

這個篩選器遵循一部分 AIP 篩選器規格及其正式的 EBNF 文法。這個篩選器的文法更為嚴格且更詳細

filter
    : accountFilterDisj
    | accountFilterConj
    ;
accountFilterDisj
    : "(" accountFilterConj " OR " accountFilterConj ")"
    ;
accountFilterConj
    : accountFilter {" AND " accountFilter}
    ;
accountFilter
    : accountNameFilter | relationshipFn
    ;
accountNameFilter
    : "accountName" comparator value
    ;
relationshipFn
    : "relationship(" relationshipConj ")"
    ;
relationshipConj
    : relationshipFilter {" AND " relationshipFilter}
    ;
relationshipFilter
    : "providerId = " numValue
    | "callerHasAccessToProvider()"
    | "externalAccountId" comparator value
    | "accountIdAlias" comparator value
    | serviceFn
    ;
serviceFn
    : "service(" serviceConj ")"
    ;
serviceConj
    : serviceFilter {" AND " serviceFilter}
    ;
serviceFilter
    : handshakeStateFilter
    | typeFilter
    ;
handshakeStateFilter
    : "handshakeState = " value
    ;
typeFilter
    : "type = " value
    ;
comparator
    : " = " | " != "
    ;

其中包括:

  • 合併的每個欄位可能也只會出現一次 (例如在帳戶層級只能對 accountName 進行篩選一次,或者在各關係層級只能篩選出一次 providerId)。
  • 如為字串欄位 (例如 accountNameaccountIdAlias),您可以在 * 中納入查詢,以便表示 CONTAINS 運算子。舉例來說,accountName = "*foo*" 會傳回 accountName 包含 foo 的所有帳戶。或者,您可以使用 != 表示 NOT_CONTAINS 運算子。舉例來說,accountName != "*foo*" 會傳回 accountName 內「不含」 foo 的所有帳戶。注意:您可以使用 *** 搜尋 accountName 含有星號字元 * 的帳戶。
  • 系統會忽略多餘的空白。
  • 除了數值以外的所有值,必須用雙引號括住。
  • 如果使用分離,即使連接字元只有一個運算式,但兩端的連接都「必須」使用括號。除了函式叫用 (例如 relationshipservice) 之外,其他區域都不得使用括號。這是為了清楚表示相互結合的強度大於邏輯規則。

要求主體

要求主體必須為空白。

回應主體

accounts.list 方法的回應訊息。

如果成功,回應主體即會包含具有以下結構的資料:

JSON 表示法
{
  "accounts": [
    {
      object (Account)
    }
  ],
  "nextPageToken": string
}
欄位
accounts[]

object (Account)

ListAccountsRequest 相符的帳戶。

nextPageToken

string

可做為 pageToken 傳送的權杖,用於擷取後續網頁。如果省略這個欄位,就不會有後續頁面。

授權範圍

需要下列 OAuth 範圍:

  • https://www.googleapis.com/auth/content

詳情請參閱 OAuth 2.0 總覽