Reten Docs
Filtros de eventos

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âmetroTipoDescrição
idUUIDO id do filtro de eventos.

Parâmetros de consulta

ParâmetroTipoPadrãoDescrição
formatstringdetailRepresentaçã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

CampoTipoDescrição
idstring (UUID)Identificador do filtro.
projectIdstring (UUID)Projeto ao qual o filtro pertence.
namestringNome do filtro.
descriptionstring | nullDescrição; null se não houver.
isActivebooleanSempre true: nenhum endpoint o modifica.
ownerIdstring (UUID)Usuário criador.
updatedBystring (UUID)Último usuário que o editou.
createdAtstring (ISO 8601)Data de criação.
updatedAtstring (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.

CampoTipoDescrição
idstring (UUID)Identificador do bloco.
ordernumberPosição do bloco (ascendente).
setOperatorSetOperatorEnum | nullOperador de conjunto que o combina com o bloco anterior; null no primeiro.
fromobject{ table, joins } — tabela base e joins.
selectobject{ distinct, items } — colunas ou agregados.
timeWindowobject | nullJanela temporal (união discriminada por timeOperator); null se não enviada.
whereobjectÁrvore de filtros; grupos AND/OR com folhas de coluna, de registro e de tabela relacionada.
groupByarray | nullColunas de agrupamento, ou null.
havingobject | 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

StatusDescrição
400O id não é um UUID válido, ou format não é detail nem compute.
401Falta ou é inválido o Authorization: Bearer.
403O usuário não tem a permissão event-criteria:view, ou o x-tenant-id não está autorizado.
404Não existe um filtro de eventos com esse id no tenant (Event criteria not found).