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(...) 関係の一部として提供されるサービスを指します。注: 2 つのアカウント間の関係には、複数のサービスが含まれる場合があります。
service レベルのフィルタのセマンティクスは次のとおりです。
handshakeState サービスの handshake 状態を指します。サービスが確立されると、まず関係の他方または両方のメンバーによる承認が必要となることがあります。したがって、サービスは 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
: " = " | " != "
;
さらに、以下が適用されます。
- 結合内の各フィールドは 1 回だけ使用できます(たとえば、アカウント単位では
accountName でフィルタできるのは 1 回だけ、providerId は関係レベルごとに 1 回だけフィルタできます)。
- 文字列フィールド(
accountName や accountIdAlias など)では、クエリを * で囲むことで CONTAINS 演算子を表現できます。たとえば accountName = "*foo*" と指定すると、accountName に foo を含むすべてのアカウントが返されます。直交的には、!= を使用して NOT_CONTAINS 演算子を表現できます。たとえば accountName != "*foo*" と指定すると、accountName に foo が含まれていないアカウントがすべて返されます。注: *** を使用すると、accountName にスター文字「* 」が含まれるアカウントを検索できます。
- 余分な空白文字は無視されます。
- 数値のみの値を除くすべての値は、二重引用符で囲む必要があります。
- 分離を使用する場合、接続詞に式が 1 つしかない場合でも、それぞれの側の接続詞には括弧を使用する必要があります。括弧は、関数呼び出し(
relationship や service など)以外の場所では使用できません。これは、論理的に結合が分離よりも結合が強力であることを明確に示すためです。
|