Ajustes de Tareas
Límites más precisos y errores más claros en Proyectos y Tareas: descripción de tarea de hasta 400.000 caracteres, tarifa por hora de hasta 99.999.999,99, vínculos que respetan los scopes, id de la tarea en las notificaciones, borrados bloqueados por horas facturadas y facturación de horas idempotente. users:read pasa a ser un scope sensible.
30 de septiembre de 2026 — La revisión del módulo de Proyectos y Tareas afina varios contratos publicados en Proyectos y tareas. No se añade ni se retira ninguna operación, y no cambian parámetros ni códigos de respuesta; cambian límites, causas de error y el texto de los schemas. Quince operaciones quedan actualizadas, listadas al final.
- Descripción de la tarea —
POST /v1/tasksyPUT /v1/tasks/{task}declaranmaxLength: 400000endescription. Por encima, la llamada devuelve 422parameter_invalid_value. Entre 100.001 y 400.000 caracteres medidos sigue devolviendo 422task_description_too_large. El saneado neutraliza como texto las etiquetas no permitidas y ya no trunca el documento. - Tarifa por hora del proyecto —
billing_hourly_rateenPUT /v1/projects/{project}admite como máximo 99.999.999,99, de modo que el impuesto de una hora siempre cabe en una línea de factura. - Entidades vinculadas y scopes —
GET /v1/tasks/{task}/entity-linksyPOST /v1/tasks/{task}/entity-linksincluyen el resumen de una entidad vinculada solo si la credencial tiene el scope de lectura del recurso al que pertenece (por ejemploinvoices:readpara una factura). Sin él, el vínculo se devuelve igualmente, conavailable: falseysummary: null, para poder quitarlo. entity_iden las notificaciones —GET /v1/notificationsdevuelve, conentity_type=task, el UUID de la tarea enentity_id, listo paraGET /v1/tasks/{task}. Antes era siemprenull.users:reades sensible — da acceso al directorio completo de la empresa, con los emails. Revisa las claves y las apps OAuth que lo piden; consulta Scopes y permisos.- Borrar con horas facturadas — borrar una tarea (
DELETE /v1/tasks/{task}), un proyecto (DELETE /v1/projects/{project}) o una selección (POST /v1/tasks/bulk-delete) que tenga horas facturadas devuelve 422task_time_entry_invoiced. En una selección no se borra nada. Borra antes la factura. - Facturar el tiempo es idempotente —
POST /v1/projects/{project}/time-invoicesresponde 409idempotency_key_reusedsi se reenvía unbatch_idcon una petición distinta, y 409idempotency_key_in_usemientras la primera sigue en curso. La misma petición devuelve la misma factura. Si el importe de una línea no cabe en la factura, esta operación y su vista previa devuelven 422task_time_not_invoiceable. - Scopes de importar, exportar y resumir — la descripción de
POST /v1/projects/{project}/tasks/import,GET /v1/projects/{project}/tasks/exportyGET /v1/projects/{project}/time-summaryindica ahora qué scopes exigen (solo los de proyectos). - Ids en los borrados — las respuestas
deleted: truedevuelven el id canónico en minúsculas.
Códigos de error: task_description_too_large,
task_time_entry_invoiced,
task_time_not_invoiceable,
idempotency_key_reused y
idempotency_key_in_use.
Endpoints actualizados15
| Endpoint | Descripción |
|---|---|
POST/v1/tasks | Crear una tarea |
PUT/v1/tasks/{task} | Actualizar una tarea |
POST/v1/tasks/bulk-delete | Eliminación masiva de tareas |
DEL/v1/tasks/{task} | Eliminar una tarea |
GET/v1/tasks/{task}/entity-links | Listar vínculos de tarea con entidades |
POST/v1/tasks/{task}/entity-links | Vincular una tarea a una entidad |
GET/v1/projects/{project} | Obtener un proyecto |
PUT/v1/projects/{project} | Actualizar un proyecto |
DEL/v1/projects/{project} | Eliminar un proyecto |
GET/v1/projects/{project}/tasks/export | Exportar las tareas de un proyecto |
POST/v1/projects/{project}/tasks/import | Importar tareas a un proyecto |
GET/v1/projects/{project}/time-summary | Obtener el resumen de tiempo de un proyecto |
POST/v1/projects/{project}/time-invoices/preview | Previsualizar la factura del tiempo de un proyecto |
POST/v1/projects/{project}/time-invoices | Facturar el tiempo de un proyecto |
GET/v1/notifications | Listar notificaciones |