Reten Docs
Actividades

Crear Actividad

Crear una nueva actividad asignada a un comercio.

POST /api/activities

Crea una nueva actividad (TASK o MESSAGE) con asignación de comercio, resolución de destinatario y resolución de atributos.

Auth: Requerida — permiso CREATE_ACTIVITY

Cuerpo de la Solicitud

CampoTipoRequeridoDescripción
typestringTASK o MESSAGE
reasonstringRazón para crear la actividad
channelstringSALESMAN, CALLCENTER, WHATSAPP, EMAIL, SMS, PUSH
commerce_idUUIDID del comercio objetivo
idempotency_keystringClave única por tenant (evita duplicados)
scheduled_atISO 8601Cuándo debe ejecutarse la actividad
suggested_execution_timeISO 8601NoTiempo sugerido para la ejecución
user_statusstringNoContexto de estado del usuario
scoreintegerNoPuntuación de prioridad
assignment_reasonstringNoRazón de la asignación
target_criteriaarrayNoCriterios de resolución de destinatario personalizados (objetos con type, config, priority)
attribute_keysstring[]NoNombres de claves de atributo a resolver mediante políticas
attributesarrayNoValores de atributo proporcionados por el cliente (objetos con key, value, fallback)

Ejemplo

curl -X POST https://api.reten.ai/api/activities \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "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",
    "attribute_keys": ["commerce_info"]
  }'
const response = await fetch("https://api.reten.ai/api/activities", {
  method: "POST",
  headers: {
    "Authorization": "Bearer <token>",
    "x-tenant-id": "<tenant-id>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    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",
    attribute_keys: ["commerce_info"],
  }),
});
const activity = await response.json();
import requests

response = requests.post(
    "https://api.reten.ai/api/activities",
    headers={
        "Authorization": "Bearer <token>",
        "x-tenant-id": "<tenant-id>",
    },
    json={
        "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",
        "attribute_keys": ["commerce_info"],
    },
)
activity = response.json()

Respuesta 201 Created

{
  "id": "ee0e8400-e29b-41d4-a716-446655440000",
  "type": "MESSAGE",
  "reason": {
    "code": "monthly_promotion",
    "label": "Promocion Mensual"
  },
  "channel": "WHATSAPP",
  "status": "READY",
  "userStatus": null,
  "idempotencyKey": "msg-2025-01-15-001",
  "scheduledAt": "2025-01-16T09:00:00.000Z",
  "commerceAssignment": {
    "commerceId": "880e8400-e29b-41d4-a716-446655440000"
  }
}

Respuestas de Error

EstadoDescripción
400Error de validación
404Comercio no encontrado
409La clave de idempotencia ya existe