463
docs/livekit-api-docs.md
Normal file
463
docs/livekit-api-docs.md
Normal file
@@ -0,0 +1,463 @@
|
||||
# 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{} |
|
||||
|
||||
异常返回示例:
|
||||
|
||||
```bash
|
||||
{"meta": {"code": 400, "message": "params face_img is required"}}
|
||||
```
|
||||
|
||||
正常返回结构体参考:
|
||||
|
||||
```bash
|
||||
{
|
||||
"meta": {
|
||||
"code": 200
|
||||
},
|
||||
"data": {
|
||||
"imgs": [
|
||||
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0........"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 服务定义:
|
||||
- 服务器API根路径:https://meeting.cnsdt.com/api/v1
|
||||
- 服务API返回值说明:
|
||||
- 服务端所有API Respose返回格式默认为json
|
||||
- json结构:
|
||||
- 异常返回示例:
|
||||
```json
|
||||
{
|
||||
"meta": {
|
||||
"code": 403,
|
||||
"error": "user unauthorized",
|
||||
"message": "用户没有登录,不能使用"
|
||||
}
|
||||
}
|
||||
```
|
||||
- 正常返回示例:
|
||||
```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: 获取access_token
|
||||
|
||||
### Request:
|
||||
- API Path: `/room/token`
|
||||
- Method: `POST`
|
||||
- Content Type: `form`
|
||||
- Params:
|
||||
- uid: `string` 用户ID
|
||||
- room: `string` 房间ID
|
||||
- Example:
|
||||
```bash
|
||||
curl -XPOST https://{{API_ROOT}}/api/v1/room/token -d "uid=xtqxk&room=thehome"
|
||||
```
|
||||
|
||||
### Response:
|
||||
- Example:
|
||||
```json
|
||||
{
|
||||
"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会由服务器指定,客户端仅支持传递房间名称
|
||||
- Example:
|
||||
```bash
|
||||
curl -XPOST https://{{API_ROOT}}/api/v1/room/ -d "room=thehome"
|
||||
```
|
||||
|
||||
### Response:
|
||||
- Example:
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
```bash
|
||||
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会由服务器指定,客户端仅支持传递房间名称
|
||||
- Example:
|
||||
```bash
|
||||
curl -XDELETE https://{{API_ROOT}}/api/v1/room/thehome
|
||||
```
|
||||
|
||||
### Response:
|
||||
- Example:
|
||||
成功返回被删除的房音详情
|
||||
```json
|
||||
{
|
||||
"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
|
||||
- Example:
|
||||
```bash
|
||||
curl -XGET https://{{API_ROOT}}/api/v1/room/{{room}}/participants
|
||||
```
|
||||
|
||||
### Response:
|
||||
- Example:
|
||||
```json
|
||||
{
|
||||
"meta": {
|
||||
"code": 200
|
||||
},
|
||||
"data": {
|
||||
"participants": [
|
||||
{
|
||||
"sid": "user1",
|
||||
"name": "Alice",
|
||||
"joined_at": 1731684825,
|
||||
"...":"..."
|
||||
},
|
||||
{
|
||||
"sid": "user2",
|
||||
"name": "Bob",
|
||||
"joined_at": 1731684830,
|
||||
"...":"..."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
- participants: `[]ParticipantInfo`, 返回[ParticipantInfo](structs.md#ParticipantInfo)列表
|
||||
|
||||
## API: 从房间中移除参与者
|
||||
|
||||
### Request:
|
||||
- API Path: `/room/{{room}}/participant/{{uid}}`
|
||||
- Method: `DELETE`
|
||||
- Params:
|
||||
- room: `string` 房间ID
|
||||
- uid: `string` 用户ID
|
||||
- Example:
|
||||
```bash
|
||||
curl -XDELETE https://{{API_ROOT}}/api/v1/room/{{room}}/participant/{{uid}}
|
||||
```
|
||||
|
||||
### Response:
|
||||
- Example:
|
||||
当成功时,失败时code不为200
|
||||
```json
|
||||
{
|
||||
"meta": {
|
||||
"code": 200
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## API: 获取房间中指定用户的详情
|
||||
|
||||
### Request:
|
||||
- API Path: `/room/{{room}}/participant/{{uid}}`
|
||||
- Method: `GET`
|
||||
- Params:
|
||||
- room: `string` 房间ID
|
||||
- uid: `string` 用户ID
|
||||
- Example:
|
||||
```bash
|
||||
curl -XGET https://{{API_ROOT}}/api/v1/room/{{room}}/participant/{{uid}}
|
||||
```
|
||||
|
||||
|
||||
### Response:
|
||||
- Example:
|
||||
```json
|
||||
{
|
||||
"meta": {
|
||||
"code": 200
|
||||
},
|
||||
"data": { // ParticipantInfo
|
||||
"sid": "user1",
|
||||
"name": "Alice",
|
||||
"joined_at": 1731684825,
|
||||
"...":"..."
|
||||
}
|
||||
}
|
||||
```
|
||||
- data : `ParticipantInfo`, 返回[ParticipantInfo](structs.md#ParticipantInfo)
|
||||
|
||||
|
||||
## API: 将房间中的用户禁音/解禁
|
||||
|
||||
### Request:
|
||||
- API Path: `/room/{{room}}/participant/{{uid}}/mute`
|
||||
- Method: `POST/DELETE`, POST:禁音,DELETE解禁
|
||||
- Params:
|
||||
- room: `string` 房间ID
|
||||
- uid: `string` 用户ID
|
||||
- Example:
|
||||
```bash
|
||||
curl -XPOST https://{{API_ROOT}}/api/v1/room/{{room}}/participant/{{uid}}/mute
|
||||
```
|
||||
|
||||
### Response:
|
||||
- Example:
|
||||
当成功时,失败时code不为200
|
||||
```json
|
||||
{
|
||||
"meta": {
|
||||
"code": 200
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## API: 更新房间中的用户信息
|
||||
|
||||
### Request:
|
||||
- API Path: `/room/{{room}}/participant/{{uid}}/info`
|
||||
- Method: `POST`
|
||||
- Params:
|
||||
- room: `string` 房间ID
|
||||
- uid: `string` 用户ID
|
||||
- Form:
|
||||
- attrs: `string`, json 格式的key,value结构,如:{"nickname":"rick","gender":"male"}
|
||||
- metadata: `string`, 任意格式的字符串
|
||||
|
||||
- Example:
|
||||
```bash
|
||||
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:
|
||||
```json
|
||||
{
|
||||
"meta": {
|
||||
"code": 200
|
||||
},
|
||||
"data": { // ParticipantInfo
|
||||
"sid": "user1",
|
||||
"name": "Alice",
|
||||
"joined_at": 1731684825,
|
||||
"...":"..."
|
||||
}
|
||||
}
|
||||
```
|
||||
- data : `ParticipantInfo`, 返回[ParticipantInfo](structs.md#ParticipantInfo)
|
||||
|
||||
|
||||
## API: 更新房间中的用户权限
|
||||
|
||||
### Request:
|
||||
- API Path: `/room/{{room}}/participant/{{uid}}/permissions`
|
||||
- Method: `POST`
|
||||
- Params:
|
||||
- room: `string` 房间ID
|
||||
- uid: `string` 用户ID
|
||||
- Form:
|
||||
- permission: `string`, json 格式的key,value结构,permission结构体参考:[permission](structs.md#participantpermission)
|
||||
|
||||
- Example:
|
||||
```bash
|
||||
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:
|
||||
```json
|
||||
{
|
||||
"meta": {
|
||||
"code": 200
|
||||
},
|
||||
"data": { // ParticipantInfo
|
||||
"sid": "user1",
|
||||
"name": "Alice",
|
||||
"joined_at": 1731684825,
|
||||
"...":"..."
|
||||
}
|
||||
}
|
||||
```
|
||||
- data : `ParticipantInfo`, 返回[ParticipantInfo](structs.md#ParticipantInfo)
|
||||
Reference in New Issue
Block a user