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