Obter filtro de eventos
Obtenha um filtro de eventos por id, com sua definição completa — os blocos de consulta aninhados.
GET /api/event-criterias/:id
Retorna um único filtro de eventos com sua definição completa: os dados base do
recurso mais a árvore aninhada de blocos de consulta (queryBlocks).
Auth: Obrigatória — permissão event-criteria:view
Parâmetros de rota
| Parâmetro | Tipo | Descrição |
|---|---|---|
id | UUID | O id do filtro de eventos. |
Parâmetros de consulta
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
format | string | detail | Representação solicitada: detail | compute. Omiti-lo equivale a detail. |
Esta página documenta o ramo detail. O ramo compute retorna outra forma e está
documentado em Formato compute.
Qualquer outro valor de format responde 400.
Exemplo
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;Resposta 200 OK
O recurso base mais queryBlocks, ordenados por order ascendente. Todos os campos
usam camelCase; os instantes são serializados em 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
| Campo | Tipo | Descrição |
|---|---|---|
id | string (UUID) | Identificador do filtro. |
projectId | string (UUID) | Projeto ao qual o filtro pertence. |
name | string | Nome do filtro. |
description | string | null | Descrição; null se não houver. |
isActive | boolean | Sempre true: nenhum endpoint o modifica. |
ownerId | string (UUID) | Usuário criador. |
updatedBy | string (UUID) | Último usuário que o editou. |
createdAt | string (ISO 8601) | Data de criação. |
updatedAt | string (ISO 8601) | Data da última atualização. |
A resposta não traz compositions: um filtro de eventos não se compõe com
outros filtros.
queryBlocks[]
Array de blocos de consulta, ordenado por order ascendente. Cada bloco é
retornado exatamente como foi enviado, mais seu id resolvido.
| Campo | Tipo | Descrição |
|---|---|---|
id | string (UUID) | Identificador do bloco. |
order | number | Posição do bloco (ascendente). |
setOperator | SetOperatorEnum | null | Operador de conjunto que o combina com o bloco anterior; null no primeiro. |
from | object | { table, joins } — tabela base e joins. |
select | object | { distinct, items } — colunas ou agregados. |
timeWindow | object | null | Janela temporal (união discriminada por timeOperator); null se não enviada. |
where | object | Árvore de filtros; grupos AND/OR com folhas de coluna, de registro e de tabela relacionada. |
groupBy | array | null | Colunas de agrupamento, ou null. |
having | object | null | Árvore de filtros sobre agregados, ou null. |
Os campos opcionais que não foram enviados são retornados como null (setOperator,
timeWindow, groupBy, having), e from.joins como [] se não havia joins.
A estrutura completa de cada campo —incluindo as três folhas do where e a forma de
value por operador— está em
Definição.
Respostas de erro
| Status | Descrição |
|---|---|
400 | O id não é um UUID válido, ou format não é detail nem compute. |
401 | Falta ou é inválido o Authorization: Bearer. |
403 | O usuário não tem a permissão event-criteria:view, ou o x-tenant-id não está autorizado. |
404 | Não existe um filtro de eventos com esse id no tenant (Event criteria not found). |