Table of Contents
15.13 用户侧删除 IM 消息【新增,待联调】
DELETE /tieup/api/v1/im/messages
Content-Type: application/json
Authorization: Bearer <access_token>
请求体:
{
"message_nos": [
"MSG202607030001",
"MSG202607030002"
]
}
请求字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
message_nos |
array | 是 | 要从当前账号当前身份侧删除的平台消息编号数组,最少 1 条、最多 100 条 |
message_nos[] |
string | 是 | 消息编号,最大 64 字符;同一请求中不可重复 |
鉴权:需要 Authorization: Bearer <access_token>。删除身份由 Token 的 current_identity 决定,客户端不能在请求体指定。粉丝端可删除本人订阅可见时间窗内的定向消息或群发消息;偶像端可删除自己超级群内的消息。自己发送、接收及已撤回占位消息均可删除。
响应字段:
| 字段 | 类型 | 说明 |
|---|---|---|
requested_count |
integer | 校验通过后的请求消息编号数量 |
deleted_count |
integer | 本次新写入用户侧删除记录的数量 |
already_deleted_count |
integer | 当前账号当前身份此前已经删除或本次并发请求已先删除的数量 |
ignored_count |
integer | 不存在、无权限、当前身份不可见或状态不允许处理的数量;不返回逐条原因,避免泄露消息存在性 |
read_count |
integer | 删除前本次新标记已读的接收消息数量;群发已读关闭时只统计定向消息 |
queued_count |
integer | 本次成功投递异步落库队列的群发已读事件数量;群发已读关闭时固定为 0 |
完整响应示例:
{
"code": 200,
"message": "成功",
"data": {
"requested_count": 2,
"deleted_count": 2,
"already_deleted_count": 0,
"ignored_count": 0,
"read_count": 1,
"queued_count": 0
}
}
说明:
- 该接口是“仅自己这边删除”,服务端只写
tieup_im_message_delete可见性记录,不删除tieup_im_message_stat、tieup_im_message_content,不调用融云撤回,也不影响对方、其他粉丝或同账号另一身份。 - 删除未读接收消息时,服务端先复用现有已读事务或群发 Redis + 队列链路;新未读消息未完成已读时不写删除记录并返回失败,客户端可以安全重试。
- 重复请求和并发请求由
(viewer_user_id, viewer_identity, message_no)唯一键保证幂等;合法请求即使全部为已删除或忽略项也返回code=200,客户端根据计数字段处理。 - 删除后,当前身份的历史消息、分页总数、最后消息、会话排序和未读数均排除这些消息。偶像删除被引用的粉丝消息后,不能再以该消息发起新的引用回复;其他已存在消息中的
quoteInfo引用定位信息继续保留,但当前身份不再通过originMessage获取已删除原消息正文。 - 接口成功后,客户端必须同步从当前设备融云 SDK 本地数据库或 UI 数据源移除对应消息;后端无法自动清理设备已有缓存。其他设备重新请求本地历史接口时会按服务端删除记录保持不可见。
- 当前不提供恢复接口,用户侧删除记录长期生效;撤回接口仍用于“发送者撤回且双方显示撤回占位”,两者语义不得混用。