Listar filtros de eventos
Lista paginada de filtros de eventos del tenant, con búsqueda por nombre — solo resumen, sin el árbol de definición.
GET /api/event-criterias
Devuelve una lista paginada de los filtros de eventos del tenant, con una búsqueda opcional por nombre. Cada elemento es un resumen: el recurso base más el conteo de condiciones — no incluye el árbol de definición.
Auth: Requerida — permiso event-criteria:view
Este endpoint no devuelve queryBlocks, solo conditionCount. Para obtener la
definición completa de un filtro usa
GET /:id.
Parámetros de consulta
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
page | number | 1 | Número de página (entero, mínimo 1). |
per_page | number | 25 | Elementos por página (entero, mínimo 1, máximo 100). |
search | string | - | Filtra por name (coincidencia parcial, insensible a mayúsculas). No busca en description. |
El orden es fijo: descendente por fecha de creación (createdAt), los más recientes
primero.
Ejemplo
curl "https://api.reten.ai/api/event-criterias?search=factura&per_page=25" \
-H "Authorization: Bearer <token>" \
-H "x-tenant-id: <tenant-id>" \
-H "x-project-id: <project-id>"import axios from 'axios';
const response = await axios.get(
'https://api.reten.ai/api/event-criterias',
{
headers: { Authorization: 'Bearer <token>', 'x-tenant-id': '<tenant-id>', 'x-project-id': '<project-id>' },
params: { search: 'factura', per_page: 25 },
},
);
const { data, pagination } = response.data;Respuesta 200 OK
Envuelve los resultados en PaginatedResponseDto<T>. Cada elemento de data usa
camelCase; los campos de pagination usan snake_case.
{
"data": [
{
"id": "6d2a9c41-7e35-48b0-b1c9-0f8e7d6c5b4a",
"projectId": "3f6c2b1a-8d4e-4f7a-9b2c-5e1d0a7f6c34",
"name": "Proyecto Food Service",
"description": "Ventas facturadas con al menos una línea de categoría Food Service u HORECA",
"isActive": true,
"ownerId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"updatedBy": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"createdAt": "2026-07-15T14:32:07.481Z",
"updatedAt": "2026-07-15T14:32:07.481Z",
"conditionCount": 2
},
{
"id": "9f3a1c22-4b7e-4c31-9a8d-2f5e6b7c8d90",
"projectId": "3f6c2b1a-8d4e-4f7a-9b2c-5e1d0a7f6c34",
"name": "Venta oficial — solo facturada",
"description": null,
"isActive": true,
"ownerId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"updatedBy": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"createdAt": "2026-07-10T09:12:44.005Z",
"updatedAt": "2026-07-10T09:12:44.005Z",
"conditionCount": 1
}
],
"pagination": {
"page": 1,
"per_page": 25,
"total": 2,
"total_pages": 1,
"has_next": false,
"has_previous": false
}
}Campos del elemento
| Campo | Tipo | Descripción |
|---|---|---|
id | string (UUID) | Identificador del filtro. |
projectId | string (UUID) | Proyecto al que pertenece el filtro. |
name | string | Nombre del filtro. |
description | string | null | Descripción; null si no tiene. |
isActive | boolean | Siempre true: ningún endpoint lo modifica. |
ownerId | string (UUID) | Usuario creador. |
updatedBy | string (UUID) | Último usuario que lo editó. |
createdAt | string (ISO 8601) | Fecha de creación. |
updatedAt | string (ISO 8601) | Fecha de última actualización. |
conditionCount | number | Cantidad de condiciones del filtro (ver abajo). |
Qué cuenta conditionCount
Es la suma de las hojas del where de todos los bloques de consulta: cada hoja cuenta
1, sin importar de qué tipo sea.
- Una hoja de columna (
predicate) cuenta 1. - Una hoja de registro (
recordPredicate) cuenta 1, aunque susubWheretenga varios sub-filtros: es una condición, no la suma de sus partes. - Una hoja de tabla relacionada (
semiJoinPredicate) cuenta 1, por lo mismo. - Los grupos
AND/ORno cuentan: se recorren para llegar a las hojas.
Un filtro con status = 'Facturada' y un filtro de registro sobre attributes con dos
sub-filtros tiene conditionCount: 2.
conditionCount mide el árbol de la definición, que es lo que ve quien lo construye.
No mide el tamaño de ninguna serialización del filtro.
Campos de paginación
| Campo | Tipo | Descripción |
|---|---|---|
page | number | Página actual. |
per_page | number | Elementos por página. |
total | number | Conteo total de filtros que coinciden con la búsqueda. |
total_pages | number | ceil(total / per_page). |
has_next | boolean | true si hay una página siguiente. |
has_previous | boolean | true si hay una página anterior. |
Respuestas de error
| Estado | Descripción |
|---|---|
400 | Parámetro inválido (per_page mayor a 100, page menor a 1, propiedad desconocida). |
401 | Falta o es inválido el Authorization: Bearer. |
403 | El usuario no tiene el permiso event-criteria:view, o el x-tenant-id no está autorizado. |