Restful Interfaces
Restful Interfaces
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
},
....
]