Reten Docs
Filtros de eventos

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ámetroTipoPor defectoDescripción
pagenumber1Número de página (entero, mínimo 1).
per_pagenumber25Elementos por página (entero, mínimo 1, máximo 100).
searchstring-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

CampoTipoDescripción
idstring (UUID)Identificador del filtro.
projectIdstring (UUID)Proyecto al que pertenece el filtro.
namestringNombre del filtro.
descriptionstring | nullDescripción; null si no tiene.
isActivebooleanSiempre true: ningún endpoint lo modifica.
ownerIdstring (UUID)Usuario creador.
updatedBystring (UUID)Último usuario que lo editó.
createdAtstring (ISO 8601)Fecha de creación.
updatedAtstring (ISO 8601)Fecha de última actualización.
conditionCountnumberCantidad 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 su subWhere tenga 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/OR no 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

CampoTipoDescripción
pagenumberPágina actual.
per_pagenumberElementos por página.
totalnumberConteo total de filtros que coinciden con la búsqueda.
total_pagesnumberceil(total / per_page).
has_nextbooleantrue si hay una página siguiente.
has_previousbooleantrue si hay una página anterior.

Respuestas de error

EstadoDescripción
400Parámetro inválido (per_page mayor a 100, page menor a 1, propiedad desconocida).
401Falta o es inválido el Authorization: Bearer.
403El usuario no tiene el permiso event-criteria:view, o el x-tenant-id no está autorizado.