Filtersyntax

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
    : " = " | " != "
    ;