1. 应用

1.1. 应用说明

应用针对某一场景创建,它由多个仪表盘组成。 应用包含了用户一次探索所需要的全部数据、图表以及关系模型,非常适合作为日常工作的一个封装概念。

1.1.1. 应用的定义

应用结构说明

字段 类型 描述
id LONG 应用的 id
title STRING 应用的标题
options OBJECT 应用的配置信息
options.dashboards NUMBER 数组 此应用下的仪表盘 id 列表
options.charts NUMBER 数组 此应用下的图表 id 列表
options.datasets NUMBER 数组 此应用下的数据集 id 列表
options.dashboardsOrder NUMBER 数组 此应用下的仪表盘的显示顺序
options.enableAppRule BOOL 是否启用行权限控制
options.publishConfig OBJECT 此应用的发布设置,只在发布的应用中启用
options.publishConfig.publishTitle STRING 发布的应用标题
options.publishConfig.publisher STRING 发布的用户名
options.publishConfig.coverImageId NUMBER 发布的应用的封面图片 id
options.publishConfig.watermarkImageId NUMBER 发布的应用的水印图片 id
options.publishConfig.duplicatedPermitted BOOL 发布的应用是否允许复制数据集
options.publishConfig.showDetailPermitted BOOL 只读模式下访问应用是否允许显示详情
options.publishConfig.downloadPermitted BOOL 只读模式下访问应用是否允许下载数据
options.publishConfig.zoomInPermitted BOOL 只读模式下访问应用是否下钻
options.publishConfig.targetFolderId LONG 发布的目录 id
options.publishConfig.description STRING 发布应用描述
options.publishConfig.foldersTitle STRING 数组 发布的目录路径名称
options.publishConfig.publisherDisplayConfig OBJECT 此应用的发布者显示配置
options.publishConfig.publisherDisplayConfig.id LONG 发布者 id
options.publishConfig.publisherDisplayConfig.type STRING 发布者类型
options.publishConfig.publisherDisplayConfig.name STRING 发布者名称
options.appTemplateUUID STRING 应用模版的 uuid,只在导入、导出模版用到,不存库
options.filters OBJECT数组 全局过滤器列表
isPublish BOOL 应用是不是发布区的应用
publishHash STRING 应用发布的哈希值
publishedBy NUMBER 发布区应用的源应用 id
folderId LONG 应用所在的文件夹 id
area STRING 应用所在的区域,可选值参照area值说明
shareHash STRING 分享应用的哈希值
dataMode STRING 应用的数据权限,可选值参照dataMode 值说明
entityGroup STRING 邮件自动推送的执行计划类别,用于管理执行计划,固定为APP_EMAIL
entityKey STRING 邮件自动推送的执行计划关键字,用于管理执行计划
execDetail OBJECT 创建邮件推送执行计划需要用到的任务描述信息,详见执行计划
refreshEntityGroup STRING 应用数据集刷新的执行计划类别,用于管理执行计划,固定为APP_REFRESH
refreshExecDetail OBJECT 创建数据集刷新执行计划需要用到的任务描述信息,详见执行计划
hsVersion INTEGER 可选,本次编辑的版本号,从0开始,修改前先GET待修改资源获取当前版本号,修改时带上刚刚获取的版本号,服务端会检查并发冲突。不带版本号不检查并发冲突。
tenantId LONG 可选, 租户id
type STRING 应用类型, 可选值参照appType值说明
defaultDataset LONG 可选,应用中用于做图的默认数据集
publishState BOOL 创作区的应用是否发布
latestAuthorizedBy LONG 应用最近一次的授权者
latestAuthorizedAt DATE 应用最近一次授权时间
latestPublishedBy LONG 应用最近一次的发布者
latestPublishedAt DATE 应用最近一次发布时间
area 值说明
字段值 描述
PERSONAL_AREA 应用创作区的个人区
PUBLIC_AREA 应用创作区的共享区
DATA_MART 数据集市
APP_MART 应用集市
dataMode 值说明
字段值 描述
APP_MODE 应用作者
DATASET_MODE 数据集作者
VIEWER_MODE 使用者
appType 值说明
字段值 描述
ANALYTIC_APP 常用应用,用于分析场景
QUERY_APP 查询应用,用于自助查询场景
DATA_APP 数据包,用于数据集市区处理数据集
REPORT_APP 报表应用

1.2. 接口说明

1.2.1. 创建应用

请求URL

POST /api/v1/apps

请求参数

request body 请求体

应用结构说明 | 字段 | 类型 | 描述 | |------------------------------------------|----------|-------------------------| | title | STRING | 应用的标题 | | folderId | LONG | 应用所在的文件夹 id, 应用创作共享空间的根目录 id 为 1, 数据集市的根目录 id 为 2 | | area | STRING | 应用所在区域,需与folderId对应的目录所在区域一致,默认为PERSONAL_AREA |

返回对象的格式说明

应用结构说明

接口示例1 在应用创作区新建应用

  1. 请求 POST /api/v1/apps
{
  "title": "应用名称",
  "options": {
    "dashboardsOrder": [],
    "themes": {}
  }
}
  1. 响应结果
{
  "version": "3.2-SNAPSHOT@6929f52#8f8108f",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 46176,
    "title": "应用名称",
    "options": {
      "dashboardsOrder": []
    },
    "createdBy": 6,
    "createdAt": "2020-06-03 17:30:27",
    "updatedBy": 6,
    "updatedAt": "2020-06-03 17:30:27",
    "area": "PERSONAL_AREA",
    "dataMode": "APP_MODE",
    "publish": false,
    "type": "ANALYTIC_APP"
  }
}

接口示例2 在应用创作共享空间根目录下创建应用

  1. 请求 POST /api/v1/apps
{
  "folderId": 1,
  "title": "应用名称",
  "area": "PULIC_AREA",
  "options": {
    "dashboardsOrder": [],
    "themes": {}
  }
}

接口示例3 在应用集市团队空间根目录下创建应用

  1. 请求 POST /api/v1/apps
{
  "folderId": 2,
  "title": "应用名称",
  "area": "SYSTEM_PORTAL",
  "options": {
    "dashboardsOrder": [],
    "themes": {}
  }
}

接口示例4 在应用创作下创建自助查询应用

  1. 请求 POST /api/v1/apps
{
  "title": "应用名称",
  "options": {
    "dashboardsOrder": [],
    "themes": {}
  },
  "type": "QUERY_APP"
}

1.2.2. 查询应用

查询用户能看到的应用列表,在应用集市和应用创作区使用。

请求URL

GET /api/v1/apps

请求参数

URL 参数
字段 类型 是否必须 说明
publish BOOLEAN 获取应用集市区应用时设置为 true,获取应用协作区应用时设置为 false
orderBy String 排序字段
pOrCByCurrent BOOLEAN 应用集市区,查询 "我发布的" 应用时设置为 true, "发布给我的" 应用时设置为 false;应用协作区,查询"我协作的" 应用时设置为 true, "协作给我的" 应用时设置为 false
createdByCurrent BOOLEAN 查询 "我创建的" 应用时设置为 true,"协作给我的" 应用时设置为false,用于应用创作区
showHide BOOLEAN 是否显示隐藏的应用,用于应用集市区
queryAll BOOLEAN 是否显示全部应用
ids String 要查询的应用id列表,用逗号隔开如:1,2,3,4

返回对象的格式说明

应用结构说明

接口示例1

  1. 请求 GET /api/v1/apps?pOrCByCurrent=false&offset=0&limit=20&orderBy=updatedAt&orderType=desc

  2. 响应结果

{
  "version": "3.2-SNAPSHOT@b7c5a93#f76c1b6",
  "code": 0,
  "msg": "success",
  "data": [
    {
      "id": 45806,
      "title": "口罩专题分析",
      "cover": "",
      "options": {
        "dashboards": [
          1,
          2,
          3,
          5
        ],
        "datasets": [
          1
        ],
        "dashboardsOrder": [
          1,
          2,
          3,
          5
        ],
        "appTemplateUUID": "c05b0590-4685-4d3e-ac32-6cace767360f"
      },
      "createdBy": 187,
      "createdAt": "2020-05-09 10:48:59",
      "updatedBy": 187,
      "updatedAt": "2020-05-09 10:48:59",
      "visible": true,
      "hsVersion": 0,
      "area": "PERSONAL_AREA",
      "dataMode": "APP_MODE",
      "accessCount": 6,
      "creator": {
        "id": 187,
        "name": "qq420188456",
        "email": "zhaojunli@hengshi.com"
      },
      "updater": {
        "id": 187,
        "name": "qq420188456",
        "email": "zhaojunli@hengshi.com"
      },
      "collaborated": false,
      "datasets": [
        1
      ]
    },
    {
      "id": 45648,
      "title": "jlscreenshot",
      "cover": "",
      "options": {
        "dashboards": [
          1,
          3,
          2
        ],
        "datasets": [
          3,
          2,
          1
        ],
        "dashboardsOrder": [
          1,
          2,
          3
        ],
        "enableAppRule": false
      },
      "createdBy": 187,
      "createdAt": "2020-04-15 16:16:19",
      "updatedBy": 187,
      "updatedAt": "2020-04-24 14:15:44",
      "visible": true,
      "hsVersion": 4,
      "area": "PERSONAL_AREA",
      "dataMode": "APP_MODE",
      "accessCount": 33,
      "publishState": true,
      "type": "ANALYTIC_APP",
      "creator": {
        "id": 187,
        "name": "qq420188456",
        "email": "zhaojunli@hengshi.com"
      },
      "updater": {
        "id": 187,
        "name": "qq420188456",
        "email": "zhaojunli@hengshi.com"
      },
      "collaborated": false,
      "datasets": [
        3,
        2,
        1
      ]
    }
  ],
  "totalHits": 9,
  "offset": 0
}

1.2.3. 根据ID查询应用

请求URL

GET /api/v1/apps/{appId}

请求参数

URL 参数
字段 类型 是否必须 说明
appId INTEGER 指定应用的 id
checkStatus BOOLEAN 是否检查发布态应用的状态,若为true且发布态应用处于暂停服务状态,则报错

返回对象的格式说明

应用结构说明

接口示例1 查询 id 为 1 的应用

  1. 请求 GET /api/v1/apps/1

  2. 响应结果

{
  "version": "3.2-SNAPSHOT@6929f52#8f8108f",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 46176,
    "title": "lala",
    "cover": "",
    "options": {
      "dashboards": [
        1
      ],
      "datasets": [
        1
      ],
      "dashboardsOrder": [
        1
      ],
      "enableAppRule": false
    },
    "createdBy": 6,
    "createdAt": "2020-06-03 17:30:27",
    "updatedBy": 6,
    "updatedAt": "2020-06-03 17:36:38",
    "visible": true,
    "isDelete": false,
    "isPublish": false,
    "hsVersion": 1,
    "area": "PERSONAL_AREA",
    "dataMode": "APP_MODE",
    "publishState": false,
    "type": "ANALYTIC_APP",
    "creator": {
      "id": 6,
      "name": "***",
      "email": "***",
      "mobile": "***"
    },
    "action": "admin|read|write",
    "datasets": [
      1
    ],
    "publish": false
  }
}

1.2.4. 更新应用

请求URL

PUT /api/v1/apps/{appId}

请求参数

URL 参数
字段 类型 是否必须 说明
appId INTEGER 指定应用的 id
request body 请求体

应用结构说明, 可以被修改的内容见下表:

字段 类型 描述
title STRING 应用的标题
options.enableAppRule BOOL 是否启用行权限控制
options.publishConfig.showDetailPermitted BOOL 只读模式下访问应用是否允许显示详情
options.publishConfig.downloadPermitted BOOL 只读模式下访问应用是否允许下载数据
options.publishConfig.zoomInPermitted BOOL 只读模式下访问应用是否下钻
dataMode STRING 应用的数据权限,可选值参照dataMode 值说明
folderId LONG 应用目录id,若与当前不一致,则视为移动应用操作,会检查是否可移动与权限

返回对象的格式说明

应用结构说明

接口示例1 更新 id 为 1 的应用标题

  1. 请求 PUT /api/v1/apps/1
{
  "title": "wewe",
  "hsVersion": 1
}

接口示例2 启用 id 为 1 的应用行权限规则

  1. 请求 PUT /api/v1/apps/1
{
  "dataMode": "APP_MODE",
  "options": {
    "dashboards": [
      1,
      2
    ],
    "datasets": [
      7
    ],
    "dashboardsOrder": [
      1,
      2
    ],
    "enableAppRule": true,
    "publishConfig": {
      "zoomInPermitted": true,
      "showDetailPermitted": true,
      "downloadPermitted": true,
      "totalPages": {},
      "duplicatedPermitted": false
    }
  },
  "hsVersion": 1
}

1.2.5. 删除应用

请求URL

DELETE /api/v1/apps/{appId}

请求参数

URL 参数
字段 类型 是否必须 说明
appId INTEGER 指定应用的 id

返回对象的格式说明

字段 类型 说明
version STRING 当前系统版本哈希值
msg STRING 成功返回 success

1.2.6. 运行图表获取数据

根据图表配置信息获取图表数据。

请求URL

POST /api/v1/apps/{appId}/chart-data

请求参数

URL 参数
字段 类型 说明
appId NUMBER 必填
Request Body 参数

图表的配置信息,详见图表结构说明

返回对象的格式说明

数据集数据 datasetResultDto

接口示例1

  1. 请求 POST /api/v1/apps/1/chart-data
{
   "datasetId": 3,
   "options": {
      "axes": [
         {
            "op": "group",
            "uid": "u_edbee8adba68e26a_0",
            "kind": "function",
            "args": [
               {
                  "kind": "field",
                  "op": "region_name",
                  "dataset": 3
               }
            ]
         },
         {
            "op": "sum",
            "uid": "u_9f886f9cb7bdf1d2_1",
            "kind": "function",
            "args": [
               {
                  "kind": "field",
            "op": "region_id",
            "dataset": 3
          }
        ]
      }
    ]
  }
}
  1. 响应结果
{
  "data": {
    "data": [
      [
        "Americas",
        2
      ],
      [
        "Middle East and Africa",
        4
      ],
      [
        "Asia",
        3
      ],
      [
        "Europe",
        1
      ]
    ],
    "schema": [
      {
        "fieldName": "u_edbee8adba68e26a_0"
      },
      {
        "fieldName": "u_9f886f9cb7bdf1d2_1"
      }
    ]
  }
}

1.2.7. 运行图表获取原始数据

根据图表配置信息获取图表用到的数据集的原始数据。

请求URL

POST /api/v1/apps/{appId}/chart-related-data

请求参数

URL 参数
字段 类型 说明
appId NUMBER 必填
Request Body 参数

图表的配置信息,详见图表结构说明

返回对象的格式说明

数据集数据 datasetResultDto

接口示例1

  1. 请求 POST /api/v1/apps/1/chart-related-data
{
   "datasetId": 3,
   "options": {
      "axes": [
         {
            "op": "group",
            "uid": "u_edbee8adba68e26a_0",
            "kind": "function",
            "args": [
               {
                  "kind": "field",
                  "op": "region_name",
                  "dataset": 3
          }
        ]
      },
      {
        "op": "sum",
        "uid": "u_9f886f9cb7bdf1d2_1",
        "kind": "function",
        "args": [
          {
            "kind": "field",
            "op": "region_id",
            "dataset": 3
          }
        ]
      }
    ],
    "fieldsPolicy": "AXES_ALL"
  }
}
  1. 响应结果
{
  "data": [
    {
      "data": [
        [
          1,
          "Europe"
        ],
        [
          2,
          "Americas"
        ],
        [
          3,
          "Asia"
        ],
        [
          4,
          "Middle East and Africa"
        ]
      ],
      "schema": [
        {
          "fieldName": "region_id",
          "type": "number",
          "label": "region_id"
        },
        {
          "fieldName": "region_name",
          "type": "string",
          "label": "region_name"
        }
      ],
      "layer": "a_ivt_regions"
    }
  ]
}

1.2.8. 分页查询回收站中的应用

查询不同区域下回收站中的应用

请求URL

GET /api/v1/list-trash

请求参数

URL 参数
字段 类型 说明
area 枚举 可选,有效值参照area值说明,默认是 PERSONAL_AREA
orderBy STRING 可选,排序字段,默认是按照更新时间降序排序
orderType STRING 可选,排序类型,asc - 表示升序,desc - 表示降序
limit NUMBER 可选,单页限制条数,默认是10
offset NUMBER 可选,页数偏移量,默认是0

返回对象的格式说明

app对象的数组。

接口示例1

  1. 请求
GET /api/v1/list-trash?area=PERSONAL_AREA
  1. 响应结果
{
  "version": "2.7-SNAPSHOT@@git.commit.id.abbrev@#null",
  "code": 0,
  "msg": "success",
  "data": {
    "offset": 0,
    "totalHits": 127,
    "data": [
      {
        "id": 327,
        "title": "新建应用2 (9)",
        "cover": "",
        "options": {
          "dashboardsOrder": [
            1,
            2
          ]
        },
        "createdBy": 1,
        "createdAt": "2019-08-20 16:20:56",
        "updatedBy": 1,
        "updatedAt": "2019-12-17 17:47:30",
        "visible": true,
        "isDelete": true,
        "hsVersion": 4,
        "area": "PERSONAL_AREA",
        "publish": false,
        "publicPublish": false
      }
    ]
  }
}

1.2.9. 恢复回收站中的应用

恢复回收站中的应用

请求URL

POST /api/v1/apps/{appId}/restore

请求参数

URL 参数
字段 类型 说明
appId INTEGER 指定要恢复的应用 id

接口示例1

  1. 请求
POST /api/v1/apps/1664/restore
  1. 响应结果
{
  "version": "2.7-SNAPSHOT@@git.commit.id.abbrev@#null",
  "code": 0,
  "msg": "success",
  "data": 1
}

1.2.10. 彻底删除回收站中的应用

彻底删除回收站中的应用

请求URL

POST /api/v1/apps/{appId}/prune

请求参数

URL 参数
字段 类型 说明
appId INTEGER 指定要恢复的应用 id

接口示例1

  1. 请求
POST /api/v1/apps/1664/prune
  1. 响应结果
{
  "version": "2.7-SNAPSHOT@@git.commit.id.abbrev@#null",
  "code": 0,
  "msg": "success",
  "data": 1
}

1.2.11. 在当前app下用HE 查询数据

在当前app下用 HE 语句查询数据

请求URL

POST /api/v1/apps/{appId}/query
URL 请求参数

| appId | NUMBER | 必填,应用的 id | | limit | NUMBER | 可选,返回记录的最大条数,默认是1000 | | offset | NUMBER | 可选,返回第几页数据,默认是0 |

Request Body 参数

HE 表达式,详情参照HE 的数据集函数

返回对象的格式说明

数据集数据 datasetResultDto

参考示例

  1. 请求
POST /api/v1/apps/1/query
  1. Request Body 参数
{
  "kind": "formula",
  "op": "summarize(dataset(1), {type}, sum({votes}) as 'sum1')"
}
  1. 响应结果
{
  "version": "2.7-SNAPSHOT@@git.commit.id.abbrev@#null",
  "code": 0,
  "msg": "success",
  "data": {
    "data": [
      [
        "喜剧",
        16.5
      ],
      [
        "动画",
        16.6
      ]
    ],
    "schema": [
      {
        "fieldName": "type",
        "visible": true,
        "nativeType": "text"
      },
      {
        "fieldName": "sum1",
        "visible": true,
        "nativeType": "numeric"
      }
    ]
  }
}

1.2.12. 批量隐藏 & 排序仪表盘

批量隐藏 & 排序仪表盘

请求URL

PUT /api/v1/apps/{appId}/update-dashbords-order-hide

请求参数

Request Body 参数
{
  "options": {
    "dashboardsOrder": [
      1,
      2,
      3
    ]
  },
  "resourceBatchUpdateDtos": [
    {
      "ids": [
        1
      ],
      "pathAndValues": [
        {
          "path": [
            "hide"
          ],
          "value": false
        }
      ]
    },
    {
      "ids": [
        2,
        3
      ],
      "pathAndValues": [
        {
          "path": [
            "hide"
          ],
          "value": true
        }
      ]
    }
  ]
}

接口示例1

  1. 请求
PUT /api/v1/apps/{appId}/update-dashbords-order-hide
  1. 请求体
{
  "options": {
    "dashboardsOrder": [
      1,
      2,
      3
    ]
  },
  "resourceBatchUpdateDtos": [
    {
      "ids": [
        1
      ],
      "pathAndValues": [
        {
          "path": [
            "hide"
          ],
          "value": false
        }
      ]
    },
    {
      "ids": [
        2,
        3
      ],
      "pathAndValues": [
        {
          "path": [
            "hide"
          ],
          "value": true
        }
      ]
    }
  ],
  "hsVersion": 5
}
  1. 响应结果
{
  "version": "3.2-SNAPSHOT@f8dc947#95a976a",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 45821,
    "title": "hideDashbaord",
    "cover": "",
    "options": {
      "dashboardsOrder": [
        1,
        2,
        3
      ],
      "enableAppRule": false
    },
    "createdBy": 8,
    "createdAt": "2020-05-13 14:16:58",
    "updatedBy": 8,
    "updatedAt": "2020-05-13 14:39:14",
    "visible": true,
    "isDelete": false,
    "hsVersion": 6,
    "area": "PERSONAL_AREA",
    "dataMode": "APP_MODE",
    "publish": false
  }
}

1.2.13. 上传封面

请求URL

PUT /api/v1/apps/{appId}/cover

请求参数

Request Body 参数

表单数据

后端API请求代码样例
@Test
public void uploadTest()throws Exception{
        SimpleClientHttpRequestFactory simpleClientHttpRequestFactory=new SimpleClientHttpRequestFactory();
        simpleClientHttpRequestFactory.setConnectTimeout(15000);
        simpleClientHttpRequestFactory.setReadTimeout(5000);
        RestTemplate restTemplate=new RestTemplate(simpleClientHttpRequestFactory);
        HttpHeaders headers=new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        headers.set("Cookie","csrf=142b7fd3-2cbf-4caa-ace5-480ad9871623; sid=3aadc6f7-67ea-49d7-8ec1-de4bb7ef673b");
        headers.set("X-CSRF-Token","142b7fd3-2cbf-4caa-ace5-480ad9871623");
        String url="http://localhost:9981/api/apps/47/cover";
        FileSystemResource fileSystemResource=new FileSystemResource("/Users/hengshi/Documents/a.jpg");
        MultiValueMap<String, Object> form=new LinkedMultiValueMap<>();
        form.add("file",fileSystemResource);
        form.add("filename","a.jpg");
        HttpEntity<MultiValueMap<String, Object>>files=new HttpEntity<>(form,headers);
        String s=restTemplate.postForObject(url,files,String.class);
        }

返回对象的格式说明

字段 类型 说明
version STRING 当前系统版本哈希值
data INTEGER 图片的 id

1.2.14. 上传水印

请求URL

PUT /api/v1/apps/{appId}/watermark

请求参数

Request Body 参数

表单数据

后端API请求代码样例

后端API请求代码样例

返回对象的格式说明

字段 类型 说明
version STRING 当前系统版本哈希值
data INTEGER 图片的 id

1.2.15. 发布应用

请求URL

POST /api/v1/apps/{appId}/publish

请求参数

url 参数
字段 类型 描述
appId INTEGER 应用的 id
request body 请求体

应用结构说明,只涉及到 options.publishConfig 实体

返回对象的格式说明

应用结构说明

接口示例1 在应用创作区新建应用

  1. 请求 POST /api/v1/apps/1/publish
{
  "targetFolderId": 2805,
  "targetArea": "SYSTEM_PORTAL",
  "options": {
    "publishConfig": {
      "publishTitle": "0529-3.1-app",
      "publisher": "trial",
      "coverImageId": 102,
      "watermarkImageId": 103,
      "zoomInPermitted": true,
      "showDetailPermitted": true,
      "downloadPermitted": true,
      "duplicatedPermitted": true,
      "targetFolderId": 1,
      "description": "app description",
      "foldersTitle": [
        "公共空间",
        "文件夹"
      ],
      "publisherDisplayConfig": {
        "id": 123,
        "type": "user",
        "name": "trial"
      }
    }
  }
  1. 响应结果
{
  "version": "",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 43421,
    "title": "publish app",
    "options": {
      "dashboards": [
        1
      ],
      "datasets": [
      ],
      "dashboardsOrder": [
        1
      ],
      "publishConfig": {
        "zoomInPermitted": false,
        "showDetailPermitted": true,
        "downloadPermitted": true,
        "publishTitle": "publish app",
        "publisher": "trial",
        "totalPages": {
        },
        "duplicatedPermitted": true,
        "publisherDisplayConfig": {
          "id": 1337,
          "type": "user",
          "name": "trial"
        },
        "targetFolderId": 263,
        "foldersTitle": [
          "公共空间",
          "文件夹"
        ],
        "displayPublisher": true
      },
      "enableAppRule": false,
      "enableRuleStrictValidate": false,
      "pagination": {
        "applyToDashboards": [
          1,
          1
        ]
      },
      "source": "PERSONAL_AREA",
      "devices": {
        "pc": true,
        "mobile": false
      },
      "resultCacheInterval": 3600
    },
    "createdBy": 1337,
    "createdAt": "2022-12-29 15:30:58",
    "updatedBy": 1337,
    "updatedAt": "2022-12-29 15:30:58",
    "isDelete": false,
    "isPublish": true,
    "publishHash": "EB086EF1566A844FFF077D40742C9821B",
    "publishedBy": 41589,
    "datasets": [
    ],
    "refreshEntityGroup": "APP_REFRESH",
    "entityKey": "43421",
    "entityGroup": "APP_EMAIL"
  }
}

1.2.16. 取消发布

取消发布

请求URL

DELETE /api/v1/apps/{appId}/publish/cancel

请求参数

request body 参数

返回对象的格式说明

字段 类型 说明
version STRING 当前系统版本哈希值

说明

该操作只能由应用的创建者执行

接口示例1: 取消发布

DELETE /api/v1/apps/{appId}/publish/cancel

返回

{
  "version": "3.2-SNAPSHOT@@git.commit.id.abbrev@#null",
  "code": 0,
  "msg": "success"
}

1.2.17. 查看应用中使用的数据连接

请求URL

GET /api/v1/apps/{appId}/connection-replace

请求参数

url 参数
字段 类型 描述
appId INTEGER 应用的 id

返回对象的格式说明

返回对象是dataset list,每个dataset里带有connection的信息。

字段 类型 描述
id NUMBER 数据集的 id
options.connectionId NUMBER 数据连接的 id
options.connectionTitle NUMBER 数据连接的标题
options.origin STRING 数据连接的类型

接口示例1 列出应用 1 中图表所用到的所有数据连接

  1. 请求 GET /api/v1/apps/1/connection-replace

  2. 响应结果

{
  "version": "3.3-SNAPSHOT@@git.commit.id.abbrev@#8500a3e",
  "code": 0,
  "msg": "success",
  "data": [
    {
      "id": 1,
      "options": {
        "connectionTitle": "testuserattr",
        "connectionId": 4197,
        "origin": "postgresql"
      }
    }
  ]
}

1.2.18. 替换应用中使用的数据连接

请求URL

POST /api/v1/apps/{appId}/connection-replace

请求参数

url 参数
字段 类型 描述
appId INTEGER 应用的 id
request body 请求体

现在使用的数据连接 id 和要替换的数据连接 id 对应关系的列表。例如:[{"current":4197,"replace":4122}]

返回对象的格式说明

字段 类型 描述
msg STRING 执行成功返回 success

接口示例1 替换应用 1 中图表所用到的一个数据连接

  1. 请求 POST /api/v1/apps/1/connection-replace
[
  {
    "current": 4197,
    "replace": 4122
  }
]
  1. 响应结果
{
  "version": "3.2-SNAPSHOT@@git.commit.id.abbrev@#null",
  "code": 0,
  "msg": "success"
}

1.2.19. 查看应用中使用的数据包

请求URL

GET /api/v1/apps/{appId}/dataapp-replace

请求参数

url 参数
字段 类型 描述
appId INTEGER 应用的 id

返回对象的格式说明

字段 类型 描述
id NUMBER 应用的 id
title STRING 应用的标题
area STRING 应用所在的区域,可选值参照area值说明
parents OBJECT 数组 应用所在的文件夹列表,顺序是从外层目录到里层目录
parents.[].id NUMBER 文件夹的id
parents.[].title STRING 文件夹的标题
parents.[].area STRING 文件夹所在的区域

接口示例1 列出应用 1 中图表所用到的所有数据包

  1. 请求 GET /api/v1/apps/1/dataapp-replace

  2. 响应结果

{
  "version": "3.2-SNAPSHOT@@git.commit.id.abbrev@#null",
  "code": 0,
  "msg": "success",
  "data": [
    {
      "id": 3376,
      "title": "新建数据包 (2)",
      "area": "DATA_MART",
      "parents": [
        {
          "id": 2,
          "title": "data_mart_root_folder",
          "options": {
            "rootType": "PUBLIC_ROOT_FOLDER"
          },
          "isDelete": false,
          "area": "DATA_MART"
        }
      ]
    },
    {
      "id": 3378,
      "title": "数据包过滤 (2)",
      "area": "PERSONAL_AREA"
    }
  ]
}

1.2.20. 替换应用中使用的数据包

请求URL

POST /api/v1/apps/{appId}/dataapp-replace

请求参数

url 参数
字段 类型 描述
appId INTEGER 应用的 id
request body 请求体

现在使用的数据包 id 和要替换的数据包 id 对应关系的列表。例如:[{"current":3376,"replace":154}]

返回对象的格式说明

字段 类型 描述
msg STRING 执行成功返回 success

接口示例1 替换应用 1 中图表所用到的一个数据包

  1. 请求 POST /api/v1/apps/1/dataapp-replace
[
  {
    "current": 3376,
    "replace": 154
  }
]
  1. 响应结果
{
  "version": "3.2-SNAPSHOT@@git.commit.id.abbrev@#null",
  "code": 0,
  "msg": "success"
}

1.2.21. 全部禁用应用中的单个数据集更新计划

请求URL

POST /api/apps/{appId}/disable-all-dataset-schedule

请求参数

url 参数
字段 类型 描述
appId INTEGER 应用的 id
request body 请求体
字段 类型 描述

返回对象的格式说明

字段 类型 描述
msg STRING 执行成功返回 success

接口示例1 禁用app id为1的所有单个数据集更新计划

  1. 请求 POST /api/apps/1/disable-all-dataset-schedule
{}
  1. 响应结果
{
  "version": "3.5-SNAPSHOT@@git.commit.id.abbrev@#null",
  "code": 0,
  "msg": "success"
}

1.2.22. 应用刷新时排除这个数据集

请求URL

POST /api/apps/{appId}/exclude-in-app-refresh

请求参数

url 参数
字段 类型 描述
appId INTEGER 应用的 id
request body 请求体
字段 类型 描述
entityKey STRING 被排除的数据集的执行计划的entityKey,不包含这个字段,表示全部

返回对象的格式说明

字段 类型 描述
msg STRING 执行成功返回 success

接口示例1 禁用app id为1的所有单个数据集更新计划

  1. 请求 POST /api/apps/1/exclude-in-app-refresh
{
  "entityKey": "1-1"
}
  1. 响应结果
{
  "version": "3.5-SNAPSHOT@@git.commit.id.abbrev@#null",
  "code": 0,
  "msg": "success"
}

1.2.23. 应用刷新时包含这个数据集

请求URL

POST /api/apps/{appId}/include-in-app-refresh

请求参数

url 参数
字段 类型 描述
appId INTEGER 应用的 id
request body 请求体
字段 类型 描述
entityKey STRING 被包含的数据集的执行计划的entityKey,不包含这个字段,表示全部

返回对象的格式说明

字段 类型 描述
msg STRING 执行成功返回 success

接口示例1 禁用app id为1的所有单个数据集更新计划

  1. 请求 POST /api/apps/1/include-in-app-refresh
{
  "entityKey": "1-1"
}
  1. 响应结果
{
  "version": "3.5-SNAPSHOT@@git.commit.id.abbrev@#null",
  "code": 0,
  "msg": "success"
}

1.2.24. 查询应用中单个数据的执行计划列表

请求URL

GET /api/apps/{appId}/dataset-schedules

请求参数

URL 参数
字段 类型 是否必须 说明
appId INTEGER 应用的 id
includeInAppScope BOOL 可选 本dataset是否包括在app scope刷新中
q STRING 可选 搜索关键字

返回对象的格式说明

查询执行计划列表 返回数据一致,多一个字段:

字段 类型 是否必须 说明
includeInAppScope BOOL 可选 本dataset是否包括在app scope刷新中

接口示例1

  1. 请求 GET /api/apps/1/dataset-schedules

  2. 响应结果

{
  "code": 0,
  "data": [
    {
      "id": 1,
      "entityGroup": "DATASET",
      "entityKey": "1-1",
      "enabled": false,
      "planItems": [
        {
          "id": 1,
          "triggerType": "CRON_JOB",
          "cronDesc": "0 15 0 ? * 1",
          "cronType": "WEEKLY",
          "timeZone": "GMT+08:00"
        },
        {
          "id": 2,
          "triggerType": "CRON_JOB",
          "cronDesc": "*/30 * * * * ?",
          "cronType": "CRON",
          "timeZone": "GMT+08:00"
        }
      ],
      "execDetail": {
        "jobClass": "com.hengshi.nangaparbat.schedulejob.DatasetJob",
        "jobParams": {
          "app": 1,
          "dataset": 1
        },
        "retryTimes": 1
      },
      "title": "dataset1",
      "createdAt": "2020-03-05 15:01:02",
      "createdBy": 1,
      "updatedAt": "2020-03-05 15:01:02",
      "updatedBy": 1
    }
  ],
  "msg": "success",
  "version": "3.5-SNAPSHOT@@git.commit.id.abbrev@#1234567",
  "totalHits": 1,
  "offset": 0
}

1.2.25. 查询应用刷新的执行计划

请求URL

GET /api/apps/{appId}/refresh-schedule

请求参数

URL 参数
字段 类型 是否必须 说明
appId INTEGER 应用的 id

返回对象的格式说明

查询执行计划列表 返回数据一致,只有一个执行计划object

接口示例1

  1. 请求 GET /api/apps/1/refresh-schedule

  2. 响应结果

{
  "code": 0,
  "data": {
    "id": 1,
    "entityGroup": "APP_REFRESH",
    "entityKey": "1",
    "enabled": false,
    "planItems": [
      {
        "id": 1,
        "triggerType": "CRON_JOB",
        "cronDesc": "0 15 0 ? * 1",
        "cronType": "WEEKLY",
        "timeZone": "GMT+08:00"
      },
      {
        "id": 2,
        "triggerType": "CRON_JOB",
        "cronDesc": "*/30 * * * * ?",
        "cronType": "CRON",
        "timeZone": "GMT+08:00"
      }
    ],
    "execDetail": {
      "jobClass": "com.hengshi.nangaparbat.schedulejob.AppDatasetRefreshJob",
      "jobParams": {
        "app": 1
      },
      "retryTimes": 1
    },
    "title": "app1",
    "createdAt": "2020-03-05 15:01:02",
    "createdBy": 1,
    "updatedAt": "2020-03-05 15:01:02",
    "updatedBy": 1
  },
  "msg": "success",
  "version": "3.5-SNAPSHOT@@git.commit.id.abbrev@#1234567",
  "totalHits": 1,
  "offset": 0
}

1.2.26. 创建自助查询应用的用户设置

请求URL

GET /api/apps/{appId}/profiles

请求参数

URL 参数
字段 类型 是否必须 说明
appId INTEGER 应用的 id

返回对象的格式说明

查询执行计划列表 返回数据一致,只有一个执行计划object

接口示例1

  1. 请求 GET /api/apps/1/refresh-schedule

  2. 响应结果

{
  "code": 0,
  "data": {
    "id": 1,
    "entityGroup": "APP_REFRESH",
    "entityKey": "1",
    "enabled": false,
    "planItems": [
      {
        "id": 1,
        "triggerType": "CRON_JOB",
        "cronDesc": "0 15 0 ? * 1",
        "cronType": "WEEKLY",
        "timeZone": "GMT+08:00"
      },
      {
        "id": 2,
        "triggerType": "CRON_JOB",
        "cronDesc": "*/30 * * * * ?",
        "cronType": "CRON",
        "timeZone": "GMT+08:00"
      }
    ],
    "execDetail": {
      "jobClass": "com.hengshi.nangaparbat.schedulejob.AppDatasetRefreshJob",
      "jobParams": {
        "app": 1
      },
      "retryTimes": 1
    },
    "title": "app1",
    "createdAt": "2020-03-05 15:01:02",
    "createdBy": 1,
    "updatedAt": "2020-03-05 15:01:02",
    "updatedBy": 1
  },
  "msg": "success",
  "version": "3.5-SNAPSHOT@@git.commit.id.abbrev@#1234567",
  "totalHits": 1,
  "offset": 0
}

1.2.27. 复制应用

请求URL

POST /api/apps/{appId}/duplicate

请求参数

url 参数
字段 类型 描述
appId INTEGER 应用的 id
request body 请求体
字段 类型 描述
targetFolderId LONG 复制到目录的id,不包含这个字段,表示和源应用同一目录
title String 新应用名称,可不传

返回对象的格式说明

应用结构说明

接口示例1 在应用创作区创建应用副本

  1. 请求 POST /api/apps/1/duplicate

  2. 响应结果

{
  "version": "",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 43417,
    "title": "duplicate app",
    "cover": "",
    "options": {
      "dashboards": [
        1
      ],
      "datasets": [
      ],
      "dashboardsOrder": [
        1
      ],
      "enableAppRule": false,
      "enableRuleStrictValidate": false,
      "pagination": {
        "applyToDashboards": [
          1,
          1
        ]
      },
      "devices": {
        "pc": true,
        "mobile": false
      },
      "resultCacheInterval": 3600
    },
    "createdBy": 1337,
    "createdAt": "2022-12-29 15:24:18",
    "updatedBy": 1337,
    "updatedAt": "2022-12-29 15:24:18",
    "visible": true,
    "isDelete": false,
    "isPublish": false,
    "isBackup": false,
    "folderId": 0,
    "area": "PERSONAL_AREA",
    "dataMode": "APP_MODE",
    "emailOptions": {
    },
    "type": "ANALYTIC_APP",
    "datasets": [
    ],
    "publishState": false
  }
}

接口示例2 在应用集市区使用模版新建应用

  1. 请求 POST /api/apps/2/duplicate
  2. 响应结果
    和接口示例1返回数据一致

接口示例3 在应用创作区将应用复制到指定目录下

  1. 请求 POST /api/apps/3/duplicate
{
  "targetFolderId": 0,
  "title": "duplicate app"
}
  1. 响应结果
    和接口示例1返回数据一致

1.2.28. 使用模板覆盖当前应用

请求URL

POST /api/apps/{appId}/overwrite

请求参数

url 参数
字段 类型 描述
appId INTEGER 应用的 id
file BINARY 必填, 模版文件流
copy BOOLEAN 必填, 是否备份当前应用
overwriteAuth BOOLEAN 非 必填, 是否覆盖当前应用的权限配置

返回对象的格式说明

应用结构说明

接口示例1 使用模板覆盖当前应用

  1. 请求 POST /api/apps/1/overwrite?copy=false

  2. 响应结果

{
  "version": "4.5-SNAPSHOT@109a613#0145565",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 128207,
    "title": "book",
    "cover": "",
    "options": {
      "dashboards": [
        1,
        2
      ],
      "datasets": [
        2,
        1,
        3
      ],
      "dashboardsOrder": [
        1,
        2
      ],
      "appTemplateUUID": "25d659a1-f6d4-4d95-94fc-e80a018d59a3",
      "enableAppRule": false,
      "enableRuleStrictValidate": true,
      "pagination": {
        "undefined": {}
      },
      "devices": {
        "pc": true,
        "mobile": false
      },
      "resultCacheInterval": 3600
    },
    "createdBy": 8,
    "createdAt": "2023-06-24 17:44:10",
    "updatedBy": 8,
    "updatedAt": "2023-08-11 01:00:09",
    "visible": true,
    "isDelete": false,
    "isPublish": false,
    "isBackup": false,
    "folderId": 0,
    "area": "PERSONAL_AREA",
    "dataMode": "APP_MODE",
    "emailOptions": {},
    "type": "ANALYTIC_APP",
    "datasets": [
      2,
      1,
      3
    ],
    "publishState": false,
    "hideDatasets": [],
    "status": "RUNNING"
  },
  "chartDataStartTimeMillis": 0
}

1.2.29. 暂停/恢复APP

请求URL

POST /api/apps/{appId}/pending

请求参数

url 参数
字段 类型 描述
appId INTEGER 应用的 id
status STRING 必填, 要修改的应用状态,可选值:PENDING RUNNING

返回对象的格式说明

应用结构说明

接口示例1 使用模板覆盖当前应用

  1. 请求 POST /api/apps/1/pending?status=pending

  2. 响应结果

{
  "version": "4.5-SNAPSHOT@109a613#0145565",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 128207,
    "title": "book",
    "cover": "",
    "options": {
      "dashboards": [
        1,
        2
      ],
      "datasets": [
        2,
        1,
        3
      ],
      "dashboardsOrder": [
        1,
        2
      ],
      "appTemplateUUID": "25d659a1-f6d4-4d95-94fc-e80a018d59a3",
      "enableAppRule": false,
      "enableRuleStrictValidate": true,
      "pagination": {
        "undefined": {}
      },
      "devices": {
        "pc": true,
        "mobile": false
      },
      "resultCacheInterval": 3600
    },
    "createdBy": 8,
    "createdAt": "2023-06-24 17:44:10",
    "updatedBy": 8,
    "updatedAt": "2023-08-11 01:00:09",
    "visible": true,
    "isDelete": false,
    "isPublish": false,
    "isBackup": false,
    "folderId": 0,
    "area": "PERSONAL_AREA",
    "dataMode": "APP_MODE",
    "emailOptions": {},
    "type": "ANALYTIC_APP",
    "datasets": [
      2,
      1,
      3
    ],
    "publishState": false,
    "hideDatasets": [],
    "status": "PENDING"
  },
  "chartDataStartTimeMillis": 0
}

1.2.30. GET 获取指定用户创建的所有APP

GET /api/apps/created-list

获取指定用户创建的所有APP。针对SYSTEM_PORTAL、PUBLIC_AREA、DATA_MART的中的APP需要当前发起请求的用户拥有系统管理员以及数据管理员角色,当请求中显示指定了用户时则返回指定用户创建的所有应用,否则返回当前用户创建的所有应用。当指定非当前用户时, area取值只能是 SYSTEM_PORTAL | PUBLIC_AREA | DATA_MART之一。

请求参数

名称 位置 类型 必选 说明
createdBy query integer 指定用户ID
creatorEmail query integer 指定用户绑定电子邮箱
creatorMobile query integer 指定用户绑定手机号码
creatorLoginName query integer 指定用户登陆名
area query string 指定区域,可选项:SYSTEM_PORTAL、PUBLIC_AREA、DATA_MART、PERSONAL_AREA、APP_MART
orderBy query string 排序字段
orderType query string 排序方式
offset query string 分页偏移量
limit query string 分页大小

返回示例

成功

{
  "code": 0,
  "msg": "success",
  "data": [
    {
      "id": 72,
      "title": "常驻",
      "cover": "",
      "options": {
        "dashboardsOrder": [],
        "enableRuleStrictValidate": true,
        "devices": {
          "pc": true,
          "mobile": true
        }
      },
      "createdBy": 7,
      "createdAt": "2022-09-28 16:52:28",
      "updatedBy": 7,
      "updatedAt": "2022-09-28 16:52:28",
      "latestAuthorizedBy": 2,
      "latestAuthorizedAt": "2022-09-28 16:40:03",
      "visible": true,
      "isDelete": false,
      "isPublish": false,
      "isBackup": false,
      "folderId": 17,
      "area": "DATA_MART",
      "dataMode": "APP_MODE",
      "emailOptions": {},
      "type": "DATA_APP",
      "publishState": false,
      "hideDatasets": [
        2
      ],
      "status": "RUNNING",
      "creator": {
        "id": 7,
        "name": "xf1",
        "email": "xf1dgfhijoiwjgiowhoughodhgdhsg@fffqqda.com",
        "loginName": "xf1"
      },
      "updater": {
        "id": 7,
        "name": "xf1",
        "email": "xf1dgfhijoiwjgiowhoughodhgdhsg@fffqqda.com",
        "loginName": "xf1"
      },
      "refreshExecDetail": {
        "jobClass": "com.hengshi.nangaparbat.schedulejob.AppDatasetRefreshJob",
        "jobParams": {
          "app": 72
        },
        "retryTimes": 1
      },
      "refreshEntityGroup": "APP_REFRESH",
      "entityKey": "72",
      "entityGroup": "APP_EMAIL",
      "execDetail": {
        "jobClass": "com.hengshi.nangaparbat.schedulejob.AppEmailJob",
        "jobParams": {
          "app": 72
        },
        "retryTimes": 1
      }
    },
    {
      "id": 73,
      "title": "常驻1",
      "cover": "",
      "options": {
        "dashboardsOrder": [],
        "enableRuleStrictValidate": true,
        "devices": {
          "pc": true,
          "mobile": true
        }
      },
      "createdBy": 7,
      "createdAt": "2022-09-28 16:53:29",
      "updatedBy": 7,
      "updatedAt": "2022-09-28 16:54:14",
      "latestAuthorizedBy": 2,
      "latestAuthorizedAt": "2022-09-28 16:40:03",
      "visible": true,
      "isDelete": false,
      "isPublish": false,
      "isBackup": false,
      "folderId": 17,
      "area": "DATA_MART",
      "dataMode": "APP_MODE",
      "emailOptions": {},
      "type": "DATA_APP",
      "publishState": false,
      "hideDatasets": [
        2
      ],
      "status": "RUNNING",
      "creator": {
        "id": 7,
        "name": "xf1",
        "email": "xf1dgfhijoiwjgiowhoughodhgdhsg@fffqqda.com",
        "loginName": "xf1"
      },
      "updater": {
        "id": 7,
        "name": "xf1",
        "email": "xf1dgfhijoiwjgiowhoughodhgdhsg@fffqqda.com",
        "loginName": "xf1"
      },
      "refreshExecDetail": {
        "jobClass": "com.hengshi.nangaparbat.schedulejob.AppDatasetRefreshJob",
        "jobParams": {
          "app": 73
        },
        "retryTimes": 1
      },
      "refreshEntityGroup": "APP_REFRESH",
      "entityKey": "73",
      "entityGroup": "APP_EMAIL",
      "execDetail": {
        "jobClass": "com.hengshi.nangaparbat.schedulejob.AppEmailJob",
        "jobParams": {
          "app": 73
        },
        "retryTimes": 1
      }
    }
  ],
  "totalHits": 14,
  "offset": 0,
  "chartDataStartTimeMillis": 0
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

状态码 200

名称 类型 必选 约束 中文名 说明
» code integer true none none
» msg string true none none
» data [object] true none none
»» id integer true none none
»» title string true none none
»» cover string true none none
»» options object true none none
»»» dashboardsOrder [string] true none none
»»» enableRuleStrictValidate boolean true none none
»»» devices object true none none
»»»» pc boolean true none none
»»»» mobile boolean true none none
»» createdBy integer true none none
»» createdAt string true none none
»» updatedBy integer true none none
»» updatedAt string true none none
»» latestAuthorizedBy integer true none none
»» latestAuthorizedAt string true none none
»» visible boolean true none none
»» isDelete boolean true none none
»» isPublish boolean true none none
»» isBackup boolean true none none
»» folderId integer true none none
»» area string true none none
»» dataMode string true none none
»» emailOptions object true none none
»» type string true none none
»» publishState boolean true none none
»» hideDatasets [integer] true none none
»» status string true none none
»» creator object true none none
»»» id integer true none none
»»» name string true none none
»»» email string true none none
»»» loginName string true none none
»» updater object true none none
»»» id integer true none none
»»» name string true none none
»»» email string true none none
»»» loginName string true none none
»» refreshExecDetail object true none none
»»» jobClass string true none none
»»» jobParams object true none none
»»»» app integer true none none
»»» retryTimes integer true none none
»» refreshEntityGroup string true none none
»» entityKey string true none none
»» entityGroup string true none none
»» execDetail object true none none
»»» jobClass string true none none
»»» jobParams object true none none
»»»» app integer true none none
»»» retryTimes integer true none none
» totalHits integer true none none
» offset integer true none none
» chartDataStartTimeMillis integer true none none

1.3. 应用/应用版本管理

1.3.1. GET 获取应用备份版本个数

GET /api/apps/{appId}/backups/count

查询当前app应用备份版本个数。

请求参数

名称 位置 类型 必选 说明
appId path string none

返回示例

成功

{
  "version": "4.5-SNAPSHOT@9cbd562#8cac872",
  "code": 0,
  "msg": "success",
  "data": 3,
  "chartDataStartTimeMillis": 0
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

状态码 200

名称 类型 必选 约束 中文名 说明
» version string true none none
» code integer true none none
» msg string true none none
» data integer true none none
» chartDataStartTimeMillis integer true none none

1.3.2. GET 获取应用备份列表

GET /api/apps/{appId}/backups

查询当前app备份信息。

请求参数

名称 位置 类型 必选 说明
appId path string none
orderBy query string none
limit query string none
orderType query string none
offset query string none

返回示例

成功

{
  "version": "laborum",
  "code": 46,
  "msg": "mollit occaecat",
  "data": [
    {
      "id": 47,
      "appId": 36,
      "backupAppId": 85,
      "title": "基到大级",
      "createdBy": 99,
      "createdAt": "2010-05-18 09:08:54",
      "updatedBy": 64,
      "updatedAt": "1972-02-17 16:35:21",
      "isDeleted": false,
      "creator": {
        "id": 9,
        "name": "很知际快较量",
        "loginName": "及不三给于"
      },
      "updater": {
        "id": 23,
        "name": "即级风看以",
        "loginName": "把是们适我改已"
      }
    }
  ],
  "chartDataStartTimeMillis": 92027862253
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

状态码 200

名称 类型 必选 约束 中文名 说明
» version string true none none
» code integer true none none
» msg string true none none
» data [object] true none none
»» id integer true none none
»» appId integer true none 当前应用id
»» backupAppId integer true none 备份应用id
»» title string true none 备份记录标题
»» createdBy integer true none 备份记录创建者
»» createdAt string true none 备份记录创建时间
»» updatedBy integer true none 备份记录最后一次修改者
»» updatedAt string true none 备份记录最后一次修改时间
»» isDeleted boolean true none none
»» creator object true none none
»»» id integer true none none
»»» name string true none none
»»» loginName string true none none
»» updater object true none none
»»» id integer true none none
»»» name string true none none
»»» loginName string true none none
» chartDataStartTimeMillis integer true none none

1.3.3. DELETE 删除备份

DELETE /api/apps/{appId}/backups/{backupId}

删除指定的app的指定备份文件。

请求参数

名称 位置 类型 必选 说明
appId path string 应用id
backupId path string 应用备份记录id

返回示例

成功

{
  "version": "4.5-SNAPSHOT@9cbd562#8cac872",
  "code": 0,
  "msg": "success",
  "chartDataStartTimeMillis": 0
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

1.3.4. PUT 更新备份记录信息

PUT /api/apps/{appId}/backups/{backupId}

更新指定app的指定备份记录信息。更新的是备份记录信息,并不是副本本身。

Body 请求参数

{
  "title": "1号备份"
}

请求参数

名称 位置 类型 必选 说明
appId path string 应用id
backupId path string 应用备份记录id
body body object none
» title body string none

返回示例

成功

{
  "version": "4.5-SNAPSHOT@9cbd562#8cac872",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 1958,
    "appId": 112326,
    "backupAppId": 129217,
    "title": "1号备份",
    "backupConfig": {
      "planDtos": []
    },
    "createdBy": 26889,
    "createdAt": "2023-08-11 11:50:26",
    "updatedBy": 26889,
    "updatedAt": "2023-08-11 12:17:31",
    "isDeleted": false
  },
  "chartDataStartTimeMillis": 0
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

1.3.5. GET 重置

GET /api/apps/{appId}/backups/{backupId}/restore

将指定app重置到指定的备份版本。

应用版本仅保留数据分析相关的所有内容:仪表盘、数据集、数据模型、参数、翻页器等,涉及到连接、权限相关的设置则无法保留。 应用发布时自动保留版本,仅保留最近的若干版本。更早的版本将被自动删除。

请求参数

名称 位置 类型 必选 说明
appId path string none
backupId path string none

返回示例

200 Response

{}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

1.4. 应用/导入导出

1.4.1. GET 导出应用模板

GET /api/apps/{appId}/export-template

请求参数

名称 位置 类型 必选 说明
appId path string none
exportAuth query string 要导出的模版版本,若要将模版导入3.6或3.6之前的系统,则需要传3.6
tplVersion query string 是否要导出应用的授权 & 权限模式 & 行权限信息,个人区需应用作者才能导出,公共区需应用管理员才能导出

返回示例

200 Response

{}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

1.4.2. POST 校验应用模板

POST /api/apps/import-template-validate

在导入模板之前应先调用该API对要进行导入的模板文件进行校验。

请求参数

名称 位置 类型 必选 说明
area query string 目标区域

返回示例

200 Response

{}

模板中存在错误

{
  "version": "4.5-SNAPSHOT@9cbd562#dd4a12a",
  "code": 10273,
  "msg": "模板中不含权限规则和授权信息,\"数据权限\"部分的设定将按模板配置",
  "error": "error/app-template-not-contains-auth-info",
  "errorMap": {},
  "debug": "error/app-template-not-contains-auth-info",
  "chartDataStartTimeMillis": 0
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline
400 Bad Request 模板中存在错误 Inline

返回数据结构

1.4.3. POST 导入模板

POST /api/apps/import-template

根据导入的模板文件创建app。

Body 请求参数

file: string

请求参数

名称 位置 类型 必选 说明
folderId query string 可选, 文件夹id,如果为空,就导入个人区
importAuth query string 是否导入应用授权 & 权限模式 & 行权限信息
body body object none
» file body string(binary) 模板文件

返回示例

200 Response

{}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

1.4.4. POST 使用模板替换应用

POST /api/apps/{appId}/overwrite

使用提供的模板替换指定应用。

Body 请求参数

file: string

请求参数

名称 位置 类型 必选 说明
appId path string none
copy query string 是否同时创建副本
overwriteAuth query string 是否覆盖权限配置信息
body body object none
» file body string(binary) 模板文件

返回示例

200 Response

{}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

1.5. 应用/批量操作

1.5.1. 批量操作有以下几种类型:

  • 普通操作
    1. move
    2. delete
    3. update
    4. visible
  • 文件导出操作
    1. export-template

所有类型在批量操作预检查API中均可用,在具体执行批量操作的接口中会有区分。

普通操作只能在'批量操作'API中使用。 文件导出操作只能在'批量导出操作'API中使用。

各操作支持执行对象

每一种操作并不一定对所有的对象就支持,特定的对象只支持特定的操作。

下面列出每一种对象支持的操作:

/ folder app dataset chart dashboard field metric app param
move y y / / / / / / /
delete y y / / / y y y
update / / / / / y y /
visible / / / / / y / /
export-template / y / / / / / /

1.5.2. POST 批量操作预检查

POST /api/batch/check/{batch-operation}

执行批量操作之前,调用该API对该操作进行合法性校验。

Body 请求参数

{
  "items": [
    {
      "objectType": "app",
      "idSet": [
        112326,
        129220
      ]
    }
  ],
  "args": {
    "tplVersion": "4.5",
    "exportAuth": true
  }
}

请求参数

名称 位置 类型 必选 说明
batch-operation path string 批量操作类型
body body object none
» items body [object] 批量操作对象列表
»» objectType body string 批量操作对象类型
»» idSet body [string] 批量操作对象唯一标识集合
» args body object 批量操作额外变量
»» tplVersion body string none
»» exportAuth body boolean none

返回示例

200 Response

{}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

1.5.3. GET 批量导出操作

GET /api/batch/export/{export-operation}

Body 请求参数

{
  "items": [
    {
      "objectType": "app",
      "idSet": [
        112326,
        129220
      ]
    }
  ],
  "args": {
    "tplVersion": "4.5",
    "exportAuth": true
  }
}

请求参数

名称 位置 类型 必选 说明
export-operation path string 批量导出操作
body body object none
» items body [object] none
»» objectType body string none
»» idSet body [string] none
» args body object none
»» tplVersion body string none
»» exportAuth body boolean none

返回示例

200 Response

{}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

1.5.4. POST 批量操作

POST /api/batch/operation/{batch-operation}

执行批量操作

Body 请求参数

{
  "items": [
    {
      "objectType": "app",
      "idSet": [
        129052
      ]
    }
  ],
  "args": {
    "targetId": 3270,
    "keepAuth": false
  }
}

请求参数

名称 位置 类型 必选 说明
batch-operation path string 批量操作类型
body body object none
» items body [object] none
»» objectType body string none
»» idSet body [string] none
» args body object none
»» targetId body integer none
»» keepAuth body boolean none

返回示例

成功

{
  "code": 0,
  "msg": "success",
  "data": {
    "items": [
      {
        "objectType": "app",
        "successIdSet": [
          129052
        ]
      }
    ]
  },
  "chartDataStartTimeMillis": 0
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

状态码 200

名称 类型 必选 约束 中文名 说明
» code integer true none none
» msg string true none none
» data object true none none
»» items [object] true none none
»»» objectType string false none none
»»» successIdSet [integer] false none none
» chartDataStartTimeMillis integer true none none

results matching ""

    No results matching ""

    Introduction 应用参数