用途:通过 Studio 的 /xblock/ 接口管理 Open edX 课程小节(sequential)。小节位于章节(section)内、承载单元(unit),同时是评分单位,作业类型与截止日期都存放在这里。
主要能力:读取章节大纲(GET /xblock/outline/{section})获取小节及其单元;读取单个小节元数据(GET /xblock/{subsection}),可用 ?fields=graderType 单独取作业类型。写入方面:POST /xblock/ 在章节内创建小节(parent_locator、category=sequential、display_name);POST /xblock/{subsection} 设置评分与排期(graderType、due、hide_after_due、start、visible_to_staff_only、show_correctness 等)以及限时考试(is_time_limited、default_time_limit_minutes 等);POST /xblock/{section} 传 children 全量列表重排;PATCH /xblock/ 用 move_source_locator、parent_locator、target_index 移动到其他章节;POST /xblock/ 用 duplicate_source_locator 复制(含单元);DELETE /xblock/{subsection} 删除;POST /xblock/{subsection} {"publish":"make_public"} 发布。
使用方式:先做前置检查,node .claude/skills/iblai-api-studio-auth/scripts/studio-login.mjs --check 需输出两个 ok,否则先运行 /iblai-api-studio-auth。基础地址为 $STUDIO_URL,会话来自 studio.env(值用单引号包裹,解析时需去掉引号,否则 Studio 返回 500)。请求需带 studio_session_id、csrftoken 及 X-CSRFToken、Origin、Referer 等头。小节 locator 形如 …+type@sequential+block@<hex>,父级为 …+type@chapter+block@…。
限制与注意:graderType 必须已在评分策略中存在(见 /iblai-api-studio-grading),拼写需完全一致,或用 notgraded 取消评分;自定进度课程的 due 会被 LMS 忽略;设置了 graderType 但内部没有问题的小节会算作零分作业;编辑在发布前均为草稿;DELETE 会删除其中所有单元,需先与用户确认;Studio 会回显已存储的元数据(如 default_time_limit_minutes: 0),并非错误。后续可衔接 /iblai-api-studio-unit。