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(...)这表示帐号与其他帐号的关系。在 函数中,可以进一步指定此关系。

关系级别的过滤条件具有以下语义:

  • providerId:指作为关系的其他成员的账号的数字 ID。例如,如果过滤器应限定为与帐号 accounts/name/123 有关系的帐号,则 providerId 应作为 providerId = 123 进行过滤。
  • callerHasAccessToProvider()这会将生成的账号限制为与其他账号有关联的账号,而调用用户还可以访问该关系的另一个成员(或提供商)。
  • externalAccountId:指为关系配置的外部账号 ID。
  • accountIdAlias 是指为关系配置的账号 ID 别名。
  • 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 概览