API说明

更新时间: 2024-03-13 13:16:30

AUI Kits课堂场景的AppServer提供了登录服务和教室(直播间)管理服务等后台服务,通过与AUI Kits课堂场景SDK搭配使用可以快速实现互动课堂应用。

接口概览

API

是否鉴权

是否必须

描述

/api/v1/class/login 或 /login

登录。

登录成功会返回token标识,只有带有该标识才能访问授权的接口。

/api/v1/class/token

获取IM建连的token。

/api/v1/class/create

创建教室。

/api/v1/class/list

分页获取教室列表。

/api/v1/class/get

获取单个教室。

/api/v1/class/joinClass

加入教室。

/api/v1/class/leaveClass

离开教室。

/api/v1/class/start

开始上课。

/api/v1/class/stop

结束上课。

/api/v1/class/pause

暂停上课。

/api/v1/class/listMembers

获取成员列表。

/api/v1/class/kickClass

将指定成员踢出教室。

/api/v1/class/update

更新教室公告等信息。

/api/v1/class/getMeetingInfo

否,仅连麦场景使用

获取连麦信息。

/api/v1/class/updateMeetingInfo

否,仅连麦场景使用

更新连麦信息。

/api/v1/class/getWhiteboardAuthInfo

获取白板身份验证接口。

/api/v1/class/addDoc

添加课件。

/api/v1/class/deleteDoc

删除课件。

/api/v1/class/queryDoc

查询教室课件。

/api/v1/class/addDocs

批量添加课件。

/api/v1/class/deleteDocs

批量删除课件。

/api/v1/class/setAssistantPermit

设置助教权限。

/api/v1/class/deleteAssistantPermit

删除助教权限。

/api/v1/class/getAssistantPermit

获取助教权限。

鉴权方式

Demo中的鉴权实现供参考,用户可自行调整鉴权策略。

需要先调用/login接口获取鉴权的token,将token放到请求头中,然后再调用其它接口。

image

详细接口定义

登录

用户可按自身业务需求实现该接口,包括token的生成算法也是可以自定义,要确保生成及检验token使用相同的算法。

使用说明

  • 请求协议:http/https

  • 请求Path:/login 或 /api/v1/class/login

  • 是否需要授权:否

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

说明

Demo设计中,username和password相同才能登录。

名称

类型

是否必填

示例值

描述

username

String

usernamexxx

用户名。

password

String

passwordxxxx

密码。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

String

2023-02-28T14:38:06+08:00

过期时间。使用UTC时间格式。

String

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9***

授权凭证。默认使用jwt生成。

请求示例

{
  "username":"usernamexxx",
  "password":"passwordxxxx"
}

返回示例

{
    "success": true,
    "data": {
        "expire": "2023/08/15 14:54:58",
        "token": "eyJ0eXAiOiJKV1QiLC****"
    }
}

获取IM建联的Token

AppServer调用的是视频直播互动消息的GetMessageToken接口,详细信息,请参见获取长连接建连Token

image

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/token

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

user_id

String

useridxxxx

用户UserId,用户自定义,在AppId下唯一。

device_id

String

deviceidxxx

终端设备ID,唯一代表一个用户终端设备,用户自定义。

device_type

String

android

终端设备类型,取值:ios、android、web、pc。

im_server

Array

["aliyun", "rongCloud"] 或者 ["aliyun"]

或者

["rongCloud"]

字符串数据,如果希望同时支持阿里云及融云的互动消息,可以传aliyun及rongCloud, 否则按需传相应值。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

String

oauth_cloud_key:***-b0YY5Gy6Q

用于长连接建连的Token。

String

oauth_cloud_key:***-b0YY5Gy6Q

更新Token,若AccessToken过期,则可以使用RefreshToken再次获取新Token。

请求示例

{
 "user_id": "useridxxxx",
 "device_id": "deviceidxxxxx",
 "device_type":"android"
}

返回示例

{
    "success": true,
    "data": {
        "access_token": "MuYwWTNPVGTmhWFby****",
        "refresh_token": "uY29kkuSWnBZMFM5****"
    }
}

创建教室

AppServer调用了以下接口能力,详细信息请参见:

image

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/create

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

title

String

titlexxxx

课程标题。

notice

String

noticexxx

教室公告。

teacher_id

String

teacherxxxx

老师ID。

teacher_nick

String

teachernickxxxx

老师昵称。

mode

Integer

0

教室模式,默认为0。

  • 0 是公开课

  • 1是大班课

  • 2 是小班课

extends

String

{"xx":"xxx"}

扩展字段,JSON格式字符串。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

id

String

ee487235-5f9b-4cb3-82ce-45c91c3xxxx

教室ID。

created_at

String

2023-02-27T17:34:00.592750182+08:00

创建时间。

updated_at

String

2023-02-27T17:34:00.592750182+08:00

修改时间。

title

String

titlexxx

教室标题。

notice

String

noticexxx

教室公告。

teacher_id

String

teacher_idxxx

老师ID。

teacher_nick

String

teacher_nickxxx

老师昵称。

extends

String

{"xx":"xxx"}

扩展字段。

status

Integer

0

教室状态:

0:准备中

1:上课

2:下课

mode

Integer

0

教室模式。

  • 0 是公开课

  • 1是大班课

  • 2 是小班课

chat_id

String

ee487235-5f9b-4cb3-82ce-45c91c3xxxx

IM群ID。

meeting_id

String

0a7656c4-c01b-424d-9882-xxxxxx

连麦ID。

meeting_info

String

{"members":[{"user_id":"xxx","user_nick":"xxx","user_avatar":"http://xxx"}]}

Json字符串。连麦观众信息

link_info

JSON

连麦地址集合。

link_info.rtc_push_url

String

artc://live.aliyun.com/push/xxxx

rtc推流地址。

link_info.rtc_pull_url

String

artc://live.aliyun.com/play/xxxx

rtc拉流地址。

link_info.cdn_pull_info

JSON

普通观众的拉流地址集合。

link_info.cdn_pull_info.rtmp_url

String

rtmp://pullxxxx

rtmp拉流。

link_info.cdn_pull_info.rts_url

String

artc://pullxxxx

rts拉流。

link_info.cdn_pull_info.hls_url

String

http://pullxxxx.m3u8?xxxx

hls拉流。

link_info.cdn_pull_info.flv_url

String

http://pullxxxx.flv?xxxx

flv拉流。

请求示例

{
 "title": "titlexxx",
 "notice": "noticexxx",
 "teacher_id":"老师Id",
 "teacher_nick":"老师nick",
 "mode":0,
 "extends":"{\"xx\":\"xxx\"}"
}

响应示例

{
 "success": true,
 "data": {
 "id": "3125adcd-06c0-469f-8c5e****",
 "title": "课堂2014346",
 "status": 0,
 "mode": 0,
 "boards": "{\"appKey\":\"xxxx\",\"boardId\":\"xxxxxxxxxxx-469f-xxxx-bbb30cf97a96\",\"boardTitle\":\"课堂2014346\",\"cid\":\"1346126033569775\",\"code\":200,\"message\":\"succeed\",\"uid\":1691478833}",
 "created_at": "2023/08/08 15:13:53",
 "updated_at": "2023/08/08 15:13:53",
 "extends": "{}",
 "chat_id": "3125adcd-06c0-469f-8c5e-bbb30****",
 "meeting_id": "977a1866-f469-4646-9dc4-85ae45****",
 "teacher_id": "test072",
 "teacher_nick": "test072",
 "link_info": {
 "rtc_push_url": "artc://lxxxxxxxxxxxxxx",
 "rtc_pull_url": "artc://xxxxxxxxxxxxxxxxxxx",
 "cdn_pull_info": {
 "rtmp_url": "rtmp://xxxxxxxxxxxxxxxxxxx",
 "rts_url": "artc://xxxxxxxxxxxxxxx",
 "flv_url": "https://xxxxxxxxxxxxxxx",
 "hls_url": "https://xxxxxxxxxxxxxxxxxxxxxxxxx",
 "rtmp_oriaac_url": "rtmp://xxxxxxxxxxxxxxxxxxxxx",
 "rts_oriaac_url": "artc://xxxxxxxxxxxxxxxxxxxxxxxx",
 "flv_oriaac_url": "https://xxxxxxxxxxxxxxxxxxxx",
 "hls_oriaac_url": "https://xxxxxxxxxxxxxxxxxxxx"
 }
 }
 }
}

分页获取教室列表

AppServer调用了以下接口能力,详细信息请参见:

说明

只有请求的userId是群主才会返回推流地址。

image

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/list

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

user_id

String

useridxxx

用户UserID。

page_num

Integer

1

页码,默认值:1。

page_size

Integer

10

单页显示数量,默认值:10。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

id

String

ee487235-5f9b-4cb3-82ce-45c91c3xxxx

教室ID。

created_at

String

2023-02-27T17:34:00.592750182+08:00

创建时间。

updated_at

String

2023-02-27T17:34:00.592750182+08:00

修改时间。

started_at

String

2023-02-27T18:54:37+08:00

课程上课时间。

stopped_at

String

2023-02-27T19:25:37+08:00

课程下课时间。

title

String

titlexxx

课程标题。

notice

String

noticexxx

课程公告。

teacher_id

String

teacher_idxxx

老师Id。

teacher_nick

String

teacher_nickxxx

老师昵称。

extends

String

{"xx":"xxx"}

扩展字段。

status

Integer

0

课程状态。

0:准备中

1:上课

2:下课

mode

Integer

0

教室模式。

  • 0 是公开课

  • 1是大班课

  • 2 是小班课

chat_id

String

ee487235-5f9b-4cb3-82ce-45c91c3xxxx

IM群ID。

meeting_id

String

0a7656c4-c01b-424d-9882-xxxxxx

连麦ID。

meeting_info

String

{"members":[{"user_id":"xxx","user_nick":"xxx","user_avatar":"http://xxx"}]}

Json字符串。连麦观众信息。

vod_info

JSON

教室录制视频信息。

vod_info.status

Integer

1

录制视频的状态。

  • 0:准备中

  • 1:成功

  • 2:失败

vod_info.playlist

Array

录制的视频信息。

vod_info.playlist[].bit_rate

String

858.198

媒体流码率。

vod_info.playlist[].creation_time

String

2017-06-26T06:38:48Z

音/视频创建时间。格式为:yyyy-MM-ddTHH:mm:ssZ(UTC时间)。

vod_info.playlist[].definition

String

OD

视频流清晰度定义。

  • FD:流畅。

  • LD:标清。

  • SD:高清。

  • HD:超清

  • OD:原画。

  • 2K:2K。

  • 4K:4K。

  • SQ:普通音质。

  • HQ:高音质。

  • AUTO:自适应码率。

vod_info.playlist[].duration

String

67.685

媒体流长度。单位:秒。

vod_info.playlist[].format

String

m3u8

媒体流格式。

  • 若媒体文件为视频则取值:mp4、 m3u8。

  • 若是纯音频则取值:mp3。

vod_info.playlist[].fps

String

90000.0

媒体流帧率。

vod_info.playlist[].height

Long

720

媒体流高度。单位:px。

vod_info.playlist[].width

Long

1280

媒体流宽度。单位:px。

vod_info.playlist[].play_url

String

https://vod.h5vxxx/Record/VOD_NO_TRANSCODE/live/b92ed0ce-e29f-4df3-984a-dbxxxx.m3u8

视频流的播放地址。

vod_info.playlist[].size

Long

3034884

媒体流大小。单位:Byte。

vod_info.playlist[].status

String

Normal

媒体流状态,取值:

  • Normal:正常状态,标记的是每种清晰度和格式的一路最新转码完成的流的状态。

  • Invisible:不可见状态,当每种清晰度和格式有多路重复的转码流时,除了最新的一路流会被标记为正常状态,其他流会被标记为不可见状态。

vod_info.playlist[].stream_type

String

媒体流类型。若媒体流为视频则取值:video,若是纯音频则取值:audio。

user_status

JSON

用户的禁言状态。

user_status.mute

Boolean

false

用户是否被禁言。取值:

  • true:禁言。

  • false:没禁言。

user_status.mute_source

String

暂时没有返回。

link_info

JSON

连麦地址集合。

link_info.rtc_push_url

String

artc://live.aliyun.com/push/xxxx

rtc推流地址。

link_info.rtc_pull_url

String

artc://live.aliyun.com/play/xxxx

rtc拉流地址。

link_info.cdn_pull_info

JSON

普通观众的拉流地址集合。

link_info.cdn_pull_info.rtmp_url

String

rtmp://pullxxxx

rtmp拉流。

link_info.cdn_pull_info.rts_url

String

artc://pullxxxx

rts拉流。

link_info.cdn_pull_info.hls_url

String

http://pullxxxx.m3u8?xxxx

hls拉流。

link_info.cdn_pull_info.flv_url

String

http://pullxxxx.flv?xxxx

flv拉流。

请求示例

{
 "page_size": 10,
 "page_num":1,
 "user_id": "useridxxxx"
}

响应示例

{
 "success": true,
 "data": [
 {
 "id": "848018e7-7475-4cdc-802c-2****",
 "title": "class_2014346",
 "status": 0,
 "mode": 0,
 "meetingInfo": "{\"members\":[{\"camera_opened\":true,\"mic_opened\":true,\"rtc_pull_url\":\"artc://class.aliyun.com/play/2bafb67b-4491-4686-a8a9-f049192e8027?sdkAppId=7c61616e-480b-4de6-b3fc-95cef48f5b53&userId=paperclouds&timestamp=1681806125&token=b341f9c4ceb9c6693439d9582a77e2392608bd0b9d5e0e17fdde94e019e91716\",\"user_avatar\":\"https://img.alicdn.com/imgextra/i1/O1CN01P6zzLk1muv3zymjjD_!!6000000005015-2-tps-80-80.png\",\"user_id\":\"paperclouds\",\"user_nick\":\"paperclouds\"}]}",
 "boards": "{\"appKey\":\"1539cfca9****\",\"boardId\":\"*****8bc90dc\",\"boardTitle\":\"class_2014346\",\"cid\":\"1346145199998938\",\"code\":200,\"message\":\"succeed\",\"uid\":1692063745}",
 "created_at": "2023/08/15 09:42:26",
 "updated_at": "2023/08/15 09:52:22",
 "extends": "{}",
 "chat_id": "848018e7-7475-4cdc-802c-2****",
 "meeting_id": "ef6ec82b-0f69-48d9-b8eb-962****",
 "teacher_id": "test_1234567",
 "teacher_nick": "test_11",
 "user_status": {
 "mute": false,
 "mute_source": []
 },
 "link_info": {
 "rtc_push_url": "artc://live.aliyun.com/push/******",
 "rtc_pull_url": "artc://live.aliyun.com/play/******",
 "cdn_pull_info": {
 "rtmp_url": "rtmp://ep-pull.h5video.vip/live/******",
 "rts_url": "artc://ep-pull.h5video.vip/live/******",
 "flv_url": "https://ep-pull.h5video.vip/live/******",
 "hls_url": "https://ep-pull.h5video.vip/live/******",
 "rtmp_oriaac_url": "rtmp://ep-pull.h5video.vip/live/******",
 "rts_oriaac_url": "artc://ep-pull.h5video.vip/live/******",
 "flv_oriaac_url": "https://ep-pull.h5video.vip/live/******",
 "hls_oriaac_url": "https://ep-pull.h5video.vip/live/******"
 }
 },
 "metrics": {
 "pv": 0,
 "uv": 0,
 "like_count": 0,
 "online_count": 0
 }
 },
 {
 "id": "70c77020-2783-48c2-9088-539****",
 "title": "class_2014346",
 "status": 1,
 "mode": 0,
 "boards": "{\"appKey\":\"1539cfca9ff****\",\"boardId\":\"7****c2-9088-5391abe075ac\",\"boardTitle\":\"class_2014346\",\"cid\":\"1346142836901860\",\"code\":200,\"message\":\"succeed\",\"uid\":1691991630}",
 "created_at": "2023/08/14 13:40:31",
 "updated_at": "2023/08/14 13:49:27",
 "extends": "{}",
 "chat_id": "70c77020-2783-48c2-9088-5391a******",
 "meeting_id": "91b6e34a-f19c-44bb-8c8a-acc5******",
 "teacher_id": "test072",
 "teacher_nick": "test072",
 "started_at": "2023/08/14 13:49:27",
 "stopped_at": "2023/08/14 13:48:53",
 "user_status": {
 "mute": false,
 "mute_source": []
 },
 "link_info": {
 "rtc_push_url": "artc://live.aliyun.com/push/******",
 "rtc_pull_url": "artc://live.aliyun.com/play/******",
 "cdn_pull_info": {
 "rtmp_url": "rtmp://ep-pull.h5video.vip/live/*******",
 "rts_url": "artc://ep-pull.h5video.vip/live/*******",
 "flv_url": "https://ep-pull.h5video.vip/live/*******",
 "hls_url": "https://ep-pull.h5video.vip/live/******",
 "rtmp_oriaac_url": "rtmp://ep-pull.h5video.vip/live/******",
 "rts_oriaac_url": "artc://ep-pull.h5video.vip/live/******",
 "flv_oriaac_url": "https://ep-pull.h5video.vip/live/******",
 "hls_oriaac_url": "https://ep-pull.h5video.vip/live/******"
 }
 },
 "metrics": {
 "pv": 0,
 "uv": 0,
 "like_count": 0,
 "online_count": 0
 }
 }
 ]
}

获取单个教室

实现原理:请参考/api/v1/class/list实现。

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/get

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

id

String

89bdb7ab-7fa9-4061-8a73-c7c18a9c****

教室ID。

user_id

String

Ced****

UserID。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

id

String

89bdb7ab-7fa9-4061-8a73-c7c18a9c****

教室ID。

created_at

String

2023/11/24 11:20:44

创建时间。

updated_at

String

2023/11/24 11:20:44

修改时间。

started_at

String

2023-02-27T18:54:37+08:00

课程上课时间。

stopped_at

String

2023-02-27T19:25:37+08:00

课程下课时间。

title

String

直播标题

课程标题。

notice

String

noticexxx

课程公告。

teacher_id

String

teacher_idxxx

老师ID。

teacher_nick

String

teacher_nickxxx

老师昵称。

extends

String

{"xx":"xxx"}

扩展字段。

status

Integer

0

课程状态。

0:准备中

1:上课

2:下课

mode

Integer

0

教室模式。

  • 0 是公开课

  • 1是大班课

  • 2 是小班课

chat_id

String

ee487235-5f9b-4cb3-82ce-45c91c3****

IM群ID。

meeting_id

String

0a7656c4-c01b-424d-9882-23****

连麦ID。

meeting_info

String

{"members":[{"user_id":"xxx","user_nick":"xxx","user_avatar":"http://xxx"}]}

JSON字符串。连麦观众信息。

vod_info

JSON

教室录制视频信息。

vod_info.status

Integer

1

录制视频的状态。

  • 0:准备中

  • 1:成功

  • 2:失败

vod_info.playlist

Array

录制的视频信息。

vod_info.playlist[].bit_rate

String

858.198

媒体流码率。

vod_info.playlist[].creation_time

String

2017-06-26T06:38:48Z

音/视频创建时间。格式为:yyyy-MM-ddTHH:mm:ssZ(UTC时间)。

vod_info.playlist[].definition

String

OD

视频流清晰度定义。

  • FD:流畅。

  • LD:标清。

  • SD:高清。

  • HD:超清

  • OD:原画。

  • 2K:2K。

  • 4K:4K。

  • SQ:普通音质。

  • HQ:高音质。

  • AUTO:自适应码率。

vod_info.playlist[].duration

String

67.685

媒体流长度。单位:秒。

vod_info.playlist[].format

String

m3u8

媒体流格式。

  • 若媒体文件为视频则取值:mp4、 m3u8。

  • 若是纯音频则取值:mp3。

vod_info.playlist[].fps

String

90000.0

媒体流帧率。

vod_info.playlist[].height

Long

720

媒体流高度。单位:px。

vod_info.playlist[].width

Long

1280

媒体流宽度。单位:px。

vod_info.playlist[].play_url

String

https://vod.h5vxxx/Record/VOD_NO_TRANSCODE/live/b92ed0ce-e29f-4df3-984a-dbxxxx.m3u8

视频流的播放地址。

vod_info.playlist[].size

Long

3034884

媒体流大小。单位:Byte。

vod_info.playlist[].status

String

Normal

媒体流状态,取值:

  • Normal:正常状态,标记的是每种清晰度和格式的一路最新转码完成的流的状态。

  • Invisible:不可见状态,当每种清晰度和格式有多路重复的转码流时,除了最新的一路流会被标记为正常状态,其他流会被标记为不可见状态。

vod_info.playlist[].stream_type

String

媒体流类型。若媒体流为视频则取值:video,若是纯音频则取值:audio。

user_status

JSON

用户的禁言状态。

user_status.mute

Boolean

false

用户是否被禁言。取值:

  • true:禁言。

  • false:没禁言。

user_status.mute_source

String

暂时没有返回。

link_info

JSON

连麦地址集合。

link_info.rtc_push_url

String

artc://live.aliyun.com/push/xxxx

RTC推流地址。

link_info.rtc_pull_url

String

artc://live.aliyun.com/play/xxxx

RTC拉流地址。

link_info.cdn_pull_info

JSON

普通观众的拉流地址集合。

link_info.cdn_pull_info.rtmp_url

String

rtmp://pullxxxx

RTMP拉流。

link_info.cdn_pull_info.rts_url

String

artc://pullxxxx

RTS拉流。

link_info.cdn_pull_info.hls_url

String

http://pullxxxx.m3u8?xxxx

HLS拉流。

link_info.cdn_pull_info.flv_url

String

http://pullxxxx.flv?xxxx

FLV拉流。

assistantPermit

jsonObject

助教信息

assistantPermit.identity

Integer

2

助教的标识。只会返回2

  • 1:学生

  • 2:助教

  • 3:老师

assistantPermit.user_id

String

uid_0811

助教UID。

assistantPermit.user_name

String

nick_0811

助教昵称。

assistantPermit.user_avatar

String

https://abc.com.jpg

助教头像。

assistantPermit.join_time

String

2023/11/24 11:45:11

助教加入时间。

assistantPermit.status

Integer

1

助教状态,只会返回1

  • 1: 在线

  • 2:离开

  • 3:踢出

请求示例

{
 "id": "675e6783-0bac-4990-b6da-5aa89053****",
 "user_id": "Cedric8"
}

响应示例

{
    "success": true,
    "data": {
        "id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
        "title": "直播标题",
        "status": 0,
        "mode": 1,
        "boards": "{\"appKey\":\"1539cfca9ffb1907612ace273f34****\",\"boardId\":\"89bdb7ab-7fa9-4061-8a73-c7c18a9c****\",\"boardTitle\":\"直播标题\",\"cid\":\"134746471155****\",\"code\":200,\"message\":\"succeed\",\"uid\":170079****}",
        "created_at": "2023/11/24 11:20:44",
        "updated_at": "2023/11/24 11:20:44",
        "extends": "{\"xx\":\"xxx\"}",
        "aliyun_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
        "meeting_id": "e65c9abd-0def-49c3-b7db-29380dbc****",
        "teacher_id": "t2****",
        "user_status": {
            "mute": false,
            "mute_source": []
        },
        "link_info": {
            "rtc_push_url": "artc://live.aliyun.com/push/e65c9abd-0def-49c3-b7db-29380dbc****?sdkAppId=92429219-d3a6-458a-b72f-74be290e****&userId=Cedric8&timestamp=1700884074&token=ee3b0b5458292764aff42265cc16ef10c55cfd817983da32c5aab67b63d8****",
            "rtc_pull_url": "artc://live.aliyun.com/play/e65c9abd-0def-49c3-b7db-29380dbc****?sdkAppId=92429219-d3a6-458a-b72f-74be290e****&userId=Cedric8&timestamp=1700884074&token=ee3b0b5458292764aff42265cc16ef10c55cfd817983da32c5aab67b63d8****",
            "cdn_pull_info": {
                "rtmp_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera?auth_key=1701402474-0-0-5488182f42c55597d7a65262cb93****",
                "rts_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera?auth_key=1701402474-0-0-5488182f42c55597d7a65262cb93****",
                "flv_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera.flv?auth_key=1701402474-0-0-217690ced5d7ae166b8222718cc7****",
                "hls_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera.m3u8?auth_key=1701402474-0-0-311865f889ab94b531b776deeb22*****",
                "rtmp_oriaac_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera_oriaac?auth_key=1701402474-0-0-de0468d8013516c2d5b1c251a042****",
                "rts_oriaac_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera_oriaac?auth_key=1701402474-0-0-de0468d8013516c2d5b1c251a042****",
                "flv_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera_oriaac.flv?auth_key=1701402474-0-0-9ff4d9db9fe41cc08f1b950ce385****",
                "hls_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_camera_oriaac.m3u8?auth_key=1701402474-0-0-50c98d4262ed304d82d228b6eb0e****",
                "rtmp_screen_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen?auth_key=1701402474-0-0-c880a5255d02860d2830333c2179****",
                "rts_screen_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen?auth_key=1701402474-0-0-c880a5255d02860d2830333c2179****",
                "flv_screen_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen.flv?auth_key=1701402474-0-0-5d5a4c3537fbf97732f4091c6507****",
                "hls_screen_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen.m3u8?auth_key=1701402474-0-0-7bea0e5a1e715167ed0163dc28d2****",
                "rtmp_screen_oriaac_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen_oriaac?auth_key=1701402474-0-0-49a353bc7045bc7e02b30011744****",
                "rts_screen_oriaac_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen_oriaac?auth_key=1701402474-0-0-49a353bc7045bc7e02b30011744a****",
                "flv_screen_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen_oriaac.flv?auth_key=1701402474-0-0-884d844b495211998c17deff2de4****",
                "hls_screen_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbc****_t2****_shareScreen_oriaac.m3u8?auth_key=1701402474-0-0-d7082418622843fa2d2bc6328df8****"
            }
        },
        "shadow_link_info": {
            "rtc_push_url": "artc://live.aliyun.com/push/e65c9abd-0def-49c3-b7db-29380dbc****?sdkAppId=92429219-d3a6-458a-b72f-74be290efe28&userId=Cedric8_shadow&timestamp=1700884074&token=3d7eb925d972507649b8a4449a973ea42b5bc61436b81197152ab85b039e68bb",
            "rtc_pull_url": "artc://live.aliyun.com/play/e65c9abd-0def-49c3-b7db-29380dbc****?sdkAppId=92429219-d3a6-458a-b72f-74be290efe28&userId=Cedric8_shadow&timestamp=1700884074&token=3d7eb925d972507649b8a4449a973ea42b5bc61436b81197152ab85b039e68bb",
            "cdn_pull_info": {
                "rtmp_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera?auth_key=1701402474-0-0-0e9ecb44e8679cf499d97a5b7f134f49",
                "rts_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera?auth_key=1701402474-0-0-0e9ecb44e8679cf499d97a5b7f134f49",
                "flv_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera.flv?auth_key=1701402474-0-0-4e87b9507ab9fd9e292a4b3c7cab57bc",
                "hls_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera.m3u8?auth_key=1701402474-0-0-a63f44591197376c468e35efabb86d7c",
                "rtmp_oriaac_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera_oriaac?auth_key=1701402474-0-0-99ce59f488f32f7060b56068a8221389",
                "rts_oriaac_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera_oriaac?auth_key=1701402474-0-0-99ce59f488f32f7060b56068a8221389",
                "flv_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera_oriaac.flv?auth_key=1701402474-0-0-584f2e4fb304c8a83f615a3cb68aa1cc",
                "hls_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_camera_oriaac.m3u8?auth_key=1701402474-0-0-78d9904b39938fe340883b1615afd892",
                "rtmp_screen_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen?auth_key=1701402474-0-0-634f9900cc06265fcea122b7b302e8bc",
                "rts_screen_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen?auth_key=1701402474-0-0-634f9900cc06265fcea122b7b302e8bc",
                "flv_screen_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen.flv?auth_key=1701402474-0-0-a2d31ee5cec8c2f652546117e9857fda",
                "hls_screen_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen.m3u8?auth_key=1701402474-0-0-7f12b3daf2be89ff96d974df72d4a889",
                "rtmp_screen_oriaac_url": "rtmp://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen_oriaac?auth_key=1701402474-0-0-ac851500fe28704e42393229eefb9bf5",
                "rts_screen_oriaac_url": "artc://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen_oriaac?auth_key=1701402474-0-0-ac851500fe28704e42393229eefb9bf5",
                "flv_screen_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen_oriaac.flv?auth_key=1701402474-0-0-4e4c1fb7bb058ac33c5cb5bf01a07433",
                "hls_screen_oriaac_url": "https://ep-pull.h5video.vip/live/92429219-d3a6-458a-b72f-74be290efe28_e65c9abd-0def-49c3-b7db-29380dbced69_t2ss_shadow_shareScreen_oriaac.m3u8?auth_key=1701402474-0-0-c16b0fda1b3ed0f54eea180f79d95271"
            }
        },
        "metrics": {
            "pv": 0,
            "uv": 0,
            "like_count": 0,
            "online_count": 0
        },
        "assistantPermit": {
            "identity": 2,
            "status": 1,
            "class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
            "user_id": "0811",
            "user_name": "0811",
            "user_avatar": "https://abc.com.jpg",
            "join_time": "2023/11/24 11:45:11"
        }
    }
}

加入教室

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/joinClass

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

class_id

String

titlexxxx

教室ID。

user_id

String

noticexxx

用户ID。

user_name

String

teacherxxxx

用户名称。

user_avatar

String

teachernickxxxx

用户头像。

identity

Integer

2

如果是助教,必须传identity为2,其它身份可不传。

返回数据

名称

类型

示例值

描述

success

bool

true

是否成功。

请求示例

{
 "class_id":"ce4da2e0-18a1-40fe-a9c8-840*****",
 "user_id":"0810",
 "user_name":"0810",
 "user_avatar":"https://****.jpg"
}

响应示例

{
 "success": true
}

说明

有两种joinClass异常情况,需要前端处理:

  • ClassNotAssistantPermit:表示未创建助教权限,不允许登录助教

    {
        "success": false,
        "data": {
            "reason": "ClassNotAssistantPermit"
        }
    }
  • ClassHasAssistant: 表示课堂已经存在一个在线的助教,不允许再登录另一个助教

    {
        "success": false,
        "data": {
            "reason": "ClassHasAssistant"
        }
    }

离开教室

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/leaveClass

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

class_id

String

titlexxxx

教室ID。

user_id

String

noticexxx

用户ID。

返回数据

名称

类型

示例值

描述

success

bool

true

是否成功。

请求示例

{
 "class_id":"ce4da2e0-18a1-40fe-a9c8-84078a*****",
 "user_id":"0810"
}

响应示例

{
 "success": true
}

开始上课

实现原理:修改DB的教室状态status字段值。注意缓存一致性。

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/start

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

user_id

String

useridxxxx

用户UserID,用户自定义,在AppID下唯一。

id

String

classIdxxxx

教室ID。

返回数据

请参考/api/v1/class/get获取单个教室的响应参数。

请求示例

{
 "id": "675e6783-0bac-4990-b6da-5aa8*****",
 "user_id": "useridxxxx"
}

响应示例

请参考/api/v1/class/get获取单个教室的响应参数示例。

结束上课

实现原理:修改DB的教室状态status字段值。.注意缓存一致性。

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/stop

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

user_id

String

useridxxxx

用户UserID,用户自定义,在AppID下唯一。

id

String

classIdxxxx

教室ID。

返回数据

请参考/api/v1/class/get获取单个教室的响应参数。

请求示例

{
 "id": "675e6783-0bac-4990-b6da-5aa890*****",
 "user_id": "useridxxxx"
}

响应示例

请参考/api/v1/class/get获取单个教室的响应参数示例。

暂停上课

实现原理:修改DB的教室状态status字段值。注意缓存一致性。

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/pause

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

user_id

String

useridxxxx

用户UserID,用户自定义,在AppID下唯一。

id

String

classIdxxxx

教室ID。

返回数据

请参考/api/v1/class/get获取单个教室的响应参数。

请求示例

{
 "id": "675e6783-0bac-4990-b6da-5aa8*****",
 "user_id": "useridxxxx"
}

响应示例

请参考/api/v1/class/get获取单个教室的响应参数示例。

获取成员列表

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/listMembers

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

class_id

String

titlexxxx

教室ID。

identity

Integer

0

角色。

0: 所有

1:学生

2:老师

status

Integer

0

成员状态。

0:所有

1:正常

2:离开

3:踢出

page_num

Integer

1

页码,默认值:1。

page_size

Integer

10

单页显示数量,默认值:10。

返回数据

名称

类型

示例值

描述

success

bool

true

是否成功。

data

Json

data.total

Integer

16

总数。

data.members

Array

data.members.identity

Integer

1

角色。

1:学生

2:老师

data.members.status

Integer

1

成员状态。

1:正常

2:离开

3:踢出

data.members.user_id

String

user_xxxx

用户ID。

data.members.user_name

String

user_namexxxx

用户名。

data.members.user_avatar

String

http://xxxx.jpg

用户头像。

data.members.join_time

String

2023/09/25 16:07:30

用户进入时间。

请求示例

{
 "class_id":"2dfc1f72-9340-4899-ae8c-8474*****",
 "identity":0,
 "status":0,
 "page_num":1,
 "page_size":10
}

响应示例

{
 "success": true,
 "data": {
 "total": 17,
 "members": [
 {
 "identity": 2,
 "status": 2,
 "user_id": "dev0808",
 "user_name": "dev0808",
 "user_avatar": "https://img.alicdn.com/imgextra/i1/*****.png",
 "join_time": "2023/09/25 20:32:44"
 },
 {
 "identity": 1,
 "status": 1,
 "user_id": "dev0810",
 "user_name": "dev0810",
 "user_avatar": "https://img.alicdn.com/imgextra/i1/******.png",
 "join_time": "2023/09/25 20:47:58"
 },
 {
 "identity": 1,
 "status": 2,
 "user_id": "dev0802",
 "user_name": "dev0802",
 "join_time": "2023/09/25 20:13:50"
 },
 {
 "identity": 1,
 "status": 2,
 "user_id": "dev0809",
 "user_name": "dev0809",
 "join_time": "2023/09/25 16:07:30"
 },
 {
 "identity": 1,
 "status": 3,
 "user_id": "online0808",
 "user_name": "online0808",
 "user_avatar": "https://img.alicdn.com/imgextra/i1/*****.png",
 "join_time": "2023/09/25 20:40:47"
 },
 {
 "identity": 1,
 "status": 3,
 "user_id": "dev0801",
 "user_name": "dev0801",
 "join_time": "2023/09/25 19:28:39"
 },
 {
 "identity": 1,
 "status": 3,
 "user_id": "test111117",
 "user_name": "test111117",
 "user_avatar": "https://abc.***.jpg",
 "join_time": "2023/09/25 19:22:09"
 },
 {
 "identity": 1,
 "status": 3,
 "user_id": "test111116",
 "user_name": "test111116",
 "user_avatar": "https://abc.***.jpg",
 "join_time": "2023/09/25 19:19:08"
 },
 {
 "identity": 1,
 "status": 3,
 "user_id": "test111115",
 "user_name": "test111115",
 "join_time": "2023/09/25 19:17:01"
 },
 {
 "identity": 1,
 "status": 3,
 "user_id": "dev0807",
 "user_name": "dev0807",
 "join_time": "2023/09/25 19:15:37"
 }
 ]
 }
}

踢出教室

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/kickClass

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

class_id

String

titlexxxx

教室ID。

user_id

String

noticexxx

用户ID。

返回数据

名称

类型

示例值

描述

success

bool

true

是否成功。

请求示例

{
 "class_id":"ce4da2e0-18a1-40fe-a9c8-840*****",
 "user_id":"0810"
}

响应示例

{
 "success": true
}

更新教室公告等信息

实现原理:修改DB的教室信息。

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/update

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

user_id

String

useridxxxx

用户UserID,用户自定义,在AppID下唯一。

id

String

classIdxxxx

教室ID。

title

String

titlexxx

教室标题。

返回数据

请参考/api/v1/class/get获取单个教室的响应参数。

请求示例

{
 "id": "675e6783-0bac-4990-b6da-5aa8*****",
 "user_id": "useridxxx"
 "title": "测试更新标题",
 "notice":"测试更新课堂公告",
 "extends":"{}"
}

响应示例

请参考/api/v1/class/get获取单个教室的响应参数示例。

获取连麦信息

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/getMeetingInfo

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

id

String

classIdxxxx

教室ID。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

members.user_id

String

paperclouds

连麦成员用户ID。

members.user_nick

String

paperclouds

连麦成员用户昵称。

members.user_avatar

String

https://img.xxxx

连麦成员用户头像。

members.camera_opened

String

true

连麦成员摄像头状态。

members.mic_opened

String

true

连麦成员麦克风状态。

members.rtc_pull_url

String

artc://classxxxx

连麦拉流地址。

请求示例

{
 "id": "675e6783-0bac-4990-b6da-*****"
}

响应示例

{
 "success": true,
 "data": {
 "members": [
 {
 "user_id": "paperclouds",
 "user_nick": "paperclouds",
 "user_avatar": "https://img.alicdn.com/imgextra/i1/*******.png",
 "camera_opened": true,
 "mic_opened": true,
 "rtc_pull_url": "artc://live.alixxx"
 }
 ]
 }
}

更新连麦信息

修改在线连麦信息,一般由老师端触发。

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/updateMeetingInfo

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

id

String

classIdxxxx

教室ID。

members

Array

连麦成员。

members

user_id

String

useridxxx

用户ID

user_nick

String

usernickxxx

用户昵称。

user_avatar

String

http://xxx.jpg

用户头像。

camera_opened

Boolean

true

摄像头状态。

mic_opened

Boolean

true

麦克风状态。

rtc_pull_url

String

artc://live.aliyun.com/play/xxxx

连麦拉流地址。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

members.user_id

String

paperclouds

连麦成员用户ID。

members.user_nick

String

paperclouds

连麦成员用户昵称。

members.user_avatar

String

https://img.xxxx

连麦成员用户头像。

members.camera_opened

String

true

连麦成员摄像头状态。

members.mic_opened

String

true

连麦成员麦克风状态。

members.rtc_pull_url

String

artc://classxxxx

连麦拉流地址。

请求示例

{
 "id": "675e6783-0bac-4990-b6da-5aa89******",
 "members":[
 {
 "user_id":"user_idxxx",
 "user_nick":"user_idxxx", 
 "user_avatar":"user_idxxx", 
 "user_camera_opened": true, 
 "mic_opened": true, 
 "rtc_pull_url":"artc://live.alixxx"
 }
 ]
}

响应示例

{
 "success": true,
 "data": {
 "members": [
 {
 "user_id": "paperclouds",
 "user_nick": "paperclouds",
 "user_avatar": "https://img.alicdn.com/imgextra/i1/*****.png",
 "camera_opened": true,
 "mic_opened": true,
 "rtc_pull_url": "artc://class.aliyun.com/play/*********"
 }
 ]
 }
}

获取白板身份验证接口

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/getWhiteboardAuthInfo

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

无。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

curTime

String

1691650304

时间戳。

checksum

String

0ecf9cefxxxxxx

服务器认证需要。

nonce

String

08318axxxxx

随机数。

请求示例

无。

响应示例

{
 "success": true,
 "data": {
 "curTime": 1691650304,
 "checksum": "0ecf9cefbf51439b9140948c6f******",
 "nonce": "08318a2ea1124ff49*****"
 }
}

添加课件

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/addDoc

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

classId

String

classIdxxxx

教室ID

docId

String

docIdxxx

课件ID

serverType

String

网易

白板使用服务商。

data

String

"{\"xx\":\"xxx\"}"

课件详细信息。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

classId

String

class_id_xxxx

教室ID。

docId

String

doc_id_xxxx

课件ID。

docInfos

String

"{\"xx\":\"xxx\"}"

课件详细信息。

createdAt

Date

2023/08/08 09:53:15

创建时间。

updateAt

Date

2023/08/08 09:53:15

更新时间。

请求示例

{
 "classId": "class_id_11",
 "docId": "doc_id_1",
 "serverType": "网易",
 "data": "{\"xx\":\"xxx\"}"
}

响应示例

{
 "success": true,
 "data": {
 "classId": "class_id_11",
 "docId": "doc_id_1",
 "docInfos": "{\"xx\":\"xxx\"}",
 "createdAt": "2023/08/08 09:53:15",
 "updateAt": "2023/08/08 09:53:15"
 }
}

删除课件

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/deleteDoc

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

classId

String

classIdxxxx

教室ID。

docId

String

docIdxxx

课件ID。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

请求示例

{
 "classId": "class_id_11",
 "docId": "doc_id_1",
}

响应示例

{
 "success": true
}

查询教室课件

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/queryDoc

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

classId

String

classIdxxxx

教室ID。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

docInfos

Array

[{"createdAt": 1689585128000,},{},{}]

课件列表。

请求示例

{
 "classId": "class_id_11"
}

响应示例

{
 "success": true,
 "data": [
 {
 "classId": "class_id_3",
 "docId": "doc_id_1",
 "serverType": "网易",
 "docInfos": "{\"xx\":\"xxx\"}",
 "createdAt": "2023/07/26 14:05:54"
 },
 {
 "classId": "class_id_3",
 "docId": "doc_id_2",
 "serverType": "网易",
 "docInfos": "{\"xx\":\"xxx\"}",
 "createdAt": "2023/07/26 14:05:54"
 },
 {
 "classId": "class_id_3",
 "docId": "doc_id_3",
 "serverType": "融云",
 "docInfos": "{\"xx\":\"xxx\"}",
 "createdAt": "2023/07/26 14:05:54"
 }
 ]
}

批量添加课件

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/addDocs

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

classId

String

classIdxxxx

教室ID。

docInfo

Array

[{"createdAt": 1689585128000,},{},{}]

添加列表。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

classId

String

classIdxxxx

教室ID。

docsInfoList

Array

[{"createdAt": 1689585128000,},{},{}]

课件信息列表。

请求示例

{
 "classId": "class_id_3",
 "docInfo": [
 {
 "docId": "doc_id_11",
 "serverType": "网易",
 "data": "{\"xx\":\"xxx\"}"
 },
 {
 "docId": "doc_id_2",
 "serverType": "网易",
 "data": "{\"xx\":\"xxx\"}"
 }
 ]
 
}

响应示例

{
 "success": true,
 "data": {
 "classId": "class_id_3",
 "docsInfoList": []
 }
}

批量删除课件

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/deleteDocs

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

classId

String

classIdxxxx

教室ID。

docIds

String

"doc_id_1,doc_id_2,doc_id_3"

课件ID字符串。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

classId

String

classIdxxxx

教室ID。

docsInfo

Array

[{"createdAt": 1689585128000,},{},{}]

课件信息列表。

请求示例

{
  "classId": "class_id_3",
  "docIds": "doc_id_1,doc_id_2,doc_id_3"
}

响应示例

{
    "success": true,
    "data": {
        "docsInfo": [
            {
                "classId": "class_id_3",
                "docId": "doc_id_1"
            },
            {
                "classId": "class_id_3",
                "docId": "doc_id_2"
            },
            {
                "classId": "class_id_3",
                "docId": "doc_id_3"
            }
        ]
    }
}

设置助教权限

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/setAssistantPermit

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

class_id

String

89bdb7ab-7fa9-4061-8a73-c7c18a9c****

课堂ID。

permit

Json字符串

{\"is_ok\":\"false\"}

权限信息,由前端定制。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

class_id

String

89bdb7ab-7fa9-4061-8a73-c7c18a9c****

教室ID。

permit

String

{\"is_ok\":\"false\"}

权限信息。

created_at

String

2023/11/24 11:33:28

创建时间。

updated_at

String

2023/11/24 11:33:28

修改时间。

请求示例

{
    "class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
    "permit": "{\"is_ok\":\"false\"}"
}

响应示例

{
    "success": true,
    "data": {
        "permit": "{\"is_ok\":\"false\"}",
        "class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
        "created_at": "2023/11/24 11:33:28",
        "updated_at": "2023/11/24 11:33:28"
    }
}

删除助教权限

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/deleteAssistantPermit

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

class_id

String

89bdb7ab-7fa9-4061-8a73-c7c18a9c****

课堂ID。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

请求示例

{
    "class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****"
}

响应示例

{
    "success": true
}

获取助教权限

使用说明

  • 请求协议:http/https

  • 请求Path:/api/v1/class/getAssistantPermit

  • 是否需要授权:是

  • 请求Method:POST

  • 请求ContentType:JSON

请求参数

名称

类型

是否必填

示例值

描述

class_id

String

89bdb7ab-7fa9-4061-8a73-c7c18a9c****

课堂ID。

返回数据

名称

类型

示例值

描述

success

bool

true

业务是否成功。

data

class_id

String

89bdb7ab-7fa9-4061-8a73-c7c18a9c****

教室ID。

permit

String

{\"is_ok\":\"false\"}

权限信息。

created_at

String

2023/11/24 11:33:28

创建时间。

updated_at

String

2023/11/24 11:33:28

修改时间。

请求示例

{
    "class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****"
}

响应示例

{
    "success": true,
    "data": {
        "permit": "{\"is_ok\":\"false\"}",
        "class_id": "89bdb7ab-7fa9-4061-8a73-c7c18a9c****",
        "created_at": "2023/11/24 11:33:28",
        "updated_at": "2023/11/24 11:33:28"
    }
}
上一篇: 服务端配置与运行 下一篇: 客户端集成