Reten Docs
Configuración de Ciclo de Vida

Resurrection Configs

Lee el pilar de resurrección del ciclo de vida y sus umbrales de decaimiento.

El resurrection config es el pilar de resurrección de un Activity Generation Config. Define umbrales de decaimiento ordenados según días de inactividad, clasificando a los usuarios a medida que pasan de dormant hacia churned.

Este recurso es de solo lectura: solo existen GET (lista) y GET /:id. Los resurrection configs se crean y editan únicamente a través del flujo del AGC — ver Crear AGC y Actualizar ciclo de vida.

Campos de respuesta

CampoTipoDescripción
idstring (uuid)Id del resurrection config.
namestringNombre visible.
descriptionstring | nullDescripción opcional.
sourceTablestringTabla desde la que se leen los datos de actividad.
sourceColumnsstring[] | nullColumnas usadas para la agregación.
dateColumnstringColumna con el timestamp del evento.
activityGenerationConfigIdstring (uuid)AGC dueño (NOT NULL, 1:1).
aggregationMethodnunique | count | sumCómo se agregan las acciones.
isActivebooleanSi la config está activa.
updatedBystring | nullId del usuario que editó por última vez.
createdAtstring (ISO 8601)Timestamp de creación.
updatedAtstring (ISO 8601)Timestamp de última actualización.
resurrectionThresholdsarrayUmbrales de decaimiento ordenados (ver abajo).

resurrectionThreshold

CampoTipoDescripción
idstring (uuid)Id del umbral.
resurrectionConfigIdstring (uuid)Resurrection config dueño.
statusCodestringCode de estado de retención que emite este umbral (p. ej. dormant).
userRetentionStatusConfigIdstring (uuid)Config de estado de retención del tenant resuelta.
labelstringLabel visible del umbral.
thresholdDaysintegerDías de inactividad a partir de los cuales aplica este umbral.
orderintegerOrden del umbral a lo largo de la ruta de decaimiento.
isActivebooleanSi el umbral está activo.
createdAtstring (ISO 8601)Timestamp de creación.
updatedAtstring (ISO 8601)Timestamp de última actualización.

GET /api/resurrection-configs

Lista los resurrection configs del tenant.

Auth: Requerida — permiso lifecycle-config:view

Ejemplo

curl https://api.reten.ai/api/resurrection-configs \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>"
import axios from 'axios';

const response = await axios.get('https://api.reten.ai/api/resurrection-configs', {
  headers: {
    Authorization: 'Bearer <token>',
    'x-tenant-id': '<tenant-id>',
  },
});

const resurrectionConfigs = response.data;

Respuesta 200 OK

[
  {
    "id": "r1111111-1111-1111-1111-111111111111",
    "name": "Resurrection",
    "description": "Inactivity decay path",
    "sourceTable": "events",
    "sourceColumns": ["user_id", "event_name"],
    "dateColumn": "occurred_at",
    "activityGenerationConfigId": "agc11111-1111-1111-1111-111111111111",
    "aggregationMethod": "count",
    "isActive": true,
    "updatedBy": "u1111111-1111-1111-1111-111111111111",
    "createdAt": "2026-01-15T10:00:00.000Z",
    "updatedAt": "2026-01-20T12:30:00.000Z",
    "resurrectionThresholds": [
      {
        "id": "t1111111-1111-1111-1111-111111111111",
        "resurrectionConfigId": "r1111111-1111-1111-1111-111111111111",
        "statusCode": "dormant",
        "userRetentionStatusConfigId": "rs555555-5555-5555-5555-555555555555",
        "label": "En riesgo",
        "thresholdDays": 30,
        "order": 0,
        "isActive": true,
        "createdAt": "2026-01-15T10:00:00.000Z",
        "updatedAt": "2026-01-15T10:00:00.000Z"
      },
      {
        "id": "t2222222-2222-2222-2222-222222222222",
        "resurrectionConfigId": "r1111111-1111-1111-1111-111111111111",
        "statusCode": "churned",
        "userRetentionStatusConfigId": "rs666666-6666-6666-6666-666666666666",
        "label": "Fugado",
        "thresholdDays": 90,
        "order": 1,
        "isActive": true,
        "createdAt": "2026-01-15T10:00:00.000Z",
        "updatedAt": "2026-01-15T10:00:00.000Z"
      }
    ]
  }
]

GET /api/resurrection-configs/:id

Lee un único resurrection config con sus umbrales de decaimiento.

Auth: Requerida — permiso lifecycle-config:view

Ejemplo

curl https://api.reten.ai/api/resurrection-configs/r1111111-1111-1111-1111-111111111111 \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>"
import axios from 'axios';

const response = await axios.get(
  'https://api.reten.ai/api/resurrection-configs/r1111111-1111-1111-1111-111111111111',
  {
    headers: {
      Authorization: 'Bearer <token>',
      'x-tenant-id': '<tenant-id>',
    },
  }
);

const resurrectionConfig = response.data;

Respuesta 200 OK

{
  "id": "r1111111-1111-1111-1111-111111111111",
  "name": "Resurrection",
  "description": "Inactivity decay path",
  "sourceTable": "events",
  "sourceColumns": ["user_id", "event_name"],
  "dateColumn": "occurred_at",
  "activityGenerationConfigId": "agc11111-1111-1111-1111-111111111111",
  "aggregationMethod": "count",
  "isActive": true,
  "updatedBy": "u1111111-1111-1111-1111-111111111111",
  "createdAt": "2026-01-15T10:00:00.000Z",
  "updatedAt": "2026-01-20T12:30:00.000Z",
  "resurrectionThresholds": [
    {
      "id": "t1111111-1111-1111-1111-111111111111",
      "resurrectionConfigId": "r1111111-1111-1111-1111-111111111111",
      "statusCode": "dormant",
      "userRetentionStatusConfigId": "rs555555-5555-5555-5555-555555555555",
      "label": "En riesgo",
      "thresholdDays": 30,
      "order": 0,
      "isActive": true,
      "createdAt": "2026-01-15T10:00:00.000Z",
      "updatedAt": "2026-01-15T10:00:00.000Z"
    }
  ]
}