Auf dieser Seite wird die Syntax zum Filtern von Konten erläutert.
Syntax
Alle Werte außer Ganzzahlen müssen in doppelte Anführungszeichen (") gesetzt werden. Bis welche Werte in einem bestimmten Feld zulässig sind, finden Sie in der Referenz Dokumentation für dieses Feld.
Mit AND
können Sie nach mehreren Feldern in derselben Abfrage filtern. Sie können auch
AND
verwenden, um mehrere relationship(...)
- und service(...)
-Filter zu kombinieren.
In diesem Beispiel werden mehrere relationship(...)
- und service(...)
-Elemente kombiniert
Filter:
(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))
In diesem Beispiel werden die folgenden Konten zurückgegeben:
Alle Konten, die in einer Beziehung zur Kontoverwaltung zu einem anderen Konto stehen, und einer zusätzlichen Beziehung, die noch nicht akzeptiert wird.
Alle Konten mit dem Anzeigenamen
"store"
, die Beziehungen zu anderen Konten haben.
Sie können AND
nicht verwenden, um nach mehreren Werten im selben Feld zu filtern. Für
Sie können beispielsweise nicht accountName = "*A*" AND accountName = "*B*"
verwenden.
Mit OR
können Sie nach zwei Feldern in derselben Abfrage filtern. Filter einschließen
Kriterien auf jeder Seite des OR
-Operators durch Klammern. Beispiel: (accountName = "storeA") OR (accountName = "storeB")
.
Sie können nur OR
verwenden, um zwei Felder zu kombinieren. Zum Beispiel können Sie nicht
(accountName = "storeA") OR (accountName = "storeB") OR (accountName =
"storeC")
Klammern sind nur mit den Operatoren AND
und OR
sowie in
Funktionsaufrufe wie relationship(...)
und service(...)
.
Für Stringfelder wie accountName
und accountIdAlias
können Sie nach
-Werte, die ein bestimmtes Wort oder eine bestimmte Zeichenfolge enthalten, indem die
Sequenz in Sternchen (*
) dargestellt. Beispiel: accountName = "*foo*"
gibt alle
Konten mit einer accountName
, die foo
enthält, z. B. „storeFoo“
Mit !=
können Sie nach Werten filtern, die keine bestimmte Sequenz enthalten.
und *
. Beispiel: accountName != "*foo*"
gibt alle Konten mit einem
accountName
, die foo
nicht enthält.
Zusätzliche Leerzeichen werden ignoriert. Beispielsweise ist foo AND bar
mit foo
AND bar
identisch.
Spezifikation
Die Filter folgen einer Teilmenge des AIP-Filters. und die formelle EBNF-Funktion Grammatik:
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
: " = " | " != "
;