Reten Docs
Resultados de Actividades

Crear Resultado de Actividad

Crear el resultado de una actividad de tarea.

POST /api/activity-results/tasks

Crea un resultado para una actividad de tarea. Los resultados pueden vincularse a actividades existentes de Reten o crearse como entradas independientes.

Auth: Requerida — permiso CREATE_ACTIVITY

Cuerpo de la Solicitud

CampoTipoRequeridoDescripción
activityIdUUIDNoID de actividad en Reten (uno de activityId o providerActivityId)
providerActivityIdstringNoID de actividad del proveedor externo
commerceExternalIdstringID externo del comercio
statusstringPENDING, COMPLETED, NOT_EXECUTED, CANCELED, TRANSFERRED
resultTypeCodestringNoCódigo del tipo de resultado de tarea (ej., success, not_home)
commentstringNoComentario de texto libre
contactDirectionstringNoINBOUND o OUTBOUND
operatorExternalIdstringNoID externo del operador
occurredAtISO 8601Cuándo ocurrió el resultado
rawPayloadobjectNoPayload crudo del proveedor (almacenado tal cual)
hardOverridebooleanNoOmitir validación de transición de estado

Ejemplo

curl -X POST https://api.reten.ai/api/activity-results/tasks \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "providerActivityId": "ext-123",
    "commerceExternalId": "store-001",
    "status": "COMPLETED",
    "resultTypeCode": "success",
    "comment": "Order placed successfully",
    "contactDirection": "OUTBOUND",
    "occurredAt": "2025-01-16T14:30:00.000Z"
  }'
const response = await fetch("https://api.reten.ai/api/activity-results/tasks", {
  method: "POST",
  headers: {
    "Authorization": "Bearer <token>",
    "x-tenant-id": "<tenant-id>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    providerActivityId: "ext-123",
    commerceExternalId: "store-001",
    status: "COMPLETED",
    resultTypeCode: "success",
    comment: "Order placed successfully",
    contactDirection: "OUTBOUND",
    occurredAt: "2025-01-16T14:30:00.000Z",
  }),
});
const result = await response.json();
import requests

response = requests.post(
    "https://api.reten.ai/api/activity-results/tasks",
    headers={
        "Authorization": "Bearer <token>",
        "x-tenant-id": "<tenant-id>",
    },
    json={
        "providerActivityId": "ext-123",
        "commerceExternalId": "store-001",
        "status": "COMPLETED",
        "resultTypeCode": "success",
        "comment": "Order placed successfully",
        "contactDirection": "OUTBOUND",
        "occurredAt": "2025-01-16T14:30:00.000Z",
    },
)
result = response.json()

Respuesta 201 Created

{
  "id": "770e8400-e29b-41d4-a716-446655440000",
  "activityId": "ee0e8400-e29b-41d4-a716-446655440000",
  "source": "RETEN_ACTIVITY",
  "status": "COMPLETED",
  "taskDetails": {
    "result": {
      "code": "success",
      "label": "Exito"
    },
    "comment": "Order placed successfully",
    "contactDirection": "OUTBOUND"
  }
}

Notas

  • Si activityId o providerActivityId coincide con una actividad existente, el origen es RETEN_ACTIVITY
  • Si no se encuentra ninguna actividad, el origen es STANDALONE
  • Para resultados independientes, se crea automáticamente un comercio placeholder si es necesario
  • Las actualizaciones aplican una guardia temporal (occurredAt debe ser posterior al updatedAt del resultado existente)
  • El estado de la actividad padre se sincroniza según el estado del resultado