本规范定义了云之家组织与人员同步的接口API 实例代码demo
HTTPS
https://www.yunzhijia.com
POST
Content-Type: application/x-www-form-urlencoded
默认的输入字符编码格式为UTF-8格式
输入参数说明:
| 参数名称 | 数据类型 | 说明 |
|---|---|---|
| nonce | String | 校验重复请求,格式为16位以内随机字符串 |
| eid | String | 注册号,格式为字符串 |
| data | String | 业务数据,格式为BASE64编码的字符串,编码前的内容须加密处理 |
注册号:创建工作圈时产生的唯一标识符,可简称为eid或mid 创建人在创建工作圈后会收到短信通知注册号及初始密码,创建人可登录企业云服务平台修改初始密码
特别注意:后续所有接口(除非特别说明),请求的基本格式都是这样的。不同的接口,data部分使用对应业务json的加密串(json→String→加密→BASE64)。(Java版示例程序)
默认的输出字符编码格式为UTF-8格式
输出内容的数据类型包括:
| 数据类型 | 示例 |
|---|---|
| 布尔型(Boolean) | 例如isNew:truefalse |
| 数字型(Number) | 例如number:3.1415 |
| 字符串型(String) | 例如name:'张三' |
| 对象类型(Object) | null表示空对象,{…}表示非空对象,对象的属性可以是Boolean, Number, String, Object, Array |
| 数组类型(Array):[]表示空数组 | 数组的元素可以是Boolean, Number, String, Object, Array |
通用输出值的格式为JSON格式:
{
success: boolean, //服务出现异常为false,其他为true
error:String, //错误信息,success=false时携带此信息
errorCode:int, //错误代码,用于错误的分类
data: Object/Array //返回值,类似Map对象或者Array数组对象
}
对于返回的结果,有以下几种情况:
success=true: 成功,此时error=null、errorCode=100,代表没有错误。其中data为返回的数据对象,data只可能是Object或Array类型
success=false: 失败,进一步查看errorCode确定错误的分类以确定下一步操作,对于每个接口来说,errorCode的情况可能都不一样,具体说明见各个接口的说明,确认错误类型后可查看data数据了解详细错误原因
批量处理只返回错误信息,无错误返回的表示导入成功
输入参数中的data参数须使用企业私钥(Key)加密,系统管理员可登录http://www.yunzhijia.com/在管理中心—系统设置—系统集成—集成密钥—下载,得到一个XXXX.key,它是一个二进制流文件,直接将文件读取到一个byte数组。
这里给出了还原RSA加密私钥的方法:
public static PrivateKey restorePrivateKey(byte[] bytes) throws Exception {
PKCS8EncodedKeySpec pkcs = new PKCS8EncodedKeySpec(bytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(pkcs);
}
这里给出了java代码加密方法,不同实现语言请确保算法一致性。
/**
*
* 此处使用的Key即上一步得到的RSA私钥,PrivateKey是Key的子类
*
*/
import java.security.Key;
import java.security.SecureRandom;
import java.security.Security;
import javax.crypto.spec.SecretKeySpec;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
public class EncryptUtils {
private static final String CIPHER_RSA = "RSA/ECB/PKCS1Padding";
private static final String CIPHER_AES = "AES/ECB/PKCS5Padding";
static{
Security.addProvider(new BouncyCastleProvider());
}
public static byte[] encryptLarger(byte[] data, Key key) throws Exception {
javax.crypto.Cipher rsa = javax.crypto.Cipher.getInstance(CIPHER_RSA);
rsa.init(javax.crypto.Cipher.ENCRYPT_MODE, key);
SecureRandom random = new SecureRandom();
final byte[] secretKey = new byte[16];
random.nextBytes(secretKey);
final javax.crypto.Cipher aes = javax.crypto.Cipher.getInstance(CIPHER_AES);
SecretKeySpec k = new SecretKeySpec(secretKey, "AES");
aes.init(javax.crypto.Cipher.ENCRYPT_MODE, k);
final byte[] ciphedKey = rsa.doFinal(secretKey);
final byte[] ciphedData = aes.doFinal(data);
byte[] result = new byte[128 + ciphedData.length];
System.arraycopy(ciphedKey, 0, result, 0, 128);
System.arraycopy(ciphedData, 0, result, 128, ciphedData.length);
return result;
}
}
注意: 使用非Sun JDK或者其它语言的开发者,JDK标准加密算法使用:AES/ECB/PKCS5Padding,其中,AES 的加密模式为:ECB,填充对齐方式:PKCS5Padding 。
加密方法提供者,使用第三方开源bouncycastle库,开发者请到:https://www.bouncycastle.org/ 查找对应版本的开发库(目前支持Java、C#平台)。
IBM JDK 由于默认不允许使用RSA私钥加密,为保持和SUN JDK的兼容性,请在运行时,添加JVM参数:
-Dcom.ibm.crypto.provider.DoRSATypeChecking=false
加密过程示意图:
除java外其他语言输入参数加密demo:https://github.com/yunzhijia
组织长名称:根据组织层级包含本组织及所有上级组织的完整名称,它具有以下特点:
例如: “研发中心\移动平台产品部\开发部”
描述: 新增组织,每次新增记录不超过1000条,按照departments先后顺序进行排序。
URL: openaccess/input/dept/add
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
"eid":String,//不必须,如果没有,则以外面的eid参数为准
"departments":[String,…],//必填,组织长名称数组,单个组织长名称格式:"一级部门\二级部门\三级部门",如 : "研发中心\移动平台产品部\开发部"
"weights":["2","4","3"]//保证weights与departments长度一致,如果不传根部门,只传了子部门,根部门的排序码会依据子部门的排序码来生成 ,子部门排序码越小,生成的根部门排序码就也越小。
}
输出: 参见3.2、输出格式,如果组织全部创建成功,则data里返回[],如果有未创建成功的,则data中会有未创建成功的记录的具体信息,具体data格式:
[{
"msgId":String,//组织长名称
"msgCode":int,//消息码
"msg":String//消息
},…]
2016-04-29, 新增注意说明
描述: 更新组织名称,每次更新记录不超过1000条
注意: 当前接口仅仅支持同级组织名称的变化,不包括组织层级变化(原组织和新组织必须在同级目录下)。如果需要将某一部门(包括所有下级部门)整体挪动到另外一个部门,请使用接口:4.8、跨层次部门挪动
URL: openaccess/input/dept/update
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
"eid":String,//不必须,如果没有,则以外面的eid参数为准
"departments":[{
"department":String,//必填,原组织长名称
"todepartment":String//必填,新组织长名称,路径中不存在的组织将会自动创建
},...]
}
输出: 参见3.2、输出格式,如果更新组织全部成功,则data里返回[],如果有未修改成功的,则未成功的记录会在data中会有具体错误信息,具体data格式:
{
[{
"msgId":String,//组织长名称
"msgCode":int,//消息码
"msg":String//消息
},…]
}
描述: 根据组织长名称删除组织,如该组织及其子组织下存在“正常”的人员,则删除失败;
若不存在“正常”的人员,则该组织及其子组织会被删除,同时把组织下“禁用”或“注销”的人员改为待分配状态
URL: openaccess/input/dept/delete
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
"eid":String,//不必须,如果没有,则以外面的eid参数为准
"departments":[String,…]//必填,要删除的组织长名称数组
}
输出: 参见3.2、输出格式,具体data格式:
{
[{
"msgId":String,//组织长名称
"msgCode":int,//消息码
"msg":String//消息
},…]
}
描述: 查询全部人员信息
URL: openaccess/input/dept/getall
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
"eid":String//必填,注册号
}
输出: 参见3.2、输出格式,具体data格式:
[{//组织列表
"id":String,//组织的id
"parentId":String,//组织父Id
"name":String,//组织名称
"department":String,//组织长名称
"weights":int//排序码
},…]
描述: 查询某个时点后有更新的部门信息
URL: openaccess/input/dept/getAtTime
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
"eid":String,//不必须,如果没有,则以外面的eid参数为准
"time":String//必填,查询时点,格式:“2014-08-02 01:40:38”
}
输出: 参见3.2、输出格式,具体data格式:
[{
"id":String,//组织的id
"parentId":String,//组织父Id
"name":String,//组织名称
"department":String,//组织长名称
"weights":int,//排序码
"changeType":String//1:新增 2:更新 3:删除
},…]
注意,该接口的参数输入格式不是form格式而是json格式,如{“data”:”…加密后的data…”, “eid”:””,”nonce”:””} 且请求头信息(header)中需要带上”Content-Type”:“application/json” 加密的时候注意不能将url编码,即加密之后=,+等符号仍然是=,+,不能是编码后的%3d等
描述: 将某一个部门及其所有下级部门和这些部门所挂的人员,整体挪动到另外一个部门,保持子部门、人员相对于这个部门的路径不变。
URL: /openaccess/input/dept/moveOrg
方式: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"orgId":"", //待挪动部门ID
"moveToOrgId":"" //挪动到的部门ID
}
输出: 参见3.2、输出格式,输出data为null或空字符串,请根据返回数据的success区分业务操作是否成功。success为false时,error部分会说明失败的原因。 注意: 调用方需要自己保证,目标部门中,不存在同名称的部门(已经存在时,挪动也会成功,但是,会导致其它业务失败)。 示例:
{
"success": false,
"error": "目标部门不存在!",
"errorCode": 100,
"data": ""
}
描述: 更新组织名称,每次更新记录不超过1000条
注意: 当前接口仅仅支持同级组织名称的变化,不包括组织层级变化(原组织和新组织必须在同级目录下)。如果需要将某一部门(包括所有下级部门)整体挪动到另外一个部门,请使用接口:4.8、跨层次部门挪动
URL: openaccess/input/dept/updateById
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
"eid":String,//不必须,如果没有,则以外面的eid参数为准
"departments":[{
"orgId":String,//必填,原组织id
"todepartment":String//必填,新组织名称,不是长名称
},...]
}
输出: 参见3.2、输出格式,如果更新组织全部成功,则data里返回[],如果有未修改成功的,则未成功的记录会在data中会有具体错误信息,具体data格式:
{
[{
"msgId":String, //原组织id
"msgCode":int, //消息码
"msg":String //消息
},…]
}
描述: 根据组织id删除组织,如该组织及其子组织下存在“正常”的人员,则删除失败;
若不存在“正常”的人员,则该组织及其子组织会被删除,同时把组织下“禁用”或“注销”的人员改为待分配状态
URL: openaccess/input/dept/deleteById
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
eid:String //不必须,如果没有,则以外面的eid参数为准
departments:[String,…] //必填,要删除的组织id数组
}
输出: 如果删除组织全部成功,则data里返回[],如果有未删除成功的,则未成功的记录会在data中会有具体错误信息,具体data格式参见3.2、输出格式,具体data格式:
{
[{
"msgId":String,//组织id
"msgCode":int,//消息码
"msg":String//消息
},…]
}
描述:设置隐藏部门、部门仅可见 ;(new)
URL: openaccess/input/company/setOrgSecret
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
[{
"commitId": String, //唯一标识一次提交
"orgId": String, //部门ID
"type": String, //类型,HIDE:隐藏部门;VISI:部门仅可见。
"status": boolean //状态,true:开启;false:关闭
}]
输出: 参见3.2、输出格式,具体data部分如下:
[
{ //只有在有失败数据时返回
commitId: String, //提交ID
errorMsg: String //此处标识失败原因
}
]
描述:批量设置隐藏部门或者部门仅可见部门;
URL: openaccess/input/company/queryOrgSecret
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
type: String //查询类型,HIDE:隐藏部门;VISI:部门仅可见
begin: int // 起始
count: int // 条数
}
输出:参见3.2、输出格式,具体data部分如下:
[{
orgId: String // 人员ID
department: String // 部门长名称
}]
描述:更新组织排序,如果更新失败,会返回失败的orgid,更新成功data为空;(new)
URL: /openaccess/input/dept/updateWeightsById
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"departments": [
{
"orgId": "078e22a6-c512-4c9a-90c4-acf721e5a7d8",//部门ID
"weights": "122"//排序码
},
{
"orgId": "20fcf4bc-3fdf-4d07-887f-923e3cda23c2",
"weights": "13"
},
{
"orgId": "20fcf4bc-3fdf-4d07-887f-923e3cda2c2",
"weights": "13"
}
],
"eid": "2704254"
}
输出:参见3.2、输出格式,具体data部分如下:
[
{
"msgId": "20fcf4bc-3fdf-4d07-887f-923e3cda2c2",//部门ID
"msgCode": 221,
"msg": "部门ID不存在"
}
]
描述:根据orgId或longName查询组织详细信息
URL:openaccess/input/dept/get
方法:POST
输入:
{
"array": [
"02008582-08dc-40a0-8d5b-c693f73d2798", //查询的组织id
"de6d999b-ca77-11e7-9592-82e47cc7294a"
],
"eid": "团队id",
"type": 0 //根据orgId查询
}
{
"array": [
"bb\\开发部-22", //查询的组织长名称longName
"bb\\开发部-22\\123123aaaa"
],
"eid": "团队id",
"type": 1 //根据longName查询
}
输出:
{
"data": [
{
"department": "bb\开发部-22",
"id": "02008582-08dc-40a0-8d5b-c693f73d2798",
"name": "开发部-22",
"parentId": "1112e731-99f8-4ae2-8416-8fdee4fe067e",
"weights": 101000
},
{
"department": "bb\开发部-22\123123aaaa",
"id": "de6d999b-ca77-11e7-9592-82e47cc7294a",
"name": "123123aaaa",
"parentId": "02008582-08dc-40a0-8d5b-c693f73d2798",
"weights": 2147483647
}
],
"error": "",
"errorCode": 100,
"success": true
}
注意:
描述: 新增人员到云之家通讯论,支持批量新增,每次新增数不能超过1000条。
URL: openaccess/input/person/add
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
"eid":String, //不必须,如果没有,则以外面的eid参数为准
"persons": [
{ //必填,人员列表
"name":String, //必填,姓名
"photoUrl":String, //可选,头像URL,可访问的公网URL,默认为空
"account": {
"mobile":String, //可选,手机账号。如果account中的email为空,且下面phone字段也为空,那mobile字段就必须,否则创建账号不成功。如果有mobile字段,也有下面phone字段,则优先以mobile字段作为账号,phone忽略。建议下面phone和mobile只要其中一个传值即可
"email":String, //可选,邮箱账号
"password":String //可选,账号密码,如果传了该密码,且是首次导入,则该用户会自动激活,如果没传,则是未激活的账号,需要该用户自行激活
},
"phone":String, //可选,手机号码,工作圈内唯一 。如果account字段中mobile和email都为空,那这个phone就必须有,否则创建账号不成功,如果account中的mobile字段存在,则优先以mobile作为账号,phone字段忽略。建议phone和mobile只要其中一个传值即可
"isHidePhone":String, //可选,是否在通讯录中隐藏手机号码,0: 不隐藏; 1: 隐藏,默认为0
"department":String, //可选, 部门长名称,格式:"一级部门\二级部门\三级部门",如 : "研发中心\移动平台产品部\开发部",挂在根部门下面,直接传: "\"
"jobTitle":String, //可选,职位,默认为空
"jobNo":String, //可选,企业工号
"gender":String, //可选,性别,0: 不确定; 1: 男; 2: 女,默认为0
"birthday":String, //可选,生日
"status":String, //可选,状态 0: 注销,1: 正常,2: 禁用,默认为1
"weights":int, //可选,排序权重,权重越小,排序越前.
"orgUserType":int, //可选,是否部门负责人,0表示普通用户,1表示部门负责人
"contact":jsonarray, //自定义的联系方式,可以存储公司自定义的一些个人信息,比如短号、工号等。contact是公有信息,包括电话,邮箱以及其他三类,每类必须有name,type,value三个属性,type为P支持在手机端直接呼叫打电话,具体格式: [{“name”:”工号”,“type”:”O”, “value”:”GH001”},{“name”:”电话”,“type”:”P”, “value”:”13800000000”},{"name": "邮箱1","type": "E","value": "123aaa@abc.com"}...]其中name是自定义属性的名称,type是类型,type值只有P,E,O三种类型,分别表示手机号,邮箱和其他,value是对应的值
"regSource":String, //用户来源,如K3OA则对应"K3OA",EAS对应"EAS",K/3对应"K/3",KIS对应"KIS",微信对应"wechat",S-HR对应"sHR"
"hireDate":String,//入职日期,格式如:"2018-01-01"
"positiveDate":String//转正日期,格式如:"2018-01-01"
]
}
完整JSON串示例:
{
"eid": "30085",
"persons": [
{
"name": "YINHONGJUN",
"photoUrl": "",
"account": {
"mobile": "13750158xxx",
"email": "xxx@163.com",
"password": "123456"
},
"phone": "13750158xxx",
"isHidePhone": 0,
"department": "研发中心\\移动平台产品部\\开发部",
"jobNo": "6666",
"jobTitle": "开发工程师",
"gender": 1,
"birthday": "2012-12-12",
"status": 1,
"contact": [
{
"name": "电话",
"type": "P",
"value": "13800000000"
}
]
}
],
"regSource": "K3OA"
}
输出: 参见3.2、输出格式,具体data格式:
{
[{
"openId":String,//openId
"msgId":String,//如果创建成功,则与openId相同值,不成功,则是手机号
"msgCode":int,//消息码
"msg":String//消息
},…]
}
描述: 如果人员组织不存在,则不新建该组织。(与上面新增人员接口的唯一区别)
URL: /openaccess/input/person/addNew
方法: POST
输入输出: 同上
V2.0更新人员接口已拆分为更新人员信息接口及更新人员组织,请注意更新人员信息接口有以下主要修订内容:
描述: 根据openId更新人员信息,openId字段必填,其他字段至少有一项不能为空,每次更新数不能超过1000条
URL: openaccess/input/person/updateInfo
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
eid:String //不必须,如果没有,则以外面的eid参数为准
persons:[{ //必填,人员列表
openId:String, //必填,人员的openId,获取方式参见 [[#4.6、查询全部人员信息]]
name:String, //可选,姓名
photoUrl:String, //可选,头像URL
isHidePhone:String, //可选,是否在通讯录中隐藏手机号码
jobNo:String, //可选,企业工号
jobTitle:String, //可选,职位
gender:int, //可选,性别
birthday:String, //可选,生日
weights:int, //可选,排序权重,权重越小,排序越前.
hireDate:String, //入职日期,格式如:"2018-01-01"
positiveDate:String, //转正日期,格式如:"2018-01-01"
orgUserType:int, //可选,是否部门负责人,0表示普通用户,1表示设置部门负责人 2 表示取消部门负责人
contact:[{
name: String,
type:String,
value:String
}...] // 自定义的联系方式,更新此字段,如果是部分更新,也需要将全部字段的值也传过来,因为此字段会覆盖保存
},…]
}
输出: 参见3.2、输出格式,具体data格式:
{
[{
msgId:String,//人员的openId
msgCode:int,//消息码
msg:String//消息
},…]
}
注意: 需要更新的字段请将对应的key-value对传过来,不用更新的字段,请不要传递对应的key。
举个例子,传“jobTitle”:“” 将导致职称被清空(而不是保持职称不修改)。
描述: 根据openId更新人员组织,每次更新数不能超过1000条
更新人员组织是V2.0定义的新接口
URL: openaccess/input/person/updateDept
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
eid:String,//不必须,如果没有,则以外面的eid参数为准
persons:[{//必填,人员列表
openId:String,//必填,人员的openId,人员必须在职
department:String//必填,新的组织长名称,组织须已存在.department="",则人员移动到根部门;department="0",则人员移动到[无部门人员]
},…]
}
输出: 参见3.2、输出格式,具体data格式:
[{
msgId:String,//人员的openId
msgCode:int//消息码
msg:String//消息
},…]
描述:通过组织id更新人员组织接口
URL: openaccess/input/person/updateDeptByDeptId
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
eid:String, //不必须,如果没有,则以外面的eid参数为准
persons:[{ //必填,人员列表
openId:String, //必填,人员的openId,人员必须在职
orgId:String //新的组织id,组织为空则移动到无部门
},…]
}
输出: 参见3.2、输出格式,具体data格式:
{
[{
msgId:String, //人员的openId
msgCode:int, //消息码
msg:String //消息
},…]
}
描述: 根据openId更新人员状态,每次更新数不能超过1000条
更新人员状态是V2.1定义的新接口
URL: openaccess/input/person/updateStatus
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
eid:String, //不必须,如果没有,则以外面的eid参数为准
persons:[{ //必填,人员列表
openId:String, //必填,人员的openId
type:String //必填,详见type类型值说明表
},…]
}
| type类型值 | 业务说明 | 变更前人员status | 变更后人员status | 接口支持性 |
|---|---|---|---|---|
| 1 | 人员离职 | 1:正常 | 0:注销 | 有效,接口已支持此操作 |
| 2 | 人员恢复 | 0:注销 | 1:正常 | 无效,目前接口暂不支持此操作 |
| 3 | 人员禁用 | 1:正常 | 2:禁用 | 无效,目前接口暂不支持此操作 |
| 4 | 人员启用 | 2:禁用 | 1:正常 | 无效,目前接口暂不支持此操作 |
输出: 参见3.2、输出格式,具体data格式:
{
[{
msgId:String, //人员的openId
msgCode:int //消息码
msg:String //消息
},…]
}
V2.0删除人员接口已经修订,请注意以下修改内容:
描述: 删除人员,根据openId删除人员,每次删除记录不能超过1000条
URL: openaccess/input/person/delete
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
eid:String //不必须,如果没有,则以外面的eid参数为准
openIds:[String,…] //必填,人员的openId数组
}
输出: 参见3.2、输出格式,具体data格式:
[{
msgId:String, //人员的openId
msgCode:int, //消息码
msg:String //消息
},…]
描述: 查询全部人员信息,查询使用分页机制,每次查询总数不能超过1000条
URL: openaccess/input/person/getall
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
eid:String //不必须,如果没有,则以外面的eid参数为准
begin:int //可选,默认0
count:int //可选,默认1000
}
输出: 参见3.2、输出格式,具体data格式:
[{ //人员列表
openId:String //人员的openid
name:String, //姓名
photoUrl:String, //头像URL
phone:String, //手机号码
isHidePhone:String //是否在通讯录中隐藏手机号码,0: 不隐藏; 1: 隐藏,默认为0
email:String, //邮箱
department:String //组织长名称
jobNo:String //企业工号
jobTitle:String //职位
gender:int //性别,0: 不确定; 1: 男; 2: 女
status:int //状态 0: 注销,1: 正常,2: 禁用
orgUserType:int //是否部门负责人 0:否, 1:是
},…]
描述: 查询某个时点后有更新的人员信息,更新的信息包括个人信息以及状态信息(正常状态变为离职状态)
URL: openaccess/input/person/getAtTime
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
eid:String //不必须,如果没有,则以外面的eid参数为准
time:String //必填,查询时点,格式:“2014-08-02 01:40:38”
begin:int //可选,默认0
count:int //可选,默认1000
}
输出: 参见3.2、输出格式,具体data格式:
[{//人员列表
openId:String //人员的openid
name:String, //姓名
photoUrl:String, //头像URL
phone:String, //手机号码
isHidePhone:String //是否在通讯录中隐藏手机号码,0: 不隐藏; 1: 隐藏,默认为0
email:String, //邮箱
department:String //组织长名称
jobNo:String //企业工号
jobTitle:String //职位
gender:int //性别,0: 不确定; 1: 男; 2: 女
status:int //状态 0: 注销,1: 正常,2: 禁用
orgUserType:int //是否部门负责人 0:否, 1:是
},…]
描述: 根据openId或phone查询指定人员,每次不能超过1000条
URL: openaccess/input/person/get
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
eid:String //注册号
type:int //0:手机号码,1:openId,默认0
array:[String,…] //手机号码或者openId数组
}
输出: 参见3.2、输出格式,具体data格式:
[{//人员列表
openId:String //人员的openid
name:String, //姓名
photoUrl:String, //头像URL
phone:String, //手机号码
isHidePhone:String //是否在通讯录中隐藏手机号码,0: 不隐藏; 1: 隐藏,默认为0
email:String, //邮箱
department:String //组织长名称
jobNo:String //企业工号
jobTitle:String //职位
gender:int //性别,0: 不确定; 1: 男; 2: 女
status:int //状态 0: 注销,1: 正常,2: 禁用
orgUserType:int //是否部门负责人 0:否, 1:是
},…]
描述: 设置或者取消管理员身份。如果工作圈没有管理员,可以通过该接口设置一个管理员
URL: openaccess/input/company/setadmin
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
eid:String //注册号,不必须,如果没有,则以外面的eid参数为准
account:String //必填,账号
type:int //必填,操作类型。0:取消 1:设置
}
输出: 参见3.2、输出格式,具体data格式:
{
}
描述: 根据登陆账号和密码获取其是管理员的工作圈列表 该接口跟其他接口有些区别,参数不需要加密,不需要用key。请求头信息中需要”Content-Type”:“application/json”。
URL: openaccess/input/person/getAdminCompany
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
userName:String //账号
password:String //密码(明文)
}
输出: 参见3.2、输出格式
[{
companyName:String //工作圈名字
eid:String //工作圈eid
},
{}......]
描述: 批量修改手机号,未激活用户可无条件修改,已激活用户须满足当前帐号只有一个工作圈或所在圈都有一个相同管理员,目标手机号不是云之家帐号可以修改, 修改不成功的会返回openId和失败原因;(new)
URL: openaccess/input/person/updatePhone
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"persons": [
{"openId":"577f7e18e4b01f52382636fe","phone":"17213658978"},
{"openId":"577f7ae3e4b01f5238261eca","phone":"17269875126"}
]
}
输出: 参见3.2、输出格式,具体data部分如下:
[{
"msg": "openId关联失败",
"msgCode": 111,
"msgId": "580d9f9f00b011f84defb81"
}
]
描述:获取手机号变更历史记录;(new)
URL: /openaccess/input/person/getPersonChangePhone
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"begin": 0,
"count": 10,
"eid": "2702604",
"time": "2017-04-02 12:00:00"
}
输出:参见3.2、输出格式,具体data部分如下:
[
{
"createTime": "2017-05-05 10:49:25",
"newPhone": "17220176038",
"eid": "2702604",
"oldPhone": "17220176001",
"openId": "58d273d2e4b04132cf8ad418"
}
]
描述:此小节包含对角色标签和人员的角色标签进行相关设置。
URL: /openaccess/input/roletag/addRoleTag
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"eid": "2704254",
"roleName":"接口测试角色2"
}
输出:参见3.2、输出格式,具体data部分如下:
[
{
"id": "a20b2811-fda4-11e6-8f64-82e47cc7294a" //角色id,请保存
}
]
URL: /openaccess/input/roletag/getCompanyRoleTag
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"eid": "2704254"
}
输出:参见3.2、输出格式,具体data部分如下:
[
[
{
"id": "a96a4199-1661-11e6-8fae-82e47cc7294a", //角色id
"createtime": "May 10, 2016 11:45:39 AM",
"rolename": "HR管理员",
"lastupdatetime": "May 10, 2016 11:45:39 AM",
"createpersonid": "", //创建人id
"appid": "", //如果是第三方应用创建,appid就会有值
"iscommon": 0, //是否系统常用标签
"type": 10, //标签类型,10系统标签,20 自建应用标签,30 第三方应用标签 40 企业自定义标签
"eid": "" //如果是企业自定义标签,就会有值
}
]
]
URL: /openaccess/input/roletag/deleteRoleTag
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"eid": "2704254",
"roleId":"a20b2811-fda4-11e6-8f64-82e47cc7294a"
}
输出:参见3.2、输出格式,具体data部分如下: 正常data返回空。
URL: /openaccess/input/roletag/updateRoleTag
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"eid": "2704254",
"roleId":"acca7a9d-f4bd-11e6-8f64-82e47cc7294a",
"roleName":"测试角色3"
}
输出:参见3.2、输出格式,具体data部分如下: 正常data返回" ".
URL: /openaccess/input/roletag/setPersonRoleTag
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"eid": "2704254",
"roleId":"2d69412f-8de5-11e6-961a-82e47cc7294a",
"openId":"580d9fa000b0911f84defd18",
"orgIds":"02008582-08dc-40a0-8d5b-c693f73d2798,03c70e4b-5e10-11e6-961a-82e47cc7294a" //设置作用范围
}
输出:参见3.2、输出格式,具体data部分如下: 正常data返回””.
URL: /openaccess/input/roletag/deletePersonRoleTag
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"eid": "2704254",
"roleId":"2d69412f-8de5-11e6-961a-82e47cc7294a",
"openId":"580d9fa000b0911f84defd18"
}
输出:参见3.2、输出格式,具体data部分如下: 正常data返回" ".
URL: /openaccess/input/roletag/getPersonByRole
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"eid": "2704254",
"roleId":"2d69412f-8de5-11e6-961a-82e47cc7294a"
}
输出:参见3.2、输出格式,具体data部分如下:
[
{
"orgIds": "938fe848-c73c-4331-b883-144c8b9d3a06", //作用范围
"openId": "580d9fa000b0911f84defd18"
}
]
本接口分两个,一个以用户为主(A),一个以角色为主(B)
A: URL:/openaccess/input/roletag/batchSetPersonRoleTag
方法:POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"eid": "332165",
"operate": "insert",
"roleTags": [
{
"openId": "580d9fa000b0911f84defd18",
"roleOrgs": [
{
"roleId": "2d69412f-8de5-11e6-961a-82e47cc7294a",
"orgids": [
"938fe848-c73c-4331-b883-144c8b9d3a06", //作用范围1
"03c70e4b-5e10-11e6-961a-82e47cc7294a" //作用范围2
]
},... // 批量操作,针对这个用户(openId),分配不同的角色(roleId)以及开通范围。不同的角色传成数组
]
},... // 批量操作,不同的用户(openid)传成数组
]
}
参数说明:operate标志是添加角色/删除 insert/delete
输出:参见3.2、输出格式,具体data部分如下: 正常data返回" ".
B: URL:/openaccess/input/roletag/batchSetPersonRoleTag_other
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"eid": "332165",
"operate": "insert",
"roleTags": [
{
"roleId": "2d69412f-8de5-11e6-961a-82e47cc7294a",
"personOrgs": [
{
"openId":"580d9fa000b0911f84defd18",
"orgids": [
"938fe848-c73c-4331-b883-144c8b9d3a06", //作用范围1
"03c70e4b-5e10-11e6-961a-82e47cc7294a" //作用范围2
]
},... //批量操作,针对这个角色(roleId),分配不同的用户(openId),不同的用户传成数组
]
},... //批量操作,不同的角色(roleId)传成数组
]
}
输出:参见3.2、输出格式,具体data部分如下: 正常data返回" ".
描述: 设置部门负责人(new)
URL: openaccess/input/company/setOrgAdmins
方式: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
[ //单次同步,最多只允许1000条数据
{
department: String //部门长名称,格式:"一级部门\二级部门\三级部门",如 : "研发中心\移动平台产品部\开发部"
openId: String //人员ID
weights:int //可选,排序权重,权重越小,排序越前.
commitId: String //唯一标识一条设置数据,建议使用自增序列(返回时,可用来判断一条记录是否成功)
}
]
输出: 参见3.2、输出格式,具体data部分如下
[
{ //只有在有失败数据时返回
commitId: String //提交ID
errorMsg: String //此处标识失败原因
}
]
人员和部门必须已经存在才能设置成功。
描述: 查询所有部门负责人(new)
URL: openaccess/input/company/queryOrgAdmins
方式: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{ //分页查询部门负责人,每页限制最多返回1000条记录;count>1000时,截断为1000。
begin: int // 分页起始条数,比如:0
count: int // 单次查询条数,比如: 1000
}
输出: 参见3.2、输出格式,具体data部分如下
[ //success为true时返回
{
"openId": String, //人员openId
"department": String, //所负责的部门长名称
}
]
注意: 该接口只返回在职的部门负责人。
描述: 批量删除部门负责人(new)
URL: openaccess/input/company/deleteOrgAdmins
方式: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"deleteAll": Boolean, //是否删除所有,默认值为false。该值传true时,表示删除所有部门负责人(此时list可以不传);该值为false时,表示删除指定部门负责人,list字段必传。
"list":[ //指定人员删除时,最多允许一次删除1000条记录
{
"department":String, //部门长名称,格式:"一级部门\二级部门\三级部门",如 : "研发中心\移动平台产品部\开发部"
"openId":String, //人员ID
"commitId":String //唯一标识一条数据,建议使用自增序列(返回时,可用来判断一条记录是否成功)
}
]
}
输出: 参见3.2、输出格式,具体data部分如下
[ //success为true时返回
{
"errorCode": Integer, //错误码,注意:该字段可能不返回
"commitId": String, //提交ID
"error": String //具体错误消息
}
]
注意: deleteAll参数会导致所有部门负责人被删除,请谨慎使用。data部分,特殊含义错误码说明:
900014: "负责人不存在"
描述: 设置部门负责人(new)
URL: openaccess/input/company/setOrgAdminsById
方式: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
[ //单次同步,最多只允许1000条数据
{
orgId: String //部门id
openId: String //人员ID
weights:int //可选,排序权重,权重越小,排序越前.
commitId: String //唯一标识一条设置数据,建议使用自增序列(返回时,可用来判断一条记录是否成功)
}
]
输出: 参见3.2、输出格式,具体data部分如下
[
{ //只有在有失败数据时返回
commitId: String //提交ID
errorMsg: String //此处标识失败原因
}
]
人员和部门必须已经存在才能设置成功。
描述: 批量删除部门负责人(new)
URL: openaccess/input/company/deleteOrgAdminsById
方式: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
"list":[ //指定人员删除时,最多允许一次删除1000条记录
{
"orgId":String, //部门id
"openId":String, //人员ID
"commitId":String //唯一标识一条数据,建议使用自增序列(返回时,可用来判断一条记录是否成功)
}
]
}
输出: 参见3.2、输出格式,具体data部分如下
[ //success为true时返回
{
"errorCode": Integer, //错误码,注意:该字段可能不返回
"commitId": String, //提交ID
"error": String //具体错误消息
}
]
描述:批量设置兼职,设置一个人员为其它部门的兼职人员,同时可以指定兼职的权重,不传默认是取主职的权重,是否兼职部门负责人。(new)
URL: /openaccess/input/company/addPartTimeJobsFull
方式: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
[ {
"commitId": "123123", //提交ID
"jobTitle": "w1000", //兼职职位
"openId": "580d9fa000b0911f84defd61",
"department":"骨2科", //兼职部门长名称
"weights":1000, //用于兼职排序时的权重
"orgUserType":1 //是否设为兼职部门负责人
}
]
输出: 参见3.2、输出格式,具体data部分如下
[{ //只有在有失败数据时返回
commitId: String //提交ID
errorMsg: String //此处标识失败原因
}]
描述:批量设置兼职,设置一个人员为其它部门的兼职人员。(new)
URL: /openaccess/input/company/addPartTimeJobs
方式: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
[{
commitId: String //提交ID
openId: String // 人员ID
orgId: String // 部门ID
jobTitle: String // 兼职职位
}]
输出: 参见3.2、输出格式,具体data部分如下
[{ //只有在有失败数据时返回
commitId: String //提交ID
errorMsg: String //此处标识失败原因
}]
URL:openaccess/input/relationship/deleteAllPartTimeJobs
输入: 参见3.1、输入格式,具体data格式:
{
"deleteAll": Boolean, //是否删除所有,默认值为false。该值传true时,表示删除所有部门负责人(此时list可以不传);该值为false时,表示删除指定部门负责人,list字段必传。
"list":[ //指定人员删除时,最多允许一次删除1000条记录
{
openId: String // 人员ID
orgId: String // 部门ID
}
]
}
输出: 参见3.2、输出格式,具体data格式:
{
[{
msgId:String, //人员的openId
msgCode:int //消息码
msg:String //消息
},…]
}
描述:批量删除兼职。(new)
URL: /openaccess/input/company/deletePartTimeJobs
方式: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
[{
commitId: String //提交ID
openId: String // 人员ID
orgId: String // 部门ID
}]
输出: 参见3.2、输出格式,具体data部分如下
[{ //只有在有失败数据时返回
commitId: String //提交ID
errorMsg: String //此处标识失败原因
}]
描述:批量查询兼职 。(new)
URL: /openaccess/input/company/queryPartTimeJobs
方式: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
begin: int // 起始
count: int // 条数
}
输出: 参见3.2、输出格式,具体data部分如下
[{
openId: String // 人员ID
orgId: String // 部门ID
jobTitle: String // 兼职职位
}]
URL:openaccess/input/relationship/deleteOrgAdmins
输入: 参见3.1、输入格式,具体data格式:
{
"deleteAll": Boolean, //是否删除所有,默认值为false。该值传true时,表示删除所有部门负责人(此时list可以不传);该值为false时,表示删除指定部门负责人,list字段必传。
"list":[ //指定人员删除时,最多允许一次删除1000条记录
{
"orgId":String, //部门长名称,格式:"一级部门\二级部门\三级部门",如 : "研发中心\移动平台产品部\开发部"
"openId":String, //人员ID
}
]
}
输出: 参见3.2、输出格式,具体data格式:
{
[{
msgId:String, //人员的openId
msgCode:int //消息码
msg:String //消息
},…]
}
描述: 批量指定上级;(new)
URL: openaccess/input/company/addRelations
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
[{
commitId: String //唯一标识一次提交
openId: String // 人员ID
leaderOpenId: String // 上级ID
relationType: String // 指定上级:”LEADER”,汇报上级:”REPORT”(部门负责人默认为汇报上级)
}]
输出: 参见3.2、输出格式,具体data部分如下:
[
{ //只有在有失败数据时返回
commitId: String //提交ID
errorMsg: String //此处标识失败原因
}
]
描述: 批量删除关系;(new)
URL: openaccess/input/company/deleteRelations
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
[{
openId: String // 人员ID
leaderOpenId: String // 上级ID
relationType: String // 指定上级:”LEADER”,汇报:”REPORT”
}]
输出: 参见3.2、输出格式,具体data部分如下:
[
{ //只有在有失败数据时返回
commitId: String //提交ID
errorMsg: String //此处标识失败原因
}
]
描述: 批量查询关系;(new)
URL: openaccess/input/company/queryRelations
方法: POST
输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):
{
relationType: String //指定上级:”LEADER”,汇报:”REPORT”
begin: String // 起始
count: String // 条数
}
输出: 参见3.2、输出格式,具体data部分如下:
[{
openId: String // 人员ID
leaderOpenId: String // 上级ID
relationType: String // 指定上级:”LEADER”,汇报:”REPORT”(查出未选中的汇报上级,有些部门负责人不需要汇报关系)
}]
URL:openaccess/input/relationship/deleteAllRelation
输入: 参见3.1、输入格式,具体data格式:
{
"deleteAll": Boolean, //是否删除所有,默认值为false。该值传true时,表示删除所有部门负责人(此时list可以不传);该值为false时,表示删除指定部门负责人,list字段必传。
"list":[ //指定人员删除时,最多允许一次删除1000条记录
{
openId: String // 人员ID
leaderOpenId: String // 上级ID
relationType: String // 指定上级:”LEADER”,汇报:”REPORT” //唯一标识一条数据,建议使用自增序列(返回时,可用来判断一条记录是否成功)
}
]
}
输出: 参见3.2、输出格式,具体data格式:
{
[{
msgId:String, //人员的openId
msgCode:int //消息码
msg:String //消息
},…]
}
描述:添加/修改合作伙伴信息(new)
URL:openaccess/input/company/edit
方法:POST
输入:
{
"data": {
"id":"21eae62c-763c-47fd-9152-d1b091b55142", //伙伴id,如果参数包含id则修改该伙伴内容,不包含id新建
"code": "101112ss12", //伙伴编码
"partnerName": "66587", //企业名称
"vipType": 1, //企业团队状态
"type": [ //企业类型
"供应商"
],
"yzjTeam": "", //云之家团队
"contacts": [ //外部联系人数组
{
"name": "方书豪2", //姓名
"phone": "15216111339", //手机
"position": "", //职业
"remark": "" //备注
}
],
"principals": [ //我方负责人数组
{
"openId": "599a7b3560b26e71bc004d1d",//我方人员openId
}
],
"business": "", //行业 可为空
"legalPerson": "", //法人 可为空
"businessRegNum": "", //工商登记号 可为空
"businessLicense": "", //经验许可证 可为空
"registerAddress": "", //注册地址 可为空
"remark": "", //备注
"enabled": "", // 伙伴是否启用 false 禁用, true启用(用于修改伙伴时,记录伙伴的状态)
"source": 1 //操作来源 1:管理中心 2:cas, 3:k3
},
"eid": "6823672"
}
输出:
{
{
success:boolean //操作是否成功
errorCode:String //消息码
error:String //消息
data:String //日期
}
}
描述:启用,禁用,删除合作伙伴(new)
URL:openaccess/input/company/operation
方法:POST
输入:
{
"data":{
"partnerIds":"69874,226987411,3369874", //伙伴id,多个伙伴id以逗号隔开
"operating":0, //操作码 0:启用,1:禁止, 2:删除
"source":1 //操作来源 1:管理中心 2:cas, 3:k3
},
"eid":"6823672"
}
输出:
{
{
success:boolean //操作是否成功
errorCode:String //消息码
error:String //消息
}
描述: 根据企业eid查询全部合作伙伴信息,查询使用分页机制,每次查询总数不能超过1000条;(new)
URL: openaccess/input/company/getSuppliers
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
begin:int//选填,默认0
count:int//选填,默认1000
time:String//选填,时间戳(精确到毫秒);传空或者不传表示全部查询
}
输出: 参见3.2、输出格式,具体data部分如下:
[{ //合作伙伴列表
code:String //合作伙伴编号
name:String //合作伙伴企业名称
type:String //合作伙伴类型:合作伙伴,客户(多个以,隔开)
hasCertified:int //0,未认证;1,已认证
eid:String //合作伙伴对应的云之家团队eid
companyName:String //云之家团队名称
companyType:int //云之家团队类型:1,vip团队;2,认证团队;3,普通团队
},....]
描述: 根据企业eid查询全部合作伙伴负责人信息,查询使用分页机制,每次查询总数不能超过1000条;(new)
URL: openaccess/input/company/getSuppliersCharge
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
suppliersCode:String//合作伙伴编号
time:String//选填,时间戳(精确到毫秒);传空或者不传表示全部查询
}
输出: 参见3.2、输出格式,具体data部分如下:
[{//负责人列表
openid:String
},....]
描述: 根据合作伙伴编码查询合作伙伴联系人信息,查询使用分页机制,每次查询总数不能超过1000条;(new)
URL: openaccess/input/company/getSuppliersContacts
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
suppliersCode:String//必填,合作伙伴编号
time:String//选填,选填,时间戳(精确到毫秒);传空或者不传表示全部查询
}
输出: 参见3.2、输出格式,具体data部分如下:
[{ //联系人列表,只有认证的联系人才会返回
name:String, //联系人名称
phone:String, //联系人手机号码
openid:String,//联系人云之家对应openid
status:String,//状态;0,未注册;1,未激活;2,激活;
eid:String //联系人对应的eid
},....]
描述: 每次新增数不能超过1000条。
URL: openaccess/input/preAuth/batchAdd
方法: POST
输入: 参见3.1、输入格式,具体data格式:
{
"eid":string, //不必须,如果没有,则以外面的eid参数为准
"preList":[{ //必填,预认证账号列表
"commitId": String, //唯一标识一次提交
"phone":string, //必填,手机号码(云之家用户账号对应手机号码)
"loginName":string, //必填,预认证账号
},…]
}
完整JSON串示例:
[
{
"commitId": "003",
"errorMsg": "同一个phone(手机号码)不能同时匹配多个预认证账号!"
},
{
"commitId": "002",
"errorMsg": "phone和longinName在云之家已经存在,并且分别对应不同的预认证账号"
}
]
输出: 参见3.2、输出格式,具体data部分如下:
[
{ //只有在有失败数据时返回
"commitId": String, //提交ID
"errorMsg": String //此处标识失败原因
},...
]
描述:批量删除预认证账号:
URL: /openaccess/input/preAuth/batchDel
方式: POST
输入: 参见3.1、输入格式,具体data格式:
{
"eid":string,//不必须,如果没有,则以外面的eid参数为准
"type":string,//删除类型--phone:根据手机号删除;loginName:根据预认证账号删除;
"preList":[{//必填,预认证账号列表
"commitId": String,//唯一标识一次提交
"phone":string,//选填,手机号码(type=phone时必填)
"loginName":string//选填,预认证账号(type=loginName时必填)
},…]
}
完整JSON串示例:
[
{
"commitId": "001",
"errorMsg": "loginName不能为空"
},
{
"commitId": "002",
"errorMsg": "loginName不能为空"
}
]
输出: 参见3.2、输出格式,具体data部分如下:
[{ //只有在有失败数据时返回
"commitId": String, //提交ID
"errorMsg": String //此处标识失败原因
}]
描述:批量查询预认证账号:
URL: /openaccess/input/preAuth/batchGet
方式: POST
输入: 参见3.1、输入格式,具体data格式:
{
"eid": String,//不必须,如果没有,则以外面的eid参数为准
"page": String,//页码(开始页为0)--注意,这个是页码不是开始数,第一页是0,第二页是1
"count": String//条数
}
完整JSON串示例:
[
{
"phone": "17238031213",
"loginName": "test113",
"status": false
},
{
"phone": "17238031212",
"loginName": "test112",
"status": false
}
]
输出: 参见3.2、输出格式,具体data部分如下:
[
{
"phone":string,//必填,手机号码(云之家用户账号对应手机号码)
"loginName":string,//必填,预认证账号
"status": Boolean//状态:true:已认证;false:未认证(判断用户使用登录云之家绑定预认证账号)
}
]
当前已使用的错误代码定义见下表,表中列出了代码号、适用接口以及该错误代码的意义。
| 错误码(消息码) | 适用接口 | 描述 | 备注 |
|---|---|---|---|
| 100 | 所有接口 | 成功 | |
| 101 | 所有接口 | 重复请求 | |
| 102 | 所有接口 | eid为空 | |
| 103 | 所有接口 | 非法eid,未在mcloud注册 | |
| 104 | 所有接口 | 数据加密错误 | |
| 105 | 所有接口 | 导入数据量超标 | |
| 106 | 所有接口 | 业务异常,需查看详情 | |
| 107 | 所有接口 | 数据库异常 | |
| 108 | 所有接口 | 数据为空 | 导入,更新,删除 |
| 109 | 所有接口 | Data格式错误 | |
| 110 | 所有接口 | Data中eid与参数中eid不同 | |
| 111 | 所有接口 | openId关联失败 | |
| 201 | 所有接口 | 导入组织已存在 | |
| 202 | 所有接口 | 组织导入成功 | |
| 203 | 所有接口 | 更新组织ID为空 | |
| 204 | 所有接口 | 更新组织成功 | |
| 205 | 所有接口 | 删除组织成功 | |
| 206 | 所有接口 | 导入人员已存在 | |
| 207 | 所有接口 | 参数导入人员无对应组织 | |
| 208 | 所有接口 | 数据中心导入人员无对应组织 | |
| 209 | 所有接口 | 人员导入成功 | |
| 210 | 所有接口 | 需更新人员不存在 | |
| 211 | 所有接口 | 人员无对应关系,无法更新关系 | |
| 212 | 所有接口 | 更新组织ID为空 | |
| 213 | 所有接口 | 人员更新成功 | |
| 214 | 所有接口 | 人员删除成功 | |
| 215 | 所有接口 | 用户名,用户ID,人员ID,saltType不能为空 | |
| 216 | 所有接口 | 关系已存在,关系更新成功 | |
| 217 | 所有接口 | 关系导入成功 | |
| 218 | 所有接口 | 人员不存在 | |
| 219 | 所有接口 | 手机号码已经存在,不能重复 | |
| 220 | 所有接口 | openId不存在 | |
| 221 | 所有接口 | 原组织长名称不存在 | |
| 222 | 所有接口 | 组织长名称修改成功 | |
| 223 | 所有接口 | 组织长名称修改失败 | |
| 224 | 所有接口 | 原部门有下级组织无法修改 | |
| 225 | 所有接口 | 手机号码格式不正确 | |
| 226 | 所有接口 | 手机号码重复 | |
| 227 | 所有接口 | openId&phone为空 | |
| 228 | 所有接口 | 原组织长名称为公司名称无法修改 | |
| 229 | 所有接口 | 新旧手机都已被激活无法更改手机号码 | 已作废 |
| 230 | 所有接口 | 移动人员,组织不存在 | |
| 231 | 所有接口 | 移动人员失败 | |
| 232 | 所有接口 | 人员疑似重复 | |
| 233 | 所有接口 | 不支持修改的人员状态类型 | |
| 234 | 所有接口 | 人员当前状态和修改类型不匹配 | |
| 235 | 所有接口 | 修改状态,type字段不能为空 | |
| 236 | 所有接口 | 状态不为1(在职)的人员,不让修改信息 | |
| 237 | 所有接口 | 开通ERP同步权限的企业,组织和人员不允许修改 | |
| 238 | 所有接口 | 新手机号已经是云之家用户 | |
| 239 | 所有接口 | 当前用户有多个工作圈 | |
| 300 | 所有接口 | 没有权限访问 | |
| 301 | 所有接口 | 访问权限已到期 |