12 KiB
12 KiB
GXRTC服务器API文档
接口标准定义:
标准返回JSON 模版:
| Key | Value | 说明 |
|---|---|---|
| meta | {"code": 400, "message": "params face_img is required"} | |
| code | 参考HTTP status code规范:https://developer.mozilla.org/en-US/docs/Web/HTTP/Status | |
| message | 用于客户端将提示给用户显示 | |
| data | {} | map KV结构,key 一定为string,Value可为任意对象,可理解为Golang中的map[string]interface{} |
异常返回示例:
{"meta": {"code": 400, "message": "params face_img is required"}}
正常返回结构体参考:
{
"meta": {
"code": 200
},
"data": {
"imgs": [
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0........"
]
}
}
服务定义:
- 服务器API根路径:https://meeting.cnsdt.com/api/v1
- 服务API返回值说明:
- 服务端所有API Respose返回格式默认为json
- json结构:
- 异常返回示例:
{ "meta": { "code": 403, "error": "user unauthorized", "message": "用户没有登录,不能使用" } } - 正常返回示例:
{ "meta": { "code": 200 }, "data": { "rooms": [ { "sid": "RM_44AJticWDN3t", "name": "thehome", "empty_timeout": 300, "departure_timeout": 20, "creation_time": 1731684825, "turn_password": "3b4QxehgfMm7RvjTjDI75ot22IhMgIrBFeWmSl8NUgyA", "enabled_codecs": [ { "mime": "audio/opus" }, { "mime": "audio/red" }, { "mime": "video/VP8" }, { "mime": "video/H264" }, { "mime": "video/VP9" }, { "mime": "video/AV1" } ] } ] } }
- 异常返回示例:
API: 获取access_token
Request:
- API Path:
/room/token - Method:
POST - Content Type:
form - Params:
- uid:
string用户ID - room:
string房间ID
- uid:
- Example:
curl -XPOST https://{{API_ROOT}}/api/v1/room/token -d "uid=xtqxk&room=thehome"
Response:
- Example:
{ "meta": { "code": 200 }, "data": { "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzE2ODg3OTgsImlzcyI6IkFQSTdaOUNQamhtdVo4eCIsIm5iZiI6MTczMTY4NTE5OCwic3ViIjoieHRxeGsiLCJ2aWRlbyI6eyJyb29tIjoidGhlaG9tZSIsInJvb21Kb2luIjp0cnVlfX0.GfNtz3u7kXQRJ3Rkg4usQOF2uDdJSrXfJmD3aewB-4M" } }
API: 创建房间
Request:
- API Path:
/room/ - Method:
POST - Content Type:
form - Params:
- room:
string房间ID,目前与名称重叠,未来房间ID会由服务器指定,客户端仅支持传递房间名称
- room:
- Example:
curl -XPOST https://{{API_ROOT}}/api/v1/room/ -d "room=thehome"
Response:
- Example:
{ "meta": { "code": 200 }, "data": { "sid": "RM_44AJticWDN3t", "name": "thehome", "empty_timeout": 300, "departure_timeout": 20, "creation_time": 1731684825, "turn_password": "3b4QxehgfMm7RvjTjDI75ot22IhMgIrBFeWmSl8NUgyA", "enabled_codecs": [ { "mime": "audio/opus" }, { "mime": "audio/red" }, { "mime": "video/VP8" }, { "mime": "video/H264" }, { "mime": "video/VP9" }, { "mime": "video/AV1" } ] } }
API: 获取所有房间列表
Request:
- API Path:
/room/ - Method:
GET - Example:
curl -XGET https://{{API_ROOT}}/api/v1/room/
Response:
```json
{
"meta": {
"code": 200
},
"data": {
"rooms": [
{
"sid": "RM_44AJticWDN3t",
"name": "thehome",
"empty_timeout": 300,
"departure_timeout": 20,
"creation_time": 1731684825,
"turn_password": "3b4QxehgfMm7RvjTjDI75ot22IhMgIrBFeWmSl8NUgyA",
"enabled_codecs": [
{
"mime": "audio/opus"
},
{
"mime": "audio/red"
},
{
"mime": "video/VP8"
},
{
"mime": "video/H264"
},
{
"mime": "video/VP9"
},
{
"mime": "video/AV1"
}
]
}
]
}
}
```
API: 解散房间
Request:
- API Path:
/room/{{room}} - Method:
DELETE - Params:
- room:
string房间ID,目前与名称重叠,未来房间ID会由服务器指定,客户端仅支持传递房间名称
- room:
- Example:
curl -XDELETE https://{{API_ROOT}}/api/v1/room/thehome
Response:
- Example:
成功返回被删除的房音详情
失败返回错误信息,如房间不存在,或没有权限等
{ "meta": { "code": 200 }, "data": { "sid": "RM_44AJticWDN3t", "name": "thehome", "empty_timeout": 300, "departure_timeout": 20, "creation_time": 1731684825, "turn_password": "3b4QxehgfMm7RvjTjDI75ot22IhMgIrBFeWmSl8NUgyA", "enabled_codecs": [ { "mime": "audio/opus" }, { "mime": "audio/red" }, { "mime": "video/VP8" }, { "mime": "video/H264" }, { "mime": "video/VP9" }, { "mime": "video/AV1" } ] } }
API: 获取房间参与者列表
Request:
- API Path:
/room/{{room}}/participants - Method:
GET - Params:
- room:
string房间ID
- room:
- Example:
curl -XGET https://{{API_ROOT}}/api/v1/room/{{room}}/participants
Response:
- Example:
{ "meta": { "code": 200 }, "data": { "participants": [ { "sid": "user1", "name": "Alice", "joined_at": 1731684825, "...":"..." }, { "sid": "user2", "name": "Bob", "joined_at": 1731684830, "...":"..." } ] } } - participants:
[]ParticipantInfo, 返回ParticipantInfo列表
API: 从房间中移除参与者
Request:
- API Path:
/room/{{room}}/participant/{{uid}} - Method:
DELETE - Params:
- room:
string房间ID - uid:
string用户ID
- room:
- Example:
curl -XDELETE https://{{API_ROOT}}/api/v1/room/{{room}}/participant/{{uid}}
Response:
- Example:
当成功时,失败时code不为200
{ "meta": { "code": 200 } }
API: 获取房间中指定用户的详情
Request:
- API Path:
/room/{{room}}/participant/{{uid}} - Method:
GET - Params:
- room:
string房间ID - uid:
string用户ID
- room:
- Example:
curl -XGET https://{{API_ROOT}}/api/v1/room/{{room}}/participant/{{uid}}
Response:
- Example:
{ "meta": { "code": 200 }, "data": { // ParticipantInfo "sid": "user1", "name": "Alice", "joined_at": 1731684825, "...":"..." } } - data :
ParticipantInfo, 返回ParticipantInfo
API: 将房间中的用户禁音/解禁
Request:
- API Path:
/room/{{room}}/participant/{{uid}}/mute - Method:
POST/DELETE, POST:禁音,DELETE解禁 - Params:
- room:
string房间ID - uid:
string用户ID
- room:
- Example:
curl -XPOST https://{{API_ROOT}}/api/v1/room/{{room}}/participant/{{uid}}/mute
Response:
- Example:
当成功时,失败时code不为200
{ "meta": { "code": 200 } }
API: 更新房间中的用户信息
Request:
-
API Path:
/room/{{room}}/participant/{{uid}}/info -
Method:
POST -
Params:
- room:
string房间ID - uid:
string用户ID
- room:
-
Form:
- attrs:
string, json 格式的key,value结构,如:{"nickname":"rick","gender":"male"} - metadata:
string, 任意格式的字符串
- attrs:
-
Example:
curl -XPOST https://{{API_ROOT}}/api/v1/room/{{room}}/participant/{{uid}}/info -d "metadata=metadata_string&attrs=%7B%22nickname%22%3A%22rick%22%2C%22gender%22%3A%22male%22%7D"
Response:
- Example:
{ "meta": { "code": 200 }, "data": { // ParticipantInfo "sid": "user1", "name": "Alice", "joined_at": 1731684825, "...":"..." } } - data :
ParticipantInfo, 返回ParticipantInfo
API: 更新房间中的用户权限
Request:
-
API Path:
/room/{{room}}/participant/{{uid}}/permissions -
Method:
POST -
Params:
- room:
string房间ID - uid:
string用户ID
- room:
-
Form:
- permission:
string, json 格式的key,value结构,permission结构体参考:permission
- permission:
-
Example:
curl -XPOST https://{{API_ROOT}}/api/v1/room/{{room}}/participant/{{uid}}/info -d "permission="%7B%22can_subscribe%22%3Atrue%2C%22can_publish%22%3Afalse%7D""
Response:
- Example:
{ "meta": { "code": 200 }, "data": { // ParticipantInfo "sid": "user1", "name": "Alice", "joined_at": 1731684825, "...":"..." } } - data :
ParticipantInfo, 返回ParticipantInfo