跳至內容

本機 API 伺服器

Mindwtr 內建選用的本機 REST API 伺服器,供指令碼及整合使用。在桌面版中,它於應用程式 binary 內執行,並採用與應用程式相同的本機儲存路徑。儲存庫也提供 Bun 輔助工具,供開發及進階指令碼使用。


桌面版開關

桌面版組建無須執行原始碼,即可啟動本機 REST API:

  • 開啟設定 -> 進階
  • 啟用本機 API 伺服器
  • 保留預設 port 3456,或選擇其他 localhost port。
  • 從同一張設定卡複製產生的 bearer token。

應用程式只繫結至 127.0.0.1,每項要求都必須包含 Authorization: Bearer <token>。行動版 binary 不提供本機 REST API 介面。

開發輔助工具

若要在桌面版之外執行 API,或指定明確的檔案,仍可使用儲存庫輔助工具。


快速開始

從桌面版應用程式:

text
Settings -> Advanced -> Enable local API server

預設 URL:

text
http://127.0.0.1:3456

從儲存庫根目錄使用 Bun:

bash
bun install
bun run mindwtr:api -- --port 4317 --host 127.0.0.1

選項

選項預設值說明
--port <n>4317伺服器 port
--host <host>127.0.0.1繫結位址
--data <path>平台預設值覆寫 data.json 位置
--db <path>平台預設值覆寫 mindwtr.db 位置

環境變數

變數說明
MINDWTR_DATA覆寫 data.json 位置(若省略 --data
MINDWTR_DB_PATH覆寫 mindwtr.db 位置(若省略 --db
MINDWTR_API_TOKEN僅供 Bun 輔助工具使用:若設定,要求必須包含 Authorization: Bearer <token>

API 預設會使用 Mindwtr 的平台路徑解析 data.jsonmindwtr.db(Linux 上優先使用 XDG data)。


驗證

桌面版的本機 API 要求一律必須使用設定 -> 進階中顯示的 bearer token:

Authorization: Bearer <token>

Bun 輔助工具只有在設定 MINDWTR_API_TOKEN 時才要求 token。


端點

方法端點說明
GET/health健康狀態檢查 → { ok: true }
GET/tasks列出任務
GET/tasks?status=next依狀態篩選
GET/tasks?query=@work搜尋任務
GET/tasks?all=1包含已完成/已封存項目
GET/tasks?deleted=1包含已軟刪除項目
POST/tasks建立任務
GET/tasks/:id取得單一任務
PATCH/tasks/:id更新任務
DELETE/tasks/:id軟刪除任務
POST/tasks/:id/complete標記為已完成
POST/tasks/:id/archive標記為已封存
POST/tasks/:id/restore還原已軟刪除的任務
GET/projects列出專案
GET/areas列出領域
GET/v1/areas領域的相容性別名
GET/search?query=...搜尋任務及專案

回應結構

Task(部分)

json
{
  "id": "uuid",
  "title": "Task title",
  "status": "inbox",
  "projectId": "uuid",
  "dueDate": "2026-01-25T12:00:00.000Z",
  "tags": ["#work"],
  "contexts": ["@email"],
  "createdAt": "2026-01-25T10:00:00.000Z",
  "updatedAt": "2026-01-25T10:00:00.000Z",
  "deletedAt": null
}

Project(部分)

json
{
  "id": "uuid",
  "title": "Project name",
  "status": "active",
  "color": "#94a3b8",
  "createdAt": "2026-01-25T10:00:00.000Z",
  "updatedAt": "2026-01-25T10:00:00.000Z",
  "deletedAt": null
}

Area

json
{
  "id": "uuid",
  "name": "Area name",
  "color": "#94a3b8",
  "icon": "briefcase",
  "order": 0,
  "createdAt": "2026-01-25T10:00:00.000Z",
  "updatedAt": "2026-01-25T10:00:00.000Z"
}

建立任務的 Body

json
{
  "input": "Call Alice",
  "title": "Alternative title",
  "props": {
    "status": "next",
    "contexts": ["@phone"],
    "tags": ["#errands"]
  }
}

桌面版有 title 時會使用它,否則使用 input,並套用明確的 props。Bun 輔助工具還會對 input 執行 parseQuickAdd


範例

列出下一步行動:

bash
curl -s 'http://127.0.0.1:3456/tasks?status=next' \
  -H 'Authorization: Bearer <token>' | jq .

使用明確的 props 建立:

bash
curl -s -X POST 'http://127.0.0.1:3456/tasks' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{"title":"Call Alice","props":{"status":"next","contexts":["@phone"],"tags":["#errands"]}}' | jq .

完成任務:

bash
curl -s -X POST "http://127.0.0.1:4317/tasks/$TASK_ID/complete" | jq .

CLI 工具

也提供較簡單的命令列介面:

bash
# Add a task
bun mindwtr:cli -- add "Call mom @phone #family"

# List active tasks
bun mindwtr:cli -- list

# List with filters
bun mindwtr:cli -- list --status next --query "due:<=7d"

# Read or update a task
bun mindwtr:cli -- get <taskId>
bun mindwtr:cli -- update <taskId> '{"status":"next"}'

# Complete a task
bun mindwtr:cli -- complete <taskId>

# Archive, delete, or restore
bun mindwtr:cli -- archive <taskId>
bun mindwtr:cli -- delete <taskId>
bun mindwtr:cli -- restore <taskId>

# Search
bun mindwtr:cli -- search "@work"

# List projects
bun mindwtr:cli -- projects

CLI 參考

命令範例說明
addmindwtr:cli -- add "Call mom @phone"使用快速新增解析
listmindwtr:cli -- list --status next支援 --all--deleted--query
getmindwtr:cli -- get <taskId>輸出完整任務 JSON
updatemindwtr:cli -- update <taskId> '{"status":"next"}'套用 JSON patch
searchmindwtr:cli -- search "@work due:<=7d"搜尋任務/專案
completemindwtr:cli -- complete <taskId>將任務標記為已完成
archivemindwtr:cli -- archive <taskId>將任務標記為已封存
deletemindwtr:cli -- delete <taskId>軟刪除任務
restoremindwtr:cli -- restore <taskId>還原已刪除的任務
projectsmindwtr:cli -- projects列出使用中的專案

安全性注意事項

  • 伺服器僅供在 127.0.0.1(localhost)上執行。除非瞭解相關風險,否則不要公開。
  • 桌面版 API 存取需要「設定」中產生的 bearer token。請將該 token 保密。
  • 若需要遠端存取 Bun 輔助工具,請設定 MINDWTR_API_TOKEN,並將伺服器置於經過驗證的 reverse proxy 後方。

另請參閱

Mindwtr 是免費、開放原始碼且在地優先的應用程式。
Getting Things Done 與 GTD 是 David Allen Company 的註冊商標。Mindwtr 與 David Allen Company 無關,亦未獲其背書或贊助。