このページでは、アカウントをフィルタするために必要な構文について説明します。
構文
整数以外の値はすべて二重引用符(")で囲む必要があります。宛先 特定のフィールドで受け入れられる値については、リファレンス ドキュメントをご覧ください。
AND
を使用すると、同じクエリ内で複数のフィールドをフィルタリングできます。また、
AND
を使用して、複数の relationship(...)
フィルタと service(...)
フィルタを組み合わせる。
複数の relationship(...)
と service(...)
を組み合わせる例を次に示します。
フィルタ:
(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))
この例では、次のアカウントを返します。
別のアカウントに管理関係があるすべてのアカウント もう 1 つは承認待ちの 関係です
表示名が「
"store"
」で、他のアカウントと関係があるすべてのアカウント。
AND
を使用して、同じフィールド内の複数の値をフィルタリングすることはできません。対象
accountName = "*A*" AND accountName = "*B*"
は使用できません。
OR
を使用すると、同じクエリで 2 つのフィールドでフィルタリングできます。フィルターを囲む
OR
演算子の両側の条件をかっこで囲みます。例: (accountName = "storeA") OR (accountName = "storeB")
OR
は 2 つのフィールドを組み合わせるためにのみ使用できます。たとえば、
(accountName = "storeA") OR (accountName = "storeB") OR (accountName =
"storeC")
。
括弧は、AND
演算子と OR
演算子を使用する場合を除いて使用できません。また、
relationship(...)
や service(...)
などの関数呼び出し。
accountName
や accountIdAlias
などの文字列フィールドでは、
特定の単語または一連の文字を含む値を
アスタリスク付きシーケンス(*
)。たとえば、accountName = "*foo*"
はすべての
accountName
が foo
を含むアカウント(「storeFoo」など)
!=
を使用すると、特定のシーケンスを含まない値をフィルタできます。
および *
。たとえば accountName != "*foo*"
は、
foo
を含まない accountName
。
余分な空白文字は無視されます。たとえば、foo AND bar
は foo
AND bar
と同じです。
仕様
フィルタは AIP フィルタのサブセットに従います。 およびその正式な EBNF 文法:
filter
: accountFilterDisj
| accountFilterConj
;
accountFilterDisj
: "(" accountFilterConj " OR " accountFilterConj ")"
;
accountFilterConj
: accountFilter {" AND " accountFilter}
;
accountFilter
: displayNameFilter | relationshipFn
;
displayNameFilter
: "displayName" comparator value
;
relationshipFn
: "relationship(" relationshipConj ")"
;
relationshipConj
: relationshipFilter {" AND " relationshipFilter}
;
relationshipFilter
: "providerId = " numValue
| "callerHasAccessToProviderFilter()"
| "externalAccountId" comparator value
| "accountIdAlias" comparator value
| serviceFn
;
serviceFn
: "service(" serviceConj ")"
;
serviceConj
: serviceFilter {" AND " serviceFilter}
;
serviceFilter
: handshakeStateFilter
| typeFilter
;
handshakeStateFilter
: "handshakeState = " value
;
typeFilter
: "type = " value
;
comparator
: " = " | " != "
;