diff options
| author | Zhineng Li <im@zhineng.li> | 2026-07-12 17:11:17 +0800 |
|---|---|---|
| committer | Zhineng Li <im@zhineng.li> | 2026-07-12 17:11:17 +0800 |
| commit | 1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634 (patch) | |
| tree | 5f0857666365b7e40cdaa3733ebe1f3ba9e13c67 /data/zh_cn/linkvisual/2023-06-30/api-docs.php | |
| parent | 7347bac4ab7e136157fc94777e6cf87ef9e08599 (diff) | |
| download | afterglow-metadata-full-1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634.tar.gz afterglow-metadata-full-1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634.zip | |
update APIs 20260712
Diffstat (limited to 'data/zh_cn/linkvisual/2023-06-30/api-docs.php')
| -rw-r--r-- | data/zh_cn/linkvisual/2023-06-30/api-docs.php | 7567 |
1 files changed, 2868 insertions, 4699 deletions
diff --git a/data/zh_cn/linkvisual/2023-06-30/api-docs.php b/data/zh_cn/linkvisual/2023-06-30/api-docs.php index 668ef12..65ae76b 100644 --- a/data/zh_cn/linkvisual/2023-06-30/api-docs.php +++ b/data/zh_cn/linkvisual/2023-06-30/api-docs.php @@ -1,65 +1,139 @@ <?php return [ 'version' => '1.0', - 'info' => [ - 'style' => 'RPC', - 'product' => 'Linkvisual', - 'version' => '2023-06-30', - ], + 'info' => ['style' => 'RPC', 'product' => 'Linkvisual', 'version' => '2023-06-30'], 'directories' => [ [ - 'id' => 352715, - 'title' => '其他', - 'type' => 'directory', 'children' => [ - 'BindStorageOrder', - 'CheckFreeStorageValid', - 'ConsumeFreeStorage', - 'CreateAndPayStorageOrder', - 'EnableFreeStorage', - 'EnableStorageOrder', - 'FreezeFreeStorage', - 'GenerateDevice', - 'FreezeStorageOrder', - 'GenerateDeviceByBatchId', - 'QueryBatchStatus', - 'QueryDeviceDetail', - 'QueryFreeStorage', - 'QueryDevicesDownloadUrl', - 'QueryGenerateDevicesInfoList', - 'QueryGenerateDevicesRecord', - 'QueryStorageCommodityList', - 'QueryStorageOrder', - 'QueryStorageOrderList', - 'TransferStorageOrder', - 'UploadDeviceNameList', - 'GetThingEventSnapshot', - 'BatchBindDevice', - 'GetAccountById', - 'GetDeviceStatus', - 'GetSubDeviceList', - 'GetThingPropertySnapshot', - 'InvokeThingService', - 'ListBindingAccountByDevice', - 'ListBindingDeviceByAccount', - 'SetThingProperty', - 'UnbindAllUserByDevice', - 'UnbindDevice', + 'BindStorageOrder', 'CheckFreeStorageValid', 'ConsumeFreeStorage', 'CreateAndPayStorageOrder', 'EnableFreeStorage', 'EnableStorageOrder', 'FreezeFreeStorage', 'GenerateDevice', 'FreezeStorageOrder', 'GenerateDeviceByBatchId', 'QueryBatchStatus', 'QueryDeviceDetail', 'QueryFreeStorage', 'QueryDevicesDownloadUrl', 'QueryGenerateDevicesInfoList', 'QueryGenerateDevicesRecord', 'QueryStorageCommodityList', 'QueryStorageOrder', 'QueryStorageOrderList', 'TransferStorageOrder', + 'UploadDeviceNameList', 'GetThingEventSnapshot', 'BatchBindDevice', 'GetAccountById', 'GetDeviceStatus', 'GetSubDeviceList', 'GetThingPropertySnapshot', 'InvokeThingService', 'ListBindingAccountByDevice', 'ListBindingDeviceByAccount', 'SetThingProperty', 'UnbindAllUserByDevice', 'UnbindDevice', ], + 'type' => 'directory', + 'title' => '其他', + 'id' => 298112, ], ], 'components' => [ 'schemas' => [], ], 'apis' => [ - 'BindStorageOrder' => [ - 'methods' => [ - 'post', - 'get', + 'BatchBindDevice' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], ], - 'schemes' => [ - 'http', - 'https', + 'systemTags' => [], + 'parameters' => [ + [ + 'name' => 'OpenId', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => false], + ], + [ + 'name' => 'OpenIdAppKey', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => false], + ], + [ + 'name' => 'IdentityId', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => false], + ], + [ + 'name' => 'DeviceList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ProductKey' => ['type' => 'string', 'required' => false], + 'DeviceName' => ['type' => 'string', 'required' => false], + 'IotId' => ['type' => 'string', 'required' => false], + ], + ], + 'required' => true, + 'maxItems' => 20, + ], + ], ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], + 'Data' => [ + 'type' => 'object', + 'properties' => [ + 'BindDeviceList' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'BindResultMessage' => ['type' => 'string'], + 'ProductKey' => ['type' => 'string'], + 'BindResultCode' => ['type' => 'integer', 'format' => 'int32'], + 'DeviceName' => ['type' => 'string'], + 'IotId' => ['type' => 'string'], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.GetAccountInfoFailed', 'errorMessage' => 'Get account info failed.', 'description' => '查询账号详情信息失败。'], + ['errorCode' => 'iot.vision.AccountNotFound', 'errorMessage' => 'Account not found.', 'description' => '找不到账号。'], + ['errorCode' => 'iot.vision.TenantMismatch', 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', 'description' => '接口调用方的租户和账号归属的租户不一致。'], + ['errorCode' => 'iot.vision.IdentityAppKeyProductNotBind', 'errorMessage' => 'The app associated with the identityId does not have permission to access the product.', 'description' => '账号对应AppKey没有关联产品。'], + ['errorCode' => 'iot.vision.BindFailed', 'errorMessage' => 'Bind account and device failed.', 'description' => '账号和设备绑定失败。'], + ], + 403 => [ + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], + ], + 429 => [ + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], + ], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BatchBindDevice'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:BatchBindDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"BindDeviceList\\": [\\n {\\n \\"BindResultMessage\\": \\"\\",\\n \\"ProductKey\\": \\"\\",\\n \\"BindResultCode\\": 0,\\n \\"DeviceName\\": \\"\\",\\n \\"IotId\\": \\"\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'BindStorageOrder' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -70,104 +144,57 @@ [ 'name' => 'EventRecordDuration', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '30', - 'minimum' => '0', - 'default' => '10', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '30', 'minimum' => '0', 'default' => '10'], ], [ 'name' => 'OrderId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'EventRecordProlong', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ 'name' => 'UserName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'UserId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'MaxRecordFileDuration', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '3600', - 'minimum' => '600', - 'default' => '1800', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '3600', 'minimum' => '600', 'default' => '1800'], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'EnableDefaultPlan', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ 'name' => 'PreRecordDuration', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '5', - 'minimum' => '0', - 'default' => '0', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '5', 'minimum' => '0', 'default' => '0'], ], ], 'responses' => [ @@ -175,84 +202,32 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'Status' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Copies' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Specification' => [ - 'type' => 'string', - ], - 'RecordType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'CommodityCode' => [ - 'type' => 'string', - ], - 'PreConsume' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'EndTimeUTC' => [ - 'type' => 'string', - ], - 'UserId' => [ - 'type' => 'string', - ], - 'IdentityId' => [ - 'type' => 'string', - ], - 'StartTimeUTC' => [ - 'type' => 'string', - ], - 'EndTime' => [ - 'type' => 'string', - ], - 'StartTime' => [ - 'type' => 'string', - ], - 'OutOrderNo' => [ - 'type' => 'string', - ], - 'Price' => [ - 'type' => 'string', - ], - 'OrderType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'PaymentStatus' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'UserName' => [ - 'type' => 'string', - ], - 'OrderId' => [ - 'type' => 'string', - ], - 'IotId' => [ - 'type' => 'string', - ], + 'Status' => ['type' => 'integer', 'format' => 'int32'], + 'Copies' => ['type' => 'integer', 'format' => 'int32'], + 'Specification' => ['type' => 'string'], + 'RecordType' => ['type' => 'integer', 'format' => 'int32'], + 'CommodityCode' => ['type' => 'string'], + 'PreConsume' => ['type' => 'integer', 'format' => 'int32'], + 'EndTimeUTC' => ['type' => 'string'], + 'UserId' => ['type' => 'string'], + 'IdentityId' => ['type' => 'string'], + 'StartTimeUTC' => ['type' => 'string'], + 'EndTime' => ['type' => 'string'], + 'StartTime' => ['type' => 'string'], + 'OutOrderNo' => ['type' => 'string'], + 'Price' => ['type' => 'string'], + 'OrderType' => ['type' => 'integer', 'format' => 'int32'], + 'PaymentStatus' => ['type' => 'integer', 'format' => 'int32'], + 'UserName' => ['type' => 'string'], + 'OrderId' => ['type' => 'string'], + 'IotId' => ['type' => 'string'], ], ], ], @@ -261,74 +236,49 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.InvalidStorageOrder', - 'errorMessage' => 'Invalid storage order.', - ], - [ - 'errorCode' => 'iot.vision.DeviceOwnerChanged', - 'errorMessage' => 'Device owner changed.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderGetLockFailed', - 'errorMessage' => 'Get storage order lock failed try again later.', - ], - [ - 'errorCode' => 'iot.vision.GetOwnerIdentityInfoFailed', - 'errorMessage' => 'Get owner identity info failed.', - ], - [ - 'errorCode' => 'iot.vision.SetDefaultRecordPlanFailed', - 'errorMessage' => 'Set default record plan failed.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.InvalidStorageOrder', 'errorMessage' => 'Invalid storage order.', 'description' => '无效的云存储订单。'], + ['errorCode' => 'iot.vision.DeviceOwnerChanged', 'errorMessage' => 'Device owner changed.', 'description' => '设备的管理员用户变更。'], + ['errorCode' => 'iot.vision.StorageOrderGetLockFailed', 'errorMessage' => 'Get storage order lock failed try again later.', 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['errorCode' => 'iot.vision.GetOwnerIdentityInfoFailed', 'errorMessage' => 'Get owner identity info failed.', 'description' => '查询设备管理员用户信息失败。'], + ['errorCode' => 'iot.vision.SetDefaultRecordPlanFailed', 'errorMessage' => 'Set default record plan failed.', 'description' => '设置默认的录像计划失败。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], + ], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BindStorageOrder'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:BindStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Status\\": 0,\\n \\"Copies\\": 0,\\n \\"Specification\\": \\"\\",\\n \\"RecordType\\": 0,\\n \\"CommodityCode\\": \\"\\",\\n \\"PreConsume\\": 0,\\n \\"EndTimeUTC\\": \\"\\",\\n \\"UserId\\": \\"\\",\\n \\"IdentityId\\": \\"\\",\\n \\"StartTimeUTC\\": \\"\\",\\n \\"EndTime\\": \\"\\",\\n \\"StartTime\\": \\"\\",\\n \\"OutOrderNo\\": \\"\\",\\n \\"Price\\": \\"\\",\\n \\"OrderType\\": 0,\\n \\"PaymentStatus\\": 0,\\n \\"UserName\\": \\"\\",\\n \\"OrderId\\": \\"\\",\\n \\"IotId\\": \\"\\"\\n }\\n}","type":"json"}]', ], 'CheckFreeStorageValid' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -339,26 +289,17 @@ [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], ], 'responses' => [ @@ -366,84 +307,57 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.FreeStorageQuotaLimit', - 'errorMessage' => 'No enough free storage quota or exceed limit.', - ], - [ - 'errorCode' => 'iot.vision.InvalidStorageCommodity', - 'errorMessage' => 'Invalid storage commodity.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], - [ - 'errorCode' => 'iot.vision.GetDeviceInfoFailed', - 'errorMessage' => 'Get device info failed.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.FreeStorageQuotaLimit', 'errorMessage' => 'No enough free storage quota or exceed limit.', 'description' => '免费试用的云存储配额不足或超限制。'], + ['errorCode' => 'iot.vision.InvalidStorageCommodity', 'errorMessage' => 'Invalid storage commodity.', 'description' => '无效的云存储商品规格。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], + ['errorCode' => 'iot.vision.GetDeviceInfoFailed', 'errorMessage' => 'Get device info failed.', 'description' => '查询设备详情失败。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], + ], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckFreeStorageValid'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:CheckFreeStorageValid', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true\\n}","type":"json"}]', ], 'ConsumeFreeStorage' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -454,88 +368,47 @@ [ 'name' => 'EventRecordProlong', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ 'name' => 'EventRecordDuration', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '30', - 'minimum' => '0', - 'default' => '10', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '30', 'minimum' => '0', 'default' => '10'], ], [ 'name' => 'ImmediateUse', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'EnableDefaultPlan', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ 'name' => 'PreRecordDuration', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '5', - 'minimum' => '0', - 'default' => '0', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '5', 'minimum' => '0', 'default' => '0'], ], [ 'name' => 'Quota', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '100', - 'minimum' => '1', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '1'], ], ], 'responses' => [ @@ -543,57 +416,23 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'type' => 'string', - ], - 'Type' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'StartTime' => [ - 'type' => 'string', - ], - 'EndTimeUTC' => [ - 'type' => 'string', - ], - 'Months' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Expired' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'RemainQuota' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'StartTimeUTC' => [ - 'type' => 'string', - ], - 'Consumed' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Lifecycle' => [ - 'type' => 'integer', - 'format' => 'int32', - ], + 'EndTime' => ['type' => 'string'], + 'Type' => ['type' => 'integer', 'format' => 'int32'], + 'StartTime' => ['type' => 'string'], + 'EndTimeUTC' => ['type' => 'string'], + 'Months' => ['type' => 'integer', 'format' => 'int32'], + 'Expired' => ['type' => 'integer', 'format' => 'int32'], + 'RemainQuota' => ['type' => 'integer', 'format' => 'int32'], + 'StartTimeUTC' => ['type' => 'string'], + 'Consumed' => ['type' => 'integer', 'format' => 'int32'], + 'Lifecycle' => ['type' => 'integer', 'format' => 'int32'], ], ], ], @@ -602,74 +441,44 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.FreeStorageQuotaLimit', - 'errorMessage' => 'No enough free storage quota or exceed limit.', - ], - [ - 'errorCode' => 'iot.vision.GetOwnerIdentityInfoFailed', - 'errorMessage' => 'Get owner identity info failed.', - ], - [ - 'errorCode' => 'iot.vision.GetDeviceInfoFailed', - 'errorMessage' => 'Get device info failed.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderGetLockFailed', - 'errorMessage' => 'Get storage order lock failed try again later.', - ], - [ - 'errorCode' => 'iot.vision.SetDefaultRecordPlanFailed', - 'errorMessage' => 'Set default record plan failed.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.FreeStorageQuotaLimit', 'errorMessage' => 'No enough free storage quota or exceed limit.', 'description' => '免费试用的云存储配额不足或超限制。'], + ['errorCode' => 'iot.vision.GetOwnerIdentityInfoFailed', 'errorMessage' => 'Get owner identity info failed.', 'description' => '查询设备管理员用户信息失败。'], + ['errorCode' => 'iot.vision.GetDeviceInfoFailed', 'errorMessage' => 'Get device info failed.', 'description' => '查询设备详情失败。'], + ['errorCode' => 'iot.vision.StorageOrderGetLockFailed', 'errorMessage' => 'Get storage order lock failed try again later.', 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['errorCode' => 'iot.vision.SetDefaultRecordPlanFailed', 'errorMessage' => 'Set default record plan failed.', 'description' => '设置默认的录像计划失败。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], + ], + ], + 'changeSet' => [], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:ConsumeFreeStorage', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"EndTime\\": \\"\\",\\n \\"Type\\": 0,\\n \\"StartTime\\": \\"\\",\\n \\"EndTimeUTC\\": \\"\\",\\n \\"Months\\": 0,\\n \\"Expired\\": 0,\\n \\"RemainQuota\\": 0,\\n \\"StartTimeUTC\\": \\"\\",\\n \\"Consumed\\": 0,\\n \\"Lifecycle\\": 0\\n }\\n}","type":"json"}]', ], 'CreateAndPayStorageOrder' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -680,141 +489,77 @@ [ 'name' => 'DeviceNoOwner', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ 'name' => 'EventRecordDuration', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '30', - 'minimum' => '0', - 'default' => '10', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '30', 'minimum' => '0', 'default' => '10'], ], [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'Copies', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '100', - 'minimum' => '1', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '100', 'minimum' => '1'], ], [ 'name' => 'CommodityCode', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ 'name' => 'EventRecordProlong', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ 'name' => 'Specification', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ 'name' => 'ImmediateUse', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ 'name' => 'UserName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'UserId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'MaxRecordFileDuration', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '3600', - 'minimum' => '600', - 'default' => '1800', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '3600', 'minimum' => '600', 'default' => '1800'], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'EnableDefaultPlan', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ 'name' => 'PreRecordDuration', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '5', - 'minimum' => '0', - 'default' => '0', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '5', 'minimum' => '0', 'default' => '0'], ], ], 'responses' => [ @@ -822,84 +567,32 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'Status' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Copies' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Specification' => [ - 'type' => 'string', - ], - 'RecordType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'CommodityCode' => [ - 'type' => 'string', - ], - 'PreConsume' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'EndTimeUTC' => [ - 'type' => 'string', - ], - 'UserId' => [ - 'type' => 'string', - ], - 'IdentityId' => [ - 'type' => 'string', - ], - 'StartTimeUTC' => [ - 'type' => 'string', - ], - 'EndTime' => [ - 'type' => 'string', - ], - 'StartTime' => [ - 'type' => 'string', - ], - 'OutOrderNo' => [ - 'type' => 'string', - ], - 'Price' => [ - 'type' => 'string', - ], - 'OrderType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'PaymentStatus' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'UserName' => [ - 'type' => 'string', - ], - 'OrderId' => [ - 'type' => 'string', - ], - 'IotId' => [ - 'type' => 'string', - ], + 'Status' => ['type' => 'integer', 'format' => 'int32'], + 'Copies' => ['type' => 'integer', 'format' => 'int32'], + 'Specification' => ['type' => 'string'], + 'RecordType' => ['type' => 'integer', 'format' => 'int32'], + 'CommodityCode' => ['type' => 'string'], + 'PreConsume' => ['type' => 'integer', 'format' => 'int32'], + 'EndTimeUTC' => ['type' => 'string'], + 'UserId' => ['type' => 'string'], + 'IdentityId' => ['type' => 'string'], + 'StartTimeUTC' => ['type' => 'string'], + 'EndTime' => ['type' => 'string'], + 'StartTime' => ['type' => 'string'], + 'OutOrderNo' => ['type' => 'string'], + 'Price' => ['type' => 'string'], + 'OrderType' => ['type' => 'integer', 'format' => 'int32'], + 'PaymentStatus' => ['type' => 'integer', 'format' => 'int32'], + 'UserName' => ['type' => 'string'], + 'OrderId' => ['type' => 'string'], + 'IotId' => ['type' => 'string'], ], ], ], @@ -908,98 +601,55 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.CreateStorageOrderFailed', - 'errorMessage' => 'Create storage order failed.', - ], - [ - 'errorCode' => 'iot.vision.GetDeviceInfoFailed', - 'errorMessage' => 'Get device info failed.', - ], - [ - 'errorCode' => 'iot.vision.InvalidStorageCommodity', - 'errorMessage' => 'Invalid storage commodity.', - ], - [ - 'errorCode' => 'iot.vision.StorageCommodityUnavailable', - 'errorMessage' => 'Storage commodity unavailable.', - ], - [ - 'errorCode' => 'iot.vision.GetOwnerIdentityInfoFailed', - 'errorMessage' => 'Get owner identity info failed.', - ], - [ - 'errorCode' => 'iot.vision.SetDefaultRecordPlanFailed', - 'errorMessage' => 'Set default record plan failed.', - ], - [ - 'errorCode' => 'iot.vision.QueryCommodityPriceFailed', - 'errorMessage' => 'Query commodity price failed.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderGetLockFailed', - 'errorMessage' => 'Get storage order lock failed try again later.', - ], - [ - 'errorCode' => 'iot.vision.InvalidStorageOrder', - 'errorMessage' => 'Invalid storage order.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderAlreadyPaid', - 'errorMessage' => 'Storage order had been paid.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderPayFailed', - 'errorMessage' => 'Storage order pay failed.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.CreateStorageOrderFailed', 'errorMessage' => 'Create storage order failed.', 'description' => '创建云存储订单失败。'], + ['errorCode' => 'iot.vision.GetDeviceInfoFailed', 'errorMessage' => 'Get device info failed.', 'description' => '查询设备详情失败。'], + ['errorCode' => 'iot.vision.InvalidStorageCommodity', 'errorMessage' => 'Invalid storage commodity.', 'description' => '无效的云存储商品规格。'], + ['errorCode' => 'iot.vision.StorageCommodityUnavailable', 'errorMessage' => 'Storage commodity unavailable.', 'description' => '云存储商品不支持使用。'], + ['errorCode' => 'iot.vision.GetOwnerIdentityInfoFailed', 'errorMessage' => 'Get owner identity info failed.', 'description' => '查询设备管理员用户信息失败。'], + ['errorCode' => 'iot.vision.SetDefaultRecordPlanFailed', 'errorMessage' => 'Set default record plan failed.', 'description' => '设置默认的录像计划失败。'], + ['errorCode' => 'iot.vision.QueryCommodityPriceFailed', 'errorMessage' => 'Query commodity price failed.', 'description' => '查询云存储商品价格失败。'], + ['errorCode' => 'iot.vision.StorageOrderGetLockFailed', 'errorMessage' => 'Get storage order lock failed try again later.', 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['errorCode' => 'iot.vision.InvalidStorageOrder', 'errorMessage' => 'Invalid storage order.', 'description' => '无效的云存储订单。'], + ['errorCode' => 'iot.vision.StorageOrderAlreadyPaid', 'errorMessage' => 'Storage order had been paid.', 'description' => '云存储订单已经支付。'], + ['errorCode' => 'iot.vision.StorageOrderPayFailed', 'errorMessage' => 'Storage order pay failed.', 'description' => '云存储订单支付失败。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], + ], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateAndPayStorageOrder'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:CreateAndPayStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Status\\": 0,\\n \\"Copies\\": 0,\\n \\"Specification\\": \\"\\",\\n \\"RecordType\\": 0,\\n \\"CommodityCode\\": \\"\\",\\n \\"PreConsume\\": 0,\\n \\"EndTimeUTC\\": \\"\\",\\n \\"UserId\\": \\"\\",\\n \\"IdentityId\\": \\"\\",\\n \\"StartTimeUTC\\": \\"\\",\\n \\"EndTime\\": \\"\\",\\n \\"StartTime\\": \\"\\",\\n \\"OutOrderNo\\": \\"\\",\\n \\"Price\\": \\"\\",\\n \\"OrderType\\": 0,\\n \\"PaymentStatus\\": 0,\\n \\"UserName\\": \\"\\",\\n \\"OrderId\\": \\"\\",\\n \\"IotId\\": \\"\\"\\n }\\n}","type":"json"}]', ], 'EnableFreeStorage' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -1010,26 +660,17 @@ [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], ], 'responses' => [ @@ -1037,57 +678,23 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'type' => 'string', - ], - 'Type' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'StartTime' => [ - 'type' => 'string', - ], - 'EndTimeUTC' => [ - 'type' => 'string', - ], - 'Months' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Expired' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'RemainQuota' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'StartTimeUTC' => [ - 'type' => 'string', - ], - 'Consumed' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Lifecycle' => [ - 'type' => 'integer', - 'format' => 'int32', - ], + 'EndTime' => ['type' => 'string'], + 'Type' => ['type' => 'integer', 'format' => 'int32'], + 'StartTime' => ['type' => 'string'], + 'EndTimeUTC' => ['type' => 'string'], + 'Months' => ['type' => 'integer', 'format' => 'int32'], + 'Expired' => ['type' => 'integer', 'format' => 'int32'], + 'RemainQuota' => ['type' => 'integer', 'format' => 'int32'], + 'StartTimeUTC' => ['type' => 'string'], + 'Consumed' => ['type' => 'integer', 'format' => 'int32'], + 'Lifecycle' => ['type' => 'integer', 'format' => 'int32'], ], ], ], @@ -1096,66 +703,47 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.FreeStorageQuotaLimit', - 'errorMessage' => 'No enough free storage quota or exceed limit.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderGetLockFailed', - 'errorMessage' => 'Get storage order lock failed try again later.', - ], - [ - 'errorCode' => 'iot.vision.InvalidStorageOrder', - 'errorMessage' => 'Invalid storage order.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.FreeStorageQuotaLimit', 'errorMessage' => 'No enough free storage quota or exceed limit.', 'description' => '免费试用的云存储配额不足或超限制。'], + ['errorCode' => 'iot.vision.StorageOrderGetLockFailed', 'errorMessage' => 'Get storage order lock failed try again later.', 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['errorCode' => 'iot.vision.InvalidStorageOrder', 'errorMessage' => 'Invalid storage order.', 'description' => '无效的云存储订单。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], + ], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EnableFreeStorage'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:EnableFreeStorage', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"EndTime\\": \\"\\",\\n \\"Type\\": 0,\\n \\"StartTime\\": \\"\\",\\n \\"EndTimeUTC\\": \\"\\",\\n \\"Months\\": 0,\\n \\"Expired\\": 0,\\n \\"RemainQuota\\": 0,\\n \\"StartTimeUTC\\": \\"\\",\\n \\"Consumed\\": 0,\\n \\"Lifecycle\\": 0\\n }\\n}","type":"json"}]', ], 'EnableStorageOrder' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -1166,34 +754,22 @@ [ 'name' => 'OrderId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], ], 'responses' => [ @@ -1201,84 +777,32 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'Status' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Copies' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Specification' => [ - 'type' => 'string', - ], - 'RecordType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'CommodityCode' => [ - 'type' => 'string', - ], - 'PreConsume' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'EndTimeUTC' => [ - 'type' => 'string', - ], - 'UserId' => [ - 'type' => 'string', - ], - 'IdentityId' => [ - 'type' => 'string', - ], - 'StartTimeUTC' => [ - 'type' => 'string', - ], - 'EndTime' => [ - 'type' => 'string', - ], - 'StartTime' => [ - 'type' => 'string', - ], - 'OutOrderNo' => [ - 'type' => 'string', - ], - 'Price' => [ - 'type' => 'string', - ], - 'OrderType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'PaymentStatus' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'UserName' => [ - 'type' => 'string', - ], - 'OrderId' => [ - 'type' => 'string', - ], - 'IotId' => [ - 'type' => 'string', - ], + 'Status' => ['type' => 'integer', 'format' => 'int32'], + 'Copies' => ['type' => 'integer', 'format' => 'int32'], + 'Specification' => ['type' => 'string'], + 'RecordType' => ['type' => 'integer', 'format' => 'int32'], + 'CommodityCode' => ['type' => 'string'], + 'PreConsume' => ['type' => 'integer', 'format' => 'int32'], + 'EndTimeUTC' => ['type' => 'string'], + 'UserId' => ['type' => 'string'], + 'IdentityId' => ['type' => 'string'], + 'StartTimeUTC' => ['type' => 'string'], + 'EndTime' => ['type' => 'string'], + 'StartTime' => ['type' => 'string'], + 'OutOrderNo' => ['type' => 'string'], + 'Price' => ['type' => 'string'], + 'OrderType' => ['type' => 'integer', 'format' => 'int32'], + 'PaymentStatus' => ['type' => 'integer', 'format' => 'int32'], + 'UserName' => ['type' => 'string'], + 'OrderId' => ['type' => 'string'], + 'IotId' => ['type' => 'string'], ], ], ], @@ -1287,70 +811,48 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.InvalidStorageOrder', - 'errorMessage' => 'Invalid storage order.', - ], - [ - 'errorCode' => 'iot.vision.DeviceOwnerChanged', - 'errorMessage' => 'Device owner changed.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderGetLockFailed', - 'errorMessage' => 'Get storage order lock failed try again later.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderStatusInvalid', - 'errorMessage' => 'Storage order status invalid.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.InvalidStorageOrder', 'errorMessage' => 'Invalid storage order.', 'description' => '无效的云存储订单。'], + ['errorCode' => 'iot.vision.DeviceOwnerChanged', 'errorMessage' => 'Device owner changed.', 'description' => '设备的管理员用户变更。'], + ['errorCode' => 'iot.vision.StorageOrderGetLockFailed', 'errorMessage' => 'Get storage order lock failed try again later.', 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['errorCode' => 'iot.vision.StorageOrderStatusInvalid', 'errorMessage' => 'Storage order status invalid.', 'description' => '当前云存储订单状态不支持操作。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], + ], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EnableStorageOrder'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:EnableStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Status\\": 0,\\n \\"Copies\\": 0,\\n \\"Specification\\": \\"\\",\\n \\"RecordType\\": 0,\\n \\"CommodityCode\\": \\"\\",\\n \\"PreConsume\\": 0,\\n \\"EndTimeUTC\\": \\"\\",\\n \\"UserId\\": \\"\\",\\n \\"IdentityId\\": \\"\\",\\n \\"StartTimeUTC\\": \\"\\",\\n \\"EndTime\\": \\"\\",\\n \\"StartTime\\": \\"\\",\\n \\"OutOrderNo\\": \\"\\",\\n \\"Price\\": \\"\\",\\n \\"OrderType\\": 0,\\n \\"PaymentStatus\\": 0,\\n \\"UserName\\": \\"\\",\\n \\"OrderId\\": \\"\\",\\n \\"IotId\\": \\"\\"\\n }\\n}","type":"json"}]', ], 'FreezeFreeStorage' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -1361,26 +863,17 @@ [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], ], 'responses' => [ @@ -1388,57 +881,23 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'type' => 'string', - ], - 'Type' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'StartTime' => [ - 'type' => 'string', - ], - 'EndTimeUTC' => [ - 'type' => 'string', - ], - 'Months' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Expired' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'RemainQuota' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'StartTimeUTC' => [ - 'type' => 'string', - ], - 'Consumed' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Lifecycle' => [ - 'type' => 'integer', - 'format' => 'int32', - ], + 'EndTime' => ['type' => 'string'], + 'Type' => ['type' => 'integer', 'format' => 'int32'], + 'StartTime' => ['type' => 'string'], + 'EndTimeUTC' => ['type' => 'string'], + 'Months' => ['type' => 'integer', 'format' => 'int32'], + 'Expired' => ['type' => 'integer', 'format' => 'int32'], + 'RemainQuota' => ['type' => 'integer', 'format' => 'int32'], + 'StartTimeUTC' => ['type' => 'string'], + 'Consumed' => ['type' => 'integer', 'format' => 'int32'], + 'Lifecycle' => ['type' => 'integer', 'format' => 'int32'], ], ], ], @@ -1447,180 +906,47 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.FreeStorageQuotaLimit', - 'errorMessage' => 'No enough free storage quota or exceed limit.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderGetLockFailed', - 'errorMessage' => 'Get storage order lock failed try again later.', - ], - [ - 'errorCode' => 'iot.vision.InvalidStorageOrder', - 'errorMessage' => 'Invalid storage order.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.FreeStorageQuotaLimit', 'errorMessage' => 'No enough free storage quota or exceed limit.', 'description' => '免费试用的云存储配额不足或超限制。'], + ['errorCode' => 'iot.vision.StorageOrderGetLockFailed', 'errorMessage' => 'Get storage order lock failed try again later.', 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['errorCode' => 'iot.vision.InvalidStorageOrder', 'errorMessage' => 'Invalid storage order.', 'description' => '无效的云存储订单。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'GenerateDevice' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'FreezeFreeStorage'], ], ], - 'systemTags' => [], - 'parameters' => [ + 'ramActions' => [ [ - 'name' => 'Amount', - 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'maximum' => '10000', - 'minimum' => '1', - ], - ], - [ - 'name' => 'ProductKey', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], - ], - [ - 'name' => 'ProjectId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], - 'Data' => [ - 'type' => 'object', - 'properties' => [ - 'BatchId' => [ - 'type' => 'string', - ], - ], - ], + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:FreezeFreeStorage', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.ActiveCodeInsufficient', - 'errorMessage' => 'Active code quota is insufficient.', - ], - [ - 'errorCode' => 'iot.vision.DevicesCountExceedLimit', - 'errorMessage' => 'The devices count exceed the limit.', - ], - [ - 'errorCode' => 'iot.vision.DevicesExceedUnreleasedProductLimit', - 'errorMessage' => 'Devices count exceed the limit of unreleased product.', - ], - ], - 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], - ], - 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], - ], - ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"EndTime\\": \\"\\",\\n \\"Type\\": 0,\\n \\"StartTime\\": \\"\\",\\n \\"EndTimeUTC\\": \\"\\",\\n \\"Months\\": 0,\\n \\"Expired\\": 0,\\n \\"RemainQuota\\": 0,\\n \\"StartTimeUTC\\": \\"\\",\\n \\"Consumed\\": 0,\\n \\"Lifecycle\\": 0\\n }\\n}","type":"json"}]', ], 'FreezeStorageOrder' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -1631,43 +957,27 @@ [ 'name' => 'DeviceNoOwner', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ 'name' => 'OrderId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], ], 'responses' => [ @@ -1675,84 +985,32 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'Status' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Copies' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Specification' => [ - 'type' => 'string', - ], - 'RecordType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'CommodityCode' => [ - 'type' => 'string', - ], - 'PreConsume' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'EndTimeUTC' => [ - 'type' => 'string', - ], - 'UserId' => [ - 'type' => 'string', - ], - 'IdentityId' => [ - 'type' => 'string', - ], - 'StartTimeUTC' => [ - 'type' => 'string', - ], - 'EndTime' => [ - 'type' => 'string', - ], - 'StartTime' => [ - 'type' => 'string', - ], - 'OutOrderNo' => [ - 'type' => 'string', - ], - 'Price' => [ - 'type' => 'string', - ], - 'OrderType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'PaymentStatus' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'UserName' => [ - 'type' => 'string', - ], - 'OrderId' => [ - 'type' => 'string', - ], - 'IotId' => [ - 'type' => 'string', - ], + 'Status' => ['type' => 'integer', 'format' => 'int32'], + 'Copies' => ['type' => 'integer', 'format' => 'int32'], + 'Specification' => ['type' => 'string'], + 'RecordType' => ['type' => 'integer', 'format' => 'int32'], + 'CommodityCode' => ['type' => 'string'], + 'PreConsume' => ['type' => 'integer', 'format' => 'int32'], + 'EndTimeUTC' => ['type' => 'string'], + 'UserId' => ['type' => 'string'], + 'IdentityId' => ['type' => 'string'], + 'StartTimeUTC' => ['type' => 'string'], + 'EndTime' => ['type' => 'string'], + 'StartTime' => ['type' => 'string'], + 'OutOrderNo' => ['type' => 'string'], + 'Price' => ['type' => 'string'], + 'OrderType' => ['type' => 'integer', 'format' => 'int32'], + 'PaymentStatus' => ['type' => 'integer', 'format' => 'int32'], + 'UserName' => ['type' => 'string'], + 'OrderId' => ['type' => 'string'], + 'IotId' => ['type' => 'string'], ], ], ], @@ -1761,66 +1019,47 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.DeviceOwnerChanged', - 'errorMessage' => 'Device owner changed.', - ], - [ - 'errorCode' => 'iot.vision.InvalidStorageOrder', - 'errorMessage' => 'Invalid storage order.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderGetLockFailed', - 'errorMessage' => 'Get storage order lock failed try again later.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.DeviceOwnerChanged', 'errorMessage' => 'Device owner changed.', 'description' => '设备的管理员用户变更。'], + ['errorCode' => 'iot.vision.InvalidStorageOrder', 'errorMessage' => 'Invalid storage order.', 'description' => '无效的云存储订单。'], + ['errorCode' => 'iot.vision.StorageOrderGetLockFailed', 'errorMessage' => 'Get storage order lock failed try again later.', 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'GenerateDeviceByBatchId' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'FreezeStorageOrder'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:FreezeStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Status\\": 0,\\n \\"Copies\\": 0,\\n \\"Specification\\": \\"\\",\\n \\"RecordType\\": 0,\\n \\"CommodityCode\\": \\"\\",\\n \\"PreConsume\\": 0,\\n \\"EndTimeUTC\\": \\"\\",\\n \\"UserId\\": \\"\\",\\n \\"IdentityId\\": \\"\\",\\n \\"StartTimeUTC\\": \\"\\",\\n \\"EndTime\\": \\"\\",\\n \\"StartTime\\": \\"\\",\\n \\"OutOrderNo\\": \\"\\",\\n \\"Price\\": \\"\\",\\n \\"OrderType\\": 0,\\n \\"PaymentStatus\\": 0,\\n \\"UserName\\": \\"\\",\\n \\"OrderId\\": \\"\\",\\n \\"IotId\\": \\"\\"\\n }\\n}","type":"json"}]', + ], + 'GenerateDevice' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -1829,28 +1068,19 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'BatchId', + 'name' => 'Amount', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'integer', 'format' => 'int64', 'required' => true, 'maximum' => '10000', 'minimum' => '1'], ], [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ 'name' => 'ProjectId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], ], 'responses' => [ @@ -1858,24 +1088,14 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'BatchId' => [ - 'type' => 'string', - ], + 'BatchId' => ['type' => 'string'], ], ], ], @@ -1884,70 +1104,44 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.ParamBatchIdInvalid', - 'errorMessage' => 'Parameter batchId is invalid.', - ], - [ - 'errorCode' => 'iot.vision.BatchHasCreated', - 'errorMessage' => 'This batch task has been created.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNameChecking', - 'errorMessage' => 'Device names are checking.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNameCheckFailed', - 'errorMessage' => 'Device names check failed.', - ], - [ - 'errorCode' => 'iot.vision.ActiveCodeInsufficient', - 'errorMessage' => 'Active code quota is insufficient.', - ], - [ - 'errorCode' => 'iot.vision.DevicesCountExceedLimit', - 'errorMessage' => 'The devices count exceed the limit.', - ], - [ - 'errorCode' => 'iot.vision.DevicesExceedUnreleasedProductLimit', - 'errorMessage' => 'Devices count exceed the limit of unreleased product.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.ActiveCodeInsufficient', 'errorMessage' => 'Active code quota is insufficient.', 'description' => '可用激活码不足。'], + ['errorCode' => 'iot.vision.DevicesCountExceedLimit', 'errorMessage' => 'The devices count exceed the limit.', 'description' => '创建设备数量超过限制。'], + ['errorCode' => 'iot.vision.DevicesExceedUnreleasedProductLimit', 'errorMessage' => 'Devices count exceed the limit of unreleased product.', 'description' => '创建设备数量超过未发布产品的试产设备数量。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'QueryBatchStatus' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GenerateDevice'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GenerateDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"BatchId\\": \\"\\"\\n }\\n}","type":"json"}]', + ], + 'GenerateDeviceByBatchId' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -1958,26 +1152,17 @@ [ 'name' => 'BatchId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ 'name' => 'ProjectId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], ], 'responses' => [ @@ -1985,50 +1170,14 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'Status' => [ - 'type' => 'string', - ], - 'InvalidDetailList' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'DeviceName' => [ - 'type' => 'string', - ], - 'ErrorMsg' => [ - 'type' => 'string', - ], - ], - ], - ], - 'InvalidList' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'string', - ], - ], - 'ValidList' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'string', - ], - ], + 'BatchId' => ['type' => 'string'], ], ], ], @@ -2037,42 +1186,48 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.ParamBatchIdInvalid', 'errorMessage' => 'Parameter batchId is invalid.', 'description' => '参数批次ID无效。'], + ['errorCode' => 'iot.vision.BatchHasCreated', 'errorMessage' => 'This batch task has been created.', 'description' => '该批次已经创建设备。'], + ['errorCode' => 'iot.vision.DeviceNameChecking', 'errorMessage' => 'Device names are checking.', 'description' => '设备名称校验未完成。'], + ['errorCode' => 'iot.vision.DeviceNameCheckFailed', 'errorMessage' => 'Device names check failed.', 'description' => '设备名称校验失败。'], + ['errorCode' => 'iot.vision.ActiveCodeInsufficient', 'errorMessage' => 'Active code quota is insufficient.', 'description' => '可用激活码不足。'], + ['errorCode' => 'iot.vision.DevicesCountExceedLimit', 'errorMessage' => 'The devices count exceed the limit.', 'description' => '创建设备数量超过限制。'], + ['errorCode' => 'iot.vision.DevicesExceedUnreleasedProductLimit', 'errorMessage' => 'Devices count exceed the limit of unreleased product.', 'description' => '创建设备数量超过未发布产品的试产设备数量。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'QueryDeviceDetail' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GenerateDeviceByBatchId'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GenerateDeviceByBatchId', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"BatchId\\": \\"\\"\\n }\\n}","type":"json"}]', + ], + 'GetAccountById' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -2081,53 +1236,27 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'ProductKey', - 'in' => 'query', - 'schema' => [ - 'description' => '视频设备所属产品的**ProductKey**。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'a1Bw******', - ], - ], - [ - 'name' => 'DeviceName', + 'name' => 'OpenId', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备名称。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'Device01', - ], + 'schema' => ['description' => '三方平台用户ID。'."\n" + .'><notice> 如果传入该参数,需同时传入**OpenIdAppKey**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => '60yqjd1**************************561da00851'], ], [ - 'name' => 'IotId', + 'name' => 'OpenIdAppKey', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备ID。'."\n" - .'><notice>'."\n" - .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'C47T6xwp6ms4bNlkHRWCg4****', - ], + 'schema' => ['description' => '三方平台颁发的AppKey。'."\n" + ."\n" + .'><notice> 如果传入该参数,需同时传入**OpenId**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => '76****57'], ], [ - 'name' => 'ProjectId', + 'name' => 'IdentityId', 'in' => 'query', - 'schema' => [ - 'description' => '项目ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'a123qs*****sy4QU', - ], + 'schema' => ['description' => '用户身份ID。'."\n" + ."\n" + .'><notice> **IdentityId**作为用户标识符,和**OpenId**与**OpenIdAppKey**组合是一一对应的关系。如果传入该参数,则无需传入**OpenId**和**OpenIdAppKey**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => '5035op97******************a63994'], ], ], 'responses' => [ @@ -2135,184 +1264,52 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', - 'type' => 'string', - 'example' => '400', - ], - 'ErrorMessage' => [ - 'description' => '调用失败时,返回的出错信息。', - 'type' => 'string', - 'example' => 'Request parameter error.', - ], - 'RequestId' => [ - 'description' => '阿里云为该请求生成的唯一标识符。', - 'type' => 'string', - 'example' => 'E55***B7-4***-4***-8***-D3******F565', - ], - 'Success' => [ - 'description' => '是否调用成功。'."\n" - ."\n" - .'- **true**:调用成功。'."\n" - .'- **false**:调用失败。', - 'type' => 'boolean', - 'example' => 'true', - ], + 'Code' => ['description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', 'type' => 'string', 'example' => '400'], + 'ErrorMessage' => ['description' => '调用失败时,返回的出错信息。', 'type' => 'string', 'example' => 'Unexpected internal error.'], + 'RequestId' => ['description' => '阿里云为该请求生成的唯一标识符。', 'type' => 'string', 'example' => 'E55***B7-4***-4***-8***-D3******F565'], + 'Success' => ['description' => '是否调用成功。'."\n" + ."\n" + .'- **true**:调用成功。'."\n" + .'- **false**:调用失败。', 'type' => 'boolean', 'example' => 'true'], 'Data' => [ 'description' => '调用成功,返回的数据。', 'type' => 'object', 'properties' => [ - 'Status' => [ - 'description' => '设备状态。取值:'."\n" - ."\n" - .'- **ONLINE**:设备在线。'."\n" - .'- **OFFLINE**:设备离线。'."\n" - .'- **UNACTIVE**:设备未激活。'."\n" - .'- **DISABLE**:设备已禁用。', - 'type' => 'string', - 'example' => 'ONLINE', - ], - 'ProductName' => [ - 'description' => '设备所属产品的名称。', - 'type' => 'string', - 'example' => 'test', - ], - 'DeviceName' => [ - 'description' => '设备名称。', - 'type' => 'string', - 'example' => 'Device01', - ], - 'CreateTime' => [ - 'description' => '设备的创建时间,13位毫秒级时间戳。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1834500000000', - ], - 'FirmwareVersion' => [ - 'description' => '设备默认(default)OTA模块的版本号。', - 'type' => 'string', - 'example' => 'V1.0.0.0', - ], - 'OnlineTime' => [ - 'description' => '设备最后上线时间,13位毫秒级时间戳。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '2298700000000', - ], - 'ActiveTime' => [ - 'description' => '设备的激活时间,13位毫秒级时间戳。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1934500000000', - ], - 'ProductKey' => [ - 'description' => '设备所属产品的**ProductKey**。', - 'type' => 'string', - 'example' => 'a1Bw******', - ], - 'IpAddress' => [ - 'description' => '设备的IP地址。', - 'type' => 'string', - 'example' => '10.***.***.***', - ], - 'NodeType' => [ - 'description' => '节点类型,取值:'."\n" - ."\n" - .'- **0**:设备。设备不能挂载子设备。'."\n" - .'- **1**:网关。网关可以挂载子设备。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'Region' => [ - 'description' => '设备所在地域的ID。', - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - 'DeviceSecret' => [ - 'description' => '设备密钥。', - 'type' => 'string', - 'example' => 'mz2Canp4GB7qRVf1OYPNtRqB2anu****', - ], - 'Nickname' => [ - 'description' => '设备的备注名称。', - 'type' => 'string', - 'example' => 'detectors_in_beijing', - ], - 'IotId' => [ - 'description' => '设备ID。', - 'type' => 'string', - 'example' => 'C47T6xwp6ms4bNlkHRWCg4****', - ], + 'LoginName' => ['description' => '账号登录名称。', 'type' => 'string', 'example' => '18*******20'], + 'Email' => ['description' => '邮箱地址。', 'type' => 'string', 'example' => '******'], + 'IdentityId' => ['description' => '用户身份ID。', 'type' => 'string', 'example' => '5035op97******************a63994'], + 'LastLoginTime' => ['description' => '最后登录时间,13位毫秒级时间戳。', 'type' => 'integer', 'format' => 'int64', 'example' => '1700209499000'], + 'GmtCreate' => ['description' => '账号创建时间。', 'type' => 'integer', 'format' => 'int64', 'example' => '1700189358000'], + 'NickName' => ['description' => '用户昵称。', 'type' => 'string', 'example' => '18*******20'], + 'GmtModified' => ['description' => '账号修改时间。', 'type' => 'integer', 'format' => 'int64', 'example' => '1700209499000'], + 'Phone' => ['description' => '手机号。', 'type' => 'string', 'example' => '18*******20'], ], ], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.InvalidIotInstance', - 'errorMessage' => 'Invalid iot instance.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], - [ - 'errorCode' => 'iot.vision.ProductNotExist', - 'errorMessage' => 'Product not exist.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNameFormatInvalid', - 'errorMessage' => 'Device name format invalid.', - ], - [ - 'errorCode' => 'iot.vision.InstanceArrearage', - 'errorMessage' => 'Instance arrearage.', - ], - [ - 'errorCode' => 'iot.vision.ProductKeyFormatInvalid', - 'errorMessage' => 'Product key format invalid.', - ], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.GetAccountInfoFailed', 'errorMessage' => 'Get account info failed.', 'description' => '查询账号详情信息失败。'], + ['errorCode' => 'iot.vision.AccountNotFound', 'errorMessage' => 'Account not found.', 'description' => '找不到账号。'], + ['errorCode' => 'iot.vision.TenantMismatch', 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', 'description' => '接口调用方的租户和账号归属的租户不一致。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], - [ - 'errorCode' => 'iot.vision.HasNoAccessPermission', - 'errorMessage' => 'Has no access permission.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Status\\": \\"ONLINE\\",\\n \\"ProductName\\": \\"test\\",\\n \\"DeviceName\\": \\"Device01\\",\\n \\"CreateTime\\": 1834500000000,\\n \\"FirmwareVersion\\": \\"V1.0.0.0\\",\\n \\"OnlineTime\\": 2298700000000,\\n \\"ActiveTime\\": 1934500000000,\\n \\"ProductKey\\": \\"a1Bw******\\",\\n \\"IpAddress\\": \\"10.***.***.***\\",\\n \\"NodeType\\": 0,\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"DeviceSecret\\": \\"mz2Canp4GB7qRVf1OYPNtRqB2anu****\\",\\n \\"Nickname\\": \\"detectors_in_beijing\\",\\n \\"IotId\\": \\"C47T6xwp6ms4bNlkHRWCg4****\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryDeviceDetailResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <Status>ONLINE</Status>\\n <ProductName>test</ProductName>\\n <DeviceSecret>mz2Canp4GB7qRVf1OYPNtRqB2anu****</DeviceSecret>\\n <CreateTime>1834500000000</CreateTime>\\n <OnlineTime>2298700000000</OnlineTime>\\n <FirmwareVersion>V1.0.0.0</FirmwareVersion>\\n <IotId>C47T6xwp6ms4bNlkHRWCg4****</IotId>\\n <ActiveTime>1934500000000</ActiveTime>\\n <NodeType>0</NodeType>\\n <Region>cn-shanghai</Region>\\n <IpAddress>10.***.***.***</IpAddress>\\n <ProductKey>a1Bw******</ProductKey>\\n <Nickname>detectors_in_beijing</Nickname>\\n <DeviceName>Device01</DeviceName>\\n</Data>\\n<Success>true</Success>\\n</QueryDeviceDetailResponse>","errorExample":""}]', - 'title' => 'QueryDeviceDetail', - 'summary' => '调用该接口查询指定设备的详细信息。', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Unexpected internal error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"LoginName\\": \\"18*******20\\",\\n \\"Email\\": \\"******\\",\\n \\"IdentityId\\": \\"5035op97******************a63994\\",\\n \\"LastLoginTime\\": 1700209499000,\\n \\"GmtCreate\\": 1700189358000,\\n \\"NickName\\": \\"18*******20\\",\\n \\"GmtModified\\": 1700209499000,\\n \\"Phone\\": \\"18*******20\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"<GetAccountByIdResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <LastLoginTime>1700209499000</LastLoginTime>\\n <LoginName>18*******20</LoginName>\\n <GmtCreate>1700189358000</GmtCreate>\\n <Email>******</Email>\\n <Phone>18*******20</Phone>\\n <GmtModified>1700209499000</GmtModified>\\n <IdentityId>5035op97******************a63994</IdentityId>\\n <NickName>18*******20</NickName>\\n</Data>\\n<Success>true</Success>\\n</GetAccountByIdResponse>","errorExample":""}]', + 'title' => 'GetAccountById', + 'summary' => '调用该接口根据用户身份ID(IdentityId)或三方平台用户ID(OpenId)查询用户账号信息。', 'description' => '## QPS限制'."\n" ."\n" .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" @@ -2321,16 +1318,29 @@ 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'QueryFreeStorage' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetAccountById'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GetAccountById', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + ], + 'GetDeviceStatus' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -2341,26 +1351,26 @@ [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['description' => '视频设备所属产品的**ProductKey**。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'a1Bw******'], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['description' => '视频设备的设备名称。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'Device01'], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['description' => '视频设备的设备ID。'."\n" + .'><notice>'."\n" + .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'C47T6xwp6ms4bNlkHRWCg4****'], ], ], 'responses' => [ @@ -2368,210 +1378,83 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', 'type' => 'string', 'example' => '400'], + 'ErrorMessage' => ['description' => '调用失败时,返回的出错信息。', 'type' => 'string', 'example' => 'Unexpected internal error.'], + 'RequestId' => ['description' => '阿里云为该请求生成的唯一标识符。', 'type' => 'string', 'example' => 'E55***B7-4***-4***-8***-D3******F565'], + 'Success' => ['description' => '是否调用成功。'."\n" + ."\n" + .'- **true**:调用成功。'."\n" + .'- **false**:调用失败。', 'type' => 'boolean', 'example' => 'true'], 'Data' => [ + 'description' => '调用成功,返回的数据。', 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'type' => 'string', - ], - 'Type' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'StartTime' => [ - 'type' => 'string', - ], - 'EndTimeUTC' => [ - 'type' => 'string', - ], - 'Months' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Expired' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'RemainQuota' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'StartTimeUTC' => [ - 'type' => 'string', - ], - 'Consumed' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Lifecycle' => [ - 'type' => 'integer', - 'format' => 'int32', - ], + 'Status' => ['description' => '设备当前状态。'."\n" + ."\n" + .'- **ONLINE**:设备在线。'."\n" + .'- **OFFLINE**:设备离线。'."\n" + .'- **UNACTIVE**:设备未激活。'."\n" + .'- **DISABLE**:设备已禁用。', 'type' => 'string', 'example' => 'ONLINE'], ], ], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.FreeStorageQuotaLimit', - 'errorMessage' => 'No enough free storage quota or exceed limit.', - ], - [ - 'errorCode' => 'iot.vision.GetDeviceInfoFailed', - 'errorMessage' => 'Get device info failed.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderGetLockFailed', - 'errorMessage' => 'Get storage order lock failed try again later.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.InvalidIotInstance', 'errorMessage' => 'Invalid iot instance.', 'description' => '无效的实例或者找不到对应实例。'], + ['errorCode' => 'iot.vision.ProductNotExist', 'errorMessage' => 'Product not exist.', 'description' => '产品不存在。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], + ['errorCode' => 'iot.vision.InstanceArrearage', 'errorMessage' => 'Instance arrearage.', 'description' => '实例已欠费。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], + ['errorCode' => 'iot.vision.HasNoAccessPermission', 'errorMessage' => 'Has no access permission.', 'description' => '没有访问权限。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'QueryDevicesDownloadUrl' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Unexpected internal error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Status\\": \\"ONLINE\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"<GetDeviceStatusResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <Status>ONLINE</Status>\\n</Data>\\n<Success>true</Success>\\n</GetDeviceStatusResponse>","errorExample":""}]', + 'title' => 'GetDeviceStatus', + 'summary' => '调用该接口查询设备的状态。', + 'description' => '## QPS限制'."\n" + ."\n" + .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" + ."\n" + .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', + 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetDeviceStatus'], ], ], - 'systemTags' => [], - 'parameters' => [ + 'ramActions' => [ [ - 'name' => 'ProductKey', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], - ], - [ - 'name' => 'BatchId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], - 'Data' => [ - 'type' => 'object', - 'properties' => [ - 'OssDownloadUrl' => [ - 'type' => 'string', - ], - ], - ], + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GetDeviceStatus', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'iot.system.SystemException', - 'errorMessage' => 'An internal error occurred. Try again later.', - ], - [ - 'errorCode' => 'iot.common.AuthActionPermissionDeny', - 'errorMessage' => 'The authorization fails.', - ], - ], - 403 => [ - [ - 'errorCode' => 'iot.lv.requestAuthError', - 'errorMessage' => 'Request auth error.', - ], - [ - 'errorCode' => 'iot.lv.requestParamError', - 'errorMessage' => 'Request parameter error.', - ], - ], - ], ], - 'QueryGenerateDevicesInfoList' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'GetSubDeviceList' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -2582,40 +1465,36 @@ [ 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '50', - 'minimum' => '1', - ], + 'schema' => ['description' => '指定返回结果中每页显示的记录数量,最大值是50。', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '50', 'minimum' => '1', 'example' => '5'], ], [ - 'name' => 'BatchId', + 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['description' => '网关设备所属产品的**ProductKey**。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'a1Bw******'], ], [ - 'name' => 'PageNo', + 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '1000', - 'minimum' => '1', - ], + 'schema' => ['description' => '网关设备的设备名称。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'Device01'], ], [ - 'name' => 'ProjectId', + 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['description' => '网关设备的设备ID。'."\n" + .'><notice>'."\n" + .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'C47T6xwp6ms4bNlkHRWCg4****'], + ], + [ + 'name' => 'PageNo', + 'in' => 'query', + 'schema' => ['description' => '指定显示返回结果中的第几页,最大值为100。', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '100', 'minimum' => '1', 'example' => '1'], ], ], 'responses' => [ @@ -2623,102 +1502,93 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', 'type' => 'string', 'example' => '400'], + 'ErrorMessage' => ['description' => '调用失败时,返回的出错信息。', 'type' => 'string', 'example' => 'Request parameter error.'], + 'RequestId' => ['description' => '阿里云为该请求生成的唯一标识符。', 'type' => 'string', 'example' => 'E55***B7-4***-4***-8***-D3******F565'], + 'Success' => ['description' => '是否调用成功。'."\n" + ."\n" + .'- **true**:调用成功。'."\n" + .'- **false**:调用失败。', 'type' => 'boolean', 'example' => 'true'], 'Data' => [ + 'description' => '调用成功,返回的数据。', 'type' => 'object', 'properties' => [ - 'PageNo' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'PageSize' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Total' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'ListData' => [ + 'PageNo' => ['description' => '当前页码。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'PageSize' => ['description' => '每页显示的记录数。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'Total' => ['description' => '总记录数。', 'type' => 'integer', 'format' => 'int64', 'example' => '1'], + 'SubDeviceList' => [ + 'description' => '子设备列表信息。', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'DeviceName' => [ - 'type' => 'string', - ], - 'IotId' => [ - 'type' => 'string', - ], - 'DeviceSecret' => [ - 'type' => 'string', - ], + 'ProductKey' => ['description' => '设备所属产品的**ProductKey**。', 'type' => 'string', 'example' => 'wse5******'], + 'DeviceName' => ['description' => '设备名称。', 'type' => 'string', 'example' => 'device-test'], + 'IotId' => ['description' => '设备ID。', 'type' => 'string', 'example' => 'qswdfrttgg*********'], ], + 'description' => '', ], ], ], ], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.common.RamActionPermissionDeny', - 'errorMessage' => 'You do not have the RAM permission.', - ], - [ - 'errorCode' => 'iot.vision.ProductNotExist', - 'errorMessage' => 'Product not exist.', - ], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.InvalidIotInstance', 'errorMessage' => 'Invalid iot instance.', 'description' => '无效的实例或者找不到对应实例。'], + ['errorCode' => 'iot.vision.ProductNotExist', 'errorMessage' => 'Product not exist.', 'description' => '产品不存在。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], + ['errorCode' => 'iot.vision.InstanceArrearage', 'errorMessage' => 'Instance arrearage.', 'description' => '实例已欠费。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], + ['errorCode' => 'iot.vision.HasNoAccessPermission', 'errorMessage' => 'Has no access permission.', 'description' => '没有访问权限。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'QueryGenerateDevicesRecord' => [ - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"PageNo\\": 1,\\n \\"PageSize\\": 1,\\n \\"Total\\": 1,\\n \\"SubDeviceList\\": [\\n {\\n \\"ProductKey\\": \\"wse5******\\",\\n \\"DeviceName\\": \\"device-test\\",\\n \\"IotId\\": \\"qswdfrttgg*********\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<GetSubDeviceListResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <PageSize/>\\n <Total>1</Total>\\n <PageNo/>\\n <SubDeviceList>\\n <IotId>qswdfrttgg*********</IotId>\\n <ProductKey>wse5******</ProductKey>\\n <DeviceName>device-test</DeviceName>\\n </SubDeviceList>\\n</Data>\\n<Success>true</Success>\\n</GetSubDeviceListResponse>","errorExample":""}]', + 'title' => 'GetSubDeviceList', + 'summary' => '调用该接口查询网关设备的子设备列表。', + 'description' => '## QPS限制'."\n" + ."\n" + .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" + ."\n" + .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', + 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetSubDeviceList'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GetSubDeviceList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + ], + 'GetThingEventSnapshot' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -2727,59 +1597,33 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'PageSize', - 'in' => 'formData', - 'schema' => [ - 'description' => '指定返回结果中每页显示的记录数量,最大值是100。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '100', - 'minimum' => '1', - 'example' => '1', - ], + 'name' => 'Identifier', + 'in' => 'query', + 'schema' => ['description' => '物模型的事件标识符。', 'type' => 'string', 'required' => true, 'example' => 'AlarmType'], ], [ - 'name' => 'PageNo', - 'in' => 'formData', - 'schema' => [ - 'description' => '指定显示返回结果中的第几页,最大值为1,000。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '1000', - 'minimum' => '1', - 'example' => '1', - ], + 'name' => 'ProductKey', + 'in' => 'query', + 'schema' => ['description' => '视频设备所属产品的**ProductKey**。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'a1Bw******'], ], [ - 'name' => 'StartTime', - 'in' => 'formData', - 'schema' => [ - 'description' => '起始时间的毫秒级时间戳。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'maximum' => '9999999999999', - 'minimum' => '1', - 'example' => '1690819200000', - ], + 'name' => 'DeviceName', + 'in' => 'query', + 'schema' => ['description' => '视频设备的设备名称。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'Device01'], ], [ - 'name' => 'EndTime', - 'in' => 'formData', - 'schema' => [ - 'description' => '结束时间的毫秒级时间戳。'."\n" - ."\n" - .'><notice> 起止时间间隔不能超过30天。'."\n" - .'></notice>', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'maximum' => '9999999999999', - 'minimum' => '1', - 'example' => '1659283200000', - ], + 'name' => 'IotId', + 'in' => 'query', + 'schema' => ['description' => '视频设备的设备ID。'."\n" + .'><notice>'."\n" + .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'C47T6xwp6ms4bNlkHRWCg4****'], ], ], 'responses' => [ @@ -2787,289 +1631,198 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => '调用结果状态码:'."\n" - .'- 调用成功,返回200。'."\n" - .'- 调用失败,返回错误码。详细信息,请参见下文**错误码**。', - 'type' => 'string', - 'example' => '400', - ], - 'ErrorMessage' => [ - 'description' => '调用失败时,返回的出错信息。', - 'type' => 'string', - 'example' => 'Request parameter error.', - ], - 'RequestId' => [ - 'description' => '阿里云为该请求生成的唯一标识符。', - 'type' => 'string', - 'example' => 'E5******-4***-***B-8**E-D3********65', - ], - 'Success' => [ - 'description' => '是否调用成功。'."\n" - .'- **true**:调用成功。'."\n" - .'- **false**:调用失败。', - 'type' => 'boolean', - 'example' => 'true', - ], + 'Code' => ['description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', 'type' => 'string', 'example' => '400'], + 'ErrorMessage' => ['description' => '调用失败时,返回的出错信息。', 'type' => 'string', 'example' => 'Unexpected internal error.'], + 'RequestId' => ['description' => '阿里云为该请求生成的唯一标识符。', 'type' => 'string', 'example' => 'E55***B7-4***-4***-8***-D3******F565'], + 'Success' => ['description' => '是否调用成功。'."\n" + ."\n" + .'- **true**:调用成功。'."\n" + .'- **false**:调用失败。', 'type' => 'boolean', 'example' => 'true'], 'Data' => [ - 'description' => '调用成功,返回的结果。', - 'type' => 'object', - 'properties' => [ - 'PageNo' => [ - 'description' => '当前页码。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => '每页显示的记录数。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'Total' => [ - 'description' => '总记录数。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5', - ], - 'ListData' => [ - 'description' => '设备注册记录的详细信息。', - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ApplyDeviceCount' => [ - 'description' => '申请的设备数量。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '133', - ], - 'SpecCode' => [ - 'description' => '激活码规格Code。取值:'."\n" - ."\n" - .'- **Consumer_IPC_512Kbps**:消费类IPC 512Kbps。'."\n" - .'- **Consumer_IPC_1Mbps**:消费类IPC 1Mbps。'."\n" - .'- **Consumer_IPC_2Mbps**:消费类IPC 2Mbps。'."\n" - .'- **Consumer_IPC_4Mbps**:消费类IPC 4Mbps。'."\n" - .'- **Industry_IPC**:行业类IPC。'."\n" - .'- **NVR_Less64**:NVR小于等于64路。'."\n" - .'- **NVR_Higher64**:NVR大于64路。', - 'type' => 'string', - 'example' => 'Consumer_IPC_512Kbps', - ], - 'ProductKey' => [ - 'description' => '设备所属产品的**ProductKey**。', - 'type' => 'string', - 'example' => 'a3w******', - ], - 'ProductName' => [ - 'description' => '设备所属产品的名称。', - 'type' => 'string', - 'example' => '电饭煲', - ], - 'CreateTime' => [ - 'description' => '批量注册设备任务的提交时间,格式为毫秒级时间戳。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1690819200000', - ], - 'BatchStatus' => [ - 'description' => '批量注册的批次状态。'."\n" - ."\n" - .'- **CREATE**:正在创建设备。'."\n" - .'- **CREATE_SUCCESS**:申请单中的所有设备创建成功。'."\n" - .'- **CREATE_FAILED**:申请单中有设备创建失败。', - 'type' => 'string', - 'example' => 'CREATE', - ], - 'NetworkType' => [ - 'description' => '产品的连网方式。取值:'."\n" - ."\n" - .'- **WIFI**:Wi-Fi。'."\n" - .'- **CELLULAR**:蜂窝GPRS/3G/4G/5G。'."\n" - .'- **ETHERNET**:以太网。'."\n" - .'- **OTHER**:其他网络类型。', - 'type' => 'string', - 'example' => 'WIFI', - ], - 'OperateUid' => [ - 'description' => '操作账号的UID。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '110000000000', - ], - 'SuccessCount' => [ - 'description' => '批量注册设备成功的设备数量。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '5', - ], - 'BatchId' => [ - 'description' => '申请的批次ID。', - 'type' => 'string', - 'example' => '1508******195', - ], - ], - ], - ], + 'description' => '调用成功,返回的数据。', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'EventType' => ['description' => '事件类型。'."\n" + ."\n" + .'- **info**:信息。'."\n" + .'- **alert**:告警。'."\n" + .'- **error**:故障。', 'type' => 'string', 'example' => 'alert'], + 'EventCode' => ['description' => '事件Code。', 'type' => 'string', 'example' => 'IntelligentAlarm'], + 'Identifier' => ['description' => '事件标识符。', 'type' => 'string', 'example' => 'IntelligentAlarm'], + 'Timestamp' => ['description' => '事件发生的时间戳。单位为毫秒。', 'type' => 'integer', 'format' => 'int64', 'example' => '1700010288668'], + 'EventBody' => ['description' => '事件内容。', 'type' => 'string', 'example' => '{\\"EventList \\":[{\\"AlarmPicID \\":\\"\\",\\"EventTime \\":\\"1700010288542 \\",\\"AlarmType \\":1,\\"AlarmPicSize \\":1,\\"Data \\":\\"test \\"}]}'], + 'IotId' => ['description' => '设备ID。', 'type' => 'string', 'example' => 'C47T6xwp6ms4bNlkHRWCg4****'], + ], + 'description' => '', ], ], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.InvalidIotInstance', 'errorMessage' => 'Invalid iot instance.', 'description' => '无效的实例或者找不到对应实例。'], + ['errorCode' => 'iot.vision.ProductNotExist', 'errorMessage' => 'Product not exist.', 'description' => '产品不存在。'], + ['errorCode' => 'iot.vision.ThingModelNotExist', 'errorMessage' => 'Thing model not exist.', 'description' => '物模型功能不存在。'], + ['errorCode' => 'iot.vision.ThingModelIdentifierNotExist', 'errorMessage' => 'Thing model identifier not exist.', 'description' => '物模型功能标识符不存在。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], + ['errorCode' => 'iot.vision.InstanceArrearage', 'errorMessage' => 'Instance arrearage.', 'description' => '实例已欠费。'], + ['errorCode' => 'iot.vision.GetThingEventSnapshotFailed', 'errorMessage' => 'Get thing event snapshot failed.', 'description' => '查询物模型事件快照失败。'], + ['errorCode' => 'iot.vision.ThingEventNotFound', 'errorMessage' => 'Thing event not found.', 'description' => '物模型事件不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], + ['errorCode' => 'iot.vision.HasNoAccessPermission', 'errorMessage' => 'Has no access permission.', 'description' => '没有访问权限。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E5******-4***-***B-8**E-D3********65\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"PageNo\\": 1,\\n \\"PageSize\\": 1,\\n \\"Total\\": 5,\\n \\"ListData\\": [\\n {\\n \\"ApplyDeviceCount\\": 133,\\n \\"SpecCode\\": \\"Consumer_IPC_512Kbps\\",\\n \\"ProductKey\\": \\"a3w******\\",\\n \\"ProductName\\": \\"电饭煲\\",\\n \\"CreateTime\\": 1690819200000,\\n \\"BatchStatus\\": \\"CREATE\\",\\n \\"NetworkType\\": \\"WIFI\\",\\n \\"OperateUid\\": 110000000000,\\n \\"SuccessCount\\": 5,\\n \\"BatchId\\": \\"1508******195\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryGenerateDevicesRecordResponse>\\n<RequestId>E5******-4***-***B-8**E-D3********65</RequestId>\\n<Data>\\n <PageSize>1</PageSize>\\n <Total>5</Total>\\n <PageNo>1</PageNo>\\n <ListData>\\n <SpecCode>Consumer_IPC_512Kbps</SpecCode>\\n <OperateUid>110000000000</OperateUid>\\n <ProductName>电饭煲</ProductName>\\n <NetworkType>WIFI</NetworkType>\\n <BatchStatus>CREATE</BatchStatus>\\n <CreateTime>1690819200000</CreateTime>\\n <BatchId>1508******195</BatchId>\\n <SuccessCount>5</SuccessCount>\\n <ProductKey>a3w******</ProductKey>\\n <ApplyDeviceCount>133</ApplyDeviceCount>\\n </ListData>\\n</Data>\\n<Code>200</Code>\\n<Success>true</Success>\\n</QueryGenerateDevicesRecordResponse>","errorExample":""}]', - 'title' => 'QueryGenerateDevicesRecord', - 'summary' => '调用该接口查询设备批量注册的记录信息。', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Unexpected internal error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": [\\n {\\n \\"EventType\\": \\"alert\\",\\n \\"EventCode\\": \\"IntelligentAlarm\\",\\n \\"Identifier\\": \\"IntelligentAlarm\\",\\n \\"Timestamp\\": 1700010288668,\\n \\"EventBody\\": \\"{\\\\\\\\\\\\\\"EventList \\\\\\\\\\\\\\":[{\\\\\\\\\\\\\\"AlarmPicID \\\\\\\\\\\\\\":\\\\\\\\\\\\\\"\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"EventTime \\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1700010288542 \\\\\\\\\\\\\\",\\\\\\\\\\\\\\"AlarmType \\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"AlarmPicSize \\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"Data \\\\\\\\\\\\\\":\\\\\\\\\\\\\\"test \\\\\\\\\\\\\\"}]}\\",\\n \\"IotId\\": \\"C47T6xwp6ms4bNlkHRWCg4****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<GetThingEventSnapshotResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <IotId>C47T6xwp6ms4bNlkHRWCg4****</IotId>\\n <Identifier>IntelligentAlarm</Identifier>\\n <EventBody>{\\"EventList \\":[{\\"AlarmPicID \\":\\"\\",\\"EventTime \\":\\"1700010288542 \\",\\"AlarmType \\":1,\\"AlarmPicSize \\":1,\\"Data \\":\\"test \\"}]}</EventBody>\\n <EventType>alert</EventType>\\n <Timestamp>1700010288668</Timestamp>\\n <EventCode>IntelligentAlarm</EventCode>\\n</Data>\\n<Success>true</Success>\\n</GetThingEventSnapshotResponse>","errorExample":""}]', + 'title' => '查询物模型事件的快照', 'description' => '## QPS限制'."\n" ."\n" - .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为20。'."\n" + .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" ."\n" .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'QueryStorageCommodityList' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetThingEventSnapshot'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GetThingEventSnapshot', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + ], + 'GetThingPropertySnapshot' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'systemTags' => [], - 'parameters' => [], + 'parameters' => [ + [ + 'name' => 'ProductKey', + 'in' => 'query', + 'schema' => ['description' => '视频设备所属产品的**ProductKey**。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'a1Bw******'], + ], + [ + 'name' => 'DeviceName', + 'in' => 'query', + 'schema' => ['description' => '视频设备的设备名称。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'Device01'], + ], + [ + 'name' => 'IotId', + 'in' => 'query', + 'schema' => ['description' => '视频设备的设备ID。'."\n" + .'><notice>'."\n" + .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'C47T6xwp6ms4bNlkHRWCg4****'], + ], + ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], - 'Data' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Specification' => [ - 'type' => 'string', - ], - 'CommodityCode' => [ - 'type' => 'string', - ], - 'RecordType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Price' => [ - 'type' => 'string', - ], - 'Months' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'CommodityName' => [ - 'type' => 'string', - ], - 'Lifecycle' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - ], - ], - ], + 'Code' => ['description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', 'type' => 'string', 'example' => '400'], + 'Data' => ['description' => '调用成功,返回的属性数据。', 'type' => 'string', 'example' => '{\\"StreamVideoQuality\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"MotionDetectSensitivity\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"ImageFlipState\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"SubStreamVideoQuality\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"AlarmSwitch\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"AlarmFrequencyLevel\\":{\\"time\\":1700009930921,\\"value\\":\\"10\\"}}'], + 'ErrorMessage' => ['description' => '调用失败时,返回的出错信息。', 'type' => 'string', 'example' => 'Request parameter error.'], + 'RequestId' => ['description' => '阿里云为该请求生成的唯一标识符。', 'type' => 'string', 'example' => 'E55***B7-4***-4***-8***-D3******F565'], + 'Success' => ['description' => '是否调用成功。'."\n" + ."\n" + .'- **true**:调用成功。'."\n" + .'- **false**:调用失败。', 'type' => 'boolean', 'example' => 'true'], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.InvalidIotInstance', 'errorMessage' => 'Invalid iot instance.', 'description' => '无效的实例或者找不到对应实例。'], + ['errorCode' => 'iot.vision.ProductNotExist', 'errorMessage' => 'Product not exist.', 'description' => '产品不存在。'], + ['errorCode' => 'iot.vision.ThingModelNotExist', 'errorMessage' => 'Thing model not exist.', 'description' => '物模型功能不存在。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], + ['errorCode' => 'iot.vision.InstanceArrearage', 'errorMessage' => 'Instance arrearage.', 'description' => '实例已欠费。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], + ['errorCode' => 'iot.vision.HasNoAccessPermission', 'errorMessage' => 'Has no access permission.', 'description' => '没有访问权限。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'QueryStorageOrder' => [ - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"Data\\": \\"{\\\\\\\\\\\\\\"StreamVideoQuality\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1699951400324,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\"MotionDetectSensitivity\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1699951400324,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\"ImageFlipState\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1699951400324,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\"SubStreamVideoQuality\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1699951400324,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\"AlarmSwitch\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1699951400324,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\"AlarmFrequencyLevel\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1700009930921,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"10\\\\\\\\\\\\\\"}}\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true\\n}","errorExample":""},{"type":"xml","example":"<GetThingPropertySnapshotResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>{\\"StreamVideoQuality\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"MotionDetectSensitivity\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"ImageFlipState\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"SubStreamVideoQuality\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"AlarmSwitch\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"AlarmFrequencyLevel\\":{\\"time\\":1700009930921,\\"value\\":\\"10\\"}}</Data>\\n<Success>true</Success>\\n</GetThingPropertySnapshotResponse>","errorExample":""}]', + 'title' => 'GetThingPropertySnapshot', + 'summary' => '调用该接口查询指定设备的所有物模型属性快照,返回物模型属性的最新数据。', + 'description' => '## QPS限制'."\n" + ."\n" + .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" + ."\n" + .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', + 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetThingPropertySnapshot'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GetThingPropertySnapshot', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + ], + 'InvokeThingService' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -3078,45 +1831,38 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'DeviceNoOwner', + 'name' => 'Identifier', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['description' => '物模型的服务标识符。', 'type' => 'string', 'required' => true, 'example' => 'SetNum'], ], [ - 'name' => 'OrderId', + 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['description' => '视频设备所属产品的**ProductKey**。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'a1Bw******'], ], [ - 'name' => 'ProductKey', + 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['description' => '视频设备的设备名称。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'Device01'], ], [ - 'name' => 'DeviceName', + 'name' => 'Args', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['description' => '要启用服务的入参信息,数据格式为JSON String,例如**Args={"param1":1}**。', 'type' => 'string', 'required' => false, 'example' => '{"param1":1}'], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['description' => '视频设备的设备ID。'."\n" + .'><notice>'."\n" + .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'C47T6xwp6ms4bNlkHRWCg4****'], ], ], 'responses' => [ @@ -3124,152 +1870,88 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', 'type' => 'string', 'example' => '400'], + 'ErrorMessage' => ['description' => '调用失败时,返回的出错信息。', 'type' => 'string', 'example' => 'Request parameter error.'], + 'RequestId' => ['description' => '阿里云为该请求生成的唯一标识符。', 'type' => 'string', 'example' => 'E55***B7-4***-4***-8***-D3******F565'], + 'Success' => ['description' => '是否调用成功。'."\n" + ."\n" + .'- **true**:调用成功。'."\n" + .'- **false**:调用失败。', 'type' => 'boolean', 'example' => 'true'], 'Data' => [ + 'description' => '调用成功,返回的数据。', 'type' => 'object', 'properties' => [ - 'Status' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Copies' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Specification' => [ - 'type' => 'string', - ], - 'RecordType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'CommodityCode' => [ - 'type' => 'string', - ], - 'PreConsume' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'EndTimeUTC' => [ - 'type' => 'string', - ], - 'UserId' => [ - 'type' => 'string', - ], - 'IdentityId' => [ - 'type' => 'string', - ], - 'StartTimeUTC' => [ - 'type' => 'string', - ], - 'EndTime' => [ - 'type' => 'string', - ], - 'StartTime' => [ - 'type' => 'string', - ], - 'OutOrderNo' => [ - 'type' => 'string', - ], - 'Price' => [ - 'type' => 'string', - ], - 'OrderType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'PaymentStatus' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'UserName' => [ - 'type' => 'string', - ], - 'OrderId' => [ - 'type' => 'string', - ], - 'IotId' => [ - 'type' => 'string', - ], + 'Data' => ['description' => '调用服务结果,JSON字符串。', 'type' => 'string', 'example' => '{"param1":1}'], + 'MessageId' => ['description' => '云端向设备下发服务调用的消息ID。', 'type' => 'string', 'example' => 'abcabcabc1234****'], ], ], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.InvalidStorageOrder', - 'errorMessage' => 'Invalid storage order.', - ], - [ - 'errorCode' => 'iot.vision.DeviceOwnerChanged', - 'errorMessage' => 'Device owner changed.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderGetLockFailed', - 'errorMessage' => 'Get storage order lock failed try again later.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.InvalidIotInstance', 'errorMessage' => 'Invalid iot instance.', 'description' => '无效的实例或者找不到对应实例。'], + ['errorCode' => 'iot.vision.ProductNotExist', 'errorMessage' => 'Product not exist.', 'description' => '产品不存在。'], + ['errorCode' => 'iot.vision.ThingModelNotExist', 'errorMessage' => 'Thing model not exist.', 'description' => '物模型功能不存在。'], + ['errorCode' => 'iot.vision.ThingModelIdentifierNotExist', 'errorMessage' => 'Thing model identifier not exist.', 'description' => '物模型功能标识符不存在。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], + ['errorCode' => 'iot.vision.InstanceArrearage', 'errorMessage' => 'Instance arrearage.', 'description' => '实例已欠费。'], + ['errorCode' => 'iot.vision.ServiceParamNotExist', 'errorMessage' => 'Invoke service failed as service param not exist.', 'description' => '物模型服务参数不存在。'], + ['errorCode' => 'iot.vision.ServiceNotFound', 'errorMessage' => 'Invoke service failed as service not found.', 'description' => '物模型服务不存在。'], + ['errorCode' => 'iot.vision.DeviceInactive', 'errorMessage' => 'Device inactive.', 'description' => '设备未激活。'], + ['errorCode' => 'iot.vision.DevcieOffline', 'errorMessage' => 'Device offline.', 'description' => '设备不在线。'], + ['errorCode' => 'iot.vision.ServiceEnumSpecError', 'errorMessage' => 'Service enum spec error.', 'description' => '物模型服务枚举参数错误。'], + ['errorCode' => 'iot.vision.ServiceResponseTimeout', 'errorMessage' => 'Invoke service response timeout.', 'description' => '超时未收到设备响应。'], + ['errorCode' => 'iot.vision.InvokeServiceFailed', 'errorMessage' => 'Invoke service failed:%s', 'description' => '物模型服务调用失败。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], + ['errorCode' => 'iot.vision.HasNoAccessPermission', 'errorMessage' => 'Has no access permission.', 'description' => '没有访问权限。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'QueryStorageOrderList' => [ - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Data\\": \\"{\\\\\\"param1\\\\\\":1}\\",\\n \\"MessageId\\": \\"abcabcabc1234****\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"<InvokeThingServiceResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <Data>{\\"param1\\":1}</Data>\\n <MessageId>abcabcabc1234****</MessageId>\\n</Data>\\n<Success>true</Success>\\n</InvokeThingServiceResponse>","errorExample":""}]', + 'title' => 'InvokeThingService', + 'summary' => '调用该接口在单个设备上调用指定服务。', + 'description' => '## QPS限制'."\n" + ."\n" + .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为200。'."\n" + ."\n" + .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', + 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'InvokeThingService'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:InvokeThingService', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + ], + 'ListBindingAccountByDevice' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -3278,59 +1960,47 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'DeviceNoOwner', - 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], - ], - [ 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '200', - 'minimum' => '1', - ], + 'schema' => ['description' => '指定返回结果中每页显示的记录数量,最大值是50。', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '50', 'minimum' => '1', 'example' => '5'], ], [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['description' => '视频设备所属产品的**ProductKey**。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'a1Bw******'], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['description' => '视频设备的设备名称。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'Device01'], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['description' => '视频设备的设备ID。'."\n" + .'><notice>'."\n" + .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'C47T6xwp6ms4bNlkHRWCg4****'], ], [ 'name' => 'PageNo', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '1000', - 'minimum' => '1', - ], + 'schema' => ['description' => '指定显示返回结果中的第几页,最大值为100。', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '100', 'minimum' => '1', 'example' => '1'], + ], + [ + 'name' => 'Owned', + 'in' => 'query', + 'schema' => ['description' => '用户和设备绑定类型。'."\n" + ."\n" + .'- **0**:表示分享用户。'."\n" + .'- **1**:表示管理员用户。'."\n" + .'- 不传则查询所有用户。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '1', 'minimum' => '0', 'example' => '0'], ], ], 'responses' => [ @@ -3338,172 +2008,90 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', 'type' => 'string', 'example' => '400'], + 'ErrorMessage' => ['description' => '调用失败时,返回的出错信息。', 'type' => 'string', 'example' => 'Unexpected internal error.'], + 'RequestId' => ['description' => '阿里云为该请求生成的唯一标识符。', 'type' => 'string', 'example' => 'E55***B7-4***-4***-8***-D3******F565'], + 'Success' => ['description' => '是否调用成功。'."\n" + ."\n" + .'- **true**:调用成功。'."\n" + .'- **false**:调用失败。', 'type' => 'boolean', 'example' => 'true'], 'Data' => [ + 'description' => '调用成功,返回的数据。', 'type' => 'object', 'properties' => [ - 'PageNo' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'PageSize' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Total' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'PageCount' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'StorageOrderList' => [ + 'PageNo' => ['description' => '当前页码。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'PageSize' => ['description' => '每页显示的记录数。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'Total' => ['description' => '总记录数。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'AccountList' => [ + 'description' => '用户列表信息。', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'Status' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Copies' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Specification' => [ - 'type' => 'string', - ], - 'RecordType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'CommodityCode' => [ - 'type' => 'string', - ], - 'PreConsume' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'EndTimeUTC' => [ - 'type' => 'string', - ], - 'UserId' => [ - 'type' => 'string', - ], - 'IdentityId' => [ - 'type' => 'string', - ], - 'StartTimeUTC' => [ - 'type' => 'string', - ], - 'EndTime' => [ - 'type' => 'string', - ], - 'StartTime' => [ - 'type' => 'string', - ], - 'OutOrderNo' => [ - 'type' => 'string', - ], - 'Price' => [ - 'type' => 'string', - ], - 'OrderType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'PaymentStatus' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'UserName' => [ - 'type' => 'string', - ], - 'OrderId' => [ - 'type' => 'string', - ], - 'IotId' => [ - 'type' => 'string', - ], + 'IdentityAlias' => ['description' => '用户显示名称。', 'type' => 'string', 'example' => '18*******20'], + 'IdentityId' => ['description' => '用户身份ID。', 'type' => 'string', 'example' => '5035op97******************a63994'], + 'BindTime' => ['description' => '设备绑定用户的时间,13位毫秒级时间戳。', 'type' => 'integer', 'format' => 'int64', 'example' => '2222220000000'], ], + 'description' => '', ], ], ], ], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.DeviceOwnerChanged', - 'errorMessage' => 'Device owner changed.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderGetLockFailed', - 'errorMessage' => 'Get storage order lock failed try again later.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.TenantMismatch', 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', 'description' => '接口调用方的租户和账号归属的租户不一致。'], + ['errorCode' => 'iot.vision.QueryBindingAccountFailed', 'errorMessage' => 'Query binding account failed.', 'description' => '查询绑定的用户失败。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'TransferStorageOrder' => [ - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Unexpected internal error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"PageNo\\": 1,\\n \\"PageSize\\": 1,\\n \\"Total\\": 1,\\n \\"AccountList\\": [\\n {\\n \\"IdentityAlias\\": \\"18*******20\\",\\n \\"IdentityId\\": \\"5035op97******************a63994\\",\\n \\"BindTime\\": 2222220000000\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<ListBindingAccountByDeviceResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <PageSize>1</PageSize>\\n <Total>1</Total>\\n <PageNo>1</PageNo>\\n <AccountList>\\n <BindTime>1700209801000</BindTime>\\n <IdentityId>5035op97******************a63994</IdentityId>\\n <IdentityAlias>18*******20</IdentityAlias>\\n </AccountList>\\n</Data>\\n<Success>true</Success>\\n</ListBindingAccountByDeviceResponse>","errorExample":""}]', + 'title' => 'ListBindingAccountByDevice', + 'summary' => '调用该接口查询指定设备所绑定的用户列表。', + 'description' => '## QPS限制'."\n" + ."\n" + .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" + ."\n" + .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', + 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListBindingAccountByDevice'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:ListBindingAccountByDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + ], + 'ListBindingDeviceByAccount' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -3512,104 +2100,34 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'EventRecordDuration', - 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '30', - 'minimum' => '0', - 'default' => '10', - ], - ], - [ - 'name' => 'DstIotId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], - ], - [ - 'name' => 'SupportCrossIdentityTransfer', - 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], - ], - [ - 'name' => 'SrcIotId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], - ], - [ - 'name' => 'SrcOrderId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], - ], - [ - 'name' => 'EventRecordProlong', + 'name' => 'OpenId', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ - 'name' => 'ImmediateUse', + 'name' => 'OpenIdAppKey', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ - 'name' => 'UserName', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '50', 'minimum' => '1'], ], [ - 'name' => 'UserId', + 'name' => 'IdentityId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ - 'name' => 'EnableDefaultPlan', + 'name' => 'PageNo', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '100', 'minimum' => '1'], ], [ - 'name' => 'PreRecordDuration', + 'name' => 'SubDevice', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '5', - 'minimum' => '0', - 'default' => '0', - ], + 'schema' => ['type' => 'boolean', 'required' => false], ], ], 'responses' => [ @@ -3617,83 +2135,30 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'Status' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Copies' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Specification' => [ - 'type' => 'string', - ], - 'RecordType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'CommodityCode' => [ - 'type' => 'string', - ], - 'PreConsume' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'EndTimeUTC' => [ - 'type' => 'string', - ], - 'UserId' => [ - 'type' => 'string', - ], - 'IdentityId' => [ - 'type' => 'string', - ], - 'StartTimeUTC' => [ - 'type' => 'string', - ], - 'EndTime' => [ - 'type' => 'string', - ], - 'StartTime' => [ - 'type' => 'string', - ], - 'OutOrderNo' => [ - 'type' => 'string', - ], - 'Price' => [ - 'type' => 'string', - ], - 'OrderType' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'PaymentStatus' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'UserName' => [ - 'type' => 'string', - ], - 'OrderId' => [ - 'type' => 'string', - ], - 'IotId' => [ - 'type' => 'string', + 'PageNo' => ['type' => 'integer', 'format' => 'int32'], + 'PageSize' => ['type' => 'integer', 'format' => 'int32'], + 'Total' => ['type' => 'integer', 'format' => 'int64'], + 'PageCount' => ['type' => 'integer', 'format' => 'int32'], + 'DeviceList' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ProductKey' => ['type' => 'string'], + 'Owned' => ['type' => 'integer', 'format' => 'int32'], + 'DeviceName' => ['type' => 'string'], + 'NodeType' => ['type' => 'string'], + 'BindTime' => ['type' => 'integer', 'format' => 'int64'], + 'IotId' => ['type' => 'string'], + ], + ], ], ], ], @@ -3703,70 +2168,46 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNoOwner', - 'errorMessage' => 'Device has no owner.', - ], - [ - 'errorCode' => 'iot.vision.DeviceOwnerChanged', - 'errorMessage' => 'Device owner changed.', - ], - [ - 'errorCode' => 'iot.vision.InvalidStorageOrder', - 'errorMessage' => 'Invalid storage order.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderGetLockFailed', - 'errorMessage' => 'Get storage order lock failed try again later.', - ], - [ - 'errorCode' => 'iot.vision.StorageOrderStatusInvalid', - 'errorMessage' => 'Storage order status invalid.', - ], - [ - 'errorCode' => 'iot.vision.TargetDeviceOwnerDifferent', - 'errorMessage' => 'Target device owner is different.', - ], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.QueryBindingDeviceFailed', 'errorMessage' => 'Query binding device failed.', 'description' => '查询绑定设备列表失败。'], + ['errorCode' => 'iot.vision.GetAccountInfoFailed', 'errorMessage' => 'Get account info failed.', 'description' => '查询账号详情信息失败。'], + ['errorCode' => 'iot.vision.AccountNotFound', 'errorMessage' => 'Account not found.', 'description' => '找不到账号。'], + ['errorCode' => 'iot.vision.TenantMismatch', 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', 'description' => '接口调用方的租户和账号归属的租户不一致。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'UploadDeviceNameList' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListBindingDeviceByAccount'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:ListBindingDeviceByAccount', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"PageNo\\": 0,\\n \\"PageSize\\": 0,\\n \\"Total\\": 0,\\n \\"PageCount\\": 0,\\n \\"DeviceList\\": [\\n {\\n \\"ProductKey\\": \\"\\",\\n \\"Owned\\": 0,\\n \\"DeviceName\\": \\"\\",\\n \\"NodeType\\": \\"\\",\\n \\"BindTime\\": 0,\\n \\"IotId\\": \\"\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'QueryBatchStatus' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -3775,33 +2216,19 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'DeviceNames', - 'in' => 'formData', - 'style' => 'repeatList', - 'schema' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'string', - ], - 'required' => true, - 'maxItems' => 10000, - ], + 'name' => 'BatchId', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => true], ], [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ 'name' => 'ProjectId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => true, - ], + 'schema' => ['type' => 'string', 'required' => true], ], ], 'responses' => [ @@ -3809,49 +2236,31 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'BatchId' => [ - 'type' => 'string', - ], + 'Status' => ['type' => 'string'], 'InvalidDetailList' => [ 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'DeviceName' => [ - 'type' => 'string', - ], - 'ErrorMsg' => [ - 'type' => 'string', - ], + 'DeviceName' => ['type' => 'string'], + 'ErrorMsg' => ['type' => 'string'], ], ], ], - 'RepeatedDeviceNameList' => [ + 'InvalidList' => [ 'type' => 'array', - 'items' => [ - 'type' => 'string', - ], + 'items' => ['type' => 'string'], ], - 'InvalidDeviceNameList' => [ + 'ValidList' => [ 'type' => 'array', - 'items' => [ - 'type' => 'string', - ], + 'items' => ['type' => 'string'], ], ], ], @@ -3861,54 +2270,41 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.ActiveCodeInsufficient', - 'errorMessage' => 'Active code quota is insufficient.', - ], - [ - 'errorCode' => 'iot.vision.DevicesCountExceedLimit', - 'errorMessage' => 'The devices count exceed the limit.', - ], - [ - 'errorCode' => 'iot.vision.DevicesExceedUnreleasedProductLimit', - 'errorMessage' => 'Devices count exceed the limit of unreleased product.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'GetThingEventSnapshot' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryBatchStatus'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryBatchStatus', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Status\\": \\"\\",\\n \\"InvalidDetailList\\": [\\n {\\n \\"DeviceName\\": \\"\\",\\n \\"ErrorMsg\\": \\"\\"\\n }\\n ],\\n \\"InvalidList\\": [\\n \\"\\"\\n ],\\n \\"ValidList\\": [\\n \\"\\"\\n ]\\n }\\n}","type":"json"}]', + ], + 'QueryDeviceDetail' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -3917,53 +2313,33 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'Identifier', - 'in' => 'query', - 'schema' => [ - 'description' => '物模型的事件标识符。', - 'type' => 'string', - 'required' => true, - 'example' => 'AlarmType', - ], - ], - [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备所属产品的**ProductKey**。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'a1Bw******', - ], + 'schema' => ['description' => '视频设备所属产品的**ProductKey**。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'a1Bw******'], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备名称。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'Device01', - ], + 'schema' => ['description' => '视频设备的设备名称。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'Device01'], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备ID。'."\n" - .'><notice>'."\n" - .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'C47T6xwp6ms4bNlkHRWCg4****', - ], + 'schema' => ['description' => '视频设备的设备ID。'."\n" + .'><notice>'."\n" + .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'C47T6xwp6ms4bNlkHRWCg4****'], + ], + [ + 'name' => 'ProjectId', + 'in' => 'query', + 'schema' => ['description' => '项目ID。', 'type' => 'string', 'required' => true, 'example' => 'a123qs*****sy4QU'], ], ], 'responses' => [ @@ -3971,147 +2347,70 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', - 'type' => 'string', - 'example' => '400', - ], - 'ErrorMessage' => [ - 'description' => '调用失败时,返回的出错信息。', - 'type' => 'string', - 'example' => 'Unexpected internal error.', - ], - 'RequestId' => [ - 'description' => '阿里云为该请求生成的唯一标识符。', - 'type' => 'string', - 'example' => 'E55***B7-4***-4***-8***-D3******F565', - ], - 'Success' => [ - 'description' => '是否调用成功。'."\n" - ."\n" - .'- **true**:调用成功。'."\n" - .'- **false**:调用失败。', - 'type' => 'boolean', - 'example' => 'true', - ], + 'Code' => ['description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', 'type' => 'string', 'example' => '400'], + 'ErrorMessage' => ['description' => '调用失败时,返回的出错信息。', 'type' => 'string', 'example' => 'Request parameter error.'], + 'RequestId' => ['description' => '阿里云为该请求生成的唯一标识符。', 'type' => 'string', 'example' => 'E55***B7-4***-4***-8***-D3******F565'], + 'Success' => ['description' => '是否调用成功。'."\n" + ."\n" + .'- **true**:调用成功。'."\n" + .'- **false**:调用失败。', 'type' => 'boolean', 'example' => 'true'], 'Data' => [ 'description' => '调用成功,返回的数据。', - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'EventType' => [ - 'description' => '事件类型。'."\n" - ."\n" - .'- **info**:信息。'."\n" - .'- **alert**:告警。'."\n" - .'- **error**:故障。', - 'type' => 'string', - 'example' => 'alert', - ], - 'EventCode' => [ - 'description' => '事件Code。', - 'type' => 'string', - 'example' => 'IntelligentAlarm', - ], - 'Identifier' => [ - 'description' => '事件标识符。', - 'type' => 'string', - 'example' => 'IntelligentAlarm', - ], - 'Timestamp' => [ - 'description' => '事件发生的时间戳。单位为毫秒。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1700010288668', - ], - 'EventBody' => [ - 'description' => '事件内容。', - 'type' => 'string', - 'example' => '{\\"EventList \\":[{\\"AlarmPicID \\":\\"\\",\\"EventTime \\":\\"1700010288542 \\",\\"AlarmType \\":1,\\"AlarmPicSize \\":1,\\"Data \\":\\"test \\"}]}', - ], - 'IotId' => [ - 'description' => '设备ID。', - 'type' => 'string', - 'example' => 'C47T6xwp6ms4bNlkHRWCg4****', - ], - ], + 'type' => 'object', + 'properties' => [ + 'Status' => ['description' => '设备状态。取值:'."\n" + ."\n" + .'- **ONLINE**:设备在线。'."\n" + .'- **OFFLINE**:设备离线。'."\n" + .'- **UNACTIVE**:设备未激活。'."\n" + .'- **DISABLE**:设备已禁用。', 'type' => 'string', 'example' => 'ONLINE'], + 'ProductName' => ['description' => '设备所属产品的名称。', 'type' => 'string', 'example' => 'test'], + 'DeviceName' => ['description' => '设备名称。', 'type' => 'string', 'example' => 'Device01'], + 'CreateTime' => ['description' => '设备的创建时间,13位毫秒级时间戳。', 'type' => 'integer', 'format' => 'int64', 'example' => '1834500000000'], + 'FirmwareVersion' => ['description' => '设备默认(default)OTA模块的版本号。', 'type' => 'string', 'example' => 'V1.0.0.0'], + 'OnlineTime' => ['description' => '设备最后上线时间,13位毫秒级时间戳。', 'type' => 'integer', 'format' => 'int64', 'example' => '2298700000000'], + 'ActiveTime' => ['description' => '设备的激活时间,13位毫秒级时间戳。', 'type' => 'integer', 'format' => 'int64', 'example' => '1934500000000'], + 'ProductKey' => ['description' => '设备所属产品的**ProductKey**。', 'type' => 'string', 'example' => 'a1Bw******'], + 'IpAddress' => ['description' => '设备的IP地址。', 'type' => 'string', 'example' => '10.***.***.***'], + 'NodeType' => ['description' => '节点类型,取值:'."\n" + ."\n" + .'- **0**:设备。设备不能挂载子设备。'."\n" + .'- **1**:网关。网关可以挂载子设备。', 'type' => 'integer', 'format' => 'int32', 'example' => '0'], + 'Region' => ['description' => '设备所在地域的ID。', 'type' => 'string', 'example' => 'cn-shanghai'], + 'DeviceSecret' => ['description' => '设备密钥。', 'type' => 'string', 'example' => 'mz2Canp4GB7qRVf1OYPNtRqB2anu****'], + 'Nickname' => ['description' => '设备的备注名称。', 'type' => 'string', 'example' => 'detectors_in_beijing'], + 'IotId' => ['description' => '设备ID。', 'type' => 'string', 'example' => 'C47T6xwp6ms4bNlkHRWCg4****'], ], ], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.InvalidIotInstance', - 'errorMessage' => 'Invalid iot instance.', - ], - [ - 'errorCode' => 'iot.vision.ProductNotExist', - 'errorMessage' => 'Product not exist.', - ], - [ - 'errorCode' => 'iot.vision.ThingModelNotExist', - 'errorMessage' => 'Thing model not exist.', - ], - [ - 'errorCode' => 'iot.vision.ThingModelIdentifierNotExist', - 'errorMessage' => 'Thing model identifier not exist.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], - [ - 'errorCode' => 'iot.vision.InstanceArrearage', - 'errorMessage' => 'Instance arrearage.', - ], - [ - 'errorCode' => 'iot.vision.GetThingEventSnapshotFailed', - 'errorMessage' => 'Get thing event snapshot failed.', - ], - [ - 'errorCode' => 'iot.vision.ThingEventNotFound', - 'errorMessage' => 'Thing event not found.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.InvalidIotInstance', 'errorMessage' => 'Invalid iot instance.', 'description' => '无效的实例或者找不到对应实例。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], + ['errorCode' => 'iot.vision.ProductNotExist', 'errorMessage' => 'Product not exist.', 'description' => '产品不存在。'], + ['errorCode' => 'iot.vision.DeviceNameFormatInvalid', 'errorMessage' => 'Device name format invalid.', 'description' => '设备名称格式无效。'], + ['errorCode' => 'iot.vision.InstanceArrearage', 'errorMessage' => 'Instance arrearage.', 'description' => '实例已欠费。'], + ['errorCode' => 'iot.vision.ProductKeyFormatInvalid', 'errorMessage' => 'Product key format invalid.', 'description' => '产品Key格式无效。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], - [ - 'errorCode' => 'iot.vision.HasNoAccessPermission', - 'errorMessage' => 'Has no access permission.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], + ['errorCode' => 'iot.vision.HasNoAccessPermission', 'errorMessage' => 'Has no access permission.', 'description' => '没有访问权限。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Unexpected internal error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": [\\n {\\n \\"EventType\\": \\"alert\\",\\n \\"EventCode\\": \\"IntelligentAlarm\\",\\n \\"Identifier\\": \\"IntelligentAlarm\\",\\n \\"Timestamp\\": 1700010288668,\\n \\"EventBody\\": \\"{\\\\\\\\\\\\\\"EventList \\\\\\\\\\\\\\":[{\\\\\\\\\\\\\\"AlarmPicID \\\\\\\\\\\\\\":\\\\\\\\\\\\\\"\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"EventTime \\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1700010288542 \\\\\\\\\\\\\\",\\\\\\\\\\\\\\"AlarmType \\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"AlarmPicSize \\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"Data \\\\\\\\\\\\\\":\\\\\\\\\\\\\\"test \\\\\\\\\\\\\\"}]}\\",\\n \\"IotId\\": \\"C47T6xwp6ms4bNlkHRWCg4****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"<GetThingEventSnapshotResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <IotId>C47T6xwp6ms4bNlkHRWCg4****</IotId>\\n <Identifier>IntelligentAlarm</Identifier>\\n <EventBody>{\\"EventList \\":[{\\"AlarmPicID \\":\\"\\",\\"EventTime \\":\\"1700010288542 \\",\\"AlarmType \\":1,\\"AlarmPicSize \\":1,\\"Data \\":\\"test \\"}]}</EventBody>\\n <EventType>alert</EventType>\\n <Timestamp>1700010288668</Timestamp>\\n <EventCode>IntelligentAlarm</EventCode>\\n</Data>\\n<Success>true</Success>\\n</GetThingEventSnapshotResponse>","errorExample":""}]', - 'title' => '查询物模型事件的快照', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Status\\": \\"ONLINE\\",\\n \\"ProductName\\": \\"test\\",\\n \\"DeviceName\\": \\"Device01\\",\\n \\"CreateTime\\": 1834500000000,\\n \\"FirmwareVersion\\": \\"V1.0.0.0\\",\\n \\"OnlineTime\\": 2298700000000,\\n \\"ActiveTime\\": 1934500000000,\\n \\"ProductKey\\": \\"a1Bw******\\",\\n \\"IpAddress\\": \\"10.***.***.***\\",\\n \\"NodeType\\": 0,\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"DeviceSecret\\": \\"mz2Canp4GB7qRVf1OYPNtRqB2anu****\\",\\n \\"Nickname\\": \\"detectors_in_beijing\\",\\n \\"IotId\\": \\"C47T6xwp6ms4bNlkHRWCg4****\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryDeviceDetailResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <Status>ONLINE</Status>\\n <ProductName>test</ProductName>\\n <DeviceSecret>mz2Canp4GB7qRVf1OYPNtRqB2anu****</DeviceSecret>\\n <CreateTime>1834500000000</CreateTime>\\n <OnlineTime>2298700000000</OnlineTime>\\n <FirmwareVersion>V1.0.0.0</FirmwareVersion>\\n <IotId>C47T6xwp6ms4bNlkHRWCg4****</IotId>\\n <ActiveTime>1934500000000</ActiveTime>\\n <NodeType>0</NodeType>\\n <Region>cn-shanghai</Region>\\n <IpAddress>10.***.***.***</IpAddress>\\n <ProductKey>a1Bw******</ProductKey>\\n <Nickname>detectors_in_beijing</Nickname>\\n <DeviceName>Device01</DeviceName>\\n</Data>\\n<Success>true</Success>\\n</QueryDeviceDetailResponse>","errorExample":""}]', + 'title' => 'QueryDeviceDetail', + 'summary' => '调用该接口查询指定设备的详细信息。', 'description' => '## QPS限制'."\n" ."\n" .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" @@ -4120,16 +2419,29 @@ 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'BatchBindDevice' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDeviceDetail'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryDeviceDetail', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + ], + 'QueryDevicesDownloadUrl' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -4138,55 +2450,14 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'OpenId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], - ], - [ - 'name' => 'OpenIdAppKey', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], - ], - [ - 'name' => 'IdentityId', + 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ - 'name' => 'DeviceList', + 'name' => 'BatchId', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ProductKey' => [ - 'type' => 'string', - 'required' => false, - ], - 'DeviceName' => [ - 'type' => 'string', - 'required' => false, - ], - 'IotId' => [ - 'type' => 'string', - 'required' => false, - ], - ], - ], - 'required' => true, - 'maxItems' => 20, - ], + 'schema' => ['type' => 'string', 'required' => true], ], ], 'responses' => [ @@ -4194,45 +2465,14 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ - 'BindDeviceList' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'BindResultMessage' => [ - 'type' => 'string', - ], - 'ProductKey' => [ - 'type' => 'string', - ], - 'BindResultCode' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'DeviceName' => [ - 'type' => 'string', - ], - 'IotId' => [ - 'type' => 'string', - ], - ], - ], - ], + 'OssDownloadUrl' => ['type' => 'string'], ], ], ], @@ -4241,66 +2481,38 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.GetAccountInfoFailed', - 'errorMessage' => 'Get account info failed.', - ], - [ - 'errorCode' => 'iot.vision.AccountNotFound', - 'errorMessage' => 'Account not found.', - ], - [ - 'errorCode' => 'iot.vision.TenantMismatch', - 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', - ], - [ - 'errorCode' => 'iot.vision.IdentityAppKeyProductNotBind', - 'errorMessage' => 'The app associated with the identityId does not have permission to access the product.', - ], - [ - 'errorCode' => 'iot.vision.BindFailed', - 'errorMessage' => 'Bind account and device failed.', - ], + ['errorCode' => 'iot.system.SystemException', 'errorMessage' => 'An internal error occurred. Try again later.', 'description' => ''], + ['errorCode' => 'iot.common.AuthActionPermissionDeny', 'errorMessage' => 'The authorization fails.', 'description' => '鉴权失败。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.lv.requestAuthError', 'errorMessage' => 'Request auth error.', 'description' => '认证出错。'], + ['errorCode' => 'iot.lv.requestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], ], - 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDevicesDownloadUrl'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryDevicesDownloadUrl', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"OssDownloadUrl\\": \\"\\"\\n }\\n}","type":"json"}]', ], - 'GetAccountById' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'QueryFreeStorage' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -4309,42 +2521,19 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'OpenId', + 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'description' => '三方平台用户ID。'."\n" - .'><notice> 如果传入该参数,需同时传入**OpenIdAppKey**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => '60yqjd1**************************561da00851', - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ - 'name' => 'OpenIdAppKey', + 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'description' => '三方平台颁发的AppKey。'."\n" - ."\n" - .'><notice> 如果传入该参数,需同时传入**OpenId**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => '76****57', - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ - 'name' => 'IdentityId', + 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'description' => '用户身份ID。'."\n" - ."\n" - .'><notice> **IdentityId**作为用户标识符,和**OpenId**与**OpenIdAppKey**组合是一一对应的关系。如果传入该参数,则无需传入**OpenId**和**OpenIdAppKey**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => '5035op97******************a63994', - ], + 'schema' => ['type' => 'string', 'required' => false], ], ], 'responses' => [ @@ -4352,76 +2541,23 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', - 'type' => 'string', - 'example' => '400', - ], - 'ErrorMessage' => [ - 'description' => '调用失败时,返回的出错信息。', - 'type' => 'string', - 'example' => 'Unexpected internal error.', - ], - 'RequestId' => [ - 'description' => '阿里云为该请求生成的唯一标识符。', - 'type' => 'string', - 'example' => 'E55***B7-4***-4***-8***-D3******F565', - ], - 'Success' => [ - 'description' => '是否调用成功。'."\n" - ."\n" - .'- **true**:调用成功。'."\n" - .'- **false**:调用失败。', - 'type' => 'boolean', - 'example' => 'true', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ - 'description' => '调用成功,返回的数据。', 'type' => 'object', 'properties' => [ - 'LoginName' => [ - 'description' => '账号登录名称。', - 'type' => 'string', - 'example' => '18*******20', - ], - 'Email' => [ - 'description' => '邮箱地址。', - 'type' => 'string', - 'example' => '******', - ], - 'IdentityId' => [ - 'description' => '用户身份ID。', - 'type' => 'string', - 'example' => '5035op97******************a63994', - ], - 'LastLoginTime' => [ - 'description' => '最后登录时间,13位毫秒级时间戳。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1700209499000', - ], - 'GmtCreate' => [ - 'description' => '账号创建时间。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1700189358000', - ], - 'NickName' => [ - 'description' => '用户昵称。', - 'type' => 'string', - 'example' => '18*******20', - ], - 'GmtModified' => [ - 'description' => '账号修改时间。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1700209499000', - ], - 'Phone' => [ - 'description' => '手机号。', - 'type' => 'string', - 'example' => '18*******20', - ], + 'EndTime' => ['type' => 'string'], + 'Type' => ['type' => 'integer', 'format' => 'int32'], + 'StartTime' => ['type' => 'string'], + 'EndTimeUTC' => ['type' => 'string'], + 'Months' => ['type' => 'integer', 'format' => 'int32'], + 'Expired' => ['type' => 'integer', 'format' => 'int32'], + 'RemainQuota' => ['type' => 'integer', 'format' => 'int32'], + 'StartTimeUTC' => ['type' => 'string'], + 'Consumed' => ['type' => 'integer', 'format' => 'int32'], + 'Lifecycle' => ['type' => 'integer', 'format' => 'int32'], ], ], ], @@ -4430,69 +2566,47 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.GetAccountInfoFailed', - 'errorMessage' => 'Get account info failed.', - ], - [ - 'errorCode' => 'iot.vision.AccountNotFound', - 'errorMessage' => 'Account not found.', - ], - [ - 'errorCode' => 'iot.vision.TenantMismatch', - 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.FreeStorageQuotaLimit', 'errorMessage' => 'No enough free storage quota or exceed limit.', 'description' => '免费试用的云存储配额不足或超限制。'], + ['errorCode' => 'iot.vision.GetDeviceInfoFailed', 'errorMessage' => 'Get device info failed.', 'description' => '查询设备详情失败。'], + ['errorCode' => 'iot.vision.StorageOrderGetLockFailed', 'errorMessage' => 'Get storage order lock failed try again later.', 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Unexpected internal error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"LoginName\\": \\"18*******20\\",\\n \\"Email\\": \\"******\\",\\n \\"IdentityId\\": \\"5035op97******************a63994\\",\\n \\"LastLoginTime\\": 1700209499000,\\n \\"GmtCreate\\": 1700189358000,\\n \\"NickName\\": \\"18*******20\\",\\n \\"GmtModified\\": 1700209499000,\\n \\"Phone\\": \\"18*******20\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"<GetAccountByIdResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <LastLoginTime>1700209499000</LastLoginTime>\\n <LoginName>18*******20</LoginName>\\n <GmtCreate>1700189358000</GmtCreate>\\n <Email>******</Email>\\n <Phone>18*******20</Phone>\\n <GmtModified>1700209499000</GmtModified>\\n <IdentityId>5035op97******************a63994</IdentityId>\\n <NickName>18*******20</NickName>\\n</Data>\\n<Success>true</Success>\\n</GetAccountByIdResponse>","errorExample":""}]', - 'title' => 'GetAccountById', - 'summary' => '调用该接口根据用户身份ID(IdentityId)或三方平台用户ID(OpenId)查询用户账号信息。', - 'description' => '## QPS限制'."\n" - ."\n" - .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" - ."\n" - .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', - 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'GetDeviceStatus' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryFreeStorage'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryFreeStorage', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"EndTime\\": \\"\\",\\n \\"Type\\": 0,\\n \\"StartTime\\": \\"\\",\\n \\"EndTimeUTC\\": \\"\\",\\n \\"Months\\": 0,\\n \\"Expired\\": 0,\\n \\"RemainQuota\\": 0,\\n \\"StartTimeUTC\\": \\"\\",\\n \\"Consumed\\": 0,\\n \\"Lifecycle\\": 0\\n }\\n}","type":"json"}]', + ], + 'QueryGenerateDevicesInfoList' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -4501,43 +2615,24 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'ProductKey', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备所属产品的**ProductKey**。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'a1Bw******', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '50', 'minimum' => '1'], ], [ - 'name' => 'DeviceName', + 'name' => 'BatchId', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备名称。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'Device01', - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ - 'name' => 'IotId', + 'name' => 'PageNo', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备ID。'."\n" - .'><notice>'."\n" - .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'C47T6xwp6ms4bNlkHRWCg4****', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '1000', 'minimum' => '1'], + ], + [ + 'name' => 'ProjectId', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => true], ], ], 'responses' => [ @@ -4545,42 +2640,26 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', - 'type' => 'string', - 'example' => '400', - ], - 'ErrorMessage' => [ - 'description' => '调用失败时,返回的出错信息。', - 'type' => 'string', - 'example' => 'Unexpected internal error.', - ], - 'RequestId' => [ - 'description' => '阿里云为该请求生成的唯一标识符。', - 'type' => 'string', - 'example' => 'E55***B7-4***-4***-8***-D3******F565', - ], - 'Success' => [ - 'description' => '是否调用成功。'."\n" - ."\n" - .'- **true**:调用成功。'."\n" - .'- **false**:调用失败。', - 'type' => 'boolean', - 'example' => 'true', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ - 'description' => '调用成功,返回的数据。', 'type' => 'object', 'properties' => [ - 'Status' => [ - 'description' => '设备当前状态。'."\n" - ."\n" - .'- **ONLINE**:设备在线。'."\n" - .'- **OFFLINE**:设备离线。'."\n" - .'- **UNACTIVE**:设备未激活。'."\n" - .'- **DISABLE**:设备已禁用。', - 'type' => 'string', - 'example' => 'ONLINE', + 'PageNo' => ['type' => 'integer', 'format' => 'int32'], + 'PageSize' => ['type' => 'integer', 'format' => 'int32'], + 'Total' => ['type' => 'integer', 'format' => 'int32'], + 'ListData' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'DeviceName' => ['type' => 'string'], + 'IotId' => ['type' => 'string'], + 'DeviceSecret' => ['type' => 'string'], + ], + ], ], ], ], @@ -4590,77 +2669,43 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.InvalidIotInstance', - 'errorMessage' => 'Invalid iot instance.', - ], - [ - 'errorCode' => 'iot.vision.ProductNotExist', - 'errorMessage' => 'Product not exist.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], - [ - 'errorCode' => 'iot.vision.InstanceArrearage', - 'errorMessage' => 'Instance arrearage.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.common.RamActionPermissionDeny', 'errorMessage' => 'You do not have the RAM permission.', 'description' => '没有资源访问控制(RAM)权限。'], + ['errorCode' => 'iot.vision.ProductNotExist', 'errorMessage' => 'Product not exist.', 'description' => '产品不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], - [ - 'errorCode' => 'iot.vision.HasNoAccessPermission', - 'errorMessage' => 'Has no access permission.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Unexpected internal error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Status\\": \\"ONLINE\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"<GetDeviceStatusResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <Status>ONLINE</Status>\\n</Data>\\n<Success>true</Success>\\n</GetDeviceStatusResponse>","errorExample":""}]', - 'title' => 'GetDeviceStatus', - 'summary' => '调用该接口查询设备的状态。', - 'description' => '## QPS限制'."\n" - ."\n" - .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" - ."\n" - .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', - 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'GetSubDeviceList' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryGenerateDevicesInfoList'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryGenerateDevicesInfoList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"PageNo\\": 0,\\n \\"PageSize\\": 0,\\n \\"Total\\": 0,\\n \\"ListData\\": [\\n {\\n \\"DeviceName\\": \\"\\",\\n \\"IotId\\": \\"\\",\\n \\"DeviceSecret\\": \\"\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'QueryGenerateDevicesRecord' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -4670,68 +2715,26 @@ 'parameters' => [ [ 'name' => 'PageSize', - 'in' => 'query', - 'schema' => [ - 'description' => '指定返回结果中每页显示的记录数量,最大值是50。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '50', - 'minimum' => '1', - 'example' => '5', - ], - ], - [ - 'name' => 'ProductKey', - 'in' => 'query', - 'schema' => [ - 'description' => '网关设备所属产品的**ProductKey**。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'a1Bw******', - ], + 'in' => 'formData', + 'schema' => ['description' => '指定返回结果中每页显示的记录数量,最大值是100。', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '100', 'minimum' => '1', 'example' => '1'], ], [ - 'name' => 'DeviceName', - 'in' => 'query', - 'schema' => [ - 'description' => '网关设备的设备名称。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'Device01', - ], + 'name' => 'PageNo', + 'in' => 'formData', + 'schema' => ['description' => '指定显示返回结果中的第几页,最大值为1,000。', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '1000', 'minimum' => '1', 'example' => '1'], ], [ - 'name' => 'IotId', - 'in' => 'query', - 'schema' => [ - 'description' => '网关设备的设备ID。'."\n" - .'><notice>'."\n" - .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'C47T6xwp6ms4bNlkHRWCg4****', - ], + 'name' => 'StartTime', + 'in' => 'formData', + 'schema' => ['description' => '起始时间的毫秒级时间戳。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'maximum' => '9999999999999', 'minimum' => '1', 'example' => '1690819200000'], ], [ - 'name' => 'PageNo', - 'in' => 'query', - 'schema' => [ - 'description' => '指定显示返回结果中的第几页,最大值为100。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '100', - 'minimum' => '1', - 'example' => '1', - ], + 'name' => 'EndTime', + 'in' => 'formData', + 'schema' => ['description' => '结束时间的毫秒级时间戳。'."\n" + ."\n" + .'><notice> 起止时间间隔不能超过30天。'."\n" + .'></notice>', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'maximum' => '9999999999999', 'minimum' => '1', 'example' => '1659283200000'], ], ], 'responses' => [ @@ -4739,233 +2742,142 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', - 'type' => 'string', - 'example' => '400', - ], - 'ErrorMessage' => [ - 'description' => '调用失败时,返回的出错信息。', - 'type' => 'string', - 'example' => 'Request parameter error.', - ], - 'RequestId' => [ - 'description' => '阿里云为该请求生成的唯一标识符。', - 'type' => 'string', - 'example' => 'E55***B7-4***-4***-8***-D3******F565', - ], - 'Success' => [ - 'description' => '是否调用成功。'."\n" - ."\n" - .'- **true**:调用成功。'."\n" - .'- **false**:调用失败。', - 'type' => 'boolean', - 'example' => 'true', - ], + 'Code' => ['description' => '调用结果状态码:'."\n" + .'- 调用成功,返回200。'."\n" + .'- 调用失败,返回错误码。详细信息,请参见下文**错误码**。', 'type' => 'string', 'example' => '400'], + 'ErrorMessage' => ['description' => '调用失败时,返回的出错信息。', 'type' => 'string', 'example' => 'Request parameter error.'], + 'RequestId' => ['description' => '阿里云为该请求生成的唯一标识符。', 'type' => 'string', 'example' => 'E5******-4***-***B-8**E-D3********65'], + 'Success' => ['description' => '是否调用成功。'."\n" + .'- **true**:调用成功。'."\n" + .'- **false**:调用失败。', 'type' => 'boolean', 'example' => 'true'], 'Data' => [ - 'description' => '调用成功,返回的数据。', + 'description' => '调用成功,返回的结果。', 'type' => 'object', 'properties' => [ - 'PageNo' => [ - 'description' => '当前页码。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => '每页显示的记录数。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'Total' => [ - 'description' => '总记录数。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'SubDeviceList' => [ - 'description' => '子设备列表信息。', + 'PageNo' => ['description' => '当前页码。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'PageSize' => ['description' => '每页显示的记录数。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'Total' => ['description' => '总记录数。', 'type' => 'integer', 'format' => 'int32', 'example' => '5'], + 'ListData' => [ + 'description' => '设备注册记录的详细信息。', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'ProductKey' => [ - 'description' => '设备所属产品的**ProductKey**。', - 'type' => 'string', - 'example' => 'wse5******', - ], - 'DeviceName' => [ - 'description' => '设备名称。', - 'type' => 'string', - 'example' => 'device-test', - ], - 'IotId' => [ - 'description' => '设备ID。', - 'type' => 'string', - 'example' => 'qswdfrttgg*********', - ], + 'ApplyDeviceCount' => ['description' => '申请的设备数量。', 'type' => 'integer', 'format' => 'int64', 'example' => '133'], + 'SpecCode' => ['description' => '激活码规格Code。取值:'."\n" + ."\n" + .'- **Consumer_IPC_512Kbps**:消费类IPC 512Kbps。'."\n" + .'- **Consumer_IPC_1Mbps**:消费类IPC 1Mbps。'."\n" + .'- **Consumer_IPC_2Mbps**:消费类IPC 2Mbps。'."\n" + .'- **Consumer_IPC_4Mbps**:消费类IPC 4Mbps。'."\n" + .'- **Industry_IPC**:行业类IPC。'."\n" + .'- **NVR_Less64**:NVR小于等于64路。'."\n" + .'- **NVR_Higher64**:NVR大于64路。', 'type' => 'string', 'example' => 'Consumer_IPC_512Kbps'], + 'ProductKey' => ['description' => '设备所属产品的**ProductKey**。', 'type' => 'string', 'example' => 'a3w******'], + 'ProductName' => ['description' => '设备所属产品的名称。', 'type' => 'string', 'example' => '电饭煲'], + 'CreateTime' => ['description' => '批量注册设备任务的提交时间,格式为毫秒级时间戳。', 'type' => 'integer', 'format' => 'int64', 'example' => '1690819200000'], + 'BatchStatus' => ['description' => '批量注册的批次状态。'."\n" + ."\n" + .'- **CREATE**:正在创建设备。'."\n" + .'- **CREATE_SUCCESS**:申请单中的所有设备创建成功。'."\n" + .'- **CREATE_FAILED**:申请单中有设备创建失败。', 'type' => 'string', 'example' => 'CREATE'], + 'NetworkType' => ['description' => '产品的连网方式。取值:'."\n" + ."\n" + .'- **WIFI**:Wi-Fi。'."\n" + .'- **CELLULAR**:蜂窝GPRS/3G/4G/5G。'."\n" + .'- **ETHERNET**:以太网。'."\n" + .'- **OTHER**:其他网络类型。', 'type' => 'string', 'example' => 'WIFI'], + 'OperateUid' => ['description' => '操作账号的UID。', 'type' => 'integer', 'format' => 'int64', 'example' => '110000000000'], + 'SuccessCount' => ['description' => '批量注册设备成功的设备数量。', 'type' => 'integer', 'format' => 'int64', 'example' => '5'], + 'BatchId' => ['description' => '申请的批次ID。', 'type' => 'string', 'example' => '1508******195'], ], + 'description' => '', ], ], ], ], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.InvalidIotInstance', - 'errorMessage' => 'Invalid iot instance.', - ], - [ - 'errorCode' => 'iot.vision.ProductNotExist', - 'errorMessage' => 'Product not exist.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], - [ - 'errorCode' => 'iot.vision.InstanceArrearage', - 'errorMessage' => 'Instance arrearage.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], - [ - 'errorCode' => 'iot.vision.HasNoAccessPermission', - 'errorMessage' => 'Has no access permission.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"PageNo\\": 1,\\n \\"PageSize\\": 1,\\n \\"Total\\": 1,\\n \\"SubDeviceList\\": [\\n {\\n \\"ProductKey\\": \\"wse5******\\",\\n \\"DeviceName\\": \\"device-test\\",\\n \\"IotId\\": \\"qswdfrttgg*********\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<GetSubDeviceListResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <PageSize/>\\n <Total>1</Total>\\n <PageNo/>\\n <SubDeviceList>\\n <IotId>qswdfrttgg*********</IotId>\\n <ProductKey>wse5******</ProductKey>\\n <DeviceName>device-test</DeviceName>\\n </SubDeviceList>\\n</Data>\\n<Success>true</Success>\\n</GetSubDeviceListResponse>","errorExample":""}]', - 'title' => 'GetSubDeviceList', - 'summary' => '调用该接口查询网关设备的子设备列表。', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E5******-4***-***B-8**E-D3********65\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"PageNo\\": 1,\\n \\"PageSize\\": 1,\\n \\"Total\\": 5,\\n \\"ListData\\": [\\n {\\n \\"ApplyDeviceCount\\": 133,\\n \\"SpecCode\\": \\"Consumer_IPC_512Kbps\\",\\n \\"ProductKey\\": \\"a3w******\\",\\n \\"ProductName\\": \\"电饭煲\\",\\n \\"CreateTime\\": 1690819200000,\\n \\"BatchStatus\\": \\"CREATE\\",\\n \\"NetworkType\\": \\"WIFI\\",\\n \\"OperateUid\\": 110000000000,\\n \\"SuccessCount\\": 5,\\n \\"BatchId\\": \\"1508******195\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryGenerateDevicesRecordResponse>\\n<RequestId>E5******-4***-***B-8**E-D3********65</RequestId>\\n<Data>\\n <PageSize>1</PageSize>\\n <Total>5</Total>\\n <PageNo>1</PageNo>\\n <ListData>\\n <SpecCode>Consumer_IPC_512Kbps</SpecCode>\\n <OperateUid>110000000000</OperateUid>\\n <ProductName>电饭煲</ProductName>\\n <NetworkType>WIFI</NetworkType>\\n <BatchStatus>CREATE</BatchStatus>\\n <CreateTime>1690819200000</CreateTime>\\n <BatchId>1508******195</BatchId>\\n <SuccessCount>5</SuccessCount>\\n <ProductKey>a3w******</ProductKey>\\n <ApplyDeviceCount>133</ApplyDeviceCount>\\n </ListData>\\n</Data>\\n<Code>200</Code>\\n<Success>true</Success>\\n</QueryGenerateDevicesRecordResponse>","errorExample":""}]', + 'title' => 'QueryGenerateDevicesRecord', + 'summary' => '调用该接口查询设备批量注册的记录信息。', 'description' => '## QPS限制'."\n" ."\n" - .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" + .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为20。'."\n" ."\n" .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'GetThingPropertySnapshot' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryGenerateDevicesRecord'], ], ], - 'systemTags' => [], - 'parameters' => [ + 'ramActions' => [ [ - 'name' => 'ProductKey', - 'in' => 'query', - 'schema' => [ - 'description' => '视频设备所属产品的**ProductKey**。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'a1Bw******', - ], - ], - [ - 'name' => 'DeviceName', - 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备名称。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'Device01', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryGenerateDevicesRecord', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], + ], + ], + 'QueryStorageCommodityList' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'IotId', - 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备ID。'."\n" - .'><notice>'."\n" - .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'C47T6xwp6ms4bNlkHRWCg4****', - ], + 'AK' => [], ], ], + 'systemTags' => [], + 'parameters' => [], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', - 'type' => 'string', - 'example' => '400', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ - 'description' => '调用成功,返回的属性数据。', - 'type' => 'string', - 'example' => '{\\"StreamVideoQuality\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"MotionDetectSensitivity\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"ImageFlipState\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"SubStreamVideoQuality\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"AlarmSwitch\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"AlarmFrequencyLevel\\":{\\"time\\":1700009930921,\\"value\\":\\"10\\"}}', - ], - 'ErrorMessage' => [ - 'description' => '调用失败时,返回的出错信息。', - 'type' => 'string', - 'example' => 'Request parameter error.', - ], - 'RequestId' => [ - 'description' => '阿里云为该请求生成的唯一标识符。', - 'type' => 'string', - 'example' => 'E55***B7-4***-4***-8***-D3******F565', - ], - 'Success' => [ - 'description' => '是否调用成功。'."\n" - ."\n" - .'- **true**:调用成功。'."\n" - .'- **false**:调用失败。', - 'type' => 'boolean', - 'example' => 'true', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Specification' => ['type' => 'string'], + 'CommodityCode' => ['type' => 'string'], + 'RecordType' => ['type' => 'integer', 'format' => 'int32'], + 'Price' => ['type' => 'string'], + 'Months' => ['type' => 'integer', 'format' => 'int32'], + 'CommodityName' => ['type' => 'string'], + 'Lifecycle' => ['type' => 'integer', 'format' => 'int32'], + ], + ], ], ], ], @@ -4973,81 +2885,42 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.InvalidIotInstance', - 'errorMessage' => 'Invalid iot instance.', - ], - [ - 'errorCode' => 'iot.vision.ProductNotExist', - 'errorMessage' => 'Product not exist.', - ], - [ - 'errorCode' => 'iot.vision.ThingModelNotExist', - 'errorMessage' => 'Thing model not exist.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], - [ - 'errorCode' => 'iot.vision.InstanceArrearage', - 'errorMessage' => 'Instance arrearage.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], - [ - 'errorCode' => 'iot.vision.HasNoAccessPermission', - 'errorMessage' => 'Has no access permission.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"Data\\": \\"{\\\\\\\\\\\\\\"StreamVideoQuality\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1699951400324,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\"MotionDetectSensitivity\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1699951400324,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\"ImageFlipState\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1699951400324,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\"SubStreamVideoQuality\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1699951400324,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\"AlarmSwitch\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1699951400324,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\"AlarmFrequencyLevel\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"time\\\\\\\\\\\\\\":1700009930921,\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"10\\\\\\\\\\\\\\"}}\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true\\n}","errorExample":""},{"type":"xml","example":"<GetThingPropertySnapshotResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>{\\"StreamVideoQuality\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"MotionDetectSensitivity\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"ImageFlipState\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"SubStreamVideoQuality\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"AlarmSwitch\\":{\\"time\\":1699951400324,\\"value\\":\\"0\\"},\\"AlarmFrequencyLevel\\":{\\"time\\":1700009930921,\\"value\\":\\"10\\"}}</Data>\\n<Success>true</Success>\\n</GetThingPropertySnapshotResponse>","errorExample":""}]', - 'title' => 'GetThingPropertySnapshot', - 'summary' => '调用该接口查询指定设备的所有物模型属性快照,返回物模型属性的最新数据。', - 'description' => '## QPS限制'."\n" - ."\n" - .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" - ."\n" - .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', - 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'InvokeThingService' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryStorageCommodityList'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryStorageCommodityList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": [\\n {\\n \\"Specification\\": \\"\\",\\n \\"CommodityCode\\": \\"\\",\\n \\"RecordType\\": 0,\\n \\"Price\\": \\"\\",\\n \\"Months\\": 0,\\n \\"CommodityName\\": \\"\\",\\n \\"Lifecycle\\": 0\\n }\\n ]\\n}","type":"json"}]', + ], + 'QueryStorageOrder' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -5056,63 +2929,29 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'Identifier', + 'name' => 'DeviceNoOwner', 'in' => 'query', - 'schema' => [ - 'description' => '物模型的服务标识符。', - 'type' => 'string', - 'required' => true, - 'example' => 'SetNum', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ - 'name' => 'ProductKey', + 'name' => 'OrderId', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备所属产品的**ProductKey**。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'a1Bw******', - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ - 'name' => 'DeviceName', + 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备名称。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'Device01', - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ - 'name' => 'Args', + 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'description' => '要启用服务的入参信息,数据格式为JSON String,例如**Args={"param1":1}**。', - 'type' => 'string', - 'required' => false, - 'example' => '{"param1":1}', - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备ID。'."\n" - .'><notice>'."\n" - .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'C47T6xwp6ms4bNlkHRWCg4****', - ], + 'schema' => ['type' => 'string', 'required' => false], ], ], 'responses' => [ @@ -5120,43 +2959,32 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', - 'type' => 'string', - 'example' => '400', - ], - 'ErrorMessage' => [ - 'description' => '调用失败时,返回的出错信息。', - 'type' => 'string', - 'example' => 'Request parameter error.', - ], - 'RequestId' => [ - 'description' => '阿里云为该请求生成的唯一标识符。', - 'type' => 'string', - 'example' => 'E55***B7-4***-4***-8***-D3******F565', - ], - 'Success' => [ - 'description' => '是否调用成功。'."\n" - ."\n" - .'- **true**:调用成功。'."\n" - .'- **false**:调用失败。', - 'type' => 'boolean', - 'example' => 'true', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ - 'description' => '调用成功,返回的数据。', 'type' => 'object', 'properties' => [ - 'Data' => [ - 'description' => '调用服务结果,JSON字符串。', - 'type' => 'string', - 'example' => '{"param1":1}', - ], - 'MessageId' => [ - 'description' => '云端向设备下发服务调用的消息ID。', - 'type' => 'string', - 'example' => 'abcabcabc1234****', - ], + 'Status' => ['type' => 'integer', 'format' => 'int32'], + 'Copies' => ['type' => 'integer', 'format' => 'int32'], + 'Specification' => ['type' => 'string'], + 'RecordType' => ['type' => 'integer', 'format' => 'int32'], + 'CommodityCode' => ['type' => 'string'], + 'PreConsume' => ['type' => 'integer', 'format' => 'int32'], + 'EndTimeUTC' => ['type' => 'string'], + 'UserId' => ['type' => 'string'], + 'IdentityId' => ['type' => 'string'], + 'StartTimeUTC' => ['type' => 'string'], + 'EndTime' => ['type' => 'string'], + 'StartTime' => ['type' => 'string'], + 'OutOrderNo' => ['type' => 'string'], + 'Price' => ['type' => 'string'], + 'OrderType' => ['type' => 'integer', 'format' => 'int32'], + 'PaymentStatus' => ['type' => 'integer', 'format' => 'int32'], + 'UserName' => ['type' => 'string'], + 'OrderId' => ['type' => 'string'], + 'IotId' => ['type' => 'string'], ], ], ], @@ -5165,113 +2993,47 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.InvalidIotInstance', - 'errorMessage' => 'Invalid iot instance.', - ], - [ - 'errorCode' => 'iot.vision.ProductNotExist', - 'errorMessage' => 'Product not exist.', - ], - [ - 'errorCode' => 'iot.vision.ThingModelNotExist', - 'errorMessage' => 'Thing model not exist.', - ], - [ - 'errorCode' => 'iot.vision.ThingModelIdentifierNotExist', - 'errorMessage' => 'Thing model identifier not exist.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], - [ - 'errorCode' => 'iot.vision.InstanceArrearage', - 'errorMessage' => 'Instance arrearage.', - ], - [ - 'errorCode' => 'iot.vision.ServiceParamNotExist', - 'errorMessage' => 'Invoke service failed as service param not exist.', - ], - [ - 'errorCode' => 'iot.vision.ServiceNotFound', - 'errorMessage' => 'Invoke service failed as service not found.', - ], - [ - 'errorCode' => 'iot.vision.DeviceInactive', - 'errorMessage' => 'Device inactive.', - ], - [ - 'errorCode' => 'iot.vision.DevcieOffline', - 'errorMessage' => 'Device offline.', - ], - [ - 'errorCode' => 'iot.vision.ServiceEnumSpecError', - 'errorMessage' => 'Service enum spec error.', - ], - [ - 'errorCode' => 'iot.vision.ServiceResponseTimeout', - 'errorMessage' => 'Invoke service response timeout.', - ], - [ - 'errorCode' => 'iot.vision.InvokeServiceFailed', - 'errorMessage' => 'Invoke service failed:%s', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.InvalidStorageOrder', 'errorMessage' => 'Invalid storage order.', 'description' => '无效的云存储订单。'], + ['errorCode' => 'iot.vision.DeviceOwnerChanged', 'errorMessage' => 'Device owner changed.', 'description' => '设备的管理员用户变更。'], + ['errorCode' => 'iot.vision.StorageOrderGetLockFailed', 'errorMessage' => 'Get storage order lock failed try again later.', 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], - [ - 'errorCode' => 'iot.vision.HasNoAccessPermission', - 'errorMessage' => 'Has no access permission.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Data\\": \\"{\\\\\\"param1\\\\\\":1}\\",\\n \\"MessageId\\": \\"abcabcabc1234****\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"<InvokeThingServiceResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <Data>{\\"param1\\":1}</Data>\\n <MessageId>abcabcabc1234****</MessageId>\\n</Data>\\n<Success>true</Success>\\n</InvokeThingServiceResponse>","errorExample":""}]', - 'title' => 'InvokeThingService', - 'summary' => '调用该接口在单个设备上调用指定服务。', - 'description' => '## QPS限制'."\n" - ."\n" - .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为200。'."\n" - ."\n" - .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', - 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'ListBindingAccountByDevice' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryStorageOrder'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Status\\": 0,\\n \\"Copies\\": 0,\\n \\"Specification\\": \\"\\",\\n \\"RecordType\\": 0,\\n \\"CommodityCode\\": \\"\\",\\n \\"PreConsume\\": 0,\\n \\"EndTimeUTC\\": \\"\\",\\n \\"UserId\\": \\"\\",\\n \\"IdentityId\\": \\"\\",\\n \\"StartTimeUTC\\": \\"\\",\\n \\"EndTime\\": \\"\\",\\n \\"StartTime\\": \\"\\",\\n \\"OutOrderNo\\": \\"\\",\\n \\"Price\\": \\"\\",\\n \\"OrderType\\": 0,\\n \\"PaymentStatus\\": 0,\\n \\"UserName\\": \\"\\",\\n \\"OrderId\\": \\"\\",\\n \\"IotId\\": \\"\\"\\n }\\n}","type":"json"}]', + ], + 'QueryStorageOrderList' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -5280,86 +3042,34 @@ 'systemTags' => [], 'parameters' => [ [ + 'name' => 'DeviceNoOwner', + 'in' => 'query', + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], + ], + [ 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => '指定返回结果中每页显示的记录数量,最大值是50。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '50', - 'minimum' => '1', - 'example' => '5', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '200', 'minimum' => '1'], ], [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备所属产品的**ProductKey**。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'a1Bw******', - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备名称。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'Device01', - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备ID。'."\n" - .'><notice>'."\n" - .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'C47T6xwp6ms4bNlkHRWCg4****', - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'PageNo', 'in' => 'query', - 'schema' => [ - 'description' => '指定显示返回结果中的第几页,最大值为100。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '100', - 'minimum' => '1', - 'example' => '1', - ], - ], - [ - 'name' => 'Owned', - 'in' => 'query', - 'schema' => [ - 'description' => '用户和设备绑定类型。'."\n" - ."\n" - .'- **0**:表示分享用户。'."\n" - .'- **1**:表示管理员用户。'."\n" - .'- 不传则查询所有用户。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '1', - 'minimum' => '0', - 'example' => '0', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '1000', 'minimum' => '1'], ], ], 'responses' => [ @@ -5367,73 +3077,41 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', - 'type' => 'string', - 'example' => '400', - ], - 'ErrorMessage' => [ - 'description' => '调用失败时,返回的出错信息。', - 'type' => 'string', - 'example' => 'Unexpected internal error.', - ], - 'RequestId' => [ - 'description' => '阿里云为该请求生成的唯一标识符。', - 'type' => 'string', - 'example' => 'E55***B7-4***-4***-8***-D3******F565', - ], - 'Success' => [ - 'description' => '是否调用成功。'."\n" - ."\n" - .'- **true**:调用成功。'."\n" - .'- **false**:调用失败。', - 'type' => 'boolean', - 'example' => 'true', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ - 'description' => '调用成功,返回的数据。', 'type' => 'object', 'properties' => [ - 'PageNo' => [ - 'description' => '当前页码。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => '每页显示的记录数。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'Total' => [ - 'description' => '总记录数。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'AccountList' => [ - 'description' => '用户列表信息。', + 'PageNo' => ['type' => 'integer', 'format' => 'int32'], + 'PageSize' => ['type' => 'integer', 'format' => 'int32'], + 'Total' => ['type' => 'integer', 'format' => 'int32'], + 'PageCount' => ['type' => 'integer', 'format' => 'int32'], + 'StorageOrderList' => [ 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'IdentityAlias' => [ - 'description' => '用户显示名称。', - 'type' => 'string', - 'example' => '18*******20', - ], - 'IdentityId' => [ - 'description' => '用户身份ID。', - 'type' => 'string', - 'example' => '5035op97******************a63994', - ], - 'BindTime' => [ - 'description' => '设备绑定用户的时间,13位毫秒级时间戳。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '2222220000000', - ], + 'Status' => ['type' => 'integer', 'format' => 'int32'], + 'Copies' => ['type' => 'integer', 'format' => 'int32'], + 'Specification' => ['type' => 'string'], + 'RecordType' => ['type' => 'integer', 'format' => 'int32'], + 'CommodityCode' => ['type' => 'string'], + 'PreConsume' => ['type' => 'integer', 'format' => 'int32'], + 'EndTimeUTC' => ['type' => 'string'], + 'UserId' => ['type' => 'string'], + 'IdentityId' => ['type' => 'string'], + 'StartTimeUTC' => ['type' => 'string'], + 'EndTime' => ['type' => 'string'], + 'StartTime' => ['type' => 'string'], + 'OutOrderNo' => ['type' => 'string'], + 'Price' => ['type' => 'string'], + 'OrderType' => ['type' => 'integer', 'format' => 'int32'], + 'PaymentStatus' => ['type' => 'integer', 'format' => 'int32'], + 'UserName' => ['type' => 'string'], + 'OrderId' => ['type' => 'string'], + 'IotId' => ['type' => 'string'], ], ], ], @@ -5445,65 +3123,46 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.TenantMismatch', - 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', - ], - [ - 'errorCode' => 'iot.vision.QueryBindingAccountFailed', - 'errorMessage' => 'Query binding account failed.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.DeviceOwnerChanged', 'errorMessage' => 'Device owner changed.', 'description' => '设备的管理员用户变更。'], + ['errorCode' => 'iot.vision.StorageOrderGetLockFailed', 'errorMessage' => 'Get storage order lock failed try again later.', 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Unexpected internal error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"PageNo\\": 1,\\n \\"PageSize\\": 1,\\n \\"Total\\": 1,\\n \\"AccountList\\": [\\n {\\n \\"IdentityAlias\\": \\"18*******20\\",\\n \\"IdentityId\\": \\"5035op97******************a63994\\",\\n \\"BindTime\\": 2222220000000\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<ListBindingAccountByDeviceResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Data>\\n <PageSize>1</PageSize>\\n <Total>1</Total>\\n <PageNo>1</PageNo>\\n <AccountList>\\n <BindTime>1700209801000</BindTime>\\n <IdentityId>5035op97******************a63994</IdentityId>\\n <IdentityAlias>18*******20</IdentityAlias>\\n </AccountList>\\n</Data>\\n<Success>true</Success>\\n</ListBindingAccountByDeviceResponse>","errorExample":""}]', - 'title' => 'ListBindingAccountByDevice', - 'summary' => '调用该接口查询指定设备所绑定的用户列表。', - 'description' => '## QPS限制'."\n" - ."\n" - .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" - ."\n" - .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', - 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'ListBindingDeviceByAccount' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryStorageOrderList'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryStorageOrderList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"PageNo\\": 0,\\n \\"PageSize\\": 0,\\n \\"Total\\": 0,\\n \\"PageCount\\": 0,\\n \\"StorageOrderList\\": [\\n {\\n \\"Status\\": 0,\\n \\"Copies\\": 0,\\n \\"Specification\\": \\"\\",\\n \\"RecordType\\": 0,\\n \\"CommodityCode\\": \\"\\",\\n \\"PreConsume\\": 0,\\n \\"EndTimeUTC\\": \\"\\",\\n \\"UserId\\": \\"\\",\\n \\"IdentityId\\": \\"\\",\\n \\"StartTimeUTC\\": \\"\\",\\n \\"EndTime\\": \\"\\",\\n \\"StartTime\\": \\"\\",\\n \\"OutOrderNo\\": \\"\\",\\n \\"Price\\": \\"\\",\\n \\"OrderType\\": 0,\\n \\"PaymentStatus\\": 0,\\n \\"UserName\\": \\"\\",\\n \\"OrderId\\": \\"\\",\\n \\"IotId\\": \\"\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'SetThingProperty' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -5512,58 +3171,35 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'OpenId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], - ], - [ - 'name' => 'OpenIdAppKey', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], - ], - [ - 'name' => 'PageSize', + 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '50', - 'minimum' => '1', - ], + 'schema' => ['description' => '视频设备所属产品的**ProductKey**。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'a1Bw******'], ], [ - 'name' => 'IdentityId', + 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['description' => '视频设备的设备名称。'."\n" + ."\n" + .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'Device01'], ], [ - 'name' => 'PageNo', + 'name' => 'Args', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '100', - 'minimum' => '1', - ], + 'schema' => ['description' => '要设置的属性信息,数据格式为JSON。'."\n" + ."\n" + .'每个属性信息由**标识符**与**属性值**(**key:value**)构成,多个属性用英文逗号隔开。', 'type' => 'string', 'required' => true, 'example' => '{"Switch":1,"Color":"blue"}'], ], [ - 'name' => 'SubDevice', + 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - ], + 'schema' => ['description' => '视频设备的设备ID。'."\n" + .'><notice>'."\n" + .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" + .'></notice>', 'type' => 'string', 'required' => false, 'example' => 'C47T6xwp6ms4bNlkHRWCg4****'], ], ], 'responses' => [ @@ -5571,129 +3207,76 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], - 'Data' => [ - 'type' => 'object', - 'properties' => [ - 'PageNo' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'PageSize' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'Total' => [ - 'type' => 'integer', - 'format' => 'int64', - ], - 'PageCount' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'DeviceList' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ProductKey' => [ - 'type' => 'string', - ], - 'Owned' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'DeviceName' => [ - 'type' => 'string', - ], - 'NodeType' => [ - 'type' => 'string', - ], - 'BindTime' => [ - 'type' => 'integer', - 'format' => 'int64', - ], - 'IotId' => [ - 'type' => 'string', - ], - ], - ], - ], - ], - ], + 'Code' => ['description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', 'type' => 'string', 'example' => '400'], + 'ErrorMessage' => ['description' => '调用失败时,返回的出错信息。', 'type' => 'string', 'example' => 'Request parameter error.'], + 'RequestId' => ['description' => '阿里云为该请求生成的唯一标识符。', 'type' => 'string', 'example' => 'E55***B7-4***-4***-8***-D3******F565'], + 'Success' => ['description' => '是否调用成功。'."\n" + ."\n" + .'- **true**:调用成功。'."\n" + .'- **false**:调用失败。', 'type' => 'boolean', 'example' => 'true'], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.QueryBindingDeviceFailed', - 'errorMessage' => 'Query binding device failed.', - ], - [ - 'errorCode' => 'iot.vision.GetAccountInfoFailed', - 'errorMessage' => 'Get account info failed.', - ], - [ - 'errorCode' => 'iot.vision.AccountNotFound', - 'errorMessage' => 'Account not found.', - ], - [ - 'errorCode' => 'iot.vision.TenantMismatch', - 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', - ], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.InvalidIotInstance', 'errorMessage' => 'Invalid iot instance.', 'description' => '无效的实例或者找不到对应实例。'], + ['errorCode' => 'iot.vision.ProductNotExist', 'errorMessage' => 'Product not exist.', 'description' => '产品不存在。'], + ['errorCode' => 'iot.vision.ThingModelNotExist', 'errorMessage' => 'Thing model not exist.', 'description' => '物模型功能不存在。'], + ['errorCode' => 'iot.vision.ThingModelIdentifierNotExist', 'errorMessage' => 'Thing model identifier not exist.', 'description' => '物模型功能标识符不存在。'], + ['errorCode' => 'iot.vision.DeviceNotExist', 'errorMessage' => 'Device not exist.', 'description' => '设备不存在。'], + ['errorCode' => 'iot.vision.InstanceArrearage', 'errorMessage' => 'Instance arrearage.', 'description' => '实例已欠费。'], + ['errorCode' => 'iot.vision.SetPropertyFailed', 'errorMessage' => 'Set property failed.', 'description' => '设置物模型属性失败。'], + ['errorCode' => 'iot.vision.PropertyNotFound', 'errorMessage' => 'Property not found.', 'description' => '物模型属性不存在。'], + ['errorCode' => 'iot.vision.PropertyReadOnly', 'errorMessage' => 'Property is read only.', 'description' => '物模型属性是只读的。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], + ['errorCode' => 'iot.vision.HasNoAccessPermission', 'errorMessage' => 'Has no access permission.', 'description' => '没有访问权限。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', - ], + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], ], ], - ], - 'SetThingProperty' => [ - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true\\n}","errorExample":""},{"type":"xml","example":"<SetThingPropertyResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Success>true</Success>\\n</SetThingPropertyResponse>","errorExample":""}]', + 'title' => 'SetThingProperty', + 'summary' => '调用该接口为指定设备设置属性值。', + 'description' => '## QPS限制'."\n" + ."\n" + .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" + ."\n" + .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', + 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetThingProperty'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:SetThingProperty', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + ], + 'TransferStorageOrder' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -5702,55 +3285,59 @@ 'systemTags' => [], 'parameters' => [ [ - 'name' => 'ProductKey', + 'name' => 'EventRecordDuration', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备所属产品的**ProductKey**。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**DeviceName**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'a1Bw******', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '30', 'minimum' => '0', 'default' => '10'], ], [ - 'name' => 'DeviceName', + 'name' => 'DstIotId', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备名称。'."\n" - ."\n" - .'><notice>如果传入该参数,需同时传入**ProductKey**。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'Device01', - ], + 'schema' => ['type' => 'string', 'required' => true], ], [ - 'name' => 'Args', + 'name' => 'SupportCrossIdentityTransfer', 'in' => 'query', - 'schema' => [ - 'description' => '要设置的属性信息,数据格式为JSON。'."\n" - ."\n" - .'每个属性信息由**标识符**与**属性值**(**key:value**)构成,多个属性用英文逗号隔开。', - 'type' => 'string', - 'required' => true, - 'example' => '{"Switch":1,"Color":"blue"}', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], ], [ - 'name' => 'IotId', + 'name' => 'SrcIotId', 'in' => 'query', - 'schema' => [ - 'description' => '视频设备的设备ID。'."\n" - .'><notice>'."\n" - .'**IotId**作为设备唯一标识符,和**ProductKey**与**DeviceName**组合是一一对应的关系。如果传入该参数,则无需传入**ProductKey**和**DeviceName**。如果您同时传入**IotId**和**ProductKey**与**DeviceName**组合,则以**IotId**为准。'."\n" - .'></notice>', - 'type' => 'string', - 'required' => false, - 'example' => 'C47T6xwp6ms4bNlkHRWCg4****', - ], + 'schema' => ['type' => 'string', 'required' => true], + ], + [ + 'name' => 'SrcOrderId', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => true], + ], + [ + 'name' => 'EventRecordProlong', + 'in' => 'query', + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], + ], + [ + 'name' => 'ImmediateUse', + 'in' => 'query', + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], + ], + [ + 'name' => 'UserName', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => false], + ], + [ + 'name' => 'UserId', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => false], + ], + [ + 'name' => 'EnableDefaultPlan', + 'in' => 'query', + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'false'], + ], + [ + 'name' => 'PreRecordDuration', + 'in' => 'query', + 'schema' => ['type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '5', 'minimum' => '0', 'default' => '0'], ], ], 'responses' => [ @@ -5758,28 +3345,33 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => ' 调用失败时,返回错误码。详细信息,请参见下文**错误码**。', - 'type' => 'string', - 'example' => '400', - ], - 'ErrorMessage' => [ - 'description' => '调用失败时,返回的出错信息。', - 'type' => 'string', - 'example' => 'Request parameter error.', - ], - 'RequestId' => [ - 'description' => '阿里云为该请求生成的唯一标识符。', - 'type' => 'string', - 'example' => 'E55***B7-4***-4***-8***-D3******F565', - ], - 'Success' => [ - 'description' => '是否调用成功。'."\n" - ."\n" - .'- **true**:调用成功。'."\n" - .'- **false**:调用失败。', - 'type' => 'boolean', - 'example' => 'true', + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], + 'Data' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => ['type' => 'integer', 'format' => 'int32'], + 'Copies' => ['type' => 'integer', 'format' => 'int32'], + 'Specification' => ['type' => 'string'], + 'RecordType' => ['type' => 'integer', 'format' => 'int32'], + 'CommodityCode' => ['type' => 'string'], + 'PreConsume' => ['type' => 'integer', 'format' => 'int32'], + 'EndTimeUTC' => ['type' => 'string'], + 'UserId' => ['type' => 'string'], + 'IdentityId' => ['type' => 'string'], + 'StartTimeUTC' => ['type' => 'string'], + 'EndTime' => ['type' => 'string'], + 'StartTime' => ['type' => 'string'], + 'OutOrderNo' => ['type' => 'string'], + 'Price' => ['type' => 'string'], + 'OrderType' => ['type' => 'integer', 'format' => 'int32'], + 'PaymentStatus' => ['type' => 'integer', 'format' => 'int32'], + 'UserName' => ['type' => 'string'], + 'OrderId' => ['type' => 'string'], + 'IotId' => ['type' => 'string'], + ], ], ], ], @@ -5787,97 +3379,48 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.InvalidIotInstance', - 'errorMessage' => 'Invalid iot instance.', - ], - [ - 'errorCode' => 'iot.vision.ProductNotExist', - 'errorMessage' => 'Product not exist.', - ], - [ - 'errorCode' => 'iot.vision.ThingModelNotExist', - 'errorMessage' => 'Thing model not exist.', - ], - [ - 'errorCode' => 'iot.vision.ThingModelIdentifierNotExist', - 'errorMessage' => 'Thing model identifier not exist.', - ], - [ - 'errorCode' => 'iot.vision.DeviceNotExist', - 'errorMessage' => 'Device not exist.', - ], - [ - 'errorCode' => 'iot.vision.InstanceArrearage', - 'errorMessage' => 'Instance arrearage.', - ], - [ - 'errorCode' => 'iot.vision.SetPropertyFailed', - 'errorMessage' => 'Set property failed.', - ], - [ - 'errorCode' => 'iot.vision.PropertyNotFound', - 'errorMessage' => 'Property not found.', - ], - [ - 'errorCode' => 'iot.vision.PropertyReadOnly', - 'errorMessage' => 'Property is read only.', - ], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.DeviceNoOwner', 'errorMessage' => 'Device has no owner.', 'description' => '设备没有绑定管理员。'], + ['errorCode' => 'iot.vision.DeviceOwnerChanged', 'errorMessage' => 'Device owner changed.', 'description' => '设备的管理员用户变更。'], + ['errorCode' => 'iot.vision.InvalidStorageOrder', 'errorMessage' => 'Invalid storage order.', 'description' => '无效的云存储订单。'], + ['errorCode' => 'iot.vision.StorageOrderGetLockFailed', 'errorMessage' => 'Get storage order lock failed try again later.', 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['errorCode' => 'iot.vision.StorageOrderStatusInvalid', 'errorMessage' => 'Storage order status invalid.', 'description' => '当前云存储订单状态不支持操作。'], + ['errorCode' => 'iot.vision.TargetDeviceOwnerDifferent', 'errorMessage' => 'Target device owner is different.', 'description' => '目标设备的管理员用户与待转移订单的管理员用户不一致。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], - [ - 'errorCode' => 'iot.vision.HasNoAccessPermission', - 'errorMessage' => 'Has no access permission.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], + ], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'TransferStorageOrder'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:TransferStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"400\\",\\n \\"ErrorMessage\\": \\"Request parameter error.\\",\\n \\"RequestId\\": \\"E55***B7-4***-4***-8***-D3******F565\\",\\n \\"Success\\": true\\n}","errorExample":""},{"type":"xml","example":"<SetThingPropertyResponse>\\n<RequestId>E55***B7-4***-4***-8***-D3******F565</RequestId>\\n<Success>true</Success>\\n</SetThingPropertyResponse>","errorExample":""}]', - 'title' => 'SetThingProperty', - 'summary' => '调用该接口为指定设备设置属性值。', - 'description' => '## QPS限制'."\n" - ."\n" - .'单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。'."\n" - ."\n" - .'> 单个阿里云账号下的所有RAM用户共享该阿里云账号的配额。', - 'requestParamsDescription' => '调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"Status\\": 0,\\n \\"Copies\\": 0,\\n \\"Specification\\": \\"\\",\\n \\"RecordType\\": 0,\\n \\"CommodityCode\\": \\"\\",\\n \\"PreConsume\\": 0,\\n \\"EndTimeUTC\\": \\"\\",\\n \\"UserId\\": \\"\\",\\n \\"IdentityId\\": \\"\\",\\n \\"StartTimeUTC\\": \\"\\",\\n \\"EndTime\\": \\"\\",\\n \\"StartTime\\": \\"\\",\\n \\"OutOrderNo\\": \\"\\",\\n \\"Price\\": \\"\\",\\n \\"OrderType\\": 0,\\n \\"PaymentStatus\\": 0,\\n \\"UserName\\": \\"\\",\\n \\"OrderId\\": \\"\\",\\n \\"IotId\\": \\"\\"\\n }\\n}","type":"json"}]', ], 'UnbindAllUserByDevice' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -5888,34 +3431,22 @@ [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'UnbindSubDevice', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - ], + 'schema' => ['type' => 'boolean', 'required' => false], ], ], 'responses' => [ @@ -5923,18 +3454,10 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ @@ -5943,22 +3466,11 @@ 'items' => [ 'type' => 'object', 'properties' => [ - 'UnbindResultMessage' => [ - 'type' => 'string', - ], - 'ProductKey' => [ - 'type' => 'string', - ], - 'DeviceName' => [ - 'type' => 'string', - ], - 'UnbindResultCode' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'IotId' => [ - 'type' => 'string', - ], + 'UnbindResultMessage' => ['type' => 'string'], + 'ProductKey' => ['type' => 'string'], + 'DeviceName' => ['type' => 'string'], + 'UnbindResultCode' => ['type' => 'integer', 'format' => 'int32'], + 'IotId' => ['type' => 'string'], ], ], ], @@ -5970,70 +3482,48 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.GetAccountInfoFailed', - 'errorMessage' => 'Get account info failed.', - ], - [ - 'errorCode' => 'iot.vision.AccountNotFound', - 'errorMessage' => 'Account not found.', - ], - [ - 'errorCode' => 'iot.vision.TenantMismatch', - 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', - ], - [ - 'errorCode' => 'iot.vision.UnbindFailed', - 'errorMessage' => 'Unbind account and device failed.', - ], - [ - 'errorCode' => 'iot.vision.BindingRelationNotFound', - 'errorMessage' => 'Account and device binding relation not found.', - ], - [ - 'errorCode' => 'iot.vision.QueryBindingAccountFailed', - 'errorMessage' => 'Query binding account failed.', - ], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.GetAccountInfoFailed', 'errorMessage' => 'Get account info failed.', 'description' => '查询账号详情信息失败。'], + ['errorCode' => 'iot.vision.AccountNotFound', 'errorMessage' => 'Account not found.', 'description' => '找不到账号。'], + ['errorCode' => 'iot.vision.TenantMismatch', 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', 'description' => '接口调用方的租户和账号归属的租户不一致。'], + ['errorCode' => 'iot.vision.UnbindFailed', 'errorMessage' => 'Unbind account and device failed.', 'description' => '账号和设备解绑失败。'], + ['errorCode' => 'iot.vision.BindingRelationNotFound', 'errorMessage' => 'Account and device binding relation not found.', 'description' => '账号和设备不存在绑定关系。'], + ['errorCode' => 'iot.vision.QueryBindingAccountFailed', 'errorMessage' => 'Query binding account failed.', 'description' => '查询绑定的用户失败。'], ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], + ], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindAllUserByDevice'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:UnbindAllUserByDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"SubDeviceUnbindResult\\": [\\n {\\n \\"UnbindResultMessage\\": \\"\\",\\n \\"ProductKey\\": \\"\\",\\n \\"DeviceName\\": \\"\\",\\n \\"UnbindResultCode\\": 0,\\n \\"IotId\\": \\"\\"\\n }\\n ]\\n }\\n}","type":"json"}]', ], 'UnbindDevice' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -6044,59 +3534,37 @@ [ 'name' => 'OpenId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'OpenIdAppKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'ProductKey', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'DeviceName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'IotId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'IdentityId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - ], + 'schema' => ['type' => 'string', 'required' => false], ], [ 'name' => 'UnbindSubDevice', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'true', - ], + 'schema' => ['type' => 'boolean', 'required' => false, 'default' => 'true'], ], ], 'responses' => [ @@ -6104,18 +3572,10 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Code' => [ - 'type' => 'string', - ], - 'ErrorMessage' => [ - 'type' => 'string', - ], - 'RequestId' => [ - 'type' => 'string', - ], - 'Success' => [ - 'type' => 'boolean', - ], + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], 'Data' => [ 'type' => 'object', 'properties' => [ @@ -6124,22 +3584,11 @@ 'items' => [ 'type' => 'object', 'properties' => [ - 'UnbindResultMessage' => [ - 'type' => 'string', - ], - 'ProductKey' => [ - 'type' => 'string', - ], - 'DeviceName' => [ - 'type' => 'string', - ], - 'UnbindResultCode' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'IotId' => [ - 'type' => 'string', - ], + 'UnbindResultMessage' => ['type' => 'string'], + 'ProductKey' => ['type' => 'string'], + 'DeviceName' => ['type' => 'string'], + 'UnbindResultCode' => ['type' => 'integer', 'format' => 'int32'], + 'IotId' => ['type' => 'string'], ], ], ], @@ -6151,134 +3600,854 @@ ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'iot.vision.UnexpectedInternalError', - 'errorMessage' => 'Unexpected internal error.', - ], - [ - 'errorCode' => 'iot.vision.RequestParamError', - 'errorMessage' => 'Request parameter error.', - ], - [ - 'errorCode' => 'iot.vision.RequestFailed', - 'errorMessage' => 'Request failed.', - ], - [ - 'errorCode' => 'iot.vision.GetAccountInfoFailed', - 'errorMessage' => 'Get account info failed.', - ], - [ - 'errorCode' => 'iot.vision.AccountNotFound', - 'errorMessage' => 'Account not found.', - ], - [ - 'errorCode' => 'iot.vision.TenantMismatch', - 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.RequestFailed', 'errorMessage' => 'Request failed.', 'description' => '请求失败。'], + ['errorCode' => 'iot.vision.GetAccountInfoFailed', 'errorMessage' => 'Get account info failed.', 'description' => '查询账号详情信息失败。'], + ['errorCode' => 'iot.vision.AccountNotFound', 'errorMessage' => 'Account not found.', 'description' => '找不到账号。'], + ['errorCode' => 'iot.vision.TenantMismatch', 'errorMessage' => 'Caller tenant and account belong tenant mismatch.', 'description' => '接口调用方的租户和账号归属的租户不一致。'], + ['errorCode' => 'iot.vision.BindingRelationNotFound', 'errorMessage' => 'Account and device binding relation not found.', 'description' => '账号和设备不存在绑定关系。'], + ['errorCode' => 'iot.vision.UnbindFailed', 'errorMessage' => 'Unbind account and device failed.', 'description' => '账号和设备解绑失败。'], + ], + 403 => [ + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], + ], + 429 => [ + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], + ], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindDevice'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:UnbindDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], - [ - 'errorCode' => 'iot.vision.BindingRelationNotFound', - 'errorMessage' => 'Account and device binding relation not found.', + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"SubDeviceUnbindResult\\": [\\n {\\n \\"UnbindResultMessage\\": \\"\\",\\n \\"ProductKey\\": \\"\\",\\n \\"DeviceName\\": \\"\\",\\n \\"UnbindResultCode\\": 0,\\n \\"IotId\\": \\"\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'UploadDeviceNameList' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [], + 'parameters' => [ + [ + 'name' => 'DeviceNames', + 'in' => 'formData', + 'style' => 'repeatList', + 'schema' => [ + 'type' => 'array', + 'items' => ['type' => 'string'], + 'required' => true, + 'maxItems' => 10000, ], - [ - 'errorCode' => 'iot.vision.UnbindFailed', - 'errorMessage' => 'Unbind account and device failed.', + ], + [ + 'name' => 'ProductKey', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => true], + ], + [ + 'name' => 'ProjectId', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => true], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Code' => ['type' => 'string'], + 'ErrorMessage' => ['type' => 'string'], + 'RequestId' => ['type' => 'string'], + 'Success' => ['type' => 'boolean'], + 'Data' => [ + 'type' => 'object', + 'properties' => [ + 'BatchId' => ['type' => 'string'], + 'InvalidDetailList' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'DeviceName' => ['type' => 'string'], + 'ErrorMsg' => ['type' => 'string'], + ], + ], + ], + 'RepeatedDeviceNameList' => [ + 'type' => 'array', + 'items' => ['type' => 'string'], + ], + 'InvalidDeviceNameList' => [ + 'type' => 'array', + 'items' => ['type' => 'string'], + ], + ], + ], + ], ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'iot.vision.RequestParamError', 'errorMessage' => 'Request parameter error.', 'description' => '请求参数错误。'], + ['errorCode' => 'iot.vision.UnexpectedInternalError', 'errorMessage' => 'Unexpected internal error.', 'description' => '未知内部错误。'], + ['errorCode' => 'iot.vision.ActiveCodeInsufficient', 'errorMessage' => 'Active code quota is insufficient.', 'description' => '可用激活码不足。'], + ['errorCode' => 'iot.vision.DevicesCountExceedLimit', 'errorMessage' => 'The devices count exceed the limit.', 'description' => '创建设备数量超过限制。'], + ['errorCode' => 'iot.vision.DevicesExceedUnreleasedProductLimit', 'errorMessage' => 'Devices count exceed the limit of unreleased product.', 'description' => '创建设备数量超过未发布产品的试产设备数量。'], + ], 403 => [ - [ - 'errorCode' => 'iot.vision.RequestAuthFailed', - 'errorMessage' => 'Request auth failed.', - ], - [ - 'errorCode' => 'iot.vision.RequestForbidden', - 'errorMessage' => 'Request forbidden.', - ], + ['errorCode' => 'iot.vision.RequestAuthFailed', 'errorMessage' => 'Request auth failed.', 'description' => '请求鉴权失败。'], + ['errorCode' => 'iot.vision.RequestForbidden', 'errorMessage' => 'Request forbidden.', 'description' => '请求被禁止。'], ], 429 => [ - [ - 'errorCode' => 'iot.vision.RequestTrafficControl', - 'errorMessage' => 'Request traffic control.', + ['errorCode' => 'iot.vision.RequestTrafficControl', 'errorMessage' => 'Request traffic control.', 'description' => '请求太频繁被限流。'], + ], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UploadDeviceNameList'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:UploadDeviceNameList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"\\",\\n \\"ErrorMessage\\": \\"\\",\\n \\"RequestId\\": \\"\\",\\n \\"Success\\": true,\\n \\"Data\\": {\\n \\"BatchId\\": \\"\\",\\n \\"InvalidDetailList\\": [\\n {\\n \\"DeviceName\\": \\"\\",\\n \\"ErrorMsg\\": \\"\\"\\n }\\n ],\\n \\"RepeatedDeviceNameList\\": [\\n \\"\\"\\n ],\\n \\"InvalidDeviceNameList\\": [\\n \\"\\"\\n ]\\n }\\n}","type":"json"}]', ], ], 'endpoints' => [ - [ - 'regionId' => 'cn-qingdao', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'cn-zhangjiakou', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'cn-huhehaote', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou', - 'endpoint' => 'linkvisual.cn-hangzhou.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai', - 'endpoint' => 'linkvisual.cn-shanghai.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shenzhen', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hongkong', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'ap-northeast-1', - 'endpoint' => 'linkvisual.ap-northeast-1.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-1', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-2', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-3', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-5', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'us-east-1', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'us-west-1', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'eu-west-1', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'eu-central-1', - 'endpoint' => 'linkvisual.aliyuncs.com', - ], - [ - 'regionId' => 'ap-south-1', - 'endpoint' => 'linkvisual.aliyuncs.com', + ['regionId' => 'ap-northeast-1', 'regionName' => '日本(东京)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.ap-northeast-1.aliyuncs.com', 'endpoint' => 'linkvisual.ap-northeast-1.aliyuncs.com', 'vpc' => 'linkvisual-vpc.ap-northeast-1.aliyuncs.com'], + ['regionId' => 'ap-southeast-1', 'regionName' => '新加坡', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-2', 'regionName' => '澳大利亚(悉尼)已关停', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-3', 'regionName' => '马来西亚(吉隆坡)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-5', 'regionName' => '印度尼西亚(雅加达)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-beijing', 'regionName' => '华北2(北京)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-hangzhou', 'regionName' => '华东1(杭州)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.cn-hangzhou.aliyuncs.com', 'endpoint' => 'linkvisual.cn-hangzhou.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-hongkong', 'regionName' => '中国香港', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-huhehaote', 'regionName' => '华北5(呼和浩特)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-qingdao', 'regionName' => '华北1(青岛)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-shanghai', 'regionName' => '华东2(上海)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.cn-shanghai.aliyuncs.com', 'endpoint' => 'linkvisual.cn-shanghai.aliyuncs.com', 'vpc' => 'linkvisual-vpc.cn-shanghai.aliyuncs.com'], + ['regionId' => 'cn-shenzhen', 'regionName' => '华南1(深圳)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-zhangjiakou', 'regionName' => '华北3(张家口)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'us-west-1', 'regionName' => '美国(硅谷)', 'areaId' => 'europeAmerica', 'areaName' => '欧洲与美洲', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'us-east-1', 'regionName' => '美国(弗吉尼亚)', 'areaId' => 'europeAmerica', 'areaName' => '欧洲与美洲', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'eu-west-1', 'regionName' => '英国(伦敦)', 'areaId' => 'europeAmerica', 'areaName' => '欧洲与美洲', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'eu-central-1', 'regionName' => '德国(法兰克福)', 'areaId' => 'europeAmerica', 'areaName' => '欧洲与美洲', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'me-east-1', 'regionName' => '阿联酋(迪拜)', 'areaId' => 'middleEast', 'areaName' => '中东', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-south-1', 'regionName' => '印度(孟买)已关停', 'areaId' => 'middleEast', 'areaName' => '中东', 'public' => 'linkvisual.aliyuncs.com', 'endpoint' => 'linkvisual.aliyuncs.com', 'vpc' => ''], + ], + 'errorCodes' => [ + ['code' => '403', 'message' => 'tenant auth error', 'http_code' => 200, 'description' => '请求因设备或用户信息鉴权失败被禁止'], + ['code' => '403', 'message' => 'request forbidden.', 'http_code' => 200, 'description' => '请求因参数鉴权失败被禁止'], + ['code' => '460', 'message' => 'picture type error.', 'http_code' => 200, 'description' => '图片类型错误'], + ['code' => '460', 'message' => 'RAM system auth error.', 'http_code' => 200, 'description' => 'RAM鉴权失败'], + ['code' => '460', 'message' => 'beginTime can not bigger or equal endTime.', 'http_code' => 200, 'description' => '开始时间不得晚于结束时间'], + ['code' => '460', 'message' => 'beginTime or endTime can not be null.', 'http_code' => 200, 'description' => ' 起止时间不能为空'."\n"], + ['code' => '460', 'message' => 'product is not active.', 'http_code' => 200, 'description' => '设备产品未激活视频服务'."\n"], + ['code' => '466', 'message' => 'request too frequently.', 'http_code' => 200, 'description' => '请求过于频繁'], + ['code' => '466', 'message' => 'alarm picture exist.', 'http_code' => 200, 'description' => '报警图片已经存在,不允许重复上传'], + ['code' => '466', 'message' => 'device offline.', 'http_code' => 200, 'description' => ' 设备不在线'], + ['code' => '466', 'message' => 'deviceList lifecycle not exist.', 'http_code' => 200, 'description' => '设备存储生命周期不存在'], + ['code' => '466', 'message' => 'triggerPicture failed.', 'http_code' => 200, 'description' => '设备抓图失败'], + ['code' => '466', 'message' => 'push stream fail.', 'http_code' => 200, 'description' => '设备推流失败'], + ['code' => '466', 'message' => 'device status is disable.', 'http_code' => 200, 'description' => '设备物联网通道被禁用'], + ['code' => '466', 'message' => 'device status is initial.', 'http_code' => 200, 'description' => '设备未激活物联网通道(第一次上线后激活)'], + ['code' => '466', 'message' => 'device status is offline.', 'http_code' => 200, 'description' => '设备不在线'], + ['code' => 'Forbidden.RiskControl', 'message' => 'Your account is at risk. Contact customer support for more details.', 'http_code' => 400, 'description' => '无权限'], + ['code' => 'InternalError', 'message' => 'The request processing has failed due to some unknown error.', 'http_code' => 500, 'description' => '服务端未知错误。'], + ['code' => 'iot.common.AuthActionPermissionDeny', 'message' => 'The authorization fails.', 'http_code' => 400, 'description' => '鉴权失败。'], + ['code' => 'iot.common.RamActionPermissionDeny', 'message' => 'You do not have the RAM permission.', 'http_code' => 400, 'description' => '没有资源访问控制(RAM)权限。'], + ['code' => 'iot.lv.requestAuthError', 'message' => 'Request auth error.', 'http_code' => 403, 'description' => '认证出错。'], + ['code' => 'iot.lv.requestError', 'message' => 'Post-paid change limit.', 'http_code' => 400, 'description' => '按量计费功能变更次数超限制。'], + ['code' => 'iot.lv.requestError', 'message' => 'Request error.', 'http_code' => 400, 'description' => '请求出错'], + ['code' => 'iot.lv.requestError', 'message' => 'Request error', 'http_code' => 400, 'description' => '请求出错'], + ['code' => 'iot.lv.requestParamError', 'message' => 'Request parameter error.', 'http_code' => 403, 'description' => '请求参数错误。'], + ['code' => 'iot.lv.requestTimeError', 'message' => 'Request time error.', 'http_code' => 403, 'description' => '请求查询时间参数错误'], + ['code' => 'iot.system.InstanceNotFound', 'message' => 'The instance ID does not exist.', 'http_code' => 400, 'description' => '实例ID不存在。'], + ['code' => 'iot.system.UidNotFound', 'message' => 'The Alibaba Cloud account does not exist or the IoT Platform service is not activated.', 'http_code' => 400, 'description' => '阿里云账号不存在或未开通物联网服务。'], + ['code' => 'iot.vision.AccountAlreadyExist', 'message' => 'Account already exist.', 'http_code' => 400, 'description' => '账号已存在。'], + ['code' => 'iot.vision.AccountNotFound', 'message' => 'Account not found.', 'http_code' => 400, 'description' => '找不到账号。'], + ['code' => 'iot.vision.AccountRegistryAddFailed', 'message' => 'Add account registry failed.', 'http_code' => 400, 'description' => '新增账号注册信息失败。'], + ['code' => 'iot.vision.AccountRegistryLockFailed', 'message' => 'Get account registry lock failed.', 'http_code' => 400, 'description' => '账号注册获取分布式锁失败。'], + ['code' => 'iot.vision.AccountRegistryRemoveFailed', 'message' => 'Remove account registry failed.', 'http_code' => 400, 'description' => '删除账号注册信息失败。'], + ['code' => 'iot.vision.ActiveCodeInsufficient', 'message' => 'Active code quota is insufficient.', 'http_code' => 400, 'description' => '可用激活码不足。'], + ['code' => 'iot.vision.AppNameExist', 'message' => 'AppName exist.', 'http_code' => 400, 'description' => '应用名称已存在。'], + ['code' => 'iot.vision.BatchHasCreated', 'message' => 'This batch task has been created.', 'http_code' => 400, 'description' => '该批次已经创建设备。'], + ['code' => 'iot.vision.BatchUpgradeDeviceFailed', 'message' => 'Batch upgrade device failed:%s', 'http_code' => 400, 'description' => '批量升级设备失败。'], + ['code' => 'iot.vision.BindFailed', 'message' => 'Bind account and device failed.', 'http_code' => 400, 'description' => '账号和设备绑定失败。'], + ['code' => 'iot.vision.BindingRelationNotFound', 'message' => 'Account and device binding relation not found.', 'http_code' => 400, 'description' => '账号和设备不存在绑定关系。'], + ['code' => 'iot.vision.CancelOTATaskFailed', 'message' => 'Cancel ota task failed:%s', 'http_code' => 400, 'description' => '取消升级任务失败。'], + ['code' => 'iot.vision.CancelUpgradeTaskFailed', 'message' => 'Cancel upgrade task failed:%s', 'http_code' => 400, 'description' => '取消设备升级失败。'], + ['code' => 'iot.vision.CheckDeviceFileFailed', 'message' => 'Check device file failed:%s', 'http_code' => 400, 'description' => '设备列表文件校验失败。'], + ['code' => 'iot.vision.CheckDeviceFileRequestFailed', 'message' => 'Check device file request failed:%s', 'http_code' => 400, 'description' => '校验设备列表文件的请求失败。'], + ['code' => 'iot.vision.ConcurrencyExceedLimit', 'message' => 'Concurrency exceed the limit.', 'http_code' => 400, 'description' => '并发数超过限额。'], + ['code' => 'iot.vision.CreateDeviceFailed', 'message' => 'create device failed.', 'http_code' => 400, 'description' => '创建设备失败。'], + ['code' => 'iot.vision.CreateFirmwareFailed', 'message' => 'Create firmware failed:%s', 'http_code' => 400, 'description' => '创建升级包失败。'], + ['code' => 'iot.vision.CreateFirmwareModuleFailed', 'message' => 'Create firmware module failed:%s', 'http_code' => 400, 'description' => '创建升级包模块失败。'], + ['code' => 'iot.vision.CreateProductFailed', 'message' => 'Create product failed.', 'http_code' => 400, 'description' => '创建产品失败。'], + ['code' => 'iot.vision.CreateProductNotAllow', 'message' => 'Create product not allow.', 'http_code' => 400, 'description' => '不支持创建产品。'], + ['code' => 'iot.vision.CreateProjectFailed', 'message' => 'Create project failed.', 'http_code' => 400, 'description' => '创建项目失败。'], + ['code' => 'iot.vision.CreateStorageOrderFailed', 'message' => 'Create storage order failed.', 'http_code' => 400, 'description' => '创建云存储订单失败。'], + ['code' => 'iot.vision.CreateSubscribeRelationFailed', 'message' => 'Create subscribe relation failed:%s', 'http_code' => 400, 'description' => '创建订阅关系失败。'], + ['code' => 'iot.vision.DeleteDeviceFailed', 'message' => 'delete device failed.', 'http_code' => 400, 'description' => '删除设备失败。'], + ['code' => 'iot.vision.DeleteFirmwareFailed', 'message' => 'Delete firmware failed:%s', 'http_code' => 400, 'description' => '删除升级包失败。'], + ['code' => 'iot.vision.DeleteFirmwareModuleFailed', 'message' => 'Delete firmware module failed:%s', 'http_code' => 400, 'description' => '删除升级包模块失败。'], + ['code' => 'iot.vision.DeleteProductFailed', 'message' => 'Delete product failed.', 'http_code' => 400, 'description' => '删除产品失败。'], + ['code' => 'iot.vision.DeleteProjectFailed', 'message' => 'Delete project failed.', 'http_code' => 400, 'description' => '删除项目失败。'], + ['code' => 'iot.vision.DeleteSubscribeRelationFailed', 'message' => 'Delete subscribe relation failed:%s', 'http_code' => 400, 'description' => '删除订阅关系失败。'], + ['code' => 'iot.vision.DevcieOffline', 'message' => 'Device offline.', 'http_code' => 400, 'description' => '设备不在线。'], + ['code' => 'iot.vision.DeviceInactive', 'message' => 'Device inactive.', 'http_code' => 400, 'description' => '设备未激活。'], + ['code' => 'iot.vision.DeviceNameCheckFailed', 'message' => 'Device names check failed.', 'http_code' => 400, 'description' => '设备名称校验失败。'], + ['code' => 'iot.vision.DeviceNameChecking', 'message' => 'Device names are checking.', 'http_code' => 400, 'description' => '设备名称校验未完成。'], + ['code' => 'iot.vision.DeviceNameDuplicate', 'message' => 'Device name duplicate.', 'http_code' => 400, 'description' => '设备名已存在。'], + ['code' => 'iot.vision.DeviceNameFormatInvalid', 'message' => 'Device name format invalid.', 'http_code' => 400, 'description' => '设备名称格式无效。'], + ['code' => 'iot.vision.DeviceNicknameInvalid', 'message' => 'Device nickname invalid.', 'http_code' => 400, 'description' => '设备昵称无效。'], + ['code' => 'iot.vision.DeviceNoOwner', 'message' => 'Device has no owner.', 'http_code' => 400, 'description' => '设备没有绑定管理员。'], + ['code' => 'iot.vision.DeviceNotExist', 'message' => 'Device not exist.', 'http_code' => 400, 'description' => '设备不存在。'], + ['code' => 'iot.vision.DeviceNotStreaming', 'message' => 'Device is not streaming.', 'http_code' => 400, 'description' => '设备未推流。'], + ['code' => 'iot.vision.DeviceNumLimit', 'message' => 'device num exceed limit.', 'http_code' => 400, 'description' => '设备数量超限。'], + ['code' => 'iot.vision.DeviceOffline', 'message' => 'Device is offline.', 'http_code' => 400, 'description' => '设备不在线。'], + ['code' => 'iot.vision.DeviceOwnerChanged', 'message' => 'Device owner changed.', 'http_code' => 400, 'description' => '设备的管理员用户变更。'], + ['code' => 'iot.vision.DevicePropertyFormatInvalid', 'message' => 'Device property format invalid.', 'http_code' => 400, 'description' => '设备属性格式无效。'], + ['code' => 'iot.vision.DevicesCountExceedLimit', 'message' => 'The devices count exceed the limit.', 'http_code' => 400, 'description' => '创建设备数量超过限制。'], + ['code' => 'iot.vision.DevicesExceedUnreleasedProductLimit', 'message' => 'Devices count exceed the limit of unreleased product.', 'http_code' => 400, 'description' => '创建设备数量超过未发布产品的试产设备数量。'], + ['code' => 'iot.vision.DownloadJobError', 'message' => 'Download job error.', 'http_code' => 400, 'description' => '下载任务异常。'], + ['code' => 'iot.vision.FirmwareNotFound', 'message' => 'The specified firmware does not exist.', 'http_code' => 400, 'description' => '该版本升级包不存在。'], + ['code' => 'iot.vision.FirmwareNotVerified', 'message' => 'Firmware validation not completed.', 'http_code' => 400, 'description' => '升级包验证未完成。'], + ['code' => 'iot.vision.FirmwareSourceVersionMismatch', 'message' => 'Current firmware version of device does not match source version of firmware.', 'http_code' => 400, 'description' => '设备当前版本号与升级包的源版本号不匹配。'], + ['code' => 'iot.vision.FirmwareVerifyFailed', 'message' => 'Firmware verify failed.', 'http_code' => 400, 'description' => '升级包验证失败。'], + ['code' => 'iot.vision.FirmwareVersionMismatch', 'message' => 'The version of firmware mismatch.', 'http_code' => 400, 'description' => '升级包版本号不匹配。'], + ['code' => 'iot.vision.FreeStorageLimit', 'message' => 'Free storage quota exceed limit.', 'http_code' => 400, 'description' => '无免费试用的云存储配额。'], + ['code' => 'iot.vision.FreeStorageQuotaLimit', 'message' => 'No enough free storage quota or exceed limit.', 'http_code' => 400, 'description' => '免费试用的云存储配额不足或超限制。'], + ['code' => 'iot.vision.GbIdDuplicate', 'message' => 'The GB28181 deviceId is duplicated.', 'http_code' => 400, 'description' => '国标ID重复。'], + ['code' => 'iot.vision.GbServiceNotEnabled', 'message' => 'The GB28181 service has not been enabled.', 'http_code' => 400, 'description' => '国标服务未开启。'], + ['code' => 'iot.vision.GenerateDeviceNameListUrlFailed', 'message' => 'Generate device name list url failed:%s', 'http_code' => 400, 'description' => '生成设备列表上传URL请求失败。'], + ['code' => 'iot.vision.GenerateFirmwareUploadUrlFailed', 'message' => 'Generate firmware upload url failed:%s', 'http_code' => 400, 'description' => '生成固件上传URL失败。'], + ['code' => 'iot.vision.GetAccountInfoFailed', 'message' => 'Get account info failed.', 'http_code' => 400, 'description' => '查询账号详情信息失败。'], + ['code' => 'iot.vision.GetDeviceInfoFailed', 'message' => 'Get device info failed.', 'http_code' => 400, 'description' => '查询设备详情失败。'], + ['code' => 'iot.vision.GetOwnerIdentityInfoFailed', 'message' => 'Get owner identity info failed.', 'http_code' => 400, 'description' => '查询设备管理员用户信息失败。'], + ['code' => 'iot.vision.GetThingEventSnapshotFailed', 'message' => 'Get thing event snapshot failed.', 'http_code' => 400, 'description' => '查询物模型事件快照失败。'], + ['code' => 'iot.vision.HasNoAccessPermission', 'message' => 'Has no access permission.', 'http_code' => 403, 'description' => '没有访问权限。'], + ['code' => 'iot.vision.HasRelatedProduct', 'message' => 'Has related product.', 'http_code' => 400, 'description' => '仍有关联产品不能删除。'], + ['code' => 'iot.vision.IdentityAppKeyProductNotBind', 'message' => 'The app associated with the identityId does not have permission to access the product.', 'http_code' => 400, 'description' => '账号对应AppKey没有关联产品。'], + ['code' => 'iot.vision.ImportProjectFailed', 'message' => 'Import project failed.', 'http_code' => 400, 'description' => '导入项目失败。'], + ['code' => 'iot.vision.InstanceArrearage', 'message' => 'Instance arrearage.', 'http_code' => 400, 'description' => '实例已欠费。'], + ['code' => 'iot.vision.InvalidCallerType', 'message' => 'Invalid caller type.', 'http_code' => 400, 'description' => '无效的调用类型参数。'], + ['code' => 'iot.vision.InvalidFirmwareId', 'message' => 'Invalid firmware Id.', 'http_code' => 400, 'description' => '无效的升级包ID。'], + ['code' => 'iot.vision.InvalidIotInstance', 'message' => 'Invalid iot instance.', 'http_code' => 400, 'description' => '无效的实例或者找不到对应实例。'], + ['code' => 'iot.vision.InvalidStorageCommodity', 'message' => 'Invalid storage commodity.', 'http_code' => 400, 'description' => '无效的云存储商品规格。'], + ['code' => 'iot.vision.InvalidStorageOrder', 'message' => 'Invalid storage order.', 'http_code' => 400, 'description' => '无效的云存储订单。'], + ['code' => 'iot.vision.InvokeServiceFailed', 'message' => '%s', 'http_code' => 400, 'description' => '物模型服务调用失败。'], + ['code' => 'iot.vision.InvokeServiceFailed', 'message' => '%s failed.', 'http_code' => 400, 'description' => '物模型服务调用失败。'], + ['code' => 'iot.vision.InvokeServiceFailed', 'message' => 'Invoke service failed:%s', 'http_code' => 400, 'description' => '物模型服务调用失败。'], + ['code' => 'iot.vision.JobNotExist', 'message' => 'Job not exist or expired.', 'http_code' => 400, 'description' => '任务不存在或已过期。'], + ['code' => 'iot.vision.ModifyFirmwareFailed', 'message' => 'Modify firmware failed:%s', 'http_code' => 400, 'description' => '修改升级包失败。'], + ['code' => 'iot.vision.NoAvailableActiveCode', 'message' => 'No available active codes.', 'http_code' => 400, 'description' => '没有可用的激活码。'], + ['code' => 'iot.vision.NoStorageQuota', 'message' => 'No storage quota.', 'http_code' => 400, 'description' => '无存储配额。'], + ['code' => 'iot.vision.ParamBatchIdInvalid', 'message' => 'Parameter batchId is invalid.', 'http_code' => 400, 'description' => '参数批次ID无效。'], + ['code' => 'iot.vision.PreviousImportProjectTaskNotFinished', 'message' => 'Previous import project task not finished.', 'http_code' => 400, 'description' => '之前的项目导入任务尚未完成。'], + ['code' => 'iot.vision.ProductCancelReleaseFailed.', 'message' => 'Product cancel release failed.', 'http_code' => 400, 'description' => '产品撤销发布失败。'], + ['code' => 'iot.vision.ProductHasRelatedAuthorization', 'message' => 'Product has related authorization.', 'http_code' => 400, 'description' => '产品存在关联授权。'], + ['code' => 'iot.vision.ProductHasRelatedResource', 'message' => 'Product has related resource.', 'http_code' => 400, 'description' => '产品存在关联的资源。'], + ['code' => 'iot.vision.ProductKeyFormatInvalid', 'message' => 'Product key format invalid.', 'http_code' => 400, 'description' => '产品Key格式无效。'], + ['code' => 'iot.vision.ProductNameDuplicated', 'message' => 'Product name duplicated.', 'http_code' => 400, 'description' => '产品名称重复。'], + ['code' => 'iot.vision.ProductNameFormatInvalid', 'message' => 'Product name format invalid.', 'http_code' => 400, 'description' => '产品名称格式错误。'], + ['code' => 'iot.vision.ProductNameLengthInvalid', 'message' => 'Product name length invalid.', 'http_code' => 400, 'description' => '产品名称长度无效。'], + ['code' => 'iot.vision.ProductNotExist', 'message' => 'Product not exist.', 'http_code' => 400, 'description' => '产品不存在。'], + ['code' => 'iot.vision.ProductNotRelease', 'message' => 'Product not release.', 'http_code' => 400, 'description' => '产品未发布。'], + ['code' => 'iot.vision.ProductNumLimit', 'message' => 'Product number exceed limit.', 'http_code' => 400, 'description' => '产品数量超上限。'], + ['code' => 'iot.vision.ProductReleased', 'message' => 'Product had been released.', 'http_code' => 400, 'description' => '产品已经发布。'], + ['code' => 'iot.vision.ProductReleaseFailed', 'message' => 'Product release failed.', 'http_code' => 400, 'description' => '产品发布失败。'], + ['code' => 'iot.vision.ProductShouldNotDelete', 'message' => 'Product should not delete.', 'http_code' => 400, 'description' => '产品不支持删除。'], + ['code' => 'iot.vision.ProductShouldNotEdit', 'message' => 'Product should not edit.', 'http_code' => 400, 'description' => '产品不支持编辑。'], + ['code' => 'iot.vision.ProductTagDuplicated', 'message' => 'Product tag duplicated.', 'http_code' => 400, 'description' => '产品标签重复。'], + ['code' => 'iot.vision.ProductTagLengthInvalid', 'message' => 'Product tag length invalid.', 'http_code' => 400, 'description' => '产品标签的长度无效。'], + ['code' => 'iot.vision.ProductTagNotFound', 'message' => 'Product tag not found.', 'http_code' => 400, 'description' => '产品标签不存在。'], + ['code' => 'iot.vision.ProductTagNumLimit', 'message' => 'Product tag num limit.', 'http_code' => 400, 'description' => '产品标签数量超过限制。'], + ['code' => 'iot.vision.ProductTypeMismatch', 'message' => 'Product type mismatch.', 'http_code' => 400, 'description' => '产品类型不匹配。'], + ['code' => 'iot.vision.ProductUpdateFailed', 'message' => 'Product update failed.', 'http_code' => 400, 'description' => '产品更新失败。'], + ['code' => 'iot.vision.ProjectCreateLimit', 'message' => 'Project still in initializing please try again later.', 'http_code' => 400, 'description' => '您还有项目处于创建中,请稍后再试。'], + ['code' => 'iot.vision.ProjectHasNoProducts', 'message' => 'Project has no products.', 'http_code' => 400, 'description' => '项目下没有产品。'], + ['code' => 'iot.vision.ProjectHasRelatedResource', 'message' => 'Project has related resource.', 'http_code' => 400, 'description' => '项目存在关联的资源。'], + ['code' => 'iot.vision.ProjectNameDuplicated', 'message' => 'Project name duplicated.', 'http_code' => 400, 'description' => '项目名称重复。'], + ['code' => 'iot.vision.ProjectNameLengthInvalid', 'message' => 'Project name length invalid.', 'http_code' => 400, 'description' => '项目名称长度无效。'], + ['code' => 'iot.vision.ProjectNotExist', 'message' => 'Project does not exist.', 'http_code' => 400, 'description' => '项目不存在。'], + ['code' => 'iot.vision.ProjectNumLimit', 'message' => 'Project num exceed limit.', 'http_code' => 400, 'description' => '项目数量超上限。'], + ['code' => 'iot.vision.PropertyNotFound', 'message' => 'Property not found.', 'http_code' => 400, 'description' => '物模型属性不存在。'], + ['code' => 'iot.vision.PropertyReadOnly', 'message' => 'Property is read only.', 'http_code' => 400, 'description' => '物模型属性是只读的。'], + ['code' => 'iot.vision.QueryAppListError', 'message' => 'No Result.', 'http_code' => 400, 'description' => '请求无数据。'], + ['code' => 'iot.vision.QueryBindingAccountFailed', 'message' => 'Query binding account failed.', 'http_code' => 400, 'description' => '查询绑定的用户失败。'], + ['code' => 'iot.vision.QueryBindingDeviceFailed', 'message' => 'Query binding device failed.', 'http_code' => 400, 'description' => '查询绑定设备列表失败。'], + ['code' => 'iot.vision.QueryCommodityPriceFailed', 'message' => 'Query commodity price failed.', 'http_code' => 400, 'description' => '查询云存储商品价格失败。'], + ['code' => 'iot.vision.QueryConsumerGroupFailed', 'message' => 'Query consumer group failed:%s', 'http_code' => 400, 'description' => '查询消费组失败。'], + ['code' => 'iot.vision.QueryDeviceFailed', 'message' => 'query device failed.', 'http_code' => 400, 'description' => '查询设备失败。'], + ['code' => 'iot.vision.QueryDeviceGroupFailed', 'message' => 'Query device group failed:%s', 'http_code' => 400, 'description' => '查询设备分组失败。'], + ['code' => 'iot.vision.QueryDeviceUpgradeCountFailed', 'message' => 'Query device upgrade count failed:%s', 'http_code' => 400, 'description' => '查询设备升级数量失败。'], + ['code' => 'iot.vision.QueryDeviceUpgradeInfoFailed', 'message' => 'Query device upgrade info failed:%s', 'http_code' => 400, 'description' => '查询设备升级情况失败。'], + ['code' => 'iot.vision.QueryDeviceVersionStatisticsFailed', 'message' => 'Query device version statistics failed:%s', 'http_code' => 400, 'description' => '查询设备版本分布详情失败。'], + ['code' => 'iot.vision.QueryFirmwareFailed', 'message' => 'Query firmware failed:%s', 'http_code' => 400, 'description' => '查询固件失败。'], + ['code' => 'iot.vision.QueryFirmwareModuleFailed', 'message' => 'Query firmware module failed:%s', 'http_code' => 400, 'description' => '查询升级包模块失败。'], + ['code' => 'iot.vision.QueryFirmwareVersionFailed', 'message' => 'Query firmware version failed:%s', 'http_code' => 400, 'description' => '查询升级包版本失败。'], + ['code' => 'iot.vision.QueryProductRelatedDeviceFailed', 'message' => 'Query product related device failed.', 'http_code' => 400, 'description' => '查询产品关联的设备失败。'], + ['code' => 'iot.vision.QuerySubscribeRelationFailed', 'message' => 'Query subscribe relation failed:%s', 'http_code' => 400, 'description' => '查询订阅列表失败。'], + ['code' => 'iot.vision.QueryUpgradeDefaultTimeoutFailed', 'message' => 'Query upgrade default timeout failed:%s', 'http_code' => 400, 'description' => '查询升级默认超时时间请求失败。'], + ['code' => 'iot.vision.QueryUpgradeDeviceFailed', 'message' => 'Query upgrade device failed:%s', 'http_code' => 400, 'description' => '查询待升级设备失败。'], + ['code' => 'iot.vision.QueryUpgradeStatisticsInfoFailed', 'message' => 'Query upgrade statistics info failed:%s', 'http_code' => 400, 'description' => '查询升级统计信息失败。'], + ['code' => 'iot.vision.QueryUpgradeTaskFailed', 'message' => 'Query upgrade task failed:%s', 'http_code' => 400, 'description' => '查询升级任务失败。'], + ['code' => 'iot.vision.RecordNotExist', 'message' => 'Record not exist.', 'http_code' => 400, 'description' => '录像文件不存在。'], + ['code' => 'iot.vision.RefreshTooFrequently', 'message' => 'Refresh too frequently.', 'http_code' => 400, 'description' => '刷新太频繁。'], + ['code' => 'iot.vision.RequestAuthFailed', 'message' => 'Request auth failed.', 'http_code' => 403, 'description' => '请求鉴权失败。'], + ['code' => 'iot.vision.RequestError', 'message' => 'Request error.', 'http_code' => 400, 'description' => '请求失败。'], + ['code' => 'iot.vision.RequestFailed', 'message' => 'Request failed.', 'http_code' => 400, 'description' => '请求失败。'], + ['code' => 'iot.vision.RequestFailed', 'message' => 'product already publish operation not allowed.', 'http_code' => 400, 'description' => '产品已发布不支持此操作。'], + ['code' => 'iot.vision.RequestFailed', 'message' => 'product not exist.', 'http_code' => 400, 'description' => '产品不存在。'], + ['code' => 'iot.vision.RequestForbidden', 'message' => 'Request forbidden.', 'http_code' => 403, 'description' => '请求被禁止。'], + ['code' => 'iot.vision.RequestParamError', 'message' => 'Request parameter error.', 'http_code' => 400, 'description' => '请求参数错误。'], + ['code' => 'iot.vision.RequestParamError', 'message' => 'Request parameter error:%s', 'http_code' => 400, 'description' => '请求参数错误。'], + ['code' => 'iot.vision.RequestParameterError', 'message' => 'Request parameter error:%s', 'http_code' => 400, 'description' => '请求参数错误。'], + ['code' => 'iot.vision.RequestTrafficControl', 'message' => 'Request traffic control.', 'http_code' => 429, 'description' => '请求太频繁被限流。'], + ['code' => 'iot.vision.ReUpgradeDeviceFailed', 'message' => 'ReUpgrade device failed:%s', 'http_code' => 400, 'description' => '重新升级设备失败。'], + ['code' => 'iot.vision.RtmpKeyNotSet', 'message' => 'Rtmp key not set.', 'http_code' => 400, 'description' => '鉴权密钥未设置。'], + ['code' => 'iot.vision.ServerError', 'message' => 'server error.', 'http_code' => 400, 'description' => '服务器端出错。'], + ['code' => 'iot.vision.ServiceEnumSpecError', 'message' => 'Service enum spec error.', 'http_code' => 400, 'description' => '物模型服务枚举参数错误。'], + ['code' => 'iot.vision.ServiceNotFound', 'message' => 'Invoke service failed as service not found.', 'http_code' => 400, 'description' => '物模型服务不存在。'], + ['code' => 'iot.vision.ServiceParamNotExist', 'message' => 'Invoke service failed as service param not exist.', 'http_code' => 400, 'description' => '物模型服务参数不存在。'], + ['code' => 'iot.vision.ServiceResponseTimeout', 'message' => 'Invoke service response timeout.', 'http_code' => 400, 'description' => '超时未收到设备响应。'], + ['code' => 'iot.vision.SetAccountFailed', 'message' => 'Set account failed.', 'http_code' => 400, 'description' => '配置自有账号失败。'], + ['code' => 'iot.vision.SetDefaultRecordPlanFailed', 'message' => 'Set default record plan failed.', 'http_code' => 400, 'description' => '设置默认的录像计划失败。'], + ['code' => 'iot.vision.SetPropertyFailed', 'message' => 'Set property failed.', 'http_code' => 400, 'description' => '设置物模型属性失败。'], + ['code' => 'iot.vision.StorageCommodityUnavailable', 'message' => 'Storage commodity unavailable.', 'http_code' => 400, 'description' => '云存储商品不支持使用。'], + ['code' => 'iot.vision.StorageOrderAlreadyPaid', 'message' => 'Storage order had been paid.', 'http_code' => 400, 'description' => '云存储订单已经支付。'], + ['code' => 'iot.vision.StorageOrderGetLockFailed', 'message' => 'Get storage order lock failed try again later.', 'http_code' => 400, 'description' => '获取云存储订单分布式锁失败,请稍后重试。'], + ['code' => 'iot.vision.StorageOrderPayFailed', 'message' => 'Storage order pay failed.', 'http_code' => 400, 'description' => '云存储订单支付失败。'], + ['code' => 'iot.vision.StorageOrderStatusInvalid', 'message' => 'Storage order status invalid.', 'http_code' => 400, 'description' => '当前云存储订单状态不支持操作。'], + ['code' => 'iot.vision.StreamNameDuplicate', 'message' => 'Stream name duplicate.', 'http_code' => 400, 'description' => '流名称重复。'], + ['code' => 'iot.vision.StreamPushFailed', 'message' => 'Stream push failed.', 'http_code' => 400, 'description' => '推流失败。'], + ['code' => 'iot.vision.TargetDeviceOwnerDifferent', 'message' => 'Target device owner is different.', 'http_code' => 400, 'description' => '目标设备的管理员用户与待转移订单的管理员用户不一致。'], + ['code' => 'iot.vision.TemplateMacroInvalid', 'message' => 'macro invalid.', 'http_code' => 400, 'description' => '宏格式错误。'], + ['code' => 'iot.vision.TemplateTextInvalid', 'message' => 'var or text invalid.', 'http_code' => 400, 'description' => '变量或文本格式错误。'], + ['code' => 'iot.vision.TenantMismatch', 'message' => 'Caller tenant and account belong tenant mismatch.', 'http_code' => 400, 'description' => '接口调用方的租户和账号归属的租户不一致。'], + ['code' => 'iot.vision.ThingAbilityNameDuplicated', 'message' => 'Thing model ability name duplicated.', 'http_code' => 400, 'description' => '物模型功能名称重复。'], + ['code' => 'iot.vision.ThingEventNotFound', 'message' => 'Thing event not found.', 'http_code' => 400, 'description' => '物模型事件不存在。'], + ['code' => 'iot.vision.ThingModelAbilityDuplicated', 'message' => 'Thing model ability duplicated.', 'http_code' => 400, 'description' => '物模型功能重复。'], + ['code' => 'iot.vision.ThingModelIdentifierNotExist', 'message' => 'Thing model identifier not exist.', 'http_code' => 400, 'description' => '物模型功能标识符不存在。'], + ['code' => 'iot.vision.ThingModelNotExist', 'message' => 'Thing model not exist.', 'http_code' => 400, 'description' => '物模型功能不存在。'], + ['code' => 'iot.vision.ThingModelParamsFormatInvalid', 'message' => 'Thing model params format invalid.', 'http_code' => 400, 'description' => '物模型参数格式无效。'], + ['code' => 'iot.vision.ThingModelParamsInvalid', 'message' => 'Thing model params invalid.', 'http_code' => 400, 'description' => '物模型参数无效。'], + ['code' => 'iot.vision.ThingModelUpdateFailed', 'message' => 'Thing model update failed.', 'http_code' => 400, 'description' => '物模型编辑更新失败。'], + ['code' => 'iot.vision.UnbindFailed', 'message' => 'Unbind account and device failed.', 'http_code' => 400, 'description' => '账号和设备解绑失败。'], + ['code' => 'iot.vision.UnexpectedInternalError', 'message' => 'Unexpected internal error.', 'http_code' => 400, 'description' => '未知内部错误。'], + ['code' => 'iot.vision.UpdateConsumerGroupFailed', 'message' => 'Update consumer group failed:%s', 'http_code' => 400, 'description' => '更新消费组失败。'], + ['code' => 'iot.vision.UpdateFirmwareModuleFailed', 'message' => 'Update firmware module failed:%s', 'http_code' => 400, 'description' => '更新升级包模块失败。'], + ['code' => 'iot.vision.UpdateOTATaskStrategyFailed', 'message' => 'Update ota task strategy failed:%s', 'http_code' => 400, 'description' => '更新OTA升级任务策略失败。'], + ['code' => 'iot.vision.UpdateSubscribeRelationFailed', 'message' => 'Update subscribe relation failed:%s', 'http_code' => 400, 'description' => '更新订阅关系失败。'], + ['code' => 'iot.vision.VerifyFirmwareRequestFailed', 'message' => 'Verify firmware request failed:%s', 'http_code' => 400, 'description' => '验证升级包请求失败。'], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetThingEventSnapshot'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'FreezeFreeStorage'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetSubDeviceList'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryStorageOrder'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDevicesDownloadUrl'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'TransferStorageOrder'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetThingProperty'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetDeviceStatus'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EnableFreeStorage'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'FreezeStorageOrder'], + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryFreeStorage'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindDevice'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListBindingDeviceByAccount'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryBatchStatus'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GenerateDevice'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindAllUserByDevice'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryGenerateDevicesRecord'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckFreeStorageValid'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EnableStorageOrder'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BindStorageOrder'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetThingPropertySnapshot'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryStorageOrderList'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GenerateDeviceByBatchId'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UploadDeviceNameList'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDeviceDetail'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'InvokeThingService'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListBindingAccountByDevice'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateAndPayStorageOrder'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryStorageCommodityList'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryGenerateDevicesInfoList'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BatchBindDevice'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetAccountById'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ConsumeFreeStorage'], ], - [ - 'regionId' => 'me-east-1', - 'endpoint' => 'linkvisual.aliyuncs.com', + ], + 'ram' => [ + 'productCode' => 'LinkVisual', + 'productName' => '物联网智能视频服务', + 'ramCodes' => ['linkvisual'], + 'ramLevel' => '资源级', + 'ramConditions' => [], + 'ramActions' => [ + [ + 'apiName' => 'FreezeStorageOrder', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:FreezeStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'GenerateDeviceByBatchId', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GenerateDeviceByBatchId', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'EnableFreeStorage', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:EnableFreeStorage', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'QueryFreeStorage', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryFreeStorage', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'CreateAndPayStorageOrder', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:CreateAndPayStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'SetThingProperty', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:SetThingProperty', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'ListBindingDeviceByAccount', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:ListBindingDeviceByAccount', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'EnableStorageOrder', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:EnableStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'GetThingEventSnapshot', + 'description' => '查询物模型事件的快照', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GetThingEventSnapshot', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'QueryStorageOrder', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'GenerateDevice', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GenerateDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'QueryDeviceDetail', + 'description' => 'QueryDeviceDetail', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryDeviceDetail', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'UploadDeviceNameList', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:UploadDeviceNameList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'FreezeFreeStorage', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:FreezeFreeStorage', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'QueryGenerateDevicesRecord', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryGenerateDevicesRecord', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'QueryStorageCommodityList', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryStorageCommodityList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'CheckFreeStorageValid', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:CheckFreeStorageValid', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'UnbindDevice', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:UnbindDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'InvokeThingService', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:InvokeThingService', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'UnbindAllUserByDevice', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:UnbindAllUserByDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'TransferStorageOrder', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:TransferStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'QueryGenerateDevicesInfoList', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryGenerateDevicesInfoList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'QueryDevicesDownloadUrl', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryDevicesDownloadUrl', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'BindStorageOrder', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:BindStorageOrder', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'GetSubDeviceList', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GetSubDeviceList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'GetThingPropertySnapshot', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GetThingPropertySnapshot', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'GetDeviceStatus', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GetDeviceStatus', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'GetAccountById', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:GetAccountById', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'QueryBatchStatus', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryBatchStatus', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'BatchBindDevice', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:BatchBindDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'ConsumeFreeStorage', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:ConsumeFreeStorage', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'ListBindingAccountByDevice', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:ListBindingAccountByDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'QueryStorageOrderList', + 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'linkvisual:QueryStorageOrderList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'LinkVisual', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'resourceTypes' => [], ], ]; |
