Reten Docs
Filtros de eventos

Obtener filtro de eventos

Obtiene un filtro de eventos por id, con su definición completa — los bloques de consulta anidados.

GET /api/event-criterias/:id

Devuelve un único filtro de eventos con su definición completa: los datos base del recurso más el árbol anidado de bloques de consulta (queryBlocks).

Auth: Requerida — permiso event-criteria:view

Parámetros de ruta

ParámetroTipoDescripción
idUUIDID del filtro de eventos.

Parámetros de consulta

ParámetroTipoPor defectoDescripción
formatstringdetailRepresentación pedida: detail | compute. Omitirlo equivale a detail.

Esta página documenta la rama detail. La rama compute devuelve otra forma y se documenta en Formato compute.

Cualquier otro valor de format responde 400.

Ejemplo

curl https://api.reten.ai/api/event-criterias/6d2a9c41-7e35-48b0-b1c9-0f8e7d6c5b4a \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>" \
  -H "x-project-id: <project-id>"
import axios from 'axios';

const id = '6d2a9c41-7e35-48b0-b1c9-0f8e7d6c5b4a';
const response = await axios.get(
  `https://api.reten.ai/api/event-criterias/${id}`,
  { headers: { Authorization: 'Bearer <token>', 'x-tenant-id': '<tenant-id>', 'x-project-id': '<project-id>' } },
);
const criteria = response.data;

Respuesta 200 OK

El recurso base más queryBlocks, ordenados por order ascendente. Todos los campos usan camelCase; los instantes se serializan a ISO 8601.

{
  "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",
  "queryBlocks": [
    {
      "id": "b7c1d2e3-4f50-4a61-8b72-9c8d7e6f5a40",
      "order": 0,
      "setOperator": null,
      "from": { "table": "event_transactions", "joins": [] },
      "select": {
        "distinct": true,
        "items": [
          {
            "kind": "column",
            "column": { "table": "event_transactions", "column": "event_id" }
          }
        ]
      },
      "timeWindow": null,
      "where": {
        "kind": "group",
        "logicalOperator": "AND",
        "children": [
          {
            "kind": "predicate",
            "column": { "table": "event_transactions", "column": "status" },
            "comparisonOperator": "EQUALS",
            "value": "Facturada"
          },
          {
            "kind": "semiJoinPredicate",
            "table": "event_transactions",
            "semiJoin": "products",
            "subWhere": {
              "kind": "group",
              "logicalOperator": "AND",
              "children": [
                {
                  "kind": "predicate",
                  "field": "categorization.category_name",
                  "comparisonOperator": "IN",
                  "value": ["Food Service", "HORECA"]
                }
              ]
            }
          }
        ]
      },
      "groupBy": null,
      "having": null
    }
  ]
}

Campos base

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.

La respuesta no trae compositions: un filtro de eventos no se compone con otros filtros.

queryBlocks[]

Arreglo de bloques de consulta, ordenados por order ascendente. Cada bloque se devuelve tal como se envió, más su id resuelto.

CampoTipoDescripción
idstring (UUID)Identificador del bloque.
ordernumberPosición del bloque (ascendente).
setOperatorSetOperatorEnum | nullOperador de conjunto que lo combina con el bloque previo; null en el primero.
fromobject{ table, joins } — tabla base y cruces.
selectobject{ distinct, items } — columnas o agregados.
timeWindowobject | nullVentana temporal (unión discriminada por timeOperator); null si no se envió.
whereobjectÁrbol de filtros; grupos AND/OR con hojas de columna, de registro y de tabla relacionada.
groupByarray | nullColumnas de agrupación, o null.
havingobject | nullÁrbol de filtros sobre agregados, o null.

Los campos opcionales que no se enviaron se devuelven como null (setOperator, timeWindow, groupBy, having), y from.joins como [] si no había joins.

La estructura completa de cada campo —incluidas las tres hojas del where y la forma de value por operador— está en Definición.

Respuestas de error

EstadoDescripción
400El id no es un UUID válido, o format no es detail ni compute.
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.
404No existe un filtro de eventos con ese id en el tenant (Event criteria not found).