tencentcloud-sdk-python-iotexplorer 3.1.134__py2.py3-none-any.whl → 3.1.136__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tencentcloud/__init__.py +1 -1
- tencentcloud/iotexplorer/v20190423/errorcodes.py +21 -0
- tencentcloud/iotexplorer/v20190423/iotexplorer_client.py +161 -0
- tencentcloud/iotexplorer/v20190423/iotexplorer_client_async.py +136 -0
- tencentcloud/iotexplorer/v20190423/models.py +920 -105
- {tencentcloud_sdk_python_iotexplorer-3.1.134.dist-info → tencentcloud_sdk_python_iotexplorer-3.1.136.dist-info}/METADATA +2 -2
- tencentcloud_sdk_python_iotexplorer-3.1.136.dist-info/RECORD +11 -0
- tencentcloud_sdk_python_iotexplorer-3.1.134.dist-info/RECORD +0 -11
- {tencentcloud_sdk_python_iotexplorer-3.1.134.dist-info → tencentcloud_sdk_python_iotexplorer-3.1.136.dist-info}/WHEEL +0 -0
- {tencentcloud_sdk_python_iotexplorer-3.1.134.dist-info → tencentcloud_sdk_python_iotexplorer-3.1.136.dist-info}/top_level.txt +0 -0
tencentcloud/__init__.py
CHANGED
|
@@ -239,6 +239,9 @@ INVALIDPARAMETERVALUE_FORWARDREDIRECTDENIED = 'InvalidParameterValue.ForwardRedi
|
|
|
239
239
|
# 拉取产品列表失败。
|
|
240
240
|
INVALIDPARAMETERVALUE_GETPRODUCTSLISTERROR = 'InvalidParameterValue.GetProductsListError'
|
|
241
241
|
|
|
242
|
+
# AppKey 无效
|
|
243
|
+
INVALIDPARAMETERVALUE_INVALIDAPPKEY = 'InvalidParameterValue.InvalidAppKey'
|
|
244
|
+
|
|
242
245
|
# 回调 Token 格式有误
|
|
243
246
|
INVALIDPARAMETERVALUE_INVALIDCALLBACKTOKEN = 'InvalidParameterValue.InvalidCallbackToken'
|
|
244
247
|
|
|
@@ -350,6 +353,9 @@ INVALIDPARAMETERVALUE_RULENUMBERBEYONDLIMIT = 'InvalidParameterValue.RuleNumberB
|
|
|
350
353
|
# 二进制数据格式只可利用 * 将数据进行转发。
|
|
351
354
|
INVALIDPARAMETERVALUE_SELECTKEYFROMBINARYPAYLOAD = 'InvalidParameterValue.SelectKeyFromBinaryPayload'
|
|
352
355
|
|
|
356
|
+
# 不能将设备分享给自己
|
|
357
|
+
INVALIDPARAMETERVALUE_SHAREDEVICETOSELF = 'InvalidParameterValue.ShareDeviceToSelf'
|
|
358
|
+
|
|
353
359
|
# 开始时间晚于结束时间。
|
|
354
360
|
INVALIDPARAMETERVALUE_STARTTIMELATERENDTIME = 'InvalidParameterValue.StartTimeLaterEndTime'
|
|
355
361
|
|
|
@@ -359,6 +365,9 @@ INVALIDPARAMETERVALUE_TPNSANDROIDVALIDATIONFAILED = 'InvalidParameterValue.TPNSA
|
|
|
359
365
|
# TPNSiOSAccessID, TPNSiOSSecretKey, TPNSiOSRegion validation failed。
|
|
360
366
|
INVALIDPARAMETERVALUE_TPNSIOSVALIDATIONFAILED = 'InvalidParameterValue.TPNSiOSValidationFailed'
|
|
361
367
|
|
|
368
|
+
# Topic与replyTopic必须同时设置或同时为空
|
|
369
|
+
INVALIDPARAMETERVALUE_TOPICMISMATCH = 'InvalidParameterValue.TopicMismatch'
|
|
370
|
+
|
|
362
371
|
# Topic已存在。
|
|
363
372
|
INVALIDPARAMETERVALUE_TOPICPOLICYALREADYEXIST = 'InvalidParameterValue.TopicPolicyAlreadyExist'
|
|
364
373
|
|
|
@@ -473,6 +482,9 @@ RESOURCENOTFOUND_DEVICEHASNOFIRMWARE = 'ResourceNotFound.DeviceHasNoFirmware'
|
|
|
473
482
|
# 设备未绑定家庭。
|
|
474
483
|
RESOURCENOTFOUND_DEVICENOTBIND = 'ResourceNotFound.DeviceNotBind'
|
|
475
484
|
|
|
485
|
+
# 设备未被任何用户绑定
|
|
486
|
+
RESOURCENOTFOUND_DEVICENOTBOUND = 'ResourceNotFound.DeviceNotBound'
|
|
487
|
+
|
|
476
488
|
# 设备不存在。
|
|
477
489
|
RESOURCENOTFOUND_DEVICENOTEXIST = 'ResourceNotFound.DeviceNotExist'
|
|
478
490
|
|
|
@@ -581,6 +593,9 @@ UNAUTHORIZEDOPERATION_NOPERMISSIONTOPAY = 'UnauthorizedOperation.NoPermissionToP
|
|
|
581
593
|
# 项目ACL错误。
|
|
582
594
|
UNAUTHORIZEDOPERATION_NOPERMISSIONTOPROJECT = 'UnauthorizedOperation.NoPermissionToProject'
|
|
583
595
|
|
|
596
|
+
# 无权限分享该设备,仅设备所有者可分享
|
|
597
|
+
UNAUTHORIZEDOPERATION_NOPERMISSIONTOSHAREDEVICE = 'UnauthorizedOperation.NoPermissionToShareDevice'
|
|
598
|
+
|
|
584
599
|
# 围栏ACL错误。
|
|
585
600
|
UNAUTHORIZEDOPERATION_NOPERMISSIONTOSTUDIOFENCE = 'UnauthorizedOperation.NoPermissionToStudioFence'
|
|
586
601
|
|
|
@@ -695,6 +710,9 @@ UNSUPPORTEDOPERATION_PRODUCTHASBINDEDGATEWAYPRODUCT = 'UnsupportedOperation.Prod
|
|
|
695
710
|
# 产品已被共享,请先解除共享。
|
|
696
711
|
UNSUPPORTEDOPERATION_PRODUCTHASSHARED = 'UnsupportedOperation.ProductHasShared'
|
|
697
712
|
|
|
713
|
+
# 子产品禁止直接绑定家庭,请走网关绑定
|
|
714
|
+
UNSUPPORTEDOPERATION_PRODUCTISSUBPRODUCT = 'UnsupportedOperation.ProductIsSubProduct'
|
|
715
|
+
|
|
698
716
|
# 存在重复项目。
|
|
699
717
|
UNSUPPORTEDOPERATION_PROJECTDUPKEYEXIST = 'UnsupportedOperation.ProjectDupKeyExist'
|
|
700
718
|
|
|
@@ -724,3 +742,6 @@ UNSUPPORTEDOPERATION_VIDEOINSUFFICIENTLICENSES = 'UnsupportedOperation.VideoInsu
|
|
|
724
742
|
|
|
725
743
|
# Video平台产品不存在。
|
|
726
744
|
UNSUPPORTEDOPERATION_VIDEOPRODUCTNOTEXIST = 'UnsupportedOperation.VideoProductNotExist'
|
|
745
|
+
|
|
746
|
+
# 虚拟设备禁止绑定 / 解绑
|
|
747
|
+
UNSUPPORTEDOPERATION_VIRTUALDEVICECANNOTBIND = 'UnsupportedOperation.VirtualDeviceCannotBind'
|
|
@@ -258,6 +258,31 @@ class IotexplorerClient(AbstractClient):
|
|
|
258
258
|
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
259
259
|
|
|
260
260
|
|
|
261
|
+
def BindUserDevice(self, request):
|
|
262
|
+
r"""1. 按 `(IotAppID, OpenID)` 兜底创建 / 复用 app 端用户;
|
|
263
|
+
2. 按 `(用户, FamilyName)` 兜底创建 / 复用默认家庭;
|
|
264
|
+
3. 将设备直接绑定到该家庭(已绑同家庭视为成功,并继续异步下发 `bind_device` 消息)。
|
|
265
|
+
|
|
266
|
+
:param request: Request instance for BindUserDevice.
|
|
267
|
+
:type request: :class:`tencentcloud.iotexplorer.v20190423.models.BindUserDeviceRequest`
|
|
268
|
+
:rtype: :class:`tencentcloud.iotexplorer.v20190423.models.BindUserDeviceResponse`
|
|
269
|
+
|
|
270
|
+
"""
|
|
271
|
+
try:
|
|
272
|
+
params = request._serialize()
|
|
273
|
+
headers = request.headers
|
|
274
|
+
body = self.call("BindUserDevice", params, headers=headers)
|
|
275
|
+
response = json.loads(body)
|
|
276
|
+
model = models.BindUserDeviceResponse()
|
|
277
|
+
model._deserialize(response["Response"])
|
|
278
|
+
return model
|
|
279
|
+
except Exception as e:
|
|
280
|
+
if isinstance(e, TencentCloudSDKException):
|
|
281
|
+
raise
|
|
282
|
+
else:
|
|
283
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
284
|
+
|
|
285
|
+
|
|
261
286
|
def CallDeviceActionAsync(self, request):
|
|
262
287
|
r"""提供给用户异步调用设备行为的能力
|
|
263
288
|
|
|
@@ -304,6 +329,63 @@ class IotexplorerClient(AbstractClient):
|
|
|
304
329
|
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
305
330
|
|
|
306
331
|
|
|
332
|
+
def CallDeviceRRPCSync(self, request):
|
|
333
|
+
r"""平台向设备发起一次同步 RRPC(Reverse RPC)调用——下行下发请求,同步阻塞等待设备回包,超时未回则返回 Timeout。
|
|
334
|
+
|
|
335
|
+
适用场景:
|
|
336
|
+
|
|
337
|
+
默认模式:使用平台保留 topic $iotrrpc/down 和 $iotrrpc/up。
|
|
338
|
+
自定义模式:业务自带下行 topic;Reply topic 可选 —— 不传时平台仅依赖 clientToken 关联上行 ack。
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
## 设备侧实现指引
|
|
343
|
+
|
|
344
|
+
### 默认模式
|
|
345
|
+
|
|
346
|
+
1. 订阅 `$iotrrpc/down/{ProductId}/{DeviceName}/+`;
|
|
347
|
+
2. 收到下行后,从 topic 末段解析 `{mid}`;
|
|
348
|
+
3. 向 `$iotrrpc/up/{ProductId}/{DeviceName}/{mid}` 发送回包,**payload 任意字节**(推荐 JSON)。
|
|
349
|
+
|
|
350
|
+
### 自定义模式
|
|
351
|
+
|
|
352
|
+
1. 订阅业务 `Topic`;
|
|
353
|
+
2. 解析 payload JSON,**保留 `clientToken` 字段**;
|
|
354
|
+
3. 处理业务后,构造 envelope JSON:
|
|
355
|
+
|
|
356
|
+
```json
|
|
357
|
+
{
|
|
358
|
+
"method": "rrpc_sync_reply",
|
|
359
|
+
"clientToken": "<原样回填>",
|
|
360
|
+
"payload": "<base64 of 业务字节>"
|
|
361
|
+
}
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
4. publish 到与平台 `ReplyTopic` 通配符匹配的具体 topic(推荐使用与下行同 topic)。
|
|
365
|
+
|
|
366
|
+
> ⚠️ `clientToken` **必填且必须原样回填**,否则平台无法关联,调用方将收到 `Status=Timeout`。
|
|
367
|
+
> ⚠️ `method` 必须为 `rrpc_sync_reply`,否则会直接 skip。
|
|
368
|
+
|
|
369
|
+
:param request: Request instance for CallDeviceRRPCSync.
|
|
370
|
+
:type request: :class:`tencentcloud.iotexplorer.v20190423.models.CallDeviceRRPCSyncRequest`
|
|
371
|
+
:rtype: :class:`tencentcloud.iotexplorer.v20190423.models.CallDeviceRRPCSyncResponse`
|
|
372
|
+
|
|
373
|
+
"""
|
|
374
|
+
try:
|
|
375
|
+
params = request._serialize()
|
|
376
|
+
headers = request.headers
|
|
377
|
+
body = self.call("CallDeviceRRPCSync", params, headers=headers)
|
|
378
|
+
response = json.loads(body)
|
|
379
|
+
model = models.CallDeviceRRPCSyncResponse()
|
|
380
|
+
model._deserialize(response["Response"])
|
|
381
|
+
return model
|
|
382
|
+
except Exception as e:
|
|
383
|
+
if isinstance(e, TencentCloudSDKException):
|
|
384
|
+
raise
|
|
385
|
+
else:
|
|
386
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
387
|
+
|
|
388
|
+
|
|
307
389
|
def ChangeP2PRoute(self, request):
|
|
308
390
|
r"""p2p路线切换(此接口目前处于内测接口,可以联系申请加白 )
|
|
309
391
|
|
|
@@ -5117,6 +5199,58 @@ class IotexplorerClient(AbstractClient):
|
|
|
5117
5199
|
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
5118
5200
|
|
|
5119
5201
|
|
|
5202
|
+
def RevokeBindUserDevice(self, request):
|
|
5203
|
+
r"""1. 按 `(IotAppID, OpenID)` 只读定位用户(不存在视为已解绑,幂等成功);
|
|
5204
|
+
2. 按 `(用户, FamilyName)` 只读定位家庭(不存在视为已解绑,幂等成功);
|
|
5205
|
+
3. 解除设备与该家庭的绑定关系,异步下发 `delete_device` 消息;解绑路径不校验设备存在性,允许设备已删除时清理残留绑定关系。
|
|
5206
|
+
|
|
5207
|
+
:param request: Request instance for RevokeBindUserDevice.
|
|
5208
|
+
:type request: :class:`tencentcloud.iotexplorer.v20190423.models.RevokeBindUserDeviceRequest`
|
|
5209
|
+
:rtype: :class:`tencentcloud.iotexplorer.v20190423.models.RevokeBindUserDeviceResponse`
|
|
5210
|
+
|
|
5211
|
+
"""
|
|
5212
|
+
try:
|
|
5213
|
+
params = request._serialize()
|
|
5214
|
+
headers = request.headers
|
|
5215
|
+
body = self.call("RevokeBindUserDevice", params, headers=headers)
|
|
5216
|
+
response = json.loads(body)
|
|
5217
|
+
model = models.RevokeBindUserDeviceResponse()
|
|
5218
|
+
model._deserialize(response["Response"])
|
|
5219
|
+
return model
|
|
5220
|
+
except Exception as e:
|
|
5221
|
+
if isinstance(e, TencentCloudSDKException):
|
|
5222
|
+
raise
|
|
5223
|
+
else:
|
|
5224
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
5225
|
+
|
|
5226
|
+
|
|
5227
|
+
def RevokeShareDeviceFromUser(self, request):
|
|
5228
|
+
r"""Owner 取消对指定用户的设备分享:
|
|
5229
|
+
1. 校验产品 ACL / 子产品禁止 / 设备真实存在;
|
|
5230
|
+
2. 只读定位 Owner(必须已存在),并校验 Owner 持有该设备;
|
|
5231
|
+
3. 只读定位被取消分享用户(不存在视为已取消,幂等成功);
|
|
5232
|
+
4. 删除分享关系记录(不存在视为已取消,幂等成功)。
|
|
5233
|
+
|
|
5234
|
+
:param request: Request instance for RevokeShareDeviceFromUser.
|
|
5235
|
+
:type request: :class:`tencentcloud.iotexplorer.v20190423.models.RevokeShareDeviceFromUserRequest`
|
|
5236
|
+
:rtype: :class:`tencentcloud.iotexplorer.v20190423.models.RevokeShareDeviceFromUserResponse`
|
|
5237
|
+
|
|
5238
|
+
"""
|
|
5239
|
+
try:
|
|
5240
|
+
params = request._serialize()
|
|
5241
|
+
headers = request.headers
|
|
5242
|
+
body = self.call("RevokeShareDeviceFromUser", params, headers=headers)
|
|
5243
|
+
response = json.loads(body)
|
|
5244
|
+
model = models.RevokeShareDeviceFromUserResponse()
|
|
5245
|
+
model._deserialize(response["Response"])
|
|
5246
|
+
return model
|
|
5247
|
+
except Exception as e:
|
|
5248
|
+
if isinstance(e, TencentCloudSDKException):
|
|
5249
|
+
raise
|
|
5250
|
+
else:
|
|
5251
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
5252
|
+
|
|
5253
|
+
|
|
5120
5254
|
def SearchPositionSpace(self, request):
|
|
5121
5255
|
r"""搜索位置空间
|
|
5122
5256
|
|
|
@@ -5186,6 +5320,33 @@ class IotexplorerClient(AbstractClient):
|
|
|
5186
5320
|
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
5187
5321
|
|
|
5188
5322
|
|
|
5323
|
+
def ShareDeviceToUser(self, request):
|
|
5324
|
+
r"""Owner 将其名下的设备分享给指定 App 用户:
|
|
5325
|
+
1. 校验产品 ACL / 子产品禁止 / 设备真实存在;
|
|
5326
|
+
2. 只读定位 Owner(必须已存在),并校验 Owner 确实持有该设备;
|
|
5327
|
+
3. 兜底创建被分享用户(已存在则复用,昵称不覆盖);
|
|
5328
|
+
4. 写入分享关系(重复分享幂等成功,不修改原 CreateTime)。
|
|
5329
|
+
|
|
5330
|
+
:param request: Request instance for ShareDeviceToUser.
|
|
5331
|
+
:type request: :class:`tencentcloud.iotexplorer.v20190423.models.ShareDeviceToUserRequest`
|
|
5332
|
+
:rtype: :class:`tencentcloud.iotexplorer.v20190423.models.ShareDeviceToUserResponse`
|
|
5333
|
+
|
|
5334
|
+
"""
|
|
5335
|
+
try:
|
|
5336
|
+
params = request._serialize()
|
|
5337
|
+
headers = request.headers
|
|
5338
|
+
body = self.call("ShareDeviceToUser", params, headers=headers)
|
|
5339
|
+
response = json.loads(body)
|
|
5340
|
+
model = models.ShareDeviceToUserResponse()
|
|
5341
|
+
model._deserialize(response["Response"])
|
|
5342
|
+
return model
|
|
5343
|
+
except Exception as e:
|
|
5344
|
+
if isinstance(e, TencentCloudSDKException):
|
|
5345
|
+
raise
|
|
5346
|
+
else:
|
|
5347
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
5348
|
+
|
|
5349
|
+
|
|
5189
5350
|
def TerminateTWeSeeSubscription(self, request):
|
|
5190
5351
|
r"""退订 TWeSee 预付费订阅
|
|
5191
5352
|
|
|
@@ -207,6 +207,26 @@ class IotexplorerClient(AbstractClient):
|
|
|
207
207
|
|
|
208
208
|
return await self.call_and_deserialize(**kwargs)
|
|
209
209
|
|
|
210
|
+
async def BindUserDevice(
|
|
211
|
+
self,
|
|
212
|
+
request: models.BindUserDeviceRequest,
|
|
213
|
+
opts: Dict = None,
|
|
214
|
+
) -> models.BindUserDeviceResponse:
|
|
215
|
+
"""
|
|
216
|
+
1. 按 `(IotAppID, OpenID)` 兜底创建 / 复用 app 端用户;
|
|
217
|
+
2. 按 `(用户, FamilyName)` 兜底创建 / 复用默认家庭;
|
|
218
|
+
3. 将设备直接绑定到该家庭(已绑同家庭视为成功,并继续异步下发 `bind_device` 消息)。
|
|
219
|
+
"""
|
|
220
|
+
|
|
221
|
+
kwargs = {}
|
|
222
|
+
kwargs["action"] = "BindUserDevice"
|
|
223
|
+
kwargs["params"] = request._serialize()
|
|
224
|
+
kwargs["resp_cls"] = models.BindUserDeviceResponse
|
|
225
|
+
kwargs["headers"] = request.headers
|
|
226
|
+
kwargs["opts"] = opts or {}
|
|
227
|
+
|
|
228
|
+
return await self.call_and_deserialize(**kwargs)
|
|
229
|
+
|
|
210
230
|
async def CallDeviceActionAsync(
|
|
211
231
|
self,
|
|
212
232
|
request: models.CallDeviceActionAsyncRequest,
|
|
@@ -243,6 +263,58 @@ class IotexplorerClient(AbstractClient):
|
|
|
243
263
|
|
|
244
264
|
return await self.call_and_deserialize(**kwargs)
|
|
245
265
|
|
|
266
|
+
async def CallDeviceRRPCSync(
|
|
267
|
+
self,
|
|
268
|
+
request: models.CallDeviceRRPCSyncRequest,
|
|
269
|
+
opts: Dict = None,
|
|
270
|
+
) -> models.CallDeviceRRPCSyncResponse:
|
|
271
|
+
"""
|
|
272
|
+
平台向设备发起一次同步 RRPC(Reverse RPC)调用——下行下发请求,同步阻塞等待设备回包,超时未回则返回 Timeout。
|
|
273
|
+
|
|
274
|
+
适用场景:
|
|
275
|
+
|
|
276
|
+
默认模式:使用平台保留 topic $iotrrpc/down 和 $iotrrpc/up。
|
|
277
|
+
自定义模式:业务自带下行 topic;Reply topic 可选 —— 不传时平台仅依赖 clientToken 关联上行 ack。
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
## 设备侧实现指引
|
|
282
|
+
|
|
283
|
+
### 默认模式
|
|
284
|
+
|
|
285
|
+
1. 订阅 `$iotrrpc/down/{ProductId}/{DeviceName}/+`;
|
|
286
|
+
2. 收到下行后,从 topic 末段解析 `{mid}`;
|
|
287
|
+
3. 向 `$iotrrpc/up/{ProductId}/{DeviceName}/{mid}` 发送回包,**payload 任意字节**(推荐 JSON)。
|
|
288
|
+
|
|
289
|
+
### 自定义模式
|
|
290
|
+
|
|
291
|
+
1. 订阅业务 `Topic`;
|
|
292
|
+
2. 解析 payload JSON,**保留 `clientToken` 字段**;
|
|
293
|
+
3. 处理业务后,构造 envelope JSON:
|
|
294
|
+
|
|
295
|
+
```json
|
|
296
|
+
{
|
|
297
|
+
"method": "rrpc_sync_reply",
|
|
298
|
+
"clientToken": "<原样回填>",
|
|
299
|
+
"payload": "<base64 of 业务字节>"
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
4. publish 到与平台 `ReplyTopic` 通配符匹配的具体 topic(推荐使用与下行同 topic)。
|
|
304
|
+
|
|
305
|
+
> ⚠️ `clientToken` **必填且必须原样回填**,否则平台无法关联,调用方将收到 `Status=Timeout`。
|
|
306
|
+
> ⚠️ `method` 必须为 `rrpc_sync_reply`,否则会直接 skip。
|
|
307
|
+
"""
|
|
308
|
+
|
|
309
|
+
kwargs = {}
|
|
310
|
+
kwargs["action"] = "CallDeviceRRPCSync"
|
|
311
|
+
kwargs["params"] = request._serialize()
|
|
312
|
+
kwargs["resp_cls"] = models.CallDeviceRRPCSyncResponse
|
|
313
|
+
kwargs["headers"] = request.headers
|
|
314
|
+
kwargs["opts"] = opts or {}
|
|
315
|
+
|
|
316
|
+
return await self.call_and_deserialize(**kwargs)
|
|
317
|
+
|
|
246
318
|
async def ChangeP2PRoute(
|
|
247
319
|
self,
|
|
248
320
|
request: models.ChangeP2PRouteRequest,
|
|
@@ -4011,6 +4083,48 @@ class IotexplorerClient(AbstractClient):
|
|
|
4011
4083
|
|
|
4012
4084
|
return await self.call_and_deserialize(**kwargs)
|
|
4013
4085
|
|
|
4086
|
+
async def RevokeBindUserDevice(
|
|
4087
|
+
self,
|
|
4088
|
+
request: models.RevokeBindUserDeviceRequest,
|
|
4089
|
+
opts: Dict = None,
|
|
4090
|
+
) -> models.RevokeBindUserDeviceResponse:
|
|
4091
|
+
"""
|
|
4092
|
+
1. 按 `(IotAppID, OpenID)` 只读定位用户(不存在视为已解绑,幂等成功);
|
|
4093
|
+
2. 按 `(用户, FamilyName)` 只读定位家庭(不存在视为已解绑,幂等成功);
|
|
4094
|
+
3. 解除设备与该家庭的绑定关系,异步下发 `delete_device` 消息;解绑路径不校验设备存在性,允许设备已删除时清理残留绑定关系。
|
|
4095
|
+
"""
|
|
4096
|
+
|
|
4097
|
+
kwargs = {}
|
|
4098
|
+
kwargs["action"] = "RevokeBindUserDevice"
|
|
4099
|
+
kwargs["params"] = request._serialize()
|
|
4100
|
+
kwargs["resp_cls"] = models.RevokeBindUserDeviceResponse
|
|
4101
|
+
kwargs["headers"] = request.headers
|
|
4102
|
+
kwargs["opts"] = opts or {}
|
|
4103
|
+
|
|
4104
|
+
return await self.call_and_deserialize(**kwargs)
|
|
4105
|
+
|
|
4106
|
+
async def RevokeShareDeviceFromUser(
|
|
4107
|
+
self,
|
|
4108
|
+
request: models.RevokeShareDeviceFromUserRequest,
|
|
4109
|
+
opts: Dict = None,
|
|
4110
|
+
) -> models.RevokeShareDeviceFromUserResponse:
|
|
4111
|
+
"""
|
|
4112
|
+
Owner 取消对指定用户的设备分享:
|
|
4113
|
+
1. 校验产品 ACL / 子产品禁止 / 设备真实存在;
|
|
4114
|
+
2. 只读定位 Owner(必须已存在),并校验 Owner 持有该设备;
|
|
4115
|
+
3. 只读定位被取消分享用户(不存在视为已取消,幂等成功);
|
|
4116
|
+
4. 删除分享关系记录(不存在视为已取消,幂等成功)。
|
|
4117
|
+
"""
|
|
4118
|
+
|
|
4119
|
+
kwargs = {}
|
|
4120
|
+
kwargs["action"] = "RevokeShareDeviceFromUser"
|
|
4121
|
+
kwargs["params"] = request._serialize()
|
|
4122
|
+
kwargs["resp_cls"] = models.RevokeShareDeviceFromUserResponse
|
|
4123
|
+
kwargs["headers"] = request.headers
|
|
4124
|
+
kwargs["opts"] = opts or {}
|
|
4125
|
+
|
|
4126
|
+
return await self.call_and_deserialize(**kwargs)
|
|
4127
|
+
|
|
4014
4128
|
async def SearchPositionSpace(
|
|
4015
4129
|
self,
|
|
4016
4130
|
request: models.SearchPositionSpaceRequest,
|
|
@@ -4065,6 +4179,28 @@ class IotexplorerClient(AbstractClient):
|
|
|
4065
4179
|
|
|
4066
4180
|
return await self.call_and_deserialize(**kwargs)
|
|
4067
4181
|
|
|
4182
|
+
async def ShareDeviceToUser(
|
|
4183
|
+
self,
|
|
4184
|
+
request: models.ShareDeviceToUserRequest,
|
|
4185
|
+
opts: Dict = None,
|
|
4186
|
+
) -> models.ShareDeviceToUserResponse:
|
|
4187
|
+
"""
|
|
4188
|
+
Owner 将其名下的设备分享给指定 App 用户:
|
|
4189
|
+
1. 校验产品 ACL / 子产品禁止 / 设备真实存在;
|
|
4190
|
+
2. 只读定位 Owner(必须已存在),并校验 Owner 确实持有该设备;
|
|
4191
|
+
3. 兜底创建被分享用户(已存在则复用,昵称不覆盖);
|
|
4192
|
+
4. 写入分享关系(重复分享幂等成功,不修改原 CreateTime)。
|
|
4193
|
+
"""
|
|
4194
|
+
|
|
4195
|
+
kwargs = {}
|
|
4196
|
+
kwargs["action"] = "ShareDeviceToUser"
|
|
4197
|
+
kwargs["params"] = request._serialize()
|
|
4198
|
+
kwargs["resp_cls"] = models.ShareDeviceToUserResponse
|
|
4199
|
+
kwargs["headers"] = request.headers
|
|
4200
|
+
kwargs["opts"] = opts or {}
|
|
4201
|
+
|
|
4202
|
+
return await self.call_and_deserialize(**kwargs)
|
|
4203
|
+
|
|
4068
4204
|
async def TerminateTWeSeeSubscription(
|
|
4069
4205
|
self,
|
|
4070
4206
|
request: models.TerminateTWeSeeSubscriptionRequest,
|