本文为您介绍用户、用户组、权限相关的 Open API。
API | 说明 |
|---|---|
创建用户组 | 创建新的用户组,仅项目管理员可执行,支持设置公开属性、管理员列表及描述信息 |
查询项目下的用户组列表 | 获取指定项目下的所有用户组信息,返回包括组 ID、名称、描述、公开状态等字段 |
查询用户组成员 | 获取用户组内的成员列表,支持分页和关键词搜索,可区分成员类型(用户 / 子组) |
删除用户组成员 | 从用户组中移除指定成员,支持通过用户 ID、用户组 ID 或用户名列表操作 |
添加用户组成员 | 向用户组中添加成员,支持批量添加用户、子组或通过用户名匹配 |
从项目中删除用户 | 将用户从项目中移除,支持批量删除多个用户 |
添加用户到项目中 | 向项目中添加用户并分配权限,重复添加会覆盖原有高级权限 |
关联系统级别用户组到项目中 | |
获取项目列表 | |
获取项目用户列表 | 获取项目内的用户列表,支持关键词过滤和分页查询 |
授权接口 | 对资源(数据集、仪表盘等)进行权限授予,支持批量授权多人多权限 |
获取资源授权明细 | 查询资源的授权详情,包括用户 / 组直接权限及通过角色继承的权限 |
更改用户属性接口 | 修改用户的自定义属性值,需指定属性 ID 和新值 |
删除用户属性接口 | 删除用户的指定自定义属性 |
获取数据权限成员接口 | 查询数据权限规则的关联成员列表,支持分页和排序 |
添加数据权限成员接口 | 为数据权限规则添加关联成员,支持用户或用户组 |
删除数据权限成员接口 | 从数据权限规则中移除关联成员 |
获取数据集上的行列权限规则列表 | 查询数据集的行权限和列权限规则,支持指定用户的权限过滤 |
数据集上新建行列权限 | 创建数据集的行权限或列权限规则,支持固定值和动态值配置 |
数据集上删除行列权限 | 删除指定的数据集行列权限规则 |
数据集上修改行列权限 | 更新数据集行列权限规则的配置内容 |
在数据集上指定用户授权指定数据权限规则 | 将已有权限规则应用到指定用户 / 组 |
在数据集上指定用户移除指定数据权限规则权限 | 取消用户 / 组对指定权限规则的关联 |
获取图表上所有设置过行列权限的字段 | 查询图表关联数据集中设置了权限控制的字段列表 |
在您使用本文所述的接口前,请先了解调用方式,详情可阅读调用方式。
注意
仅项目管理员可执行此操作。
{{domain}}/aeolus/api/v3/open/userManagement/group参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 1 | 项目ID,获取方式见资源 ID 获取方式 |
name | string | 是 | “zhangsan” | 用户组名称 |
description | string | 是 | "description_info", | 用户组描述 |
isPublic | int | 是 | 1 | 1: 公开用户组,0: 非公开用户组 |
ownerList | string 数组 | 是 | ["admin1","admin2"] | 管理员列表,元素为字符串类型 |
{ "appId": 1, "name": "zhangsan", "description": "description_info", "isPublic": 1, "ownerList": ["admin1","admin2"] }
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
code | string | "aeolus/ok" | 状态码,标识请求处理结果 |
data | object | {用户组信息} | 用户组信息 |
msg | string | “成功” | 状态信息,对请求结果的文本描述 |
{ "code": "aeolus/ok", "data": { 用户组信息 }, "msg": "成功" }
{{domain}}/aeolus/api/v3/open/userManagement/groupList参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 1 | 项目ID,获取方式见资源 ID 获取方式 |
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
data.groups | array | 见下方说明 | 用户组列表数组 |
data.groups.description | string | "description" | 用户组描述信息 |
data.groups.id | int | 1 | 用户组 ID |
data.groups.isPublic | int | 0 | 是否为公开用户组,1: 公开用户组,0: 非公开用户组 |
data.groups.name | string | "name" | 用户组名称 |
data.groups.originId | string | "" | 原始 ID(可能为空) |
data.groups.ownerList | array | ["demo-creator@2100******"] | 管理员列表 |
data.groups.source | int | 4 | 用户组类型(0:部门组;1:全局用户组;2:项目用户组;3:飞书群) |
{ "code": "aeolus/ok", "msg": "成功", "data": { "groups": [ { "description": "description", "id": 1, "isPublic": 0, "name": "name", "originId": "", "ownerList": [ "demo-creator@2100******" ], "source": 4 } ] } }
{{domain}}/aeolus/api/v3/open/userManagement/groupMember参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 1 | 项目ID,获取方式见资源 ID 获取方式 |
subjectId | number | 是 | 1 | 用户组ID,获取方式见查询项目下的用户组列表 |
kw | string | 否 | "keywords" | 搜索关键词参数,默认为空表示查询全部 |
perPage | int | 否 | 20 | 分页参数,指定每页个数,默认20 |
page | int | 否 | 1 | 分页参数,指定第几页,默认1 |
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
data.members | array | 成员列表 | |
data.members.description | string | “description” | 成员描述 |
data.members.id | int | 1 | 成员 ID |
data.members.name | string | "组名称"/"姓名" | 成员名称 |
data.members.originId | string | "组 id"/"用户名" | 成员原始 ID |
data.members.source | int | 0 | 来源标识(type 为 1 时,0 表示部门,1 表示系统级组,2 表示项目级组;type 为 0 时该字段无用) |
data.members.type | int | 1 | 成员类型(1 表示组,0 表示用户) |
data.members.avatar | string | "头像链接" | 用户头像链接(仅 type 为 0 时存在) |
data.members.departmentName | string | "部门名称" | 部门名称(仅 type 为 0 时存在) |
data.members.emailPrefix | string | "用户名" | 用户邮箱前缀(仅 type 为 0 时存在) |
data.total | int | 2 | 成员总数 |
msg | string | "成功" | 返回消息 |
{ "code":"aeolus/ok", "data":{ "members":[ { "description":null, "id":1, "name":"组名称", "originId":"组id", "source":0, # type为1时,source为0表示部门,1表示系统级组,2表示项目级组 "type":1 # type为1表示组 }, { "avatar":"头像链接", "departmentName":"部门名称", "emailPrefix":"用户名", "id":2, "name":"姓名", "originId":"用户名", "source":0, # type为0时source字段无用 "type":0 # type为0表示用户个 } ], "total":2 }, "msg":"成功" }
{{domain}}/aeolus/api/v3/open/userManagement/groupMember参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 1 | 项目ID,获取方式见资源 ID 获取方式 |
subjectId | number | 是 | 12 | 用户组ID,获取方式见查询项目下的用户组列表 |
groups | array[number] | 否 | [12,13] | 用户组 ID 列表 |
users | array[number] | 否 | [1,2] | 用户 ID 列表 |
originUsers | array[string] | 否 | ["admin"] | 用户名列表,与 users 取并集 |
{ "appId": 1, 项目ID 类型int 必须参数 "subjectId": 12, 用户组Id 类型number 必须参数 "groups": [12,13], 用户组id列表(元素的类型为number) 可选参数 "users": [1,2], 用户id列表(元素的类型为number) 可选参数 "originUsers": ["admin"], 用户名列表,可选参数,与users取并集 }
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
code | string | "aeolus/ok" | 接口返回的状态码,标识请求处理结果 |
msg | string | "成功" | 接口返回的状态描述 |
{ "code": "aeolus/ok", "msg": "成功" }
{{domain}}/aeolus/api/v3/open/userManagement/groupMember参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 1 | 项目 ID,获取方式见资源 ID 获取方式 |
subjectId | number | 是 | 6 | 用户组 ID |
groups | array[number] | 否 | [12,13] | 用户组 ID 列表 |
users | array[number] | 否 | [1,2] | 用户 ID 列表 |
originUsers | array[string] | 否 | ["admin"] | 用户名列表,与 users 取并集 |
{ "appId": 1, 项目ID 类型int 必须参数 "subjectId": 6, 用户组Id 类型number 必须参数 "groups": [12,13], 用户组id列表(元素的类型为number) 可选参数 "users": [1,2], 用户id列表(元素的类型为number) 可选参数 "originUsers": ["admin"], 用户名列表,可选参数,与users取并集 }
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
code | string | "aeolus/ok" | 接口返回的状态码,标识请求处理结果 |
msg | string | "成功" | 接口返回的状态描述 |
{ "code": "aeolus/ok", "msg": "成功" }
{{domain}}/aeolus/api/v3/open/userManagement/user参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 1 | 项目 ID,获取方式见资源 ID 获取方式 |
subjectIdList | array[number] | 是 | [12,13] | 用户组 ID 列表 |
{ "appId": 1, 项目ID 类型int 必须参数 "subjectIdList": [12,13] 用户组Id列表(元素的类型为number) 必须参数 }
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
code | string | "aeolus/ok" | 接口返回的状态码,标识请求处理结果 |
data | object | {} | 包含请求返回的具体数据内容 |
msg | string | "成功" | 接口返回的状态描述 |
{ "code": "aeolus/ok", "data": { }, "msg": "成功" }
{{domain}}/aeolus/api/v3/open/userManagement/user参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 1 | 项目 ID,获取方式见资源 ID 获取方式 |
originIdList | array[string] | 是 | ["xiajinfu.xjf"] | 被操作的用户列表,元素为用户名 |
action | string | 是 | "read_role" | 用户拥有的项目权限,枚举值:read_role(读权限)、write_role(写权限)、read_all_role(全读权限)、admin(管理员权限)。重复添加用户时,会取消其已有的更高级权限 |
{ 目标项目的id "appId": 1, 被操作的用户列表 "originIdList": ["xiajinfu.xjf"], 用户拥有的项目权限,枚举值,read_role, write_role, read_all_role, admin 重复添加用户会取消已有的更高级权限 比如用户原有项目编辑权限,重复添加了用户,且参数是read_role,用户会被取消编辑权限,只有读权限 "action": "read_role" }
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
code | string | "aeolus/ok" | 接口返回的状态码,标识请求处理结果 |
data | object | {} | 包含操作结果的具体数据 |
data.fails | array[string] | [] | 添加失败的用户列表 |
data.users | array[string] | [] | 添加成功的用户列表 |
msg | string | "成功" | 接口返回的状态描述 |
{ "code": "aeolus/ok", "data": { 添加失败的用户列表 "fails": [] 添加成功的用户列表 "users": [] }, "msg": "成功" }
{{domain}}/aeolus/api/v3/open/userManagement/relateGroup参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 1 | 项目 ID,获取方式见资源 ID 获取方式 |
originIdList | array[number] | 是 | [122345] | 用户组的主键 ID 列表,元素为数字 |
{ # 目标项目的id "appId": 1, # Kani 用户组的主键 id "originIdList": [122345], }
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
code | string | "aeolus/ok" | 接口返回的状态码,标识请求处理结果 |
data | object | {} | 包含关联结果的具体数据 |
data.fails | array[number] | [] | 关联失败的用户组 ID 列表 |
data.groups | array[number] | [] | 关联成功的用户组 ID 列表 |
msg | string | "成功" | 接口返回的状态描述 |
{ "code": "aeolus/ok", "data": { # 关联失败的用户列表 "fails": [] # 关联成功的用户列表 "groups": [] }, "msg": "成功" }
{{domain}}/aeolus/api/v3/open/queryEngine/apps参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 1 | 项目 ID,获取方式见资源 ID 获取方式 |
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
code | string | "aeolus/ok" | 接口返回的状态码,标识请求处理结果 |
data | array | 项目信息列表,每个元素为项目对象 | |
data.appSettings | object | {} | 项目设置 |
data.ctime | string | "2023-07-11 21:17:19" | 项目创建时间,格式为 "YYYY-MM-DD HH:MM:SS" |
data.id | int | 1 | 项目 ID |
data.isAdmin | int | 1 | 是否为管理员项目(1 = 是,0 = 否) |
data.isFavored | int | 0 | 是否收藏(1 = 是,0 = 否) |
data.isPermitted | int | 1 | 是否有权限访问(1 = 是,0 = 否) |
data.name | string | "测试项目 1" | 项目名称 |
data.org | object | 项目所属组织信息 | |
data.org.id | int | 1 | 组织 ID |
data.org.name | string | "默认集团" | 组织名称 |
msg | string | "成功" | 接口返回的状态描述 |
{ "code": "aeolus/ok", "data": [ { "appSettings": {}, "ctime": "2023-07-11 21:17:19", "id": 1, "isAdmin": 1, "isFavored": 0, "isPermitted": 1, "name": "测试项目1", "org": { "id": 1, "name": "默认集团" } } ], "msg": "成功" }
{{domain}}/aeolus/api/v3/open/userManagement/userList参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 1 | 项目 ID,获取方式见资源 ID 获取方式 |
kw | string | 否 | "keywords" | 搜索关键词参数,默认为空表示查询全部 |
perPage | int | 否 | 20 | 分页参数,指定每页个数,默认20 |
page | int | 否 | 1 | 分页参数,指定第几页,默认1 |
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
code | string | “aeolus/ok” | 返回状态码 |
data.total | int | 1 | 用户数量 |
data.users | array | 见返回示例 | 用户列表数组 |
data.users.id | long | 100000000 | 用户 id |
data.users.originId | string | “admin” | 原始 id |
data.users.name | string | “admin” | 用户名 |
data.users.email | string | "" | 用户邮箱 |
data.users.phoneNumber | string | "" | 用户手机号 |
data.users.enable | boolean | true | 用户是否启用 |
msg | string | 成功 | 返回信息 |
{ "code": "aeolus/ok", "data": { "total": 1, 用户数量 "users": [{ "id": 100000000, "originId": "admin", "name": "admin", "email": "", "phoneNumber": "", "enable": true }] }, "msg": "成功" }
{{domain}}/aeolus/api/v3/open/authManagement/resourceAuth参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 123 | 项目 id,获取方式见资源 ID 获取方式 |
resId | int | 是 | 456 | 授权资源 id |
resType | string | 是 | data_set | 资源类型(数据集:data_set,仪表盘:dashboard,数据连接:data_connection) |
actions | array | 是 | ["read_role"] | 权限列表(读:read_role,写:write_role,管理:admin) |
subjectList | array | 是 | [{"originId":"user_1", "type":0}] | 授权对象列表,每个对象包含 originId(用户名 / 组名)和 type(0-> 人,1-> 组) |
{ // 项目id,类型为整型 "appId": {app_id}, // 授权资源id,类型为整型 "resId": {res_id}, // 资源类型,类型为字符串,数据集:data_set,仪表盘:dashboard,数据连接:data_connection "resType": {res_type}, // 权限,读:read_role,写:write_role,管理:admin "actions":["read_role"], // originId:用户名,type:0->人,1->组,可一次添加多个用户 "subjectList":[{"originId":"user_1", "type":0}] }
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
code | string | aeolus/ok | 返回状态码 |
data.fails | array | [{"originId":"user_1","subjectType":0,"reason":"xxx"}] | 授权失败的对象列表,如果有失败则fails不为空,每个对象包含 originId(用户名 / 组名)、subjectType(0-> 人,1-> 组)和失败原因 |
msg | string | 成功 | 返回信息 |
{ "code": "aeolus/ok", "data": { // 如果有失败则fails不为空 // originId:用户名,subjectType:0->人,1->组,reason:失败原因 "fails": [{"originId": "user_1", "subjectType": 0, "reason": "xxx"}] }, "msg": "成功" }
{{domain}}/aeolus/api/v3/open/authManagement/resourceAuth参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
appId | int | 是 | 123 | 项目 id,,获取方式见资源 ID 获取方式 |
resId | int | 是 | 456 | 资源 id |
resType | string | 是 | data_set | 资源类型(data_set:数据集,dashboard:仪表盘) |
detailed | int | 否 | 1 | 权限获取模式(0:仅获取用户本身在资源上的权限,1:考虑用户通过角色和组继承的权限,默认 0) |
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
code | string | aeolus/ok | 返回状态码 |
data.roleList | array | 角色权限明细列表 | |
data.roleList.actions | object | {"readRole": [...], "viewOnlyRole": [...]} | 权限清单(管理:admin,编辑:write_role,查看:read_role,仅阅览:view_only_role) |
data.roleList.actions.[权限类型] | array | [{"name":"role 1","subjectType":2}] | 具体权限对应的角色列表 |
data.roleList.admins | array | [{"avatar":"","originId":"user_1"}] | 角色管理员列表 |
data.roleList.name | string | “role 1” | 角色名称 |
data.roleList.originId | string | “role_1” | 角色 id |
data.roleList.roleKey | string | “role_key_1” | 角色 key |
data.roleList.type | int | 2 | 授权实体类型标志(0-> 人,1-> 组,2-> 角色) |
data.subjects | array | 人和组权限明细列表 | |
data.subjects.actions | object | {"admin": [...], "readRole": []} | 权限清单 |
data.subjects.avatar | string | “” | 头像地址 |
data.subjects.department | string | “department_1” | 部门 |
data.subjects.emailPrefix | string | “” | 用户名(同 originId) |
data.subjects.independentAuth | boolean | false | 是否开启屏蔽组授权 |
data.subjects.name | string | “用户 1” | 用户姓名 |
data.subjects.originId | string | “user_1” | 用户名 |
data.subjects.source | int | 0 | 授权实体来源(若为组:0-> 部门,1-> 系统级,2-> 项目级) |
data.subjects.subjectId | int | 1 | 授权实体内部 id |
data.subjects.type | int | 0 | 授权实体类型标志(0-> 人,1-> 组,2-> 角色) |
msg | string | “成功” | 返回信息 |
{ "code": "aeolus/ok", "data": { // 角色权限明细列表(若有) "roleList": [ { // 权限清单,管理:admin,编辑:write_role,查看:read_role,仅阅览:view_only_role "actions": { "readRole": [ { // 角色名称 "name": "role 1", // 授权实体类型标志,0->人,1->组,2->角色 "subjectType": 2 } ], "viewOnlyRole": [ { "name": "role 1", "subjectType": 2 } ] }, // 角色管理员 "admins": [ { // 管理员头像地址 "avatar": "", // 管理员用户名 "originId": "user_1" } ], // 角色名称 "name": "role 1", // 角色id "originId": "role_1", // 角色key "roleKey": "role_key_1", // 授权实体类型标志,0->人,1->组,2->角色 "type": 2 } ], // 人和组权限明细列表 "subjects": [ { // 权限清单,管理:admin,编辑:write_role,查看:read_role,仅阅览:view_only_role "actions": { "admin": [ { // 授权实体名称 "name": "用户1", // 授权实体类型标志,0->人,1->组,2->角色 "subjectType": 0 } ], "readRole": [], "viewOnlyRole": [], "writeRole": [] }, // 头像地址 "avatar": "", // 部门 "department": "department_1", // 用户名(同originId) "emailPrefix": "", // 是否开启屏蔽组授权 "independentAuth": false, // 用户姓名 "name": "用户1", // 用户名 "originId": "user_1", // 授权实体来源(若为组)0->部门,1->系统级,2->项目级 "source": 0, // 授权实体内部id "subjectId": 1, // 授权实体类型标志,0->人,1->组,2->角色 "type": 0 } ] }, "msg": "成功" }
请求说明 请求地址:PUT http://{domain}/aeolus/api/v3/open/userManagement/subjectAttributeValue 请求参数 参数为json格式,originId表示的用户需要在系统中存在,如下: { // 项目id "appId": {app_id}, // 用户名 "originId": {origin_id}, // 属性id "attributeId": {attribute_id}, // 属性值 "valueList": ["test"] } 返回示例 { "code": "aeolus/ok", "data": {attribute_value_id}, "msg": "成功" }
用户属性id可以在用户属性页面上调用控制台查看,例如:
删除用户属性接口中的属性id同理。
请求说明 请求地址:DELETE http://{domain}/aeolus/api/v3/open/userManagement/subjectAttribute Authorization: Bearer jwt_token 请求参数 入参:json格式 { 项目id "appId":{appId}, 属性id "attributeId":65 } 返回示例 { "code": "aeolus/ok", "data": 65, "msg": "成功" }
请求说明 请求地址:GET http://{domain}/aeolus/api/v3/open/authManagement/filterRuleMember 请求参数 参数:query string appId: 必选参数,项目id filterRuleId: 必选参数,规则id perPage: 可选参数 page: 可选参数 kw: 可选参数,过滤关键词,不传则不过滤 orderBy: 可选参数,默认成员时间addTime排序 order: 可选参数,默认降序 needAll: 可选参数,1为返回全量;0为分页返回,默认为0 返回示例 { "code": "aeolus/ok", "data": { "subjectList": [ { // 添加时间 "addTime": "2022-01-01 00:00", "department": "", // 用户姓名 "name": "用户1", // 用户名 "originId": "user_1", // 0->人,1->组 "type": 0 "subjectId": 1, } ], // 总记录数 "total": 1 }, "msg": "成功" }
请求地址 POST http://{domain}/aeolus/api/v3/open/authManagement/filterRuleMember 请求参数 参数为json格式,originId表示的用户需要在系统中存在,如下: { // 项目id "appId": {app_id}, // 数据权限id "filterRuleId": {filter_rule_id}, // originId:用户名,type:0->人,1->组 "originList":[{"originId":"user_1", "type":0}] } 返回示例 { "code": "aeolus/ok", "data": { // 如果有失败则fails不为空 // originId:用户名,subjectType:0->人,1->组,reason:失败原因 "fails": [{"originId": "user_1", "subjectType": 0, "reason": "xxx"}] }, "msg": "成功" }
请求说明 请求地址 :DELETE http://{domain}/aeolus/api/v3/open/authManagement/filterRuleMember 请求参数 参数为json格式,originId表示的用户需要在系统中存在,如下: { // 项目id "appId": {app_id}, // 数据权限id "filterRuleId": {filter_rule_id}, // originId:用户名,type:0->人,1->组 "originList":[{"originId":"user_1", "type":0}] } 返回示例 { "code": "aeolus/ok", "data": { // 如果有失败则fails不为空 // originId:用户名,subjectType:0->人,1->组,reason:失败原因 "fails": [{"originId": "user_1", "type": 0, "reason": "xxx"}] }, "msg": "成功" }
请求说明 请求地址:GET http://{domain}/aeolus/api/v3/open/authManagement/dataPermissions 请求参数 参数:query string appId: 必选参数,项目id dataSetId: 必选参数,资源id page: 必选参数,第几页,1 perPage: 必选参数,每页多少,20 authOriginId: 可选参数,被授权人originId,zhangsan.1 返回示例 { "code": "aeolus/ok", "data": { // 是否开启黑白名单 "blackEnabled": false, // 规则列表 "filterRuleList": [ { // 项目ID "appId": 1, // 创建时间,默认按照创建时间排序 "ctime": "2022-08-02 15:40", // 数据集ID "dataSetId": ******, // 子规则列表 "filterRowList": [ { // 子规则ID "rowId": ****, // 子规则内容 "rowNode": { // 列权限受限数据集字段 "dimMetList": [ { // 数据集字段ID "id": 158*********190, // 数据集字段名 "name": "特殊字段" }, { "id": 158*********176, "name": "产品 ID" } ], // 列权限受限底表字段 "fieldList": [ { // 底表字段名 "fieldName": "国家/地区", // 底表字段关联的数据集字段 "relatedDimMetList": [ { // 数据集字段类型 "dataTypeName": "string", // 数据集字段关联的底表字段 "fieldList": "[\"国家/地区\"]", // 数据集字段ID "id": 158*********175, // 数据集字段名 "name": "国家/地区", "persisted": true } ] }, { "fieldName": "细分", "relatedDimMetList": [ { "dataTypeName": "string", "fieldList": "[\"细分\"]", "id": 158*********188, "name": "细分", "persisted": true } ] } ], // 子规则内关联关系,仅行权限有效,'and'->且,'or'->或 "linkType": "and" }, // 固定值还是动态值,仅行权限有效,0->固定值,1->动态值 "rowTmplType": 0, // 行权限还是列权限,0->行权限,1->列权限 "rowType": 1 } ], // 规则名字 "name": "测试2", // 规则创建者 "owner": { // 创建者头像 "avatar": "url", // 创建者名字 "name": "xxx", // 创建者origin_id "originId": "xxx", // 创建者类型,一般为0 "subjectType": 0 }, // 行权限还是列权限,0->行权限,1->列权限 "rowType": 1, // 规则ID "ruleId": 1447, // 规则适用对象列表 "subjectList": [ { // 用户origin_id,在用户中唯一标识 "originId": "xxx" // 邮箱前缀 "emailPrefix": null, // subject表ID "id": xxx, // 名字 "name": "xxx", // 和type一起判断组类型,0->部门组,1->系统组,2->项目组 "source": 0, // 个人还是用户组,1->组,0->个人 "type": 1 }, { "emailPrefix": "xxx", "id": xxx, "name": "xxx", "source": 0, // 个人 "type": 0 } ], // 规则类型,0->个人,1->审批流,一般TOB只有0 "type": 0 }, { "appId": 1, "ctime": "2022-08-02 15:39", "dataSetId": 183454, "filterRowList": [ { "rowId": 6248, "rowNode": { "dimMetList": [], "fieldList": [ { // 数据集字段ID "fieldId": 158*********180, // 数据集字段名 "fieldName": "城市", // 操作符,in->在列表内 "op": "in", // 用户属性ID,-1用户名,-2姓名,-3邮箱,-4部门,-5城市 "value": -5 }, { "fieldId": 158*********179, "fieldName": "子类别", "op": "in", // 用户自己设置的动态值属性 "value": 316 } ], // 子规则内关联关系,且 "linkType": "and" }, // 动态值 "rowTmplType": 1, // 行权限 "rowType": 0 }, { "rowId": 6249, "rowNode": { "dimMetList": [], "fieldList": [ { "fieldId": 158*********176, "fieldName": "产品 ID", // op与valOption组合为操作符 "op": "in", "valOption": {}, // 固定值 "value": [ "办公用-信封-10000017" ] }, { "fieldId": 158*********178, "fieldName": "地区", "op": "in", "valOption": {}, "value": [ "中南" ] } ], // 子规则内关联关系,或 "linkType": "or" }, // 固定值 "rowTmplType": 0, // 行权限 "rowType": 0 } ], "name": "ceshi121", "owner": { "avatar": "xxx", "name": "xxx", "originId": "xxx", "subjectType": 0 }, "rowType": 0, "ruleId": 1446, "subjectList": [ { "emailPrefix": "xxx", "id": xxx, "name": "xxx", "source": 0, "type": 0 }, { "emailPrefix": null, "id": xxx, "name": "xxx", "source": 0, "type": 1 } ], "type": 0 } ], // 合计,不受分页影响 "total": 9 }, "msg": "成功" }
新建行权限
请求说明 请求地址:POST http://{domain}/aeolus/api/v3/open/authManagement/filterRule 请求参数 参数为json格式,originId表示的用户需要在系统中存在,如下: { // 项目ID "appId": 1, // 数据集ID "dataSetId": ******, // 规则名字,同一数据集下不能重名 "name": "ceshi6", // 适用对象 "originList": [ { //subject表的origin_id "originId": "xxxx", // 个人还是组,0->个人,1->组 "type": 0 }, { "originId": "*****", "type": 1 } ], // 规则内容 "rowNodeList": [ { // 行权限还是列权限,0->行,1->列 "rowType": 0, // 动态值还是固定值,0->固定值,1->动态值 "rowTmplType": 0, // 子规则内容 "rowNode": { // 子规则内关联关系,'and'->且,'or'->或 "linkType": "or", "fieldList": [ { // 数据集ID "fieldId": ****, // 操作符,一般op和valOption结合确认操作符 "op": "in", // 辅助操作符 "valOption": {}, // 固定值 "value": [ "办公020" ] }, { "fieldId": {fieldId}, "op": "in", "valOption": {}, "value": [ "CN-20062" ] } ] } }, { "rowType": 0, // 动态值 "rowTmplType": 1, "rowNode": { // 子规则内,取'且'的逻辑判断 "linkType": "and", "fieldList": [ { "fieldId": {fieldId}, "op": "in", // 用户属性ID,-1用户名,-2姓名,-3邮箱,-4部门,-5城市 "value": -5 }, { "fieldId": {fieldId}, "op": "in", // 用户属性ID,大于0的是自建属性ID "value": 352 } ] } } ] } 返回示例 { "code": "aeolus/ok", "data": { // 规则ID "filterRuleId": 1450 }, "msg": "成功" }
新建列权限
请求说明 请求地址:POST http://{domain}/aeolus/api/v3/open/authManagement/filterRule 请求参数 参数为json格式,originId表示的用户需要在系统中存在,如下: { "appId": 1, "dataSetId": ******, "name": "ceshi8", "originList": [ { "originId": "xxx", "type": 0 } ], "rowNodeList": [ { //固定为1,列权限 "rowType": 1, // 固定为0 "rowTmplType": 0, "rowNode": { // 固定为'and' "linkType": "and", // 受限底表字段列表 "fieldList": [ { // 底表字段名 "fieldName": "地区" }, { "fieldName": "子类别" } ], // 受限数据集字段列表 "dimMetList": [ { // 数据集字段ID "id": {id}, // 数据集字段名 "name": "订单 ID" }, { "id": {id}, "name": "行 ID" } ] } } ] }
请求说明 请求地址:DELETE /aeolus/api/v3/open/authManagement/filterRule Authorization: Bearer jwt_token 请求参数 入参:json格式 { // 项目ID "appId": 1, // 行列权限规则ID "filterRuleId": **** } 返回示例 { "code": "aeolus/ok", "data": { "affectedRows": 1 }, "msg": "成功" }
请求说明 请求地址:PUT http://{domain}/aeolus/api/v3/open/authManagement/filterRule 请求参数 修改传参与新建传参基本一致,新增filterRuleId字段,指定更新哪个规则 参数为json格式,originId表示的用户需要在系统中存在,如下: { "appId": 1, "dataSetId":******, "name": "ceshi6", // 行列权限规则ID "filterRuleId": "****", "originList": [ { "originId": "*****", "type": 1 }, { "originId": "xielinjiang", "type": 0 } ], "rowNodeList": [ { "rowType": 0, "rowTmplType": 0, "rowNode": { "linkType": "or", "fieldList": [ { "fieldId": {fieldId}, "op": "in", "valOption": {}, "value": [ "办公用-信封-10000020" ] }, { "fieldId": {fieldId}, "op": "in", "valOption": {}, "value": [ "CN-2016-1******" ] } ] } }, { "rowType": 0, "rowTmplType": 1, "rowNode": { "linkType": "and", "fieldList": [ { "fieldId": {fieldId}, "op": "in", "value": -5 }, { "fieldId":{fieldId}, "op": "in", "value": 352 } ] } } ] } 返回示例 { "code": "aeolus/ok", "data": { "filterRuleId": **** }, "msg": "成功" }
参考获取数据集上的行列权限规则列表
使用字段 authOriginId
非新建数据权限,新建使用数据集上新建行列权限接口
请求地址 POST http://{domain}/aeolus/api/v3/open/authManagement/filterRuleMember 请求参数 参数为json格式,originId表示的用户需要在系统中存在,如下: { // 项目ID "appId": 1, // 规则ID "filterRuleId": ****, // 需要授予权限的对象列表 "originList": [ { // 对象origin_id "originId": "xxx", // 指定0 "type": 0 } ] } 返回示例 { "code": "aeolus/ok", "data": { // 操作失败的用户会在这里 "fails": [ { "originId": "xxx", "reason": "subject未找到", "type": 0 } ] }, "msg": "成功" }
非删除数据权限,删除使用数据集上删除行列权限接口
请求地址 DELETE http://{domain}/aeolus/api/v3/open/authManagement/filterRuleMember 请求参数 参数为 json 格式,originId 表示的用户需要在系统中存在,与授予权限一致,如下: { // 项目ID "appId": 1, // 规则ID "filterRuleId": ****, // 需要移除权限的对象列表 "originList": [ { // 对象origin_id "originId": "xxx", // 指定0 "type": 0 } ] } 返回示例 { "code": "aeolus/ok", "data": { // 操作失败的用户会在这里 "fails": [ { "originId": "xxx", "reason": "subject未找到", "type": 0 } ] }, "msg": "成功" }
请求地址 GET http://{domain}/aeolus/api/v3/open/authManagement/sensitiveDimMet 请求参数 参数:query string appId: 必选参数,项目id resType: 必选参数,资源类型,目前仅支持图表,report resId: 必选参数,资源ID 返回示例 { "code": "aeolus/ok", "data": { // 数据集ID "183454": { // 行权限 "0": { // 字段ID:字段名 "158*********176": "产品 ID", "158*********177": "订单 ID", "158*********178": "地区", "158*********179": "子类别", "158*********180": "城市", "158*********184": "订单日期", "158*********185": "发货日期", "158*********188": "细分", "158*********192": "折扣" }, // 列权限 "1": { // 字段ID:字段名 "158*********175": "国家/地区", "158*********176": "产品 ID", "158*********177": "订单 ID", "158*********178": "地区", "158*********179": "子类别", "158*********188": "细分", "158*********190": "特殊字段", "158*********193": "行 ID" } } }, "msg": "成功" }
说明
涉及数据行列权限通配符的说明详见数据行列权限操作符