API 说明
TgoRTC 服务器内置了完整的 Swagger API 文档。本文档基于 swagger.json 提供详细的 API 接口说明。
访问 Swagger UI
默认情况下,您可以在部署完成后直接通过浏览器访问在线接口文档:
http://<服务器IP>:8080/swagger/index.html
1. 房间管理 API
创建房间
POST /api/v1/rooms
创建一个新的音视频房间。
请求参数
请求体 (Body):
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
creator | string | 是 | 房间创建者 ID | "user_001" |
device_type | string | 是 | 设备类型(如 app, web, pc 等) | "app" |
room_id | string | 否 | 房间 ID(可选,不传则自动生成) | "room_abc123" |
rtc_type | integer | 否 | 呼叫类型(0: 语音, 1: 视频) | 1 |
invite_on | integer | 否 | 是否开启邀请(0: 否, 1: 是) | 1 |
max_participants | integer | 否 | 最大参与者数(默认 2) | 2 |
uids | string[] | 否 | 邀请的用户 ID 列表 | ["user_002"] |
- 请求示例
- 成功响应 (200 OK)
{
"creator": "user_001",
"device_type": "app",
"rtc_type": 1,
"invite_on": 1,
"max_participants": 2,
"uids": ["user_002"]
}
{
"room_id": "room_abc123",
"creator": "user_001",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6Ik...",
"url": "wss://your-livekit-server",
"status": 0,
"created_at": "1704096500",
"max_participants": 2,
"timeout": 30,
"rtc_type": 1,
"uids": ["user_001", "user_002"]
}
邀请参与者
POST /api/v1/rooms/{room_id}/invite
向已有房间邀请其他用户。
请求参数
路径参数 (Path):
room_id(string) - 必填,房间 ID
请求体 (Body):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
uids | string[] | 是 | 要邀请的用户 ID 列表 |
- 请求示例
- 成功响应 (200 OK)
{
"uids": ["user_003"]
}
{}
(注: 返回空对象即表示成功)
加入房间
POST /api/v1/rooms/{room_id}/join
加入指定房间,成功后返回连接所需的 Token。
请求参数
路径参数 (Path):
room_id(string) - 必填,房间 ID
请求体 (Body):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
uid | string | 是 | 用户 ID |
device_type | string | 否 | 设备类型 |
- 请求示例
- 成功响应 (200 OK)
{
"uid": "user_002",
"device_type": "web"
}
{
"room_id": "room_abc123",
"creator": "user_001",
"token": "eyJhbGciOiJIUzI1NiIsInR5...",
"url": "wss://your-livekit-server",
"status": 1,
"created_at": "1704096500",
"max_participants": 2,
"timeout": 30,
"rtc_type": 1,
"uids": ["user_001", "user_002"]
}
离开房间
POST /api/v1/rooms/{room_id}/leave
参与者主动离开房间。
请求参数
路径参数 (Path):
room_id(string) - 必填,房间 ID
请求体 (Body):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
uid | string | 是 | 用户 ID |
- 请求示例
- 成功响应 (200 OK)
{
"uid": "user_002"
}
{}
同步房间列表
GET /api/v1/rooms/sync
同步指定用户被邀请或已加入的所有活跃房间列表。常用于客户端断线重连或初始化时恢复房间状态。
请求参数
Query 参数:
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
uid | string | 是 | 用户 ID | user_001 |
device_type | string | 是 | 设备类型 | app |
- 请求示例
- 成功响应 (200 OK)
GET /api/v1/rooms/sync?uid=user_001&device_type=app
[
{
"room_id": "room_abc123",
"creator": "user_001",
"token": "eyJhbGciOiJI...",
"url": "wss://your-livekit-server",
"status": 1,
"created_at": "1704096500",
"max_participants": 2,
"timeout": 30,
"uids": ["user_001", "user_002"]
}
]
2. 业务 Webhook 回调
POST /tgortc/webhook
TgoRTC 服务器会向您的业务系统配置的 Webhook URL 发送事件通知。您需要在业务系统中实现此接口来接收房间与参与者的状态变更。
Webhook 请求结构
业务系统接收到的请求格式如下:
- Query 参数:
event_type(string): 事件类型event_id(string): 事件唯一 ID(用于去重)
- Body: JSON 事件数据
事件类型 (event_type) 分类
| 事件分类 | 事件类型 | 说明 |
|---|---|---|
| 房间事件 | room.started | 房间已开始(首个参与者加入) |
room.finished | 房间已结束(所有人离开或超时) | |
| 参与者事件 | participant.invited | 重要: 参与者被邀请。业务系统收到此事件后应向被邀请者推送来电通知。 |
participant.joined | 参与者已成功加入 | |
participant.left | 参与者正常离开 | |
participant.rejected | 参与者拒绝加入 | |
participant.missed | 参与者超时未加入(漏接) | |
participant.cancelled | 发起者主动取消了邀请 |
请求体数据示例
- 房间事件数据 (RoomEventData)
- 参与者事件数据 (ParticipantEventData)
适用于 room.started 和 room.finished。
{
"room_id": "room_abc123",
"creator": "user_001",
"rtc_type": 1,
"invite_on": 0,
"status": 1,
"max_participants": 2,
"duration": 300, // 仅在 finished 事件中有实际通话时长(秒)
"uids": ["user_001", "user_002"],
"created_at": 1704096500,
"updated_at": 1704096600
}
适用于所有的 participant.* 事件。它在房间事件的基础上,增加了触发此次事件的 操作者信息。
{
"room_id": "room_abc123",
"creator": "user_001",
"rtc_type": 1,
"status": 1,
"max_participants": 2,
"duration": 0,
"uids": ["user_001", "user_002"],
"created_at": 1704096500,
"updated_at": 1704096600,
// ⬇️ 附加的参与者事件字段
"uid": "user_002", // 触发事件的操作者(如:被邀请者/加入者/离开者)
"device_type": "app" // 仅在 joined 事件中有值
}
3. 内部管理 API (Webhook)
这些 API 主要用于系统内部运行与维护:
- POST
/api/v1/webhooks/livekit- 接收 LiveKit 的底层事件回调 - GET
/api/v1/webhooks/logs/stats- 获取 Webhook 处理统计 - POST
/api/v1/webhooks/logs/cleanup- 清理历史日志
请求参数
请求体 (Body):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
retention_days | integer | 是 | 保留天数 |
- 请求示例
- 成功响应 (200 OK)
{
"retention_days": 7
}
{}
错误码说明
所有 API 请求失败时,均遵循以下统一的 JSON 错误响应格式:
{
"code": 400,
"message": "参数错误"
}