Reten Docs
Audiencias

Listar Audiencias

Lista paginada de audience criterias del tenant, con filtros por tipo y búsqueda por nombre — solo resumen, sin el árbol de definición.

GET /api/audience-criterias

Devuelve una lista paginada de los audience criterias del tenant, con filtros opcionales por type y búsqueda por nombre. Cada elemento es un resumen: el recurso base más los conteos de bloques de consulta y composiciones — no incluye el árbol de definición completo.

Auth: Requerida — permiso audience-criteria:view

Este endpoint no devuelve queryBlocks ni compositions, solo sus conteos (queryBlockCount, compositionCount). Para obtener la definición completa de un criterio 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).
typeAudienceCriteriaTypeEnum-Filtra por tipo: AUDIENCE o FILTER. Si se omite, devuelve ambos.
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/audience-criterias?type=AUDIENCE&search=clientes&per_page=25" \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>"
import axios from 'axios';

const response = await axios.get(
  'https://api.reten.ai/api/audience-criterias',
  {
    headers: { Authorization: 'Bearer <token>', 'x-tenant-id': '<tenant-id>' },
    params: { type: 'AUDIENCE', search: 'clientes', 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": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "name": "Clientes activos últimos 30 días",
      "description": "Usuarios con al menos una compra pagada en el último mes",
      "type": "AUDIENCE",
      "isActive": true,
      "ownerId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "updatedBy": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "createdAt": "2026-06-15T09:30:00.000Z",
      "updatedAt": "2026-06-15T09:30:00.000Z",
      "queryBlockCount": 2,
      "compositionCount": 1
    },
    {
      "id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
      "name": "Clientes VIP",
      "description": null,
      "type": "FILTER",
      "isActive": true,
      "ownerId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "updatedBy": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "createdAt": "2026-06-10T14:00:00.000Z",
      "updatedAt": "2026-06-10T14:00:00.000Z",
      "queryBlockCount": 1,
      "compositionCount": 0
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 2,
    "total_pages": 1,
    "has_next": false,
    "has_previous": false
  }
}

Campos del elemento

Cada elemento de data es el recurso base más dos conteos derivados de sus relaciones:

CampoTipoDescripción
idstring (UUID)Identificador del criterio.
namestringNombre del criterio.
descriptionstring | nullDescripción; null si no tiene.
typeAudienceCriteriaTypeEnumAUDIENCE | FILTER.
isActivebooleanSi el criterio está activo.
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.
queryBlockCountnumberCantidad de bloques de consulta del criterio.
compositionCountnumberCantidad de composiciones del criterio.

Campos de paginación

CampoTipoDescripción
pagenumberPágina actual.
per_pagenumberElementos por página.
totalnumberConteo total de criterios que coinciden con los filtros.
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 (ej. per_page mayor a 100, page menor a 1, type fuera del enum).
401Falta o es inválido el Authorization: Bearer.
403El usuario no tiene el permiso audience-criteria:view, o el x-tenant-id no está autorizado.