En esta página, se explica la sintaxis que debes utilizar para filtrar cuentas.
Sintaxis
Todos los valores que no sean números enteros deben encerrarse entre comillas dobles ("). Para saber qué valores acepta un campo específico, consulta la documentación de referencia de ese campo.
Puedes usar AND
para filtrar varios campos en la misma consulta. También puedes usar AND
para combinar varios filtros relationship(...)
y service(...)
.
El siguiente es un ejemplo que combina varios filtros relationship(...)
y service(...)
:
(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))
En este ejemplo, se muestran las siguientes cuentas:
Todas las cuentas con una relación de administración de cuentas a otra cuenta y una relación adicional que está pendiente de aceptación.
Todas las cuentas con el nombre visible
"store"
, que tienen relaciones con otras cuentas.
No puedes usar AND
para filtrar varios valores en el mismo campo. Por ejemplo, no puedes usar accountName = "*A*" AND accountName = "*B*"
.
Puedes usar OR
para filtrar dos campos en la misma consulta. Encierra los criterios de filtro a cada lado del operador OR
con paréntesis. Por ejemplo, (accountName = "storeA") OR (accountName = "storeB")
.
Solo puedes usar OR
para combinar dos campos. Por ejemplo, no puedes usar (accountName = "storeA") OR (accountName = "storeB") OR (accountName =
"storeC")
.
No se permiten paréntesis excepto con los operadores AND
y OR
, y en invocaciones de funciones, como relationship(...)
y service(...)
.
Para los campos de string como accountName
y accountIdAlias
, puedes filtrar los valores que contengan una determinada palabra o secuencia de caracteres encerrando la secuencia entre asteriscos (*
). Por ejemplo, accountName = "*foo*"
muestra todas las cuentas con un accountName
que contenga foo
, como "storeFoo".
Puedes filtrar los valores que no contengan una secuencia determinada con !=
y *
. Por ejemplo, accountName != "*foo*"
muestra todas las cuentas con un accountName
que no contiene foo
.
Se ignorarán los espacios en blanco adicionales. Por ejemplo, foo AND bar
es lo mismo que foo
AND bar
.
Especificación
Los filtros siguen un subconjunto de la especificación del filtro AIP y su gramática formal de 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
: " = " | " != "
;