Batch Create Devices


Batch create devices. This API is only available if 2.3 Cumulative Update 3 has been applied to your environment. For the full change list of 2.3 Cumulative Update 3, see Cumulative Update 3.

Operation Permissions

Required Authorization

Required Operation Permission

Device Management

Full Access

Prerequisite

Ensure the product to create this device under exists.

Request Format

POST https://{apigw-address}/connect-service/v2.0/devices?action=batchCreate

Request Parameters (URI)

Name

Location (Path/Query)

Mandatory/Optional

Data Type

Description

orgId

Query

Mandatory

String

The organization ID which the asset belongs to. How to get orgId>>

Request Parameters (Body)

Name

Mandatory/Optional

Data Type

Description

deviceList

Mandatory

Array of CreateOption Structs

The list of devices to create. For more details, see CreateOption Struct

Response Parameters

Name

Data Type

Description

data

Array of EnosBatchEachData Struct

The list of success or failure messages. For more information, see EnosBatchEachData Struct.

successSize

Integer

The number of sucessfully created devices.

totalSize

Integer

The total number of devices to be created.

Error Codes

Code

Message

Description

11702

DeviceKey existed

The deviceKey already exists in the database (when deviceKey is provided).

11714

Generate deviceKey failed

The key of the device cannot be assigned temporarily (when the deviceKey is not provided). Please try again.

11739

Exceed max device size

A product can have a max of 10,000 devices under it. This operation will exceed the limit.

Samples

Request Sample

url:https://{apigw-address}/connect-service/v2.1/devices?action=batchCreate&orgId=yourOrgId
method: POST
requestBody:
{
  "deviceList":
  [
    {
      "productKey": "yourProductKey",
      "deviceName":
      {
        "defaultValue": "Device Name",
        "i18nValue":
        {
            "zh_CN": "设备名称",
            "en_US": "Device Name"
        }
      },
      "timezone": "+08:00",
      "deviceAttributes":
      {
        "serial": 111111
      },
      "deviceDesc": "Device description",
      "deviceTags":
      {
        "tag1": "tag value"
      }
    },
    {
      "productKey": "yourProductKey2",
      "deviceName":
      {
        "defaultValue": "Device Name 2",
        "i18nValue":
        {
            "zh_CN": "设备名称 2",
            "en_US": "Device Name 2"
        }
      },
      "timezone": "+08:00",
      "deviceAttributes":
      {
        "serial": 222222
      },
      "deviceDesc": "Device description 2",
      "deviceTags":
      {
        "tag2": "tag value"
      }
    }
  ]
}

Return Sample

{
  "code": 0,
  "msg": "OK",
  "requestId": "21938538-9266-495d-b1b9-b15597ad3e1f",
  "data":
  [
    {
      "code": 0,
      "msg": "OK",
      "data":
      {
        "assetId": "yourAssetId",
        "productKey": "yourProductKey",
        "deviceKey": "yourDeviceKey",
        "deviceSecret": "yourDeviceSecret"
      }
    },
    {
      "code": 0,
      "msg": "OK",
      "data":
      {
        "assetId": "yourAssetId2",
        "productKey": "yourProductKey2",
        "deviceKey": "yourDeviceKey2",
        "deviceSecret": "yourDeviceSecret2"
      }
    }
  ],
  "successSize": 2,
  "totalSize": 2
}

Java SDK Sample

import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.api.common.constant.common.StringI18n;
import com.envisioniot.enos.connect_service.v2_1.device.BatchCreateDeviceRequest;
import com.envisioniot.enos.connect_service.v2_1.device.BatchCreateDeviceResponse;
import com.envisioniot.enos.connect_service.v2_1.device.CreateDeviceRequest;
import com.envisioniot.enos.connect_service.v2_1.device.CreateDeviceResponse;
import com.envisioniot.enos.connect_service.vo.DeviceCreateVo;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class CreateDeviceBatch {
    public static void main(String[] args) {
      final String appKey = "yourAppKey";
      final String appSecret = "yourAppSecret";
      final String serverUrl = "yourServerUrl";
      final String orgId = "yourOrgID";

      BatchCreateDeviceRequest request = new BatchCreateDeviceRequest();
      request.setOrgId(orgId);

      DeviceCreateVo deviceCreateVo = new DeviceCreateVo();
      deviceCreateVo.setProductKey("yourProductKey");
      StringI18n stringI18n = new StringI18n();
      stringI18n.setDefaultValue("Device Name");
      Map<String, Object> deviceAttributes = new HashMap<>();
      //deviceAttributes.put("serial",111111);
      Map<String, String> deviceTags = new HashMap<>();
      deviceTags.put("tag1", "tag value");
      deviceCreateVo.setDeviceAttributes(deviceAttributes);
      deviceCreateVo.setDeviceTags(deviceTags);
      deviceCreateVo.setTimezone("+08:00");
      deviceCreateVo.setDeviceName(stringI18n);

      DeviceCreateVo deviceCreateVo2 = new DeviceCreateVo();
      deviceCreateVo2.setProductKey("yourProductKey2");
      StringI18n stringI18n2 = new StringI18n();
      stringI18n2.setDefaultValue("Device Name 2");
      Map<String, Object> device2Attributes = new HashMap<>();
      //device2Attributes.put("serial",222222);
      Map<String, String> device2Tags = new HashMap<>();
      device2Tags.put("tag2", "tag value");
      deviceCreateVo2.setDeviceAttributes(device2Attributes);
      deviceCreateVo2.setDeviceTags(device2Tags);
      deviceCreateVo2.setTimezone("+08:00");
      deviceCreateVo2.setDeviceName(stringI18n2);
      request.setDeviceList(Arrays.asList(deviceCreateVo,deviceCreateVo2));

      BatchCreateDeviceResponse response = Poseidon.config(PConfig.init().appKey(appKey).appSecret(appSecret).debug())
        .url(serverUrl)
        .getResponse(request, BatchCreateDeviceResponse.class);
  }
}