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(...) 这表示帐号与其他帐号的关系。在 函数中,可以进一步指定此关系。
关系级别的过滤条件具有以下语义:
providerId :指作为关系的其他成员的账号的数字 ID。例如,如果过滤器应限定为与帐号 accounts/name/123 有关系的帐号,则 providerId 应作为 providerId = 123 进行过滤。
callerHasAccessToProvider() 这会将生成的账号限制为与其他账号有关联的账号,而调用用户还可以访问该关系的另一个成员(或提供商)。
externalAccountId :指为关系配置的外部账号 ID。
accountIdAlias 是指为关系配置的账号 ID 别名。
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 )之外,不允许使用括号。这是为了明确表明连接结合在逻辑上优于析取。
|