本文介绍毕升office v4版本中网盘API接口的相关说明。
需要配合token使用,token的获取请参考授权签名页面。将获取的token设置在cookie中,命名为bso_v4_sdkToken。token中包含用户信息,下方接口的操作者即为token中指定的用户。没有特殊说明的情况下,接口均为POST请求。
获取系统中所有状态为有效的用户,需要使用系统管理员的身份进行查询,即获取签名token时指定userId为系统管理员ID。
http://{yourhost}/apps/api/sdk/contact/getAvailableUsers
// 此处参数例子为获取前2个有效状态的用户信息
{
"offset": 0, // 起始位置
"limit": 2 // 偏移量
}
不传递此调用参数时,将获取所有有效状态的用户信息。
{
"status": true,
"totalCount": 34, // 当前所有有效状态用户的总数
"users": [
{
"objectId": "chjdp3q40aql2l153ej0", // 网盘系统内部使用的personInfoId
"title": "昵称 user001", // 用户昵称
"userId": "user001", // 用户UserId
"linkedId": "linkedId_user001" // 调用dataImport接口手动导入此用户时使用的personInfoId
},
{
"objectId": "root",
"title": "root4339", // 用户昵称
"userId": "root" // 用户UserId
}
]
}
获取系统中正在使用Office编辑器的用户及其操作的文档信息,需要使用系统管理员的身份进行查询,即获取签名token时指定userId为系统管理员ID。
http://{yourhost}/apps/api/sdk/contact/getOperatingUsers
无
{
"infos": [ // 用户列表信息
{
"uid": "user001", // 用户UserId
"nickName": "user001", // 用户昵称
"avatar": "", // 用户头像地址
"operatingDocs": [ // 当前用户正在操作的文档列表
{
"docId": "cho4lq240aqhka699gh0", // 文件ID
"title": "未命名文件.docx", // 文件名称
"status": "preview" // 当前为预览文件操作
},
{
"docId": "chuqbba40aql107ts2n0",
"title": "未命名文件.pptx",
"status": "edit" // 当前为编辑文件操作
}
]
},
{
"uid": "user002",
"nickName": "user002",
"avatar": "",
"operatingDocs": [
{
"docId": "chuqiaa40aqgao6g9qhg",
"title": "未命名文件.docx",
"status": "edit"
}
]
}
],
"status": true
}
获取系统内所有的通讯录信息,需要使用系统管理员的身份进行查询,即获取签名token时指定userId为系统管理员ID。
http://{yourhost}/apps/api/sdk/contact/getContacts
{
"offset":0, // 起始位置
"limit": 20 // 偏移量
}
{
"contacts": [
{
"objectType": "department",
"objectOptsType": "root",
"objectId": "通讯录ID",
"title": "通讯录名称",
"linkedId": "通讯录LinkID",
"default": true,
"personsAggregate": {
"count": 39
},
"branchesAggregate": {
"count": 1
}
}
],
"status": true
}
设置通讯录linkId,需要使用系统管理员的身份进行查询,即获取签名token时指定userId为系统管理员ID。
linkId可用于账号同步接口中,指定导入数据的目标通讯录。
不能为不同的通讯录设置相同的linkId,不能为系统账号列表设置linkId。
http://{yourhost}/apps/api/sdk/contact/setLinkId
{
"contactId": "contactId", // 目标通讯录ID,可使用*获取系统内所有的通讯录*接口获取
"linkId": "linkId" // 为目标通讯录设置的linkId
}
{
"status": true
}
获取当前用户的团队空间列表,设置调用参数可获取指定范围的团队空间信息。
http://{yourhost}/apps/api/sdk/workspace/teams
// 此处参数例子为获取当前用户团队列表中前20个团队
{
"offset": 0, // 起始位置
"limit": 20 // 偏移量
}
{
"canCreateTeam": true,
"status": true,
"teams": [ // 团队空间列表
{
"objectType": "workspace",
"objectOptsType": "team",
"objectId": "cgsbgl240aqh5h4t5370", // 团队空间ID
"title": "defaults", // 团队名称
"drive": {
"objectType": "folder",
"objectId": "cgsbgl240aqh5h4t5360", // 团队空间根目录文件夹ID
"title": "buildInTeamFileTitle"
},
"trash": {
"objectType": "folder",
"objectId": "cgsbgl240aqh5h4t536g",
"title": "buildInTeamTrashTitle"
},
"wmounted": {
"objectId": "cgsbgkq40aqh5h4t5320"
},
"createInfo": [],
"updateInfo": [],
"assigns": null
},
{
"objectType": "workspace",
"objectOptsType": "team",
"objectId": "chjes8a40aql2l153h50", // 团队空间ID
"title": "001", // 团队名称
"drive": {
"objectType": "folder",
"objectId": "chjes8a40aql2l153h40", // 团队空间根目录文件夹ID
"title": "buildInTeamFileTitle"
},
"trash": {
"objectType": "folder",
"objectId": "chjes8a40aql2l153h4g",
"title": "buildInTeamTrashTitle"
},
"wmounted": {
"objectId": "cgsbgkq40aqh5h4t5320"
},
"createInfo": [],
"updateInfo": [],
"assigns": null
}
],
"teamsCount": 2 // 当前用户的团队空间总数
}
创建团队空间的用户默认为团队空间的管理员。
http://{yourhost}/apps/api/sdk/workspace/createTeam
{
"name": "002" // 团队空间名称
}
{
"status": true,
"team": { // 返回新创建的团队空间的信息
"objectType": "workspace",
"objectOptsType": "team",
"objectId": "chmt76q40aqikd5ats60", // 新创建的团队空间ID
"title": "002", // 新创建的团队空间名称
"ct": "2023-05-24T17:06:35.9356062+08:00",
"lt": "2023-05-24T17:06:35.9356062+08:00",
"drive": {
"objectId": "chmt76q40aqikd5ats50" // 新创建的团队空间的根目录文件夹ID
},
"trash": {
"objectId": "chmt76q40aqikd5ats5g"
},
"wmounted": null
}
}
http://{yourhost}/apps/api/sdk/workspace/renameTeam
{
"teamId": "chmt76q40aqikd5ats60", // 指定团队空间ID
"teamName": "0029" // 团队空间新名称
}
{
"status": true
}
删除团队空间,团队中的文件及相关的授权关系将被彻底删除。此操作不可逆,请谨慎操作。用户如果没有对应的权限,删除操作将会失败,默认团队管理员有删除团队的权限。
http://{yourhost}/apps/api/sdk/workspace/dismiss
{
"teamId": "chmt76q40aqikd5ats60" // 指定需要解散的团队空间ID
}
{
"status": true
}
获取团队空间的所有成员,数据中包含成员列表和其对应的授权信息。成员列表和授权列表为对应关系,成员列表中索引为n的用户,对应的授权为授权列表中索引为n的授权。授权ID可用于切换成员的角色操作。
http://{yourhost}/apps/api/sdk/workspace/teamMembers
{
"teamId": "cgsbgl240aqh5h4t5370" // 团队空间ID
}
{
"ManagerAssigns": [ // 管理者授权列表 与下方的管理者列表对应,相同索引的用户和授权为对应关系。
{
"objectType": "assign",
"objectId": "cgsbgl240aqh5h4t537g", // 授权ID
"ct": "2023-04-14T10:20:04.4478042+08:00",
"lt": "2023-04-14T10:20:04.4478042+08:00",
"role": {},
"assignObjectId": "cgsbgl240aqh5h4t5370",
"assignSubjectId": "cgsbgkq40aqh5h4t531g",
"assignType": "team",
"assignObject": {},
"assignSubject": {},
"creator": {}
}
],
"Managers": [ // 管理者列表 包含用户信息
{
"canExit": true,
"canManage": true,
"info": {
"avatar": "s3:static:avatar/chlhchi40aqhr62pou7g.png",
"objectId": "root",
"objectType": "personInfo",
"reserved": true,
"title": "root", // 用户名称
"userId": "root" // 用户UserID
},
"objectId": "cgsbgkq40aqh5h4t531g", // 用户身份ID
"objectType": "person",
"parentDepartment": {}
}
],
"UserAssigns": [ // 协作者授权列表 与下方的协作者列表对应,相同索引的用户和授权为对应关系。
{
"objectType": "assign",
"objectId": "chm90ri40aqk6736psb0", // 授权ID
"ct": "2023-05-23T18:07:42.8270638+08:00",
"lt": "2023-05-23T18:07:42.8270638+08:00",
"role": {},
"assignObjectId": "cgsbgl240aqh5h4t5370",
"assignSubjectId": "chjdp7a40aql2l153en0",
"assignType": "team-file",
"assignObject": {},
"assignSubject": {},
"creator": {}
}
],
"Users": [ // 协作者列表
{
"canExit": true,
"canManage": true,
"info": {
"objectId": "chjdp7a40aql2l153emg",
"objectType": "personInfo",
"title": "user002", // 用户名称
"userId": "user002" // 用户UserID
},
"objectId": "chjdp7a40aql2l153en0", // 用户身份ID
"objectType": "person",
"parentDepartment": {}
}
],
"status": true
}
获取系统中当前可用的团队空间角色,角色分为团队角色和协作者角色,团队角色可管理团队成员,协作者角色仅对团队文件有相关的授权。可使用获取到的角色,对用户进行切换团队空间角色的操作。
http://{yourhost}/apps/api/sdk/workspace/getAllRoles
无
{
"roles": {
"team": [ // 团队角色
{
"objectType": "role",
"objectId": "buildInTeamManager", // 角色ID 此为默认角色:团队管理员
"ct": "2023-04-14T10:18:47.8330121+08:00",
"lt": "2023-04-14T10:18:47.8330121+08:00",
"roleType": "team",
"acls": [],
"reserved": true
},
{
"objectType": "role",
"desp": "团队管理员测试角色",
"objectId": "chm939240aqk6736psg0", // 角色ID
"title": "团队管理员测试角色", // 角色自定义名称
"ct": "2023-05-23T18:12:52.6134244+08:00",
"lt": "2023-05-23T18:12:52.6134244+08:00",
"roleType": "team",
"acls": []
}
],
"team-file": [ // 协作者角色
{
"objectType": "role",
"objectId": "buildInTeamFileAll", // 角色ID 此为默认角色:全部权限
"ct": "2023-04-14T10:18:47.8767111+08:00",
"lt": "2023-04-14T10:18:47.8767111+08:00",
"roleType": "team-file",
"acls": [],
"reserved": true
},
{
"objectType": "role",
"objectId": "buildInTeamFileWrite", // 角色ID 此为默认角色:可修改
"ct": "2023-04-14T10:18:47.9170351+08:00",
"lt": "2023-04-14T10:18:47.9170351+08:00",
"roleType": "team-file",
"acls": [],
"reserved": true
},
{
"objectType": "role",
"objectId": "buildInTeamFileRead", // 角色ID 此为默认角色:只读
"ct": "2023-04-14T10:18:47.9809088+08:00",
"lt": "2023-04-14T10:18:47.9809088+08:00",
"roleType": "team-file",
"acls": [],
"reserved": true
},
{
"objectType": "role",
"desp": "团队空间测试角色",
"objectId": "chm92la40aqk6736pseg", // 角色ID
"title": "团队空间测试角色", // 角色自定义名称
"ct": "2023-05-23T18:11:33.1798188+08:00",
"lt": "2023-05-23T18:11:33.1798188+08:00",
"roleType": "team-file",
"acls": []
}
]
},
"status": true
}
管理者列表或协作者列表中的成员不能重复,团队必须至少包含一个管理者。在成员已经为团队空间协作者的情况下,可指定角色ID为团队角色ID,调用此接口将成员添加为管理者。
http://{yourhost}/apps/api/sdk/workspace/addTeamMembers
{
"teamId": "cgsbgl240aqh5h4t5370", // 团队ID
"memberIds": [
"chjdpaq40aql2l153eqg" // 用户身份ID,注意与用户userId区分
],
"roleId": "buildInTeamFileAll" // 角色ID
}
{
"status": true
}
移除团队空间的成员。团队的管理员有移除团队成员的权限,当团队的协作者移除其他成员时,操作将会失败,但协作者可以移除自己,即退出团队空间。团队空间中必须至少有一个管理者,当移除团队空间中唯一的管理者时,操作将会失败。
http://{yourhost}/apps/api/sdk/workspace/removeTeamMember
{
"teamId": "cgsbgl240aqh5h4t5370", // 团队空间ID
"assignedPerson": "chjdpaq40aql2l153eqg", // 用户身份ID
}
{
"status": true
}
此接口仅用于切换成员当前身份的可选角色,即协作者可以切换协作者的角色,管理者可以切换管理者的角色。当前身份的可用角色可使用获取团队空间角色获取。如果需要将协作者切换为管理者,需要使用添加团队空间成员接口,将协作者添加到管理者列表中。
http://{yourhost}/apps/api/sdk/workspace/updateTeamMember
{
"teamId": "chjes8a40aql2l153h50", // 当前团队ID
"assignId": "chnid8q40aqhe50b5hmg", // 授权ID 获取团队成员列表时可以获取到
"roleId": "buildInTeamFileWrite" // 新的角色ID
}
{
"status": true
}