Sintaxis de filtro

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 descubre qué valores acepta un campo específico, consulta la referencia documentación para ese campo.

Puedes usar AND para filtrar varios campos en la misma consulta. También puedes Usa AND para combinar varios filtros relationship(...) y service(...). Este es un ejemplo que combina varios relationship(...) y service(...) filtros:

(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 que están vinculadas a la administración de una cuenta con otra cuenta y una relación adicional pendiente de aceptación.

  • Todas las cuentas con el nombre visible "store", que están relacionadas con otras cuentas.

No puedes usar AND para filtrar varios valores en el mismo campo. Para Por ejemplo, no puedes usar accountName = "*A*" AND accountName = "*B*".

Puedes usar OR para filtrar dos campos en la misma consulta. Encierra el filtro criterios 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 por los operadores AND y OR, y en invocaciones de funciones, como relationship(...) y service(...)

Para los campos de cadenas como accountName y accountIdAlias, puedes filtrar por lo siguiente: valores que contengan una determinada palabra o secuencia de caracteres al incluir el secuencia en asteriscos (*). Por ejemplo, accountName = "*foo*" muestra todos cuentas con un accountName que contiene foo, como “storeFoo”.

Puedes filtrar los valores que no contengan una secuencia determinada con != y *. Por ejemplo, accountName != "*foo*" devuelve todas las cuentas que tienen 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 del filtro de AIP. y su 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
    : " = " | " != "
    ;