Sintaxis de filtro

Para limitar los resultados que se devuelven en una solicitud de recuperación de la API ( HTTP GET), la mayoría de los puntos finales de la API que devuelven listas de recursos admiten el parámetro IBM® QRadar® API que devuelven listas de recursos admiten el parámetro filter .

La sintaxis del parámetro filter es coherente para todos los puntos finales que lo soportan. Consulte la documentación del punto final para determinar si el parámetro de filtro se aplica a él. Las limitaciones de la sintaxis del filtro se incluyen en la descripción de ese punto final. Los parámetros de consulta deben estar codificados en doble URL antes de ser enviados.

Operadores de comparación

La tabla de operadores de comparación de filtros describe los operadores de comparación que puede utilizar como parte del parámetro de filtro.

Tabla 1. Operadores de comparación de filtros
Operador Descripción Ejemplo de sintaxis de filtro
= Igualdad entre el identificador y el valor especificado devuelto. Para buscar delitos donde status=CLOSED, utilice la sintaxis siguiente:

GET /api/siem/offenses?filter=status%3DCLOSED

> El identificador es mayor que el valor especificado. Para buscar delitos donde credibility > 3, utilice la sintaxis siguiente:

/api/siem/offenses?filter=credibility%20%3E%203

< El identificador es menor que el valor especificado. Para buscar delitos donde magnitude < 9, utilice la sintaxis siguiente:

/api/siem/offenses?filter=magnitude%20%3C%209

<= El identificador es menor o igual que el valor especificado. Para buscar delitos donde id <= 1004, utilice la sintaxis siguiente:

/api/asset_model/properties?filter=id%20%3C%3D%201004

>= El identificador es mayor o igual que el valor especificado.

Para buscar delitos donde scanProfileId >= 3, utilice la sintaxis siguiente:

/api/scanner/scanprofiles?filter=scanProfileId%20%3E%3D%203

!=,

<>,

^=

El identificador no es igual al valor especificado.

Los ejemplos siguientes filtran todos los ID que no son iguales a 5:

/api/siem/offenses?filter=id%20!%3D%205

/api/siem/offenses?filter=id%20%3C%3E%205

/api/siem/offenses?filter=id%20%5E%3D%205

in El identificador es igual al menos a uno de los valores especificados en la lista. Sintaxis: id in (1001,1111,1200)

Ejemplo: /api/asset_model/assets?filter=id%20in%20(1001%2C1111%2C1200)

not in El identificador no es igual a ninguno de los valores especificados en la lista. Sintaxis: id not in (1001,1002,1003):

Ejemplo: /api/asset_model/saved_searches?filter=id%20not%20in%20(14%2C20%2C1003)

between … and … El identificador está entre dos valores especificados. Sintaxis: id between 0 and 3:

Ejemplo: /api/siem/offenses?filter=id%20between%200%20and%203

not between … and … El identificador no está entre dos valores especificados. Sintaxis: id not between 30 and 31:

Ejemplo: /api/siem/offenses?filter=id%20not%20between%2030%20and%2031

is null El identificador es nulo. Sintaxis: assigned_to is null:

Ejemplo: /api/siem/offenses?filter=assigned_to%20is%20null

is not null El identificador no es nulo. Sintaxis: assigned_to is not null:

Ejemplo: /api/siem/offenses?filter=assigned_to%20is%20not%20null

Valores nulos y operadores de comparación

Cuando el campo por el que ha filtrado tiene un valor 'null', los operadores de comparación se comportan de las siguientes maneras:

Los operadores "=", "> ", "> =", "<", "< =", "IN" y "BETWEEN" siempre devuelven false.
"! =", "< >", "^ =", "NOT BETWEEN" y "NOT IN" siempre devuelven true.

La mejor forma de probar los valores nulos es utilizar los operadores "is null" o "is not null".

Operadores lógicos

Utilice los operadores lógicos OR, ANDy NOT para realizar operaciones lógicas en subexpresiones. La tabla siguiente proporciona ejemplos de cómo utilizar operadores lógicos en filtros.

Operador Descripción Ejemplo
or Realiza una operación OR lógica en las dos subexpresiones. Las subexpresiones pueden ser nodos de comparación u otros nodos lógicos. assigned_to no es nulo O id = 111:

/api/siem/offenses?filter=assigned_to%20is%20not%20null%20or%20id%20%3D%20111

and Realiza una operación AND lógica en las dos subexpresiones. Las subexpresiones pueden ser nodos de comparación u otros nodos lógicos. assigned_to no es nulo AND id = 111:

/api/siem/offenses?filter=assigned_to%20is%20not%20null%20and%20id%20%3D%20111

not Realiza una operación NOT lógica en la subexpresión. protected =true and not id in (111,112,113)

/api/siem/offenses?filter=protected%20%3D%20true%20and%20not%20id%20in%20(111%2C112%2C113)

Especificación de campos JSON para comparaciones

En la tabla siguiente se explica cómo especificar campos JSON para utilizarlos con operadores de comparación en filtros.

Ejemplo de campo JSON Descripción Ejemplo
{
"name": "Proprietary Data",
"element_type": "ALN"
}
Cuando se aplica un filtro a un campo directamente en el objeto que se devuelve, el campo se especifica por nombre.

name = "Proprietary Data"

GET /api/reference_data/sets?filter=name%20%3D%20%22Proprietary%20Data%22

{
 "description": "String",
 "duration": {
  "days": 42,
  "hours": 42,
  "minutes": 42,
  "months": 42,
  "seconds": 42.5,
  "years": 42
  }
}

Cuando aplique un filtro a un campo anidado dentro de un subobjeto, utilice corchetes para especificar el campo interno.

duration(days) >= 20

GET /api/scanner/scanprofiles?filter=duration(days)%20%3E%3D%201

["events","flows","simarc"]
Para tipos JSON simples en los que no existe ninguna etiqueta de campo, como series, números o booleano, utilice el operador . .

.= events

GET /api/ariel/databases?filter=.%3D%20events

Especificación de valores de serie y numéricos en filtros

Cuando filtra series que tienen valores con caracteres no alfanuméricos, debe envolver la serie de destino entre comillas. Cuando filtra valores numéricos, los valores numéricos pueden seguir estas condiciones:

  • Empiece con un signo + o-inicial.
  • Contener o empezar con una coma decimal.
  • Incluya un exponente utilizando la notación e.

Filtrado de objetos complejos utilizando el operador CONTAINS

Los objetos complejos se filtran utilizando el operador CONTAINS. Utilice el operador CONTAINS para probar el contenido de listas o correlaciones. En el lado izquierdo del operador, es un identificador que está en el formato estándar, por ejemplo x (y (z)). El identificador debe hacer referencia a un elemento que sea una lista, correlación o colección. En el lado derecho del operador hay una expresión que especifica cómo deben coincidir los objetos de la lista. Existen dos casos de uso básicos para utilizar el operador CONTAINS:

  • La lista que se examina contiene elementos simples como series o números.
  • La lista contiene objetos complejos.
Listas que contienen tipos simples
Para listas que contienen tipos simples como series o números, la expresión es un valor del mismo tipo. Para comparaciones simples, no se necesitan corchetes.

Para solicitar sólo búsquedas guardadas de activos que tengan ftp como serie en el campo de valor del filtro:

GET /api/asset_model/saved_searches?filter=filters%20contains%20value%20%3D%20ftp

Para solicitar activos donde las interfaces contienen la dirección IP "192.0.2.0":

GET /api/asset_model/assets?filter=interfaces%20contains%20ip_addresses%20contains%20value%20%3D%20%192.0.2.0%22

Listas que contienen objetos complejos

Para listas que contienen objetos complejos, la expresión es una expresión de filtro completa para los objetos de la lista. Esta expresión de subfiltro utiliza la misma sintaxis que cualquier otro filtro. Puede utilizar cualquier operador del subfiltro para probar sublistas dentro de la lista original. Los identificadores de esta expresión son relativos a los objetos de la lista en los que opera el operador CONTAINS. En expresiones de subfiltro complejas, se necesitan corchetes.

Para solicitar sólo los activos que tienen un campo value = 14 y el operador Greater than , aplique el filtro filters contains (value = 14 or operator = "Greater than"). Este filtro devuelve el primero y el último elemento de la lista.

GET /api/asset_model/saved_searches?filter=filters%20contains%20(value%20%3D%2014%20and%20operator%20%3D%20%22Greater%20than%22)

Para buscar delitos que contienen direcciones de origen que tienen valores de ID inferiores a 3, aplique el filtro siguiente:

GET /api/siem/offenses?filter=source_address_ids%20contains%20(.%3C3)

El operador LIKE

Utilice el operador LIKE para recuperar coincidencias de serie parciales.

El operador LIKE utiliza el formato siguiente: identifier like "expression". Las comillas alrededor de la expresión son obligatorias. Se da soporte a las comillas simples y dobles. La palabra clave LIKE distingue entre mayúsculas y minúsculas.

Se da soporte a los siguientes caracteres comodín. Si utiliza caracteres comodín en una serie, debe escaparlos.

Carácter comodín Descripción
% Coincide con una serie de cero o más caracteres
_ Coincide con cualquier carácter único
Por ejemplo, considere una API que devuelve la siguiente recopilación de datos:
GET /path/to/api
[
 {
 "hostname": "server.domain1"
 },
 {
 "hostname": "server.domain2"
 },
 {
 "hostname": "SERVER.domain"
 },
 {
 "hostname": "server.DOMAIN"
 }
]

Puede combinar los caracteres comodín en la misma expresión. Por ejemplo, para buscar servidores en domain1 o domain2, utilice la expresión: hostname LIKE "%.domain_".

GET /path/to/api?filter=hostname%20LIKE%20%22%25.domain_%22 
[
 {
 "hostname": "server.domain1"
 },
 {
 "hostname": "server.domain2"
 }
]

Observe que SERVER.domain no se devuelve, porque el carácter de subrayado (_) no tiene ningún carácter final coincidente.

El operador ILIKE

Utilice el operador ILIKE para recuperar coincidencias de series parciales que no distinguen entre mayúsculas y minúsculas.

El operador ILIKE es similar al operador LIKE, pero no distingue entre mayúsculas y minúsculas. Por ejemplo, considere una API que devuelve la siguiente recopilación de datos:
GET /path/to/api
[
 {
 "hostname": "server.domain1"
 },
 {
 "hostname": "server.domain2"
 },
 {
 "hostname": "SERVER.domain"
 },
 {
 "hostname": "server.DOMAIN"
 }
] 
El filtro con la expresión hostname ILIKE "server.domain" genera la siguiente colección de datos:
GET /path/to/api?filter=hostname%20ILIKE%20%22server.domain%22'
[
 {
 "hostname": "SERVER.domain"
 },
 {
 "hostname": "server.DOMAIN"
 }
]