Sintassi filtro

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