{"openapi":"3.1.0","info":{"description":"IELTS Buddy 对外数据接口。所有路径、鉴权和请求结构均由运行时能力注册表生成。个人数据接口使用通过 /api/v1/agent-bindings 账号绑定流程签发的 Bearer Token。","title":"IELTS Buddy Agent API","version":"1.0.0"},"servers":[{"url":"https://work.ieltsbuddy.igopx.cn"}],"tags":[{"description":"课程路线、课程章节与学习进度。","name":"课程学习"},{"description":"用户文件以及不同学习资源之间的关联。","name":"资源与文件"},{"description":"个人词库、内置词书与复习进度。","name":"词汇"},{"description":"公开备考文章与预测命中数据。","name":"备考内容"},{"description":"题库检索、题目读取与个人练习记录。","name":"题库与练习"},{"description":"听力精听素材与已提交听写记录。","name":"听力精听"},{"description":"练习和模考的作答证据与复盘快照。","name":"练习复盘"},{"description":"现成模考试卷检索与精确组卷。","name":"模考"},{"description":"个人口语素材、题目关联与练习历史。","name":"口语素材"},{"description":"已有写作练习、作文版本与历史批改。","name":"写作记录"},{"description":"学习画像、能力证据与跨产品学习足迹。","name":"学习者数据"},{"description":"可增量同步的权威学习事件。","name":"学习事件"},{"description":"学习计划、任务变更与微信任务提醒。","name":"学习计划"}],"paths":{"/api/v1/agent/capabilities/ielts_learning_route_read":{"post":{"description":"Read the IELTS full-course learning route as factual data, grouped by subject and unit, with course-level progress. Use view=progress for a compact summary. The Tool does not choose or recommend the next course.","operationId":"ielts_learning_route_read","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"default":200,"description":"Maximum route course nodes to return.","type":"integer","minimum":1,"maximum":500},"subject":{"default":"","description":"Optional IELTS subject filter. Empty returns the full-course route.","type":"string","enum":["","listening","reading","writing","speaking"]},"view":{"default":"route","description":"Full ordered route nodes, or a compact progress-only view.","type":"string","enum":["route","progress"]}},"required":["limit","subject","view"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read learning route","tags":["课程学习"],"x-capability-id":"learning_route.read","x-required-scopes":["courses:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_courses_search_sections":{"post":{"description":"Search published course video sections by subject, literal keyword, or literal course tag query. The server returns factual section candidates and a stable contentRef; the local Agent decides whether one fits the learner.","operationId":"ielts_courses_search_sections","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"description":"Optional exact course id returned by the learning route.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"limit":{"default":4,"description":"Maximum number of exact course sections to return.","type":"integer","minimum":1,"maximum":6},"page":{"default":1,"description":"Result page. Use nextPage from the preceding search.","type":"integer","minimum":1,"maximum":1000},"search":{"default":"","description":"Optional course, section, or video keyword.","type":"string"},"subject":{"default":"","description":"Optional IELTS subject filter.","type":"string","enum":["","listening","reading","speaking","writing","grammar"]},"tagQueries":{"default":[],"description":"Literal course labels or user-mentioned learning terms used to match course tags.","maxItems":6,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}},"required":["limit","page","search","subject","tagQueries"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Search course sections","tags":["课程学习"],"x-capability-id":"courses.search_sections","x-required-scopes":["courses:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_assets_search":{"post":{"description":"Search the current user's active file and document assets by title or indexed content. Results are compact and paginated, and include a stable asset contentRef. This is the asset module's only catalog-search interface.","operationId":"ielts_assets_search","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"default":8,"description":"Maximum assets to return, 1-12.","type":"integer","minimum":1,"maximum":12},"offset":{"default":0,"description":"Pagination offset.","type":"integer","minimum":0,"maximum":500},"query":{"default":"","description":"Optional asset title or content keyword.","type":"string"}},"required":["limit","offset","query"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Search user assets","tags":["资源与文件"],"x-capability-id":"assets.search","x-required-scopes":["resources:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_resources_related":{"post":{"description":"Find explicitly or structurally related resources from a stable contentRef, such as course-to-practice and prediction-to-question relationships. Resource discovery and full reads remain owned by each resource Domain.","operationId":"ielts_resources_related","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"contentRef":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"question_part"},"partId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","partId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"mock_paper"},"paperId":{"type":"string","minLength":1,"maxLength":160}},"required":["kind","paperId"],"additionalProperties":false},{"type":"object","properties":{"courseId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"kind":{"type":"string","const":"course_section"},"sectionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["courseId","kind","sectionId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"listening_dictation"},"partId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","partId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"prep_guide"},"slug":{"type":"string","minLength":1,"maxLength":200}},"required":["kind","slug"],"additionalProperties":false},{"type":"object","properties":{"hitId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"kind":{"type":"string","const":"prediction_hit"}},"required":["hitId","kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"speaking_material"},"materialId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","materialId"],"additionalProperties":false},{"type":"object","properties":{"assetId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"kind":{"type":"string","const":"asset"}},"required":["assetId","kind"],"additionalProperties":false}],"description":"Stable contentRef returned by the owning resource Domain."},"limit":{"default":12,"type":"integer","minimum":1,"maximum":30},"relationTypes":{"default":[],"description":"Optional relation types to include.","maxItems":12,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}},"required":["contentRef","limit","relationTypes"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Find related learning resources","tags":["资源与文件"],"x-capability-id":"resources.related","x-required-scopes":["resources:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_vocabulary_personal_search":{"post":{"description":"Search the current user's personal vocabulary book by phrase, meaning, usage, or learning state. Results are compact and paginated. This is the personal vocabulary module's only catalog-search interface.","operationId":"ielts_vocabulary_personal_search","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"default":20,"type":"integer","minimum":1,"maximum":50},"learningState":{"default":"","type":"string","enum":["","new","learning","review","relearning","mastered"]},"offset":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"query":{"default":"","description":"Search phrase, meaning, or usage.","type":"string"}},"required":["limit","learningState","offset","query"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Search personal vocabulary","tags":["词汇"],"x-capability-id":"vocabulary.personal.search","x-required-scopes":["vocabulary:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_vocabulary_personal_export":{"post":{"description":"Export personal vocabulary content as JSON or CSV for a local Agent or user-owned backup. Review progress is intentionally excluded.","operationId":"ielts_vocabulary_personal_export","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"default":"json","description":"Portable vocabulary content format.","type":"string","enum":["csv","json"]},"limit":{"default":500,"description":"Maximum entries in this export page.","type":"integer","minimum":1,"maximum":1000},"offset":{"default":0,"description":"Pagination offset.","type":"integer","minimum":0,"maximum":100000}},"required":["format","limit","offset"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Export personal vocabulary","tags":["词汇"],"x-capability-id":"vocabulary.personal.export","x-required-scopes":["vocabulary:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_vocabulary_personal_progress":{"post":{"description":"Read spaced-repetition progress from the current user's personal vocabulary book.","operationId":"ielts_vocabulary_personal_progress","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"default":12,"description":"Maximum recent/due items to return.","type":"integer","minimum":1,"maximum":50}},"required":["limit"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read personal vocabulary progress","tags":["词汇"],"x-capability-id":"vocabulary.personal.progress","x-required-scopes":["vocabulary:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_vocabulary_personal_prepare_cards":{"post":{"description":"Prepare flashcards from the current user's personal vocabulary book.","operationId":"ielts_vocabulary_personal_prepare_cards","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"excludeRecentlyReviewedDays":{"default":3,"description":"Avoid words reviewed in the last N days when possible.","type":"integer","minimum":0,"maximum":90},"includeMastered":{"default":false,"description":"Whether mastered words may be selected.","type":"boolean"},"learningState":{"default":"","description":"Optional learning-state filter.","type":"string","enum":["","new","learning","review","relearning","mastered"]},"limit":{"default":8,"description":"Number of local flashcards to prepare.","type":"integer","minimum":1,"maximum":30},"mode":{"default":"mixed","description":"Card selection strategy.","type":"string","enum":["mixed","due","new","weak","random"]},"query":{"default":"","description":"Optional phrase, meaning, or usage search filter.","type":"string"}},"required":["excludeRecentlyReviewedDays","includeMastered","learningState","limit","mode","query"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Prepare personal vocabulary cards","tags":["词汇"],"x-capability-id":"vocabulary.personal.prepare_cards","x-required-scopes":["vocabulary:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_vocabulary_personal_add":{"post":{"description":"Add or enrich up to 100 words directly in the current user's personal vocabulary book while recording their source.","operationId":"ielts_vocabulary_personal_add","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"default":"","description":"Optional source sentence or context.","type":"string"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"example":{"default":"","description":"Example sentence.","type":"string"},"expansion":{"default":[],"description":"Synonyms, collocations, or related expressions.","maxItems":30,"type":"array","items":{"type":"string","minLength":1}},"meaning":{"default":"","description":"Chinese or English meaning.","type":"string"},"partOfSpeech":{"default":"","description":"Part of speech.","type":"string"},"phrase":{"type":"string","minLength":1,"maxLength":300,"description":"Word or phrase."},"usage":{"default":"","description":"Usage note.","type":"string"}},"required":["example","expansion","meaning","partOfSpeech","phrase","usage"],"additionalProperties":false}},"sourceId":{"default":"","description":"Stable source record id when available.","type":"string"},"sourceTitle":{"default":"","description":"Human-readable source title.","type":"string"},"sourceType":{"default":"agent","description":"Origin such as agent, reading_lexicon, practice, or course.","type":"string","minLength":1,"maxLength":80}},"required":["context","items","sourceId","sourceTitle","sourceType"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Add personal vocabulary","tags":["词汇"],"x-capability-id":"vocabulary.personal.add","x-required-scopes":["vocabulary:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_vocabulary_personal_import":{"post":{"description":"Import up to 500 personal vocabulary entries from JSON or CSV. Imported entries start with fresh learning progress and keep an import source record.","operationId":"ielts_vocabulary_personal_import","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","minLength":1,"maxLength":2000000,"description":"UTF-8 JSON or CSV text. Import carries vocabulary content only, never review progress."},"format":{"type":"string","enum":["csv","json"],"description":"Format of content."},"sourceId":{"default":"","description":"Stable import id when available; otherwise the service derives one from the content.","type":"string"},"sourceTitle":{"default":"","description":"Human-readable filename or import title.","type":"string"}},"required":["content","format","sourceId","sourceTitle"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Import personal vocabulary","tags":["词汇"],"x-capability-id":"vocabulary.personal.import","x-required-scopes":["vocabulary:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_vocabulary_personal_update":{"post":{"description":"Update the editable content of one personal vocabulary entry. Learning state changes only through recorded review results.","operationId":"ielts_vocabulary_personal_update","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"example":{"type":"string"},"expansion":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1}},"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"meaning":{"type":"string"},"partOfSpeech":{"type":"string"},"phrase":{"type":"string","minLength":1,"maxLength":300},"usage":{"type":"string"}},"required":["id"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Update personal vocabulary","tags":["词汇"],"x-capability-id":"vocabulary.personal.update","x-required-scopes":["vocabulary:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_vocabulary_personal_record_review":{"post":{"description":"Record one review result for a personal vocabulary entry and update spaced-repetition progress.","operationId":"ielts_vocabulary_personal_record_review","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Personal vocabulary item id."},"rating":{"type":"string","enum":["again","hard","good"],"description":"Review rating for spaced repetition."},"responseMs":{"description":"Optional answer latency in milliseconds.","type":"integer","minimum":0,"maximum":300000}},"required":["id","rating"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Record personal vocabulary review","tags":["词汇"],"x-capability-id":"vocabulary.personal.record_review","x-required-scopes":["vocabulary:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_vocabulary_personal_delete":{"post":{"description":"Delete one entry from the current user's personal vocabulary book.","operationId":"ielts_vocabulary_personal_delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Delete personal vocabulary","tags":["词汇"],"x-capability-id":"vocabulary.personal.delete","x-required-scopes":["vocabulary:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_vocabulary_builtin_progress":{"post":{"description":"Read compact progress statistics for an enabled built-in IELTS vocabulary set, or per-word progress for up to 50 exact entry ids.","operationId":"ielts_vocabulary_builtin_progress","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"entryIds":{"default":[],"description":"Exact built-in word ids whose per-word progress is needed. Empty returns summary statistics only.","maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"setId":{"default":"core","description":"Built-in wordbook id.","type":"string","enum":["core","listening","reading"]}},"required":["entryIds","setId"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read built-in vocabulary progress","tags":["词汇"],"x-capability-id":"vocabulary.builtin.progress","x-required-scopes":["vocabulary:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_vocabulary_builtin_prepare_cards":{"post":{"description":"Prepare flashcards from an enabled licensed built-in IELTS vocabulary set.","operationId":"ielts_vocabulary_builtin_prepare_cards","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"excludeRecentlyReviewedDays":{"default":3,"description":"Avoid words reviewed in the last N days when possible.","type":"integer","minimum":0,"maximum":90},"groupId":{"default":"","description":"Optional built-in wordbook group id.","type":"string"},"includeMastered":{"default":false,"description":"Whether mastered words may be selected.","type":"boolean"},"learningState":{"default":"","description":"Optional learning-state filter.","type":"string","enum":["","new","learning","review","relearning","mastered"]},"limit":{"default":8,"description":"Number of local flashcards to prepare.","type":"integer","minimum":1,"maximum":30},"mode":{"default":"mixed","description":"Card selection strategy.","type":"string","enum":["mixed","due","new","weak","random"]},"query":{"default":"","description":"Optional phrase, meaning, or usage search filter.","type":"string"},"setId":{"default":"core","description":"Built-in wordbook id.","type":"string","enum":["core","listening","reading"]}},"required":["excludeRecentlyReviewedDays","groupId","includeMastered","learningState","limit","mode","query","setId"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Prepare built-in vocabulary cards","tags":["词汇"],"x-capability-id":"vocabulary.builtin.prepare_cards","x-required-scopes":["vocabulary:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_vocabulary_builtin_record_review":{"post":{"description":"Record one review result for an enabled licensed built-in vocabulary entry.","operationId":"ielts_vocabulary_builtin_record_review","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"entryId":{"type":"string","minLength":1,"maxLength":80,"description":"Built-in word id."},"rating":{"type":"string","enum":["again","hard","good"],"description":"Review rating for spaced repetition."},"responseMs":{"description":"Optional answer latency in milliseconds.","type":"integer","minimum":0,"maximum":300000},"setId":{"default":"core","description":"Built-in wordbook id.","type":"string","enum":["core","listening","reading"]}},"required":["entryId","rating","setId"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Record built-in vocabulary review","tags":["词汇"],"x-capability-id":"vocabulary.builtin.record_review","x-required-scopes":["vocabulary:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_prep_search_guides":{"post":{"description":"Search published IELTS Buddy prep guides by keyword or tag. Results are paginated and include a stable prep_guide contentRef. This is the prep-guide module's only search interface.","operationId":"ielts_prep_search_guides","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"default":8,"description":"Result limit, 1-8.","type":"integer","minimum":1,"maximum":8},"offset":{"default":0,"description":"Pagination offset.","type":"integer","minimum":0,"maximum":9007199254740991},"query":{"default":"","description":"Keyword or title.","type":"string"},"tag":{"default":"","description":"Optional published guide tag or category.","type":"string"}},"required":["limit","offset","query","tag"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[],"summary":"Search IELTS knowledge articles","tags":["备考内容"],"x-capability-id":"prep.search_guides","x-required-scopes":["prep:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_prep_read_guide":{"post":{"description":"Read one full published IELTS Buddy knowledge article by slug.","operationId":"ielts_prep_read_guide","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"maxChars":{"default":12000,"description":"Maximum article characters to return.","type":"integer","minimum":1000,"maximum":30000},"offset":{"default":0,"description":"Character offset returned by the preceding read.","type":"integer","minimum":0,"maximum":1000000},"slug":{"type":"string","minLength":1,"description":"Published prep guide slug."}},"required":["maxChars","offset","slug"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[],"summary":"Read IELTS knowledge article","tags":["备考内容"],"x-capability-id":"prep.read_guide","x-required-scopes":["prep:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_prediction_search_hits":{"post":{"description":"Search sourced IELTS prediction records and their possible matching questions by record kind, source, exact id, date, month, subject, or keyword. Results preserve source attribution, distinguish dated exam reports from rolling rankings, and include practice targets only for candidates already in the question bank.","operationId":"ielts_prediction_search_hits","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reportIds":{"default":[],"description":"Optional exact prediction-record ids returned by an earlier search.","maxItems":12,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"kind":{"default":"exam_report","description":"Prediction record kind: dated exam reports or a rolling ranking snapshot.","type":"string","enum":["exam_report","rolling_ranking"]},"limit":{"default":6,"description":"Result limit, 1-12.","type":"integer","minimum":1,"maximum":12},"offset":{"default":0,"description":"Pagination offset.","type":"integer","minimum":0,"maximum":9007199254740991},"query":{"default":"","description":"Optional recall, venue, source, or candidate-question keyword.","type":"string"},"source":{"default":"","description":"Optional prediction source slug, such as nine-score.","type":"string"},"subject":{"default":"","description":"Optional IELTS subject filter.","type":"string","enum":["","listening","reading","speaking","writing"]},"testDate":{"default":"","description":"Optional exam date in YYYY-MM-DD.","type":"string","pattern":"^(?:|\\d{4}-\\d{2}-\\d{2})$"},"testMonth":{"default":"","description":"Optional exam month in YYYY-MM; use it instead of one call per day.","type":"string","pattern":"^(?:|\\d{4}-(?:0[1-9]|1[0-2]))$"}},"required":["reportIds","kind","limit","offset","query","source","subject","testDate","testMonth"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[],"summary":"Search prediction records and candidates","tags":["备考内容"],"x-capability-id":"prediction.search_hits","x-required-scopes":["prep:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_practice_search_parts":{"post":{"description":"Search up to six compact IELTS Buddy question-bank candidates by subject, text, difficulty, exact tag ids, or literal tagQueries. Each result includes partId and a stable question_part contentRef. Source claims come only from origin fields; the server returns facts and the local Agent chooses the question.","operationId":"ielts_practice_search_parts","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"cursor":{"default":"","description":"Cursor returned by the previous practice.search_parts call.","type":"string"},"difficulty":{"default":"","description":"Practice difficulty filter.","type":"string","enum":["","基础","核心","冲刺"]},"excludePartIds":{"default":[],"description":"Part ids the local Agent has ruled out for this selection.","maxItems":30,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"includeCourseLinked":{"default":false,"description":"Whether to include course-linked parts.","type":"boolean"},"limit":{"default":6,"description":"Result limit, 1-6.","type":"integer","minimum":1,"maximum":6},"preferUnseen":{"default":false,"description":"Whether the caller explicitly wants unseen parts before previously attempted parts.","type":"boolean"},"search":{"default":"","description":"Optional free-text title search.","type":"string"},"sort":{"default":"catalog","description":"Catalog order or latest-first order chosen by the caller.","type":"string","enum":["catalog","latest"]},"subject":{"default":"","description":"Practice subject.","type":"string","enum":["","listening","reading","speaking","writing"]},"tagIds":{"default":[],"description":"Exact taxonomy tag ids resolved by practice.list_taxonomy.","maxItems":12,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"tagQueries":{"default":[],"description":"Literal user-mentioned taxonomy terms. The Tool resolves them to exact tag ids before filtering.","maxItems":6,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}},"required":["cursor","difficulty","excludePartIds","includeCourseLinked","limit","preferUnseen","search","sort","subject","tagIds","tagQueries"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Search practice parts","tags":["题库与练习"],"x-capability-id":"practice.search_parts","x-required-scopes":["question_bank:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_dictation_search_materials":{"post":{"description":"Search exact listening materials ready for sentence-level dictation by title, difficulty, and literal taxonomy terms. Results are paginated and include factual tags, segment count, and a stable listening_dictation contentRef. The local Agent chooses the material.","operationId":"ielts_dictation_search_materials","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"difficulty":{"default":"","description":"Optional dictation difficulty filter.","type":"string","enum":["","基础","核心","冲刺"]},"limit":{"default":4,"description":"Maximum number of dictation-ready listening materials to return.","type":"integer","minimum":1,"maximum":6},"offset":{"default":0,"description":"Pagination offset returned by the preceding search.","type":"integer","minimum":0,"maximum":100000},"search":{"default":"","description":"Optional listening-material title keyword.","type":"string"},"tagQueries":{"default":[],"description":"Literal user-mentioned taxonomy terms such as a topic, Cambridge book, test set, or Part label.","maxItems":6,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}},"required":["difficulty","limit","offset","search","tagQueries"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Search dictation materials","tags":["听力精听"],"x-capability-id":"dictation.search_materials","x-required-scopes":["question_bank:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_dictation_recent_attempts":{"post":{"description":"List the authenticated user's submitted listening-dictation attempts in reverse chronological order. Results contain factual scores, missed-word counts, exact attempt ids, and optional Part entry links; this operation does not diagnose mistakes.","operationId":"ielts_dictation_recent_attempts","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"default":12,"description":"Maximum number of submitted dictation attempts to return.","type":"integer","minimum":1,"maximum":30},"offset":{"default":0,"description":"Pagination offset returned by the preceding call.","type":"integer","minimum":0,"maximum":10000},"partId":{"description":"Optional exact listening Part id used to filter attempts.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["limit","offset"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read recent dictation attempts","tags":["听力精听"],"x-capability-id":"dictation.recent_attempts","x-required-scopes":["practice:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_dictation_read_attempt":{"post":{"description":"Read one exact submitted listening-dictation attempt owned by the authenticated user, including paginated sentence snapshots, user entries, expected words, match results, translations, and score facts for local Agent review.","operationId":"ielts_dictation_read_attempt","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"attemptId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Exact attempt id returned by dictation.recent_attempts."},"limit":{"default":20,"description":"Maximum attempt lines to return.","type":"integer","minimum":1,"maximum":30},"offset":{"default":0,"description":"Line offset returned by the preceding call.","type":"integer","minimum":0,"maximum":10000}},"required":["attemptId","limit","offset"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read dictation attempt","tags":["听力精听"],"x-capability-id":"dictation.read_attempt","x-required-scopes":["practice:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_practice_list_taxonomy":{"post":{"description":"Browse active IELTS question taxonomy, resolve ambiguous filter terms, and return availability counts. practice.search_parts accepts literal tagQueries directly, so use this Tool only when taxonomy discovery, disambiguation, or counts are needed.","operationId":"ielts_practice_list_taxonomy","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"difficulty":{"default":"","description":"Optional difficulty filter used to calculate available counts.","type":"string","enum":["","基础","核心","冲刺"]},"includeCourseLinked":{"default":false,"description":"Whether availability counts include course-linked parts.","type":"boolean"},"search":{"default":"","description":"Optional question search text used to calculate available counts.","type":"string"},"subject":{"default":"","description":"Optional IELTS subject filter.","type":"string","enum":["","listening","reading","speaking","writing"]},"tagIds":{"default":[],"description":"Currently selected tag ids used to calculate dependent availability.","maxItems":12,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"tagQueries":{"default":[],"description":"User-mentioned question-bank category, complete resource-set name, or other taxonomy terms used to find exact tag ids before searching practice.","maxItems":6,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}},"required":["difficulty","includeCourseLinked","search","subject","tagIds","tagQueries"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"List practice taxonomy","tags":["题库与练习"],"x-capability-id":"practice.list_taxonomy","x-required-scopes":["question_bank:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_practice_read_part":{"post":{"description":"Read one active question Part without answers, explanations, or listening transcript. The result includes the same stable contentRef used by other consumers.","operationId":"ielts_practice_read_part","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"maxChars":{"default":12000,"description":"Maximum material characters to return.","type":"integer","minimum":1000,"maximum":30000},"partId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Practice part id returned by practice.search_parts."}},"required":["maxChars","partId"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read question Part","tags":["题库与练习"],"x-capability-id":"practice.read_part","x-required-scopes":["question_bank:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_speaking_materials_search":{"post":{"description":"Search the user's active speaking materials by title, story, or tag. Results are compact and paginated, and include a stable speaking_material contentRef. This is the speaking-material module's only search interface.","operationId":"ielts_speaking_materials_search","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"default":6,"type":"integer","minimum":1,"maximum":8},"offset":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"query":{"default":"","description":"Optional title, story, or tag keyword.","type":"string","maxLength":120}},"required":["limit","offset","query"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Search speaking materials","tags":["口语素材"],"x-capability-id":"speaking_materials.search","x-required-scopes":["speaking:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_speaking_materials_read":{"post":{"description":"Read one exact active speaking material with its linked questions and recent practice history.","operationId":"ielts_speaking_materials_read","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"materialId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["materialId"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read speaking material","tags":["口语素材"],"x-capability-id":"speaking_materials.read","x-required-scopes":["speaking:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_speaking_materials_create":{"post":{"description":"Create one speaking material. Exact question links are optional and are only written when explicitly provided; omitted links remain empty.","operationId":"ielts_speaking_materials_create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"coreStory":{"type":"string","minLength":1,"maxLength":4000},"questionLinks":{"maxItems":30,"type":"array","items":{"type":"object","properties":{"answerAngle":{"default":"","type":"string","maxLength":500},"outline":{"default":[],"maxItems":8,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}},"questionSlotId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"requiredAdaptation":{"default":"","type":"string","maxLength":500}},"required":["answerAngle","outline","questionSlotId","requiredAdaptation"],"additionalProperties":false}},"title":{"type":"string","minLength":1,"maxLength":120}},"required":["coreStory","title"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Create speaking material","tags":["口语素材"],"x-capability-id":"speaking_materials.create","x-required-scopes":["speaking:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_speaking_materials_update":{"post":{"description":"Update one speaking material. Question links change only when exact links are explicitly provided; story edits do not trigger hidden matching.","operationId":"ielts_speaking_materials_update","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"coreStory":{"type":"string","minLength":1,"maxLength":4000},"questionLinks":{"maxItems":30,"type":"array","items":{"type":"object","properties":{"answerAngle":{"default":"","type":"string","maxLength":500},"outline":{"default":[],"maxItems":8,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}},"questionSlotId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"requiredAdaptation":{"default":"","type":"string","maxLength":500}},"required":["answerAngle","outline","questionSlotId","requiredAdaptation"],"additionalProperties":false}},"title":{"type":"string","minLength":1,"maxLength":120},"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Update speaking material","tags":["口语素材"],"x-capability-id":"speaking_materials.update","x-required-scopes":["speaking:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_speaking_materials_archive":{"post":{"description":"Archive one speaking material from the active library.","operationId":"ielts_speaking_materials_archive","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Archive speaking material","tags":["口语素材"],"x-capability-id":"speaking_materials.archive","x-required-scopes":["speaking:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_practice_read_session":{"post":{"description":"Read one owned standalone practice record by its sessionId. Mock sessions are rejected. It returns the exact record state, scoring summary, timestamps, and browser route, but not question-level answers or review evidence.","operationId":"ielts_practice_read_session","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Standalone practice session id."}},"required":["sessionId"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read practice session","tags":["题库与练习"],"x-capability-id":"practice.read_session","x-required-scopes":["practice:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_review_recent_activity":{"post":{"description":"List factual standalone-practice and mock records that can be selected for review. Mock records include section-level completion and grading facts; every result exposes an exact review target.","operationId":"ielts_review_recent_activity","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"default":"all","type":"string","enum":["all","practice","mock"]},"limit":{"default":12,"type":"integer","minimum":1,"maximum":30},"subject":{"default":"","type":"string","enum":["","listening","reading","speaking","writing"]}},"required":["kind","limit","subject"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read reviewable activity","tags":["练习复盘"],"x-capability-id":"review.recent_activity","x-required-scopes":["practice:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_review_read_snapshot":{"post":{"description":"Read a paginated immutable review snapshot for one exact standalone practice record or one completed mock section, including answers, grading facts, evidence anchors, and optional bounded source material for local Agent analysis.","operationId":"ielts_review_read_snapshot","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"includeMaterial":{"default":false,"description":"Include a bounded snapshot of the completed part's original material when local evidence analysis needs it.","type":"boolean"},"limit":{"default":6,"description":"Maximum review items returned in this page.","type":"integer","minimum":1,"maximum":6},"maxMaterialChars":{"default":12000,"description":"Maximum combined characters returned for original material.","type":"integer","minimum":1000,"maximum":30000},"offset":{"default":0,"description":"Pagination offset returned by the preceding review call.","type":"integer","minimum":0,"maximum":1000},"scope":{"default":"incorrect","description":"Return incorrect objective items, or every available submitted response.","type":"string","enum":["incorrect","all"]},"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"practice"},"sessionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","sessionId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"mock_section"},"sessionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"subject":{"type":"string","enum":["listening","reading","speaking","writing"]}},"required":["kind","sessionId","subject"],"additionalProperties":false}],"description":"Exact review target returned by review.recent_activity."}},"required":["includeMaterial","limit","maxMaterialChars","offset","scope","target"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read review snapshot","tags":["练习复盘"],"x-capability-id":"review.read_snapshot","x-required-scopes":["practice:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_practice_recent_activity":{"post":{"description":"List the current user's factual standalone practice records. It supports an Asia/Shanghai date range, subject, status, and pagination and never returns mock sessions. Every result exposes sessionId; use the independent review Domain for question-level evidence. This tool does not recommend or diagnose.","operationId":"ielts_practice_recent_activity","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"dateFrom":{"default":"","description":"Optional inclusive local date in YYYY-MM-DD. Explicit dates use the Asia/Shanghai calendar and override timeRange.","type":"string","pattern":"^(?:|\\d{4}-\\d{2}-\\d{2})$"},"dateTo":{"default":"","description":"Optional inclusive local date in YYYY-MM-DD. Explicit dates use the Asia/Shanghai calendar and override timeRange.","type":"string","pattern":"^(?:|\\d{4}-\\d{2}-\\d{2})$"},"limit":{"default":12,"description":"Result limit, 1-30.","type":"integer","minimum":1,"maximum":30},"offset":{"default":0,"description":"Pagination offset returned by the preceding call.","type":"integer","minimum":0,"maximum":1000},"status":{"default":"","description":"Optional record status. Empty returns all statuses.","type":"string","enum":["","in_progress","submitted"]},"subject":{"default":"","description":"Optional subject filter. Empty returns every subject.","type":"string","enum":["","listening","reading","speaking","writing"]},"timeRange":{"default":"all","description":"Relative record range in the Asia/Shanghai calendar. Ignored when dateFrom or dateTo is supplied.","type":"string","enum":["all","today","yesterday","7d","30d"]}},"required":["dateFrom","dateTo","limit","offset","status","subject","timeRange"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read recent practice activity","tags":["题库与练习"],"x-capability-id":"practice.recent_activity","x-required-scopes":["practice:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_mock_search_papers":{"post":{"description":"Search available preset and reusable user mock papers by keyword, category, required subjects, and maximum duration. Each result includes factual paper details and a stable mock_paper contentRef; the local Agent chooses the paper.","operationId":"ielts_mock_search_papers","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"default":"","description":"Optional paper category. Empty searches every category.","type":"string","enum":["","entry","basic","intensive","sprint","jian21","xie21","custom"]},"limit":{"default":8,"description":"Maximum number of available mock papers to return.","type":"integer","minimum":1,"maximum":12},"maxDurationMinutes":{"default":0,"description":"Maximum duration in minutes. Zero disables the duration filter.","type":"integer","minimum":0,"maximum":300},"offset":{"default":0,"description":"Pagination offset returned by the preceding search.","type":"integer","minimum":0,"maximum":100},"query":{"default":"","description":"Optional title, source, category, or level keyword.","type":"string"},"subjects":{"default":[],"description":"Subjects every returned paper must contain. Pass all four for a full mock.","maxItems":4,"type":"array","items":{"type":"string","enum":["listening","reading","speaking","writing"]}}},"required":["category","limit","maxDurationMinutes","offset","query","subjects"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Search mock papers","tags":["模考"],"x-capability-id":"mock.search_papers","x-required-scopes":["practice:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_mock_create_paper":{"post":{"description":"Create one reusable user mock paper from exact published Part ids returned by practice.search_parts. The selected Parts must form complete IELTS sections. Returns a stable mock_paper contentRef for catalog entry or study-plan tasks.","operationId":"ielts_mock_create_paper","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"partIds":{"minItems":1,"maxItems":11,"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"description":"Exact Part ids returned by practice.search_parts."},"title":{"type":"string","minLength":1,"maxLength":120,"description":"Name of the reusable mock paper."}},"required":["partIds","title"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Create reusable mock paper","tags":["模考"],"x-capability-id":"mock.create_paper","x-required-scopes":["practice:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_writing_read_practice":{"post":{"description":"Read immutable versions and structured teacher reviews for a saved writing practice. Use the returned practice id and version fields as the only source for writing-practice facts.","operationId":"ielts_writing_read_practice","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["sessionId"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read writing practice","tags":["写作记录"],"x-capability-id":"writing.read_practice","x-required-scopes":["writing:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_footprints_list":{"post":{"description":"List the authenticated user's unified learning footprint with activity, time-range, search, and pagination filters.","operationId":"ielts_footprints_list","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kinds":{"default":[],"description":"Activity kinds to include. Empty includes all kinds.","maxItems":6,"type":"array","items":{"type":"string","enum":["chat","file","mock","note","practice","study"]}},"limit":{"default":20,"type":"integer","minimum":1,"maximum":50},"offset":{"default":0,"type":"integer","minimum":0,"maximum":1000},"query":{"default":"","description":"Title or description search query.","type":"string"},"timeRange":{"default":"all","type":"string","enum":["all","today","7d","30d"]}},"required":["kinds","limit","offset","query","timeRange"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"List learning footprints","tags":["学习者数据"],"x-capability-id":"footprints.list","x-required-scopes":["profile:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_learner_read_profile":{"post":{"description":"Read the current user's normalized IELTS skill profile and lightweight 30-day evidence summary. For a chronological activity list, use footprints.list; for concrete practice records, use practice.recent_activity.","operationId":"ielts_learner_read_profile","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"skill":{"default":"","description":"Optional skill filter.","type":"string","enum":["","writing","speaking","reading","listening"]}},"required":["skill"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read learner profile","tags":["学习者数据"],"x-capability-id":"learner.read_profile","x-required-scopes":["profile:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_learning_pull_events":{"post":{"description":"Pull the authenticated user's authoritative append-only learning events after a cursor for a local mirror or web Agent context.","operationId":"ielts_learning_pull_events","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"cursor":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"default":100,"type":"integer","minimum":1,"maximum":200}},"required":["cursor","limit"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Pull learning events","tags":["学习事件"],"x-capability-id":"learning.events.pull","x-required-scopes":["learning:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_learning_push_events":{"post":{"description":"Idempotently append a batch of explicitly typed Agent-owned learning evidence events. Server-owned practice, mock, course, and browser event namespaces are rejected.","operationId":"ielts_learning_push_events","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"events":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"deviceId":{"type":"string","minLength":1,"maxLength":120},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"eventType":{"type":"string","enum":["agent.learning.evidence_recorded","agent.practice.attempted"]},"objectId":{"type":"string","maxLength":160},"objectType":{"type":"string","maxLength":80},"occurredAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$"},"payload":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"schemaVersion":{"default":1,"type":"number","const":1},"skillCodes":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"subjectCode":{"type":"string","enum":["listening","reading","writing","speaking"]}},"required":["deviceId","eventId","eventType","occurredAt","payload","schemaVersion","skillCodes"],"additionalProperties":false}}},"required":["events"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Push learning events","tags":["学习事件"],"x-capability-id":"learning.events.push","x-required-scopes":["learning:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_study_plans_list":{"post":{"description":"List the user's study plans with exact ids, revisions, progress, and latest review so an existing plan can be selected.","operationId":"ielts_study_plans_list","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"includeFinished":{"default":false,"type":"boolean"},"limit":{"default":50,"type":"integer","minimum":1,"maximum":100}},"required":["includeFinished","limit"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"List study plans","tags":["学习计划"],"x-capability-id":"study_plans.list","x-required-scopes":["study_plans:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_study_plans_get":{"post":{"description":"Read one study plan by an exact id returned by the conversation, workspace context, or plan list. Tasks are returned in chronological pages with an opaque nextCursor.","operationId":"ielts_study_plans_get","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"planId":{"type":"string","minLength":1},"cursor":{"default":"","description":"Opaque nextCursor returned by the preceding page. Empty reads the first task page.","type":"string","maxLength":500},"limit":{"default":6,"description":"Maximum plan tasks to return in this page.","type":"integer","minimum":1,"maximum":8}},"required":["planId","cursor","limit"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read study plan","tags":["学习计划"],"x-capability-id":"study_plans.get","x-required-scopes":["study_plans:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_study_plans_create":{"post":{"description":"Create a plan from explicit learning tasks. Each task binds one exact selected contentRef, a calendar date, and one of morning, afternoon, or evening; the Tool resolves current content facts and stores the execution snapshot.","operationId":"ielts_study_plans_create","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"goal":{"type":"string","minLength":1,"maxLength":2000},"tasks":{"minItems":1,"maxItems":90,"type":"array","items":{"type":"object","properties":{"contentRef":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"question_part"},"partId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","partId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"mock_paper"},"paperId":{"type":"string","minLength":1,"maxLength":160}},"required":["kind","paperId"],"additionalProperties":false},{"type":"object","properties":{"courseId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"kind":{"type":"string","const":"course_section"},"sectionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["courseId","kind","sectionId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"listening_dictation"},"partId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","partId"],"additionalProperties":false}],"description":"已选定且可排入计划的学习内容引用，由内容资源模块提供。"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"任务所在的中国日历日期。"},"durationMinutes":{"default":45,"type":"integer","minimum":5,"maximum":240},"timeSlot":{"type":"string","enum":["morning","afternoon","evening"],"description":"任务时段：morning=上午，afternoon=下午，evening=晚上。不提供具体钟点。"}},"required":["contentRef","date","durationMinutes","timeSlot"],"additionalProperties":false},"description":"计划由多个已选定的学习任务组成。"},"title":{"type":"string","minLength":1,"maxLength":200}},"required":["goal","tasks"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Create study plan","tags":["学习计划"],"x-capability-id":"study_plans.create","x-required-scopes":["study_plans:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_notifications_get_status":{"post":{"description":"Read whether WeChat iLink is connected and whether the user has globally enabled WeChat task notifications. This operation changes no notification settings.","operationId":"ielts_notifications_get_status","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Read notification status","tags":["学习计划"],"x-capability-id":"notifications.get_status","x-required-scopes":["notifications:read"],"x-side-effect":"read"}},"/api/v1/agent/capabilities/ielts_notifications_configure_wechat_task_reminders":{"post":{"description":"Enable or disable WeChat iLink delivery for exact existing task ids. It requires a connected iLink and globally enabled WeChat notifications, and never changes a plan or task schedule.","operationId":"ielts_notifications_configure_wechat_task_reminders","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"tasks":{"minItems":1,"maxItems":90,"type":"array","items":{"type":"object","properties":{"enabled":{"type":"boolean"},"taskId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["enabled","taskId"],"additionalProperties":false}}},"required":["tasks"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Configure WeChat task reminders","tags":["学习计划"],"x-capability-id":"notifications.configure_wechat_task_reminders","x-required-scopes":["notifications:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_study_plans_update":{"post":{"description":"Update only a study plan's title or goal. It does not add, remove, reschedule, or complete tasks.","operationId":"ielts_study_plans_update","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"goal":{"type":"string"},"planId":{"type":"string","minLength":1},"reason":{"type":"string","minLength":1},"title":{"type":"string"}},"required":["planId","reason"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Update study plan","tags":["学习计划"],"x-capability-id":"study_plans.update","x-required-scopes":["study_plans:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_study_plans_change_tasks":{"post":{"description":"Atomically add, edit, remove, or complete exact tasks in one plan. An edit may change an unstarted task's date, morning/afternoon/evening slot, duration, or selected contentRef; after a task starts, its resolved target remains fixed so completion cannot be attributed to different content. It does not change the plan title or goal.","operationId":"ielts_study_plans_change_tasks","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"changes":{"minItems":1,"maxItems":90,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"add"},"task":{"type":"object","properties":{"contentRef":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"question_part"},"partId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","partId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"mock_paper"},"paperId":{"type":"string","minLength":1,"maxLength":160}},"required":["kind","paperId"],"additionalProperties":false},{"type":"object","properties":{"courseId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"kind":{"type":"string","const":"course_section"},"sectionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["courseId","kind","sectionId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"listening_dictation"},"partId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","partId"],"additionalProperties":false}],"description":"已选定且可排入计划的学习内容引用，由内容资源模块提供。"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"任务所在的中国日历日期。"},"durationMinutes":{"default":45,"type":"integer","minimum":5,"maximum":240},"timeSlot":{"type":"string","enum":["morning","afternoon","evening"],"description":"任务时段：morning=上午，afternoon=下午，evening=晚上。不提供具体钟点。"}},"required":["contentRef","date","durationMinutes","timeSlot"],"additionalProperties":false}},"required":["kind","task"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"update"},"patch":{"type":"object","properties":{"contentRef":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"question_part"},"partId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","partId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"mock_paper"},"paperId":{"type":"string","minLength":1,"maxLength":160}},"required":["kind","paperId"],"additionalProperties":false},{"type":"object","properties":{"courseId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"kind":{"type":"string","const":"course_section"},"sectionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["courseId","kind","sectionId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"listening_dictation"},"partId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","partId"],"additionalProperties":false}]},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"durationMinutes":{"type":"integer","minimum":5,"maximum":240},"timeSlot":{"type":"string","enum":["morning","afternoon","evening"],"description":"任务时段：morning=上午，afternoon=下午，evening=晚上。不提供具体钟点。"}},"additionalProperties":false},"taskId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","patch","taskId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"remove"},"taskId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","taskId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"complete"},"taskId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","taskId"],"additionalProperties":false}]}},"reason":{"type":"string","minLength":1,"maxLength":500},"planId":{"type":"string","minLength":1}},"required":["changes","reason","planId"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Change study plan tasks","tags":["学习计划"],"x-capability-id":"study_plans.change_tasks","x-required-scopes":["study_plans:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_study_plans_replan":{"post":{"description":"Replace the unfinished learning tasks of one plan in one transaction. The plan keeps its identity and completed work; each new task uses an exact selected contentRef and a morning, afternoon, or evening slot.","operationId":"ielts_study_plans_replan","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"next":{"type":"object","properties":{"goal":{"type":"string","minLength":1,"maxLength":2000},"tasks":{"minItems":1,"maxItems":90,"type":"array","items":{"type":"object","properties":{"contentRef":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"question_part"},"partId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","partId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"mock_paper"},"paperId":{"type":"string","minLength":1,"maxLength":160}},"required":["kind","paperId"],"additionalProperties":false},{"type":"object","properties":{"courseId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"kind":{"type":"string","const":"course_section"},"sectionId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["courseId","kind","sectionId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"listening_dictation"},"partId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["kind","partId"],"additionalProperties":false}],"description":"已选定且可排入计划的学习内容引用，由内容资源模块提供。"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"任务所在的中国日历日期。"},"durationMinutes":{"default":45,"type":"integer","minimum":5,"maximum":240},"timeSlot":{"type":"string","enum":["morning","afternoon","evening"],"description":"任务时段：morning=上午，afternoon=下午，evening=晚上。不提供具体钟点。"}},"required":["contentRef","date","durationMinutes","timeSlot"],"additionalProperties":false},"description":"计划由多个已选定的学习任务组成。"},"title":{"type":"string","minLength":1,"maxLength":200}},"required":["goal","tasks"],"additionalProperties":false,"description":"Complete next arrangement for this plan."},"planId":{"type":"string","minLength":1},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["next","planId","reason"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Replan study plan","tags":["学习计划"],"x-capability-id":"study_plans.replan","x-required-scopes":["study_plans:write"],"x-side-effect":"write"}},"/api/v1/agent/capabilities/ielts_study_plans_delete":{"post":{"description":"Delete a study plan and all tasks that belong to it.","operationId":"ielts_study_plans_delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"planId":{"type":"string","minLength":1},"reason":{"type":"string","minLength":1}},"required":["planId","reason"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"const":0,"type":"integer"},"data":{"additionalProperties":true,"description":"该能力返回的业务数据。","type":"object"},"message":{"const":"ok","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"调用成功"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"请求参数错误"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌无效"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"访问令牌权限不足"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"接口或资源不存在"}},"security":[{"bearerAuth":[]}],"summary":"Delete study plan","tags":["学习计划"],"x-capability-id":"study_plans.delete","x-required-scopes":["study_plans:write"],"x-side-effect":"write"}}},"components":{"schemas":{"ApiError":{"additionalProperties":false,"properties":{"code":{"type":"integer"},"data":{"type":"null"},"message":{"type":"string"}},"required":["code","message","data"],"type":"object"}},"securitySchemes":{"bearerAuth":{"bearerFormat":"IELTS Buddy Agent Token","scheme":"bearer","type":"http"}}}}