DocsAPI 文件Activities API
👤 全部

Activities API

活動(跑步紀錄)完整 API — CRUD、留言、反應、合併、串流。

GET /activities

取得活動列表。

Headers

Header必填
`x-api-key`API Key

Query Parameters

參數類型必填說明
`user_id`string使用者 ID
`page_size`int每頁數量(預設 20,最大 100)
`last_created_at`number分頁游標(epoch ms)
`start_date`string開始日期篩選
`end_date`string結束日期篩選

Response (200)

欄位類型說明
`activities`array活動列表
`count`number本頁數量
`page_size`number每頁數量

Activity 物件

欄位類型說明
`activity_id`string活動 ID
`user_id`string使用者 ID
`activity_type`string活動類型(`running`, `walking`, `cycling`, `strength` 等)
`running_type`stringAI 分類的跑步類型(見下方列表)
`distance`number距離(公尺)
`duration`number時間(秒)
`avg_pace`number平均配速(秒/公里)
`avg_hr`number平均心率(bpm)
`max_hr`number最大心率(bpm)
`calories`number消耗卡路里
`avg_cadence`number平均步頻(spm)
`elevation_gain`number累計爬升(公尺)
`start_time`number開始時間(epoch ms)
`end_time`number結束時間(epoch ms)
`source`string數據來源(`garmin`, `strava`, `apple_health`, `manual`)
`status`string狀態(`completed`, `scheduled`, `merged`)
`ai_summary`objectAI 分析摘要(如有)
`image_urls`array活動照片 URL 列表
`likes_count`number按讚數
`comments_count`number留言數
`created_at`number建立時間(epoch ms)

Running Type 列表

說明
`easy_run`輕鬆跑
`long_run`長距離跑
`tempo`節奏跑
`interval`間歇訓練
`race`比賽
`recovery`恢復跑
`fartlek`法特雷克
`hill`坡度訓練
`threshold`閾值跑
`warm_up`熱身
`cool_down`收操
`other`其他
Running type 由 AI 自動分類(`RunningTypeDetector`),不是使用者手動設定的。

GET /activities/{activity_id}

取得單筆活動完整資料。比列表回傳更多欄位。

額外欄位

欄位類型說明
`splits`array每公里分段數據
`hr_zones`object心率區間分布(Z1-Z5 時間百分比)
`laps`array圈數數據(Garmin)
`gps_data`objectGPS 路線數據

Split 物件

欄位類型說明
`distance`number距離(公尺)
`duration`number時間(秒)
`avg_pace`number配速(秒/公里)
`avg_hr`number平均心率

POST /activities

建立新活動。

Request Body

參數類型必填說明
`user_id`string使用者 ID
`activity_type`string活動類型
`distance`number距離(公尺)
`duration`number時間(秒)
`start_time`number開始時間(epoch ms)
`avg_hr`number平均心率
`max_hr`number最大心率
`avg_pace`number平均配速(秒/公里)
`calories`number卡路里
`source`string數據來源
`splits`array分段數據

Response (201)

{"activity_id": "abc123", "message": "Activity created"}


PUT /activities/{activity_id}

更新活動。Request body 同 POST,所有欄位為選填。


DELETE /activities/{activity_id}

刪除活動。

Response (200)

{"message": "Activity deleted"}


PATCH /activities/{activity_id}/review

教練標記活動為「已審閱」。


PUT /activities/{activity_id}/reschedule

重新安排計畫活動的日期。

Request Body

參數類型必填說明
`new_date`string新日期(YYYY-MM-DD)

PUT /activities/{scheduled_activity_id}/merge

合併計畫活動與實際活動。

Request Body

參數類型必填說明
`actual_activity_id`string實際完成的活動 ID

DELETE /activities/scheduled/cancel

取消計畫活動。


POST /activities/{activity_id}/comments

新增活動留言。

Request Body

參數類型必填說明
`content`string留言內容

GET /activities/{activity_id}/comments

取得活動留言列表。


DELETE /activities/{activity_id}/comments/{comment_id}

刪除留言。


POST /activities/{activity_id}/like

對活動按讚。

POST /activities/{activity_id}/unlike

取消按讚。


POST /activities/{activity_id}/reactions

新增表情反應。

Request Body

參數類型必填說明
`emoji`string表情符號(例如 `🔥`, `💪`, `👏`)

DELETE /activities/{activity_id}/reactions

移除表情反應。

GET /activities/{activity_id}/reactions

取得活動的所有表情反應。


GET /activities/streak

取得連續跑步天數。

Response (200)

{"current_streak": 7, "longest_streak": 30}