EchoChat API 接口文档
本目录包含 EchoChat 系统所有接口定义,按端 + 功能模块两级目录组织,便于维护和查阅。
架构设计见 docs/architecture/system-architecture.md
完整设计方案见 docs/plans/2026-02-27-echochat-system-design.md
文档导航
前台用户端 (frontend/)
| 文档 |
模块 |
状态 |
说明 |
| frontend/auth.md |
用户认证 |
✅ Phase 1 |
注册、登录、Token 刷新、个人信息管理 |
| frontend/contact.md |
联系人 |
✅ Phase 2a |
17 个 API:好友申请/管理、好友分组、黑名单、搜索/推荐、在线状态 |
| frontend/websocket.md |
WebSocket |
✅ Phase 2a |
前端 WebSocket 连接管理、事件协议、心跳、重连 |
| frontend/im.md |
即时通讯 |
✅ Phase 2b |
7 个 API:会话列表/置顶/删除/清空、历史消息、全局搜索、未读数 |
| frontend/group.md |
群聊管理 |
✅ Phase 2c |
16 个 API:建群/管理/成员/角色/禁言/公告/搜索/入群审批 |
| frontend/meeting.md |
会议 |
📋 Phase 2e-2 设计阶段 |
当前为总设计占位版本;最终 API 清单将由 Phase 2e-2 Task 5 产出(共 12 接口,含创建/加入/离开/结束/详情/列表/邀请/踢人/转让主持人/发起聊天/拉聊天历史/邀请链接兑换)。详见设计文档 docs/plans/2026-04-21-phase2e-2-design.md §6.2 |
| frontend/notify.md |
通知中心 |
✅ Phase 2e-1 |
5 个 API:通知列表(游标分页)/未读数/标记已读/全部已读/管理员广播 + 2 个 WS 事件(notify.new/notify.unread.total) |
后台管理端 (admin/)
跨端通用
| 文档 |
状态 |
说明 |
| websocket.md |
✅ Phase 2a/2b |
WebSocket 实时事件协议(IM 消息收发/撤回/已读/输入、联系人通知、在线状态、心跳) |
通用规范
基础 URL
| 环境 |
地址 |
| 开发环境 |
http://localhost:8085 |
| 生产环境 |
https://api.echochat.com(待定) |
认证方式
除登录/注册等公开接口外,所有接口均需在请求头中携带 JWT Token:
时间格式规范
系统所有时间字段统一使用 亚洲友好的日期时间字符串格式:
示例:"2026-03-01 14:12:12"
- 所有 API 响应中的时间字段(
created_at、updated_at、last_login_at、started_at 等)均使用此格式
- 所有 API 请求中的时间参数(如预约会议时间)也使用此格式
- WebSocket 消息中的时间字段同样遵循此格式
- 时区统一采用 Asia/Shanghai (UTC+8)
统一响应格式
成功响应:
错误响应:
trace_id 字段在所有响应中都返回,用于追踪同一请求在各层级日志中的关联。
错误码定义
通用错误码(1000-1099)
| 错误码 |
含义 |
说明 |
| 0 |
成功 |
请求处理成功 |
| 1001 |
参数错误 |
请求参数缺失或格式不正确 |
| 1002 |
未认证 |
Token 缺失、过期或无效 |
| 1003 |
权限不足 |
当前用户角色无权执行此操作 |
| 1004 |
资源不存在 |
请求的目标资源不存在 |
| 1005 |
操作重复 |
如重复注册、重复添加好友等 |
认证模块错误码(2000-2099)
| 错误码 |
含义 |
说明 |
| 2001 |
用户名已存在 |
注册时用户名重复 |
| 2002 |
邮箱已注册 |
注册时邮箱重复 |
| 2003 |
账号或密码错误 |
登录失败 |
| 2004 |
账号已被禁用 |
用户状态为禁用 |
联系人模块错误码(2100-2199)
| 错误码 |
含义 |
说明 |
| 2101 |
不能添加自己 |
好友申请目标为自身 |
| 2102 |
已是好友关系 |
重复发送好友申请 |
| 2103 |
已被对方拉黑 |
被拉黑后无法发送申请 |
| 2104 |
申请不存在 |
待处理申请记录不存在或已处理 |
| 2105 |
好友关系不存在 |
尝试操作不存在的好友关系 |
| 2106 |
分组不存在 |
好友分组 ID 无效 |
IM 模块错误码(3000-3099)
| 错误码 |
含义 |
说明 |
| 3001 |
会话不存在 |
IM 会话 ID 无效 |
| 3002 |
非会话成员 |
用户不在该会话中 |
| 3003 |
已被禁言 |
用户在该群聊中被禁言 |
会议模块错误码(4000-4099)
| 错误码 |
含义 |
说明 |
| 4001 |
会议不存在 |
会议号无效 |
| 4002 |
会议密码错误 |
加入会议时密码不匹配 |
| 4003 |
会议已满 |
参会人数已达上限 |
| 4004 |
会议已结束 |
尝试加入已结束的会议 |
系统错误码(5000-5099)
| 错误码 |
含义 |
说明 |
| 5001 |
系统内部错误 |
服务端未知错误 |
| 5002 |
服务暂不可用 |
依赖服务不可用(数据库、Redis 等) |
分页规范
支持分页的接口统一使用以下查询参数:
| 参数 |
类型 |
默认值 |
说明 |
| page |
int |
1 |
页码,从 1 开始 |
| page_size |
int |
20 |
每页数量,最大 100 |
分页响应格式:
文档维护规则
- 新增接口时:在对应端+模块的文档中追加,保持格式一致
- 接口变更时:同步更新文档,必要时在接口描述中标注版本信息
- 新增模块时:在对应端目录下创建新文档,在本 README 导航表中添加链接
- 新增端时:创建新的端目录(如
open/ 开放 API),在导航中添加新分区
- 错误码新增时:在本文档的错误码定义中追加,保持各模块错误码区间不重叠
目录结构