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