1 开放平台API

1.1 开放平台API

使用对象: 开发者。

1.1.1 开发者帐号

1.1.1.1 开发者帐号注册

URL: /v1/open/account/iot/register

method : POST

body 约定:

字段 类型 说明 是否必填
mobile String 电话号 y
smscode String 短信验证码。 y
pwd String 密码 y

返回字段:

字段 类型
id Biting 帐号主键
user_name String 用户名,可以为手机号 6-12 字符长度。
nick_name String 用户昵称, 1-32 字符长度
avatar String 用户头像,<=200个字符长度
pwd String 密码
enabled Int 1: 激活 2:禁用 3: 临时锁定
update_time String yyyy-MM-dd HH:mm:ss 格式。更新时间
email String 邮箱
mobile String 手机
tenant_id String 租户id
tenant_code String 租户编码
address String 地址

1.1.1.2 开发者发送短信

URL: /v1/iot/user/verifycode/send

method : POST body 约定:

字段 类型 说明 是否必填
mobile String 手机号码 y
random_code String 图片验证码 y

1.1.1.3 开发者修改密码

URL: /v1/iot/user/modifyPwd

method : POST

body 约定:

字段 类型 说明 是否必填
id Biting 开发者帐号主键ID y
oldPwd String 旧密码 y
newPwd String 新密码 y
confirmPwd String 确认密码 y

1.1.1.4 开发者修改用户名/通讯地址

URL: /v1/iot/user/modifyUser

method : POST

body 约定:

字段 类型 是否必填
id Biting 开发者帐号主键ID y
userName String 用户名 y
address String 通讯地址 y
email String 邮箱 n
avatar String 头像 n

1.1.1.5 开发者绑定邮箱

URL: /v1/iot/user/modifyEmail

method : POST

body 约定:

字段 类型 说明 是否必填
id Biting 开发者帐号主键ID y
email String 电子邮件地址 y

1.1.1.6 开发者获取token

URL: /v1/open/token

method : POST

body 约定:

字段 类型 说明 是否必填
appKey String 应用appId Y
sign String 签名 Y
timestamp String 时间戳 Y

返回:

{

  "code":"200",
  "message":"success",
}

返回字段说明

字段 类型 说明 是否必返回
accessToken String accessToken
expiresIn String 过期时间
refreshToken String 刷新Token
reExpiresIn String 刷新Token

1.1.1.7 开发者用户详情

协议:HTTP

URL: /v1/iot/user/getAccountDetail

方法: POST

请求方式: 在请求Header里带上token信息即可。

正确返回:

{
    "code": 200,
    "message": "ok",
    "data": {
        "id": 12,
        "user_name": "iot_develop_02",
        "nick_name": "极限编程",
        "avatar": "",
        "pwd": "$2a$10$AA0jy.5aJAe1phL0x2cTSu/dx486n3omIz/Vrcpzx.FQ4r5F1jy/S",
        "materials": null,
        "update_time": "2022-09-14 13:04:52",
        "enabled": 1,
        "email": "",
        "mobile": "",
        "tenant_id": 1,
        "tenant_code": "1000000",
        "address": null
    }
}

1.1.1.8 开发者忘记密码

URL: /v1/user/iot/forgetPwd

method : POST

body 约定:

字段 类型 说明 是否必填
phone String 电话号 y
smscode String sms短信验证码 y
passwd String 密码 y

1.1.1.9 开发者切换企业

URL: /v1/iot/user/switchTenant

method : POST

body 约定:

字段 类型 说明 是否必填
tenantId String 切换企业 y
{
    "code": "200",
    "data": {
        "access_token": "",
        "token_type": "bearer",
        "refresh_token": "",
        "scope": "all",
        "jti": "6db84e96-1110-4d60-ad42-2784570f3d23",
        "expires_in": 86400,
        "roles": null,
        "top_org_id": null,
        "top_org_code": null,
        "isSys": true,
        "tenantName": ""
    },
    "message": "成功",
    "isSys": true
}

1.1.2.0 校验手机是否已注册

URL: /v1/user/iot/checkPhone

method : POST

body 约定:

字段 类型 说明 是否必填
phone String 手机号 y
{
    "code": 200,
    "message": "ok",
    "data": true
}

1.2.0 开发者应用

1.2.1.1 应用创建

描述: 开发者添加应用

URL: /v1/app/saveApp

method : POST

body 约定:

字段 类型 说明 是否必填
appType String 应用类型(APP:appsdk CLOUD:云端应用 API:云云对接) Y
appName String 应用名称[4-32]字符长度 Y
callbackUrl String 第三方url Y

返回:

{

  "code":"200",
  "message":"success",
  "data": {
        "id": 21,
        "account_id": 12,
        "tenant_id": 1,
        "aes_encrypt": null,
        "app_name": "测试",
        "app_logo": null,
        "app_discription": null,
        "app_type": null,
        "app_id": "TGtMjAYR5vKM",
        "app_secret": "51350ab4988e9635ec664e9f622458f51585ebb5",
        "callback_url": "http://localhost:8888",
        "aes_key": null,
        "private_key": "1",
        "rsa_type": null,
        "update_time": "2022-10-26 14:32:01"
  }
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | id | bigint | 应用主键ID | Y | | account_id | String | 账号id | Y | | tenant_id | String | 租户id | Y | | aes_encrypt | String | aes密钥 | Y | | app_name | String | 应用名 | Y | | app_logo | String | 应用logo | Y | | app_discription | String | 应用描述 | Y | | app_type | String | 应用类型 | Y | | app_id | String | 应用appId | Y | | app_secret | String | 应用秘钥 | Y | | callback_url | String | 回调地址 | Y | | aes_key | String | aesKey | Y | | private_key | String | 私钥 | Y | | rsa_type | String | rsaKey | Y | | update_time | String | 更新时间 | Y |

1.2.1.2 应用查询

描述:

URL: /v1/app/pageApp

method : POST

body 约定:

字段 类型 说明 是否必填
appType String 应用类型(APP:appsdk CLOUD:云端应用 API:云云对接)
searchText String 应用名/AppId
pageNo Int 页数 Y
pageSize Int 每页条数 Y

返回:

{

  "code":"200",
  "message":"success",
  "data": {
        "result": [{
        "id": 21,
        "account_id": 12,
        "tenant_id": 1,
        "aes_encrypt": null,
        "app_name": "测试",
        "app_logo": null,
        "app_discription": null,
        "app_type": null,
        "app_id": "TGtMjAYR5vKM",
        "app_secret": "51350ab4988e9635ec664e9f622458f51585ebb5",
        "callback_url": "http://localhost:8888",
        "aes_key": null,
        "private_key": "1",
        "rsa_type": null,
        "update_time": "2022-10-26 14:32:01"
  }],
        "pageNo": 0,
        "pageSize": 0,
        "total": 0,
        "totalPage": 0
  }
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | id | bigint | 应用主键ID | Y | | account_id | String | 账号id | Y | | tenant_id | String | 租户id | Y | | aes_encrypt | String | aes密钥 | Y | | app_name | String | 应用名 | Y | | app_logo | String | 应用logo | Y | | app_discription | String | 应用描述 | Y | | app_type | String | 应用类型 | Y | | app_id | String | 应用appId | Y | | app_secret | String | 应用秘钥 | Y | | callback_url | String | 回调地址 | Y | | aes_key | String | aesKey | Y | | private_key | String | 私钥 | Y | | rsa_type | String | rsaKey | Y | | update_time | String | 更新时间 | Y |

1.2.1.3 应用名称重复校验

描述:

URL: /v1/app/verifyAppName

method : POST

param 约定:

字段 类型 说明 是否必填
appName String 应用名

返回:

{
    "code": 200,
    "message": "ok",
    "data": true
}

1.3 平台服务管理

1.3.1 新增平台服务

描述:

URL: /v1/platform/savePlatform

method : POST

body 约定:

字段 类型 说明 是否必填
platformName String 平台名 Y
platformDomain String 平台域名 Y
platformDiscription String 平台描述
platformType String 平台类型 (iot,family,community) Y

返回:

{
    "code": 200,
    "message": "ok",
    "data": {
        "id": 7,
        "platformName": "IO云",
        "platformDomain": "www.localhost.com",
        "platformCode": "P202210261447122",
        "platformLogo": null,
        "platformDiscription": "IOT云描述",
        "platformType": "iot",
        "createTime": "2022-10-26T14:47:12.375",
        "updateTime": "2022-10-26T14:47:12.375"
    }
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | id | bigint | 平台主键ID | Y | | platformName | String | 平台服务名 | Y | | platformDomain | String | 平台域名 | Y | | platformCode | String | 平台编码 | Y | | platformLogo | String | 平台logo | Y | | platformDiscription | String | 平台描述 | Y | | platformType | String | 平台类型 | Y | | createTime | String | 创建时间 | Y | | updateTime | String | 更新时间 | Y |

1.3.2 平台服务修改

描述:修改平台服务。

URL: /v1/platform/updatePlatform

method : POST

body 约定:

字段 类型 说明 是否必填
id Biting 平台服务id
platformName String 平台服务名 Y
platformDomain String 平台服务域名 Y
platformDiscription String 平台服务描述

返回:

{
    "code": 200,
    "message": "ok",
    "data": {
        "id": 7,
        "platformName": "IO云",
        "platformDomain": "www.localhost.com",
        "platformCode": "P202210261447122",
        "platformLogo": null,
        "platformDiscription": "IOT云描述",
        "platformType": "iot",
        "createTime": "2022-10-26T14:47:12.375",
        "updateTime": "2022-10-26T14:47:12.375"
    }
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | id | bigint | 平台主键ID | Y | | platformName | String | 平台服务名 | Y | | platformDomain | String | 平台域名 | Y | | platformCode | String | 平台编码 | Y | | platformLogo | String | 平台logo | Y | | platformDiscription | String | 平台描述 | Y | | platformType | String | 平台类型 | Y | | createTime | String | 创建时间 | Y | | updateTime | String | 更新时间 | Y |

1.3.3 平台服务删除接口

对象: 删除平台服务 URL: /v1/platform/deletePlatform

method : POST

body 约定:

字段 类型 说明 是否必填
id Biting 平台服务id y

返回:

{
    "code": 200,
    "message": "ok",
    "data": true
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | data | boolean | 结果 | Y |

1.3.4 平台服务查询接口

对象: 查询平台服务 URL: /v1/platform/pagePlatform

method : POST

body 约定:

字段 类型 说明 是否必填
pageNo Biting 页数 y
pageSize Biting 每页条数 y
searchText String 平台名 y

返回:

{
    "code": 200,
    "message": "ok",
    "data": {
        "result": [],
        "pageNo": 0,
        "pageSize": 0,
        "total": 0,
        "totalPage": 0
    }
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | id | bigint | 平台主键ID | Y | | platformName | String | 平台服务名 | Y | | platformDomain | String | 平台域名 | Y | | platformCode | String | 平台编码 | Y | | platformLogo | String | 平台logo | Y | | platformDiscription | String | 平台描述 | Y | | platformType | String | 平台类型 | Y | | createTime | String | 创建时间 | Y | | updateTime | String | 更新时间 | Y |

1.3.3 平台服务删除接口

对象: 删除平台服务 URL: /v1/platform/deletePlatform

method : POST

body 约定:

字段 类型 说明 是否必填
id Biting 平台服务id y

返回:

{
    "code": 200,
    "message": "ok",
    "data": true
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | data | boolean | 结果 | Y |

1.3.5 授权平台服务

对象: 授权平台服务 URL: /v1/platform/authorizationPlatform

method : POST

body 约定:

字段 类型 说明 是否必填
tenantId String 租户id y
platformIds List 授权平台id y

返回:

{
    "code": 200,
    "message": "ok",
    "data": true
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- |

1.3.6 获取租户授权平台

对象: 获取租户授权平台 URL: /v1/platform/getPlatformByTenantId

method : POST

body 约定:

字段 类型 说明 是否必填

返回:

{
    "code": 200,
    "message": "ok",
    "data": []
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | id | int | 平台id | | | platformName | String | 平台名 | | | platformDomain | String | 平台域 | | | platformCode | String | 平台编码 | | | platformLogo | String | 平台logo | | | platformDiscription | String | 平台描述 | | | platformType | String | 平台类型 | | | enable | int | 是否开通 | |

1.4 企业管理

1.4.1 申请企业

URL: /v1/tenant/applicantTenant

method : POST

body 约定:

字段 类型 说明 是否必填
tenantFullName String 企业全称 Y
tenantName String 企业简称 Y
provinceId String 省id Y
province String Y
cityId String 市id Y
city String Y
areaId String 区id Y
area String Y
address String 详细地址 Y
licenseUrl String 营业url Y
introduction String 简介 Y
contacts String 联系人 Y
contactPhone String 联系电话 Y
contactMail String 联系邮箱 Y
brand String 品牌名称 N

返回:

{
    "code": 200,
    "message": "ok",
    "data": {
        "id": 7,
        "tenant_name": "睿智",
        "tenant_code": "T202210261421311",
        "create_time": "2022-10-26T14:21:31.197",
        "update_time": "2022-10-26T14:21:31.198",
        "tenantFullName": "睿智",
        "provinceId": "1",
        "province": "广东省",
        "cityId": "2",
        "city": "佛山市",
        "areaId": "3",
        "area": "顺德区",
        "address": "广东省佛山市顺德区",
        "licenseUrl": "http://localhost",
        "introduction": "睿智",
        "contacts": "先生",
        "contactPhone": "15916060095",
        "contactMail": "zos@163.com",
        "applicantId": 11,
        "brand":"",
        "state": "apply"
    }
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | id | String | 企业id | Y | | tenant_code | String | 企业编码 | Y | | tenant_name | String | 企业简称 | Y | | tenantFullName | String | 企业全称 | Y | | provinceId | String | 省id | Y | | province | String | 省 | Y | | cityId | String | 市id | Y | | city | String | 市 | Y | | areaId | String | 区id | Y | | area | String | 区 | Y | | address | String | 详细地址 | Y | | licenseUrl | String | 营业url | Y | | introduction | String | 简介 | Y | | contacts | String | 联系人 | Y | | contactPhone | String | 联系电话 | Y | | contactMail | String | 联系邮箱 | Y | | applicantId | Int | 申请人ID | Y | | brand | String | 品牌名称 | N | | state | STRING | 状态 (apply 申请,approved 通过,reject驳回) | Y |

1.4.2 查询企业

URL: /v1/tenant/pageTenant

method : POST

body 约定:

字段 类型 说明 是否必填
pageNo Int 页数 Y
pageSize Int 每页条数 Y
state String 状态 Y
searchText String 查询 Y

返回:

{
    "code": 200,
    "message": "ok",
    "data": {
        "result": [
            {
                "id": 6,
                "tenant_name": "睿智",
                "tenant_code": "T202210251722401",
                "create_time": "2022-10-25T00:00:00",
                "update_time": "2022-10-25T00:00:00",
                "tenantFullName": "睿智",
                "provinceId": "1",
                "province": "广东省",
                "cityId": "2",
                "city": "佛山市",
                "areaId": "3",
                "area": "顺德区",
                "address": "广东省佛山市顺德区",
                "licenseUrl": "http://localhost",
                "introduction": "睿智",
                "contacts": "先生",
                "contactPhone": "15916060095",
                "contactMail": "zos@163.com",
                "applicantId": 17,
                "brand": "品牌",
                "state": "approved"
            }
            ]
             "pageNo": 1,
        "pageSize": 10,
        "total": 2,
        "totalPage": 1
       }

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | id | String | 企业id | Y | | tenant_code | String | 企业编码 | Y | | tenant_name | String | 企业简称 | Y | | tenantFullName | String | 企业全称 | Y | | provinceId | String | 省id | Y | | province | String | 省 | Y | | cityId | String | 市id | Y | | city | String | 市 | Y | | areaId | String | 区id | Y | | area | String | 区 | Y | | address | String | 详细地址 | Y | | licenseUrl | String | 营业url | Y | | introduction | String | 简介 | Y | | contacts | String | 联系人 | Y | | contactPhone | String | 联系电话 | Y | | contactMail | String | 联系邮箱 | Y | | applicantId | Int | 申请人ID | Y | | brand | String | 品牌名 | N | | state | STRING | 状态 (apply 申请,approved 通过,reject驳回) | Y |

1.4.3 审核通过

URL: /v1/tenant/approvedTenant

method : POST

body 约定:

字段 类型 说明 是否必填
tenantIds List 企业id Y

返回:

{
    "code": 200,
    "message": "ok",
    "data": true
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | data | boolean | 成功否 | Y |

1.4.4 驳回

URL: /v1/tenant/refuseTenant

method : POST

body 约定:

字段 类型 说明 是否必填
tenantIds List 企业id Y
reason String 原因 Y

返回:

返回:
```
{
    "code": 200,
    "message": "ok",
    "data": true
}
```

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | data | boolean | 成功否 | Y |

1.4.5 查询企业详细信息

URL: /v1/tenant/getTenantById

method : GET

param 约定:

字段 类型 说明 是否必填
tenantId Int 租户id Y

返回:

{
    "code": 200,
    "message": "ok",
    "data": {
        "id": 3,
        "tenantCode": "T202210250950141",
        "tenantName": "睿智",
        "tenantFullName": "睿智",
        "provinceId": "1",
        "province": "广东省",
        "cityId": "2",
        "city": "佛山市",
        "areaId": "3",
        "area": "顺德区",
        "address": "广东省佛山市顺德区",
        "licenseUrl": "http://localhost",
        "introduction": "睿智",
        "contacts": "先生",
        "contactPhone": "15916060095",
        "contactMail": "zos@163.com",
        "applicantId": 17,
        "state": "reject",
        "stateName": "已驳回",
        "brand": "品牌",
        "reason": "666"
    }
}

成功返回: | 字段 | 类型 | 说明 | 是否必填 | | ---------- | ------ | ---------------- | -------- | | id | String | 企业id | Y | | tenantCode | String | 企业编码 | Y | | tenantName | String | 企业简称 | Y | | tenantFullName | String | 企业全称 | Y | | provinceId | String | 省id | Y | | province | String | 省 | Y | | cityId | String | 市id | Y | | city | String | 市 | Y | | areaId | String | 区id | Y | | area | String | 区 | Y | | address | String | 详细地址 | Y | | licenseUrl | String | 营业url | Y | | introduction | String | 简介 | Y | | contacts | String | 联系人 | Y | | contactPhone | String | 联系电话 | Y | | contactMail | String | 联系邮箱 | Y | | applicantId | Int | 申请人ID | Y | | state | STRING | 状态 (apply 申请,approved 通过,reject驳回) | Y | | brand | String | 品牌名 | Y | | reason | STRING | 驳回原因 | |

1.4.6 编辑企业申请信息

URL: /v1/tenant/editApplicantTenant

method : POST

body 约定:

字段 类型 说明 是否必填
id Int id Y
tenantFullName String 企业全称 Y
tenantName String 企业简称 Y
provinceId String 省id Y
province String Y
cityId String 市id Y
city String Y
areaId String 区id Y
area String Y
address String 详细地址 Y
licenseUrl String 营业url Y
introduction String 简介 Y
contacts String 联系人 Y
contactPhone String 联系电话 Y
contactMail String 联系邮箱 Y
brand String 品牌名 N

返回:

{
    "code": 200,
    "message": "ok",
    "data": {
        "id": 7,
        "tenant_name": "睿智7",
        "tenant_code": "T202210261421311",
        "update_time": "2022-11-01T15:33:21.195",
        "create_time": "2022-10-26T00:00:00",
        "tenantFullName": "睿智771",
        "provinceId": "1",
        "province": "广东省",
        "cityId": "2",
        "city": "佛山市",
        "areaId": "3",
        "area": "顺德区",
        "address": "广东省佛山市顺德区",
        "licenseUrl": "http://localhost",
        "introduction": "睿智",
        "contacts": "先生",
        "contactPhone": "15916060095",
        "contactMail": "zos@163.com",
        "applicantId": 11,
        "brand": "品牌",
        "state": "apply"
    }
}

1.4.7 获取用户默认企业审核状态

使用对象:开发者

URL: /v1/tenant/getApplicationStatus

method : POST

返回

{
    "code": 200,
    "message": "ok",
    "data": {
        "state": "reject",
        "tenantId": 14,
        "refuseReason": "驳回"
    }
}

返回说明:如果state为reject时,refuseReason不为空。

1.4.8 获取租户所拥有的成员

使用对象:开发者

URL: /v1/tenant/getTenantOwnUsers

method : POST body 约定:

字段 类型 说明 是否必填
tenantId Int 企业id Y
searchText String 账户/名称 Y
pageNo Int 页码 Y
pageSize Int 每页数 Y

返回

{
    "code": 200,
    "message": "ok",
    "data": [
        {
            "userId": 11,
            "tenantId": 1,
            "userName": "iot_developer",
            "nickName": "中台管理员",
            "lastLoginTime": null,
            "roles": ""
        }
    ]
}

1.4.9 增加企业成员

使用对象:开发者

URL: /v1/tenant/addTenantUsers

method : POST body 约定:

字段 类型 说明 是否必填
tenantId Int 企业id Y
phone String 电话 Y
tenantUserName String 企业备注名 Y
roleId String 角色id Y

返回

{
    "code": 200,
    "message": "ok",
    "data": true
}

1.5.0 修改企业成员

使用对象:开发者

URL: /v1/tenant/updateTenantUsers

method : POST body 约定:

字段 类型 说明 是否必填
tenantId Int 企业id Y
userId Int 用户id Y
tenantUserName String 企业备注名 Y
roleId Int 角色id Y

返回

{
    "code": 200,
    "message": "ok",
    "data": true
}

1.5.1 删除企业成员

使用对象:开发者

URL: /v1/tenant/deleteTenantUsers

method : POST body 约定:

字段 类型 说明 是否必填
tenantId Int 企业id Y
userIds List 用户id Y

返回

{
    "code": 200,
    "message": "ok",
    "data": true
}

1.5.2 获取企业审批信息(消息中心)

使用对象:开发者

URL: /v1/tenant/getTenantApprovedForMsg/{businessId}

method : GET body 约定:

字段 类型 说明 是否必填

返回

{
    "code": 200,
    "message": "ok",
    "data": {
        "tenantId": 52,
        "tenantName": "广东省佛山市仰望星空的鱼股份有限公司",
        "refuseReason": "33"
    }
}

1.4 咨询

1.4.1 创建咨询

使用对象:开发者

URL: /v1/openConsult/save

method : POST

body 约定:

字段 类型 说明 是否必填
nickname String 称呼 y
phone String 联系方式 y
tenantName String 企业名称 y

返回:

{
    "code": 200,
    "message": "ok",
    "data": {
        "id": 1,
        "createTime": "2022-10-31T10:38:01.187",
        "nickName": "cc",
        "phone": "135xxx",
        "state": "wait",
        "tenantName": "haha"
    }
}

1.4.2 查询咨询列表

使用对象:管理者

URL: /v1/openConsult/getOpenConsult

method : POST

body 约定:

字段 类型 说明 是否必填
pageNo int 页码 y
pageSize int 每页显示条数 y
nickName String 称呼 y
phone String 联系方式 y
state String 状态 y
tenantName String 企业名称 y

返回:

{
    "code": 200,
    "message": "ok",
    "data": {
        "result": [
            {
                "id": 1,
                "createTime": "2022-10-28T00:00:00",
                "nickName": "cat",
                "phone": "135xxx",
                "state": "wait",
                "tenantName": null
            }
        ],
        "pageNo": 1,
        "pageSize": 5,
        "total": 1,
        "totalPage": 1
    }
}
Copyright © www.remacsmart.com/ 2021 all right reserved,powered by Gitbook该文件修订时间: 2022-12-13 16:10:20

results matching ""

    No results matching ""