Esta página explica a sintaxe que você precisa usar para filtrar contas.
Sintaxe
Todos os valores, exceto os inteiros, precisam estar entre aspas duplas ("). Para saber quais valores um campo específico aceita, consulte a documentação de referência desse campo.
É possível usar AND
para filtrar vários campos na mesma consulta. Você também pode
usar AND
para combinar vários filtros relationship(...)
e service(...)
.
Veja um exemplo que combina vários filtros relationship(...)
e
service(...)
:
(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))
Neste exemplo, retornamos as seguintes contas:
Todas as contas com uma relação de gerenciamento com outra conta e outro relacionamento com aceitação pendente.
Todas as contas com o nome de exibição
"store"
, que têm relacionamentos com outras contas.
Não é possível usar AND
para filtrar vários valores no mesmo campo. Por
exemplo, não é possível usar accountName = "*A*" AND accountName = "*B*"
.
É possível usar OR
para filtrar dois campos na mesma consulta. Coloque os critérios de
filtro em cada lado do operador OR
entre 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")
.
Parênteses não são permitidos com exceção dos operadores AND
e OR
e das invocações de função, como relationship(...)
e service(...)
.
Para campos de string, como accountName
e accountIdAlias
, é possível filtrar por
valores que contêm uma determinada palavra ou sequência de caracteres colocando a
sequência em asteriscos (*
). Por exemplo, accountName = "*foo*"
retorna todas
as 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 um
accountName
que não contém foo
.
Os espaços em branco extras são ignorados. Por exemplo, foo AND bar
é igual a foo
AND bar
.
Especificação
Os filtros seguem um subconjunto da especificação filtro AIP e a gramática EBNF formal (links em inglês):
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
: " = " | " != "
;