In questa pagina viene spiegata la sintassi da utilizzare per filtrare gli account.
Sintassi
Tutti i valori diversi dai numeri interi devono essere racchiusi tra virgolette doppie ("). Per conoscere i valori accettati da un campo specifico, consulta la documentazione di riferimento relativa al campo.
Puoi utilizzare AND
per filtrare in base a più campi nella stessa query. Puoi anche
utilizzare AND
per combinare più filtri relationship(...)
e service(...)
.
Ecco un esempio che combina più filtri relationship(...)
e service(...)
:
(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 con un altro account e una relazione aggiuntiva in attesa di accettazione.
Tutti gli account con nome visualizzato
"store"
che hanno relazioni con altri account.
Non puoi utilizzare AND
per filtrare in base a più valori nello stesso campo. Ad
esempio, non puoi utilizzare accountName = "*A*" AND accountName = "*B*"
.
Puoi utilizzare OR
per filtrare in base a due campi nella stessa query. Racchiudi i criteri del filtro su ogni 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 non sono consentite se non con gli operatori AND
e OR
e nelle
chiamate di funzioni, come relationship(...)
e service(...)
.
Per i campi stringa come accountName
e accountIdAlias
, puoi filtrare in base ai valori che contengono una determinata parola o sequenza di caratteri racchiudendo la sequenza tra asterischi (*
). Ad esempio, accountName = "*foo*"
restituisce tutti gli account con un accountName
contenente foo
, ad esempio "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
.
Specifiche
I filtri seguono un sottoinsieme della specifica del filtro AIP e la grammatica formale EBNF:
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
: " = " | " != "
;