Skip to main content

组织

组织的接口需要使用组织的密钥才能访问

获取应用列表

URL:GET /openapi/company/{组织短名字}/app

返回内容:

{
"status": 0,
"msg": "",
"data": [
{
"id": "grOwVRwNXG", // 应用 id
"key": "92a54", // 短名字
"logo": "", // logo 图片地址
"name": "名称",
"description": "描述",
"isDraft": false // 如果从未发布就是 true
}
]
}

创建应用

URL: POST /openapi/company/{组织短名字}/app

提交的内容格式

{
"owner": "xxxxx@xx.com", //「必填」 所属用户的邮箱地址
"name": "AppName", //「必填」 应用名字
"key": "xxx", // 应用短名字,弄个好记的名字,决定应用访问路径
"description": "", // 描述
"logo": "http://xxxx.com/xxx.png" // 应用 logo
}

导入应用

请求头中必须携带x-isuda-company-key和x-isuda-env

URL: POST /openapi/release/v1/app/import

提交的内容格式

1 > POST /openapi/release/v1/app/import
1 > Authorization: Bearer xxxx // 签名
1 > Content-Type: multipart/form-data; boundary=fb1086ca-ab85-4c0b-be4a-ba034a981cb8
1 > x-client-id: 1mjBMxn7wzTCMn7v2Ydw1K
1 > x-isuda-company-key: a0d83 // 组织key
1 > x-isuda-env: dev // 环境标识
{
"name": "AppName", //「必填」 应用名字
"file": "", // .amis 爱速搭应用包
"password": "" // 密码如果包设置了密码的话
}

响应体

{
"appKey": "xxx"
}

注意:此接口只能通过 form-data 请求体格式发送,否则无法识别其中文件内容。

删除应用

URL: DELETE /openapi/company/{组织短名字}/app/{appId}

appId 是前面从应用列表页中获取的 id 字段

根据应用名删除应用

URL: DELETE /openapi/company/{组织短名字}/appName/{appName}

其中 appName 是应用名

批量导入组织架构

URL:POST /openapi/company/{组织短名字}/department/import

提交内容格式:

{
"departments": [
{"code": "0", "name": "测试专用组织根部门", "parentCode": ""},
{"code": "1", "name": "测试专用组织子部门", "parentCode": "0"}
],
"users": [
{
"name": "张三",
"email": "zhangsan@xxx.com",
"phone": "12345678901",
"nickName": "张三",
"departmentCode": "0",
"isManager": true,
"authType": "xxx",
"authId": "123456"
}
]
}
  • departments 部门信息,数组格式。注意 parentCode 要能找到对应的 code 行。否则构建部门树会出错。部门编号可以按自己的规则来生成,主要用来辅助构建部门树。可以不用给出全量部门树,但是这次导入相关的部门的所有顶层都需要给定,也就说这次导入的人员放到第三层部门里面,那么必须把第三层对应的第二层,顶层都携带上。
    • code 部门编号
    • name 部门名称
    • parentCode 父级部门编号,如果为空表示为顶级部门
  • users 用户信息,数组格式。要求 departmentCode 要能在 departments 字段中能找到。
    • name 用户名
    • email 邮箱
    • nickName 显示名
    • departmentCode 部门编号
    • isManager 是否是部门经理
    • authType 可以为空,可以配置成 oauth,cas2,weixin,qq 等
    • authId 第三方登录的 id,即对应登录方式返回的 profile 数据 id

这个导入接口可以多次调用,增量导入。关于部门部分,多次导入不会删除部门,只会新增或者更新部门。关于人员,多次导入不会删除人员,只会新增人员到部门中。所以会存在一个用户被加入到多个部门的情况。

组织架构相关

获取根部门列表

URL:GET /openapi/company/{组织短名字}/department

返回结构类似

{
"status": 0,
"msg": "",
"data": {
"options": [
{
"label": "根部门",
"value": "k1Jw8ME8Gq",
"creatable": true,
"editable": true,
"removable": false,
"children": [
{
"label": "部门 1",
"value": "DyVZYOwav6",
"creatable": true,
"editable": true,
"removable": true,
"loaded": false,
"defer": true,
"deferApi": "/api/company/aisuda/department?parent=DyVZYOwav6"
},
{
"label": "部门 2",
"value": "pezEbloLAB",
"creatable": true,
"editable": true,
"removable": true,
"loaded": true
}
],
"placeholder": "暂无更多子部门"
}
]
}
}

为了支持大型组织结构,这里使用了异步加载机制,比如上面例子的 部门 1 有子部门,需要将其中的 /api/ 替换成 /openapi/ 然后去请求子部门数据。

如果希望一次性返回所有部门组织架构,可以请求 GET /openapi/company/{组织短名字}/department/all

{
"id": "k1Jw8ME8Gq",
"parentId": "",
"createdAt": "2021-06-11T03:29:45.000Z",
"updatedAt": "2021-06-22T04:59:53.000Z",
"name": "根部门",
"children": [
{
"id": "3mrZq9ZjNR",
"parentId": "k1Jw8ME8Gq",
"createdAt": "2021-06-22T04:59:53.000Z",
"updatedAt": "2021-06-22T04:59:53.000Z",
"name": "部门 1"
},
{
"id": "DyVZYOwav6",
"parentId": "k1Jw8ME8Gq",
"createdAt": "2022-07-15T02:37:18.000Z",
"updatedAt": "2022-07-15T02:37:18.000Z",
"name": "部门 2",
"children": [
{
"id": "Nq4omrw1g7",
"parentId": "DyVZYOwav6",
"createdAt": "2022-07-15T03:18:15.000Z",
"updatedAt": "2022-07-15T03:18:15.000Z",
"name": "部门 3"
}
]
}
]
}

新增部门

URL:POST /openapi/company/{组织短名字}/department

提交内容格式是

{"name": "部门名称", "parentId": "k1Jw8ME8Gq"}

其中 parentId 是这个新增部门所属父级部门的 id

新增部门v2

URL: POST /openapi/company/{组织短名字}/department/create

提交内容格式是

{"name": "部门名称", "code": "dep_1234", "parentId": "k1Jw8ME8Gq", "manager": "aisuda@baidu.com"}

其中 code 是这个部门的自定义唯一标识,parentId 是这个新增部门所属父级部门的 id,manager是这个部门的主管,会在新建部门的同时加入部门内。

编辑部门

URL: PUT /openapi/company/{组织短名字}/department/{部门id}

{"value": "部门id", "parentId": "k1Jw8ME8Gq", "name": "部门名称", "manager": "aisuda@baidu.com"}

其中 value 是部门的id

删除部门

URL:DELETE /openapi/company/{组织短名字}/department/{部门id}

向部门里添加成员

URL:POST /openapi/company/{组织短名字}/department/addUser

提交内容格式是

{"department": "Nq4omrw1g7", "email": "aisuda@baidu.com"}

其中 department 是部门 id

向部门里添加成员 v2

URL: POST /openapi/company/{组织短名字}/department/addUserToDep

提交内容格式是

{"users": "suda@baidu.com", "supervisor": "aisuda@baidu.com", "department": "Nq4omrw1g7"}

其中 users 是需要添加的用户邮箱,如果需要批量添加,可以用\n来分割。

supervisor 是用户的直属主管

department 是部门 id

获取部门里的用户

URL:GET /openapi/company/{组织短名字}/department/users?departmentId={部门 id}

返回结构类似

{
"status": 0,
"msg": "操作成功",
"data": {
"creatable": false,
"isAdmin": false,
"items": [
{
"editable": false,
"deletable": false,
"username": "aisuda",
"name": "aisuda",
"email": "aisuda@baidu.com",
"isLeader": false,
"id": "4Qyw7pEgGd",
"userId": "k1Jw8ME8Gq",
"departmentId": "Nq4omrw1g7",
"departmentName": "部门 id",
"isBultin": false
}
],
"count": 2,
"options": [{"label": "aisuda", "value": "4Qyw7pEgGd"}]
}
}

主要使用这个接口里的 items,另外这个接口支持分页,还可以传递 page perPage 参数。

删除部门里的用户

URL:DELETE /openapi/company/{组织短名字}/department/{部门id}/delUser/:id

其中用户 id 可以从部门用户列表里获得

根据邮箱删除部门里的用户

URL:DELETE /openapi/company/{组织短名字}/department/{部门id}/delUserByEmail/:email

email 是邮箱

设置用户是否为部门经理

URL:POST /openapi/company/{组织短名字}/department/toggleLeader

提交参数类似

{"departmentId": "Nq4omrw1g7", "userId": "k1Jw8ME8Gq", "isLeader": true}

切换封禁用户

URL:POST /openapi/company/{组织短名字}/department/toggleDisabled

提交参数类似

{"departmentId": "Nq4omrw1g7", "userId": "k1Jw8ME8Gq", "disabled": true}

调整用户所属部门

URL:POST /openapi/company/{组织短名字}/department/changeUser

提交参数类似

{
"departmentId": "Nq4omrw1g7",
"userId": "pezEbloLAB",
"newDepartmentId": "grOwVRwNXG"
}

newDepartmentId 是新部门 id

查询部门内某用户的设置信息

URL: GET /openapi/company/{组织短名字}/department/userInfo/{用户 id}?departmentId={部门 id}

返回结构类似

{
"status":0,
"msg":"",
"data":{
"name":"suda",
"isMajor":true,
"isLeader":true,
"disabled":false,
"positionId":"k1Jw8ME8Gq",
"supervisor":"aisuda@baidu.com",
"majorDepId":"Nq4omrw1g7"
}
}

其中 name 是用户名, isMajor 表示是否是主岗部门, isLeader 表示是否是部门管理员, disabled 表示是否被封禁, positionId 表示该用户的职务id supervisor 表示该用户的直属主管 majorDepId 表示主岗部门Id

更新部门内某用户的设置信息

URL: POST /openapi/company/{组织短名字}/department/userInfo/{用户 id}?departmentId={部门 id}

提交参数类似

{
"isLeader":true,
"disabled":false,
"isMajor":true,
"positionId":"k1Jw8ME8Gq",
"supervisor":"aisuda@baidu.com",
"majorDepId":"Nq4omrw1g7"
}

其中isMajor 表示是否是主岗部门, isLeader 表示是否是部门管理员, disabled 表示是否被封禁, positionId 表示该用户的职务id supervisor 表示该用户的直属主管 majorDepId 表示主岗部门Id