Questa pagina spiega la sintassi da utilizzare per filtrare gli account.
Sintassi
Tutti i valori, eccetto i numeri interi, devono essere racchiusi tra virgolette doppie ("). A sapere quali valori accetta uno specifico campo, consulta il riferimento documentazione per quel campo.
Puoi utilizzare AND
per filtrare in base a più campi nella stessa query. Puoi anche
utilizza AND
per combinare più filtri relationship(...)
e service(...)
.
Ecco un esempio che combina più relationship(...)
e service(...)
filtri:
(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))
Questo esempio restituisce i seguenti account:
Tutti gli account con una relazione di gestione dell'account a un altro account. e una relazione aggiuntiva in attesa di accettazione.
Tutti gli account con il nome visualizzato
"store"
che hanno relazioni con altri account.
Non puoi utilizzare AND
per filtrare in base a più valori nello stesso campo. Per
Ad esempio, non puoi utilizzare accountName = "*A*" AND accountName = "*B*"
.
Puoi utilizzare OR
per filtrare in base a due campi nella stessa query. Racchiudi il filtro
su ciascun lato dell'operatore OR
tra parentesi. Ad esempio:
(accountName = "storeA") OR (accountName = "storeB")
.
Puoi utilizzare solo OR
per combinare due campi. Ad esempio, non puoi utilizzare
(accountName = "storeA") OR (accountName = "storeB") OR (accountName =
"storeC")
.
Le parentesi sono consentite solo con gli operatori AND
e OR
e in
chiamate di funzione, come relationship(...)
e service(...)
.
Per campi stringa come accountName
e accountIdAlias
, puoi applicare un filtro per
che contengono una determinata parola o sequenza di caratteri racchiudendo
la sequenza di asterischi (*
). Ad esempio, accountName = "*foo*"
restituisce tutti
account con un accountName
contenente foo
, come "storeFoo".
Puoi filtrare i valori che non contengono una determinata sequenza utilizzando !=
e *
. Ad esempio, accountName != "*foo*"
restituisce tutti gli account con un
accountName
che non contiene foo
.
Gli spazi bianchi aggiuntivi vengono ignorati. Ad esempio, foo AND bar
è uguale a foo
AND bar
.
Specifica
I filtri seguono un sottoinsieme del filtro AIP. e la sua formale EBNF grammatica:
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
: " = " | " != "
;