Actualizar Activity Generation Config
Actualiza solo los metadatos de una activity generation config.
PATCH /api/activity-generation-configs/:id
Actualiza solo los metadatos de una AGC. Este endpoint nunca toca los pilares de ciclo de vida — para cambiar activation, engagement o resurrection, usa PUT /:id/lifecycle.
Auth: Requerida — permiso activity-generation-config:update
Parámetros de Ruta
| Parámetro | Tipo | Descripción |
|---|---|---|
id | UUID | ID de la activity generation config |
Cuerpo de la Solicitud
Todos los campos son opcionales; solo se actualizan los campos que envías. Los cuerpos de solicitud son snake_case.
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
name | string | No | Nombre de la config; no puede ir vacío |
description | string | No | Descripción de texto libre |
audience_id | UUID | null | No | Audiencia propia de la AGC; null la quita (ver abajo) |
audience_id funciona así:
- omitido — la AGC conserva su audiencia actual;
- un id de audiencia — tiene que ser una audiencia del proyecto activo; si no, la API responde
400; null— quita la audiencia propia de la AGC:audienceIdpasa anull, y las lecturas (GET /:idy el listado) devuelven la audiencia raíz del proyecto comoeffectiveAudienceId, así que la AGC vuelve a correr sobre la audiencia raíz (ver Audiencia efectiva).
Los datos de los pilares de ciclo de vida no pueden cambiarse aquí. Este endpoint solo edita los campos de metadatos propios de la AGC.
Ejemplo
curl -X PATCH https://api.reten.ai/api/activity-generation-configs/f47ac10b-58cc-4372-a567-0e02b2c3d479 \
-H "Authorization: Bearer <token>" \
-H "x-tenant-id: <tenant-id>" \
-H "x-project-id: <project-id>" \
-H "Content-Type: application/json" \
-d '{ "name": "Main funnel lifecycle", "description": "Renamed for clarity" }'import axios from 'axios';
const id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479';
const response = await axios.patch(
`https://api.reten.ai/api/activity-generation-configs/${id}`,
{ name: 'Main funnel lifecycle', description: 'Renamed for clarity' },
{ headers: { Authorization: 'Bearer <token>', 'x-tenant-id': '<tenant-id>', 'x-project-id': '<project-id>' } },
);
const updated = response.data;Respuesta 200 OK
Devuelve la AGC actualizada con su configuración anidada completa — los tres pilares y sus hijos — en la misma forma camelCase que GET /:id, pero sin effectiveAudienceId ni configHashes: lee la AGC con GET /:id para obtenerlos.
{
"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"projectId": "3f6c2b1a-8d4e-4f7a-9b2c-5e1d0a7f6c34",
"name": "Main funnel lifecycle",
"description": "Renamed for clarity",
"audienceId": "1f0d2c3b-4a59-4687-9c12-abcdef012345",
"status": "active",
"updatedBy": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"createdAt": "2026-06-10T14:00:00.000Z",
"updatedAt": "2026-06-17T11:05:00.000Z",
"activationConfig": {
"id": "2a8f0c11-6b22-4d33-8e44-aa55bb66cc77",
"name": "Activation",
"description": "First-week activation moments",
"sourceTable": "events",
"sourceColumns": ["user_id", "event_id"],
"dateColumn": "occurred_at",
"activityGenerationConfigId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"aggregationMethod": "nunique",
"isActive": true,
"updatedBy": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"createdAt": "2026-06-10T14:00:00.000Z",
"updatedAt": "2026-06-10T14:00:00.000Z",
"activationMoments": [
{
"id": "3b9a1d22-7c33-4e44-9f55-bb66cc77dd88",
"activationConfigId": "2a8f0c11-6b22-4d33-8e44-aa55bb66cc77",
"statusCode": "aha",
"userRetentionStatusConfigId": "aa11bb22-cc33-4d44-9e55-ff66aa77bb88",
"minActions": 3,
"windowDays": 7,
"timeWindow": 30,
"priority": 1,
"isActive": true,
"createdAt": "2026-06-10T14:00:00.000Z",
"updatedAt": "2026-06-10T14:00:00.000Z"
}
]
},
"engagementConfig": {
"id": "5d1c3f44-9e55-4066-b177-dd88ee99ffaa",
"name": "Engagement",
"description": "Active-user engagement levels",
"sourceTable": "events",
"sourceColumns": ["user_id", "event_id"],
"dateColumn": "occurred_at",
"activityGenerationConfigId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"engagementWindowDays": 28,
"minLifetimeActionsForEngaged": 1,
"countingMethod": "active_days",
"isActive": true,
"updatedBy": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"createdAt": "2026-06-10T14:00:00.000Z",
"updatedAt": "2026-06-10T14:00:00.000Z",
"engagementLevels": [
{
"id": "6e2d4055-af66-4177-c288-ee99ffaa00bb",
"engagementConfigId": "5d1c3f44-9e55-4066-b177-dd88ee99ffaa",
"statusCode": "casual",
"userRetentionStatusConfigId": "cc33dd44-ee55-4f66-a077-bb99ccaaddbb",
"label": "Casual",
"minThreshold": 1,
"maxThreshold": null,
"order": 1,
"isActive": true,
"createdAt": "2026-06-10T14:00:00.000Z",
"updatedAt": "2026-06-10T14:00:00.000Z"
}
]
},
"resurrectionConfig": {
"id": "8a4f6277-c188-4399-e400-aa00bb11ccdd",
"name": "Resurrection",
"description": "Recovery vs. churn classification",
"sourceTable": "events",
"sourceColumns": ["user_id"],
"dateColumn": "occurred_at",
"activityGenerationConfigId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"isActive": true,
"updatedBy": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"createdAt": "2026-06-10T14:00:00.000Z",
"updatedAt": "2026-06-10T14:00:00.000Z",
"resurrectionThresholds": [
{
"id": "9b5a7388-d299-44aa-f511-bb11ccdd22ee",
"resurrectionConfigId": "8a4f6277-c188-4399-e400-aa00bb11ccdd",
"statusCode": "dormant",
"userRetentionStatusConfigId": "ee55ff66-aa77-4188-c299-ddbbeeccffdd",
"label": "Dormant",
"thresholdDays": 30,
"order": 1,
"isActive": true,
"createdAt": "2026-06-10T14:00:00.000Z",
"updatedAt": "2026-06-10T14:00:00.000Z"
}
]
}
}Respuestas de Error
| Estado | Descripción |
|---|---|
400 | Validación fallida: un campo con un valor inválido, o un campo que el endpoint no acepta — como projectId, status o un pilar (activation, engagement, resurrection) |
400 | id no es un UUID |
400 | audience_id no es una audiencia del proyecto activo — La audiencia no existe en este proyecto. |
404 | No existe una activity generation config con ese id en el proyecto activo (incluida una AGC de otro proyecto) — Activity generation config <id> not found |
409 | Otra AGC del proyecto activo ya tiene ese nombre — An activity generation config with name "<name>" already exists |