边缘应用空间管理对接
1.整体介绍
本章主要介绍智能边缘一体机集群中对应的空间接口的接入API,其中:1.云端:提供云端的SDK API给到ISV用于管理态的应用空间权限的管理。2.同步:平台通过云->边同步机制,把云端的应用的空间数据关系同步到边缘集群。3.边侧:提供边侧的SDK API给到ISV用于运行态的边侧的空间校验。请求方式:
请求方式为post请求,请求内容为JSON格式放到请求的body中。请求路径为:
url为${xxx}/space/${apiName}, 其中${xxx}为边缘的请求根目录;${apiName}为下文中的API名称。
2.云端API
2.1 园区空间开放服务
具体API可以参考现有云端API文档中的空间开发服务部分:https://dev.iot.aliyun.com/api_center
2.2 获取设备信息接口
用于获取项目下所有已绑定空间的设备信息接口信息。
接口描述
API版本 | 1.0.1 |
授权类型 | APPSIGN |
协议 | HTTPS |
请求方法 | Post |
域名(环境变量中获取) | api.link.aliyun.com |
路径 | /campus/paas/openapi/space/device/list |
入参说明
入参名称 | 数据类型 | 是否必须 | 入参描述 |
appId | 字符串 | 否 | - |
pageNo | 整形 | 是 | 1 |
pageSize | 整形 | 是 | 20 |
categoryKey | 字符串 | 否 | - |
spaceId | 字符串 | 否 | - |
appId | 字符串 | 否 | - |
具体复杂数组可参照接口文档:获取项目下所有已绑定空间的设备信息接口
出参列表
出参名称 | 数据类型 | 出参描述 |
code | 整形 | 响应码, 200: 成功 |
message | 字符串 | 错误消息 |
localizedMsg | 字符串 | 本地语言错误消息 |
data | 长整型 | 响应结果返回的长整型数据是增加的数据的ID |
请求示例
/**
* 系统环境变量中获取的
*/
public static final String appkey = System.getenv("iot.hosting.appKey");
public static final String appSecret = System.getenv("iot.hosting.appSecret");
public static void main(String[] args) throws UnsupportedEncodingException {
IoTApiClientBuilderParams ioTApiClientBuilderParams =
new IoTApiClientBuilderParams();
ioTApiClientBuilderParams.setAppKey("你的<AppKey>");
ioTApiClientBuilderParams.setAppSecret("你的<AppSecret>");
SyncApiClient syncClient = new SyncApiClient(ioTApiClientBuilderParams);
IoTApiRequest request = new IoTApiRequest();
//设置api的版本
request.setApiVer("0.0.3");
//如果需要登录,设置当前的会话的token
request.setIotToken("xxxxxxxxxxxxxxx");
// 接口参数
request.putParam("appId","value1");
request.putParam("pageNo","value2");
request.putParam("pageSize","value3");
request.putParam("categoryKey","value4");
request.putParam("spaceId","value5");
//请求参数域名、path、request
ApiResponse response = syncClient.postBody("api.link.aliyun.com",
"/user/rbac/permission/batchcreate", request, true);
System.out.println( "response code = " + response.getCode()
+ " response = " + new String(response.getBody(), "UTF-8"));
}
返回结果示例 JSON
{
"code": 200,
"data": {
"data": [
{
"categoryKey": "Gateway",
"deviceName": "xxxxxxxxxx",
"productKey": "xxxxxxxxxx",
"productName": "xxxxxxxxxx",
"spacePath": "/xxxxxxxxxx/xxxxxxxxxx/"
},
{
"categoryKey": "Curtain",
"deviceName": "xxxxxxxxxx",
"productKey": "xxxxxxxxxx",
"productName": "xxxxxxxxxx",
"spacePath": "/xxxxxxxxxx/xxxxxxxxxx/"
}
],
"pageNo": 1,
"pageSize": 20,
"total": 100
},
"message": "success"
}
失败返回结果示例 JSON
{
"code": 28402,
"localizedMsg": "无权访问该项目",
"message": "no access to the project"
}
2.3 UpdateCampusSpace
API版本:1.0.0
授权类型:APPSIGN
协议:HTTPS
请求方法:POST
域名:api.link.aliyun.com
路径:/campus/paas/openapi/space/update
API描述:更新指定空间的详情内容
版本描述:初始化版本
入参列表
入参名称 | 数据类型 | 是否必须 | 缺省默认值 | 入参示例 | 入参描述 |
appId | 字符串 | 否 | - | - | 统一应用ID |
—- | —- | —- | —- | —- | —- |
spaceInfo | 复杂对象 | 是 | - | - | 待更新的空间内容 |
出参列表
出参名称 | 数据类型 | 出参描述 |
code | 整形 | 响应码, 200: 成功 |
—- | —- | —- |
message | 字符串 | 错误消息 |
localizedMsg | 字符串 | 本地语言错误消息 |
请求示例
// https://github.com/aliyun/iotx-api-gateway-client
public static void main(String[] args) throws UnsupportedEncodingException {
IoTApiClientBuilderParams ioTApiClientBuilderParams =
new IoTApiClientBuilderParams();
ioTApiClientBuilderParams.setAppKey("你的<AppKey>");
ioTApiClientBuilderParams.setAppSecret("你的<AppSecret>");
SyncApiClient syncClient = new SyncApiClient(ioTApiClientBuilderParams);
IoTApiRequest request = new IoTApiRequest();
//设置api的版本
request.setApiVer("1.0.0");
request.setId("42423423");
//如果需要登录,设置当前的会话的token
request.setIotToken("xxxxxxxxxxxxxxx");
// 接口参数
request.putParam("appId","value1");
request.putParam("spaceInfo","value2");
//请求参数域名、path、request
ApiResponse response = syncClient.postBody("api.link.aliyun.com",
"/campus/paas/openapi/space/update", request, true);
System.out.println( "response code = " + response.getCode()
+ " response = " + new String(response.getBody(), "UTF-8"));
}
返回结果示例 JSON
{
"id": "4de2c367-c1db-417c-aa15-8c585e595d92",
"code": 200,
"message": null,
"localizedMsg": null,
"data": null
}
失败返回结果示例 JSON
{
"id": "37f7e5fa-d6a5-4efe-8abf-5bf23dca6284",
"code": 403,
"message": "request forbidden.",
"localizedMsg": "请求被禁止",
"data": null
}
2.4 DeleteCampusSpace
API版本:1.0.0
授权类型:APPSIGN
协议:HTTPS
请求方法:POST
域名:api.link.aliyun.com
路径:/campus/paas/openapi/space/delete复制
API描述:删除园区行业指定的空间及空间下属资源
版本描述:初始化版本
入参列表
入参名称 | 数据类型 | 是否必须 | 缺省默认值 | 入参示例 | 入参描述 |
appId | 字符串 | 否 | - | - | 统一应用ID |
—- | —- | —- | —- | —- | —- |
spaceIds | 复杂对象数组 | 是 | - | - | 待删除的空间列表 |
出参列表
出参名称 | 数据类型 | 出参描述 |
code | 整形 | 响应码, 200: 成功 |
—- | —- | —- |
message | 字符串 | 错误消息 |
localizedMsg | 字符串 | 本地语言错误消息 |
data | 复杂对象数组 | 响应结果 |
请求示例
// https://github.com/aliyun/iotx-api-gateway-client
public static void main(String[] args) throws UnsupportedEncodingException {
IoTApiClientBuilderParams ioTApiClientBuilderParams =
new IoTApiClientBuilderParams();
ioTApiClientBuilderParams.setAppKey("你的<AppKey>");
ioTApiClientBuilderParams.setAppSecret("你的<AppSecret>");
SyncApiClient syncClient = new SyncApiClient(ioTApiClientBuilderParams);
IoTApiRequest request = new IoTApiRequest();
//设置api的版本
request.setApiVer("1.0.0");
request.setId("42423423");
//如果需要登录,设置当前的会话的token
request.setIotToken("xxxxxxxxxxxxxxx");
// 接口参数
request.putParam("appId","value1");
request.putParam("spaceIds","value2");
//请求参数域名、path、request
ApiResponse response = syncClient.postBody("api.link.aliyun.com",
"/campus/paas/openapi/space/delete", request, true);
System.out.println( "response code = " + response.getCode()
+ " response = " + new String(response.getBody(), "UTF-8"));
}
返回结果示例 JSON
{
"id": "4de2c367-c1db-417c-aa15-8c585e595d92",
"code": 200,
"message": null,
"localizedMsg": null,
"data": []
}
失败返回结果示例 JSON
{
"id": "37f7e5fa-d6a5-4efe-8abf-5bf23dca6284",
"code": 403,
"message": "request forbidden.",
"localizedMsg": "请求被禁止",
"data": null
}
3.云端和边缘端数据同步API
地产平台通过封装LP云边同步能力,对外开放如下API:0、获取边缘集群列表1、数据同步预检查2、触发数据同步3、数据同步结果查询
3.1接口定义
分页参数会出现在请求参数和返回结果中,用于下文中API调用参照。
在请求参数中代表请求分页的页数(pageNo)和每页的记录数(pageSize);
在响应结果中的页数(pageNo)和每页的记录数(pageSize)与请求参数一致,同时还有total字段代表数据总数。
所有的分页接口除特殊说明外,都遵循下面的约束
参数 | 类型 | 备注 |
pageNo | Integer | 请求的页码非必填,默认为1,有效范围 [1, ∞) |
pageSize | Integer | 每页的记录数非必填,默认为20,有效范围[1,100] |
获取集群列表
接口定义
path | 版本 | 是否需要登录 |
/home/paas/cluster/edge/query | 1.0.0 | 否 |
入参
字段 | 类型 | 是否必传 | 备注 |
pageNo | Integer | 是 | 请求的页码,详细见上述的分页参数定义。 |
pageSize | Integer | 是 | 每页的记录数,详细见上述的分页参数定义。 |
出参
字段 | 类型 | 备注 |
code | Integer | 返回码 |
message | String | 返回信息 |
data | JSONObject | |
-data | ClusterDTOList | 分页数据对象列表ClusterDTOList |
-pageNo | Integer | 请求的页码,详细见上述的分页参数定义。 |
-pageSize | Integer | 请求的页码,详细见上述的分页参数定义。 |
-total | Integer | 总记录数 |
分页数据对象ClusterDTOList
id | String | 集群ID |
name | String | 集群名称 |
gmtCreate | String | 集群创建时间 |
gmtModified | String | 集群修改时间 |
示例
请求示例
{
"pageNo":1,
"pageSize":20
}
返回示例
{
"code": 200,
"message": null,
"localizedMsg": null,
"data":{
"pageNo": 1,
"pageSize": 20,
"total": 10,
"data":[{
"id": "xxx",
"name": "cluster01",
"gmtCreate": "2020-03-04 18:00:00",
"gmtModified": "2020-03-04 18:00:00"
}]
}
}
数据同步预检查
接口定义
path | 版本 | 是否需要登录 |
/home/paas/data/edge/sync/precheck | 1.0.0 | 否 |
入参
字段 | 类型 | 是否必传 | 备注 |
clusterId | String | 是 | 集群ID |
opsType | String | 是 | SYNC_DATA - 同步数据CLEAR_DATA - 清理数据 |
dataTypeList | JSONArray | 是 | 数据类型列表 |
出参
字段 | 类型 | 备注 |
code | Integer | 返回码 |
message | String | 返回信息 |
data | String | SYNCING - 同步中NO - 不需要同步YES - 需要同步 |
示例
请求示例
{
"clusterId": "xxx",
"opsType": "SYNC_DATA",
"dataTypeList": [
"ACCOUNT",
"SPACE"
"RTPC"
"ALARM"
]
}
返回示例
{
"code": 200,
"message": null,
"localizedMsg": null,
"data": "XXX"
}
触发数据同步
接口定义
path | 版本 | 是否需要登录 |
/home/paas/data/edge/sync/dispatch | 1.0.0 | 否 |
入参
字段 | 类型 | 是否必传 | 备注 |
clusterId | String | 是 | 集群ID |
opsType | String | 是 | SYNC_DATA - 同步数据CLEAR_DATA - 清理数据 |
dataTypeList | JSONArray | 是 | 数据类型列表 |
出参
字段 | 类型 | 备注 |
code | Integer | 返回码 |
message | String | 返回信息 |
data | String | taskGroupId - 任务组ID |
示例
请求示例
{
"clusterId": "xxx",
"opsType": "SYNC_DATA",
"dataTypeList": [
"ACCOUNT",
"SPACE"
]
}
返回示例
{
"code": 200,
"message": null,
"localizedMsg": null,
"data": "XXX"
}
根据数据同步请求查询结果
接口定义
path | 版本 | 是否需要登录 |
/home/paas/data/edge/sync/query | 1.0.0 | 否 |
入参
字段 | 类型 | 是否必传 | 备注 |
clusterId | String | 是 | 集群ID |
opsType | String | 是 | SYNC_DATA - 同步数据CLEAR_DATA - 清理数据 |
dataTypeList | JSONArray | 是 | 数据类型列表 |
出参
字段 | 类型 | 备注 |
code | Integer | 返回码 |
message | String | 返回信息 |
data | JSONObject | |
-dataSyncStatus | String | 同步的结果NONE - 无任务SYNCING - 同步中SUCCESS - 同步成功FAIL - 同步失败 |
-preCheckResult | String | 是否需要同步SYNCING - 同步中NO - 不需要同步YES - 需要同步 |
-taskGroupId | String | 任务组ID,便于工单排查 |
示例
请求示例
{
"clusterId": "xxx",
"opsType": "SYNC_DATA",
"dataTypeList": [
"ACCOUNT",
"SPACE"
]
}
返回示例
{
"code": 200,
"message": null,
"localizedMsg": null,
"data": {
"dataSyncStatus": "SUCCESS",
"preCheckResult": "NO",
"taskGroupId": "XXX"
}
}
根据任务组查询数据同步结果
接口定义
path | 版本 | 是否需要登录 |
/home/paas/data/edge/sync/querybytaskgroupid | 1.0.0 | 否 |
入参
字段 | 类型 | 是否必传 | 备注 |
taskGroupId | String | 是 | 任务组ID |
出参
字段 | 类型 | 备注 |
code | Integer | 返回码 |
message | String | 返回信息 |
data | String | 同步的结果NONE - 无任务SYNCING - 同步中SUCCESS - 同步成功FAIL - 同步失败 |
示例
请求示例
{
"clusterId": "xxx",
"opsType": "SYNC_DATA",
"dataTypeList": [
"ACCOUNT",
"SPACE"
]
}
返回示例
{
"code": 200,
"message": null,
"localizedMsg": null,
"data": "SUCCESS"
}
4.边缘端空间调用API
4.1 引入api gateway
<dependency>
<groupId>com.aliyun.iotx</groupId>
<artifactId>iotx-api-gateway-client</artifactId>
<version>${latest.version}</version>
</dependency>
4.2 接口列表
4.2.1 查询根节点
API path:api/space/listRootSpace请求入参:无
请求出参
SpaceDTO:
字段 | 类型 | 描述 |
namePath | String | 空间路径名称 |
typeCodePath | String | 空间路径code |
countryName | String | 国家 |
countryCode | String | 国家代码 |
provinceName | String | 省 |
provinceCode | String | 省代码 |
cityName | String | 城市 |
cityCode | String | 城市代码 |
regionName | String | 区域 |
regionCode | String | 区域代码 |
address | String | 地址 |
id | String | 空间ID |
attribute | String | 空间属性 |
gmtCreate | Date | 创建时间 |
creatorType | String | 创建人类型 |
creatorId | String | 创建人ID |
gmtModified | Date | 修改时间 |
modifierType | String | 修改人类型 |
modifierId | String | 修改人ID |
creatorNickName | String | 创建人昵称(如果创建人是identityId则有值) |
modifierNickName | String | 修改人昵称(如果修改人是identityId则有值) |
parentId | String | 上级空间ID |
businessId | String | 业务ID |
name | String | 空间名称 |
path | String | 空间路径(/pid/pid/pid/pid/) |
description | String | 空间描述 |
typeCode | String | 空间类型代码 |
usesCode | String | 空间用途代码 |
usesName | String | 空间用途名称 |
typeName | String | 空间类型名称 |
geoDTO | GeoDTO | 空间几何信息 |
poiCode | String | 空间编码不含父子级 |
bizType | String | 业务类型 |
poiCodePath | String | 空间编码含父子级 |
hasChild | Boolean | 是否包含下级空间节点 |
hasDeviceChild | Integer | 空间是否包含设备(1:有 ,0 :没有) |
status | Integer | 空间状态(1: 启用, 0:停用) |
spaceSope | Integer | 公有(0)、私有(1) |
出参示例
{
"code":200,
"data":[
{
"bizType":"campus",
"businessId":"AutoTestRootSpace_businessId",
"cityName":"hangzhou",
"countryName":"china",
"gmtCreate":157426616****,
"gmtModified":157426619****,
"hasChild":true,
"hasDeviceChild":0,
"id":"ba91edc1ec9b42b49b767c0f4299ee8e",
"name":"test_create_by_diyang",
"namePath":"/test_create_by_diyang/",
"path":"/ba91edc1ec9b42b49b767c0f4299ee8e/",
"poiCode":"D36****",
"poiCodePath":"D36****",
"provinceName":"zhejiang",
"regionName":"ali",
"spaceScope":1,
"status":1,
"typeCode":"default",
"typeCodePath":"/default/",
"typeName":"根空间"
}
],
"message":"success"
}
4.2.2 查询子节点列表
API path: /api/space/listChildSpaces
请求入参
listChildSpaceRqquest:
字段 | 类型 | 描述 | 是否必填 |
tenantId | String | 租户ID | |
scopeId | String | 隔离ID | |
parentSpaceId | String | 父节点ID | 是 |
入参示例
{
//"tenantId": "xxx",
//"scopeId": "xxx",
"parentSpaceId":"ba91edc1ec9b42b49b767c0f4299ee8e"
}
请求出参
出参示例可参考:4.2.1节
出参示例
出参示例可参考:4.2.1节
4.2.3 查询父节点
通过节点的parentId,可参考:4.2.5节,查询父节点信息。
4.2.4 查询节点关联设备
API path:/api/space/listRelationsInSpace
请求入参
listRelationsInSpaceRequest:
字段 | 类型 | 描述 | 是否必填 |
tenantId | String | 租户ID | |
scopeId | String | 隔离ID | |
spaceId | String | 空间ID | 是 |
relationType | String | 一般为device | 是 |
queryDTO | RelationQueryDTO | 查询条件 | 否 |
pageNo | Integer | 分页编号 | 是 |
pageSize | Integer | 页大小 | 否 |
入参示例
{
"spaceId": "xxxx",
"relationType": { //可选
"name": "xxx", //可选
"userValue1": "xxx",//可选
"userValue2": "xxx",//可选
"userValue3": "xxx"//可选
},
"relationType": "device",
"pageNo": 1,
"pageSize": 20
}
请求出参
RelationObjectDTO:
字段 | 类型 | 描述 |
relObjectId | String | 绑定关系的ID,如iotId,机构ID等 |
name | String | 空间绑定关系名称 |
userValue1 | String | 用户自定义值 |
userValue2 | String | 用户自定义值 |
userValue3 | String | 用户自定义值 |
出参示例
{
"code":200,
"data":{
"data":[
{
"relObjectId":"k1p65dIAOUTrVAe5mMSq0010134f10",
"name":"设备1",
"userValue1": "pk", // userValue1的值为pk
"userValue2": "dn" //userValue2的值为dn
},
{
"relObjectId":"wA8pfQ9c70GV5yelZR9U00104a3010",
"name":"设备2",
"userValue1": "pk",
"userValue2": "dn"
},
{
"relObjectId":"FFRHnW4pNpJGefMCG8KA00109dd310",
"name":"设备3",
"userValue1": "pk",
"userValue2": "dn"
},
{
"relObjectId":"YtpNR4frO3DO5noJYT7H0010314f10",
"name":"设备4",
"userValue1": "pk",
"userValue2": "dn"
},
{
"relObjectId":"1AW27LWwOzE6wbwxUM8N001069f710",
"name":"设备4",
"userValue1": "pk",
"userValue2": "dn"
}
],
"offset":0,
"pageNo":1,
"pageSize":20,
"total":5
},
"message":"success"
}
4.2.5 查询节点信息
API path:/api/space/listSpaceByIds
请求入参
listSpaceByIdRequest:
字段 | 类型 | 描述 | 是否必填 |
tenantId | String | 租户ID | |
scopeId | String | 隔离ID | |
spaceIdList | List | 空间ID列表 | 是 |
入参示例
{
//"tenantId":"xxx",
//"scopeId":"xxx",
"spaceIdList": [
"xxxxx",
"xxxxx",
"xxxxx"
]
}
出参示例可参考:4.2.1节出参示例可参考:4.2.1节
4.2.6 查询设备关联节点
API path:/api/space/listSpaceByRelationId
请求入参
listSpaceByRelationIdRequest:
字段 | 类型 | 描述 | 是否必填 |
tenantId | String | 租户ID | |
scopeId | String | 隔离ID | |
productKey | String | 设备pk | 是 |
deviceName | String | 设备dn | 是 |
入参示例
{
//"tenantId": "xxx",
//"scopeId": "xxx",
"rootSpaceId": "xxx",
"userValue1": "pk1",
"userValue2": "dn1"
}
出参示例可参考:4.2.1节出参示例可参考:4.2.1节
{
"code":200,
"data":[
{
"bizType":"home",
"creatorId":"digital_community",
"creatorType":"SYSTEM",
"gmtCreate":1541406705000,
"gmtModified":1541772352000,
"hasChild":true,
"hasDeviceChild":1,
"id":"d01e5eb6c84b41eb86015b04ffc2a510",
"modifierId":"digital_community",
"modifierType":"SYSTEM",
"name":"1",
"namePath":"/丽城154140****/1/",
"parentId":"d07e1f60510f4b8d85defb8bb6b84db6",
"path":"/d07e1f60510f4b8d85defb8bb6b84db6/d01e5eb6c84b41eb86015b04ffc2a510/",
"poiCode":"01",
"poiCodePath":"01",
"spaceScope":1,
"status":1,
"typeCode":"building",
"typeCodePath":"/default/building/",
"typeName":"幢",
"usesCode":"flat_layer",
"usesName":"平层"
}
],
"message":"success"
}
4.2.7 空间全量分页接口
API path
api/space/listSpaceByPage
请求入参
字段 | 类型 | 描述 | 是否必填 |
pageNo | Integer | 分页编号 | 是 |
pageSize | Integer | 页大小 | 是 |
出参实例
根据本次请求list的size是否小于pageSize决定是否需要进行下一次请求。
{
"code":200,
"data":[
{
"bizType":"campus",
"businessId":"AutoTestRootSpace_businessId",
"cityName":"hangzhou",
"countryName":"china",
"gmtCreate":157426616****,
"gmtModified":157426619****,
"hasChild":true,
"hasDeviceChild":0,
"id":"ba91edc1ec9b42b49b767c0f4299ee8e",
"name":"test_create_by_diyang",
"namePath":"/test_create_by_diyang/",
"path":"/ba91edc1ec9b42b49b767c0f4299ee8e/",
"poiCode":"D36****",
"poiCodePath":"D36****",
"provinceName":"zhejiang",
"regionName":"ali",
"spaceScope":1,
"status":1,
"typeCode":"default",
"typeCodePath":"/default/",
"typeName":"根空间"
},
{
"bizType":"home",
"creatorId":"digital_community",
"creatorType":"SYSTEM",
"gmtCreate":154140670****,
"gmtModified":154177235****,
"hasChild":true,
"hasDeviceChild":1,
"id":"d01e5eb6c84b41eb86015b04ffc2a510",
"modifierId":"digital_community",
"modifierType":"SYSTEM",
"name":"1",
"namePath":"/丽城154140****/1/",
"parentId":"d07e1f60510f4b8d85defb8bb6b84db6",
"path":"/d07e1f60510f4b8d85defb8bb6b84db6/d01e5eb6c84b41eb86015b04ffc2a510/",
"poiCode":"01",
"poiCodePath":"01",
"spaceScope":1,
"status":1,
"typeCode":"building",
"typeCodePath":"/default/building/",
"typeName":"幢",
"usesCode":"flat_layer",
"usesName":"平层"
],
"message":"success"
}
4.2.8 空间设备关系全量接口
API path
api/space/listRelationByPage
请求入参
同上
请求出参
List
RelationObjectDTO
字段 | 类型 | 描述 |
relObjectId | String | 绑定关系的ID,如iotId,机构ID等 |
name | String | 空间绑定关系名称 |
userValue1 | String | 用户自定义值 |
userValue2 | String | 用户自定义值 |
userValue3 | String | 用户自定义值 |
poiId | 空间ID |
出参示例
{
"code":200,
"data":{
"data":[
{
"relObjectId":"k1p65dIAOUTrVAe5mMSq0010134f10",
"name":"设备1",
"userValue1": "pk", // userValue1的值为pk
"userValue2": "dn", //userValue2的值为dn
"poiId": "asdioqhwfsaopaosdk"
},
{
"relObjectId":"wA8pfQ9c70GV5yelZR9U00104a3010",
"name":"设备2",
"userValue1": "pk",
"userValue2": "dn",
"poiId": "asdioqhwfsaopaosdk"
},
{
"relObjectId":"FFRHnW4pNpJGefMCG8KA00109dd310",
"name":"设备3",
"userValue1": "pk",
"userValue2": "dn",
"poiId": "asdioqhwfsaopaosdk"
},
{
"relObjectId":"YtpNR4frO3DO5noJYT7H0010314f10",
"name":"设备4",
"userValue1": "pk",
"userValue2": "dn",
"poiId": "asdioqhwfsaopaosdk"
},
{
"relObjectId":"1AW27LWwOzE6wbwxUM8N001069f710",
"name":"设备4",
"userValue1": "pk",
"userValue2": "dn",
"poiId": "asdioqhwfsaopaosdk"
}
]
},
"message":"success"
}
4.2.8 节点变更通知
MQ Topic:空间变更:IOTX_EDGE_SPACE_CHANGE空间设备关系变更:IOTX_EDGE_SPACE_RELATION_CHANGE
请求出参
SpaceDTO:
字段 | 类型 | 描述 |
namePath | String | 空间路径名称 |
typeCodePath | String | 空间路径code |
countryName | String | 国家 |
countryCode | String | 国家代码 |
provinceName | String | 省 |
provinceCode | String | 省代码 |
cityName | String | 城市 |
cityCode | String | 城市代码 |
regionName | String | 区域 |
regionCode | String | 区域代码 |
address | String | 地址 |
id | String | 空间ID |
attribute | String | 空间属性 |
gmtCreate | Date | 创建时间 |
creatorType | String | 创建人类型 |
creatorId | String | 创建人ID |
gmtModified | Date | 修改时间 |
modifierType | String | 修改人类型 |
modifierId | String | 修改人ID |
creatorNickName | String | 创建人昵称(如果创建人是identityId则有值) |
modifierNickName | String | 修改人昵称(如果修改人是identityId则有值) |
parentId | String | 上级空间ID |
businessId | String | 业务ID |
name | String | 空间名称 |
path | String | 空间路径(/pid/pid/pid/pid/) |
description | String | 空间描述 |
typeCode | String | 空间类型代码 |
usesCode | String | 空间用途代码 |
usesName | String | 空间用途名称 |
typeName | String | 空间类型名称 |
geoDTO | GeoDTO | 空间几何信息 |
poiCode | String | 空间编码不含父子级 |
bizType | String | 业务类型 |
poiCodePath | String | 空间编码含父子级 |
hasChild | Boolean | 是否包含下级空间节点 |
hasDeviceChild | Integer | 空间是否包含设备(1:有 ,0:没有) |
status | Integer | 空间状态(1: 启用, 0:停用) |
spaceSope | Integer | 公有(0)、私有(1) |
空间设备关系变更:IOTX_EDGE_SPACE_RELATION_CHANGE消息体结构:
{
"gmtCreate":158234186****,
"gmtModified":157483210****,
"id":"0001b934588f49adb943fb44ec8c8125",
"isDeleted":0,
"modifierId":"50fcop67d46cea7b79000ad357273f39904b6630",
"modifierType":"identityId",
"poiId":"0fb31ec0a3594035b124b1517647f3d5",
"relationObjId":"2d659c93256f41acbbd85f56fc46f10c",
"relationType":"device",
"scopeId":"a103gPpCWWiBpbbL",
"tenantId":"B4392202C5ED41F596EE1100AE573D9B",
"tmpStr1":"a12vqRtzA1q",
"tmpStr2":"SmartDoor"
}