仪表板相关API
1. 仪表板相关API 概述
Public API,是指观远数据为系统集成提供的标准化开放接口。系统集成,通常是指将各个分离的设备(如个人电脑)、系统、功能和信息等集成到相互关联的、统一和协调的系统之中,使资源达到充分共享,实现集中、高效、便利的管理。系统集成实现的关键在于解决系统之间的互连和互操作性问题,是一个多厂商、多协议和面向各种应用的体系结构。
观远数据提供一套简便的验证机制,来供私有化部署用户进行外部系统和账户对接集成,实现集中、高效、便利的管理。本文将为您详细介绍观远数据为您提供的与仪表板相关的 Public API。
2. 仪表板相关API 列表速览
目前,与仪表板相关的 Public API 共包含6个,列表如下:
| 序号 | 接口描述 | PATH | 
| 1 | 获取页面列表 | POST /public-api/page/list | 
| 2 | 搜索页面 | POST /public-api/page/search?q=xx&&offset=0&&limit=10 | 
| 3 | 获取指定页面有读权限的用户列表 | POST /public-api/page/:pgId/get-readable-owners | 
| 4 | 以树状结构获取页面列表 | POST /public-api/page-tree?pgType=:pgType | 
| 5 | 以PDF或者图片模式导出仪表板 | POST /public-api/page/export | 
| 6 | 获取仪表板导出文件 | POST /public-api/file/download | 
3. 仪表板相关API 具体说明
特别说明:当前文档中的页面与仪表板含义基本一致。 页面包含仪表板与数据大屏两大类型。
3.1 获取页面列表
3.1.1 接口简介
请求方式: POST
请求地址:/public-api/page/list
3.1.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
3.1.3 请求与响应示例
POST Body Sample:
{
  "token":"a430012ed74b342ef90b7275",
}
Response Sample:
{
    "result": "ok",
    "response": [
        {
            "pgId": "0ac483ab81b54ce184157100",
            "domId": "demo",
            "name": "集团总览",
            "uId": "d9f1ec1b629946b2b00f1d60",  // 页面创建者
            "pgType": "PAGE",        //页面类型:"OVERVIEW"(概览)、"PAGE"(普通页面)、 "LARGE_SCREEN"(数据大屏)
            "parentDirId": "rc135f11b39a842d8b5475d4"    //页面所属文件夹ID
        },
        ……
    ]
}
3.2 根据页面名称关键词搜索页面
3.2.1 接口简介
请求方式:POST
请求地址:/public-api/page/search?q=:q&&offset=:offset&&limit=:limit
3.2.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
| q | 要搜索的数据集名称模糊词 | url | String | 是 | -- | 
| offset | 搜索结果的起始位置 | url | String | 否 | 默认值0 | 
| limit | 从起始位置取多少条 | url | String | 否 | 默认值10 | 
3.2.3 请求与响应示例
POST Body Sample:
{
  "token":"a430012ed74b342ef90b7275",
}
Response Sample:
'{
    "result": "ok",
    "response": {
      "total": 6,
      "offset": 0,
      "limit": 10,
      "list": [
        {
            "pgId": "0ac483ab81b54ce184157100",
            "domId": "demo",
            "name": "集团总览",
            "uId": "d9f1ec1b629946b2b00f1d60",  // 页面创建者
            "pgType": "PAGE",        //页面类型:"OVERVIEW"(概览)、"PAGE"(普通页面)、 "LARGE_SCREEN"(数据大屏)
            "parentDirId": "rc135f11b39a842d8b5475d4",    //页面所属文件夹ID
            "meta": {
                    "authorizedOnMobile": false,//是否发布在移动端
                    "authorizedOnPC": true //是否发布在桌面
                }
        },
        ……
    ]
    }
}
3.3 获取指定页面有读权限的用户列表
3.3.1 接口简介
请求方式:POST
请求地址:/public-api/page/:pgId/get-readable-owners
3.3.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
| pdId | 页面ID | URL | String | 是 | -- | 
3.3.3 请求与响应示例
POST Body Sample:
{
  "token":"a430012ed74b342ef90b7275",
}
Response Sample:
{
    "result": "ok",
    "response": {
        "ownerUsers": [
            {
                "name": "zhangsan",
                "id": "h9aaad4c93bc1496891321e7",
                "email": "zhangsan@guandata.com",
                "loginId": "zhangsan"
            },
            ……
        ],
        "ownerGroups": [
            {
                "name": "zln34",
                "id": "m62d41e027dfb4e10a4b4a80"
            },
            ……
            ],
        "readableUsers": [
            ……
        ],
        "readableGroups": [
            ……
        ]
    }
}
3.4 以树状结构获取页面列表
3.4.1 接口简介
请求方式:POST
请求地址:/public-api/page-tree?pgType=:pgType
3.4.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
| pgType | 页面类型 | URL | String | 是 | 普通页面:PAGE;大屏页面:LARGE_SCREEN | 
3.4.3 请求与响应示例
POST Body Sample:
{
  "token":"a430012ed74b342ef90b7275",
}
Response Sample:
{
  "result": "ok",
  "response": {
    "id": "q40e0658fdc284e2aaa07f34",
    "parentDirId": "",
    "name": "根目录",
    "contents": [
      {
        "id": "rb0dae7523f4d464ab84f819",
        "parentDirId": "hfc8e4cb8e7e242b98d957d2",
        "name": "123_副本",
        "isPage": true,
        "ctime": "2022-04-29T11:44:21.00Z",
        "pgType": "LARGE_SCREEN"
      }
    ],
    "isPage": false, // false表示文件夹
    "ctime": "2020-01-10T13:49:36.00Z"
  }
}        
3.5 以PDF或者图片模式导出仪表板
3.5.1 接口简介
请求方式:POST
请求地址:/public-api/page/export
特别说明:① 该接口为限时免费API接口。 不排除未来额外收费可能。 ② 6.0 仅支持导出PC视图的图片与PDF。
3.5.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
| pgld | 页面ID | Body | String | 是 | 页面的ID | 
| selectorValues | 筛选器值组 | Body | JSON 数组 | 否 | selectorId 筛选器ID; defaultValue:筛选器值,支持多个参数 | 
| loginId | 账号 | Body | String | 否 | 如a@b.com; 如果uId也填写了,优先使用loginId | 
| uId | 用户ID | Body | String | 否 | 系统中的ID,为一个字符串。如果LoginID与uId都不填写,则以管理员名义导出 | 
| orientation | 导出模式 | Body | String | 是 | 分页模式填写 vertical 或者 horizontal ;单页模式填写导出宽度,如 1400 或者 1024 | 
| locale | 语言偏好 | Body | String | 否 | 默认值zh-CN | 
| exportType | 导出类型 | Body | String | 否 | 支持PDF、IMAGE;默认PDF | 
如果指定了具体的用户信息,将以特定的用户名义(数据权限)导出PDF或者图片。
3.5.3 请求与响应示例
POST Body Sample:
{
    "pgId":"j02bb460a9d6e433eb5d8f6c",
    "selectorValues": [
        {
            "selectorId": "td591c7ed7b9e4f8fb95a94a",
            "defaultValue": [
                "1"
            ]
        }
    ],
    "loginId": "zhangshuaidong@guandata.com",
    "uId": "j02bb460a9d6e433eb5d8f6c",
    "token": "ebed0d48d04544349801f8de",
    "orientation": "vertical",
    "locale": "zh-CN",
    "exportType": "PDF"
}
Response Sample:
{
    "result": "ok",
    "response": {
        "taskId": "f2702d30-4bd1-11ee-adef-25b067ca21c9",
        "status": "已提交",
        "result": "处理中",
        "fileName": "j02bb460a9d6e433eb5d8f6c_dedfd07e3f72b4938a6a8eec.pdf"
    }
}
请记录 taskID,用于文件的获取(具体参考3.6所示接口)。文件导出为异步模式,需要轮询导出结果。
3.6 获取仪表板导出文件
3.6.1 接口简介
请求方式:POST
请求地址:/public-api/file/download
3.6.2 参数说明
| 参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 | 
| token | 应用Token | Body | String | 是 | 在观远平台中获得 | 
| taskId | 任务ID | Body | String | 是 | 其他前置API返回的任务ID | 
3.6.3 请求与响应示例
POST Body Sample:
{
  "token":"a430012ed74b342ef90b7275",
  "taskId": "333b60f0-4e25-11ee-85d0-0f5c5ff3eaf8",
}
Response Sample:
{
    "result": "fail",
    "response": null,
    "error": {
        "status": 40001,
        "message": "处理中",
        "detail": {
            "notifyType": 1
        }
    }
}
如果任务执行完成则会支持返回文件;如果没有顺利导出,任务结果为处理中状态。