用户和用户组

系统内置组说明

ID Desc
-1 系统根组
-2 系统默认组(隶属于系统根组)

错误码说明:

Http Status Code errorCode Desc
400 201 用户账号重复
202 组名重复
203 组上级不能是默认组
204 组上级不能是自身
205 组上级不能是自身下级
207 不能删除自定义根组
208 不能删除默认组
209 LDAP同步组不能删除
210 不能移动LDAP同步组或将普通组移动至LDAP同步组下
215 用户密码为空
216 用户密码长度小于6位
217 同步PINCODE失败
225 因为有未完成的导入或同步,本次操作未执行

1. 添加用户组

描述

在EMM系统中手动添加用户组

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
Name 组名 String Y
Descry 组描述 String N
parentId 上级组 Long Y
useGroupPerm 是否继承组权限 Integer N 默认为继承

  • 0 – 自定义
  • 1 – 继承
canLoginSelf 是否允许登录自服务平台 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
canRegistDevice 是否允许自助注册设备 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
canEliminateDevice 是否允许自助淘汰设备 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
allowInconsistentActivate 设备激活与设备注册时的信息不一致时允许激活 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
allowActivateNum 允许单用户注册/激活的设备数量 Integer N useGroupPerm=0时,默认为1
forceModifyPwd 是否强制初次登录修改密码 Integer N useGroupPerm=0时,默认为0(0-关闭 1-开启)
maxPwdAge 用户密码有效期 Integer N useGroupPerm=0时,默认为0(0-永久 N-N天)
maxFailedAttempts 用户密码输入尝试次数 Integer N useGroupPerm=0时,默认为0(0-不限 N-N次)
lockInterval 密码输入超过次数后锁定时长 Integer N useGroupPerm=0时,默认为空(0-永久锁定 N-锁定N分钟)

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回
groupId 保存成功后生成的组id Long

调试示例

POST /groups?access_token=xxx
输入
Content-Type:application/json;charset=UTF-8
{
"name": "测试组",
"descr": "This is a test!",
"parentId": -1,
"useGroupPerm": 1
}

输出
HTTP/1.1 200 OK 
Content-Type:application/json;charset=UTF-8
{
   "groupId": 49821
}

2. 编辑用户组

描述

在EMM系统中手动更新用户组

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
name 组名 String N 输入项为空的表示此项保持原值,不做更新。
descr 组描述 String N
parentId 上级组 Long N
useGroupPerm 是否继承组权限 Integer N
canLoginSelf 是否允许登录自服务平台 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
canRegistDevice 是否允许自助注册设备 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
canEliminateDevice 是否允许自助淘汰设备 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
allowInconsistentActivate 设备激活与设备注册时的信息不一致时允许激活 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
allowActivateNum 允许单用户注册/激活的设备数量 Integer N useGroupPerm=0时,默认为1
forceModifyPwd 是否强制初次登录修改密码 Integer N useGroupPerm=0时,默认为0(0-关闭 1-开启)
maxPwdAge 用户密码有效期 Integer N useGroupPerm=0时,默认为0(0-永久 N-N天)
maxFailedAttempts 用户密码输入尝试次数 Integer N useGroupPerm=0时,默认为0(0-不限 N-N次)
lockInterval 密码输入超过次数后锁定时长 Integer N useGroupPerm=0时,默认为空(0-永久锁定 N-锁定N分钟)

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回

调用示例

PUT /groups/{groupId}?access_token=xxx   {groupId}代表实际需要更新的用户组id
输入
Content-Type:application/json;charset=UTF-8
{
"name":"emm",
"descr": "This is a test"
}
输出
HTTP/1.1 200 OK 

3. 用户组详情

描述

在EMM系统中根据用户ID查询组详情

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回
id 组唯一ID Long
name 组名 String
descr 组描述 String
parentId 上级组ID Long
parentName 上级组名称 String
type 组类型 Integer 组来源 0-手工录入 1-文件导入 2-LDAP导入 3-LDAP同步
useGroupPerm 标识组配置是否继承上级组配置 Integer 0 – 自定义 1 – 继承
canLoginSelf 是否允许登录自服务平台 Integer 0-禁止 1-允许
canRegistDevice 是否允许自助注册设备 Integer 0-禁止 1-允许
canEliminateDevice 是否允许自助淘汰设备 Integer 0-禁止 1-允许
allowInconsistentActivate 设备激活与设备注册时的信息不一致时允许激活 Integer 0-禁止 1-允许
allowActivateNum 允许单用户注册/激活的设备数量 Integer
forceModifyPwd 是否强制初次登录修改密码 Integer 0-关闭 1-开启
maxPwdAge 用户密码有效期 Integer 0-永久 N-N天
maxFailedAttempts 用户密码输入尝试次数 Integer

0-不限

3-3次锁账号15分钟

4-4次锁账号1小时

5-5次锁账号1小时

6-6次锁账号1小时

调用示例

GET /groups/{groupId}?access_token=xxx   {groupId}代表需要查询详情的组id
输出
HTTP/1.1 200 OK 
Content-Type:application/json;charset=UTF-8
{
"id": 32,
"name": "testA",
"descr": "",
"parentId": 24,
"parentName": "test group",
"type": 0,
"canLoginSelf": 1,
"canRegistDevice": 1,
"canEliminateDevice": 1,
"allowActivateNum": 9999,
"allowInconsistentActivate": 1,
"forceModifyPwd": 1,
"maxPwdAge": 0,
"maxFailedAttempts": 0,
"useGroupPerm": 1
}

 4. 移动用户组

描述

在EMM系统中将一个用户组移动到其它组下面

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
groupId 需要被移动的组ID Long Y
destGroupId 需要被移动到的目标组ID Long Y

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回

调用示例

PUT /groups/move?access_token=xxx
输入
Content-Type:application/json;charset=UTF-8
{
"groupId":32,
"destGroupId":-1
}
 
输出
HTTP/1.1 200 OK 

5. 删除用户组

描述

删除EMM系统中的用户组

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回

调用示例

DELETE  /groups/{groupId}?access_token=xxx  {groupId}表示实际需要删除的组的ID
输出
HTTP/1.1 200 OK

6. 获取用户组下设备列表

描述

根据用户组ID获取设备列表

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
groupId 用户组ID Long Y

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回
deviceId 设备Id Long
type 设备类型 Integer 1Android 2ios
deviceType 设备型号 Integer 10 Android Phone ,11 Android Pad ,20 iPhone ,21 iPad  ,22 iPad MINI ,23 iPod Touch
relationship 归属 Integer 1 企业,2 员工,3 其他
deviceNumber 设备编号 String
deviceName 设备名称 String
status 设备状态 Integer 0 已淘汰 1 未激活 2 已激活设备,3已丢失设备,4 已擦除设备,5待擦除设备 6,待淘汰设备
model 设备型号 String
userId 用户Id Long
loginId 登录名 String
userName 用户名 String
mail 邮件 String
mobile 手机号码 String
groupId 用户组ID Long
groupName 用户组名 String
serialNum 设备序列号 String
imei IMEI String
activateTime 激活时间 String
lastOnlineTime 上次在线时间 String
rootFlag 是否root或者越狱 Integer 1 是 ,0 否
os 操作系统平台 String
specialTypeFlag 特殊设备类型标识. Integer 0–普通设备;100–SamSung SAFE设备;101–SamSung KNOX设备
knoxstatus knox状态 Integer knox状态,0–不支持;201–支持未注入;202–SAFE license已注入;203–KNOX license已注入;101–已创建;501–锁定
remark 描述 String
scanStatus 安全状态 Number 0有病毒设备,1安全设备,2未扫描
effectivePolicyCount 已生效的策略总数 Number
totalPolicyCount 下发的策略总数 Number

调用示例

GET  /groups/{groupId}/devices?access_token=xxx  {groupId}代表需要查询详情的组id
输出
HTTP/1.1 200 OK
[
    {
      "deviceId": 129,
      "type": 1,
      "deviceType": 10,
      "relationship": 1,
      "deviceNumber": "1",
      "deviceName": "caolei11-devices",
      "status": 0,
      "model": "SM-N9108V",
      "userId": 40,
      "loginId": "caolei11",
      "userName": "caolei11",
      "mail": "caolei11@qq.com",
      "mobile": "",
      "groupId": -2,
      "groupName": "默认组",
      "serialNum": "RV8FB0N90QD",
      "imei": "354782063051333",
      "os": "Android",
      "specialTypeFlag": 101,
      "knoxstatus": 201,
      "activateTime": "2015-12-09 11:22:18",
      "lastOnlineTime": 1450940072000,
      "rootFlag": 0,
      "remark": null,
      "scanStatus": null,
      "effectivePolicyCount": null,
      "totalPolicyCount": null
    }
  ]

7. 添加用户(手动)

描述

在EMM系统中手动添加用户

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
loginId 账号 String Y
password 密码 String Y
name 姓名 String Y
mail 邮箱 String Y
bemail bemail邮箱 String Y
mobile 联系电话 String N
groupId 所属组 Long Y
useGroupPerm 是否继承组权限 Integer N

默认为1继承

0 – 自定义

1 – 继承

canLoginSelf 是否允许登录自服务平台 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
canRegistDevice 是否允许自助注册设备 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
canEliminateDevice 是否允许自助淘汰设备 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
allowInconsistentActivate 设备激活与设备注册时的信息不一致时允许激活 Integer N useGroupPerm=0时,默认为1允许(0-禁止 1-允许)
allowActivateNum 允许单用户注册/激活的设备数量 Integer N useGroupPerm=0时,默认为1
forceModifyPwd 是否强制初次登录修改密码 Integer N useGroupPerm=0时,默认为0(0-关闭 1-开启)
maxPwdAge 用户密码有效期 Integer N useGroupPerm=0时,默认为0(0-永久 N-N天)
maxFailedAttempts 用户密码输入尝试次数 Integer N useGroupPerm=0时,默认为0(0-不限 N-N次)
lockInterval 密码输入超过次数后锁定时长 Integer N useGroupPerm=0时,默认为空(0-永久锁定 N-锁定N分钟)
pincode 激活密码 String Y 由数字、小写字母组成的6位字符串
pinAge 激活密码有效期 Integer Y 1-30的整数(天)

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回
userId 保存成功后生成的用户id Long

调用示例

POST /users?access_token=xxx
输入
Content-Type:application/json;charset=UTF-8
{
"loginId": "zhangliao1",
"password": "123456",
"name": "张辽",
"mail": "zhangliao@nq.com",
"bemail": "zhangliao@nq.com",
"mobile": "13234542345",
"groupId": -2,
"useGroupPerm": 1,
"userPin": {
"pincode": "123456",
"pinAge": 3
}
}
输出
HTTP/1.1 200 OK 
Content-Type:application/json;charset=UTF-8
{
    "userId": 49821
}

8. 添加用户(文件导入)

  • (1)上传文件

描述

用户上传csv格式的批量用户或设备。

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
from 来源,有值代表内部调用 ,没有值代表外部调用 String N
importType 0:代表全部导入:1:代表只导入没有冲突的 String Y
operType 1:代表导入用户 2:代表导入设备 String Y

输出说明

输出参数 参数含义 类型 备注
code 0,-1 Integer 0:成功,-1:有错误信息
info 信息 String 成功或错误信息

调用示例

POST /users/file?from=xxx&importType=0&operType=1access_token=xxx
输入
Content-Type:application/json;charset=UTF-8
{
file :  需要上传的文件
}
输出
"{"code":0,"totalNum":6,"normalNum":0,"info":"操作成功"}"
  •  (2)把中间表用户或设备导入正式表

描述

用户上传csv格式的批量用户或设备。

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
importType 0:代表全部导入:1:代表只导入没有冲突的 String Y
operType 1:代表导入用户 2:代表导入设备 String Y

输出说明

输出参数 参数含义 类型 备注
message 成功失败消息 String 成功失败消息

调用示例

PUT /users/file?importType=0&operType=1access_token=xxx
输出
{message: "导入完成"}

9. 编辑用户

描述

在EMM系统中手动更新用户

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
password 密码 String N 为空表示此项保持原值,不
做更新。
name 姓名 String N
mail 邮箱 String N
bemail bemail邮箱 String N
mobile 联系电话 String N
groupId 所属组 Long N
useGroupPerm 是否继承组权限 Integer N
pincode 激活密码 String N
pinAge 激活密码有效期(单位天) String N
canLoginSelf 是否允许登录自服务平台 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
canRegistDevice 是否允许自助注册设备 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
canEliminateDevice 是否允许自助淘汰设备 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
allowInconsistentActivate 设备激活与设备注册时的信息不一致时允许激活 Integer N useGroupPerm=0时,默认为0禁止(0-禁止 1-允许)
allowActivateNum 允许单用户注册/激活的设备数量 Integer N useGroupPerm=0时,默认为1
forceModifyPwd 是否强制初次登录修改密码 Integer N useGroupPerm=0时,默认为0(0-关闭 1-开启)
maxPwdAge 用户密码有效期 Integer N useGroupPerm=0时,默认为0(0-永久 N-N天)
maxFailedAttempts 用户密码输入尝试次数 Integer N useGroupPerm=0时,默认为0(0-不限 N-N次)
lockInterval 密码输入超过次数后锁定时长 Integer N useGroupPerm=0时,默认为空(0-永久锁定 N-锁定N分钟)

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回

调用示例

PUT  /users/{userId}?access_token=xxx {userId}代表实际需要更新的用户id
输入
Content-Type:application/json;charset=UTF-8
{
"name": "张辽",
"mail": "zhangliao@nq.com",
"mobile": "13234542345",
"groupId": -2,
"userPin": {
"pincode": "123456",
"pinAge": 3
}
}
输出
HTTP/1.1 200 OK 

 10. 用户详情

描述

在EMM系统中根据用户ID查询用户详情

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回
id 用户唯一ID Long
loginId 账号 String
name 姓名 String
mail 邮箱 String
bemail bemail邮箱 String
mobile 联系电话 String
groupName 用户所属组名 String
pincode 激活码 String
pinAge 激活码有效期 Integer
pincodesendstatus 激活码发送状态 Integer 0、邮件未发送;1、邮件发送成功;2、邮件发送失败
type 用户类型 Integer 用户来源 0-手工录入 1-文件导入 2-LDAP导入 3-LDAP同步
groupId 用户所属组ID Long
useGroupPerm 标识用户配置是否继承组配置 Integer 0 – 自定义 1 – 继承
canLoginSelf 是否允许登录自服务平台 Integer 0-禁止 1-允许
canRegistDevice 是否允许自助注册设备 Integer 0-禁止 1-允许
canEliminateDevice 是否允许自助淘汰设备 Integer 0-禁止 1-允许
allowInconsistentActivate 设备激活与设备注册时的信息不一致时允许激活 Integer 0-禁止 1-允许
allowActivateNum 允许单用户注册/激活的设备数量 Integer
forceModifyPwd 是否强制初次登录修改密码 Integer 0-关闭 1-开启
maxPwdAge 用户密码有效期 Integer 0-永久 N-N天
maxFailedAttempts 用户密码输入尝试次数 Integer 0-不限 N-N次
lockInterval 密码输入超过次数后锁定时长 Integer 0-永久锁定 N-锁定N分钟
staticLabelNames 用户所属静态标签 Array
bmPermission bemail权限信息 Integer -1-未初始化, 1-使用中, 0-已关闭
status 账号状态 integer 0-已锁定 1-正常

调用示例

GET /users/{userId}?access_token=xxx   {userId}代表需要查询详情的用户id
输出
HTTP/1.1 200 OK 
Content-Type:application/json;charset=UTF-8
{
"id": 901,
"loginId": "zhangliao",
"name": "张辽",
"mail": "zhangliao@nationsky.com",
"bemail": "zhangliao@nationsky.com",
"mobile": "13412432345",
"groupName": "dev1",
"pincode": null,
"pinAge": null,
"pincodesendstatus": null,
"canLoginSelf": 1,
"canRegistDevice": 1,
"canEliminateDevice": 1,
"allowActivateNum": 10,
"allowInconsistentActivate": 1,
"forceModifyPwd": 0,
"maxPwdAge": 0,
"maxFailedAttempts": 0,
"useGroupPerm": 1,
"type": 3,
"groupId": 158,
"staticLabelNames": [
"静态标签1",
"静态标签2"
],
"status": 1,
"bmPermission": -1
}

11. 移动用户

描述

在EMM系统中将一个或多个用户移动到其它组

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
userIds 以逗号分隔的用户ID String Y 123,456
destGroupId 用户需要被移动到的目标组ID Long Y

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回

调用示例

PUT /users/move?access_token=xxx
输入
Content-Type:application/json;charset=UTF-8
{
"userIds":"37",
"destGroupId":-2
}
输出
HTTP/1.1 200 OK 

12.  删除用户

描述

删除EMM系统中的用户

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
userIds 以逗号分隔的用户ID String Y 123,456

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回

调用示例

DELETE  /users?access_token=xxx
输入
Content-Type:application/json;charset=UTF-8
{
"userIds":"37,38"
}
输出
HTTP/1.1 200 OK 

13. 查询用户

描述

在EMM系统中根据指定条件查询用户

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
groupId 组ID Long Y
containChildren 是否查询下级组 Boolean N 默认为false
otherInfo 其它查询条件 String N 用户名/账号/邮箱/电话
status 用户状态 Integer N 1-正常 0-锁定
pincodeStatus 激活码状态 Integer N 0-邮件未发送;1-邮件发送成功;2-邮件发送失败 -1-已过期
staticLableId 静态标签ID Integer N
deviceStatus 设备状态 Integer N 0 已淘汰 1 未激活 2 已激活设备 3已丢失设备 4 已擦除设备 5待擦除设备 6待淘汰设备
relationship 设备归属 Integer N 1–公司设备;2–员工设备;3–其他
type 平台 Integer N 1–android;2–ios
jailbreakFlag 设备是否越狱/root Integer N 0–否;1–是
scanStatus 安全状态 Integer N 0有病毒设备,1安全设备,2未扫描
offset 查询起始索引 Integer N 默认为0
limit 查询结果最多返回记录数 Integer N 默认为50

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回
total 按当前条件查询的总记录数 Integer
rows
输出参数 参数含义 类型 备注
id 用户ID Long
loginId 用户账号 String
name 用户姓名 String
mail 用户邮箱 String
mobile 联系电话 String
groupName 用户所属组名 String
groupId 用户所属组ID Long

调用示例

GET /users?access_token=xxx&groupId=-1&containChildren=true&otherInfo=test&offset=0&limit=10
输出
HTTP/1.1 200 OK 
Content-Type:application/json;charset=UTF-8
{
"total": 1,
"rows": [
{
"id": 30,
"loginId": "test",
"name": "test",
"mail": "test@q.com",
"mobile": "",
"groupName": "默认组",
"activeDeviceNum": 0,
"groupId": -2
}
]
}

 14. 发送EMM激活邀请邮件

描述

向用户发送激活邀请邮件

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y

输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回

调用示例

PUT /users/{userId}/invite?access_token=xxx  {userId}代表需要查询详情的用户id
输出
HTTP/1.1 200 OK 
Content-Type:application/json;charset=UTF-8
[
{
"id": 1065,
"loginId": "yujin",
"name": "于禁",
"mail": "yujin@nq.com",
"mobile": "13234542345",
"groupName": "Default"
}
]

15. 根据用户ID 获取设备列表

描述

向用户发送激活邀请邮件。

输入说明

输入参数 参数含义 类型 必填 备注
access_token 访问令牌 String Y
userId 用户ID Long Y userId
status 设备状态 Integer N

0 已淘汰

1 未激活

2 已激活设备

3已丢失设备

4 已擦除设备

5待擦除设备

6待淘汰设备

 输出说明

输出参数 参数含义 类型 备注
errorCode 错误码 Integer 执行失败才返回
deviceId 设备ID Long
type 设备类型 Integer 1 Android 2 iOS
deviceType 设备型号 Integer

10 Android Phone ,11 Android Pad ,20 iPhone ,21 iPad  ,22 iPad MINI ,23 iPod Touch

relationship 归属 Integer 1 企业,2 员工,3 其他
deviceNumber 设备编号 String
deviceName 设备名称 String
status 设备状态 Integer

0 已淘汰 1 未激活 2 已激活设备,3已丢失设备,4 已擦除设备,5待擦除设备 6,待淘汰设备

model 设备型号 String
userId 用户Id Long
loginId 登录名 String
userName 用户名 String
mail 邮件 String
mobile 手机号码 String
groupId 用户组ID Long
groupName 用户组名 String
serialNum 设备序列号 String
imei IMEI String
activateTime 激活时间 String
lastOnlineTime 上次在线时间 String
rootFlag 是否root或者越狱 Integer 1 是 ,0 否
OS 操作系统平台 String
specialTypeFlag 特殊设备类型标识. Integer

0–普通设备;100–SamSung SAFE设备;101–SamSung KNOX设备

knoxstatus knox状态 Integer knox状态,0–不支持;201–支持未注入;202–SAFE license已注入;203–KNOX license已注入;101–已创建;501–锁定
remark 描述 String
scanStatus 扫描状态 Number 0有病毒设备,1安全设备,2未扫描
effectivePolicyCount 已生效的策略总数 Number

调用示例

GET  /users/{userId}/devices?access_token=xxx   {userId}代表需要查询详情的用户id
输出
[
    {
      "deviceId": 129,
      "type": 1,
      "deviceType": 10,
      "relationship": 1,
      "deviceNumber": "1",
      "deviceName": "caolei11-devices",
      "status": 0,
      "model": "SM-N9108V",
      "userId": 40,
      "loginId": "caolei11",
      "userName": "caolei11",
      "mail": "caolei11@qq.com",
      "mobile": "",
      "groupId": -2,
      "groupName": "默认组",
      "serialNum": "RV8FB0N90QD",
      "imei": "354782063051333",
      "os": "Android",
      "specialTypeFlag": 101,
      "knoxstatus": 201,
      "activateTime": "2015-12-09 11:22:18",
      "lastOnlineTime": 1450940072000,
      "rootFlag": 0,
      "remark": null,
      "scanStatus": null,
      "effectivePolicyCount": null,
      "totalPolicyCount": null
    }
  ]