Files
EchoChat/docs/api/im.md
bujinyuan 44fa5a3830 docs: 统一时间格式为亚洲友好的日期时间字符串
所有文档中的时间字段统一为 yyyy-MM-dd HH:mm:ss 格式(Asia/Shanghai):
- 移除 ISO 8601 格式(2026-02-27T10:00:00Z)
- 移除 Unix 时间戳(1740700000)
- 响应字段从 timestamp(int64) 改为 time(string)
- API README 新增「时间格式规范」章节
- 涉及 10 个文档文件

Made-with: Cursor
2026-02-28 09:47:42 +08:00

5.4 KiB
Raw Blame History

即时通讯模块 API (IM)

通用规范(认证方式、响应格式、错误码)见 README.md 消息的实时收发通过 WebSocket 完成,见 websocket.md 本文档中的接口用于会话管理和消息历史查询等非实时操作。


接口列表

方法 路径 权限 说明
GET /api/v1/conversations 需认证 获取会话列表
POST /api/v1/conversations 需认证 创建群聊
GET /api/v1/conversations/:id 需认证 获取会话详情
GET /api/v1/conversations/:id/messages 需认证 获取消息历史
POST /api/v1/conversations/:id/members 需认证 邀请成员加入群聊
DELETE /api/v1/conversations/:id/members/:uid 需认证 移除群聊成员

1. 获取会话列表

GET /api/v1/conversations

权限: 需认证

说明: 返回当前用户的所有会话,按最后消息时间倒序排列。单聊会话的 name/avatar 为空,前端应使用 target_user 的信息展示。

成功响应:

{
    "code": 0,
    "message": "ok",
    "data": [
        {
            "id": 1,
            "type": 1,
            "name": "",
            "avatar": "",
            "target_user": {
                "id": 2,
                "nickname": "李四",
                "avatar": "https://cdn.echochat.com/avatar/2.jpg",
                "online": true
            },
            "last_message": {
                "id": 100,
                "type": 1,
                "content": "你好",
                "sender_id": 2,
                "created_at": "2026-02-27 10:30:00"
            },
            "unread_count": 3,
            "is_pinned": false
        },
        {
            "id": 5,
            "type": 2,
            "name": "产品讨论组",
            "avatar": "https://cdn.echochat.com/group/5.jpg",
            "target_user": null,
            "last_message": {
                "id": 205,
                "type": 1,
                "content": "明天开会",
                "sender_id": 3,
                "created_at": "2026-02-27 11:00:00"
            },
            "unread_count": 0,
            "is_pinned": true,
            "member_count": 8
        }
    ]
}

2. 创建群聊

POST /api/v1/conversations

权限: 需认证

请求参数:

字段 类型 必填 说明
name string 群聊名称
member_ids int[] 初始成员用户 ID 列表(不含自己,至少 2 人)

说明: 创建者自动成为群主role=2被邀请的成员为普通成员role=0


3. 获取会话详情

GET /api/v1/conversations/:id

权限: 需认证,且为该会话成员

成功响应(群聊示例):

{
    "code": 0,
    "message": "ok",
    "data": {
        "id": 5,
        "type": 2,
        "name": "产品讨论组",
        "avatar": "https://cdn.echochat.com/group/5.jpg",
        "owner_id": 1,
        "max_members": 200,
        "member_count": 8,
        "members": [
            { "user_id": 1, "nickname": "张三", "role": 2, "online": true },
            { "user_id": 2, "nickname": "李四", "role": 0, "online": false }
        ],
        "created_at": "2026-02-20 09:00:00"
    }
}

4. 获取消息历史

GET /api/v1/conversations/:id/messages

权限: 需认证,且为该会话成员

查询参数:

参数 类型 默认值 说明
before_id int 获取此消息 ID 之前的消息(用于向上翻页加载历史)
limit int 30 每次获取数量,最大 50

成功响应:

{
    "code": 0,
    "message": "ok",
    "data": {
        "messages": [
            {
                "id": 98,
                "sender_id": 1,
                "sender_name": "张三",
                "sender_avatar": "https://...",
                "type": 1,
                "content": "明天几点开会?",
                "extra": {},
                "status": 1,
                "created_at": "2026-02-27 10:28:00"
            },
            {
                "id": 99,
                "sender_id": 2,
                "sender_name": "李四",
                "sender_avatar": "https://...",
                "type": 2,
                "content": "",
                "extra": {
                    "url": "https://cdn.echochat.com/img/xxx.jpg",
                    "width": 800,
                    "height": 600,
                    "thumbnail": "https://cdn.echochat.com/img/xxx_thumb.jpg"
                },
                "status": 1,
                "created_at": "2026-02-27 10:29:00"
            }
        ],
        "has_more": true
    }
}

5. 邀请成员加入群聊

POST /api/v1/conversations/:id/members

权限: 需认证,且为该群聊成员

请求参数:

字段 类型 必填 说明
user_ids int[] 要邀请的用户 ID 列表

可能的错误码: 3001会话不存在3002非会话成员4003超出人数上限


6. 移除群聊成员

DELETE /api/v1/conversations/:id/members/:uid

权限: 需认证,且为群主或管理员

路径参数:

  • id — 会话 ID
  • uid — 被移除的用户 ID

可能的错误码: 3001, 3002, 1003非群主/管理员无权操作)