Papelera

Borrar una tarea no la destruye. Va a la papelera del proyecto, de donde se puede recuperar — o eliminar de verdad, que es una segunda decisión.

Qué hace DELETE /tasks

DELETE /api/v1/tasks/{taskId} es un borrado suave. La tarea desaparece de GET /tasks y su detalle pasa a responder 404, pero sigue existiendo con todo lo suyo: comentarios, historial y ficheros intactos. Sus subtareas se van con ella.

Si tu integración daba por hecho que ese 204 era definitivo, ahora hacen falta dos llamadas para que lo sea. A cambio, un script con un filtro mal escrito ya no es una pérdida de datos.

Ejemplo
TASK=9b2f6c3a-…

# A la papelera.
curl -X DELETE "$PLANELY_URL/api/v1/tasks/$TASK" \
  -H "Authorization: Bearer $PLANELY_API_KEY"

# Arrepentirse.
curl -X POST "$PLANELY_URL/api/v1/trash/$TASK/restore" \
  -H "Authorization: Bearer $PLANELY_API_KEY"

# O no: esto ya no se deshace.
curl -X DELETE "$PLANELY_URL/api/v1/trash/$TASK" \
  -H "Authorization: Bearer $PLANELY_API_KEY"

Las subtareas van y vuelven juntas

  • Al tirar una tarea madre, sus subtareas caen con ella y se anotan con el mismo instante. La papelera lista solo la madre, con trashedSubtasks diciendo cuántas la acompañan.
  • Al restaurarla vuelven exactamente esas. Una subtarea que ya estuviera en la papelera por su cuenta se queda donde estaba: no se «recupera» algo que se tiró en otro momento y por otro motivo.
  • Restaurar una subtarea suelta cuya madre sigue en la papelera responde 403. Restaura antes la madre.

Eliminar de verdad

DELETE /api/v1/trash/{taskId} destruye la tarea, sus subtareas, sus comentarios, su historial y sus ficheros del almacenamiento. No hay vuelta atrás y no queda rastro salvo lo que otras tareas ya hubieran registrado.

Solo alcanza a lo que ya está en la papelera: una tarea viva responde 404. Y no existe un «vaciar la papelera» de una sola llamada, también a propósito — si quieres vaciarla, recórrela y ve borrando, que es una decisión por tarea.

Ver la papelera

GET/api/v1/trashPermiso: Eliminar tareas

Lo tirado, de lo más reciente a lo más antiguo. Solo entradas raíz: una subtarea que se fue con su madre se cuenta en trashedSubtasks, no se lista aparte.

Request
curl https://planely.dev/api/v1/trash \
  -H "Authorization: Bearer $PLANELY_API_KEY"
200 OK
{
  "tasks": [
    {
      "id": "9b2f…",
      "title": "Preparar la demo",
      "status": "todo",
      "priority": "high",
      "parentId": null,
      "trashedSubtasks": 2,
      "deletedAt": "2026-07-26T18:20:05.000Z",
      "createdAt": "2026-07-25T09:12:44.000Z"
    }
  ]
}

Restaurar una tarea

POST/api/v1/trash/{taskId}/restorePermiso: Eliminar tareas

La devuelve a su sitio junto con las subtareas que se fueron con ella, y responde con la tarea en su forma normal.

  • Vuelven exactamente las subtareas que entraron en el mismo momento: una que ya estuviera en la papelera de antes se queda donde está.
  • Restaurar una subtarea cuya tarea madre sigue en la papelera responde 403 — volvería colgando de nada. Restaura antes la madre.
Request
curl -X POST https://planely.dev/api/v1/trash/9b2f6c3a-…/restore \
  -H "Authorization: Bearer $PLANELY_API_KEY"
200 OK
{ "task": { "id": "9b2f…", "title": "Preparar la demo",} }

Eliminar definitivamente

DELETE/api/v1/trash/{taskId}Permiso: Eliminar tareas

Esto sí borra: la tarea, sus subtareas, sus comentarios, su historial y sus ficheros del almacenamiento. No se puede deshacer.

  • Solo alcanza a lo que ya está en la papelera; una tarea viva responde 404. Destruir algo son siempre dos llamadas deliberadas.
  • No hay un «vaciar la papelera» de una sola llamada, a propósito: recórrela y elimina lo que quieras eliminar.
Request
curl -X DELETE https://planely.dev/api/v1/trash/9b2f6c3a-… \
  -H "Authorization: Bearer $PLANELY_API_KEY"
204 No Content
(sin cuerpo)