This document introduces the "Open API for project datasets", which mainly includes the project dataset tag and folder API, project dataset API, and project cluster configuration API. You will learn that users can use the API to retrieve, create, and update dataset information and folder information under a project, as well as retrieve, add, and delete users in the private cluster write user list.
Caution: Before using the APIs described in this document, you must complete the prerequisites of integrating JWT-Token and applying for a Token. Please first review the invocation method. For details, see Invocation Method.
Permission requirements
Resource | Permission |
|---|---|
Project | read |
API description: Retrieve information about dataset tags already created under a project.
{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetTagcurl --location --request GET '{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetTag' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{jwtToken}}'
Parameter | Type | Required | Description | Example value |
|---|---|---|---|---|
appId | integer | Yes | Project ID | 123 |
Parameter | Type | Description |
|---|---|---|
appId | integer | Project ID |
colour | string | Dataset label color |
ctime | string | Dataset label creation time |
dataSetInfos | object | Dataset label application status in the dataset |
dataSetInfos.id | integer | Dataset ID |
dataSetInfos.name | string | Dataset name |
id | integer | Dataset label ID |
mtime | string | Dataset label modification time |
name | string | Dataset label name |
reportEnable | integer | Whether the chart title inherits this label |
status | integer | Dataset label status |
{ "code": "aeolus/ok", "data": [ { "appId": 7******, "colour": "purple", "ctime": "2022-12-13 16:48", "dataSetInfos": [ { "id": 19****, "name": "v4专用测试数据集" }, { "id": {{dataSetId}}, "name": "测试open-api专用数据集1" } ], "id": 153, "mtime": "2022-12-13 16:48", "name": "test用", "reportEnable": 0, "status": 0 } ], "msg": "成功" }
Permission requirements
Resource | Permission |
|---|---|
Project | admin |
API description: Create a dataset tag under a project.
{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetTagcurl --location --request POST '{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetTag' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{jwtToken}}' \ --data-raw '{ "name": "test用", "colour": "purple", "reportEnable": 0 }'
Parameter | Type | Required | Example value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
name | string | Yes | For test | Dataset label name |
colour | string | Yes | blue | Dataset label color |
reportEnable | integer | No | Whether the chart inherits this dataset label |
$.data.id is the ID of the newly created dataset tag{ "code": "aeolus/ok", "data": { "id": 154 }, "msg": "成功" }
Permission requirements
Resource | Permission |
|---|
{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetTag/{{tagId}}curl --location --request PUT '{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetTag/{{tagId}}' \ --header 'Content-Type: application/json' \ --header 'app-id: 77*****' \ --header 'Authorization: Bearer {{jwtToken}}' \ --data-raw '{ "colour": "purple", "name": "12", "reportEnable": 0 }'
Parameter | Type | Required | Example value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
tagId | integer | Yes | 123 | Dataset label ID |
name | string | Yes | For test | Dataset label name |
colour | string | Yes | blue | Dataset label color |
reportEnable | integer | No | 0 | Whether the chart inherits this dataset label |
{ "code": "aeolus/ok", "data": null, "msg": "成功" }
Permission requirements
Resource | Permission |
|---|---|
Project | admin |
API description: Delete dataset tag information under a project.
{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetTag/{{tagId}}curl --location --request DELETE '{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetTag/{{tagId}}' \ --header 'Content-Type: application/json' \ --header 'app-id: 7777947' \ --header 'Authorization: Bearer {{jwtToken}}'
Name | Type | Required | Example value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
tagId | integer | Yes | 123 | Dataset tag ID |
{ "code": "aeolus/ok", "data": null, "msg": "成功" }
Permission requirements
Resource | Permission |
|---|---|
Project | read |
API description: Delete dataset tag information under a project.
{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetFoldercurl --location --request GET '{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetFolder' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{jwtToken}}'
Parameter | Type | Required | Example value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
Parameter | Type | Description |
|---|---|---|
appId | integer | Project ID |
ctime | string | Dataset folder creation time |
deleteTime | string | Dataset folder deletion time |
descr | string | Dataset folder description |
id | integer | Dataset folder ID |
mtime | string | Dataset folder modification time |
name | string | Dataset folder name |
ownerEmailPrefix | string | Dataset folder owner |
parentId | integer | Parent folder of the dataset folder. If 0, it means there is no parent folder and the folder is in the root directory. |
status | integer | Dataset folder status |
childList | list | Dataset folder subfolder list |
{ "code": "aeolus/ok", "data": [ { "appId": *******, "ctime": "2022-04-02 11:52", "deleteTime": null, "descr": "", "id": 2320, "mtime": "2022-04-02 11:52", "name": "test1", "ownerEmailPrefix": "userEmailPrefix", "parentId": 0, "status": 0 }, { "appId": *******, "childList": [ { "appId": *******, "childList": [ { "appId": *******, "childList": [ { "appId":*******, "ctime": "2022-12-14 12:14", "deleteTime": null, "descr": "", "id": 3075, "mtime": "2022-12-14 12:14", "name": "子文件夹-层级3", "ownerEmailPrefix": "userEmailPrefix", "parentId": 2706, "status": 0 } ], "ctime": "2022-09-29 16:30", "deleteTime": null, "descr": "", "id": 2706, "mtime": "2022-12-14 12:13", "name": "子文件夹-层级2", "ownerEmailPrefix": "userEmailPrefix", "parentId": 2704, "status": 0 } ], "ctime": "2022-09-29 16:29", "deleteTime": null, "descr": "111", "id": 2704, "mtime": "2022-12-14 12:13", "name": "子文件夹-层级1", "ownerEmailPrefix": "userEmailPrefix", "parentId": 2321, "status": 0 } ], "ctime": "2022-04-02 11:53", "deleteTime": null, "descr": "", "id": 2321, "mtime": "2022-05-04 11:24", "name": "模板数据集", "ownerEmailPrefix": "userEmailPrefix", "parentId": 0, "status": 0 }, { "appId": *******, "ctime": "2022-12-14 12:14", "deleteTime": null, "descr": "", "id": 3076, "mtime": "2022-12-14 12:14", "name": "测试文件夹1", "ownerEmailPrefix": "userEmailPrefix", "parentId": 0, "status": 0 } ], "msg": "成功" }
Permission requirements
Resource | Permission |
|---|---|
Parent folder | write |
Project (when parentId=0) | write |
To create a folder in the root directory, project write permission is required.
API description: Create a folder in the root directory or under a specific folder.
{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetFoldercurl --location --request POST '{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetFolder' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{jwtToken}}' \ --data-raw '{ "name": "子文件夹1111", "descr": "666", "confidentiality": "L3", "isPersonalDataRelated": true, "dataRegion": [ "CN", "US" ], "parentId": 0 }'
Parameter | Type | Required | Example value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
name | string | Yes | Subfolder 1 | Folder name |
descr | string | No | 666 | If not provided, this field will be empty. |
parentId | integer | Yes | 0 | Parent folder ID. If parentId is 0, the folder will be created in the root directory. |
confidentiality | string | No | L3 | Dataset folder confidentiality level (non-TOB environment) |
folderId is the ID of the new folder.{ "code": "aeolus/ok", "data": { "folderId": 3079 }, "msg": "成功" }
Permission requirements
Resource | Permission |
|---|---|
Dataset folder | write |
API description and notes
{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetFolder/{{dataSetFolderId}}curl --location --request PUT '{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetFolder/{{dataSetFolderId}}' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{jwtToken}}' \ --data-raw '{ "name": "测试文件夹1", "descr": "111", "isPersonalDataRelated": true, "dataRegion": [ "CN", "US" ], "confidentiality": "L2" }'
Parameter | Type | Required | Example value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
dataSetFolderId | integer | Yes | 3079 | Dataset folder ID |
name | string | Yes | Test folder 1 | Dataset folder name |
descr | string | No | 111 | Dataset folder description |
folderId indicates that the folder information was updated successfully.{ "code": "aeolus/ok", "data": { "folderId": 3079 }, "msg": "成功" }
Permission requirements
Resource | Permission |
|---|---|
Dataset folder | read |
API description and notes: Retrieve the list of information for all current datasets in the project.
{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetListcurl --location --request GET '{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetList?needSyncInfo=0&needUpstreamInfo=0&dataSetIdList=186583,186600' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{jwtToken}}'
Parameter | Type | Required | Example value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
needSyncInfo | integer | No | 0,1 | Whether to include dataset synchronization information in the dataset information |
needUpstreamInfo | integer | No | 0,1 | Whether to include upstream data source information in the dataset information |
dataSetIdList | list | No | 186583,186600 | Dataset ID list. If not provided, all datasets in the project are queried by default; otherwise, only the dataset information specified by this parameter is returned. Multiple dataset IDs are separated by commas. |
Parameter | Type | Description |
|---|---|---|
ctime | integer | Dataset creation date |
elapsedTimeForLastSuccessTaskTime | integer | Duration of the most recent successful synchronization task |
frequency | string | Dataset synchronization task frequency |
id | integer | Dataset ID |
lastSuccessTaskTime | string | Business date of the most recent successful synchronization |
lastSyncTime | string | Most recent synchronization time |
mtime | string | Most recent dataset modification time |
name | string | Dataset name |
owner | string | Dataset owner |
rowsForLastSuccessTaskTime | integer | Number of data rows in the most recent successful synchronization task |
scheduleDay | string | Dataset automatic synchronization with day-level scheduling |
scheduleTime | string | Dataset automatic synchronization with hour-level scheduling |
status | integer | Dataset status |
syncType | integer | Dataset synchronization type |
ttl | integer | Dataset data lifecycle |
type.name | string | Dataset type name |
upstreamInfo.dbName | string | DBName of the upstream data source used by the dataset |
upstreamInfo.tableName | string | tableName of the upstream data source used by the dataset |
url | string | Dataset details page URL |
{ "code": "aeolus/ok", "data": [ { "ctime": "2022-12-14 12:17:54", "elapsedTimeForLastSuccessTaskTime": 501, "frequency": "daily", "hivePartitionSpecified": false, "hiveTableUsed": false, "hsqlList": [], "hsqlUsed": false, "id": {{dataSetId}}, "lastSuccessTaskTime": "2022-12-14 00:00:00", "lastSyncTime": "2022-12-15 18:19:19", "mtime": "2022-12-15 19:37:31", "name": "测试open-api专用数据集1", "owner": "userEmailPrefix", "rowsForLastSuccessTaskTime": 56, "scheduleDay": "0", "scheduleTime": "00:00", "status": 0, "syncType": 2, "ttl": 8, "type": { "code": 22, "name": "prep 数据集" }, "upstreamInfo": [ { "dbName": "aeolus_excel_upload_aeolus_toy", "tableName": "table_4f0cc551_9dfa_4915_a38f_737c716591a8" } ], "url": "https://aeolus-release.fedev.bytedanc*.net/aeolus#/dataManage/detail/{{dataSetId}}?appId=7777947" } ], "msg": "成功" }
Minimum supported version 2.58.1.
Permission requirements
Resource | Permission |
|---|---|
Dataset | read |
API description and notes: Retrieve the list of information for all current datasets in the project.
{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetSimpleListcurl --location --request GET '{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSetSimpleList?page=1&perPage=2&kw=测试' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{jwtToken}}'
Parameter | Type | Required | Sample value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
kw | string | No | Test | Dataset name (supports fuzzy matching) |
page | integer | No | 1 | Pagination - page number |
perPage | integer | No | 2 | Pagination - items per page |
Parameter | Type | Description |
|---|---|---|
appId | integer | Project ID |
belong | integer | Public dataset or personal dataset |
ctime | string | Dataset creation time |
mtime | string | Dataset last modified time |
name | string | Dataset name |
ownerEmailPrefix | string | Dataset owner |
status | integer | Dataset status |
type | integer | Dataset type |
totalSize | integer | Total number of datasets the user has permission to view (used with pagination) |
{ "code": "aeolus/ok", "data": { "dataSetList": [ { "appId": 1, "belong": 1, "ctime": "2023-10-16 19:51", "id": 1, "mtime": "2023-10-16 19:51", "name": "data_set_name", "ownerEmailPrefix": "user", "status": 0, "type": 22 } ], "totalSize": 1 }, "msg": "成功" }
First supported version 2.51.
Permission requirements
Resource | Permission |
|---|---|
Project | read |
API description and notes: By specifying dataSourceType (data source type), dbName (database name of the data source, not applicable for some data sources), and tableName (table name of the data source), you can query the basic information of all datasets that use this data source as their upstream.
Note: The current query scope does not include datasets of custom SQL type.
{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSourceLineagecurl --location --request POST '{{domain}}/aeolus/api/v4/open/app/{{appId}}/dataSourceLineage' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{jwtToken}}' --data '{ "dataSourceType": "click_house", "dbName": "aeolus_excel_upload_aeolus_toy", "tableName": "table_35b15b69_2ea5_****_****_*********", "authOnly": false }'
Request parameters
Parameter | Type | Required | Sample value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
dataSourceType | string | Yes | hive | Data source type |
dbName | string | No | aeolus_excel_upload_aeolus_toy | Data source - database name |
tableName | string | No | table_35b15b69_2ea5___********* | Data source - table name |
authOnly | boolean | No | false | Whether to return only the dataset information for the current user (with read-only or higher permission). Default value is false. |
Response description: For the response fields under dataSetList, see the detailed description.
[API - View basic dataset information]
Parameter | Type | Description |
|---|---|---|
dataSetList | list | Result content |
dataSourceType | string | dataSourceType used for the query |
dbName | string | dbName used for the query |
tableName | string | tableName used for the query |
listSize | integer | Number of dataset records found |
{ "code": "aeolus/ok", "data": { "dataSetList": [ { "appId": "*******", "appName": "hsm", "demoUrl": "", "descr": null, "detailUrl": "https://aeolus-integration.bytedanc*.net/aeolus#/dataManage/detail/193016?appId=7778352", "folderName": [ "根目录" ], "id": ******, "name": "good_hive_data_set", "ownerEmailPrefix": "husimin.xcl", "status": 0, "type": 2 }, { "appId": "*******", "appName": "hsm", "demoUrl": "", "descr": null, "detailUrl": "https://aeolus-integration.bytedanc*.net/aeolus#/dataManage/detail/196003?appId=7778352", "folderName": [ "原始内容保留", "根目录" ], "id": 196003, "name": "测试tableSchema权限", "ownerEmailPrefix": "husimin.xcl", "status": 0, "type": 2 } ], "dataSourceType": "hive", "dbName": null, "listSize": 2, "tableName": "hsm_own_metrics" }, "msg": "成功" }
{{domain}}/aeolus/api/v4/open/app/{{appId}}/clusterWriteUserListcurl --location --request GET '{{domain}}/aeolus/api/v4/open/app/{{appId}}/clusterWriteUserList?clusterId=1' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{jwtToken}}'
Parameter | Type | Required | Sample value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
clusterId | integer | Yes | 1 | Cluster ID |
Parameter | Type | Description |
|---|---|---|
userList | array | List of users with access |
{ "code": "aeolus/ok", "data": [ "luowenlei", "chenweichen.six" ], "msg": "成功" }
Request URL: {{domain}}/aeolus/api/v4/open/app/{{appId}}/clusterWriteUserList
curl --location --request POST '{{domain}}/aeolus/api/v4/open/app/{{appId}}/clusterWriteUserList' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{jwtToken}}'\ --data-raw '{ "userList": ["******.****"], "clusterId": 1 }'
Parameter | Type | Required | Sample value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
userList | list | Yes | ["**."] | Usernames to add (operation is idempotent; existing users will not be added again). |
clusterId | integer | Yes | 1 | Cluster ID |
$.data.id is the cluster ID.{ "code": "aeolus/ok", "data": { "id": 1 }, "msg": "成功" }
{{domain}}/aeolus/api/v4/open/app/{{appId}}/clusterWriteUserListcurl --location --request DELETE '{{domain}}/aeolus/api/v4/open/app/{{appId}}/clusterWriteUserList' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{jwtToken}}'\ --data-raw '{ "userList": ["*******.****"], "clusterId": 1 }'
Parameter | Type | Required | Sample value | Description |
|---|---|---|---|---|
appId | integer | Yes | 123 | Project ID |
userList | list | Yes | ["**."] | Usernames to remove (operation is idempotent; if the user does not have permission, the API does not return an error). |
clusterId | integer | Yes | 1 | Cluster ID |
$.data.id is the cluster ID.{ "code": "aeolus/ok", "data": { "id": 1 }, "msg": "成功" }