Reten Docs

Resurrection Configs

Read the resurrection lifecycle pillar and its decay thresholds.

The resurrection config is the resurrection pillar of an Activity Generation Config. It defines ordered decay thresholds based on days of inactivity, classifying users as they slip from dormant toward churned.

This resource is read-only: only GET (list) and GET /:id exist. Resurrection configs are created and edited only through the AGC flow — see Create AGC and Update lifecycle.

Response fields

FieldTypeDescription
idstring (uuid)Resurrection config id.
namestringDisplay name.
descriptionstring | nullOptional description.
sourceTablestringTable the activity data is read from.
sourceColumnsstring[] | nullColumns used for the aggregation.
dateColumnstringColumn carrying the event timestamp.
activityGenerationConfigIdstring (uuid)Owning AGC (NOT NULL, 1:1).
isActivebooleanWhether the config is active.
updatedBystring | nullUser id of the last editor.
createdAtstring (ISO 8601)Creation timestamp.
updatedAtstring (ISO 8601)Last update timestamp.
resurrectionThresholdsarrayOrdered decay thresholds (see below).

resurrectionThreshold

FieldTypeDescription
idstring (uuid)Threshold id.
resurrectionConfigIdstring (uuid)Owning resurrection config.
statusCodestringRetention status code emitted at this threshold (e.g. dormant).
userRetentionStatusConfigIdstring (uuid)Resolved tenant retention status config.
labelstringDisplay label for the threshold.
thresholdDaysintegerDays of inactivity at which this threshold applies.
orderintegerOrdering of the threshold along the decay path.
isActivebooleanWhether the threshold is active.
createdAtstring (ISO 8601)Creation timestamp.
updatedAtstring (ISO 8601)Last update timestamp.

GET /api/resurrection-configs

List the resurrection configs of the tenant.

Auth: Required — lifecycle-config:view permission

Example

curl https://api.reten.ai/api/resurrection-configs \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>" \
  -H "x-project-id: <project-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>',
    'x-project-id': '<project-id>',
  },
});

const resurrectionConfigs = response.data;

Response 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",
    "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

Read a single resurrection config with its decay thresholds.

Auth: Required — lifecycle-config:view permission

Example

curl https://api.reten.ai/api/resurrection-configs/r1111111-1111-1111-1111-111111111111 \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>" \
  -H "x-project-id: <project-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>',
      'x-project-id': '<project-id>',
    },
  }
);

const resurrectionConfig = response.data;

Response 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",
  "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"
    }
  ]
}