Tracks
Task/goal の create/update/search/delete/bulk apply です。
進行中の作業は track endpoint で扱います。
Create a task
POST /v1/tracks
Authorization: Bearer <token>
Content-Type: application/json
{
"type": "task",
"title": "Review docs",
"scope": { "type": "personal" },
"task": { "status": "todo", "dueDate": "2026-06-05" }
}Create a goal
{
"type": "goal",
"title": "Ship documentation v1",
"scope": { "type": "projects", "ids": ["project-id"] },
"goal": { "status": "on_track", "progress": 40 }
}Search
Task filter には status, assignee, goalId, parentId, dependsOn, date ranges, doneAt ranges があります。Goal filter には status, progressMin, progressMax, date ranges があります。
type が task の場合、progressMin や progressMax のような goal-only filter は invalid です。type が goal の場合、assignee, goalId, parentId, dependsOn, doneAtFrom / doneAtTo のような task-only filter は invalid です。
POST /v1/tracks/search は search call として credit を消費します。Search result で対象を絞ってから、必要な track だけ個別に取得してください。
Bulk apply
{
"scope": { "type": "personal" },
"updateDrafts": [
{ "id": "t001", "title": "Task A", "task": { "status": "todo" } },
{ "id": "t002", "title": "Task B", "task": { "status": "todo", "dependsOn": ["t001"] } }
]
}非 UUID の draft ID は新規作成、UUID の draft ID は既存更新です。
updateDrafts では task または goal から type を推論します。両方を渡すと invalid です。New draft には title が必要です。UUID draft は省略 fields を維持します。