更新时间:2023-04-13 GMT+08:00
分享

创建订阅

接口说明

应用服务器可调用此接口订阅物联网平台资源的变化事件,当资源发生变化时(如设备激活,设备数据更新等),平台会向应用服务器发送通知消息。

URI

请求方法

POST

URI

/v5/iot/{project_id}/subscriptions

传输协议

HTTPS

请求参数

名称

必选/可选

类型

位置

说明

X-Auth-Token

必选

String

Header

用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证

Instance-Id

可选

String

Header

实例ID。物理多租下各实例的唯一标识,一般华为云租户无需携带该参数,仅在物理多租场景下从管理面访问API时需要携带该参数。

project_id

必选

String

Path

项目ID。获取方法请参见 获取项目ID

subject

必选

Subject Object

Body

订阅的主题信息,即订阅的资源变化事件。

callbackurl

必选

String

Body

订阅的回调地址,用于接收对应资源事件的通知消息,例如:https://host:port/callbackurltest。

app_id

可选

String

Body

资源空间ID。此参数为非必选参数,存在多资源空间的用户需要使用该接口时,建议携带该参数指定订阅哪个资源空间下的消息通知,否则订阅的消息通知将会归属到默认资源空间下。

channel

必选

String

Body

物联网平台推送通知消息时使用的协议通道。使用“http”填充,表示该订阅推送协议通道为http(s)协议。

表1 Subject

名称

必选/可选

类型

说明

resource

必选

String

订阅的资源名称。

  • device:设备。
  • device.data:设备数据。
  • device.message.status:设备消息状态。
  • device.message:设备消息。
  • device.status:设备状态。
  • batchtask.status:批量任务状态。

event

必选

String

订阅的资源事件,取值范围:activate、update、up。

event需要与resource关联使用,具体的“resource:event”映射关系如下:

  • device:activate(设备激活)
  • device.data:update(设备数据变化)
  • device.message.status:update(设备消息状态)
  • device.message:report(设备消息上报)
  • device.status:update (设备状态变化)
  • batchtask.status:update (批量任务状态变化)

响应参数

名称

类型

说明

subscription_id

String

订阅ID,用于唯一标识一个订阅,在创建订阅时由物联网平台分配获得。

subject

Subject Object

订阅的主题信息,即订阅的资源变化事件。

callbackurl

String

订阅的回调地址,用于接收对应资源事件的通知消息。

channel

String

物联网平台推送通知消息时使用的协议通道。使用“http”填充,表示该订阅推送协议通道为http(s)协议。

表2 Subject

名称

类型

说明

resource

String

订阅的资源名称。

  • device:设备。
  • device.data:设备数据。
  • device.message.status:设备消息状态。
  • device.message:设备消息。
  • device.status:设备状态。
  • batchtask.status:批量任务状态。

event

String

订阅的资源事件,取值范围:activate、update、up。

event需要与resource关联使用,具体的“resource:event”映射关系如下:

  • device:activate(设备激活)
  • device.data:update(设备数据变化)
  • device.message.status:update(设备消息状态)
  • device.message:report(设备消息上报)
  • device.status:update (设备状态变化)
  • batchtask.status:update (批量任务状态变化)

请求示例

POST https://{Endpoint}/v5/iot/{project_id}/subscriptions
Content-Type: application/json
X-Auth-Token: ********
Instance-Id: ********

{
  "subject" : {
    "resource" : "device",
    "event" : "activate"
  },
  "callbackurl" : "https://host:port/deviceActivate",
  "app_id" : "string",
  "channel" : "http"
}

响应示例

Status Code: 201 Created

Content-Type: application/json

{
  "subscription_id" : "5bcaddda-75bf-4623-8c8d-26175c41fcca",
  "subject" : {
    "resource" : "device",
    "event" : "activate"
  },
  "callbackurl" : "https://host:port/deviceActivate",
  "channel" : "http"
}

错误码

HTTP状态码

错误码

错误码英文描述

错误码中文描述

处理建议

400

IOTDA.009002

The resource model does not exist.

资源模型不存在

请确认请求参数中是否携带resource和event,或者notifyType。

IOTDA.009005

The request callbackurl is invalid.

请求中的callbackurl地址不合法

请排查请求中的callbackurl参数是否符合华为云文档要求。

IOTDA.009006

The subscription subject already exists.

该订阅记录已经存在

该订阅已存在,无需再重复订阅。

IOTDA.009007

The request channel is invalid.

请求中channel参数不合法

请排查请求中的channel参数是否符合华为云文档要求。

IOTDA.009010

The resource does not match event.

resource和event不匹配

请排查请求中resource与event参数是否符合华为云文档要求

403

IOTDA.001000

The application does not exist.

该应用不存在

请确定是否已在平台注册应用并检查应用ID是否正确。

IOTDA.001002

Operation not allowed. The application has not been authorized.

该应用没有权限访问

请检查该应用是否已被授权。

IOTDA.001005

Operation not allowed. The parameter 'app_id' is not carried, and the authorized user has more than one applications. Include the parameter 'app_id', or contact Huawei technical support engineers to merge application data.

该用户下有多个应用的情况下未携带appId访问接口

请携带对应的appId或联系华为工程师合并应用数据。

IOTDA.001006

Operation not allowed. Application not found by authorized user or the authorized user has no application.

用户下没有应用或应用与用户不匹配

请排查用户下是否有应用或是否有指定的应用。

IOTDA.001007

Operation not allowed. The application does not belong to the authorized user.

应用与用户信息不匹配

请排查该用户下是否有指定的应用。

IOTDA.009001

The count of subscription subject exceeds the limit.

应用订阅记录数达到上限。

请删除多余订阅记录,该应用订阅数量已达到上线。

IOTDA.009008

The query count exceeds the upper limit.

查询数量超过最大限制

请排查请求参数是否符合华为云文档要求。

500

IOTDA.000001

Internal server error.

服务器内部错误

请联系华为工程师分析解决。

IOTDA.000020

Decrypt IAM token failed.

IAM Token解析失败

请联系华为工程师分析解决。

相关文档