Los temporizadores de tareas en Zoho Desk te permiten registrar el tiempo dedicado a tareas individuales, y la API de Zoho Desk expone dos endpoints distintos para recuperar esos datos: uno para el registro completo del temporizador y otro para el temporizador que está en ejecución en ese momento.
Por qué esto es importante
Cuando necesitas auditar el tiempo registrado en tareas de soporte, crear paneles de informes personalizados o integrar los datos de tiempo de tareas de Zoho Desk en una herramienta de facturación de terceros, debes saber qué endpoint de la API llamar y cómo autenticarte correctamente. Existen dos operaciones de lectura independientes: obtener el registro completo del temporizador de una tarea y obtener únicamente el temporizador *activo* (en ejecución en ese momento). Elegir el incorrecto puede devolver datos vacíos o una respuesta engañosa.
---
Paso a paso
Paso 1. Confirma que tus scopes de OAuth incluyen permisos de tareas.
Antes de realizar cualquier solicitud de temporizador, verifica que tu token OAuth de Zoho Desk se haya emitido con al menos Desk.tasks.READ (o Desk.tasks.ALL) en su lista de scopes. Sin esto, la API rechazará tu solicitud con un error de autorización. [5]
Paso 2. Obtén un token de acceso válido.
Tu integración debe disponer de un token de acceso vigente para Zoho Desk. Si el token ha expirado, usa tu refresh token almacenado para llamar al endpoint de tokens de Zoho con tu clientid, clientsecret y granttype: refreshtoken. Una respuesta exitosa incluirá un nuevo accesstoken y un valor actualizado de tokenexpires_at. [6]
Paso 3. Identifica el taskId que deseas consultar.
Cada solicitud de temporizador está vinculada a una tarea específica. Necesitas el identificador único de la tarea (p. ej., "1234567890") antes de llamar a cualquiera de los endpoints. Este identificador se devuelve normalmente al crear o listar tareas a través de la API de Zoho Desk.
Paso 4. Recupera el registro completo del temporizador de una tarea.
Envía una solicitud GET a:
GET /api/v1/tasks/{taskId}/timer
Reemplaza {taskId} con el identificador real de tu tarea. Se puede pasar un diccionario de parámetros de consulta opcional (p) para cualquier argumento de filtro o paginación admitido. En Python, esto se ve así: [1]
response = desk_api.get_task_timer(taskId="1234567890")
Esto devuelve el registro completo del temporizador asociado a esa tarea, incluidas las entradas de tiempo históricas.
Paso 5. Recupera únicamente el temporizador activo en ese momento (si existe).
Si solo necesitas saber si un temporizador está *en ejecución ahora mismo* en una tarea, llama en su lugar al endpoint dedicado al temporizador activo:
GET /api/v1/tasks/{taskId}/activeTimer
Nuevamente, sustituye tu taskId real. En Python: [2]
response = desk_api.get_active_timer_for_a_2(taskId="1234567890")
Este endpoint devuelve datos únicamente cuando hay un temporizador en ejecución activa en la tarea especificada. Si no hay ningún temporizador en curso, espera una respuesta vacía o nula.
Paso 6. (Opcional) Actualiza el temporizador si es necesario.
Si los datos del temporizador recuperados necesitan corrección —por ejemplo, ajustar el tiempo registrado—, puedes realizar una solicitud PATCH a la misma ruta /api/v1/tasks/{taskId}/timer, proporcionando un diccionario data con los campos a actualizar. [7]
Paso 7. Inicializa el cliente de la API de Desk con el org_id correcto.
Zoho Desk está limitado al ámbito de la organización. Al construir el cliente de la API, asegúrate de que orgid esté configurado. Si falta, el sistema puede detectarlo automáticamente llamando al endpoint de lista de organizaciones y guardando el primer id devuelto. Sin un orgid válido, todas las llamadas a la API de Desk —incluidas las solicitudes de temporizador— fallarán. [4]
---
Errores comunes
- Llamar al endpoint incorrecto.
GET /api/v1/tasks/{taskId}/timerdevuelve el historial completo del temporizador, mientras queGET /api/v1/tasks/{taskId}/activeTimerdevuelve únicamente un temporizador activo en curso. [1][2] Si esperas el estado en tiempo real pero llamas al primero, es posible que veas datos desactualizados. - Token de acceso ausente o expirado. El flujo de renovación del token debe completarse correctamente —concretamente, la respuesta debe contener
access_token— antes de intentar cualquier llamada a la API de Desk. Una clave de error en la respuesta de renovación significa que el token no se renovó. [6] - Scopes de OAuth insuficientes. Solicitar datos del temporizador requiere permisos de lectura a nivel de tarea (
Desk.tasks.READoDesk.tasks.ALL). Los scopes se establecen en el momento de la autorización OAuth y no se pueden añadir de forma retroactiva sin volver a autorizar. [5] orgidausente. Zoho Desk requiere un ID de organización en cada solicitud. Si tu registro de conexión no tiene almacenadodeskorg_id, el cliente debe resolverlo antes de continuar. [4]
---
Qué verificar
- Cobertura de scopes: Confirma que
Desk.tasks.READoDesk.tasks.ALLaparece en tu configuración activa de scopes OAuth. [5] - Validez del token: Verifica que
tokenexpiresatsea una fecha futura; si no lo es, activa una renovación antes de llamar a los endpoints del temporizador. [6] - Selección correcta del endpoint: Usa
/activeTimerpara comprobaciones de estado en tiempo real y/timerpara registros históricos completos, y confirma que eltaskIden la ruta corresponde a la tarea que deseas consultar. [1][2]
---
*Beam Help es un recurso de soporte experto independiente para productos Zoho — no somos el soporte oficial de Zoho. Para problemas a nivel de plataforma, consulta siempre la documentación oficial de la API de Zoho Desk.*