Restful Interfaces
REST API reference for authentication, folders, dashboards, data sources, and datasets. Use the token from the auth call to sign every subsequent request.
Restful Interfaces
Authentication API
Login authentication. All subsequent Restful APIs requiring security authentication must use the token returned after successful authentication.
POST /auth
| Parameter | Type | Description | Required | Since |
|---|---|---|---|---|
| username | String | Username | true | |
| password | String | Password | true |
Success
{
"token": "VhzJp0k6",
"user": {
"password": "ee11cbb19052e40b07aac0ca060c23ee",
"username": "user",
"authorities": [],
"accountNonExpired": true,
"accountNonLocked": true,
"credentialsNonExpired": true,
"enabled": true,
"userId": "244e8c1c-ec29-44de-ab37-f32f78825514",
"company": "Company",
"department": "R&D",
"name": "Alias",
"title": "Frontend"
},
"msg": null,
"valid": true
}Failure
{
"token": null,
"user": null,
"msg": null,
"valid": false
}Important Notice
Starting from v1.4.3, JWT authentication is adopted. The token is longer and can be placed in the header. Tokens in URLs are also supported for compatibility.
axios.create({
headers: {
token: "244e8c1c-ec29-44de-ab37-f32f78825514"
}
})Resource Lists
Get Folder List
- Get all folders and the current user's access attributes for each folder.
GET /folder/getFolderList
| Parameter | Type | Required | Description | Since |
|---|---|---|---|---|
| userId | String | false | If not provided, retrieves the resource list of the currently logged-in user. Otherwise, retrieves the specified user's resource list. | 1.2.2 |
- Get all folder lists.
GET /folder/getAllFolderList
| Parameter | Type | Required | Description | Since |
|---|---|---|---|---|
| userId | String | false | If not provided, retrieves the resource list of the currently logged-in user. Otherwise, retrieves the specified user's resource list. | 1.2.2 |
[
{
"id": 10000,
"name": "Root",
"parentId": -1,
"isPrivate": 0,
"userId": "1",
"userName": "Super Administrator",
"loginName": "peter",
"createTime": "2018-07-04 10:22:59.0",
"updateTime": "2018-07-04 10:22:59.0"
},
...
]Get Dashboard List API
- Get the list of dashboards the current user has permission to access.
GET /board/getBoardList
| Parameter | Type | Required | Description | Since |
|---|---|---|---|---|
| userId | String | false | If not provided, retrieves the resource list of the currently logged-in user. Otherwise, retrieves the specified user's resource list. | 1.2.2 |
- Get all dashboard lists.
GET /board/getAllBoardList
| Parameter | Type | Description | Required | Since |
|---|---|---|---|---|
| None |
{
"resList": [
{
"folderId": 10036,
"folderPath": "Root\\foodmart\\Dashboards",
"id": 91,
"userId": "1",
"folderName": "Dashboards",
"folderIsPrivate": 0,
"name": "Foodmart Comprehensive Analysis Dashboard",
"userName": "Super Administrator",
"loginName": "peter",
"createTime": "2019-09-27 11:48:36.0",
"updateTime": "2020-02-19 11:59:46.0",
"layoutType": "freelayout",
"layout": null,
"edit": false,
"delete": false
},
....
],
"folderList": [
{
"id": 10000,
"name": "Root",
"parentId": -1,
"isPrivate": 0,
"userId": "1",
"userName": "Super Administrator",
"loginName": "peter",
"createTime": "2018-07-04 10:22:59.0",
"updateTime": "2018-07-04 10:22:59.0",
"edit": false,
"delete": false
},
....
]
}Get Data Source List API
- Get the list of data sources the current user has permission to access.
GET /datasource/getDatasourceList
- Get all data source lists.
GET /datasource/getAllDatasourceList
| Parameter | Type | Description | Required | Since |
|---|---|---|---|---|
| None |
[
{
"id": 1,
"userId": "1",
"name": "foodmart",
"type": "jdbc",
"config": null,
"edit": false,
"delete": false,
"userName": "Super Administrator",
"loginName": "peter",
"createTime": "2018-07-04 10:27:06.0",
"updateTime": "2020-03-03 22:23:29.0"
},
....
]Get Dataset List API
- Get the list of datasets the current user has permission to access.
GET/POST /dataset/getDatasetList
| Parameter | Type | Required | Description | Since |
|---|---|---|---|---|
| userId | String | false | If not provided, retrieves the resource list of the currently logged-in user. Otherwise, retrieves the specified user's resource list. | 1.2.2 |
- Get all dataset lists.
GET/POST /dataset/getAllDatasetList
| Parameter | Type | Description | Required | Since |
|---|---|---|---|---|
| None |
{
"resList": [
{
"folderId": 10030,
"folderPath": "Root\\ES",
"id": 41,
"userId": "1",
"name": "es-bank",
"categoryName": "Default Category",
"userName": "Super Administrator",
"loginName": "peter",
"createTime": "2018-09-21 16:47:07.0",
"updateTime": "2020-02-20 18:13:48.0",
"data": null,
"edit": false,
"delete": false
},
....
],
"folderList": [
{
"id": 10000,
"name": "Root",
"parentId": -1,
"isPrivate": 0,
"userId": "1",
"userName": "Super Administrator",
"loginName": "peter",
"createTime": "2018-07-04 10:22:59.0",
"updateTime": "2018-07-04 10:22:59.0",
"edit": false,
"delete": false
},
....
]
}Get Chart List API
- Get the list of charts the user has permission to access.
GET /widget/getWidgetList
| Parameter | Type | Required | Description | Since |
|---|---|---|---|---|
| userId | String | false | If not provided, retrieves the resource list of the currently logged-in user. Otherwise, retrieves the specified user's resource list. | 1.2.2 |
- Get all independently saved chart lists.
GET /widget/getAllWidgetList
{
"resList": [
{
"folderId": 10004,
"folderPath": "Root\\foodmart\\Charts\\Cross Tables",
"id": 9,
"userId": "1",
"name": "2.3-Row Percentage-Expense Ratio",
"categoryName": null,
"userName": "Super Administrator",
"loginName": "peter",
"createTime": "2018-07-04 11:42:01.0",
"updateTime": "2020-03-07 14:51:19.0",
"dataset": null,
"data": null,
"edit": false,
"delete": false
},
...
],
"folderList": [
{
"id": 10042,
"name": "ddd",
"parentId": 10032,
"isPrivate": 0,
"userId": "1",
"userName": "Super Administrator",
"loginName": "peter",
"createTime": "2018-12-06 12:08:19.0",
"updateTime": "2018-12-06 12:08:41.0",
"edit": false,
"delete": false
},
...
]
}Dashboards
Export Dashboard as Image
GET /export/exportCockpit
| Parameter | Type | Required | Description | Since |
|---|---|---|---|---|
| boardId | long | true | Dashboard ID | 1.6.0 |
| timeout | int | false | Screenshot wait time, in seconds, default 15s | 1.6.0 |
| scale | float | false | Image resolution, default 1 | 1.6.0 |
| type | String | true | png/jpeg/pdf, export type, default png | 1.6.0 |
@RequestMapping(value = "/exportCockpit")
public ResponseEntity<byte[]> exportCockpit(
@RequestParam Long boardId,
@RequestParam(defaultValue = "15") Integer timeout, // Screenshot wait time in seconds
@RequestParam(defaultValue = "1") float scale, // Image resolution
@RequestParam(defaultValue = "png") String type // png/jpeg/pdf
)Authorization
Modules
| Code | Module | Description |
|---|---|---|
| menu | Function Menu Module | |
| datasource | Data Source Module | |
| dataset | Dataset Module | |
| widget | Chart Module | |
| board | Dashboard Module | |
| job | Scheduled Task Module |
Function Menu Module Introduction
Function menus are currently hard-coded.
{resId: 1, pid:-1, name: "Configuration", }
{resId: 2, pid:1, name: "Data Source Management", }
{resId: 3, pid:1, name: "Dataset Management", }
{resId: 4, pid:-1, name: "Self-Service Analysis", }
{resId: 41, pid:-1, name: "Complex Reports", }
{resId: 5, pid:-1, name: "Dashboard", }
{resId: 51, pid:5, name: "Dashboard Management", }
{resId: 52, pid:5, name: "Grid Layout", }
{resId: 53, pid:5, name: "Cockpit Layout", }
{resId: 7, pid:-1, name: "Administration", }
{resId: 71, pid:7, name: "Permission Templates", }
{resId: 8, pid:7, name: "User Management", }
{resId: 81, pid:8, name: "User Resource Management", }
{resId: 9, pid:1, name: "Scheduled Tasks", }
{resId: 91, pid:1, name: "Email Sending", }
{resId: 10, pid:-1, name: "Resource Sharing", }Permission/Resource Object Structure: Res
| Property | Type | Required | Description |
|---|---|---|---|
| resType | String | true | Resource module. Values: menu, datasource, dataset, widget, board, job |
| resId | long | true | Resource ID within the module |
| edit | boolean | false | Whether edit permission is granted |
| delete | boolean | false | Whether delete permission is granted |
User Permissions
- Full Update of User Permissions
POST /admin/updateUserRes
- Incremental Grant of User Permissions
POST /admin/grantUserRes
- Incremental Revocation of User Permissions
POST /admin/revokeUserRes
| Parameter | Type | Description | Required | Since |
|---|---|---|---|---|
| userIdArr | JSON String | Array of user IDs. Supports updating permissions for multiple users at once. | true | 1.2.0 |
| resIdArr | JSON String | Array of Res[], permission/resource list array | true |
_this.updateUserRes = function (userIds, resIds) {
return _axios.post('admin/updateUserRes', {
userIdArr: JSON.stringify(userIds),
resIdArr: JSON.stringify(resIds),
});
};- userIdArr
["uid1", "uid2"]- resIds
[
{
"resId": 1,
"resType": "menu",
"edit": false
},
{
"resId": 1,
"resType": "datasource",
"edit": false
},
{
"resId": 7,
"resType": "widget",
"edit": false
},
{
"resId": 1,
"resType": "dataset",
"edit": false
},
{
"resId": 6745078,
"resType": "folder",
"edit": false
}
]ServiceStatus
| Property | Value | Description |
|---|---|---|
| status | 1, 2 | 1: success, 2: failure |
| msg | String | Related message (success or error message) |
| obj | Object | Original number, indicating the number of records affected |
| id |
- Update Success
{
"status": "1",
"msg": "success",
"obj": 4,
"id": null
}- Update Failure
{
"status": "2",
"msg": "No Module Permission!",
"obj": null,
"id": null
}Query User Authorization
- Query all user authorization lists.
GET /admin/getAllUserResList
| Parameter | Type | Description | Required | Since |
|---|---|---|---|---|
| None |
- Query specified user authorization list.
GET/POST /admin/getUserResListByUserId
| Parameter | Type | Description | Required | Since |
|---|---|---|---|---|
| userId | String | User ID | true |
[
{
"userResId": "034f6429-cff6-4274-b5ff-2f9df9f8e1c4",
"userId": "244e8c1c-ec29-44de-ab37-f32f78825514",
"resId": 10042,
"resType": "folder",
"edit": false,
"delete": false,
"createTime": null
},
{
"userResId": "123ee3dc-44f8-4c58-8f68-c56c78a239a4",
"userId": "244e8c1c-ec29-44de-ab37-f32f78825514",
"resId": 47,
"resType": "widget",
"edit": false,
"delete": false,
"createTime": null
},
...
]Grant User Roles
- Incremental Grant of User Roles
POST /admin/grantRoles
- Incremental Deletion of User Roles
POST /admin/deleteUserRole
| Parameter | Type | Description | Required | Since |
|---|---|---|---|---|
| userIdArr | JSON String | JSON.stringify(Array of User IDs) e.g., ["BoNSmgq5"] | true | |
| roleIdArr | JSON String | JSON.stringify(Array of Role IDs) | true |
- Request
userIdArr: '["BoNSmgq5"]'
roleIdArr: '["kZKs0eAB","mW7MgbRi"]'- Response
ServiceStatus
{
"status": "1",
"msg": "success",
"obj": 4,
"id": null
}Role Query
- Query the role list where the current user is an administrator.
GET /admin/getRoleList
- Query all role lists.
GET /admin/getRoleListAll
- Request
| Parameter | Type | Description | Required | Since |
|---|---|---|---|---|
| None |
- Response
[
{
"roleId": "9yp5FYGV",
"roleName": "Foodmart Country Access Rule",
"userId": "admin"
},
{
"roleId": "afff8e98-c223-4b71-8a44-946b9eeb9585",
"roleName": "Experience Account",
"userId": "1"
},
...
]Query User Roles
- Query roles assigned to a user.
GET /admin/getUserRoleList
- Request
| Parameter | Type | Description | Required | Since |
|---|---|---|---|---|
| userId | String | User ID. If not provided, retrieves roles for all users. | false |
- Response
[
{
"userRoleId": 5297009885287913052,
"userId": "cf592eb2-91fd-4319-925e-141d5a1b58b3",
"roleId": "afff8e98-c223-4b71-8a44-946b9eeb9585"
},
{
"userRoleId": 2139519606675883725,
"userId": "cf592eb2-91fd-4319-925e-141d5a1b58b3",
"roleId": "o7OfQhTB"
}
.....
]Role Permissions
(Section content not provided in original)
User Management
User Object Structure
| Property | Type | Required | Description |
|---|---|---|---|
| userId | String | true | ID, primary key |
| loginName | String | true | Login name |
| userName | String | true | Nickname |
| userPassword | String | true | Password |
| company | String | false | Company |
| department | String | false | Department |
| title | String | false | Job title |
| validDate | timestamp | false | Expiry date |
| enabled | boolean | false | Whether the account is enabled |
Add User
POST /admin/saveNewUser
- Request
| Parameter | Type | Description | Required | Default | Since |
|---|---|---|---|---|---|
| user | JSON String | User object | true | ||
| md5Pwd | boolean | Whether password is encrypted | false | false |
{
"loginName": "biuser",
"userName": "Analyst",
"userPassword": "xxxx",
"company": "Company Name",
"department": "BI",
"title": "Analyst",
"validDate": 4073990400000,
"enabled": true
}- Response
Success
{
"status": "1",
"msg": "success",
"obj": {
"userId": "Sl4LqKFe",
"loginName": "api-new",
"userName": "New API",
"userPassword": "f561aaf6ef0bf14d4208bb46a4ccb3ad",
"userStatus": null,
"company": "Company Name",
"department": "BI",
"title": "Analyst",
"validDate": 4073990400000,
"enabled": true
},
"id": null
}Failure
{
"status": "2",
"msg": "No Module Permission!",
"obj": null,
"id": null
}Update User
POST /admin/updateUser
- Request
| Parameter | Type | Description | Required | Default | Since |
|---|---|---|---|---|---|
| user | JSON String | User object | true | ||
| md5Pwd | boolean | Whether password is encrypted | false | false |
{
"userId": "cf592eb2-91fd-4319-925e-141d5a1b58b3",
"loginName": "biuser",
"userName": "Analyst",
"userPassword": null, // If password is empty, the password will not be modified.
"company": "Company",
"department": "BI",
"title": "Analyst",
"validDate": 4073990400000,
"enabled": true
}Delete User
POST/GET /admin/deleteUser
| Parameter | Type | Description | Required | Default | Since |
|---|---|---|---|---|---|
| userId | String | User ID | true |
- Response Success
{
"status": "1", // Whether the interface call was successful
"msg": "success",
"obj": 1, // 0 indicates the interface call was successful but no data was deleted
"id": null
}Get User Information
GET/POST /admin/getUserList?token=yU2TbYpA
| Parameter | Type | Description | Required | Default | Since |
|---|---|---|---|---|---|
| userId | String | User ID. If not provided, retrieves the list of all users. | false |
- Response
[
{
"userId": "a18033335555",
"loginName": "a18033335555",
"userName": "18033335555",
"userPassword": null, // Password not returned
"userStatus": null,
"company": null,
"department": null,
"title": null,
"validDate": null,
"enabled": false
},
{
"userId": "admin",
"loginName": "admin",
"userName": "admin",
"userPassword": null, // Password not returned
"userStatus": null,
"company": null,
"department": null,
"title": null,
"validDate": null,
"enabled": true
},
....
]User and Role
Role-based access control for the BI platform — users, roles, and the resource lists assigned to them, plus the three administration modes.
Embedding Dashboards as iframe
Embed a dashboard or a single chart into your own application with an iframe. Covers share-ID and token authentication plus URL filter parameters.