Description
When moving a subtask to a section via POST /api/v1/tasks/{task_id}/move with {"section_id": "..."}, the API silently clears the task's parent_id, promoting the subtask to a top-level task. The response returns 200 with no warning that the parent relationship was removed.
Steps to reproduce
- Create a parent task and a subtask under it (
parent_id set).
- Call
POST /api/v1/tasks/{subtask_id}/move with body {"section_id": "<section_id>"}.
- Fetch the task again:
parent_id is now null.
Expected behavior
Moving a subtask between sections should preserve its parent_id, or the API should return an error/warning if detaching the parent is intentional.
Actual behavior
The subtask is silently detached and becomes a top-level task in the target section.
Additional context
- Moving with
{"parent_id": "<parent_id>"} on the same endpoint does re-attach the task, so the move endpoint clearly understands parentage. Only the section_id variant drops it.
- The task update endpoint (
POST /api/v1/tasks/{task_id}) rejects parent_id as an unsupported field, so the move endpoint is currently the only way to restore the relationship after it is lost.
- Observed against REST API v1 on 2026-09-22.
Description
When moving a subtask to a section via
POST /api/v1/tasks/{task_id}/movewith{"section_id": "..."}, the API silently clears the task'sparent_id, promoting the subtask to a top-level task. The response returns 200 with no warning that the parent relationship was removed.Steps to reproduce
parent_idset).POST /api/v1/tasks/{subtask_id}/movewith body{"section_id": "<section_id>"}.parent_idis nownull.Expected behavior
Moving a subtask between sections should preserve its
parent_id, or the API should return an error/warning if detaching the parent is intentional.Actual behavior
The subtask is silently detached and becomes a top-level task in the target section.
Additional context
{"parent_id": "<parent_id>"}on the same endpoint does re-attach the task, so the move endpoint clearly understands parentage. Only thesection_idvariant drops it.POST /api/v1/tasks/{task_id}) rejectsparent_idas an unsupported field, so the move endpoint is currently the only way to restore the relationship after it is lost.