Referencia · tasks
Modificar tarea
/tasks/{id} Requiere el scope tasks:write.
Las mismas tareas que GET (mismo 404 opaco): en un proyecto compartido cualquier miembro edita las visibles. En un proyecto archivado responde 409 project_archived. El cuerpo debe traer al menos un campo (422 empty_patch si no).
assigneeId asigna la tarea a una persona con acceso a su proyecto compartido (null la deja sin asignar). Se aplica en la misma operación que el resto de campos: si falla (422 assignee_not_member, task_not_shared, task_private), no se aplica nada.
status: done fija completedAt y progress: 100 en la primera compleción; si la tarea es recurrente, el servidor crea la siguiente ocurrencia. Volver a backlog/in_progress limpia completedAt.
PATCH no borra notes ni deadline. projectId: null deja la tarea sin proyecto y recurrence: null hace que deje de repetirse (la serie se para; la tarea se conserva). Un patrón nuevo rige desde la siguiente ocurrencia: la tarea actual conserva su fecha. La recurrencia exige deadline y una tarea no completada (422 si no).
Parámetros de ruta
idstringobligatorioId de la tarea.
Cuerpo de la petición
JSON, obligatorio. Modelo TaskPatch.
titlestringnotesstringprojectIdstring | nulldeadlinenumberdeadlineStartnumberdeadlineTypeDeadlineTypeGranularidad del deadline (
deadline= fin o fecha exacta,deadlineStart= inicio opcional).priorityTaskPriorityprogressnumberstatusTaskStatusrecurrenceRecurrenceInput | nullRegla de recurrencia al crear o en PATCH. Campos no listados →
422 unknown_field. Los valores deben ser enteros;dayOfMonthadmite -1 (último día) o 1..31, nunca 0.Campos de RecurrenceInput
frequencyRecurrenceFrequencyobligatoriointervalintegerdayOfWeekintegerdayOfMonthinteger
No admite otros campos: uno desconocido responde
422.assigneeIdstring | nullId de la cuenta (
Person.id) de alguien con acceso al proyecto compartido de la tarea;null= sin asignar.
No admite otros campos: uno desconocido responde 422.
Respuestas
200
La tarea tras aplicar el patch.
dataTaskobligatorioTarea. Todos los campos están siempre presentes; los sin valor van como
null(nunca se omiten). Timestamps en epoch milisegundos UTC.Campos de Task
idstringobligatoriotitlestringobligatoriostatusTaskStatusobligatoriopriorityTaskPriorityobligatorioprogressnumber | nullobligatorionotesstring | nullobligatorioprojectIdstring | nullobligatoriodeadlinenumber | nullobligatorioFin del intervalo o fecha exacta (epoch ms).
deadlineStartnumber | nullobligatorioInicio del intervalo (epoch ms).
deadlineTypeDeadlineType | nullobligatorioGranularidad del deadline (
deadline= fin o fecha exacta,deadlineStart= inicio opcional).recurrenceRecurrence | nullobligatorioSolo la lleva la ocurrencia pendiente de una serie; las completadas van con
null.Campos de Recurrence
frequencyRecurrenceFrequencyobligatoriointervalnumberdayOfWeeknumber0 = domingo … 6 = sábado.
dayOfMonthnumber-1 = último día del mes; si no, 1..31.
seriesIdstring | nullobligatorioSerie recurrente a la que pertenece (pendiente o completada);
nullsi nunca se repitió.createdAtnumberobligatorioupdatedAtnumberobligatoriocompletedAtnumber | nullobligatoriocreatedByPersonobligatorioCuenta de SecretarIA. Sin correo a propósito.
Campos de Person
idstringobligatorionamestring | nullobligatorioNombre de pila;
nullsi la cuenta ya no existe.
assigneePerson | nullobligatorioPersona asignada en un proyecto compartido;
null= sin asignar.Campos de Person
idstringobligatorionamestring | nullobligatorioNombre de pila;
nullsi la cuenta ya no existe.
401
Key ausente, malformada, inexistente, revocada, expirada o API deshabilitada (invalid_api_key, indistinguibles a propósito).
403
Scope insuficiente (insufficient_scope), recurso sin acceso (forbidden) o sincronización de calendario de una tarea que creó otra persona (calendar_creator_only).
404
Recurso inexistente, de otro usuario o id malformado (not_found, indistinguibles a propósito).
409
El proyecto de la tarea está archivado y es de solo lectura (project_archived). No se aplicó nada.
422
Entrada inválida (invalid_json, unknown_field, missing_field, invalid_field, invalid_query_param, empty_patch, body_too_large — cuerpos de más de 64 KB —, invalid_idempotency_key, validation_error, y al asignar assignee_not_member, task_not_shared, task_private).
429
Límite superado (rate_limited) — 60 req/min (ráfagas de 20) y 5.000 req/día por key. Reintentar tras Retry-After.
500
Error interno (internal_error). Cuerpo opaco a propósito; reintentar con backoff.