Factuarea APIDevelopers
Añadido

Proyectos y tareas

El módulo de tareas llega a la API: proyectos con su tablero, tareas, etiquetas, temporizadores, usuarios, notificaciones y la agenda — 80 endpoints nuevos, 21 eventos, 80 tools MCP y cuatro acciones de automatización.

Factuarea ahora gestiona también el trabajo, no solo las facturas, y todo el módulo de tareas está en el contrato v1: proyectos con un tablero de columnas, tareas vinculadas a tus facturas, presupuestos y contactos, tiempo imputado y facturado, una agenda y los eventos para seguirlo todo. Son 80 endpoints nuevos bajo siete recursos, incluidos en todos los planes. Empieza por la guía de proyectos y tareas.

  • Siete recursos — /v1/projects (22 endpoints: proyectos, columnas del tablero, campos personalizados, la exportación e importación de tareas en JSON, el resumen de tiempo y la factura de las horas facturables), /v1/tasks y sus subrecursos (45: búsqueda, posición en el tablero, comentarios, relaciones, etiquetas, vínculos, adjuntos, enlaces de subida, imputaciones de tiempo, el temporizador y el registro de actividad), /v1/task-labels (5), /v1/task-timers (2), /v1/users (2), /v1/notifications (3) y /v1/agenda (1). Todos los endpoints se listan más abajo.
  • Nueve scopes nuevos — projects:read|write|delete, tasks:read|write|delete, users:read y notifications:read|write. projects:* y tasks:* pertenecen al módulo tasks: una key con esos scopes para una empresa sin él se rechaza con scope_not_allowed_by_plan. users:read y notifications:* son transversales. Los scopes projects:delete y tasks:delete son solo de API key: un consentimiento OAuth nunca los concede. Nueve operaciones son irreversibles y exigen una Idempotency-Key; consulta Scopes y operaciones irreversibles.
  • Borrar una columna con tareas — DELETE /v1/projects/{project}/columns/{column} admite un parámetro de query move_to_column_id: la columna del mismo proyecto que recibe las tareas, en su orden, en la misma transacción. Sin él, una columna con tareas devuelve 409 column_has_tasks.
  • Una tarea que nace ya vinculada — POST /v1/tasks acepta un entity_link con el type y el id de una factura, un presupuesto, un contacto o cualquier otra entidad vinculable, y la vincula en la misma transacción. Si la entidad no existe o es de otra empresa, la llamada devuelve 404 linked_entity_not_found y la tarea no se crea.
  • tasks_count en las etiquetas de tarea — cada etiqueta del catálogo indica cuántas tareas la llevan, incluidas las archivadas.
  • Claves de tarea — DEV-12 se resuelve con POST /v1/tasks/find-by-key, y una clave sigue funcionando después de que la tarea pase a otro proyecto o de que su proyecto cambie de clave.
  • El tiempo imputado no es el registro de jornada — un task_time_entry es tiempo dedicado a una tarea, con sus propios scopes tasks:* y eventos task_time_entry.*. Nunca aparece en el registro del control horario (/v1/time-entries). Consulta Tiempo imputado a tareas.
  • 21 eventos nuevos — task.* (created, updated, deleted, status_changed, completed, assigned, unassigned, moved, due_soon y overdue), task_comment.*, task_time_entry.* y project.*. Completar una tarea emite task.status_changed y task.completed, y este último es un subconjunto del primero. Consulta Eventos.
  • 80 tools MCP nuevas — 22 de proyectos, 52 de tareas, 2 de usuarios, 3 de notificaciones y 1 de la agenda, al compás de la API. El catálogo tiene ahora 552 tools; las de borrado son solo API key. Consulta el catálogo de tools.
  • CLI — factuarea projects, tasks, task-labels, task-timers, users, notifications y agenda, con sus scopes y confirmaciones. Consulta la guía del CLI.
  • Automatizaciones — los 21 eventos son disparadores nuevos, y cuatro acciones nuevas crean y cambian tareas: create_task, change_task_status, assign_task y add_task_comment. En una regla de cartera (cartera), de ellas solo se admite create_task. Consulta Automatizaciones.
  • Códigos de error — 46 códigos nuevos en el grupo Tasks, cada uno con su causa y qué hacer, y 18 en Task Integrations para los flujos que viven en la app. Consulta Códigos de error de Tareas.
  • Disponibilidad — el módulo tasks está incluido en todos los planes. Las integraciones de tareas con forjas de código y herramientas de chat, los feeds iCal y el tablero público existen solo en la app; las integraciones necesitan el plan Empresario o Enterprise.

Valida los tipos de acción con una lista abierta. El enumerado type de una acción de automatización pasa de ocho a doce valores: create_task, change_task_status, assign_task y add_task_comment son nuevos. Un cliente que valide actions[].type contra una lista cerrada debe añadirlos. create_calendar_event se queda en el vocabulario para que las versiones antiguas de las reglas se sigan leyendo, pero está retirada: el calendario al que alimentaba ya no existe, ningún adaptador la ejecuta y su paso no produce ningún efecto. Usa create_task en su lugar.

Nuevos endpoints80

EndpointDescripción
GET/v1/projectsListar proyectos
POST/v1/projectsCrear un proyecto
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}/columnsListar columnas de proyecto
GET/v1/projects/{project}/custom-fieldsListar campos personalizados de proyecto
GET/v1/projects/{project}/tasks/exportExportar las tareas de un proyecto
GET/v1/projects/{project}/time-summaryObtener el resumen de tiempo de un proyecto
POST/v1/projects/{project}/archiveArchivar un proyecto
POST/v1/projects/{project}/columnsCrear una columna de proyecto
DEL/v1/projects/{project}/columns/{column}Eliminar una columna de proyecto
PUT/v1/projects/{project}/columns/{column}Actualizar una columna de proyecto
PUT/v1/projects/{project}/columns/reorderReordenar columnas de proyecto
POST/v1/projects/{project}/custom-fieldsCrear un campo personalizado de proyecto
DEL/v1/projects/{project}/custom-fields/{field}Eliminar un campo personalizado de proyecto
PUT/v1/projects/{project}/custom-fields/{field}Actualizar un campo personalizado de proyecto
POST/v1/projects/{project}/tasks/importImportar tareas a un proyecto
POST/v1/projects/{project}/time-invoicesFacturar el tiempo de un proyecto
POST/v1/projects/{project}/time-invoices/previewPrevisualizar la factura del tiempo de un proyecto
POST/v1/projects/{project}/unarchiveDesarchivar un proyecto
POST/v1/projects/find-by-keyBuscar un proyecto por clave
GET/v1/tasksBuscar tareas
POST/v1/tasksCrear una tarea
GET/v1/tasks/{task}Obtener una tarea
PUT/v1/tasks/{task}Actualizar una tarea
DEL/v1/tasks/{task}Eliminar una tarea
GET/v1/tasks/{task}/activitiesListar la actividad de una tarea
GET/v1/tasks/{task}/attachmentsListar adjuntos de tarea
GET/v1/tasks/{task}/attachments/{attachment}Obtener un adjunto de tarea
GET/v1/tasks/{task}/attachments/{attachment}/downloadDescargar un adjunto de tarea
GET/v1/tasks/{task}/commentsListar comentarios de tarea
GET/v1/tasks/{task}/entity-linksListar vínculos de tarea con entidades
GET/v1/tasks/{task}/external-linksListar enlaces externos de tarea
GET/v1/tasks/{task}/relationsListar relaciones de tarea
GET/v1/tasks/{task}/time-entriesListar imputaciones de tiempo de tarea
GET/v1/tasks/{task}/time-entries/{time_entry}Obtener una imputación de tiempo de tarea
GET/v1/tasks/linkedListar tareas vinculadas a una entidad
POST/v1/tasks/{task}/assignAsignar una tarea
POST/v1/tasks/{task}/attachmentsSubir un adjunto de tarea
DEL/v1/tasks/{task}/attachments/{attachment}Eliminar un adjunto de tarea
POST/v1/tasks/{task}/commentsCrear un comentario de tarea
DEL/v1/tasks/{task}/comments/{comment}Eliminar un comentario de tarea
PUT/v1/tasks/{task}/comments/{comment}Actualizar un comentario de tarea
PUT/v1/tasks/{task}/custom-fields/{field}Establecer el valor de un campo personalizado de tarea
POST/v1/tasks/{task}/duplicateDuplicar una tarea
POST/v1/tasks/{task}/entity-linksVincular una tarea a una entidad
DEL/v1/tasks/{task}/entity-links/{link}Desvincular una tarea de una entidad
POST/v1/tasks/{task}/external-linksCrear un enlace externo de tarea
DEL/v1/tasks/{task}/external-links/{link}Eliminar un enlace externo de tarea
POST/v1/tasks/{task}/labelsAsignar una etiqueta a una tarea
DEL/v1/tasks/{task}/labels/{label}Quitar una etiqueta de una tarea
POST/v1/tasks/{task}/moveMover una tarea a otro proyecto
POST/v1/tasks/{task}/relationsCrear una relación de tarea
DEL/v1/tasks/{task}/relations/{relation}Eliminar una relación de tarea
POST/v1/tasks/{task}/repositionRecolocar una tarea
POST/v1/tasks/{task}/statusCambiar el estado de una tarea
POST/v1/tasks/{task}/time-entriesCrear una imputación de tiempo de tarea
DEL/v1/tasks/{task}/time-entries/{time_entry}Eliminar una imputación de tiempo de tarea
PUT/v1/tasks/{task}/time-entries/{time_entry}Actualizar una imputación de tiempo de tarea
POST/v1/tasks/{task}/timer/startIniciar un temporizador de tarea
POST/v1/tasks/{task}/unassignDesasignar una tarea
POST/v1/tasks/{task}/upload-linksCrear un enlace de subida de tarea
POST/v1/tasks/bulk-deleteEliminación masiva de tareas
POST/v1/tasks/bulk-statusCambiar el estado de tareas en bloque
POST/v1/tasks/bulk-updateActualización masiva de tareas
POST/v1/tasks/find-by-keyBuscar una tarea por clave
GET/v1/task-labelsListar etiquetas de tarea
POST/v1/task-labelsCrear una etiqueta de tarea
GET/v1/task-labels/{label}Obtener una etiqueta de tarea
PUT/v1/task-labels/{label}Actualizar una etiqueta de tarea
DEL/v1/task-labels/{label}Eliminar una etiqueta de tarea
GET/v1/task-timers/currentObtener el temporizador de tarea en marcha
POST/v1/task-timers/stopDetener el temporizador de tarea en marcha
GET/v1/usersListar usuarios
GET/v1/users/meObtener el usuario actual
GET/v1/notificationsListar notificaciones
POST/v1/notifications/{notification}/readMarcar una notificación como leída
POST/v1/notifications/mark-all-readMarcar todas las notificaciones como leídas
GET/v1/agendaListar elementos de la agenda