Reten Docs
Integración Tareas

Listar Actividades

Consulta las actividades de tipo tarea visibles para tu integración.

GET /api/integration/activities/tasks

Retorna una lista paginada de actividades de tipo tarea visibles para la clave de API de tu integración.

Autenticación: Requerida — permiso VIEW_ACTIVITIES

Header requerido

HeaderValor
x-api-keyYOUR_API_KEY

Parámetros de consulta

ParámetroTipoRequeridoDescripción
pagenumberNoNúmero de página (por defecto: 1)
per_pagenumberNoResultados por página (por defecto: 20, máximo: 100)
statusstringNoFiltrar por estado de actividad (PENDING, IN_PROGRESS, COMPLETED, CANCELLED)
result_statusstringNoFiltrar por estado del resultado (EFFECTIVE, NOT_EFFECTIVE, PENDING)
channelstringNoFiltrar por canal (SALESMAN, CALLCENTER, etc.)
external_commerce_idstringNoFiltrar por ID externo del comercio
external_operator_idstringNoFiltrar por ID externo del operador
scheduled_fromstringNoFecha mínima de programación (ISO 8601)
scheduled_tostringNoFecha máxima de programación (ISO 8601)

Ejemplo

curl -X GET "BASE_URL/api/integration/activities/tasks?page=1&per_page=10&status=PENDING" \
  -H "x-api-key: YOUR_API_KEY"
const params = new URLSearchParams({
  page: "1",
  per_page: "10",
  status: "PENDING",
});

const response = await fetch(
  `${BASE_URL}/api/integration/activities/tasks?${params}`,
  {
    headers: {
      "x-api-key": "YOUR_API_KEY",
    },
  }
);

const data = await response.json();
import requests

response = requests.get(
    f"{BASE_URL}/api/integration/activities/tasks",
    headers={
        "x-api-key": "YOUR_API_KEY",
    },
    params={
        "page": 1,
        "per_page": 10,
        "status": "PENDING",
    },
)

data = response.json()

Respuesta 200 OK

{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "activityOrigin": "ACTIVITY",
      "type": "TASK",
      "status": "PENDING",
      "channel": "SALESMAN",
      "scheduledAt": "2026-04-15T09:00:00.000Z",
      "occurredAt": null,
      "createdAt": "2026-04-10T14:30:00.000Z",
      "lifecycleStatus": "SCHEDULED",
      "lifecycleStatusLabel": "Programada",
      "lifecycleStatusDetail": null,
      "canForceRetryDispatch": false,
      "commerceExternalId": "COM-001",
      "commerceName": "Farmacia Central",
      "reason": {
        "code": "CHURN_RISK",
        "label": "Riesgo de fuga"
      },
      "userStatus": null,
      "commerceAssignment": {
        "commerceExternalId": "COM-001",
        "assignmentReason": "Asignación por ruta",
        "commerce": {
          "externalId": "COM-001",
          "name": "Farmacia Central"
        }
      },
      "activityDetails": {
        "type": "TASK",
        "assignedRouteCode": "RUTA-NORTE-01",
        "assignedOperatorExternalId": "OP-042",
        "assignedRoute": {
          "code": "RUTA-NORTE-01",
          "name": "Ruta Norte"
        },
        "assignedOperator": {
          "externalId": "OP-042",
          "name": "Carlos Pérez",
          "type": "SALESMAN"
        }
      },
      "activityResult": null
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 10,
    "total": 47,
    "totalPages": 5
  }
}

Campos de la actividad

CampoTipoDescripción
idstringIdentificador único de la actividad
activityOrigin"ACTIVITY" | "STANDALONE"Origen de la actividad
typestring | nullTipo de actividad (ej. "TASK")
statusstring | nullEstado actual (PENDING, IN_PROGRESS, COMPLETED, CANCELLED)
channelstring | nullCanal de la actividad (SALESMAN, CALLCENTER, etc.)
scheduledAtstring | nullFecha programada (ISO 8601)
occurredAtstring | nullFecha en que ocurrió la gestión (ISO 8601)
createdAtstring | nullFecha de creación (ISO 8601)
lifecycleStatusstring | nullEstado del ciclo de vida para visualización
lifecycleStatusLabelstring | nullEtiqueta legible del estado del ciclo de vida
lifecycleStatusDetailstring | nullDetalle adicional del estado
canForceRetryDispatchbooleanIndica si se puede forzar un re-dispatch
commerceExternalIdstringID externo del comercio asociado
commerceNamestringNombre del comercio
reasonobject | nullRazón de la actividad (code, label)
userStatusobject | nullEstado personalizado del usuario (code, label)
commerceAssignmentobject | nullInformación de asignación del comercio
activityDetailsobject | nullDetalles específicos del tipo de actividad
activityResultobject | nullResultado de la gestión (si existe)

Campos de activityDetails (tipo TASK)

CampoTipoDescripción
type"TASK"Discriminador de tipo
assignedRouteCodestring | nullCódigo de la ruta asignada
assignedOperatorExternalIdstring | nullID externo del operador asignado
assignedRouteobject | nullRuta asignada (code, name)
assignedOperatorobject | nullOperador asignado (externalId, name, type)

Campos de activityResult

CampoTipoDescripción
idstringIdentificador del resultado
resultStatusstringEstado del resultado (EFFECTIVE, NOT_EFFECTIVE, PENDING)
sourcestringOrigen del resultado
originstringCanal de origen
channelstring | nullCanal del resultado
occurredAtstringFecha en que ocurrió (ISO 8601)
createdAtstringFecha de creación (ISO 8601)
resultDetailsobject | nullDetalles del resultado de tipo tarea

Errores

StatusDescripción
401Clave de API faltante o inválida
403La clave no tiene el permiso VIEW_ACTIVITIES