子区管理

大约 20 分钟

子区管理

环信即时通讯 IM 提供多个接口实现子区管理,包括子区的创建、获取、修改和删除等。

单个 app 下的子区总数默认为 10 万,如需调整请联系商务。

前提条件

要调用环信即时通讯 RESTful API,请确保满足以下要求:

公共参数

请求参数

参数类型是否必需描述
hostString环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 获取环信即时通讯 IM 的信息
org_nameString环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 获取环信即时通讯 IM 的信息
app_nameString你在环信即时通讯云控制台创建应用时填入的应用名称。详见 获取环信即时通讯 IM 的信息
group_idString群组 ID。
usernameString用户 ID。

响应参数

参数类型描述
actionString请求方法。
organizationString环信即时通讯 IM 为每个公司(组织)分配的唯一标识,与请求参数 org_name 相同。
applicationString应用在系统内的唯一标识。该标识由系统生成,开发者无需关心。
applicationNameString你在环信即时通讯云控制台创建应用时填入的应用名称,与请求参数 app_name 相同。
uriString请求 URL。
pathString请求路径,属于请求 URL 的一部分,开发者无需关注。
entitiesJSON响应实体。
dataJSON实际获取的数据详情。
uuidString用户在系统内的唯一标识。该标识由系统生成,开发者无需关心。
createdLong群组创建时间,Unix 时间戳,单位为毫秒。
timestampLongUnix 时间戳,单位为毫秒。
durationInt从发送请求到响应的时长,单位为毫秒。
propertiesString响应属性。

认证方式

环信即时通讯 RESTful API 要求 Bearer HTTP 认证。每次发送 HTTP 请求时,都必须在请求头部填入如下 Authorization 字段:

Authorization: Bearer YourAppToken

为提高项目的安全性,环信使用 Token(动态密钥)对即将登录即时通讯系统的用户进行鉴权。即时通讯 RESTful API 推荐使用 app token 的鉴权方式,详见 使用 App Token 鉴权

管理子区

获取 app 中的子区

分页获取应用下的子区列表。

HTTP 请求

GET https://{host}/{org_name}/{app_name}/thread?limit={limit}&cursor={cursor}&sort={sort}
路径参数

参数及描述详见 公共参数

查询参数
参数类型是否必需描述
limitInt每次期望返回的子区数量,取值范围为 [1,50],默认值为 50
cursorString数据查询的起始位置。
sortString获取的子区的排序顺序:
- asc:按子区创建时间的正序;
- (默认)desc:按子区创建时间的倒序。
请求 header
参数类型是否必需描述
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功,响应包体中包含以下字段:

字段类型描述
entitiesJSON Array响应数据。
- idString子区 ID。
properties.cursorString查询游标,指定下次查询的起始位置。

其他字段及描述详见 公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考 错误码 了解可能的原因。

示例

请求示例
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X GET https://XXXX/XXXX/XXXX/thread -H 'Authorization: Bearer <YourAppToken>'
响应示例
{
  "action": "get",
  "applicationName": "testapp",
  "duration": 7,
  "entities": [
    {
      "id": "1XXXX8"
    }
  ],
  "organization": "XXXX",
  "properties": {
    "cursor": "ZGXXXXTE"
  },
  "timestamp": 1650869750247,
  "uri": "https://XXXX/XXXX/XXXX/thread"
}

错误码

如果返回的 HTTP 状态码非 200,表示请求失败,可能提示以下错误码:

HTTP 状态码错误类型错误提示可能原因处理建议
400group_errorquery param reaches limit.分页参数 limit 的值过大。检查查询参数 limit 是否在取值范围([1,50])内。
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
403group_errorthread not open.子区功能未开通。请在环信即时通讯控制台开通子区服务。

关于其他错误,你可以参考 响应状态码 了解可能的原因。

获取单个用户加入的所有子区(分页获取)

根据用户 ID 获取该用户加入的所有子区。

HTTP 请求

GET https://{host}/{org_name}/{app_name}/threads/user/{username}?limit={limit}&cursor={cursor}&sort={sort}
路径参数

参数及描述详见 公共参数

查询参数
参数类型是否必需描述
limitInt每次期望返回的子区数量,取值范围为 [1,50],默认值为 50
cursorString数据查询的起始位置。
sortString获取的子区的排序顺序:
- asc:按用户加入子区的时间的正序;
- (默认)desc:按用户加入子区的时间的倒序。
请求 header
参数类型是否必需描述
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功,响应包体中包含以下字段:

字段类型描述
entitiesJSON Array响应数据。
- nameString子区名称。
- ownerString子区创建者的用户 ID。
- entities.idString子区 ID。
- entities.msgIdString子区的父消息 ID。
- entities.groupIdString子区所属群组 ID。
- entities.createdLong子区创建时间,Unix 时间戳。
properties.cursorString查询游标,指定服务器下次查询的起始位置。

其他字段及描述详见 公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考 错误码 了解可能的原因。

示例

请求示例
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X GET https://XXXX/XXXX/XXXX/threads/user/test4 -H 'Authorization: Bearer <YourAppToken>'
响应示例
{
  "action": "get",
  "applicationName": "testapp",
  "duration": 4,
  "entities": [
    {
      "name": "1",
      "owner": "test4",
      "id": "17XXXX69",
      "msgId": "1920",
      "groupId": "17XXXX61",
      "created": 1650856033420
    }
  ],
  "organization": "XXXX",
  "properties": {
    "cursor": "ZGXXXXzg"
  },
  "timestamp": 1650869972109,
  "uri": "https://XXXX/XXXX/XXXX/threads/user/test4"
}

错误码

如果返回的 HTTP 状态码非 200,表示请求失败,可能提示以下错误码:

HTTP 状态码错误类型错误提示可能原因处理建议
400group_errorquery param reaches limit.分页参数 limit 的值过大。检查查询参数 limit 是否在取值范围([1,50])内。
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
403group_errorthread not open.子区功能未开通。请在环信即时通讯控制台开通子区服务。

关于其他错误,你可以参考 响应状态码 了解可能的原因。

获取单个用户在指定群组中加入的所有子区 (分页获取)

根据用户 ID 获取该用户在指定群组中加入的所有子区。

HTTP 请求

GET https://{host}/{org_name}/{app_name}/threads/chatgroups/{group_id}/user/{username}?limit={limit}&cursor={cursor}&sort={sort}
路径参数

参数及描述详见 公共参数

查询参数
参数类型是否必需描述
limitInt每次期望返回的子区数量,取值范围为 [1,50],默认值为 50。该参数仅在分页获取时为必需。
cursorString数据查询的起始位置。该参数仅在分页获取时为必需。
sortString获取的子区的排序顺序:
- asc:按用户加入子区的时间的正序;
- (默认)desc:按用户加入子区的时间的倒序。
请求 header
参数类型是否必需描述
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功,响应包体中包含以下字段。

若为最后一页数据,响应中仍会返回 cursor,而且获取的子区数量小于请求中的 limit 的值;若响应中不再返回子区数据,表示你已经获取该群组下的所有子区数据。

字段类型描述
entitiesJSON Array响应数据。
- nameString子区名称。
- ownerString子区的创建者。
- idString子区 ID。
- msgIdString子区的父消息 ID。
- groupIdString子区所属群组 ID。
- createdLong子区创建时间,Unix 时间戳,单位为毫秒。
- cursorString查询游标,指定下次查询的起始位置。

其他字段及描述详见 公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考 错误码 了解可能的原因。

示例

请求示例
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X GET https://XXXX/XXXX/XXXX/threads/chatgroups/XXXX/user/XXXX -H 'Authorization: Bearer <YourAppToken>'
响应示例
{
  "action": "get",
  "applicationName": "testapp",
  "duration": 4,
  "entities": [
    {
      "name": "1",
      "owner": "test4",
      "id": "17XXXX69",
      "msgId": "1920",
      "groupId": "17XXXX61",
      "created": 1650856033420
    }
  ],
  "organization": "XXXX",
  "properties": {
    "cursor": "ZGXXXXNzg"
  },
  "timestamp": 1650869972109,
  "uri": "https://XXXX/XXXX/XXXX/threads/user/test4"
}

错误码

如果返回的 HTTP 状态码非 200,表示请求失败,可能提示以下错误码:

HTTP 状态码错误类型错误提示可能原因处理建议
400group_errorquery param reaches limit.分页参数 limit 的值过大。检查查询参数 limit 是否在取值范围([1,50])内。
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
403group_errorthread not open.子区功能未开通。请在环信即时通讯控制台开通子区服务。

关于其他错误,你可以参考 响应状态码 了解可能的原因。

创建子区

创建子区。

HTTP 请求

POST https://{host}/{org_name}/{app_name}/thread
路径参数

参数及描述详见 公共参数

请求 header
参数类型是否必需描述
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。
请求 body
参数类型是否必需描述
group_idString子区所在的群组 ID。
nameString子区名称,不能超过 64 个字符。
msg_idString子区的父消息 ID。
ownerString子区的所有者,即创建子区的群成员。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功,响应包体中包含以下字段:

字段类型描述
data.thread_idString创建的子区 ID。

其他字段及描述详见 公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考 错误码 了解可能的原因。

示例

请求示例
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X POST https://XXXX/XXXX/XXXX/thread -H 'Authorization: Bearer <YourAppToken>' -H 'Content-Type:application/json' -d '{
    "group_id": 179800091197441,
    "name": "1",
    "owner": "test4",
    "msg_id": 1234
}'
响应示例
{
    "action": "post",
    "applicationName": "testapp",
    "duration": 4,
    "data": {
        "thread_id": "1XXXX7"
    },
    "organization": "XXXX",
    "timestamp": 1650869972109,
    "uri": "https://XXXX/XXXX/XXXX/thread"
}

错误码

如果返回的 HTTP 状态码非 200,表示请求失败,可能提示以下错误码:

HTTP 状态码错误类型错误提示可能原因处理建议
400group_errorthread must on group message to create.消息 ID 不是群消息。输入正确的群消息 ID。
400group_errorthread name limit reached.子区名称过长。请提供长度范围内的子区名称。子区名称长度不能超过 64 个字符。
400param_illegalFailed to read HTTP messagebody 参数不合法。检查 body 参数是否合法。
400group_errormsg not belong to app.消息不属于 app。输入合法的消息 ID。
400group_errormsg not belong to group .消息不属于群。输入合法的消息 ID。
400group_errorthread not nested.不允许在子区的消息上创建子区。输入合法的消息 ID。
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
403group_errorthread number has reached limit.appKey 创建子区达到上限。删除废弃的子区或者联系商务调整上限。单个 app 下的子区总数默认为 10 万。
403group_erroruser join thread reach limit.用户加入的子区达到上限。退出不用的子区或者联系商务调整上限。单个用户默认最多可以加入 100,000 个子区。
403group_errormsg already create thread.not allow to create.消息上已经创建子区。传入其他消息 ID 或者查询该子区后加入。
403group_errorthread not open.子区功能未开通。请在环信即时通讯控制台开通子区服务。
404group_erroruser not in group.子区所有者不在群里面。输入已加入群的用户 ID。
404group_errormsg not exist.消息不存在。输入存在的消息 ID。
404group_errorgroup not found.群组不存在。检查创建子区的群组是否存在。

关于其他错误,你可以参考 响应状态码 了解可能的原因。

修改子区

修改指定子区。

HTTP 请求

PUT https://{host}/{org_name}/{app_name}/thread/{thread_id}
路径参数
参数类型是否必需描述
thread_idString子区 ID。

其他参数及描述详见 公共参数

请求 header
参数类型是否必需描述
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。
请求 body
参数类型是否必需描述
nameString要修改的子区的名称。修改后的子区名称不能超过 64 个字符。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功,响应包体中包含以下字段:

字段类型描述
data.nameString修改后的名称。

其他字段及描述详见 公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考 错误码 了解可能的原因。

示例

请求示例
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X PUT https://XXXX/XXXX/XXXX/thread/1XXXX7 -H 'Authorization: Bearer <YourAppToken>' -d '{"name": "test4"}'
响应示例
{
    "action": "put",
    "applicationName": "testapp",
    "duration": 4,
    "data": {
        "name": "test4"
    },
    "organization": "XXXX",
    "timestamp": 1650869972109,
    "uri": "https://XXXX/XXXX/XXXX/thread"
}

错误码

如果返回的 HTTP 状态码非 200,表示请求失败,可能提示以下错误码:

HTTP 状态码错误类型错误提示可能原因处理建议
400group_errorthread name limit reached.子区名称过长。请提供长度范围内的子区名称。子区名称长度不能超过 64 个字符。
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
403group_errorthread not open.子区功能未开通。请在环信即时通讯控制台开通子区服务。
404group_errorthread not found.子区不存在。输入正确的子区 ID。

关于其他错误,你可以参考 响应状态码 了解可能的原因。

删除子区

删除指定子区。

HTTP 请求

DELETE https://{host}/{org_name}/{app_name}/thread/{thread_id}
路径参数
参数类型是否必需描述
thread_idString子区 ID。

其他参数及描述详见 公共参数

请求 header
参数类型是否必需描述
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功。响应包体中包含以下字段:

字段类型描述
data.statusString删除结果,ok 表示成功删除。

其他字段及描述详见 公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考 错误码 了解可能的原因。

示例

请求示例
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X DELETE https://XXXX/XXXX/XXXX/thread/1XXXX7 -H 'Authorization: Bearer <YourAppToken>'
响应示例
{
  "action": "delete",
  "applicationName": "testapp",
  "duration": 4,
  "data": {
    "status": "ok"
  },
  "organization": "XXXX",
  "timestamp": 1650869972109,
  "uri": "https://XXXX/XXXX/XXXX/thread"
}

错误码

如果返回的 HTTP 状态码非 200,表示请求失败,可能提示以下错误码:

HTTP 状态码错误类型错误提示可能原因处理建议
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
403group_errorthread not open.子区功能未开通。请在环信即时通讯控制台开通子区服务。
404group_errorthread not found.子区不存在。输入正确的子区 ID。

关于其他错误,你可以参考 响应状态码 了解可能的原因。

管理子区成员

环信即时通讯 IM 提供多个接口实现子区成员管理,包括对加入和踢出子区等管理功能。

获取子区成员列表(分页)

获取指定子区的成员列表。

HTTP 请求

GET https://{host}/{org_name}/{app_name}/thread/{thread_id}/users?limit={N}&cursor={cursor}
路径参数

参数及描述详见 公共参数

查询参数
参数类型是否必需描述
limitInt每次期望返回的子区成员数量,取值范围为 [1,50],默认值为 50。该参数仅在分页获取时为必需。
cursorString数据查询的起始位置。该参数仅在分页获取时为必需。
请求 header
参数类型是否必需描述
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功。响应包体中包含以下字段:

字段类型描述
affiliationsArray子区成员的用户 ID 列表。
properties.cursorString查询游标,指定下次查询的起始位置。

其他字段及描述详见 公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考 错误码 了解可能的原因。

示例

请求示例
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X GET https://XXXX/XXXX/XXXX/thread/1XXXX7/users -H 'Authorization: Bearer <YourAppToken>'
响应示例
{
  "action": "get",
  "data": {
    "affiliations": ["test4"]
  },
  "duration": 4,
  "properties": {
    "cursor": "ZGNXXXXyMA"
  },
  "timestamp": 1650872048366,
  "uri": "https://XXXX/XXXX/XXXX/thread/1XXXX8/users"
}

错误码

如果返回的 HTTP 状态码非 200,表示请求失败,可能提示以下错误码:

HTTP 状态码错误类型错误提示可能原因处理建议
400group_errorquery param reaches limit.分页参数 limit 的值过大。检查查询参数 limit 是否在取值范围内。
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
403group_errorthread not open.子区功能未开通。请在环信即时通讯控制台开通子区服务。
404group_errorthread not found.子区不存在。输入正确的子区 ID。

关于其他错误,你可以参考 响应状态码 了解可能的原因。

用户批量加入子区

用户批量加入指定的子区。

HTTP 请求

POST https://{host}/{org_name}/{app_name}/thread/{thread_id}/users
路径参数
参数类型是否必需描述
thread_idString子区 ID。

其他参数及描述详见 公共参数

请求 header
参数类型是否必需描述
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。
请求 body
参数类型是否必需备注
usernamesList批量加入子区的用户 ID 列表。每次最多支持 10 个用户加入子区。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功。响应包体中包含以下字段:

字段类型描述
data.statusString添加结果,ok 表示成功添加。

其他字段及描述详见 公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考 错误码 了解可能的原因。

示例

请求示例
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X POST https://XXXX/XXXX/XXXX/thread/1XXXX7/users -d '{
"usernames": [
"test2",
"test3"
]
}' -H 'Authorization: Bearer <YourAppToken>'
响应示例
{
  "action": "post",
  "applicationName": "testapp",
  "data": {
    "status": "ok"
  },
  "duration": 1069,
  "organization": "XXXX",
  "timestamp": 1650872649160,
  "uri": "https://XXXX/XXXX/XXXX/thread/1XXXX8/joined_thread"
}

错误码

如果返回的 HTTP 状态码非 200,表示请求失败,可能提示以下错误码:

HTTP 状态码错误类型错误提示可能原因处理建议
400group_errorrequest body reaches limit.请求 body 中的 usernames 参数的值已超过上限。请检查请求 body 中的 usernames 参数的值是否超过了 10。每次最多支持 10 个用户加入子区。
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
403group_errorthread not open.子区功能未开通。请在环信即时通讯控制台开通子区服务。
403group_erroruser join thread reach limit.用户加入的子区达到上限。退出不用的子区或者联系商务调整上限。
404group_errorthread not found.子区不存在输入正确的子区 ID。

关于其他错误,你可以参考 响应状态码 了解可能的原因。

批量踢出子区成员

批量踢出子区成员。

HTTP 请求

DELETE https://{host}/{org_name}/{app_name}/thread/{thread_id}/users
路径参数
参数类型是否必需描述
thread_idString子区 ID。

其他参数及描述详见 公共参数

请求 header
参数类型是否必需描述
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。
请求 body
参数类型是否必需备注
usernamesList批量踢出子区的用户 ID 列表。每次最多可踢出 10 个子区成员。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功。响应包体中包含以下字段:

字段类型描述
entitiesJSON Array响应数据。
- resultBool操作结果。
- true:成功;
- false:失败。
- userString被踢出子区的用户 ID。

其他字段及描述详见 公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考 错误码 了解可能的原因。

示例

请求示例
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X DELETE https://XXXX/XXXX/XXXX/thread/1XXXX7/users -H 'Authorization: Bearer <YourAppToken>'
响应示例
{
  "action": "delete",
  "applicationName": "testy",
  "duration": 12412,
  "entities": [
    {
      "result": false,
      "user": "test2"
    },
    {
      "result": false,
      "user": "test6"
    }
  ],
  "organization": "XXXX",
  "timestamp": 1650874050419,
  "uri": "https://XXXX/XXXX/XXXX/thread/1XXXX8/users"
}

错误码

如果返回的 HTTP 状态码非 200,表示请求失败,可能提示以下错误码:

HTTP 状态码错误类型错误提示可能原因处理建议
400group_errorrequest body reaches limit.请求 body 中的 usernames 参数的值已超过上限。请检查请求 body 中的 usernames 参数的值是否超过了 10。每次最多可踢出 10 个子区成员。
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
404group_errorthread not found.子区不存在输入正确的子区 ID。
403group_errorthread not open.子区功能未开通。请在环信即时通讯控制台开通子区服务。

关于其他错误,你可以参考 响应状态码 了解可能的原因。