Sintaxe do filtro

Esta página explica a sintaxe que você precisa usar para filtrar contas.

Sintaxe

Todos os valores, exceto números inteiros, precisam estar entre aspas duplas ("). Para saber quais valores um campo específico aceita, consulte a referência documentação desse campo.

É possível usar AND para filtrar vários campos na mesma consulta. Você também pode use AND para combinar vários filtros relationship(...) e service(...). Confira um exemplo que combina várias relationship(...) e service(...) filtros:

(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))

Este exemplo retorna as seguintes contas:

  • Todas as contas com relação de gerenciamento de conta com outra conta e um relacionamento adicional com aceitação pendente.

  • Todas as contas com o nome de exibição "store", que têm relações com outras contas.

Não é possível usar AND para filtrar vários valores no mesmo campo. Para exemplo, não é possível usar accountName = "*A*" AND accountName = "*B*".

É possível usar OR para filtrar dois campos na mesma consulta. Colocar o filtro em cada lado do operador OR com parênteses. Por exemplo, (accountName = "storeA") OR (accountName = "storeB").

Só é possível usar OR para combinar dois campos. Por exemplo, não é possível usar (accountName = "storeA") OR (accountName = "storeB") OR (accountName = "storeC"):

Não são permitidos parênteses, exceto com os operadores AND e OR e nas invocações de função, como relationship(...) e service(...).

Para campos de string como accountName e accountIdAlias, é possível filtrar por: que contêm uma determinada palavra ou sequência de caracteres colocando o parâmetro em asteriscos (*). Por exemplo, accountName = "*foo*" retorna todos contas com um accountName contendo foo, como "storeFoo".

É possível filtrar por valores que não contêm uma determinada sequência usando !=. e *. Por exemplo, accountName != "*foo*" retorna todas as contas com uma accountName que não contém foo.

Espaços em branco extras são ignorados. Por exemplo, foo AND bar é o mesmo que foo AND bar.

Especificação

Os filtros seguem um subconjunto do filtro AIP. especificação e o EBNF formal gramática:

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