Lifecycle Defaults
Platform default values to prefill the AGC creation wizard.
GET /api/lifecycle-defaults
Return the three lifecycle pillars pre-filled with platform default values, resolved against the tenant's retention status catalog.
Auth: Required — activity-generation-config:view permission
This endpoint is prefill for the AGC creation wizard, not an entity. The payload is non-authoritative and NOT persisted — the admin edits these defaults and submits them via POST /api/activity-generation-configs. Nothing is created by calling this endpoint.
Serialization exception: unlike the three pillar resources (which respond in camelCase), this response is snake_case (e.g. source_table, min_lifetime_actions_for_engaged, status_code) because it is a hardcoded defaults payload, not a serialized entity.
What it returns
- Each pillar (
activation,engagement,resurrection) comes with default scalar settings and a default set of items (moments / levels / thresholds). - Every item is resolved against the tenant's retention status catalog, so it carries
status_code,user_retention_status_config_id, andlabel. - The activation source fields (
source_table,source_columns,date_column) arenullby design — the admin fills these in the wizard.
Example
curl https://api.reten.ai/api/lifecycle-defaults \
-H "Authorization: Bearer <token>" \
-H "x-tenant-id: <tenant-id>"import axios from 'axios';
const response = await axios.get('https://api.reten.ai/api/lifecycle-defaults', {
headers: {
Authorization: 'Bearer <token>',
'x-tenant-id': '<tenant-id>',
},
});
const defaults = response.data;Response 200 OK
{
"activation": {
"aggregation_method": "count",
"source_table": null,
"source_columns": null,
"date_column": null,
"moments": [
{
"status_code": "aha",
"user_retention_status_config_id": "rs222222-2222-2222-2222-222222222222",
"label": "Aha",
"min_actions": 1,
"window_days": 7,
"priority": 0
}
]
},
"engagement": {
"engagement_window_days": 28,
"counting_method": "active_days",
"min_lifetime_actions_for_engaged": 1,
"levels": [
{
"status_code": "habit",
"user_retention_status_config_id": "rs444444-4444-4444-4444-444444444444",
"label": "En hábito",
"min_threshold": 8,
"max_threshold": null,
"order": 0
}
]
},
"resurrection": {
"thresholds": [
{
"status_code": "dormant",
"user_retention_status_config_id": "rs555555-5555-5555-5555-555555555555",
"label": "En riesgo",
"threshold_days": 30,
"order": 0
}
]
}
}Field names within each item are snake_case here (status_code, min_actions, window_days, min_threshold, max_threshold, threshold_days, order). When the admin submits the wizard, these map to the snake_case request body of POST /api/activity-generation-configs.