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. Informationen dazu, welche Werte ein bestimmtes Feld akzeptiert, finden Sie in der Referenzdokumentation zum jeweiligen Feld.
Sie können AND
verwenden, um nach mehreren Feldern in derselben Abfrage zu filtern. Sie können auch AND
verwenden, um mehrere relationship(...)
- und service(...)
-Filter zu kombinieren.
Im folgenden Beispiel werden mehrere relationship(...)
- und service(...)
-Filter kombiniert:
(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, bei denen eine Beziehung zur Kontoverwaltung zu einem anderen Konto besteht, und eine zusätzliche Beziehung, deren Annahme noch aussteht.
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. Sie können beispielsweise nicht accountName = "*A*" AND accountName = "*B*"
verwenden.
Sie können OR
verwenden, um nach zwei Feldern in derselben Abfrage zu filtern. Setzen Sie die Filterkriterien auf jeder Seite des Operators OR
in Klammern. Beispiel: (accountName = "storeA") OR (accountName = "storeB")
.
Du kannst nur OR
verwenden, um zwei Felder zu kombinieren. Sie können beispielsweise nicht (accountName = "storeA") OR (accountName = "storeB") OR (accountName =
"storeC")
verwenden.
Klammern sind nur in den Operatoren AND
und OR
sowie in Funktionsaufrufen wie relationship(...)
und service(...)
zulässig.
Bei Stringfeldern wie accountName
und accountIdAlias
können Sie nach Werten filtern, die ein bestimmtes Wort oder eine bestimmte Zeichenfolge enthalten, indem Sie die Sequenz in Sternchen (*
) einschließen. Beispiel: accountName = "*foo*"
gibt alle Konten mit einer accountName
zurück, die foo
enthält, z. B. „storeFoo“.
Mit !=
und *
können Sie nach Werten filtern, die eine bestimmte Sequenz nicht enthalten. accountName != "*foo*"
gibt beispielsweise alle Konten mit einer accountName
zurück, 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 der AIP-Filterspezifikation und ihrer formalen EBNF-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
: " = " | " != "
;