更新日期:     浏览次数:

1. 组织与人员同步API接口规范

1.1. 概述

本规范定义了云之家组织与人员同步的接口API 实例代码demo

1.2. 网络传输协议规范

1.2.1. 网络传输协议

HTTPS

1.2.2. HTTP请求地址

https://www.yunzhijia.com

1.2.3. HTTP请求方法

POST

1.2.4. HTTP内容类型

Content-Type: application/x-www-form-urlencoded

1.3. 输入与输出格式规范

1.3.1. 输入格式

默认的输入字符编码格式为UTF-8格式

输入参数说明:

参数名称 数据类型 说明
nonce String 校验重复请求,格式为16位以内随机字符串
eid String 注册号,格式为字符串
data String 业务数据,格式为BASE64编码的字符串,编码前的内容须加密处理

注册号:创建工作圈时产生的唯一标识符,可简称为eid或mid 创建人在创建工作圈后会收到短信通知注册号及初始密码,创建人可登录企业云服务平台修改初始密码

特别注意:后续所有接口(除非特别说明),请求的基本格式都是这样的。不同的接口,data部分使用对应业务json的加密串(json→String→加密→BASE64)。(Java版示例程序

1.3.2. 输出格式

默认的输出字符编码格式为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数组对象
}

对于返回的结果,有以下几种情况:

  1. success=true: 成功,此时error=null、errorCode=100,代表没有错误。其中data为返回的数据对象,data只可能是Object或Array类型

  2. success=false: 失败,进一步查看errorCode确定错误的分类以确定下一步操作,对于每个接口来说,errorCode的情况可能都不一样,具体说明见各个接口的说明,确认错误类型后可查看data数据了解详细错误原因

  3. 批量处理只返回错误信息,无错误返回的表示导入成功

1.3.3. 输入参数加密算法

输入参数中的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

加密过程示意图: open:加密流程png.png 除java外其他语言输入参数加密demo:https://github.com/yunzhijia

1.4. 组织接口

组织长名称:根据组织层级包含本组织及所有上级组织的完整名称,它具有以下特点:

  1. 组织长名称在工作圈中具有唯一性
  2. 组织长名称中的各级组织以”\”为分隔符
  3. 组织长名称前不能包含工作圈名称

例如: “研发中心\移动平台产品部\开发部”

1.4.1. 新增组织

描述: 新增组织,每次新增记录不超过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//消息
},…]

1.4.2. 更新组织名称

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//消息
    },…]
}

1.4.3. 删除组织

描述: 根据组织长名称删除组织,如该组织及其子组织下存在“正常”的人员,则删除失败;

若不存在“正常”的人员,则该组织及其子组织会被删除,同时把组织下“禁用”或“注销”的人员改为待分配状态

URL: openaccess/input/dept/delete

方法: POST

输入: 参见3.1、输入格式,具体data格式:

{
    "eid":String,//不必须,如果没有,则以外面的eid参数为准
    "departments":[String,…]//必填,要删除的组织长名称数组
}

输出: 参见3.2、输出格式,具体data格式:

{
    [{
        "msgId":String,//组织长名称
        "msgCode":int,//消息码
        "msg":String//消息
    },…]
}

1.4.4. 查询全部组织信息

描述: 查询全部人员信息

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//排序码
},…]

1.4.5. 查询更新部门信息

描述: 查询某个时点后有更新的部门信息

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等

1.4.6. 跨层次部门挪动

描述: 将某一个部门及其所有下级部门和这些部门所挂的人员,整体挪动到另外一个部门,保持子部门、人员相对于这个部门的路径不变。

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": ""
}

1.4.7. 根据orgId更新组织名称

描述: 更新组织名称,每次更新记录不超过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        //消息
    },…]
}

1.4.8. 根据orgId删除组织

描述: 根据组织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//消息
    },…]
}

1.4.9. 设置隐藏部门、部门仅可见

描述:设置隐藏部门、部门仅可见 ;(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   //此处标识失败原因
    }
]

1.4.10. 查询设置隐藏部门或者部门仅可见部门

描述:批量设置隐藏部门或者部门仅可见部门;

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      // 部门长名称
}]

1.4.11. 更新组织排序码

描述:更新组织排序,如果更新失败,会返回失败的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不存在"
    }
 ]

1.4.12. 根据orgId或longName查询组织详细信息

描述:根据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
}

1.5. 人员接口

1.5.1. 新增人员

注意:

  • 新增人员是V2.0定义的新接口 新增人员现有2个接口可调用,输入输出都一样。
  • 作为帐号的email字段通过account字段来传,不作为帐号的email字段通过contact字段来传;
  • 如果account中的账号传了密码,且是首次导入,则该用户会自动激活,如果没传,则需要用户自行在手机端或网站上激活;

描述: 新增人员到云之家通讯论,支持批量新增,每次新增数不能超过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//消息
    },…]
}

1.5.2. 新增人员(New)

描述: 如果人员组织不存在,则不新建该组织。(与上面新增人员接口的唯一区别)

URL: /openaccess/input/person/addNew

方法: POST

输入输出: 同上

1.5.3. 更新人员信息

V2.0更新人员接口已拆分为更新人员信息接口及更新人员组织,请注意更新人员信息接口有以下主要修订内容:

  • 不再支持人员的新增,新增人员请使用4.5、新增人员接口;
  • 更换手机号码请使用4.27、修改手机号接口;
  • 不再支持组织的新增、更改,组织的变更须使用4.7、更新人员组织接口;
  • V2.1更新人员接口已不再支持状态的更改,状态的变更请使用4.8、更新人员状态接口;

描述: 根据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”:“” 将导致职称被清空(而不是保持职称不修改)。

1.5.4. 更新人员组织

描述: 根据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//消息
},…]

1.5.5. 更新人员组织(通过组织id)

描述:通过组织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        //消息
    },…]    
}

1.5.6. 更新人员状态

描述: 根据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        //消息
    },…]    
}

1.5.7. 删除人员

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            //消息
},…]

1.5.8. 查询全部人员信息

描述: 查询全部人员信息,查询使用分页机制,每次查询总数不能超过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:是
},…]

1.5.9. 查询已更新人员信息

描述: 查询某个时点后有更新的人员信息,更新的信息包括个人信息以及状态信息(正常状态变为离职状态)

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:是
},…]

1.5.10. 查询指定人员信息

描述: 根据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:是
},…]

1.5.11. 设置或取消管理员

描述: 设置或者取消管理员身份。如果工作圈没有管理员,可以通过该接口设置一个管理员

URL: openaccess/input/company/setadmin

方法: POST

输入: 参见3.1、输入格式,具体data格式:

{
    eid:String            //注册号,不必须,如果没有,则以外面的eid参数为准
    account:String                  //必填,账号
    type:int            //必填,操作类型。0:取消 1:设置
}

输出: 参见3.2、输出格式,具体data格式:

{
}

1.5.12. 根据登陆账号和密码获取其是管理员的工作圈列表(开发者鉴权不包括该接口)

描述: 根据登陆账号和密码获取其是管理员的工作圈列表 该接口跟其他接口有些区别,参数不需要加密,不需要用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
},
{}......]

1.5.13. 修改手机号

描述: 批量修改手机号,未激活用户可无条件修改,已激活用户须满足当前帐号只有一个工作圈或所在圈都有一个相同管理员,目标手机号不是云之家帐号可以修改, 修改不成功的会返回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"
        }
]

1.5.14. 获取手机号变更历史记录

描述:获取手机号变更历史记录;(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"
    }
  ]

1.6. 角色api

描述:此小节包含对角色标签和人员的角色标签进行相关设置。

1.6.1. 添加角色标签

URL: /openaccess/input/roletag/addRoleTag

方法: POST

输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):

 {
        "eid": "2704254",
        "roleName":"接口测试角色2"
  }

输出:参见3.2、输出格式,具体data部分如下:

 [
     {
    "id": "a20b2811-fda4-11e6-8f64-82e47cc7294a"    //角色id,请保存
  }
  ]

1.6.2. 获取工作圈角色标签列表

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": ""                 //如果是企业自定义标签,就会有值
    }
    ]
  ]

1.6.3. 删除角色标签

URL: /openaccess/input/roletag/deleteRoleTag

方法: POST

输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):

 {
       "eid": "2704254",
       "roleId":"a20b2811-fda4-11e6-8f64-82e47cc7294a"
  }

输出:参见3.2、输出格式,具体data部分如下: 正常data返回空。

1.6.4. 更改角色标签名字

URL: /openaccess/input/roletag/updateRoleTag

方法: POST

输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):

 {
       "eid": "2704254",
       "roleId":"acca7a9d-f4bd-11e6-8f64-82e47cc7294a",
       "roleName":"测试角色3"
  }

输出:参见3.2、输出格式,具体data部分如下: 正常data返回" ".

1.6.5. 设置人员角色标签

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返回””.

1.6.6. 删除人员角色标签

URL: /openaccess/input/roletag/deletePersonRoleTag

方法: POST

输入: 参见3.1、输入格式,具体data格式(传输过程中需要使用key加密):

  {
       "eid": "2704254",
       "roleId":"2d69412f-8de5-11e6-961a-82e47cc7294a",
       "openId":"580d9fa000b0911f84defd18"
    }

输出:参见3.2、输出格式,具体data部分如下: 正常data返回" ".

1.6.7. 根据角色获取人员

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"
    }
  ]

1.6.8. 批量设置人员角色接口

本接口分两个,一个以用户为主(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返回" ".

1.7. 部门负责人

1.7.1. 根据部门长名称批量设置部门负责人

描述: 设置部门负责人(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   //此处标识失败原因
          }
]

人员和部门必须已经存在才能设置成功。

1.7.2. 查询所有部门负责人

描述: 查询所有部门负责人(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, //所负责的部门长名称
          }
]

注意: 该接口只返回在职的部门负责人。

1.7.3. 根据部门长名称批量删除部门负责人

描述: 批量删除部门负责人(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: "负责人不存在"

1.7.4. 根据部门id批量设置部门负责人

描述: 设置部门负责人(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   //此处标识失败原因
          }
]

人员和部门必须已经存在才能设置成功。

1.7.5. 根据部门id批量删除部门负责人

描述: 批量删除部门负责人(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                //具体错误消息
          }
]

1.8. 人员兼职

1.8.1. 根据部门长名称批量设置兼职

描述:批量设置兼职,设置一个人员为其它部门的兼职人员,同时可以指定兼职的权重,不传默认是取主职的权重,是否兼职部门负责人。(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   //此处标识失败原因
}]

1.8.2. 根据部门id批量设置兼职

描述:批量设置兼职,设置一个人员为其它部门的兼职人员。(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   //此处标识失败原因
}]

1.8.3. 删除兼职

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        //消息
    },…]    
}

1.8.4. 根据部门id批量删除兼职

描述:批量删除兼职。(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   //此处标识失败原因
}]

1.8.5. 批量查询兼职

描述:批量查询兼职 。(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         // 兼职职位
}]

1.8.6. 删除组织上级负责人

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        //消息
    },…]    
}

1.9. 上下级关系

1.9.1. 批量指定上级

描述: 批量指定上级;(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   //此处标识失败原因
          }
]

1.9.2. 批量删除上级(关系)

描述: 批量删除关系;(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   //此处标识失败原因
          }
]

1.9.3. 批量查询上级

描述: 批量查询关系;(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”(查出未选中的汇报上级,有些部门负责人不需要汇报关系)
}]

1.9.4. 删除组织上下级

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        //消息
    },…]
}

1.10. 合作伙伴

1.10.1. 添加/修改合作伙伴信息

描述:添加/修改合作伙伴信息(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         //日期
    }
}

1.10.2. 启用,禁用,删除合作伙伴

描述:启用,禁用,删除合作伙伴(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        //消息
    }

1.10.3. 查询合作伙伴信息

描述: 根据企业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,普通团队
 },....]

1.10.4. 查询合作伙伴的负责人信息

描述: 根据企业eid查询全部合作伙伴负责人信息,查询使用分页机制,每次查询总数不能超过1000条;(new)

URL: openaccess/input/company/getSuppliersCharge

方法: POST

输入: 参见3.1、输入格式,具体data格式:

{
    suppliersCode:String//合作伙伴编号
    time:String//选填,时间戳(精确到毫秒);传空或者不传表示全部查询
}

输出: 参见3.2、输出格式,具体data部分如下:

[{//负责人列表
    openid:String
 },....]

1.10.5. 查询合作伙伴的联系人信息

描述: 根据合作伙伴编码查询合作伙伴联系人信息,查询使用分页机制,每次查询总数不能超过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
},....]

1.11. 预认证

1.11.1. 新增/更新预认证账号

描述: 每次新增数不能超过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   //此处标识失败原因
    },...
]

1.11.2. 删除预认证账号

描述:批量删除预认证账号:

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   //此处标识失败原因
}]

1.11.3. 查询预认证账号

描述:批量查询预认证账号:

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:未认证(判断用户使用登录云之家绑定预认证账号)
  }
]

1.12. 错误码(消息码)

当前已使用的错误代码定义见下表,表中列出了代码号、适用接口以及该错误代码的意义。

错误码(消息码) 适用接口 描述 备注
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 所有接口 访问权限已到期

results matching ""

    No results matching ""