JavaScript client library for the Arduino IoT Cloud REST API enabling programmatic management of devices, things, properties, and time-series data
Complete device lifecycle management including creation, configuration, certificate management, and over-the-air updates. The Arduino IoT Client provides four specialized API classes for comprehensive device management.
Primary device management functionality for CRUD operations on IoT devices.
class DevicesV2Api {
/**
* Create a new IoT device
* @param createDevicesV2Payload - Device creation parameters
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoDevicev2> - Created device object
*/
devicesV2Create(createDevicesV2Payload: CreateDevicesV2Payload, opts?: any): Promise<ArduinoDevicev2>;
/**
* List all devices accessible to the authenticated user
* @param opts - Optional parameters including organization ID and pagination
* @returns Promise<ArduinoDevicev2[]> - Array of device objects
*/
devicesV2List(opts?: any): Promise<ArduinoDevicev2[]>;
/**
* Get detailed information about a specific device
* @param id - Device ID
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoDevicev2> - Device object with full details
*/
devicesV2Show(id: string, opts?: any): Promise<ArduinoDevicev2>;
/**
* Update device configuration and properties
* @param id - Device ID
* @param devicev2 - Updated device configuration
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoDevicev2> - Updated device object
*/
devicesV2Update(id: string, devicev2: Devicev2, opts?: any): Promise<ArduinoDevicev2>;
/**
* Delete a device permanently
* @param id - Device ID
* @param opts - Optional parameters including organization ID
* @returns Promise<void>
*/
devicesV2Delete(id: string, opts?: any): Promise<void>;
/**
* Get device events and status history
* @param id - Device ID
* @param opts - Optional parameters including date range and organization ID
* @returns Promise<ArduinoDevicev2StatusEvents> - Device events
*/
devicesV2GetEvents(id: string, opts?: any): Promise<ArduinoDevicev2StatusEvents>;
/**
* Get current device properties and values
* @param id - Device ID
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoDevicev2properties[]> - Device properties
*/
devicesV2GetProperties(id: string, opts?: any): Promise<ArduinoDevicev2properties[]>;
/**
* Get device status events and connection history
* @param id - Device ID
* @param opts - Optional parameters including date range and organization ID
* @returns Promise<ArduinoDevicev2StatusEvents> - Status events
*/
devicesV2GetStatusEvents(id: string, opts?: any): Promise<ArduinoDevicev2StatusEvents>;
/**
* Get time series data for a specific device property
* @param id - Device ID
* @param pid - Property ID
* @param opts - Optional parameters including time range and organization ID
* @returns Promise<ArduinoSeriesResponse> - Time series data
*/
devicesV2Timeseries(id: string, pid: string, opts?: any): Promise<ArduinoSeriesResponse>;
/**
* Update device property values in bulk
* @param id - Device ID
* @param propertiesValues - Property values to update
* @param opts - Optional parameters including organization ID
* @returns Promise<void>
*/
devicesV2UpdateProperties(id: string, propertiesValues: PropertiesValues, opts?: any): Promise<void>;
}Usage Examples:
import ArduinoIotClient from '@arduino/arduino-iot-client';
const devicesApi = new ArduinoIotClient.DevicesV2Api();
// Create a new device
const newDevice = await devicesApi.devicesV2Create({
name: "My IoT Sensor",
fqbn: "arduino:samd:nano_33_iot",
type: "mkrwifi1010"
});
// List all devices
const allDevices = await devicesApi.devicesV2List();
console.log('Total devices:', allDevices.length);
// Get device details
const deviceDetails = await devicesApi.devicesV2Show(newDevice.id);
console.log('Device status:', deviceDetails.connectionType);
// Update device
const updatedDevice = await devicesApi.devicesV2Update(newDevice.id, {
name: "Updated Sensor Name",
webhookActive: true,
webhookUri: "https://example.com/webhook"
});Device certificate management for secure device authentication and communication.
class DevicesV2CertsApi {
/**
* Create a new certificate for a device
* @param id - Device ID
* @param createDevicesV2CertsPayload - Certificate creation parameters
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoDevicev2Cert> - Created certificate
*/
devicesV2CertsCreate(id: string, createDevicesV2CertsPayload: CreateDevicesV2CertsPayload, opts?: any): Promise<ArduinoDevicev2Cert>;
/**
* List all certificates for a device
* @param id - Device ID
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoDevicev2Cert[]> - Array of certificates
*/
devicesV2CertsList(id: string, opts?: any): Promise<ArduinoDevicev2Cert[]>;
/**
* Get certificate details
* @param id - Device ID
* @param cid - Certificate ID
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoDevicev2Cert> - Certificate details
*/
devicesV2CertsShow(id: string, cid: string, opts?: any): Promise<ArduinoDevicev2Cert>;
/**
* Update certificate configuration
* @param id - Device ID
* @param cid - Certificate ID
* @param devicev2Cert - Updated certificate data
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoDevicev2Cert> - Updated certificate
*/
devicesV2CertsUpdate(id: string, cid: string, devicev2Cert: Devicev2Cert, opts?: any): Promise<ArduinoDevicev2Cert>;
/**
* Delete a device certificate
* @param id - Device ID
* @param cid - Certificate ID
* @param opts - Optional parameters including organization ID
* @returns Promise<void>
*/
devicesV2CertsDelete(id: string, cid: string, opts?: any): Promise<void>;
}Firmware update management for remote device updates.
class DevicesV2OtaApi {
/**
* Send OTA firmware update via binary URL
* @param id - Device ID
* @param devicev2Otabinaryurl - OTA binary URL configuration
* @param opts - Optional parameters including organization ID
* @returns Promise<void>
*/
devicesV2OtaSend(id: string, devicev2Otabinaryurl: Devicev2Otabinaryurl, opts?: any): Promise<void>;
/**
* Upload firmware file for OTA update
* @param id - Device ID
* @param otaFile - Firmware file to upload
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoDevicev2Otaupload> - Upload response
*/
devicesV2OtaUpload(id: string, otaFile: File, opts?: any): Promise<ArduinoDevicev2Otaupload>;
/**
* Trigger OTA update using URL payload
* @param id - Device ID
* @param devicev2Otaurlpyalod - OTA URL payload
* @param opts - Optional parameters including organization ID
* @returns Promise<void>
*/
devicesV2OtaUrl(id: string, devicev2Otaurlpyalod: Devicev2Otaurlpyalod, opts?: any): Promise<void>;
}Device password and authentication management.
class DevicesV2PassApi {
/**
* Set device password for authentication
* @param id - Device ID
* @param devicev2Pass - Password configuration
* @param opts - Optional parameters including organization ID
* @returns Promise<void>
*/
devicesV2PassSet(id: string, devicev2Pass: Devicev2Pass, opts?: any): Promise<void>;
/**
* Get device password information (not the actual password)
* @param id - Device ID
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoDevicev2Pass> - Password info
*/
devicesV2PassGet(id: string, opts?: any): Promise<ArduinoDevicev2Pass>;
/**
* Verify device password
* @param id - Device ID
* @param checkDevicesV2PassPayload - Password to verify
* @param opts - Optional parameters including organization ID
* @returns Promise<void>
*/
devicesV2PassCheck(id: string, checkDevicesV2PassPayload: CheckDevicesV2PassPayload, opts?: any): Promise<void>;
/**
* Delete device password
* @param id - Device ID
* @param opts - Optional parameters including organization ID
* @returns Promise<void>
*/
devicesV2PassDelete(id: string, opts?: any): Promise<void>;
}Device organization and categorization through tags.
class DevicesV2TagsApi {
/**
* Create or update a device tag
* @param id - Device ID
* @param tag - Tag to create or update
* @param opts - Optional parameters including organization ID
* @returns Promise<void>
*/
devicesV2TagsUpsert(id: string, tag: Tag, opts?: any): Promise<void>;
/**
* List all tags for a device
* @param id - Device ID
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoTags> - Device tags
*/
devicesV2TagsList(id: string, opts?: any): Promise<ArduinoTags>;
/**
* Delete a specific device tag
* @param id - Device ID
* @param key - Tag key to delete
* @param opts - Optional parameters including organization ID
* @returns Promise<void>
*/
devicesV2TagsDelete(id: string, key: string, opts?: any): Promise<void>;
}interface ArduinoDevicev2 {
connectionType?: string;
createdAt?: Date;
deviceId?: string;
fqbn?: string;
href?: string;
id?: string;
lastActivityAt?: Date;
name?: string;
organizationId?: string;
otaAvailable?: boolean;
otaCompatible?: boolean;
requiredWifiCredentials?: boolean;
serial?: string;
type?: string;
updatedAt?: Date;
userId?: string;
webhookActive?: boolean;
webhookUri?: string;
}
interface CreateDevicesV2Payload {
connectionType?: string;
fqbn?: string;
name?: string;
serial?: string;
softDeleted?: boolean;
type?: string;
userId?: string;
wifiCredentialsId?: string;
}
interface ArduinoDevicev2Cert {
ca?: string;
compressed?: ArduinoCompressedv2;
createdAt?: Date;
deviceId?: string;
enabled?: boolean;
id?: string;
updatedAt?: Date;
}
interface ArduinoCompressedv2 {
ca?: string;
cert?: string;
key?: string;
}
interface ArduinoDevicev2StatusEvents {
events?: ArduinoDevicev2StatusEvent[];
}
interface ArduinoDevicev2StatusEvent {
deviceId?: string;
eventType?: string;
id?: string;
timestamp?: Date;
}
interface ArduinoDevicev2properties {
lastValue?: any;
lastValueUpdatedAt?: Date;
name?: string;
permission?: PropertyPermission;
propertyId?: string;
type?: string;
updateParameter?: number;
updateStrategy?: PropertyUpdateStrategy;
variableName?: string;
}
interface ArduinoDevicev2Pass {
password?: string;
}
interface ArduinoTags {
[key: string]: string;
}
interface Tag {
key: string;
value: string;
}Complete Device Management Example:
import ArduinoIotClient from '@arduino/arduino-iot-client';
// Initialize APIs
const devicesApi = new ArduinoIotClient.DevicesV2Api();
const devicesV2CertsApi = new ArduinoIotClient.DevicesV2CertsApi();
const devicesV2TagsApi = new ArduinoIotClient.DevicesV2TagsApi();
const devicesV2PassApi = new ArduinoIotClient.DevicesV2PassApi();
// Create and configure a complete device setup
async function setupDevice() {
try {
// Create device
const device = await devicesApi.devicesV2Create({
name: "Production Sensor",
fqbn: "arduino:samd:nano_33_iot",
type: "mkrwifi1010",
connectionType: "wifi"
});
console.log('Created device:', device.id);
// Set device password
await devicesV2PassApi.devicesV2PassSet(device.id, {
password: "secure-device-password"
});
// Add tags for organization
await devicesV2TagsApi.devicesV2TagsUpsert(device.id, {
key: "environment",
value: "production"
});
await devicesV2TagsApi.devicesV2TagsUpsert(device.id, {
key: "location",
value: "warehouse-a"
});
// Create certificate for secure communication
const cert = await devicesV2CertsApi.devicesV2CertsCreate(device.id, {
enabled: true
});
console.log('Device setup complete with certificate:', cert.id);
return device;
} catch (error) {
console.error('Device setup failed:', error);
throw error;
}
}Install with Tessl CLI
npx tessl i tessl/npm-arduino--arduino-iot-client