1. 租户
1.1. 租户说明
1.1.1. 租户的定义
hengshi系统内的租户。
租户结构说明
字段 | 类型 | 是否必须 | 描述 |
---|---|---|---|
id | LONG | 否 | id |
tenantName | STRING | 是 | 企业名称 |
code | STRING | 是 | 企业 ID |
enable | BOOLEAN | 否 | 是否启用 |
source | STRING | 是 | 租户来源 |
config | JSON | 否 | 租户属性 |
platformConfig | JSON | 否 | 存储平台方为租户设置的全局属性值 |
createdAt | DATETIME | 否 | 创建的时间 |
createdBy | INTEGER | 否 | 创建用户的 id |
updatedAt | DATETIME | 否 | 最后更新的时间 |
updatedBy | INTEGER | 否 | 最后修改用户的 id |
loginName | STRING | 是 | 租户管理员登录名 |
STRING | 是 | 租户管理员邮箱 | |
userName | STRING | 是 | 租户管理员显示名 |
resetPassword | BOOLEAN | 是 | 租户管理员第一次登录是否需要重置密码 |
engineResourceQuota | INTEGER | 否 | 租户使用引擎资源的资源数,当打开租户引擎开关的时候,才需要设置,所有开启引擎的租户的资源数总和不能超过总资源数 |
engineEnable | BOOLEAN | 否 | 租户是否开启引擎功能 |
engineDiskQuota | INTEGER | 否 | 租户允许使用引擎空间的上限,当打开租户引擎开关的时候,才需要设置,单位为兆字节(MB) |
engineTotalDisk | NUMBER | 否 | 租户当前已经使用的引擎空间,单位为兆字节(MB) |
allocatedEngineResourceQuota | INTEGER | 否 | 已经分配给租户的资源数总和 |
remainEngineResourceQuota | INTEGER | 否 | 剩余总资源数 |
limitation | JSON | 否 | 租户有效期和用户数量限制 |
limitation.expiredAt | Date | 否 | 租户有效期 |
limitation.userNumLimit | INTEGER | 否 | 租户用户数量限制 |
statusStr | STRING | 否 | 租户状态国际化显示 : 正常,已到期,已禁用 (根据状态计算出的租户状态) |
status | STRING | 否 | 租户状态 : NORMAL, EXPIRED, DISABLED (根据状态计算出的租户状态) |
options.appMartTabOrders | JSON | 否 | 租户标签页配置 |
options.appMartTabOrders.visible | BOOLEAN | 否 | 是否显示 |
options.appMartTabOrders.title | STRING | 否 | 标题 |
options.appMartTabOrders.key | STRING | 否 | 租户应用集市标签页标识,可选值为:system_portal(公共空间),app_mart(我的空间),vendor_area(平台空间) |
1.2. 接口说明
1.2.1. 创建租户
创建租户。
请求URL
POST /api/v1/tenants
请求参数
URL 参数
无
request body 参数
说明
- 租户属性需要放在
config
字段中传递 - 平台方为租户设置作用范围为
GLOBAL
的全局用户属性值时,需通过platformConfig
传递
返回对象的格式说明
接口示例1: 创建租户(完整信息)
POST /api/v1/tenants
{
"tenantName": "租户 api",
"code": "abc123",
"loginName": "admin",
"email": "admin@hengshi.com",
"userName": "租户管理员名称",
"password": "fbp08rVODAurEhdGAJelNFR1oS5BQuBo8CK+J5UwiHUFFnNCL7tdlbScnHLfIsJbyStGvKmOBKtoreolwXgI5w==",
"uuid": "0040212d-5699-4b2e-84e4-b2fbf6a3427a",
"resetPassword": true,
"platformConfig": {
"global_string": "test",
"global_num": 1
},
"limitation":{
"userNumLimit":2,
"expiredAt":"2023-04-09"
}
}
返回
{
"version":"",
"code":0,
"msg":"success",
"data":{
"id":10005,
"tenantName":"租户api",
"code":"abc123",
"createdBy":1,
"createdAt":"2021-01-14 17:37:56",
"updatedBy":1,
"updatedAt":"2021-01-14 17:37:56",
"source":"internal",
"loginName":"admin",
"email":"admin@hengshi.com",
"limitation":{
"userNumLimit":2,
"expiredAt":"2023-04-09"
}
}
}
接口示例2: 创建租户(必要信息)
POST /api/v1/tenants
{
"tenantName": "租户 api",
"code": "abc123",
"loginName": "admin"
}
返回
{
"version":"",
"code":0,
"msg":"success",
"data":{
"id":10005,
"tenantName":"租户 api",
"code":"abc123",
"createdBy":1,
"createdAt":"2021-01-14 17:37:56",
"updatedBy":1,
"updatedAt":"2021-01-14 17:37:56",
"source":"internal",
"loginName":"admin",
"limitation":{
"userNumLimit":2,
"expiredAt":"2023-04-09"
}
}
}
1.2.2. 修改租户
修改租户。
请求URL
PUT /api/v1/tenants/{tenantId}
请求参数
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
tenantId | LONG | 是 | 租户的 id |
request body 参数
说明
租户属性需要放在config
字段中传递。
该接口4.1版本以后不再支持修改租户管理员密码,请使用接口修改租户管理员密码和重置租户管理员角色
该接口4.3版本以后该接口不再支持启用/禁用租户,可调用启用/禁用租户
返回对象的格式说明
修改租户属性说明
若在更新租户时通过config修改用户属性,则需要传被修改用户的全量属性,该修改为直接覆盖,没有传的属性都会被置空
接口示例1: 修改租户
PUT /api/v1/tenants/{tenantId}
{
"code":"abc123",
"tenantName":"租户api2",
"loginName":"admin",
"email":"admin@hengshi.com",
"limitation":{
"userNumLimit":2,
"expiredAt":"2023-04-09"
}
}
返回
{
"version":"",
"code":0,
"msg":"success",
"data":{
"id":10005,
"code":"abc123",
"tenantName":"租户api2",
"loginName":"admin",
"email":"admin@hengshi.com",
"limitation":{
"userNumLimit":2,
"expiredAt":"2023-04-09"
}
}
}
1.2.3. 删除租户
删除租户。
请求URL
DELETE /api/v1/tenants/{tenantId}
请求参数
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
tenantId | LONG | 是 | 租户的 id |
request body 参数
无
说明
该接口彻底删除租户及相关资源,无法恢复。
返回对象的格式说明
接口示例1: 删除租户
DELETE /api/v1/tenants/{tenantId}
返回
{
"version":"",
"code":0,
"msg":"success"
}
1.2.4. 修改租户管理员密码
修改租户管理员密码。通过loginName,或email查找用户,并修改该用户的密码。 loginName,email 有一个不为空即可。
请求URL
PUT /api/v1/tenants/{tenantId}/reset-password
请求参数
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
tenantId | LONG | 是 | 修改用户的 id |
request body 参数
租户结构说明 密码加密 loginName,email 有一个不为空即可。
说明
修改租户管理员密码。
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
接口示例1: 修改租户管理员密码
PUT /api/v1/tenants/{tenantId}/reset-password
{
"loginName":"admin",
"email":"admin@hengshi.com",
"password":"OL6dVL4wz/v48VN/s0g79DNx9tabvRnQwpxXN5oamD6I44Ql60tTumwlgNlvil/WLnICVDjmQpQxZuVv+OskGA==",
"uuid":"ba084f85-2ebf-4489-8adf-2e010d09602a"
}
返回
{
"version":"",
"code":0,
"msg":"success"
}
1.2.5. 重置租户管理员角色
重置租户管理员角色,通过loginName,或者email将该用户设置为系统管理员,如果该用户是禁用状态,会自动启用该用户。 loginName,email 有一个不为空即可。
请求URL
PUT /api/v1/tenants/{tenantId}/reset-admin
请求参数
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
tenantId | LONG | 是 | 修改用户的 id |
request body 参数
租户结构说明 loginName,email 有一个不为空即可。
说明
重置租户管理员。
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
接口示例1: 修改租户管理员密码
PUT /api/v1/tenants/{tenantId}/reset-admin
{
"loginName":"admin",
"email":"admin@hengshi.com"
}
返回
{
"version":"",
"code":0,
"msg":"success"
}
1.2.6. 启用/禁用租户
启用/禁用租户。
请求URL
PUT /api/v1/tenants/enable
请求参数
URL 参数
无
request body 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
tenants | JSON | 是 | 启用/禁用租户的 id 数组 |
tenants.id | LONG | 是 | 启用/禁用租户的 id |
enable | BOOLEAN | 是 | 启用/禁用 |
说明
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
接口示例: 禁用租户
PUT /api/v1/tenants/enable
{
"tenants":[
{
"id":10005
}
],
"enable":false
}
返回
{
"version":"",
"code":0,
"msg":"success"
}
1.2.7. 根据id查询租户
根据id查询租户。
请求URL
GET /api/v1/tenants/{tenantId}
请求参数
无
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
tenantId | LONG | 是 | 租户id |
request body 参数
无
说明
返回对象的格式说明
接口示例: 根据id查询租户
GET /api/v1/tenants/10001
返回
{
"version": "",
"code": 0,
"msg": "success",
"data": {
"id": 10001,
"tenantName": "tenant",
"code": "tenant",
"createdBy": 2,
"createdAt": "2021-10-13 16:35:10",
"updatedBy": 2,
"updatedAt": "2021-10-13 16:37:03",
"enable": true,
"source": "internal",
"config": {},
"platformConfig": {},
"loginName": "tenant",
"email": "tenant@hengshi.com",
"limitation":{
"userNumLimit":2,
"expiredAt":"2023-04-09"
}
}
}
1.2.8. 管理员根据id查询租户
管理员根据id查询租户,包含租户内用户数,平台全局属性和引擎使用情况。
请求URL
GET /api/v1/tenants/admin/{tenantId}
请求参数
无
URL Path 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
tenantId | LONG | 是 | 租户id |
request body 参数
无
说明
返回对象的格式说明
接口示例: 根据id查询租户
GET /api/v1/tenants/admin/{tenantId}
返回
{
"version": "4.5-SNAPSHOT@44d6adc#96545aa",
"code": 0,
"msg": "success",
"data": {
"id": 10039,
"tenantName": "租户wangdun",
"code": "10039",
"createdBy": 11527,
"createdAt": "2020-11-11 08:52:27",
"updatedBy": 28115,
"updatedAt": "2023-08-01 17:40:02",
"enable": true,
"source": "internal",
"config": {},
"platformConfig": {
"地区": {
"scope": "GLOBAL",
"value": "北京",
"type": "string",
"defaultValue": "北京",
"customized": false
}
},
"options": {
"appMartTabOrders": [
{
"visible": true,
"title": "公共空间",
"key": "system_portal"
},
{
"visible": true,
"title": "我的空间",
"key": "app_mart"
},
{
"visible": true,
"title": "平台空间",
"key": "vendor_area"
}
]
},
"loginName": "tenant",
"email": "tenant@1.com",
"engineResourceQuota": 10,
"engineEnable": true,
"engineDiskQuota": 30,
"limitation": {
"userNumLimit": 50,
"expiredAt": "2025-12-31"
},
"statusStr": "正常",
"status": "NORMAL",
"resetPassword": true,
"engineTotalDisk": 0.0,
"remainingDays": 875,
"enableUserNum": 33,
"delete": false
}
}
1.2.9. 根据企业编码查询租户
根据企业编码查询租户。
请求URL
POST /api/v1/tenants/get-by-code
请求参数
无
URL 参数
无
request body 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
code | STRING | 是 | 租户企业编码 |
说明
返回对象的格式说明
接口示例: 根据企业编码查询租户。
POST /api/v1/tenants/get-by-code
{
"code": "xxx"
}
返回
{
"version": "",
"code": 0,
"msg": "success",
"data": {
"id": 10001,
"tenantName": "tenant",
"code": "tenant",
"createdBy": 2,
"createdAt": "2021-10-13 16:35:10",
"updatedBy": 2,
"updatedAt": "2021-10-13 16:37:03",
"enable": true,
"source": "internal",
"config": {},
"platformConfig": {},
"loginName": "tenant",
"email": "tenant@hengshi.com",
"limitation":{
"userNumLimit":2,
"expiredAt":"2023-04-09"
}
}
}
1.2.10. 根据企业名称查询租户
根据企业名称查询租户。
请求URL
POST /api/v1/tenants/get-by-name
请求参数
无
URL 参数
无
request body 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
tenantName | STRING | 是 | 租户企业名称 |
说明
返回对象的格式说明
接口示例: 根据企业名称查询租户。
POST /api/v1/tenants/get-by-name
{
"tenantName": "xxx"
}
返回
{
"version": "",
"code": 0,
"msg": "success",
"data": {
"id": 10001,
"tenantName": "tenant",
"code": "tenant",
"createdBy": 2,
"createdAt": "2021-10-13 16:35:10",
"updatedBy": 2,
"updatedAt": "2021-10-13 16:37:03",
"enable": true,
"source": "internal",
"config": {},
"platformConfig": {},
"loginName": "tenant",
"email": "tenant@hengshi.com",
"limitation":{
"userNumLimit":2,
"expiredAt":"2023-04-09"
}
}
}
1.2.11. 租户列表
查看租户列表。
请求URL
GET /api/v1/tenants
请求参数
URL Query参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
q | STRING | 否 | 租户的企业名称或者企业 ID,不区分大小写 |
forAuth | BOOLEAN | 否 | 是否权限授权模块使用,为true,则返回结果包含ALL_TENANTS的虚拟租户 |
request body 参数
无
说明
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
data.data | JSON | 租户结构说明 |
data.totalHits | INTEGER | 总行数 |
data.offset | INTEGER | 开始行数 |
接口示例: 租户列表
GET /api/v1/tenants?q=tenant
返回
{
"version": "",
"code": 0,
"msg": "success",
"data": {
"offset": 0,
"totalHits": 1,
"data": [
{
"id": 10004,
"tenantName": "tenant",
"code": "tenant",
"createdBy": 2,
"createdAt": "2021-08-02 16:32:36",
"updatedBy": 2,
"updatedAt": "2021-08-02 16:32:36",
"enable": true,
"source": "internal",
"config": {
},
"platformConfig": {
},
"loginName": "tenant",
"email": "tenant@hengshi.com",
"statusStr": "试用",
"resetPassword": true,
"limitation":{
"userNumLimit":2,
"expiredAt":"2023-04-09"
}
}
]
}
}
1.2.12. 租户列表(启用状态并且未过期的租户)
租户列表(启用状态切未过期的租户)。
请求URL
GET /api/v1/tenants/list-active
请求参数
无
说明
返回对象的格式说明
接口示例: 租户列表(启用状态切未过期的租户)
GET /api/v1/tenants/list-active
返回
{
"version": "",
"code": 0,
"msg": "success",
"data": {
"data": [
{
"id": 10004,
"tenantName": "tenant",
"code": "tenant",
"createdBy": 2,
"createdAt": "2021-08-02 16:32:36",
"updatedBy": 2,
"updatedAt": "2021-08-02 16:32:36",
"enable": true,
"source": "internal",
"config": {
},
"platformConfig": {
},
"loginName": "tenant",
"email": "tenant@hengshi.com",
"limitation":{
"userNumLimit":2,
"expiredAt":"2023-04-09"
}
}
]
}
}
1.2.13. 租户列表(仅包含简要信息)
租户列表(仅包含简要信息)。
请求URL
GET /api/v1/tenants/simplify
请求参数
无
说明
返回对象的格式说明
接口示例: 租户列表(仅包含简要信息)
GET /api/v1/tenants/simplify
返回
{
"version": "",
"code": 0,
"msg": "success",
"data": {
"data": [
{
"id": 10004,
"tenantName": "tenant"
}
]
}
}
1.2.14. 获取租户引擎设置
请求URL
GET /api/tenants/{tenantId}/engine-config
请求参数
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
tenantId | LONG | 是 | 租户id |
request body 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
返回对象的格式说明
租户结构说明中的engineResourceQuota,engineEnable,allocatedEngineResourceQuota,remainEngineResourceQuota四个字段
接口示例:
GET /api/tenants/{tenantId}/engine-config
返回
{
"version":"",
"code":0,
"msg":"success",
"data":{
"engineResourceQuota":10,
"engineEnable":true,
"allocatedEngineResourceQuota":40,
"remainEngineResourceQuota":9960
}
}
1.2.15. 修改租户引擎设置
请求URL
PUT /api/tenants/{tenantId}/engine-config
请求参数
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
tenantId | LONG | 是 | 租户id |
request body 参数
租户结构说明中的engineResourceQuota,engineEnable两个字段
返回对象的格式说明
租户结构说明中的engineResourceQuota,engineEnable,allocatedEngineResourceQuota,remainEngineResourceQuota四个字段
接口示例:
PUT /api/tenants/{tenantId}/engine-config
{
"engineResourceQuota":30,
"engineEnable":true
}
返回
{
"version":"",
"code":0,
"msg":"success",
"data":{
"engineResourceQuota":30,
"engineEnable":true,
"allocatedEngineResourceQuota":60,
"remainEngineResourceQuota":9940
}
}
1.2.16. 查询租户下用户信息
请求URL
GET /api/tenants/{tenantId}/users
请求参数
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
tenantId | LONG | 是 | 租户 id |
request 查询参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
roleNames | STRING | 否 | 角色名称集合,拥有该角色集合中任意一个角色的用户都会被返回。角色名称中包含空格,需要 url 编码 |
角色名称说明中的name。其中租户没有API 管理员角色
返回对象的格式说明
用户结构说明中的id,name,loginName,roles。
接口示例:
GET /api/tenants/{tenantId}/users?roleNames=data%20analyst&roleNames=data%20viewer
返回
{
"version": "",
"code": 0,
"msg": "success",
"data": [
{
"id": 11,
"name": "test1",
"loginName": "test1",
"roles": [
{
"id": 3,
"name": "data analyst",
"description": "data analyst"
}
]
},
{
"id": 12,
"name": "test2",
"loginName": "test2",
"roles": [
{
"id": 3,
"name": "data analyst",
"description": "data analyst"
},
{
"id": 4,
"name": "data viewer",
"description": "data viewer"
}
]
}
]
}