Updated on 2023-11-14 GMT+08:00

Create a Device Tunnel

Function

You can use this API to create a tunnel (WebSocket protocol) through which the application and device can transmit data.

  • This API is not supported by Basic editions.

  • After this API is called, the IoT platform delivers the tunnel address and secret to an MQTT/MQTTS device for setting up WebSocket connections and returns the tunnel address and secret to the application.

  • Multiple tunnels cannot be created on a device.

  • For details, see [Remote Login] (https://support.huaweicloud.com/intl/en-us/usermanual-iothub/iot_01_00301.html).

Debugging

You can debug this API through automatic authentication in API Explorer or use the SDK sample code generated by API Explorer.

URI

POST /v5/iot/{project_id}/tunnels

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Parameter description: project ID. For details about how to obtain the project ID, see Obtaining a Project ID.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

No

String

Parameter description: user token. You can obtain the token by calling the IAM API Obtaining a User Token Through Password Authentication. In the returned response header, X-Subject-Token is the desired user token. For details about how to obtain the token, see Token Authentication.

Instance-Id

No

String

Parameter description: instance ID. Unique identifier of each instance in the physical multi-tenant scenario. Mandatory for Professional editions and recommended in other cases. Log in to the IoTDA console and choose Overview in the navigation pane to view the instance ID. For details, see Viewing Instance Details.

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

device_id

Yes

String

Parameter description: device ID.

Response Parameters

Status code: 201

Table 4 Response body parameters

Parameter

Type

Description

tunnel_id

String

Tunnel ID.

tunnel_access_token

String

Authentication information.

expires_in

Integer

Validity period of authentication information, in seconds.

Minimum: 0

Maximum: 86400000

tunnel_uri

String

WebSocket access address.

Minimum: 1

Maximum: 2048

Example Requests

Creates a device tunnel whose device ID is b64b7a625b84c1334befb648b_test.

POST https://{endpoint}/v5/iot/{project_id}/tunnels

{
  "device_id" : "b64b7a625b84c1334befb648b_test"
}

Example Responses

Status code: 201

The device tunnel is successfully created.

{
  "tunnel_id" : "d144a524-1997-4b99-94bf-f27128da8a34",
  "tunnel_access_token" : "MIIDkgYJKoZIhvcNAQcCoIIDgzCCXXXXX",
  "expires_in" : 86400,
  "tunnel_uri" : "wss://tunnel.st1.iotda-app.cn-XXX.myhuaweicloud.com/v5/iot/tunnels/XXX/source-connect"
}

Status Codes

Status Code

Description

201

The device tunnel is successfully created.

400

Invalid value.

403

Authentication failed.

Error Codes

See Error Codes.