Activation Configs
Read the activation lifecycle pillar and its activation moments.
The activation config is the activation pillar of an Activity Generation Config. It defines the source of activity data and a set of activation moments — ordered rules that classify how strongly a user has activated.
This resource is read-only: only GET (list) and GET /:id exist. Activation configs are created and edited only through the AGC flow — see Create AGC and Update lifecycle.
Response fields
| Field | Type | Description |
|---|---|---|
id | string (uuid) | Activation config id. |
name | string | Display name. |
description | string | null | Optional description. |
sourceTable | string | Table the activation data is read from. |
sourceColumns | string[] | null | Columns used for the aggregation. |
dateColumn | string | Column carrying the event timestamp. |
activityGenerationConfigId | string (uuid) | Owning AGC (NOT NULL, 1:1). |
aggregationMethod | nunique | count | sum | active_weeks | How actions are aggregated within a window. |
isActive | boolean | Whether the config is active. |
updatedBy | string | null | User id of the last editor. |
createdAt | string (ISO 8601) | Creation timestamp. |
updatedAt | string (ISO 8601) | Last update timestamp. |
activationMoments | array | Ordered activation moment rules (see below). |
activationMoment
| Field | Type | Description |
|---|---|---|
id | string (uuid) | Moment id. |
activationConfigId | string (uuid) | Owning activation config. |
statusCode | string | Retention status code emitted by this moment (e.g. aha). |
userRetentionStatusConfigId | string (uuid) | Resolved tenant retention status config. |
minActions | integer | null | Minimum actions required to reach this moment. |
windowDays | integer | null | Rolling window in days over which actions are counted. |
timeWindow | integer | null | Optional time-window bound (days). |
priority | integer | Evaluation priority (lower wins). |
isActive | boolean | Whether the moment is active. |
createdAt | string (ISO 8601) | Creation timestamp. |
updatedAt | string (ISO 8601) | Last update timestamp. |
GET /api/activation-configs
List the activation configs of the tenant.
Auth: Required — lifecycle-config:view permission
Example
curl https://api.reten.ai/api/activation-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/activation-configs', {
headers: {
Authorization: 'Bearer <token>',
'x-tenant-id': '<tenant-id>',
'x-project-id': '<project-id>',
},
});
const activationConfigs = response.data;Response 200 OK
[
{
"id": "a1111111-1111-1111-1111-111111111111",
"name": "Activation",
"description": "First-week activation moments",
"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",
"activationMoments": [
{
"id": "m1111111-1111-1111-1111-111111111111",
"activationConfigId": "a1111111-1111-1111-1111-111111111111",
"statusCode": "buyer",
"userRetentionStatusConfigId": "rs111111-1111-1111-1111-111111111111",
"minActions": 1,
"windowDays": 14,
"timeWindow": null,
"priority": 0,
"isActive": true,
"createdAt": "2026-01-15T10:00:00.000Z",
"updatedAt": "2026-01-15T10:00:00.000Z"
},
{
"id": "m2222222-2222-2222-2222-222222222222",
"activationConfigId": "a1111111-1111-1111-1111-111111111111",
"statusCode": "aha",
"userRetentionStatusConfigId": "rs222222-2222-2222-2222-222222222222",
"minActions": 3,
"windowDays": 7,
"timeWindow": null,
"priority": 1,
"isActive": true,
"createdAt": "2026-01-15T10:00:00.000Z",
"updatedAt": "2026-01-15T10:00:00.000Z"
}
]
}
]GET /api/activation-configs/:id
Read a single activation config with its activation moments.
Auth: Required — lifecycle-config:view permission
Example
curl https://api.reten.ai/api/activation-configs/a1111111-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/activation-configs/a1111111-1111-1111-1111-111111111111',
{
headers: {
Authorization: 'Bearer <token>',
'x-tenant-id': '<tenant-id>',
'x-project-id': '<project-id>',
},
}
);
const activationConfig = response.data;Response 200 OK
{
"id": "a1111111-1111-1111-1111-111111111111",
"name": "Activation",
"description": "First-week activation moments",
"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",
"activationMoments": [
{
"id": "m2222222-2222-2222-2222-222222222222",
"activationConfigId": "a1111111-1111-1111-1111-111111111111",
"statusCode": "aha",
"userRetentionStatusConfigId": "rs222222-2222-2222-2222-222222222222",
"minActions": 3,
"windowDays": 7,
"timeWindow": null,
"priority": 1,
"isActive": true,
"createdAt": "2026-01-15T10:00:00.000Z",
"updatedAt": "2026-01-15T10:00:00.000Z"
}
]
}