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, de un proyecto o de todo el tenant (ver Header requerido).

Autenticación: Requerida — permiso activity:view

Header requerido

HeaderValor
x-api-keyYOUR_API_KEY

x-project-id es opcional: este es un endpoint project-optional. Con una clave de tenant o un token de usuario, enviar el header acota la lista a ese proyecto; sin él, la lista abarca todos los proyectos del tenant, y cada actividad trae su projectId. Una clave de proyecto siempre lista las actividades de su propio proyecto. Un header enviado se valida — ver Errores de proyecto.

Parámetros de consulta

ParámetroTipoRequeridoDescripción
pagenumberNoNúmero de página (por defecto: 1)
per_pagenumberNoResultados por página (por defecto: 25, máximo: 100)
statusstringNoFiltrar por estado de actividad (ver Activity States). Valores filtrables: READY, RETRYING, DISPATCHED, COMPLETED, CANCELED, FAILED
result_statusstringNoFiltrar por estado del resultado (ver Activity States). Valores filtrables: COMPLETED, NOT_EXECUTED
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=READY" \
  -H "x-api-key: YOUR_API_KEY"
const params = new URLSearchParams({
  page: "1",
  per_page: "10",
  status: "READY",
});

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": "READY",
    },
)

data = response.json()

Respuesta 200 OK

El siguiente es un ejemplo ilustrativo de la forma del response. Los valores de campos como id, scheduledAt, status, lifecycleStatus, etc., varían según el estado real de cada actividad. Para el catálogo completo de posibles valores de status y lifecycleStatus, ver Activity States.

{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "activityOrigin": "ACTIVITY",
      "projectId": "3f6c2b1a-8d4e-4f7a-9b2c-5e1d0a7f6c34",
      "type": "TASK",
      "status": "READY",
      "score": 85,
      "channel": "SALESMAN",
      "scheduledAt": "2026-04-10T18:00:00.000Z",
      "occurredAt": null,
      "createdAt": "2026-04-10T14:30:00.000Z",
      "lifecycleStatus": "READY",
      "lifecycleStatusLabel": "Lista",
      "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
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 10,
    "total": 47,
    "total_pages": 5,
    "has_next": true,
    "has_previous": false
  }
}

Ejemplo de ejecución independiente (STANDALONE)

Los items con activityOrigin: "STANDALONE" provienen de un resultado registrado como ejecución independiente, sin una actividad previa: scheduledAt repite el occurredAt del resultado, y activityResult siempre viene poblado. Un activityResult poblado también aparece en los items ACTIVITY una vez gestionados.

Abajo se muestra solo el item — el envoltorio pagination que lo rodea es idéntico al del ejemplo anterior.

{
  "id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
  "activityOrigin": "STANDALONE",
  "projectId": "3f6c2b1a-8d4e-4f7a-9b2c-5e1d0a7f6c34",
  "type": null,
  "reason": null,
  "userStatus": null,
  "status": null,
  "score": null,
  "scheduledAt": "2026-04-12T16:45:00.000Z",
  "occurredAt": "2026-04-12T16:45:00.000Z",
  "createdAt": "2026-04-12T16:47:00.000Z",
  "lifecycleStatus": null,
  "lifecycleStatusLabel": null,
  "lifecycleStatusDetail": null,
  "canForceRetryDispatch": false,
  "channel": "SALESMAN",
  "commerceExternalId": "COM-001",
  "commerceName": "Farmacia Central",
  "commerceAssignment": null,
  "activityResult": {
    "id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
    "resultStatus": "COMPLETED",
    "source": "STANDALONE",
    "origin": "PLATFORM",
    "channel": "SALESMAN",
    "occurredAt": "2026-04-12T16:45:00.000Z",
    "createdAt": "2026-04-12T16:47:00.000Z",
    "resultDetails": {
      "type": "TASK",
      "result": {
        "code": "RESCHEDULE",
        "label": "Reprogramar visita"
      },
      "comment": null,
      "requiresFutureScheduledAt": true,
      "externalOperatorId": "OP-042",
      "operator": {
        "externalId": "OP-042",
        "name": "Carlos Pérez"
      }
    }
  },
  "activityDetails": {
    "type": "TASK",
    "assignedRouteCode": null,
    "assignedOperatorExternalId": "OP-042",
    "assignedRoute": null,
    "assignedOperator": {
      "externalId": "OP-042",
      "name": "Carlos Pérez",
      "type": "SALESMAN"
    }
  }
}

Campos de la actividad

CampoTipoDescripción
idstringIdentificador único de la actividad
activityOrigin"ACTIVITY" | "STANDALONE"Origen de la actividad
projectIdstringProyecto al que pertenece la actividad
typestring | nullTipo de actividad (ej. "TASK")
statusstring | nullEstado actual de la actividad — ver Activity States para el catálogo completo
scorenumber | nullPuntuación de prioridad de la actividad (asignada al crearla)
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 (read-only, computed) — ver Activity States
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 — ver Activity States §resultStatus
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

Campos de resultDetails (tipo TASK)

CampoTipoDescripción
type"TASK"Discriminador de tipo
resultobjectTipo de resultado enviado (code, label)
commentstring | nullComentario enviado junto con el resultado
requiresFutureScheduledAtbooleanIndica si el tipo de resultado enviado exige una fecha future_scheduled_at
externalOperatorIdstring | nullID externo del operador que envió el resultado
operatorobject | nullOperador que envió el resultado (externalId, name)

Errores

StatusDescripción
401Clave de API faltante o inválida
403La clave no tiene el permiso activity:view
400 / 403 / 404El x-project-id enviado no es válido — ver Errores de proyecto