权限相关API
1. 权限相关API 概述
Public API,是指观远数据为系统集成提供的标准化开放接口。系统集成,通常是指将各个分离的设备(如个人电脑)、系统、功能和信息等集成到相互关联的、统一和协调的系统之中,使资源达到充分共享,实现集中、高效、便利的管理。系统集成实现的关键在于解决系统之间的互连和互操作性问题,是一个多厂商、多协议和面向各种应用的体系结构。
观远数据提供一套简便的验证机制,来供私有化部署用户进行外部系统和账户对接集成,实现集中、高效、便利的管理。本文将为您详细介绍观远数据为您提供的与权限相关的 Public API。
2. 权限相关API 列表速览
目前,与权限相关的 Public API 共包含9个,列表如下:
| 序号 | 接口描述 | PATH | 
| 1 | 获取指定用户能访问的页面列表 | POST /public-api/user/:uId/get-authorized-pages | 
| 2 | 获取指定用户能访问的数据集列表 | POST /public-api/user/:uId/get-authorized-datasets | 
| 3 | 修改指定用户与各个页面的访问及归属关系 | POST /public-api/user/:uId/modify-authorized-pages | 
| 4 | 修改指定用户与各个数据集的访问及归属关系 | POST /public-api/user/:uId/modify-authorized-datasets | 
| 5 | 获取指定用户组能访问的页面列表 | POST /public-api/user-group/:ugId/get-authorized-pages | 
| 6 | 获取指定用户组能访问的数据集列表 | POST /public-api/user-group/:ugId/get-authorized-datasets | 
| 7 | 修改指定用户组与各个页面的访问及归属关系 | POST /public-api/user-group/:ugId/modify-authorized-pages | 
| 8 | 修改指定用户组与各个数据集的访问及归属关系 | POST /public-api/user-group/:ugId/modify-authorized-datasets | 
| 9 | 通用资源权限授权与解除 | POST /public-api/common-auth/control | 
3. 权限相关API 具体说明
3.1 获取指定用户能访问的页面列表 (1019)
3.1.1 接口简介
请求方式:POST
请求地址:/public-api/user/:uId/get-authorized-pages?pgType=:pgType
3.1.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
| uId | 指定用户的Id | url | String | 是 | -- | 
| pgType | 指定LARGE_SCREEN则会返回大屏的权限信息,不指定(或者指定PAGE)则返回普通页面权限 | url | String | 否 | 以QueryString形式传递参数 | 
3.1.3 请求与响应示例
POST Body Sample:
{
    "token":"xdjfghfodjgjshgfiw23ehrt43"
}
Response Sample:
{
    "result": "ok",
    "response": [
        {
            "id": "o4f72c9ea74544b52a87931c",
            "name": "地图卡片",
            "canExport":false, // true 表示可以导出,false表示不可以导出 
            "isOwner": true,
            "isInherit": false,
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ]
        },
        {
            "id": "ia8f878c8bc0d4f86b9e676c",
            "name": "【T】bug复现",
            "isOwner": false,
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ]
        },
        ……
    ]
}
Response返回的是个json object,其中result表示执行结果,response是返回的内容。response是个json array,每个单项的json对象里面,id是指资源的id(页面或者数据集),name是这个资源的名称,isOwner是个bool值,true表示是此资源的所有者。isInherit是指此当前用户对当前资源的所有者权限是否是从用户组那里继承来的,如果是,则为true,且sources里面会记录是从哪个用户组那里继承而来;如果不是,则为false,sources里面记录的是当前用户的信息。sources里面id是用户或者用户组的id,name是名字,isSelf是指是否是自己这个用户或者用户组。权限相关的其他API的response返回值的含义,均可参考此处。
3.2 获取指定用户能访问的数据集列表(1020)
3.2.1 接口简介
请求方式: POST
请求地址:/public-api/user/:uId/get-authorized-datasets
3.2.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
3.2.3 请求与响应示例
POST Body Sample:
{
    "token":"p3a369b32444b48caa873411",
}
Response Sample:
{
    "result": "ok",
    "response": [
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": true,
            "name": "feedtest",
            "id": "c18baf7eaf7f848f881102e6",
            "canExport":false, // true 表示可以导出,false表示不可以导出 
            "isInherit": false
        },
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": true,
            "name": "模拟数据zy",
            "id": "va7e7af8e771247f791bb90f",
            "isInherit": false
        },
       .......
    ]
}
3.3 修改指定用户与各个页面的访问及归属关系(1022)
3.3.1 接口简介
请求方式:POST
请求地址:/public-api/user/:uId/modify-authorized-pages
3.3.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
| uId | 指定用户的Id | url | String | 是 | -- | 
| pages | 需要更改权限的页面列表 | Body | String | 否 | 仪表板与大屏对应的ID | 
3.3.3 请求与响应示例
POST Body Sample:
{
    "token":"sdjfghfodjgjshgfiw23ehrt43",
    "pages":[{"pgId":"p34c5a5029903422298c67de","isOwner":false,"isReadable":true,"isExportable":true}]
}
pages中,pgId一般在观远页面获取,isOwner设为true表示将此用户设为这个页面的所有者,isReadable设为true表示将此用户设为这个页面的访问者,设置为false,则表示去掉用户对这个页面的相应权限;isExportable 表示是否可以导出(true表示可以导出;false表示不可以导出)。
Response Sample:
返回用户可以访问的所有页面列表。
{
    "result": "ok",
    "response": [
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": true,
            "name": "地图卡片",
            "id": "o4f72c9ea74544b52a87931c",
            "isInherit": false
        },
        ……
    ]
}
3.4 修改指定用户与各个数据集的访问及归属关系(1023)
3.4.1 接口简介
请求方式:POST
请求地址:/public-api/user/:uId/modify-authorized-datasets
3.4.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
| uId | 指定用户的Id | url | String | 是 | -- | 
| datasets | 需要更改权限的数据集列表 | Body | String | 否 | -- | 
3.4.3 请求与响应示例
POST Body Sample:
{
    "token":"sdjfghfodjgjshgfiw23ehrt43",
    "datasets":[{"dsId":"q0138226af8ea46d6825e043","isOwner":false,"isReadable":true,"isExportable":true}]
}
datasets中,dsId一般在观远页面获取表示数据集Id,isOwner设为true表示将此用户设为这个数据集的所有者,isReadable设为true表示将此用户设为这个数据集的访问者,设置为false,则表示去掉用户对这个数据集的相应权限;isExportable 表示是否可以导出(true表明可以导出;false表明不可以导出)。
Response Sample:
{
    "result": "ok",
    "response": [
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": true,
            "name": "feedtest",
            "id": "c18baf7eaf7f848f881102e6",
            "isInherit": false
        },
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": true,
            "name": "123",
            "id": "tdf9f50e6aa2945fda15a023",
            "isInherit": false
        },
        ……
    ]
}
3.5 获取指定用户组能访问的页面列表 (1024)
3.5.1 接口简介
请求方式:POST
请求地址:/public-api/user-group/:ugId/get-authorized-pages?pgType=:pgType
3.5.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
| ugId | 指定用户组的Id | url | String | 是 | -- | 
| pgType | 指定LARGE_SCREEN则会返回大屏的权限信息,不指定则返回普通页面权限 | url | String | 否 | -- | 
3.5.3 请求与响应示例
POST Body Sample:
{
     "token":"sdjfghfodjgjshgfiw23ehrt43" 
}
Response Sample:
{
"result": "ok",
    "response": [
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": true,
            "name": "地图卡片",
            "id": "o4f72c9ea74544b52a87931c",
            "canExport":false, // true 表示可以导出,false表示不可以导出 
            "isInherit": false
        },
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": false,
            "name": "【T】bug复现",
            "id": "ia8f878c8bc0d4f86b9e676c"
        },
        ……
    ]
}
3.6 获取指定用户组能访问的数据集列表(1025)
3.6.1 接口简介
请求方式:POST
请求地址:/public-api/user-group/:ugId/get-authorized-datasets
3.6.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
3.6.3 请求与响应示例
POST Body Sample:
{
     "token":"sdjfghfodjgjshgfiw23ehrt43" 
}
Response Sample:
{
    "result": "ok",
    "response": [
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": true,
            "name": "feedtest",
            "id": "c18baf7eaf7f848f881102e6",
            "canExport":false, // true 表示可以导出,false表示不可以导出 
            "isInherit": false
        },
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": true,
            "name": "模拟数据zy",
            "id": "va7e7af8e771247f791bb90f",
            "isInherit": false
        },
       .......
    ]
}
3.7 修改指定用户组与各个页面的访问及归属关系(1026)
3.7.1 接口简介
请求方式:POST
请求地址:/public-api/user-group/:ugId/modify-authorized-pages
3.7.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
| ugId | 指定用户组的Id | url | String | 是 | -- | 
| pages | 需要更改权限的页面列表 | Body | String | 否 | -- | 
3.7.3 请求与响应示例
POST Body Sample:
{
    "token":"sdjfghfodjgjshgfiw23ehrt43",
    "pages":[{"pgId":"p34c5a5029903422298c67de","isOwner":false,"isReadable":true,"isExportable":true}]
}
pages中,pgId一般在观远页面获取,isOwner设为true表示将此用户设为这个页面的所有者;isReadable设为true表示将此用户设为这个页面的访问者,设置为false,则表示去掉用户对这个页面的相应权限;isExportable 表示是否可以导出。
Response Sample:
{
    "result": "ok",
    "response": [
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": true,
            "name": "地图卡片",
            "id": "o4f72c9ea74544b52a87931c",
            "isInherit": false
        },
        ……
    ]
}
3.8 修改指定用户组与各个数据集的访问及归属关系(1027)
3.8.1 接口简介
请求方式: POST
请求地址:POST /public-api/user-group/:ugId/modify-authorized-datasets
3.8.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
| uId | 指定用户的Id | url | String | 是 | -- | 
| datasets | 需要更改权限的数据集列表 | Body | String | 否 | -- | 
3.8.3 请求与响应示例
POST Body Sample:
{
    "token":"sdjfghfodjgjshgfiw23ehrt43",
    "datasets":[{"dsId":"q0138226af8ea46d6825e043","isOwner":false,"isReadable":true,"isExportable":true}]
}
datasets中,dsId一般在观远页面获取表示数据集Id,isOwner设为true表示将此用户设为这个数据集的所有者,isReadable设为true表示将此用户设为这个数据集的访问者。设置为false,则表示去掉用户对这个数据集的相应权限;isExportable 表示是否可以导出。
Response Sample:
{
"result": "ok",
    "response": [
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": true,
            "name": "feedtest",
            "id": "c18baf7eaf7f848f881102e6",
            "isInherit": false
        },
        {
            "sources": [
                {
                    "isSelf": true,
                    "id": "u969b654d7cd14610b0b246f",
                    "name": null
                }
            ],
            "isOwner": true,
            "name": "123",
            "id": "tdf9f50e6aa2945fda15a023",
            "isInherit": false
        },
        ……
    ]
}
3.9 通用资源权限授权与解除
3.9.1 接口简介
请求方式:POST
请求地址:/public-api/common-auth/control
特别说明:
- 
该接口目前仅支持以下资源类型:数据账户、仪表板文件夹、移动轻应用、桌面应用(6.3 版本开始支持) 
- 
该接口支持批量设置账号ID与资源ID,但数量不宜过多,一般建议少于100 
3.9.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | BODY | String | 是 | 在观远平台中获得 | 
| domId | 域ID | BODY | String | 否 | 默认guanbi | 
| operatorLoginId | 操作者登录ID | BODY | String | 否 | 如果不填写,默认以管理员名义进行权限的操作;审计 | 
| operations | 权限策略 | BODY | String数组 | 是 | |
| op | 权限操作类型 | BODY | String | 是 | 删除权限 RemoveAuthOp添加权限 AddAuthOp | 
| subjectTye | 操作对象账号类型 | BODY | String | 是 | 外部用户组ID ExternalUserGroups内部用户组ID InternalUserGroups用户登录账号 LoginUsers内部用户ID InternalUsers | 
| subjectIds | 操作对象账号 | BODY | String数组 | 是 | 支持放入多个账号 | 
| resourceType | 资源类型 | BODY | String | 是 | 数据账户 ACCOUNT文件夹 DIRECTORY移动轻应用 CUSTOM_APP桌面应 WEB_PORTAL_APP | 
| directoryType | 文件夹类型 | BODY | String | 否 | 当资源类型为【文件夹】时,需要设置文件夹类型。目前仅支持页面(PAGE)的文件夹。 | 
| resourceIds | 资源ID | BODY | String数组 | 是 | 支持放入多个资源ID | 
| aclType | 权限类型 | BODY | String | 是 | 所有者 RESOURCE_MANAGER访问者RESOURCE_USER导出者RESOURCE_EXPORTER | 
3.9.3 请求与响应示例
POST Body Sample:
{
  "domId": "guanbi",
  "operatorLoginId": "a@abc.com",
	"operations": [
  	{
      "op": "AddAuthOp",
      "subjectIds": ["b@abc.com", "c@abc.com", "d@abc.com"],
      "subjectType": "LoginUsers",
      "aclType": "RESOURCE_MANAGER",
      "resourceIds": ["r1", "r2", "r3"],
      "resourceType": "ACCOUNT"
    }
  ]
}
{
  "domId": "guanbi",
  "operatorLoginId": "a@abc.com",
	"operations": [
  	{
      "op": "AddAuthOp",
      "subjectIds": ["b@abc.com", "c@abc.com", "d@abc.com"],
      "subjectType": "LoginUsers",
      "aclType": "RESOURCE_MANAGER",
      "resourceIds": ["r1", "r2", "r3"],
      "resourceType": "DIRECTORY",
      "directoryType": "PAGE"
    }
  ]
}
Response Sample:
{
  "res": [
    { "succeed": true },
  ]
}
{
  "res": [
    { "succedd": false, "msg": "xxx" } 
  ]
}
返回体中包含一个数组,分别对应请求里不同处理要求的结果。