IM REST API
The JMessage API provides developers with an HTTP API for related IM functionality.
Addresses of these API are unified (note that unlike the Push API): https://api.im.jpush.cn
HTTP Authentication
Authentication uses the HTTP Basic mechanism, which adds a field (Key/Value pair) to the HTTP Header (header):
Authorization: Basic base64_auth_string
The generation algorithm of base64_auth_string is: base64(appKey:masterSecret)
That is, add a colon to the appKey, plus the string assembled by masterSecret, and do a base64 conversion.
Overview of User Object Fields
Parameter | Meaning | Limits of character length |
---|---|---|
username | User login name | Byte(4~128) |
password | Login password | Byte(4~128) |
appkey | Appkey to which the user belongs | |
nickname | User nickname | Byte(0~64) |
birthday | Birthday | yyyy-MM-dd HH:mm:ss |
gender | Gender 0 - Unknown, 1 - Male, 2 - Female | |
signature | User signature | Byte(0~250) |
region | User area | Byte(0~250) |
address | Detailed address | Byte(0~250) |
ctime | User creation time | |
mtime | Last modified time | |
extras | User-defined json objects | Byte(0~512) |
User Registration
Register as user
Batch registration of users to JMessage server, up to 500 users in one batch registration
POST /v1/users/
Example Request
[{"username": "dev_fang", "password": "password"}]
Request Params
JSON Array.
- username (required)
- At the beginning: letters or numbers
- letters, numbers, underscores
- English, minus, @
- password (required) JMessage server will be saved with MD5 encryption.
- nickname (optional)
- Unsupported characters: English characters: \n \r\n
- avatar (optional)
- Need to fill in the media_id obtained from the uploading interface of files
- birthday (optional) example: 1990-01-24
- yyyy-MM-dd
- signature (optional)
- Supported characters: All, including Emoji
- gender (optional)
- 0 - Unknown, 1 - Male, 2 - Female
- region (optional)
- Supported characters: All, including Emoji
- address (optional)
- Supported characters: All, including Emoji
- extras (optional) user-defined json objects
Example Response
< HTTP/1.1 201 Created
< Content-Type: application/json
<
[{"username": "dev_fang" }]
Response Params
JSON Array.
- username
- Error: When an error occurs in the registration of a user, there is an error object in the object indicating the cause of the error.
- 899003: parameter error, Request Body does not meet the requirements
- 899001: user already exists
Admin Registration
Admin Register (Administrator api sends permissions of message interface)
POST /v1/admins/
Example Request
{"username": "dev_fang", "password": "password"}
Request Params
- username Byte(4-128) supported character
- At the beginning: letters or numbers
- letters, numbers, underscores
- English, minus, @
- password Byte(4-128) Characters are not limited
- nickname (optional)
- Unsupported characters: English characters: \n \r\n
- avatar (optional)
- Need to fill in the media_id obtained from the uploading interface of files
- birthday (optional) birthday example: 1990-01-24
- yyyy-MM-dd
- signature (optional)
- Supported characters: All, including Emoji
- gender (optional)
- 0 - Unknown, 1 - Male, 2 - Female
- region (optional)
- Supported characters: All, including Emoji
- address (optional)
- Supported characters: All, including Emoji
- extras (optional) user-defined json objects
Example Response
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
GetAdminsListByAppkey: Get admin list of app
GET /v1/admins?start={start}&count={count}
Example Request
Request Header
GET /admins?start=1&count=30
Acct: application/json
Request Body
- N/A
request params
- start: record position of starting, starts from 0
- count: query number, supports up to 500
Example Response
Response Header
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Response Data
{
"total":1233,
"start":1100,
"count":3,
"users":
[{ "username": "cai",
"nickname": "hello",
"mtime": "2015-01-01 00:00:00",
"ctime": "2015-01-01 00:00:00"
}, {"username": "yi",
"nickname": "hello",
"mtime": "2015-01-01 00:00:00",
"ctime": "2015-01-01 00:00:00"
}, {"username": "huang",
"nickname": "hello",
"mtime": "2015-01-01 00:00:00",
"ctime": "2015-01-01 00:00:00"
}]}
User Maintenance
Get user information
GET /v1/users/{username}
Request Params
- username: Fill to the request path
Example Response
{
"username": "javen",
"nickname": "hello",
"avatar": "/avatar",
"birthday": "1990-01-24 00:00:00",
"gender": 0,
"signature": "orz",
"region": "shenzhen",
"address": "shenzhen",
"mtime": "2015-01-01 00:00:00",
"ctime": "2015-01-01 00:00:00"}
Instructions
In addition to the username mtime ctime, these three sub-sections, if there is no json for the the remaining fields, then there is no corresponding key.
Update user information
PUT /v1/users/{username}
Example Request
{
"nickname": "Hello JMessage"
}
Request Params
- nickname (optional)
- Unsupported characters: English characters: \n \r\n
- avatar (optional)
- Need to fill in the media_id obtained from the uploading interface of files
- birthday (optional) birthday example: 1990-01-24
- yyyy-MM-dd
- signature (optional)
- Supported characters: All, including Emoji
- gender (optional)
- 0 - Unknown, 1 - Male, 2 - Female
- region (optional)
- Supported characters: All, including Emoji
- address (optional) address
- Supported characters: All, including Emoji
- extras (optional) user-defined json objects
Example Response
< HTTP/1.1 204
< Content-Type: application/json; charset=utf-8
Query user online status
Get /v1/users/{username}/userstat
Example Request
Request Header
Get /v1/users/caiyh/userstat
Content-Type: application/json; charset=utf-8
Request Params
- username
Request Body
- N/A
Example Response
Response Header
HTTP/1.1 200 NO Content
Content-Type: application/json; charset=utf-8
Response Data
{"login":true, "online": false}
This interface is not applicable to multi-end online. Please use batch status interface for multi-end online.
Error Code
- 899003: username is illegal
- 899002: user does not exist
Query bulk user online status
Post /v1/users/userstat
Example Request
Request Header
Post /v1/users/userstat
Content-Type: application/json; charset=utf-8
Request Params
- N/A
Request Body
["USER1","USER2"]
Example Response
Response Header
HTTP/1.1 200
Content-Type: application/json; charset=utf-8
Response Data
[
{
"devices": [],
"username": "caiyh01"
},
{
"devices": [{
"login": false,
"online": false,
"platform": "a"
}],
"username": "Rauly"
}
]
- devices: Array of device login status. Array as empty if no login.
- Platform SDK Platforms: a-Android, i-iOS, j-JS, w-Windows
Error Code
- 899003: username is illegal
- 899002: user does not exist
Change password
PUT /v1/users/{username}/password
Request Header
PUT /v1/users/javen/password
Example Request
{
"new_password": "654321"
}
Request Params
- new_password (required)
Example Response
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Delete users
DELETE /v1/users/{username}
Request Params
- username
Example Response
< HTTP/1.1 204 NO CONTENT
< Ctent-Type: application/json; charset=utf-8
Delete users in batches
DELETE /v1/users/
Request Body
["USER1","USER2"]
- username: Array of usernames. (Maximum support for deleting 100 users at the same time)
Example Response
< HTTP/1.1 20 NO CONTENT
< Content-Type: application/json; charset=utf-8
Add blacklist
Put /v1/users/{username}/blacklist
Example Request
Request Header
Put /v1/users/{username}/blacklist
Content-Type: application/json; charset=utf-8
Request Params
- JsonArray
- username的JsonArray
Request Body
[
"test1",
"test2"
]
Example Response
Response Header
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Remove blacklist
Delete /v1/users/{username}/blacklist
Example Request
Request Header
Delete /v1/users/{username}/blacklist
Content-Type: application/json; charset=utf-8
Request Params
- JsonArray
- username的JsonArray
Request Body
[
"test1",
"test2"
]
Example Response
Response Header
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
List of blacklist
Get /v1/users/{username}/blacklist
Example Request
Request Header
Put /v1/users/{username}/blacklist
Content-Type: application/json; charset=utf-8
Request Params
- username
Request Body
- N/A
Example Response
Response Header
HTTP/1.1 200 NO Content
Content-Type: application/json; charset=utf-8
Response Data
[{
"username": "javen",
"nickname": "hello",
"avatar" = "/avatar",
"birthday": "1990-01-24 00:00:00",
"gender": 0,
"signature": "orz",
"region": "shenzhen",
"address": "shenzhen",
"mtime": "2015-01-01 00:00:00",
"ctime": "2015-01-01 00:00:00"
}]
Get user list
GET /v1/users/?start={start}&count={count}
Request Params
- start: Number of records started
- count: Number of records to retrieve
Example Response
< HTTP/1.1 200
< Content-Type: application/json
{
"total": 12580,
"start": 1100,
"count": 100,
"users":
[{ "username": "cai",
"nickname": "hello",
"mtime": "2015-01-01 00:00:00",
"ctime": "2015-01-01 00:00:00"
}, {"username": "yi",
"nickname": "hello",
"mtime": "2015-01-01 00:00:00",
"ctime": "2015-01-01 00:00:00"
},{ "username": "huang",
"nickname": "hello",
"mtime": "2015-01-01 00:00:00",
"ctime": "2015-01-01 00:00:00"
}]
}
Do-Not-Disturb
Do-Not-Disturb settings
POST /v1/users/{username}/nodisturb
Example Request
Request Header
POST /v1/users/{username}/nodisturb
Content-Type: application/json; charset=utf-8
Request Params
- single: single chat DND, supports add remove array (optional)
- group: group chat DND, supports add remove array (optional)
- global: global DND, 0 or 1 0 means closed, 1 means open (optional)
Request Body
{
"single":{
"add":[
"username1",
"username2"
]
},
"group":{
"add":[
110000101
],
"remove":[
1000001111
]
},
"global":0
}
Example Response
Response Header
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Error Code
- 899003: username is illegal;
- 899002: user does not exist;
- 899051: group does not exist
- 899052: sets group
- Blocked, group blocking is turned on
- 99053: sets group message block and the group blocking is turned off
Disable users
PUT /v1/users/{username}/forbidden?disable={disable}
Request Params
- disable boolean, true for disabled users, false for activated users
Example Response
< HTTP/1.1 204 NO CONTENT
< Content-Type: application/json
Message Related
Send a message
POST /v1/messages
Parameter | Meaning |
---|---|
version | Version number is currently 1 (required) |
target_type | Target type: single - person, group – group, chatroom - chat room (required) |
from_type | The sender's identity is currently restricted to the admin user and must be registered as an admin user (required) |
msg_type | Message type: text, image, custom message (msg_body is json object, server does not check) voice (required) |
target_id | Target id: single to fill username, group to fill group id, chatroom to fill chatroomid (required) |
target_appkey | Cross-app target appkey (optional) |
from_id | Sender's username (required) |
from_name | Sender’s display name (optional) |
target_name | Recipient’s display name (optional) |
no_offline | Whether the message is stored offline, true or false, defaults to false, indicating that it needs to be stored offline (optional) |
no_notification | Whether the message is displayed in the notification bar, true or false, the default is false, which means to display in the notification bar (optional) |
notification | Custom notification bar display (optional) |
notification->title | Title of the notification (optional) |
notification->alert | Content of notification (optional) |
msg_body | The body of the Json object is limited to 4096 bytes |
When msg_type is text, the format of msg_body is as follows | |
msg_body -> text | Message content (required) |
msg_body-> extras | Optional json objects. Developers can customize the extra key value (optional) |
When msg_type is an image, msg_body is the json returned by the uploaded image in the following format | |
msg_body->media_id | String: The key returned by the server after the file is uploaded. It is used to generate the downloaded URL (required) |
msg_body->media_crc32 | The crc32 checksum of a long file, used to download the checksum of the large image (required) |
msg_body->width | Int: Original width of image (required) |
msg_body->height | Int: Original height of image (required) |
msg_body->format | String: Image format (required) |
msg_body->hash | String: Image hash (optional) |
msg_body->fsize | Int: File size (bytes) (required) |
When msg_type is voice, msg_body is the json returned by uploading voice. The format is as follows: | |
msg_body->media_id | String: The key returned by the server after the file is uploaded. It is used to generate the downloaded URL (required) |
msg_body->media_crc32 | The crc32 checksum of a long file, used to download the checksum of the large image (required) |
msg_body->duration | Int: Audio duration (required) |
msg_body->hash | String: Audio hash (optional) |
msg_body->fsize | Int: File size (bytes) (required) |
Example Request
msg_type:text
{
"version": 1,
"target_type": "single",
"target_id": "javen",
"from_type": "admin",
"from_id": "fang",
"msg_type": "text",
"msg_body": {
"extras": {},
"text": "Hello, JMessage!"
}
}
msg_type:image
{
"version": 1,
"target_type": "single",
"target_id": "javen",
"from_type": "admin",
"from_id": "fang",
"msg_type": "image",
"msg_body": {
"media_id": "qiniu/image/CE0ACD035CBF71F8",
"media_crc32":2778919613,
"width":3840,
"height":2160,
"fsize":3328738,
"format":"jpg"
}
}
msg_type:voice
{
"version": 1,
"target_type": "single",
"target_id": "ppppp",
"from_type": "admin",
"from_id": "admin_caiyh",
"msg_type": "voice",
"msg_body": {
"media_id": "qiniu/voice/j/A96B61EB3AF0E5CDE66D377DEA4F76B8",
"media_crc32":1882116055,
"hash":"FoYn15bAGRUM9gZCAkvf9dolVH7h",
"fsize" :12344;
"duration": 6
}
}
msg_type:custom
{
"version": 1,
"target_type": "single",
"target_id": "ppppp",
"from_type": "admin",
"from_id": "admin_caiyh",
"msg_type": "voice",
"msg_body": {
json define yourself
}
}
Request Params
- JSON Object.
- Follow the protocol document: IM Message Protocol
- This api can only be sent by admin user
Example Response
< HTTP/1.1 201 Created
< Content-Type: application/json
<
{"msg_id": 43143728109, "msg_ctime":1493794522950}
msg_ctime: time stamp created the message
Error Code
- 899003: parameter error, Request Body parameter does not meet the requirements
- 899002: user does not exist, and target_id or from_id does not exist
- 899016: from_id does not have permission to send messages
Retract message
POST /v1/messages/{username}/{msgid}/retract
Example Request
Request Header
POST /v1/messages/{username}/{msgid}/retract
Request Body
- N/A
Request Params
Parameter | Meaning | Note |
---|---|---|
msgid | Message msgid | |
username | Username who send this msg |
Example Response
Response Header
HTTP/1.1 204 No Content
Content-Type: application/json; charset=utf-8
Error Code
- 855001: Exceed the withdrawal time. The effective withdrawal time was within 3 minutes after the message was sent.
- 855003: Revocation message does not exist
- 855004: Message has been withdrawn
Download and Upload Media Files
Download Document
GET /v1/resource?mediaId={mediaId}
Example Request
Request Header
GET /v1/resource?mediaId={mediaId}
Request Body
- N/A
Request Params
Parameter | Meaning | Note |
---|---|---|
mediaId | The mediaId of the resource, including the user's avatar field |
Example Response
Response Header
HTTP/1.1 200 no content
Content-Type: application/json; charset=utf-8
Response Data
{"url":"http://........."}
Upload File
POST /v1/resource?type=image
Example Request
File uploading uses form to upload curl examples:
image uploading curl -F "filename=@/home/test.jpg" https://api.im.jpush.cn/v1/resource?type=image -u "appkey:secret ""
File uploading curl -F "filename=@/home/test.mp3" https://api.im.jpush.cn/v1/resource?type=file -u "appkey:secret"
Voice uploading curl -F "filename=@/home/test.mp3" https://api.im.jpush.cn/v1/resource?type=voice -u "appkey:secret"
Note: The file size is limited to 8m. It only supports image formats currently, including jpg bmp gif png, etc.
Parameter | Meaning | Note |
---|---|---|
filename | File path of local disk | |
type | File type: Supports "image", "file", "voice" |
Response Header
Example Response
HTTP/1.1 200
Content-Type: application/json; charset=utf-8
Response Data
Image Response
{
"media_id":"qiniu/image/F39AA12204DAB6A2",
"media_crc32":1338734977,
"width":720,
"height":1280,
"format":"jpg",
"fsize":52468
}
- media_id String: The key returned by the server after the file is uploaded
- Crc32 checksum of media_crc32 long file
- width int: original width of picture
- height int: original height of picture
- format String: image format
- fsize int: file size (bytes)
- hash String: optional, for alternative verification when the crc checksum does not exist
File Response
{
"media_id":"qiniu/file/j/1BB3B833AEABFF62E883C5CE421867A9",
"media_crc32":1415584260,
"fname":"0839d1c0-48e9-4032-9333-f3691a7d9e48.dmp",
"fsize":176512,
"hash":"FtH0kPT0YI89HAw1K9wv_vVKiNab"
}
- media_id String: The key returned by the server after the file is uploaded. It is used to generate the downloaded URL.
- Crc32 checksum of media_crc32 long file
- hash String; optional, for alternative verification when the crc checksum does not exist
- fsize int: file size (bytes)
- fname String: file names of sending and receiving
Voice Response
{
"media_id":"qiniu/voice/j/9C4312B1EA0FB28337566D1A29A244B5",
"media_crc32":1882116055,
"hash":"FoYn15bAGRUM9gZCAkvf9dolVH7h",
"format":"m4a",
"fsize":238105
}
- media_id String: The key returned by the server after the file is uploaded. It is used to generate the downloaded URL
- Crc32 checksum for media_crc32 long file
- hash String: optional, for alternative verification when the crc checksum does not exist
- fsize int: file size (bytes)
- format String: format of source file
Overview of Group Object Fields
Parameter | Meaning | Limits of character length |
---|---|---|
name | Group name | Byte(0~64) |
desc | Group description | Byte(0~250) |
owner_username | Owner's username | Byte(4-128) |
MaxMemberCount | Group default to 500 people | |
ctime | Creation time | |
mtime | Last Modified Time | |
avatar | Group avatar |
Group Maintenance
Create a group
POST /v1/groups/
Group MaxMemberCount (number limit) definition
Example Request
{
"owner_username": "tom",
"name": "群聊天室",
"members_username": ["eddie", "annie"],
"flag": 1,
"desc": "运动"
}
Request Params
- owner_username (required)
- name (required) group name
- Supported characters: All, including Emoji.
- members_username
- avatar (optional) group avatar, media_id obtaine when uploading interfaces
- desc (optional) group description
- Supported characters: All, including Emoji.
- flag (optional) type
- 1 - private group (default)
- 2 - public group
- does not specify the flag, the default is 1
Example Response
< HTTP/1.1 201 Created
< Content-Type: application/json
<
{
"gid":12345,
"owner_username": 123456,
"name": "display_name",
"members_username": [],
"desc":"doubi",
"MaxMemberCount" = 500
}
Get group details
GET /v1/groups/{Group id}
Request Params
- Group id: assigned when creating a group
Example Response
< HTTP/1.1 200 OK
< Content-Type: application/json
<
{
"gid": 12345,
"name": "jpush",
"desc": "push",
"appkey": "dcf71ef5082057832bd44fbd",
"MaxMemberCount": 500,
"mtime": "2014-07-01 00:00:00",
"ctime": "2014-06-05 00:00:00"
}
Update group information
PUT /v1/groups/{Group id}
Request Params
- name: group name
- desc: group description
- atar: group avatar, media_id
PUT /v1/groups/{Group id}
Request Body
{ "the key you want to update": "the value you want to update" }
Example Response
HTTP/1.1 204 NO Content
Delete group
Delete a group.
All members of the group will receive notification that the group has been dissolved.
DELETE /v1/groups/{Group id}
Request Params
- Group id
Example Response
< HTTP/1.1 204 NO CONTENT
< Content-Type: application/json
Update group members
Batch adding and deleting members of a gid group.
Group members will receive notifications of adding and deleting members
POST /v1/groups/{Group id}/members
Request Params
- gid: group ID
- add json array: Indicates the user to add to the group (optional)
- remove json array: Indicates the user to remove from the group (optional)
- At least one of the two
Example Request
{
"add":[
"test1", "test2"
],
"remove":[
"test3", "test4"
]
}
Example Response
< HTTP/1.1 204 NO CONTENT
< Content-Type: application/json
Add group members V2
Batch add group members
Group members will receive notifications of adding members
POST /v2/groups/{Group id}/addMembers
Request Params
- gid group ID
Example Request
["test1", "test2"]
Example Response
< HTTP/1.1 204 NO CONTENT
< Content-Type: application/json
Delete group members V2
Batch delete group members
Group members will receive notifications of deleting members
POST /v2/groups/{Group id}/delMembers
Request Params
- gid 群组ID
Example Request
["test1", "test2"]
Example Response
< HTTP/1.1 204 NO CONTENT
< Content-Type: application/json
Get a list of group members
GET /v1/groups/{Group id}/members/
Request Params
- Group id
Example Response
- JsonObject UID array
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=utf-8
[
{
"username": "javen",
"nickname": "hello",
"avatar" = "/avatar",
"birthday": "1990-01-24 00:00:00",
"gender": 0, "signature": "orz",
"region": "shenzhen",
"address": "shenzhen",
"flag":0
}
]
- flag
- 0 - common group members
- 1 - Group owner
Get the group list of some user
GET /v1/users/{username}/groups/
Request Params
- username
Example Response
- ctime: group
- Creation time
- Mtime: last modified time of group
< HTTP/1.1 200 OK
< Content-Type: application/json
[ {
"gid": 12345,
"name": "jpush",
"desc": "push",
"appkey": "dcf71ef5082057832bd44fbd",
"MaxMemberCount": 500,
"mtime": "2014-07-01 00:00:00",
"ctime": "2014-06-05 00:00:00"
}
]
Get the group list of current application
GET /v1/groups/?start={start}&count={count}
Request Params
- Start: number of records started
- count: number of records read this time. The maximum is 500
Example Response
< HTTP/1.1 200 OK
< Content-Type: application/json
{
"total":1233,
"start":1100,
"count":1,
"groups":
[{
"gid": 12345,
"name": "jpush",
"desc": "push",
"appkey": "dcf71ef5082057832bd44fbd",
"MaxMemberCount": 500,
"mtime": "2014-07-01 00:00:00",
"ctime": "2014-06-05 00:00:00"
}]
}
Block group message
POST /v1/users/{username}/groupsShield
Request Param
- N/A
Request Body
{
"add":[
110000101
],
"remove":[
1000001111
]
}
Parameter | Meaning |
---|---|
add | Add the gid array of the group message blocking (optional) |
remove | Remove the gid array of group message blocking(optional) |
Example Response
< HTTP/1.1 204 OK
< Content-Type: application/json
Ban group members
PUT /groups/messages/{gid}/silence?status={status}
Request body
[ "username1", "username2"]
备注:username json数组
Request Params
status:开启或关闭禁言 true表示开启 flase表示关闭
Example Response
< HTTP/1.1 204 OK
< Content-Type: application/json
Friends
Add friend
POST /v1/users/{username}/friends
Request Params
- json array: Indicates the list of user names to be added. Maximum limit is 500.
Example Request
["user01","user02"]
Example Response
< HTTP/1.1 201
< Content-Type: application/json; charset=utf-8
Response Data
- N/A
Error Code
- 899003: format of Request Body json does not meet the requirements, and json parameter does not meet the requirements;
- 899002: user does not exist
- 899070: has added friends
Delete friend
DELETE /v1/users/{username}/friends
Request Params
- The json array represents the list of user names to be removed. The maximum limit is 500.
Example Request
["user01","user02"]
Example Response
< HTTP/1.1 204 NO Content
< Content-Type: application/json; charset=utf-8
Response Data
- N/A
Error Code
- 899003: format of Request Body json does not meet the requirements, and json parameter does not meet the requirements;
- 899002: user does not exist;
Update friend notes
PUT /v1/users/{username}/friends
Request Params
- note_name indicates the list of friends to add. Format: Supported characters of byte(64) excludes "\n" "\r".
- others: Other note information, Format: byte(250) supports all characters, including Emoji.
- Username;
- Support batch modification with maximum limit as 500.
Example Request
[{
"note_name": "new note name",
"others": “好友备注文档",
"username":"user01"
}]
Example Response
< HTTP/1.1 204 NO Content
< Content-Type: application/json; charset=utf-8
Response Data
- N/A
Error Code
- 899003: format of Request Body json does not meet the requirements, and json parameter does not meet the requirements;
- 899002: user does not exist;
Get friend list
GET /v1/users/{username}/friends
Request Params
- N/A
Example Request
Example Response
< HTTP/1.1 200 NO Content
< Content-Type: application/json; charset=utf-8
Response Data
[{
"username": "javen",
"nickname": "hello",
"avatar": "/avatar",
"birthday": "1990-01-24 00:00:00",
"gender": 0,
"signature": "orz",
"region": "shenzhen",
"address": "shenzhen",
"mtime": "2015-01-01 00:00:00",
"ctime": "2015-01-01 00:00:00",
"note_name":"= =",
"others":"test",
"appkey":"pojkasouduioadk"
}]
Error Code
- 899003: format of Request Body json does not meet the requirements, and json parameter does not meet the requirements;
- 899002: user does not exist;
Cross-application
Cross-application manage group members
POST /v1/cross/groups/{gid}/members
Request Params
- add json array: Indicates the user to add to the group (optional)
- remove json array: Indicates the user to remove from the group (optional)
- appkey: The appkey of user managed is required
at least one of the add and remove
Example Request
[{
"appkey":" 4f7aef34fb361292c566a1cd",
"add": [
"test1",
"test2"
],
"remove": [
"name3",
"name4"
]
}]
Example Response
< HTTP/1.1 204 NO Content
< Content-Type: application/json; charset=utf-8
Response Data
- N/A
Remarks: The group wille deleted when the group has no members
Error Code
- 899003: format of Request Body json does not meet the requirements, and json parameter does not meet the requirements;
- 899002: user does not exist;
- 899012: There are not enough places to add group members;
- 899014: users do not exist in the group
- 899011: users already exist in the group
Get a group member list across applications
GET /v1/cross/groups/{Group id}/members/
Request Params
- Group id
Example Response
- JsonObject UID: array
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=utf-8
[{
"username": "javen",
"nickname": "hello",
"avatar": "/avatar",
"birthday": "1990-01-24 00:00:00",
"gender": 0,
"signature": "orz",
"region": "shenzhen",
"address": "shenzhen",
"flag":0,
"appkey":"appkey"
}]
- flag
- 0 - common group members
- 1 - Group owner
Get user groups across applications
GET /v1/cross/users/{username}/groups
Request Params
- username
Example Response
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=utf-8
[ {
"gid": 12345,
"name": "jpush",
"desc": "push",
"appkey": "dcf71ef5082057832bd44fbd",
"max_member_count": 200,
"mtime": "2014-07-01 00:00:00",
"ctime": "2014-06-05 00:00:00",
"appkey":"appkey"
}]
Add a blacklist across applications
Put /v1/cross/users/{username}/blacklist
Example Request
Request Header
Put /v1/cross/users/{username}/blacklist
Content-Type: application/json; charset=utf-8
Request Params
- username: An array of added users
- appkey: appkey to which the user belongs
Request Body
[{
"appkey":"appkey",
"usernames": [
"test1", "test2"
]
}]
Example Response
Response Header
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Cross-application remove blacklist
Delete /v1/cross/users/{username}/blacklist
Example Request
Request Header
Delete /v1/cross/users/{username}/blacklist
Content-Type: application/json; charset=utf-8
Request Params
- username: An array of removed users
- appkey: appkey to which the user belongs
Request Body
[{
"appkey": "appkey",
"usernames": [
"test1", "test2"
]
}]
Example Response
Response Header
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Cross-application list of blacklists
Get /v1/cross/users/{username}/blacklist
Example Request
Request Header
Get /v1/cross/users/{username}/blacklist
Content-Type: application/json; charset=utf-8
Request Params
- username
Request Body
- N/A
Example Response
Response Header
HTTP/1.1 200
Content-Type: application/json; charset=utf-8
Response Data
[{
"username": "javen",
"nickname": "hello",
"avatar": "/avatar",
"birthday": "1990-01-24 00:00:00",
"gender": 0,
"signature": "orz",
"region": "shenzhen",
"address": "shenzhen",
"mtime": "2015-01-01 00:00:00",
"ctime": "2015-01-01 00:00:00",
"appkey":"appkey"
}]
Cross-application Do-Not-Disturb Settings
POST /v1/cross/users/{username}/nodisturb
Example Request
Request Header
POST /v1/cross/users/{username}/nodisturb
Content-Type: application/json; charset=utf-8
Request Params
- single: single chat DND, supports adding or removing array (optional)
- group: group chat DND, supports adding or removing array (optional)
- appkey: appkey of targets
Request Body
[ {
"appkey":"appkey1",
"single":{
"add":[
"username1",
"username2"
]
},
"group":{
"add":[
110000101
],
"remove":[
1000001111
]
}
}]
Example Response
Response Header
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Error Code
- 899003: username is illegal;
- 899002: user does not exist
- 899051: group does not exist
- 899052: Set the group message blocj and the setting of group block is already open
- 899053: Set the group message blocj and the setting of group block is already turned off
Add friends across applications
POST /v1/cross/users/{username}/friends
Example Request
Request Header
POST /v1/cross/users/{username}/friends
Content-Type: application/json; charset=utf-8
Request Params
- appkey: Appkey to which the user belongs (required)
- json array of users username: up to 500 (required)
Request Body
{
"appkey":"appkey1",
"users":
[
"username1",
"username2"
]
}
Example Response
Response Header
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Delete friends across applications
DELETE /v1/cross/users/{username}/friends
Example Request
Request Header
DELETE /v1/cross/users/{username}/friends
Content-Type: application/json; charset=utf-8
Request Params
- appkey: The appkey to which the user belongs (required)
- json array of users username: up to 500 (required)
Request Body
{
"appkey":"appkey1",
"users":
[
"username1",
"username2"
]
}
Example Response
Response Header
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Update friend notes across applications
PUT /v1/cross/users/{username}/friends
Example Request
Request Header
PUT /v1/cross/users/{username}/friends
Content-Type: application/json; charset=utf-8
Request Params
- appkey: The appkey to which the user belongs (required)
- note_name: Indicates the list of friends to add. Format: Supported characters of byte(64) excludes "\n" "\r".
- others: Other note information, Format: byte(250) supports all characters, including Emoji.
Request Body
[{
"note_name": "new note name",
"others": “好友备注文档" ,
"username":"user01",
"appkey":"appkey"
}]
Example Response
Response Header
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Cross-application manage chat room members
POST /cross/chatroom/{room_id}/members
Request Params
- add json array: Representing the user to add to the chat room (optional)
- remove json array: Indicates the user to delete from the chat room (optional)
- appkey: appkey to which the managed user belongs (required)
add/remove:at least one of the two
Example Request
[{
"appkey":" 4f7aef34fb361292c566a1cd",
"add": [
"test1",
"test2"
],
"remove": [
"name3",
"name4"
]
}]
Example Response
< HTTP/1.1 204 NO Content
< Content-Type: application/json; charset=utf-8
Response Data
- N/A
Sensitive Words
Add sensitive words
POST /v1/sensitiveword
Example Request
Request Header
POST /v1/sensitiveword
Content-Type: application/json; charset=utf-8
Request Params
- N/A
Request Body
- Array of Sensitive Words: A word with a length of up to 10, defaults to 100 sensitive words, and contact with business team for higher demands
["FUCK"]
Example Response
Response Header
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Modify sensitive words
PUT /v1/sensitiveword
Example Request
Request Header
PUT /v1/sensitiveword
Content-Type: application/json; charset=utf-8
Request Params
- N/A
Request Body
- old_word: old sensitive word,
- new_word: new sensitive word
{"new_word":"fuck", "old_word":"FUCK"}
Example Response
Response Header
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Delete sensitive words
DELETE /v1/sensitiveword
Example Request
Request Header
DELETE /v1/sensitiveword
Content-Type: application/json; charset=utf-8
Request Params
- N/A
Request Body
- word: sensitive words deleted
{"word":"fuck"}
Example Response
Response Header
HTTP/1.1 204 NO Content
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Get a list of sensitive words
GET /v1/sensitiveword
Example Request
Request Header
GET /v1/sensitiveword?start={start}&count={count}
Content-Type: application/json; charset=utf-8
Request Params
- start: start number, starting from 0
- count: number of queries, up to 2000
Request Body
- N/A
Example Response
Response Header
HTTP/1.1 200
Content-Type: application/json; charset=utf-8
Response Data
{
"start": 2,
"count": 1,
"words": [
{
"name": "fuck",
"itime": "1970-01-17 16:49:11"
}
],
"total": 3
}
Update the status of sensitive words
PUT /v1/sensitiveword/status
Example Request
Request Header
PUT /v1/sensitiveword/status?status=0
Content-Type: application/json; charset=utf-8
Request Params
- status: switch status of sensitive words, 1 means turn on filtering, 0 means turn off sensitive word filtering
Request Body
- N/A
Example Response
Response Header
HTTP/1.1 204
Content-Type: application/json; charset=utf-8
Response Data
- N/A
Get the status of sensitive words
GET /v1/sensitiveword/status
Example Request
Request Header
GET /v1/sensitiveword/status
Content-Type: application/json; charset=utf-8
Request Params
- N/A
Request Body
- N/A
Example Response
Response Header
HTTP/1.1 200
Content-Type: application/json; charset=utf-8
Response Data
{"status": 1}
Overview of chat room fields
Parameter | Meaning | Limits of character length |
---|---|---|
name | Chat room name (required) | Byte(0~64) |
owner_username | Creator of Chat room (required) | Byte (4~128) |
description | Chat room description (optional) | Byte(250) |
members_username | Member list of chat room (optional) | |
ctime | Creation time | |
max_member_count | Maximum number of members | |
total_member_count | Current total number | |
flag | Forbidden signs | 0 means not banned, 1 means open the ban |
Chat room maintenance
Create a chat room
POST /v1/chatroom/
Request Body
{"owner_username":"liming", "name": "测试聊天室", "description":"测试", "members_username":[]}
Request Params
- owner_username (required) owner the chat room
- name (required) chat room name
- members_username (optional) username of members
- description (optional) Description
Example Response
HTTP/1.1 201 Created
Content-Type: application/json
{
"chatroom_id": 1000000
}
Get chat room details
POST /v1/chatroom/batch
Request Params
[10000001,10000002] roomid数组
Example Response
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[
{
"id": 10000001,
"owner_username": "xiaoming",
"max_member_count": 10000,
"appkey": "4f7aef34fb361292c566a1cd",
"name": "test",
"description": "test",
"total_member_count": 2,
"ctime": "2017-11-27 18:38:25"
},
{
"id": 10000002,
"owner_username": "xiaoming",
"max_member_count": 10000,
"appkey": "4f7aef34fb361292c566a1cd",
"name": "test",
"description": "test",
"total_member_count": 2,
"ctime": "2017-11-27 18:38:25"
}
]
GET Get a list of user’s chat rooms
GET /v1/users/{username}/chatroom
Example Request
GET /v1/users/xiaoming/chatroom
Example Response
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[
{
"id": 100000,
"owner_username": "xiaoming",
"max_member_count": 10000,
"appkey": "4f7aef34fb361292c566a1cd",
"name": "test",
"description": "test",
"total_member_count": 2,
"ctime": "2017-11-27 18:38:25"
},
{
"id": 10000001,
"owner_username": "xiaoming",
"max_member_count": 10000,
"appkey": "4f7aef34fb361292c566a1cd",
"name": "test",
"description": "test",
"total_member_count": 2,
"ctime": "2017-11-27 18:38:25"
}
]
GET Get a list of chat rooms under the app
GET /v1/chatroom?start={start}&count={count}
Example Request
GET /v1/chatroom?start=0&count=10
Example Response
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"total": 1,
"rooms": [
{
"id": 62,
"owner_username": "xiaoming",
"max_member_count": 10000,
"appkey": "4f7aef34fb361292c566a1cd",
"name": "test",
"description": "test",
total_member_count": 11,
"ctime": "2017-11-27 18:38:25"
}
],
"start": 0,
"count": 1
}
Update chat room information
PUT /v1/chatroom/{room_id}
Example Request
PUT /v1/chatroom/111000001
Request Body
{"owner_username":"135380113231", "name": "中国人", "description":"说什么来这"}
Example Response
HTTP/1.1 204
Content-Type: application/json; charset=utf-8
Delete chat room
DELETE /v1/chatroom/{room_id}
Example Request
DELETE /v1/chatroom/100000
Example Response
HTTP/1.1 204
Content-Type: application/json; charset=utf-8
Modify user banned state
PUT /v1/chatroom/{room_id}/forbidden/{username}?status={status}
Status 0 means not banned, 1 means open the ban (required)
Example Request
PUT /v1/chatroom/100000/forbidden/caiyh?status=1
Example Response
HTTP/1.1 204 OK
Content-Type: application/json; charset=utf-8
Get a list of chat room members
GET /v1/chatroom/{room_id}/members?start={start}&count={count}
Request Params
- room_id
Example Response
- username
- ctime
- flag
HTTP/1.1 200 OK
Content-Type: application/json
{
"total": 2,
"users": [
{
"username": "13538013231",
"flag": 0,
"room_ctime": "2017-11-17 08:57:54",
"mtime": "2017-10-30 17:24:17",
"ctime": "2017-10-30 17:24:17"
},
{
"username": "xia_12",
"flag": 0,
"room_ctime": "2017-11-16 19:13:07",
"mtime": "2017-02-08 17:56:04",
"ctime": "2017-02-08 17:56:04"
}
],
"count": 2,
"start": 0
}
Add chat room members
PUT /v1/chatroom/{room_id}/members
Request Params
- json array of username: supports up to 3000
Example Response
HTTP/1.1 204
Content-Type: application/json; charset=utf-8
Remove chat room members
DELETE /v1/chatroom/{room_id}/members
Request Params
- json array of username: supports up to 3000
Example Response
HTTP/1.1 204
Content-Type: application/json; charset=utf-8
Configuration
Set SDK-API user registration switch
Open or close the SDK-API user registration.
PUT /sdkregister/status?status={status}
Example Request
PUT /sdkregister/status?status=0
Request Params
JSON Array.
- status:0 is off, indicating SDK-API registration is not provided, 1 is on
Example Response
HTTP/1.1 204 Created
Content-Type: application/json
Response Data
N/A
Get SDK-API user registration switch
get /sdkregister/status
Example Request
get /sdkregister/status
Example Response
HTTP/1.1 200
Content-Type: application/json
Response Data
{
"status": 0
}
status: 0为关闭,不提供SDK-API 注册功能,1为开启
HTTP return
Reference documentation of HTTP return code: HTTP-Status-Code
Example Error Response
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"error": {
"code": 899008,
"message": "Basic authentication failed"
}
}