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 是指服務的握手狀態。建立服務後,有時需要取得對方關係 (或兩者) 的核准。因此,服務可以處於 PENDING 或 APPROVED 狀態。
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 )。
- 如為字串欄位 (例如
accountName 或 accountIdAlias ),您可以在 * 中納入查詢,以便表示 CONTAINS 運算子。舉例來說,accountName = "*foo*" 會傳回 accountName 包含 foo 的所有帳戶。或者,您可以使用 != 表示 NOT_CONTAINS 運算子。舉例來說,accountName != "*foo*" 會傳回 accountName 內「不含」 foo 的所有帳戶。注意:您可以使用 *** 搜尋 accountName 含有星號字元 * 的帳戶。
- 系統會忽略多餘的空白。
- 除了數值以外的所有值,必須用雙引號括住。
- 如果使用分離,即使連接字元只有一個運算式,但兩端的連接都「必須」使用括號。除了函式叫用 (例如
relationship 或 service ) 之外,其他區域都不得使用括號。這是為了清楚表示相互結合的強度大於邏輯規則。
|