Actividades
Crear Actividades en Lote
Crear multiples actividades en una sola solicitud.
POST /api/activities/bulk
Crea hasta 200 actividades en una sola solicitud. Cada elemento sigue el mismo esquema que el endpoint individual Crear Actividad.
Auth: Requerida — permiso CREATE_ACTIVITY
Cuerpo de la Solicitud
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
items | array | Si | Array de objetos de actividad (min 1, max 200) |
Cada elemento en items tiene los mismos campos que el cuerpo de la solicitud de Crear Actividad:
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
type | string | Si | TASK o MESSAGE |
reason | string | Si | Razon para crear la actividad |
channel | string | Si | SALESMAN, CALLCENTER, WHATSAPP, EMAIL, SMS, PUSH |
commerce_id | UUID | Si | ID del comercio destino |
idempotency_key | string | Si | Clave unica por tenant (previene duplicados) |
scheduled_at | ISO 8601 | Si | Cuando se debe ejecutar la actividad |
suggested_execution_time | ISO 8601 | No | Hora sugerida de ejecucion |
user_status | string | No | Contexto de estado del usuario |
score | integer | No | Puntaje de prioridad |
assignment_reason | string | No | Razon de la asignacion |
target_criteria | array | No | Criterios de resolucion de objetivo |
attribute_keys | string[] | No | Nombres de claves de atributos a resolver via politicas |
attributes | array | No | Valores de atributos provistos por el llamador |
Ejemplo
curl -X POST https://api.reten.ai/api/activities/bulk \
-H "Authorization: Bearer <token>" \
-H "x-tenant-id: <tenant-id>" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"type": "MESSAGE",
"reason": "monthly_promotion",
"channel": "WHATSAPP",
"commerce_id": "880e8400-e29b-41d4-a716-446655440000",
"idempotency_key": "msg-2025-01-15-001",
"scheduled_at": "2025-01-16T09:00:00.000Z"
},
{
"type": "MESSAGE",
"reason": "monthly_promotion",
"channel": "EMAIL",
"commerce_id": "990e8400-e29b-41d4-a716-446655440000",
"idempotency_key": "msg-2025-01-15-002",
"scheduled_at": "2025-01-16T09:00:00.000Z"
}
]
}'const response = await fetch("https://api.reten.ai/api/activities/bulk", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"x-tenant-id": "<tenant-id>",
"Content-Type": "application/json",
},
body: JSON.stringify({
items: [
{
type: "MESSAGE",
reason: "monthly_promotion",
channel: "WHATSAPP",
commerce_id: "880e8400-e29b-41d4-a716-446655440000",
idempotency_key: "msg-2025-01-15-001",
scheduled_at: "2025-01-16T09:00:00.000Z",
},
{
type: "MESSAGE",
reason: "monthly_promotion",
channel: "EMAIL",
commerce_id: "990e8400-e29b-41d4-a716-446655440000",
idempotency_key: "msg-2025-01-15-002",
scheduled_at: "2025-01-16T09:00:00.000Z",
},
],
}),
});
const result = await response.json();import requests
response = requests.post(
"https://api.reten.ai/api/activities/bulk",
headers={
"Authorization": "Bearer <token>",
"x-tenant-id": "<tenant-id>",
},
json={
"items": [
{
"type": "MESSAGE",
"reason": "monthly_promotion",
"channel": "WHATSAPP",
"commerce_id": "880e8400-e29b-41d4-a716-446655440000",
"idempotency_key": "msg-2025-01-15-001",
"scheduled_at": "2025-01-16T09:00:00.000Z",
},
{
"type": "MESSAGE",
"reason": "monthly_promotion",
"channel": "EMAIL",
"commerce_id": "990e8400-e29b-41d4-a716-446655440000",
"idempotency_key": "msg-2025-01-15-002",
"scheduled_at": "2025-01-16T09:00:00.000Z",
},
],
},
)
result = response.json()Respuesta 201 Created
Devuelve un array de objetos de actividad creados.
Respuestas de Error
| Estado | Descripcion |
|---|---|
400 | Error de validacion — campos invalidos o faltantes en uno o mas elementos |
401 | Token de autenticacion faltante o invalido |
409 | Clave de idempotencia ya existe para uno o mas elementos |