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
| Campo | Tipo | Descripción |
|---|---|---|
id | string (uuid) | Id del resurrection config. |
name | string | Nombre visible. |
description | string | null | Descripción opcional. |
sourceTable | string | Tabla desde la que se leen los datos de actividad. |
sourceColumns | string[] | null | Columnas usadas para la agregación. |
dateColumn | string | Columna con el timestamp del evento. |
activityGenerationConfigId | string (uuid) | AGC dueño (NOT NULL, 1:1). |
aggregationMethod | nunique | count | sum | Cómo se agregan las acciones. |
isActive | boolean | Si la config está activa. |
updatedBy | string | null | Id del usuario que editó por última vez. |
createdAt | string (ISO 8601) | Timestamp de creación. |
updatedAt | string (ISO 8601) | Timestamp de última actualización. |
resurrectionThresholds | array | Umbrales de decaimiento ordenados (ver abajo). |
resurrectionThreshold
| Campo | Tipo | Descripción |
|---|---|---|
id | string (uuid) | Id del umbral. |
resurrectionConfigId | string (uuid) | Resurrection config dueño. |
statusCode | string | Code de estado de retención que emite este umbral (p. ej. dormant). |
userRetentionStatusConfigId | string (uuid) | Config de estado de retención del tenant resuelta. |
label | string | Label visible del umbral. |
thresholdDays | integer | Días de inactividad a partir de los cuales aplica este umbral. |
order | integer | Orden del umbral a lo largo de la ruta de decaimiento. |
isActive | boolean | Si el umbral está activo. |
createdAt | string (ISO 8601) | Timestamp de creación. |
updatedAt | string (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"
}
]
}