Syntaxe des filtres

Cette page explique la syntaxe à utiliser pour filtrer les comptes.

Syntaxe

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

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

(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 à une relation de gestion de compte avec un autre compte, et une relation supplémentaire en attente d'acceptation.

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

Vous ne pouvez pas utiliser AND pour filtrer plusieurs valeurs dans le même champ. 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. Placez les critères de filtre de chaque côté de l'opérateur OR entre 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 autrement qu'avec les opérateurs AND et OR, et dans les appels de fonctions, tels que relationship(...) et service(...).

Pour les champs de chaîne tels que accountName et accountIdAlias, vous pouvez filtrer les valeurs contenant un certain mot ou une certaine séquence de caractères en englobant la séquence d'astérisques (*). Par exemple, accountName = "*foo*" renvoie tous les 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 qui ne contient pas foo.

Les espaces blancs supplémentaires sont ignorés. Par exemple, foo AND bar est identique à foo AND bar.

Spécification

Les filtres suivent un sous-ensemble de la spécification du filtre AIP et sa grammaire EBNF formelle:

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