API接口

1. 登陆

POST http://[server]:[port]/cps/api/login

功能

登录以获取JWT token

参数

参数名 类型 必需 限制&描述
username String
password String

返回值

名称 类型 描述
token String 返回的jwt token

Jason请求和响应示例

Request Body
{
    "username":"user1",
    "password":"password1"
}
Response Body
{
 "token":"eyJhbGciOiJIUzUxMiJ9.eyJleHAiOjE0NjM5MTEzNzUsInVzZXJuYW1lIjoiY2hyaXMifQ.c0rxo4sGpeaYUPrPlp903rZiqSrGe4mb0SGiLaZQUIsNFCZbiJWa3Husy1ULYeqhRNQCaXnIDBBz_1Q9rwyA"
}

 2. 创建群组

POST http://[server]:[port]/cps/api/groups

功能

创建群组

参数

参数名 类型 必需 限制&描述
appId String 40个字符,在NPNS中为应用生成的id
name String 255个字符
description String 255个字符
pnsTokens Array 群组中包含的推送token。pnsTokens中的每种类型的Token长度限制不一。APNS/AMDM token长度大于40,NCM Token长度为24

返回值

名称 类型 描述
groupUuid String 返回的group Uuid

Jason请求和响应示例

Request Body
{
    "name":"group name",
    "appId":"121412",
    "description": "group description",
    "pnsTokens": [
        {"type:"NCM","token":"14CDEF264DE8E426EA697851"},
        {"type":"APNS","token":"1234567890123456789012345678901234567890123456789012345678901234"} 
    ]
}

Response Body
{
    "groupUuid": "3737fdbf-3104-4d4e-bc52-e45d53c7fadd"
}

 3. 更新群组

PUT http://[server]:[port]/cps/api/groups/{groupUuid}

功能

更新群组

参数

参数名 类型 必需 限制&描述
groupUuid String 255个字符
pnsTokens Array pnsTokens中的每种类型的Token长度限制不一。APNS token长度大于40,NCM Token长度为24

返回值

若成功操作,无返回值

Json请求和响应示例

Request Body
{
    "pnsTokens": [
        {"type:"NCM","token":"14CDEF264DE8E426EA697851"},
        {"type":"APNS","token":"1234567890123456789012345678901234567890123456789012345678901234"} 
    ]
}

 4. 推送消息(透传模式)

POST http://[server]:[port]/cps/api/notifications/{appId}

功能

发送消息

参数

参数名 类型 必需 限制&描述
appId String 40个字符,在NPNS中为应用生成的id
notificationType String BY_TOKEN:按token推送;BY_GROUP:按组推送
payload String 对于NCM推送,payload长度最大500字节,APNS最大长度2K
groupUuid String 调用创建group API创建的group uuid
pnsTokens Array 群组中包含的推送token。pnsTokens中的每种类型的Token长度限制不一。APNS/AMDM token长度大于40,NCM Token长度为24
expire Number 默认为0,NCM推送有效;0:永不过期  N:N分钟后过期
retry Boolean 默认为false,不重试,NCM推送有效
priority Number 默认为0,NCM推送有效
refresh Boolean 默认为false,NCM推送有效;True:该指令将覆盖以前尚未执行的消息,即只发送该消息,之前的尚未执行的消息被丢弃。

返回值

名称 类型 描述
notificationId String 返回的notification id

Json请求和响应示例

Request Body
{
    "notificationType": "BY_TOKEN"
    "pnsTokens": [
        {"type":"NCM","token":"14CDEF264DE8E426EA697851"},
        {"type":"APNS","token":"1234567890123456789012345678901234567890123456789012345678901234"},
        {"type":"AMDM","token":"1234567890123456789012345678901234567890123456789012345678901234","extension":"pushMagic"}
    ]
    "payload": "{"aps" : {"content-available": 1, "alert" : "给您播放了一段铃音", "sound" : "sound.caf"},"cmd" : ["1"], "flownum":"71d32576-6f68-41b4-9ae4-67c8fd8117bc"}",
    "priority": 1,
    "retry":true,
    "refresh":false,
    "expire":8
}
 
//broadcast by groupUuid
{
    "notificationType": "BY_GROUP"
    "groupUuid": "71d32576-6f68-41b4-9ae4-67c8fd8117bc"
    "payload": "{"aps" : {"content-available": 1, "alert" : "给您播放了一段铃音", "sound" : "sound.caf"},"cmd" : ["1"], "flownum":"71d32576-6f68-41b4-9ae4-67c8fd8117bc"}",
}
Response Body
{
    "notificationId": 123
}

5. 推送消息(组包模式)

POST http://[server]:[port]/cps/api/notifications/app/{appId}

功能

该功能提供app组包功能,组好APNS和NCM包后将消息发送给设备。

由于APNS限制,expire,retry,priority和refresh字段对于IOS设备不生效。

参数

参数名 类型 必需 限制&描述
appId String 40个字符,在NPNS中为应用生成的id
notificationType String BY_TOKEN:按token推送;BY_GROUP:按组推送
groupUuid String 调用创建group API创建的group uuid
pnsTokens Array 群组中包含的推送token。pnsTokens中的每种类型的Token长度限制不一,APNS/AMDM token长度大于40,NCM Token长度为24
expire Number 默认为0,NCM推送有效;0:永不过期 N:N分钟后过期
retry Boolean 默认为false,不重试,NCM推送有效
priority Number 默认为0,NCM推送有效
refresh Boolean 默认为false,NCM推送有效True:该指令将覆盖以前尚未执行的消息,即只发送该消息,之前的尚未执行的消息被丢弃。
message String 发送的消息
silentAlert Boolean 是否需要弹框提示
sound String 是否需要发声,若需要发声,传递sound字符
badge Number Badge number
extensionPayload Object 扩展字段

返回值

名称 类型 描述
notificationId String 返回的notification id

Jason请求和响应示例

Request Body
按token发送
{
    "notificationType": "BY_TOKEN",
    "pnsTokens": [
        {"type":"NCM","token":"14CDEF264DE8E426EA697851"},
        {"type":"APNS","token":"1234567890123456789012345678901234567890123456789012345678901234"},
        {"type":"AMDM","token":"1234567890123456789012345678901234567890123456789012345678901234","extension":"pushMagic"}
    ]
    "message": "message 1",
    "silentAlert": true,
    "sound":"default",
    "badge": 1
    "extensionPayload":{
        "field1": "value1",
        "field2": "value2"
    }
}
按组发送
{
    "notificationType": "BY_GROUP",
    "groupUuid": "71d32576-6f68-41b4-9ae4-67c8fd8117bc",
    "message": "message 1",
    "silentAlert": true,
    "sound": "default",
    "badge": 1,
    "extensionPayload":{
        "field1": "value1",
        "field2": "value2"
    }
}

Response Body
{
    "notificationId": 123
}

 6. 查询消息推送统计信息

GET http://[server]:[port]/cps/api/notifications/{notificationId }

功能

查询消息推送统计信息

参数

参数名 类型 必需 限制&描述
notificationId String 发送消息时CPS返回的id

返回值

名称 类型 描述
totalNumber Number 本次推送的推送device总数
toPnNumber Number 到达PN的device数
failedNumber Number 失败的device数

Jason请求和响应示例

Request 
GET http://[server]:[port]/cps/api/notifications/{notificationId}
  
Response Body
{
    "totalNumber":20,
"toPnNumber":10,
"failedNumber":10
}

 7. 查询某个Device消息推送详细信息(1个小时延迟)

GET http://[server]:[port]/cps/api/notifications/{notificationId }/{pnsToken}

功能

查询消息推送统计信息

参数

参数 类型 必需 限制&描述
notificationId String 发送消息时CPS返回的id
pnsToken String Device所属的APNS或NCM token

返回值

名称 类型 描述
Status String TO_PN, DELIVERED, INVALID

Json请求和响应示例

Request 
GET http://[server]:[port]/cps/api/notifications/{notificationId}/{pnsToken}
  
Response Body
{
    "status":"TO_PN"
}

 8. 创建推送配置

POST http://[server]:[port]/cps/api/admin/config/{appId}

功能

创建推送配置

参数

参数名 类型 必需 限制&描述
appId String 40个字符,在NPNS中为应用生成的id
type String APNS、AMDM或者NCM,其他字符返回错误
configInfo Object 当Type为APNS和AMDM时,不能为空
cert String Base64的APNS/AMDM 证书字符串
certFileName String 导出的p12文件名
certPassword String 导出p12文件时的密码
production Boolean 默认为true

返回值

名称 类型 描述
configUuid String 返回的config Uuid

Json请求和响应示例

Request Body
{
    "type": "NCM",
    "configInfo":{}
 
}
 
{
    "type": "APNS",
    "configInfo":{
        "cert":"base64 cert file content",
        "certFileName":"emm.p12",
        "certPassword": "password when exported the emm.p12 cert",
        "production":true
    }
}
 
{
    "type": "AMDM",
    "configInfo":{
        "cert":"base64 cert file content",
        "certFileName":"mdm.p12",
        "certPassword": "password when exported the mdm.p12 cert",
        "production":true
    }
}

Response Body
{
    "configUuid": "xxxxxxxx-xxxx-xxxx-xxxx"
}

 9. 更新推送服务配置

PUT http://[server]:[port]/cps/api/admin/config/{appId}/{configUuid}

功能

更新群组

参数

参数名 类型 必需 限制&描述
appId String 40个字符,在NPNS中为应用生成的id
configUuid String 调用创建config API时返回的configUuid
type String APNS、AMDM或者NCM,其他字符返回错误
configInfo Object 当Type为APNS和AMDM时,不能为空
cert String Base64的APNS/AMDM 证书字符串
certFileName String 导出的p12文件名
certPassword String 导出p12文件时的密码
production Boolean 默认为true

返回值

若成功操作,无返回值

Jason请求和响应示例

Request Body
{
    "type": "NCM",
    "configInfo":{}
 
}
 
{
    "type": "APNS",
    "configInfo":{
        "cert":"base64 cert file content",
        "certFileName":"emm.p12",
        "certPassword": "password when exported the emm.p12 cert",
        "production":true
    }
}
 
{
    "type": "AMDM",
    "configInfo":{
        "cert":"base64 cert file content",
        "certFileName":"mdm.p12",
        "certPassword": "password when exported the mdm.p12 cert",
        "production":true
    }
}
Response Body
无响应内容

 10. 创建邮件服务器配置

POST http://[server]:[port]/cps/api/mailConfig

功能

设置MAIL服务器配置信息,用户可以设置多个MAIL,调用该API成功后会得到一个唯一标识featureId,用户用featureId来区分不同的邮箱配置及发消息

参数

参数名 类型 必需 限制&描述
serverAddress String 邮箱服务器
serverPort String SMTP服务器端口,0-65535,默认为25
openSSLFlag String 是否开启SSL,0=不开启 1=开启
displayName String 发件人名称
userName String 邮箱帐号
password String 邮箱密码
sslType String 0|1 0=SSL 1=TLS

返回值

名称 类型 描述
featureId String 返回的feature Uuid

Json请求和响应示例

Request Body
Content-Type:application/json;charset=UTF-8
{
     
        "serverAddress": "smtp.netqin.com",
        "serverPort": "25",
        "openSSLFlag": "0",
        "displayName": "zhangjianshe@nationsky.com",
        "userName": "zhangjianshe@nationsky.com",
        "password": "123456",
        "sslType": "0"
}
  
Response Body
1.成功
HTTP/1.1 200 OK
{
"featureId":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
2.失败
	{
    "errorCode": xxx
	}
Http Status Code errorCode desc
500 114 服务器内部错误
400 109 参数值错误
104 用户不存在

11. 获取邮件服务器配置

GET http://[server]:[port]/cps/api/mailConfig/{featureId} featureId,可以不输入

功能

获取MAIL服务器端的配置参数信息

输入参数

名称 类型 必需 描述&限制
featureId String 配置的ID

返回值

参数名 类型 描述
serverAddress String 邮箱服务器
serverPort String SMTP服务器端口,0-65535
openSSLFlag String 是否开启SSL,0=不开启 1=开启
displayName String 发件人名称
userName String 邮箱帐号
password String 邮箱密码
sslType String 0|1 0=SSL 1=TLS
featureId String 配置的ID

Json请求和响应示例

Request 
GET http://[server]:[port]/cps/api/mailConfig/{featureId}
Response Body
{
    "data": [
        {
            "serverAddress": "smtp.partner.outlook.cn",
            "serverPort": "587",
            "openSSLFlag": "1",
            "displayName": "国信灵通-1",
            "userName": "zhangjianshe@nationsky.com",
            "password": "Nora8381",
            "sslType": "0"
        },
        {
            "serverAddress": "smtp.partner.outlook.cn",
            "serverPort": "587",
            "openSSLFlag": "1",
            "displayName": "国信灵通-1",
            "userName": "zhangjianshe@nationsky.com",
            "password": "Nora8381",
            "sslType": "0"
        }
    ]
}

2.失败
{
    "errorCode": xxx
}
Http Status Code errorCode desc
500 114 服务器内部错误
400 104 用户不存在
128 featureId不存在

12. 更新邮件服务器配置

PUT http://[server]:[port]/cps/api/mailConfig

功能

更新MAIL服务器端的配置参数信息

参数

参数名 类型 必需 限制&描述
serverAddress String 邮箱服务器
serverPort String SMTP服务器端口,0-65535,默认为25
openSSLFlag String 是否开启SSL,0=不开启 1=开启
displayName String 发件人名称
userName String 邮箱帐号
password String 邮箱密码
sslType String 0|1 0=SSL 1=TLS

若用户输入featureId,会更新此featureId对应的mail配置信息。

若用户不输入featureId,会判断此用户保存了几个配置信息:

  1. 如果大于1,返回配置大于1的错误;
  2. 如果用户配置信息小于1,返回配置信息小于1错误;
  3. 如果等于1,更新此条信息的配置信息

返回值

Json请求和响应示例

Request Body
PUT http://[server]:[port]/cps/api/mailConfig/{featureId}
PUT http://[server]:[port]/cps/api/mailConfig

Content-Type:application/json;charset=UTF-8
{
     
        "serverAddress": "smtp.netqin.com",
        "serverPort": "25",
        "openSSLFlag": "0",
        "displayName": "zhangjianshe@nationsky.com",
        "userName": "zhangjianshe@nationsky.com",
        "password": "123456",
        "sslType": "0"
}
  
Response Body
1.成功
HTTP/1.1 200 OK
2.失败
{
    "errorCode": xxx
}
Http Status Code errorCode desc
500 114 服务器内部错误
400 109 参数值错误
104 用户不存在
126 MAIL配置信息多于一个
127 MAIL配置信息小于一个
128 featureId不存在

13. 删除邮件服务器配置

DELETE http://[server]:[port]/cps/api/mailConfig/{featureId} featureId,可以不输入

功能

删除MAIL服务器端的配置

输入参数

名称 类型 必需 描述&限制
featureId String 配置的ID

若用户输入featureId,会删除此featureId对应的mail配置信息。

若用户不输入featureId,会判断此用户保存了几个配置信息:

  1. 如果大于1,返回配置大于1的错误;
  2. 如果用户配置信息小于1,返回配置信息小于1错误;
  3. 如果等于1,删除此条信息的配置信息。

返回值

Json请求和响应示例

Request 
DELETE http://[server]:[port]/cps/api/mailConfig/{featureId}
Response Body
HTTP/1.1 200 OK

2.失败
{
 "errorCode": xxx
}
Http Status Code errorCode desc
500 114 服务器内部错误
400 104 用户不存在
126 MAIL配置信息多于一个
127 MAIL配置信息小于一个
128 featureId不存在

14. 发送邮件

POST http://[server]:[port]/cps/api/mails

功能

发送邮件

参数

参数名 类型 必需 限制&描述
subject String 主题
content String 内容
mailTo Array 收件人列表
cc Array 抄送列表
bcc Array 密送列表
featureID String 配置唯一ID。若用户只有一个mail配置,则不需要输入featureID,我们会根据用户来获取mail配置, 只有用户有多个mail配置时才会输入featureID来区分。
mode String 发送模式(同步或者异步)0|1 0=SSL 1=TLS。0=同步发送 1=异步发送 如果不填写,默认为0,同步发送。
filename Array 文件名
fileContent Array 文件内容

返回值

名称 类型 描述
taskId String 任务Id,异步发送时返回
errorCode Integer 错误代码

Json请求和响应示例

Request Body
Content-Type:application/json;charset=UTF-8
{
   
        "subject": "张建设测试发送邮件",
        "content": "发送邮件功能测试成功了",
        "mailTo": ["zhangjianshe@nationsky.com","610120505@qq.com"],
        "cc": ["610120505@qq.com"],
        "bcc": ["610120505@qq.com"],
        "fileName":["xxxxx.xxx"],
        "fileContent":["xxxxxxxxxxxxxxxx"],
        "mode":"0",
        "featureId":"fbc62a54-4c92-47b6-a122-3066c280639a"
     
}
  
Response Body
1.同步发送成功,mode=0
HTTP/1.1 200 OK
2.异步发送成功,mode=1
HTTP/1.1 200 OK
{
   "taskId":"fbc62a54-4c92-47b6-a122-3066c280639a"
}
3.失败
	{
   "errorCode": xxx
	}
Http Status Code errorCode desc
500 114 服务器内部错误
400 109 参数值错误
104 用户不存在
125 邮件发送失败
126 MAIL配置信息多于一个
127 MAIL配置信息小于一个

15. 测试邮件发送

POST http://[server]:[port]/cps/api/mails/test

功能

设置MAIL服务器配置信息并测试是否成功发送邮件

参数

参数名 类型 必需 限制&描述
serverAddress String 邮箱服务器
serverPort String SMTP服务器端口,0-65535,默认为25
openSSLFlag String 是否开启SSL,0=不开启 1=开启
displayName String 发件人名称
userName String 邮箱帐号
password String 邮箱密码
sslType String 0|1 0=SSL 1=TLS
subject String 主题
content String 内容
mailTo Array 收件人列表

返回值

名称 类型 描述
taskId String 任务Id,异步发送时返回
errorCode Integer 错误代码

Json请求和响应示例

Request Body
Content-Type:application/json;charset=UTF-8
{
     
        "serverAddress": "smtp.netqin.com",
        "serverPort": "25",
        "openSSLFlag": "0",
        "displayName": "zhangjianshe@nationsky.com",
        "userName": "zhangjianshe@nationsky.com",
        "password": "123456",
        "sslType": "0",
        "subject":"xxxxxxxxxxxx",
        "content":"xxxxxxxxxxxxx",
        "mailTo":["xxxx@nationsky.com","xxx@163.com"]
 }

  
Response Body
1.成功
HTTP/1.1 200 OK
2.失败
{
    "errorCode": xxx
}
Http Status Code errorCode desc
500 114 服务器内部错误
400 109 参数值错误
124 邮件服务器配置错误

16. 查询邮件发送状态

GET http://[server]:[port]/cps/api/mails/{taskId}

功能

查询邮件异步发送状态

参数

参数名 类型 必需 限制&描述
taskId String 任务ID

返回值

名称 类型 描述
taskId String 任务Id

Json请求和响应示例

Request 
GET http://[server]:[port]/cps/api/mails/{taskId}
  
Response Body
1.成功
HTTP/1.1 200 OK
{
   "fbc62a54-4c92-47b6-a122-3066c280639a":"SENDING"|"SENDSUCCESS"|"SENDFAILURE"
}
2.失败
	{
    "errorCode": xxx
	}
Http Status Code errorCode desc
500 114 服务器内部错误
400 104 用户不存在