{"openapi":"3.1.0","info":{"title":"tennnzo 個人 API","version":"2026-10-07","summary":"社群帳號艦隊的審稿、排程與 Agent 協作平台","description":"Agent API（/api/agent/v1，Agent 金鑰 tnz_…）讓 Agent 讀人設、交稿、回報排程與成效；個人 API（/api/user/v1，個人金鑰 tnu_…）讓成員用自己的助理或工具做和 dashboard 一樣的事。兩種金鑰也都能用 MCP：POST https://api.tennnzo.com/api/mcp。使用方法見 https://openapi.tennnzo.com 。"},"servers":[{"url":"https://api.tennnzo.com","description":"任何 tennnzo 網域都可以呼叫；組織與工作區由金鑰決定，不看網址"}],"tags":[{"name":"user-me","x-displayName":"身分","description":"金鑰是誰、在哪個組織、什麼角色。"},{"name":"user-review","x-displayName":"審稿","description":"審稿佇列、單篇、審稿動作。"},{"name":"user-published","x-displayName":"已發布與報告","description":"已發布的貼文與報告。"},{"name":"user-decisions","x-displayName":"待裁決","description":"Agency 與管理員：看待裁決、裁決、回答選項題。"},{"name":"user-tasks","x-displayName":"Agent 看板","description":"Agency 與管理員：看板卡、交辦、確認、退回重做。"},{"name":"user-today","x-displayName":"今日與成效","description":"Agency 與管理員：今日摘要與成效數字。"},{"name":"user-keys","x-displayName":"金鑰管理","description":"平台管理員：這個組織所有金鑰、撤銷。"},{"name":"user-media","x-displayName":"圖片連結","description":"佇列與單篇回傳的簽名圖片連結。"}],"x-tagGroups":[{"name":"個人 API","tags":["user-me","user-review","user-published","user-decisions","user-tasks","user-today","user-keys","user-media"]}],"paths":{"/api/user/v1/me":{"get":{"tags":["user-me"],"operationId":"user_whoami","summary":"我是誰","description":"金鑰主人、組織、角色與可見的專案。個人金鑰在組織層級運作，不綁工作區。\n\n可用角色：客戶、Agency、平台管理員。","responses":{"200":{"description":"身分與組織。","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/User401"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["client","agency","admin"],"x-mcp-tool":"whoami"}},"/api/user/v1/review":{"get":{"tags":["user-review"],"operationId":"user_review_queue","summary":"審稿佇列","description":"等審的貼文。客戶只有「待客戶審」（`client_review`）；Agency 與管理員看全部階段。每篇的 `images`（圖片與影片，`kind` 區分）帶 15 分鐘有效的簽名連結；影片連結支援 Range。\n\n可用角色：客戶、Agency、平台管理員。","parameters":[{"name":"stage","in":"query","required":false,"description":"只看某個階段（客戶只有 client_review）","schema":{"type":"string","enum":["draft","internal_review","client_review","approved","scheduled"]}},{"name":"limit","in":"query","required":false,"description":"","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"`posts` 陣列；每篇的 `images[]` 有 `id`、`caption`、`kind`、`mime_type`、`duration_ms`、`thumb_url`、`url`。","content":{"application/json":{"schema":{"type":"object"},"example":{"posts":[{"id":"e6baef30-…","images":[{"id":"…","caption":null,"thumb_url":"https://api.tennnzo.com/api/user/v1/media/…?k=…&size=thumb&exp=…&sig=…","url":"https://…"}]}]}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["client","agency","admin"],"x-mcp-tool":"review_queue"}},"/api/user/v1/posts/published":{"get":{"tags":["user-published"],"operationId":"user_published_posts","summary":"已發布的貼文","description":"已發布的貼文，新的在前；用 `before` 分頁。\n\n可用角色：客戶、Agency、平台管理員。","parameters":[{"name":"limit","in":"query","required":false,"description":"","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"before","in":"query","required":false,"description":"分頁：這個時間之前發布的","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2})$"}},{"name":"persona_id","in":"query","required":false,"description":"","schema":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"}}],"responses":{"200":{"description":"`posts` 陣列。","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["client","agency","admin"],"x-mcp-tool":"published_posts"}},"/api/user/v1/posts/{id}":{"get":{"tags":["user-review"],"operationId":"user_get_post","summary":"看一篇","description":"單篇貼文與相關脈絡（含簽名圖片連結）。看不到的貼文一律 404。\n\n可用角色：客戶、Agency、平台管理員。","parameters":[{"name":"id","in":"path","required":true,"description":"貼文 id（審稿佇列給的）","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"貼文內容；`images[]` 同審稿佇列。","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/User401"},"404":{"$ref":"#/components/responses/User404"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["client","agency","admin"],"x-mcp-tool":"get_post"}},"/api/user/v1/posts/{id}/transition":{"post":{"tags":["user-review"],"operationId":"user_review_post","summary":"審稿／排程","description":"規則和 dashboard 的按鈕一樣。客戶：`approve`、`request_changes`、`reject`、`request_rewrite`（後三者要 `comment`），只能在「待客戶審」、專案開著客戶審稿、你有審稿權時。Agency／管理員另有 `submit`、`cancel_rewrite`、`schedule`／`reschedule`（要未來的 `scheduled_for`）、`unschedule`。\n\n可用角色：客戶、Agency、平台管理員（客戶要有審稿權）。","parameters":[{"name":"id","in":"path","required":true,"description":"貼文 id","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"description":"客戶只能用 approve、request_changes、reject、request_rewrite（不收 scheduled_for）。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffPostMove"},"example":{"action":"request_changes","comment":"開頭太像上一篇，換個角度"}}}},"responses":{"200":{"description":"移動後的狀態。","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"404":{"$ref":"#/components/responses/User404"},"413":{"$ref":"#/components/responses/User413"},"422":{"$ref":"#/components/responses/User422"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["client","agency","admin"],"x-mcp-tool":"review_post"}},"/api/user/v1/reports":{"get":{"tags":["user-published"],"operationId":"user_list_reports","summary":"報告清單","description":"客戶只看得到已發給客戶的報告。\n\n可用角色：客戶、Agency、平台管理員。","parameters":[{"name":"limit","in":"query","required":false,"description":"","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"`reports` 陣列。","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["client","agency","admin"],"x-mcp-tool":"list_reports"}},"/api/user/v1/reports/{id}":{"get":{"tags":["user-published"],"operationId":"user_get_report","summary":"讀一份報告","description":"報告內容。\n\n可用角色：客戶、Agency、平台管理員。","parameters":[{"name":"id","in":"path","required":true,"description":"報告 id","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"報告。","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/User401"},"404":{"$ref":"#/components/responses/User404"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["client","agency","admin"],"x-mcp-tool":"get_report"}},"/api/user/v1/decisions":{"get":{"tags":["user-decisions"],"operationId":"user_list_decisions","summary":"待裁決","description":"預設列未裁決的。\n\n可用角色：Agency、平台管理員。","parameters":[{"name":"status","in":"query","required":false,"description":"預設 open（未裁決）","schema":{"type":"string","enum":["open","resolved","dismissed","decided"]}},{"name":"limit","in":"query","required":false,"description":"","schema":{"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"`items` 陣列。","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["agency","admin"],"x-mcp-tool":"list_decisions"}},"/api/user/v1/decisions/{id}/resolve":{"post":{"tags":["user-decisions"],"operationId":"user_decide_issue_resolve","summary":"裁決：已處理","description":"把待裁決標成已處理，可附備註。\n\n可用角色：Agency、平台管理員。","parameters":[{"name":"id","in":"path","required":true,"description":"待裁決的 id","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecideNote"},"example":{"note":"已和客戶確認"}}}},"responses":{"200":{"description":"裁決後的狀態。","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"404":{"$ref":"#/components/responses/User404"},"413":{"$ref":"#/components/responses/User413"},"422":{"$ref":"#/components/responses/User422"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["agency","admin"],"x-mcp-tool":"decide_issue"}},"/api/user/v1/decisions/{id}/dismiss":{"post":{"tags":["user-decisions"],"operationId":"user_decide_issue_dismiss","summary":"裁決：不處理","description":"標成不處理，`note` 必填（原因）。\n\n可用角色：Agency、平台管理員。","parameters":[{"name":"id","in":"path","required":true,"description":"待裁決的 id","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecideNote"},"example":{"note":"這張不需要換"}}}},"responses":{"200":{"description":"裁決後的狀態。","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"404":{"$ref":"#/components/responses/User404"},"413":{"$ref":"#/components/responses/User413"},"422":{"$ref":"#/components/responses/User422"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["agency","admin"],"x-mcp-tool":"decide_issue"}},"/api/user/v1/decisions/{id}/choose":{"post":{"tags":["user-decisions"],"operationId":"user_choose_issue","summary":"回答選項題","description":"選選項 `keys`，或都不是時寫 `other`（兩者不能一起給）。\n\n可用角色：Agency、平台管理員。","parameters":[{"name":"id","in":"path","required":true,"description":"待裁決的 id","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChooseInput"},"example":{"keys":["tabby"]}}}},"responses":{"200":{"description":"裁決後的狀態。","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"404":{"$ref":"#/components/responses/User404"},"413":{"$ref":"#/components/responses/User413"},"422":{"$ref":"#/components/responses/User422"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["agency","admin"],"x-mcp-tool":"choose_issue"}},"/api/user/v1/tasks":{"get":{"tags":["user-tasks"],"operationId":"user_list_tasks","summary":"Agent 看板","description":"看板卡；預設進行中的三種（待領取、進行中、待確認）。\n\n可用角色：Agency、平台管理員。","parameters":[{"name":"status","in":"query","required":false,"description":"逗號分隔的狀態：open、in_progress、awaiting_confirmation、done、failed、cancelled","schema":{"type":"string","example":"open,in_progress"}},{"name":"limit","in":"query","required":false,"description":"最多幾張（1–200）","schema":{"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"`tasks` 陣列。","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["agency","admin"],"x-mcp-tool":"list_tasks"},"post":{"tags":["user-tasks"],"operationId":"user_open_task","summary":"交辦新任務","description":"開一張卡給 Agent（不指定 `agent_id`＝誰先領誰做）。`target_type` 與 `target_id` 要一起給。\n\n可用角色：Agency、平台管理員。","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenTaskInput"},"example":{"kind":"change_bio","title":"TW-T014 改 bio","detail":"改成「下班後的咖啡地圖」"}}}},"responses":{"200":{"description":"已存在（重送或同名），沒有新建","content":{"application/json":{"schema":{"type":"object"}}}},"201":{"description":"新卡回 201，已有同一張回 200。","content":{"application/json":{"schema":{"type":"object"},"example":{"task":{"id":"…"},"created":true}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"413":{"$ref":"#/components/responses/User413"},"422":{"$ref":"#/components/responses/User422"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["agency","admin"],"x-mcp-tool":"open_task"}},"/api/user/v1/tasks/{id}/confirm":{"post":{"tags":["user-tasks"],"operationId":"user_confirm_task","summary":"確認完成","description":"確認 Agent 交回來的卡。\n\n可用角色：Agency、平台管理員。","parameters":[{"name":"id","in":"path","required":true,"description":"卡的 id","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskNoteInput"},"example":{}}}},"responses":{"200":{"description":"更新後的卡。","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"404":{"$ref":"#/components/responses/User404"},"413":{"$ref":"#/components/responses/User413"},"422":{"$ref":"#/components/responses/User422"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["agency","admin"],"x-mcp-tool":"confirm_task"}},"/api/user/v1/tasks/{id}/reopen":{"post":{"tags":["user-tasks"],"operationId":"user_reopen_task","summary":"退回重做","description":"退回 Agent 重做，`note` 必填（哪裡不對）。\n\n可用角色：Agency、平台管理員。","parameters":[{"name":"id","in":"path","required":true,"description":"卡的 id","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskNoteInput"},"example":{"note":"顏色不對，要偏暖"}}}},"responses":{"200":{"description":"更新後的卡。","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"404":{"$ref":"#/components/responses/User404"},"413":{"$ref":"#/components/responses/User413"},"422":{"$ref":"#/components/responses/User422"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["agency","admin"],"x-mcp-tool":"reopen_task"}},"/api/user/v1/today":{"get":{"tags":["user-today"],"operationId":"user_today","summary":"今日摘要","description":"今天需要處理的事與排程概況。\n\n可用角色：Agency、平台管理員。","responses":{"200":{"description":"今日摘要。","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["agency","admin"],"x-mcp-tool":"today"}},"/api/user/v1/metrics":{"get":{"tags":["user-today"],"operationId":"user_metrics","summary":"成效","description":"各帳號的成效數字，可依平台篩選。\n\n可用角色：Agency、平台管理員。","parameters":[{"name":"platform","in":"query","required":false,"description":"","schema":{"type":"string","enum":["threads","tiktok","x","facebook","instagram","reddit"]}},{"name":"limit","in":"query","required":false,"description":"","schema":{"type":"integer","minimum":1,"maximum":500}}],"responses":{"200":{"description":"成效。","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/User400"},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["agency","admin"],"x-mcp-tool":"metrics"}},"/api/user/v1/admin/keys":{"get":{"tags":["user-keys"],"operationId":"user_list_keys","summary":"金鑰清單","description":"這個組織所有成員與 Agent 的金鑰（只有前綴與使用時間，看不到金鑰本身）。\n\n可用角色：平台管理員。","responses":{"200":{"description":"金鑰清單。","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["admin"],"x-mcp-tool":"list_keys"}},"/api/user/v1/admin/keys/{kind}/{id}/revoke":{"post":{"tags":["user-keys"],"operationId":"user_revoke_key","summary":"撤銷金鑰","description":"撤銷任何成員或 Agent 的金鑰。立即生效、不能恢復。\n\n可用角色：平台管理員。","parameters":[{"name":"kind","in":"path","required":true,"description":"`user` 成員的個人金鑰／`agent` Agent 金鑰","schema":{"type":"string","enum":["user","agent"]}},{"name":"id","in":"path","required":true,"description":"金鑰 id","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"撤銷結果。","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/User401"},"403":{"$ref":"#/components/responses/User403"},"404":{"$ref":"#/components/responses/User404"},"422":{"$ref":"#/components/responses/User422"},"429":{"$ref":"#/components/responses/User429"},"500":{"$ref":"#/components/responses/User500"}},"security":[{"userKey":[]}],"x-roles":["admin"],"x-mcp-tool":"revoke_key"}},"/api/user/v1/media/{id}":{"get":{"tags":["user-media"],"operationId":"user_get_media","summary":"圖片（簽名連結）","description":"審稿佇列與單篇回傳的 `thumb_url`／`url`。不用帶金鑰，15 分鐘內有效；金鑰撤銷後也立刻失效。照原樣使用，不要自己組。","parameters":[{"name":"id","in":"path","required":true,"description":"圖片 id","schema":{"type":"string","format":"uuid"}},{"name":"k","in":"query","required":true,"description":"金鑰 id","schema":{"type":"string"}},{"name":"size","in":"query","required":false,"description":"`thumb` 縮圖／`full` 原圖","schema":{"type":"string","enum":["thumb","full"]}},{"name":"exp","in":"query","required":true,"description":"到期時間（Unix 秒）","schema":{"type":"integer"}},{"name":"sig","in":"query","required":true,"description":"簽名","schema":{"type":"string"}}],"responses":{"200":{"description":"圖檔本身（image/*）。","content":{"image/*":{"schema":{"type":"string","contentMediaType":"image/*"}}}},"400":{"$ref":"#/components/responses/User400"},"404":{"$ref":"#/components/responses/User404"},"500":{"$ref":"#/components/responses/User500"}},"security":[]}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","request_id"],"properties":{"code":{"type":"string","description":"錯誤碼（見各 API 的錯誤表）"},"message":{"type":"string","description":"原因，給呼叫的人或 Agent 讀"},"request_id":{"type":"string","description":"請求 id（也在 X-Request-Id 標頭）"}}}},"example":{"error":{"code":"rejected","message":"the draft is waiting for a rewrite","request_id":"req_Xk2…"}}},"StaffPostMove":{"type":"object","properties":{"action":{"type":"string","enum":["submit","approve","request_changes","reject","request_rewrite","cancel_rewrite","schedule","reschedule","unschedule"]},"comment":{"description":"意見（退回、要求修改、要求重寫時必填）","type":"string","maxLength":2000},"scheduled_for":{"description":"schedule／reschedule 用：發出時間（ISO，帶時區）","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2})$"}},"required":["action"]},"DecideNote":{"type":"object","properties":{"note":{"description":"備註；不處理時必填原因","type":"string","maxLength":500}}},"ChooseInput":{"type":"object","properties":{"keys":{"description":"選中的選項 key","maxItems":12,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"other":{"description":"都不是：寫下答案（不能和 keys 一起給）","type":"string","maxLength":500}}},"OpenTaskInput":{"type":"object","properties":{"agent_id":{"description":"交給哪個 Agent；不給＝誰先領誰做","type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"},"kind":{"type":"string","enum":["write_posts","rewrite_post","change_avatar","change_bio","delete_post","pause_account","resume_account","export_data","other"]},"title":{"type":"string","minLength":1,"maxLength":200},"detail":{"type":"string","maxLength":4000},"target_type":{"type":"string","enum":["slot","persona","post","issue"]},"target_id":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"},"due_at":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2})$"}},"required":["kind","title"]},"TaskNoteInput":{"type":"object","properties":{"note":{"type":"string","maxLength":2000}}}},"responses":{"User400":{"description":"`invalid_request`：參數格式不對（message 會指出哪個欄位）","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"invalid_request","message":"參數格式不對（message 會指出哪個欄位）","request_id":"req_Xk2…"}}}}},"User401":{"description":"`unauthorized`：沒帶金鑰、金鑰錯誤或已撤銷、Agent 金鑰的工作區已封存、還沒完成首次登入設定、已不是組織成員","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"unauthorized","message":"沒帶金鑰、金鑰錯誤或已撤銷、Agent 金鑰的工作區已封存、還沒完成首次登入設定、已不是組織成員","request_id":"req_Xk2…"}}}}},"User403":{"description":"`forbidden`：你的角色不能做這件事","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"forbidden","message":"你的角色不能做這件事","request_id":"req_Xk2…"}}}}},"User404":{"description":"`not_found`：找不到，或你看不到（不會說是哪一種）","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"not_found","message":"找不到，或你看不到（不會說是哪一種）","request_id":"req_Xk2…"}}}}},"User413":{"description":"`payload_too_large`：請求內容太大","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"payload_too_large","message":"請求內容太大","request_id":"req_Xk2…"}}}}},"User422":{"description":"`rejected`：規則不允許（message 是原因）","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"rejected","message":"規則不允許（message 是原因）","request_id":"req_Xk2…"}}}}},"User429":{"description":"`rate_limited`：太快了，看 Retry-After 秒數再試","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"幾秒後再試","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"rate_limited","message":"太快了，看 Retry-After 秒數再試","request_id":"req_Xk2…"}}}}},"User500":{"description":"`internal`：伺服器錯誤","headers":{"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"internal","message":"伺服器錯誤","request_id":"req_Xk2…"}}}}}},"parameters":{"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"description":"1–200 個可見 ASCII 字元。同一個 Agent 24 小時內：同內容重送回第一次的結果（標頭 Idempotent-Replayed: true），不同內容 422 idempotency_mismatch，第一次還在處理 409。只有成功（2xx）才佔用這個鍵。建議值：<run_id>-<編號>-<序號>。","schema":{"type":"string","minLength":1,"maxLength":200}}},"securitySchemes":{"agentKey":{"type":"http","scheme":"bearer","description":"Agent 金鑰：Authorization: Bearer tnz_<8 碼>_<43 碼>"},"userKey":{"type":"http","scheme":"bearer","description":"個人金鑰：Authorization: Bearer tnu_<8 碼>_<43 碼>"}}}}