Appearance
课程 
课程 
获取课程信息 
GET /course_sets/{id}权限
- 不需要认证
- 普通用户可以获得published状态的课程 [TODO]
- 管理员用户可以获得任何状态的课程 [TODO]
响应
成功响应CourseSet结构体
| 字段 | 描述 | 
|---|---|
| idint string | 课程ID | 
| titlestring | 标题 | 
| subtitlestring | 副标题 | 
| typeenum{normal,live,liveOpen,open} | 课程类型 normal:普通课程 live:直播课程 liveOpen:直播公开课 open:公开课 | 
| tagslist<Tag> | 标签 | 
| categoryCategory | 分类 | 
| serializeModeenum{none,serialized,finished} | 连载课程 none:非连载 serialized:连载中 finished:连载结束 | 
| statusenum{draft,published,closed} | 状态, 普通用户只能看到published的课程 | 
| summarystring | 课程摘要 | 
| goalslist<string> | 课程目标 | 
| audienceslist<string> | 课程适合人群 | 
| coverPicture | 课程封面图片地址 | 
| ratingNumint string | 评价人数 | 
| ratingfloat string | 评价平均分 | 
| noteNumint string | 笔记数量 | 
| studentNumint string | 学员数量 | 
| recommendedbool | 是否推荐课程 | 
| recommendedSeqint string | 推荐序号 | 
| recommendedTimedatetime | 推荐时间 | 
| orgIdint string | 组织机构ID | 
| orgCodestring | 组织机构编码 | 
| discountIdint string | 打折活动ID | 
| discountint string | 折扣量 | 
| maxRateint string | 最大可被虚拟币抵扣百分比 | 
| hitNumint string | 课程查看次数 | 
| materialNumint string | 资料数量 | 
| parentIdint string | 父课程ID | 
| lockedbool | 课程锁定状态 | 
| maxCoursePricefloat string | 已发布教学计划的最高价格 | 
| minCoursePricefloat string | 已发布教学计划的最低价格 | 
| maxOriginCoursePricefloat string | 已发布教学计划的最高原价格 | 
| minOriginCoursePricefloat string | 已发布教学计划的最低原价格 | 
| creatorSimpleUser | 课程创建者 | 
| createdTimedatetime | 创建时间 | 
| updatedTimedatetime | 最后更新时间 | 
| teacherslist<SimpleUser> | 教师 | 
错误
失败响应Error结构体,错误码有
| Code | 错误说明 | HTTP状态码 | 
|---|---|---|
| 10 | 课程不存在 | 404 | 
获取全部课程列表 
GET /course_sets权限
- Access-Token认证方式可以获得任何状态的课程
参数
| 字段 | 是否必填 | 描述 | 
|---|---|---|
| filterenum{normal,lease} | 否 | 课程类型, 默认normal,租赁课程lease | 
| categoryIdint string | 否 | 分类ID,默认all | 
| orgIdsint string | 否 | 部门id(eg:1,2,3) | 
| statusint string | 否 | 课程状态,未发布draft,已发布published,已关闭closed | 
| titlestring | 否 | 课程标题 | 
| creatorNamestring | 否 | 创建者用户名(eg:admin) | 
| offsetint string | 否 | 分页偏移值, 默认0 | 
| limitint string | 否 | 每一页数量, 默认10 | 
响应
成功响应pagelist<CourseSet>结构体
获取课程列表 
GET /course_sets权限
- 需要认证
- 普通用户可以获得public状态的课程
- Access-Token认证方式可以获得任何状态的课程
参数
| 字段 | 是否必填 | 描述 | 
|---|---|---|
| typeenum{normal,live,liveOpen,open} | 否 | 课程类型, 默认normal | 
| categoryIdint string | 否 | 分类ID,默认all | 
| titlestring | 否 | 课程标题 | 
| sortstring | 否 | 排序字段 'createdTime','updatedTime','recommendedSeq', 'hitNum','recommendedTime','ratincourg','studentNum' | 
| offsetint string | 否 | 分页偏移值, 默认0 | 
| limitint string | 否 | 每一页数量, 默认10 | 
响应
成功响应pagelist<CourseSet>结构体
课程成员 
获取课程所有学员(去重) 
GET /course_sets/{courseSetId}/latest_members权限
- 不需要认证
参数
| 字段 | 是否必填 | 描述 | 
|---|---|---|
| offsetint string | 否 | 分页偏移值,默认0 | 
| limitint string | 否 | 每一页数量,默认10 | 
响应
成功响应list<CourseMember>结构体
| 字段 | 描述 | 
|---|---|
| idint string | 成员ID | 
| courseSetIdint string | 课程ID | 
| courseIdint string | 教学计划ID | 
| userSimpleUser | 用户信息 | 
| deadlinedatetime | 到期时间 | 
| levelIdint string | vipID | 
| learnedNumint string | 已学任务数量 | 
| noteNumint string | 笔记数量 | 
| noteLastUpdateTimedatetime | 笔记数量 | 
| isLearnedbool | 是否学完 | 
| finishedTimedatetime | 何时完成计划 | 
| roleenum{teacher,student} | 角色 | 
| lockedbool | 是否被锁 | 
| createdTimedatetime | 加入时间 | 
| lastLearnTimedatetime | 最近学习时间 | 
| lastViewTimedatetime | 最近观看视频时间 | 
| accessAccess | 是否可以继续学习 success:可以 course.unpublished:课程未发布 course.expired:学习有效期已过 course.not_arrive:未到授课时间 member.expired:学员有效期已到 vip.member_expired:vip过期 vip.level_not_exist:vip等级不存在 vip.level_low:等级过低 | 
教学计划 
获取单个教学计划 
GET /courses/{id}权限
- 不需要认证用户
响应
成功响应Course结构体
| 字段 | 描述 | 
|---|---|
| idint string | 教学计划ID | 
| courseSetSimpleCourseSet | 课程 | 
| titlestring | 教学计划标题 | 
| learnModestring | 学习模式 | 
| learningExpiryDateExpiryDate | 学习有效期 | 
| summarystring | 教学计划简介 | 
| goalslist<string> | 教学计划目标 | 
| audienceslist<string> | 教学计划适合人群 | 
| isDefaultint string | 是否是默认教学计划 | 
| maxStudentNumint string | 最大允许加入学员 | 
| statusstring | 教学计划状态 | 
| creatorSimpleUser | 教学计划创建者 | 
| isFreeint string | 是否免费 | 
| pricefloat string | 价格 | 
| originPricefloat string | 价格 | 
| enableFinishbool | 是否允许学员强制完成任务, 1:表示不限制 0:表示限制 | 
| vipLevelIdint string | vipId | 
| tryLookableint string | 是否允许试看 | 
| tryLookLengthint string | 允许试看时长 | 
| watchLimitint string | 观看次数 | 
| serviceslist<Service> | 承诺服务 | 
| taskNumint string | 总任务数 | 
| publishedTaskNumint string | 发布的任务数 | 
| studentNumint string | 学员数 | 
| teacherslist<SimpleUser> | 教师 | 
| parentIdint string | 父计划ID | 
| createdTimedatetime | 创建时间 | 
| updatedTimedatetime | 最后更新时间 | 
| accessAccess | 是否可加入课程 success:可以加入 user.not_login:用户未登录 user.locked:用户被锁 course.unpublished:课程未发布 course.closed:课程已关闭 course.not_buyable:课程被设置不可加入 course.buy_expired:购买有效期已过 course.expired:学习有效期已过 course.only_vip_join_way:只能通过VIP加入 | 
ExpiryDate结构体
| 字段 | 描述 | 
|---|---|
| expiredbool | 是否已过期 | 
| expiryModeenum{days,date} | 教学计划到期模式 days:指定天数后过期 date:指定的时间过期 | 
| expiryDaysint string | 到期天数 | 
| expiryStartDatedatetime | 到期开始时间 | 
| expiryEndDatedatetime | 到期结束时间 | 
Service结构体
| 字段 | 描述 | 
|---|---|
| codestring | 服务编码 | 
| shortNamestring | 短名称 | 
| fullNamestring | 长名称 | 
| summarystring | 描述信息 | 
Access结构体
| 字段 | 描述 | 
|---|---|
| codestring | 编码 | 
| msgstring | 信息 | 
错误
失败响应Error结构体,错误码有
| Code | 错误说明 | HTTP状态码 | 
|---|---|---|
| 10 | 教学计划不存在 | 404 | 
获取课程已发布的教学计划 
GET /course_sets/{course_setId}/courses权限
- 不需要认证用户
响应
成功响应list<Course>结构体
错误
失败响应Error结构体,错误码有:
| Code | 错误说明 | HTTP状态码 | 
|---|---|---|
| 10 | 课程不存在 | 404 | 
获取我加入的教学计划 
GET /me/course_sets/{courseSetId}/course_members权限
- 认证用户
响应
成功响应list<CourseMember>结构体
教学计划成员 
加入教学计划,成为学员 
POST /courses/{id}/members权限
- 需要认证用户
响应
加入成功返回CourseMember
加入失败返回空对象
错误
失败响应Error结构体,错误码有:
| Code | 错误说明 | HTTP状态码 | 
|---|---|---|
| 10 | 教学计划不存在 | 404 | 
获取教学计划学员 
GET /courses/{courseId}/members权限
- 不认证用户
参数
| 字段 | 是否必填 | 描述 | 
|---|---|---|
| roleenum{student,teacher} | 否 | 角色,默认查询所有角色 | 
| offsetint string | 否 | 分页偏移值, 默认0 | 
| limitint string | 否 | 每一页数量, 默认10 | 
响应
成功响应list<CourseMember>结构体
获取单个教学计划成员 
GET /me/course_members/{courseId}权限
- 认证用户
响应
成功响应CourseMember结构体
教学计划任务 
获取单个任务 
GET /courses/{courseId}/tasks/{taskId}权限
- 需要认证
响应
成功响应CourseTask结构体
| 字段 | 描述 | 
|---|---|
| idint string | 任务ID | 
| titlestring | 任务标题 | 
| isFreeint string | 是否免费 | 
| isOptionalint string | 是否选修 | 
| startTimedatetime | 直播开始时间 | 
| endTimedatetime | 直播结束时间 | 
| modestring | 任务模式 | 
| statusstring | 任务状态 | 
| typeint string | 任务类型 | 
| lengthint string | 视频时长(秒) | 
| resultSimpleTaskResult | 任务结果 传入token,才有这个属性 | 
| lockbool | 任务是否被锁住 传入token,才有这个属性 | 
| activityActivity | 活动 | 
Activity 结构体
| 字段 | 描述 | 
|---|---|
| idint string | ID | 
| remarkstring | 描述信息 | 
| replayStatusenum{ungenerated,generating,generated} | 直播回放状态 | 
| finishTypestring | 任务完成类型 | 
| finishDetailstring | 任务完成条件 | 
获取教学计划的目录列表 
GET /courses/{id}/items权限
- 不需要认证
参数
| 字段 | 是否必填 | 描述 | 
|---|---|---|
| onlyPublishedint string | 否 | onlyPublished=1,过滤掉未发布的任务 | 
响应
成功响应CourseItem结构体
| 字段 | 描述 | 
|---|---|
| typeenum{task,chapter,unit} | 类型 | 
| numberint string | 显示的数字 | 
| seqint string | 任务的顺序 | 
| titlestring | 标题 | 
| taskCourseTask | 任务 | 
错误
失败响应Error结构体,错误码有
| Code | 错误说明 | HTTP状态码 | 
|---|---|---|
| 10 | 教学计划不存在 | 404 | 
获取计划下的第一个试看任务 
GET /courses/{id}/trial_tasks/first权限
- 不需要用户认证
响应
成功响应CourseTask
错误
失败响应Error结构体,错误码有
| Code | 错误说明 | HTTP状态码 | 
|---|---|---|
| 10 | 计划不存在 | 404 | 
错误
失败响应Error结构体,错误码有
| Code | 错误说明 | HTTP状态码 | 
|---|---|---|
| 10 | 教学计划不存在 | 404 | 
评价 
获取计划的所有评价 
GET /courses/{id}/reviews权限
- 不需要用户认证
- 公开的评价 -> private = 0
参数
| 字段 | 描述 | 
|---|---|
| offsetint string | 分页偏移值, 默认0 | 
| limitint string | 每一页数量, 默认10 | 
响应
成功响应list<CourseReview>结构体
| 字段 | 描述 | 
|---|---|
| idint string | 评价ID | 
| userIdint string | 评价人ID | 
| courseIdint string | 教学计划ID | 
| titlestring | 评价标题 | 
| contentstring | 评价内容 | 
| ratingint string | 评价分数 | 
| privatebool | 是否是私有评价 | 
| createdTimedatetime | 创建时间 | 
| updatedTimedatetime | 最后更新时间 | 
| parentIdint string | 父ID | 
| metastring | 保存当时用户的学习进度 | 
| courseSetIdint string | 课程ID | 
错误
失败响应Error结构体,错误码有
| Code | 错误说明 | HTTP状态码 | 
|---|---|---|
| 10 | 教学计划不存在 | 404 | 
获取课程的所有评价 
GET /course_sets/{id}/reviews权限
- 不需要用户认证
- 公开的评价 -> private = 0
参数
| 字段 | 描述 | 
|---|---|
| offsetint string | 分页偏移值, 默认0 | 
| limitint string | 每一页数量, 默认10 | 
响应
成功响应list<CourseReview>结构体
错误
失败响应Error结构体,错误码有
| Code | 错误说明 | HTTP状态码 | 
|---|---|---|
| 10 | 课程不存在 | 404 | 
学习进度 
获取我的教学计划下的学习进度 
GET /me/course_learning_progress/{courseId}权限
- 需要用户认证
响应
| 字段 | 描述 | 
|---|---|
| taskCountint string | 任务总数 | 
| taskResultCountint string | 完成的任务数 | 
| progressint string | 当前学习进度百分比 | 
| nextTaskCourseTask | 下一个学习的任务 | 
| taskPerDayint string | 任务式课程每日建议学习任务数 | 
| planStudyTaskCountint string | 计划应学数量 | 
| planProgressProgressint string | 计划进度 | 
| memberSimpleCourseMember | 成员信息 | 
SimpleCourseMember 结构体
| 字段 | 描述 | 
|---|---|
| idint string | ID | 
| courseIdint string | 计划ID | 
| deadlinedatetime | 学习有效期 | 
错误
失败响应Error结构体,错误码有
| Code | 错误说明 | HTTP状态码 | 
|---|---|---|
| 10 | 计划不存在 | 404 | 
课程收藏 
我收藏的课程 
GET /me/favorite_course_sets权限
- 需要认证用户
参数
| 字段 | 描述 | 
|---|---|
| offsetint string | 分页偏移值, 默认0 | 
| limitint string | 每一页数量, 默认10 | 
响应
成功响应pageList<SimpleCourseSet>
| 字段 | 描述 | 
|---|---|
| idint string | ID | 
| titlestring | 标题 | 
| subtitlestring | 副标题 | 
| typeenum{normal,live,open,liveOpen} | 类型 | 
| cover[CourseCover#CourseCover] | 封面 | 
| studentNumint string | 学员数量 | 
| maxCoursePriceint string | 最大价格 | 
| minCoursePriceint string | 最小价格 | 
| maxOriginCoursePriceint string | 最高原价格 | 
| minOriginCoursePriceint string | 最小原价格 | 
| discountint string | 优惠 | 
是否收藏课程 
GET /me/favorite_course_sets/{courseSetId}权限
- 需要认证用户
响应:
成功响应
| 字段 | 描述 | 
|---|---|
| isFavoritebool | 是否收藏 | 
收藏课程 
POST /me/favorite_course_sets权限
- 需要认证用户
参数
| 字段 | 是否必填 | 描述 | 
|---|---|---|
| courseSetIdint string | 是 | 课程ID | 
响应
成功响应
| 字段 | 描述 | 
|---|---|
| successbool | 收藏是否成功 | 
取消收藏课程 
DELETE /me/favorite_course_sets/{courseSetId}权限
- 需要认证用户
参数
| 字段 | 是否必填 | 描述 | 
|---|---|---|
| courseSetIdint string | 是 | 课程ID | 
响应
成功响应
| 字段 | 描述 | 
|---|---|
| successbool | 取消是否成功 | 
退出 
退出计划 
DELETE /me/course_members/{courseId}权限
- 需要认证用户
参数
| 字段 | 是否必填 | 描述 | 
|---|---|---|
| reasonstring | 否 | 退出原因 | 
响应
成功响应
| 字段 | 描述 | 
|---|---|
| successbool | 取消是否成功 | 
事件 
学习任务 
PATCH /courses/{courseId}/tasks/{taskId}/events/{envet:doing,finish}权限
- 需要认证用户
参数
| 字段 | 是否必填 | 描述 | 
|---|---|---|
| lastTimetimestamp | 是 | 最近一次记录任务的时间戳 | 
成功响应
| 字段 | 描述 | 
|---|---|
| resultTaskResult | 任务结果 | 
| eventstring | 任务名称 | 
| lastTimetimestamp | 最近一次记录任务的时间戳 | 
| nextTaskCourseTask | 下一个任务 只有当前任务完成了才有值,否则是null | 
| completionRateint string | 课程完成百分比 只有当前任务完成了才有值,否则是null | 
TaskResult 结构体
| 字段 | 描述 | 
|---|---|
| idint string | 任务结果ID | 
| activityIdint string | 活动ID | 
| courseIdint string | 计划ID | 
| courseTaskIdint string | 任务ID | 
| createdTimedatetime | 任务开始时间 | 
| finishedTimedatetime | 任务完成时间 | 
| statusenum{start,finish} | 任务的状态 | 
| updatedTimeenum{start,finish} | 最后更新时间 | 
| userIdenum{start,finish} | 用户ID | 
查看计划 
PATCH /courses/{courseId}/events/{event:course_view}权限
- 不需要认证