Actividades de Tarea
Crear Actividad de Tarea
Crear una actividad de tipo TASK con asignación de ruta y operador.
POST /api/activities/tasks
Crea una actividad de tipo TASK con asignación de ruta y operador. Las actividades de tarea requieren routeId y operatorId además de los campos base de actividad.
Auth: Requerida — permiso CREATE_ACTIVITY
Cuerpo de la Solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
reason | string | Sí | Motivo para crear la tarea |
channel | string | Sí | Canal para el despacho |
commerce_id | UUID | Sí | Comercio destino |
idempotency_key | string | Sí | Único por tenant |
assigned_route_id | UUID | Sí | Ruta asignada |
assigned_operator_id | UUID | Sí | Operador asignado |
scheduled_at | ISO 8601 | Sí | Hora programada de ejecución |
suggested_execution_time | ISO 8601 | No | Hora sugerida de ejecución |
user_status | string | No | Contexto de estado del usuario |
score | integer | No | Puntuación de prioridad |
assignment_reason | string | No | Motivo de la asignación |
target_criteria | array | No | Criterios de resolución del destino (anula los predeterminados) |
attribute_keys | string[] | No | Nombres de claves de atributo a resolver mediante políticas |
attributes | array | No | Valores de atributo provistos por el llamador (objetos con key, value, fallback) |
Ejemplo
curl -X POST https://api.reten.ai/api/activities/tasks \
-H "Authorization: Bearer <token>" \
-H "x-tenant-id: <tenant-id>" \
-H "Content-Type: application/json" \
-d '{
"reason": "Monthly visit",
"channel": "SALESMAN",
"commerce_id": "880e8400-e29b-41d4-a716-446655440000",
"idempotency_key": "task-2025-01-15-001",
"assigned_route_id": "dd0e8400-e29b-41d4-a716-446655440000",
"assigned_operator_id": "cc0e8400-e29b-41d4-a716-446655440000",
"scheduled_at": "2025-01-16T09:00:00.000Z",
"attribute_keys": ["commerce_info", "promotions"]
}'const response = await fetch("https://api.reten.ai/api/activities/tasks", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"x-tenant-id": "<tenant-id>",
"Content-Type": "application/json",
},
body: JSON.stringify({
reason: "Monthly visit",
channel: "SALESMAN",
commerce_id: "880e8400-e29b-41d4-a716-446655440000",
idempotency_key: "task-2025-01-15-001",
assigned_route_id: "dd0e8400-e29b-41d4-a716-446655440000",
assigned_operator_id: "cc0e8400-e29b-41d4-a716-446655440000",
scheduled_at: "2025-01-16T09:00:00.000Z",
attribute_keys: ["commerce_info", "promotions"],
}),
});
const task = await response.json();import requests
response = requests.post(
"https://api.reten.ai/api/activities/tasks",
headers={
"Authorization": "Bearer <token>",
"x-tenant-id": "<tenant-id>",
},
json={
"reason": "Monthly visit",
"channel": "SALESMAN",
"commerce_id": "880e8400-e29b-41d4-a716-446655440000",
"idempotency_key": "task-2025-01-15-001",
"assigned_route_id": "dd0e8400-e29b-41d4-a716-446655440000",
"assigned_operator_id": "cc0e8400-e29b-41d4-a716-446655440000",
"scheduled_at": "2025-01-16T09:00:00.000Z",
"attribute_keys": ["commerce_info", "promotions"],
},
)
task = response.json()Respuesta 201 Created
{
"id": "ee0e8400-e29b-41d4-a716-446655440000",
"type": "TASK",
"channel": "SALESMAN",
"status": "READY",
"taskDetails": {
"assignedRouteId": "dd0e8400-e29b-41d4-a716-446655440000",
"assignedOperatorId": "cc0e8400-e29b-41d4-a716-446655440000"
}
}Respuestas de Error
| Estado | Descripción |
|---|---|
400 | Error de validación |
404 | Comercio, ruta u operador no encontrado |
409 | La clave de idempotencia ya existe |