Syntaxe des filtres

Cette page décrit la syntaxe à utiliser pour filtrer les comptes.

Syntaxe

Toutes les valeurs autres que les entiers doivent être placées entre guillemets doubles ("). À connaître les valeurs acceptées par un champ spécifique, consultez la documentation de référence documentation correspondant à ce champ.

Vous pouvez utiliser AND pour filtrer plusieurs champs dans la même requête. Vous pouvez également Utilisez AND pour combiner plusieurs filtres relationship(...) et service(...). Voici un exemple qui combine plusieurs éléments relationship(...) et service(...). filtres:

(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))

Cet exemple renvoie les comptes suivants:

  • tous les comptes associés à un autre compte de gestion ; et une autre relation en attente d'acceptation.

  • Tous les comptes portant le nom à afficher "store", qui sont associés à d'autres comptes

Vous ne pouvez pas utiliser AND pour filtrer plusieurs valeurs dans le même champ. Pour Par exemple, vous ne pouvez pas utiliser accountName = "*A*" AND accountName = "*B*".

Vous pouvez utiliser OR pour filtrer deux champs dans la même requête. Placer le filtre critère de chaque côté de l'opérateur OR avec des parenthèses. Exemple : (accountName = "storeA") OR (accountName = "storeB").

Vous ne pouvez utiliser que OR pour combiner deux champs. Par exemple, vous ne pouvez pas utiliser (accountName = "storeA") OR (accountName = "storeB") OR (accountName = "storeC")

Les parenthèses ne sont pas autorisées, sauf avec les opérateurs AND et OR, et dans des appels de fonctions, comme relationship(...) et service(...).

Pour les champs de chaîne tels que accountName et accountIdAlias, vous pouvez filtrer par des valeurs contenant un mot ou une séquence de caractères spécifique, en entourant d'astérisque (*). Par exemple, accountName = "*foo*" renvoie tous comptes avec un accountName contenant foo, comme "storeFoo".

Vous pouvez filtrer les valeurs qui ne contiennent pas une certaine séquence à l'aide de != et *. Par exemple, accountName != "*foo*" renvoie tous les comptes avec un accountName ne contenant pas foo.

Les espaces en trop sont ignorés. Par exemple, foo AND bar est identique à foo AND bar.

Spécification

Les filtres suivent un sous-ensemble du filtre AIP et sa fonction EBNF formelle grammaire:

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