Z-Wave API

The VAPIX® Z-Wave™ API provides the information that makes it possible to set up and use the wireless communications protocol found on your Axis device.

Overview

The API implements zwave.cgi as its communications interface and supports the following methods:

MethodDescription
setEnabledEnables/disables the Z-Wave functionality.
getEnabledRetrieves the currently enabled state of Z-Wave.
addNodeAdds a node to the network. Please note that this is an asynchronous operation, which means that you must use getOperation to find out when the operation is completed.
removeNodeRemoves a node from the network. Please note that this is an asynchronous operation, which means that you must use getOperation to find out when the operation is completed.
getOperationRetrieves the current network operation.
abortOperationAborts the current network operation. Please note that this is an asynchronous operation, which means that you must use getOperation to find out when the operation is completed.
resetNetworkResets the network operation back to its factory default settings. Please note that this is an asynchronous operation, which means that you must use getOperation to find out when the operation is completed.
refreshNetworkRefreshes the network operation (topology, routing table, etc.). Please note that this is an asynchronous operation, which means that you must use getOperation to find out when the operation is completed.
getNodeListRetrieves a list containing all, or a subset, of existing network nodes.
getEndpointListLists the node endpoints.
getEndpointInterfaceListLists and describes the endpoint interfaces.
getSummaryListRetrieves a subset of the information obtained with getNodeList, getEndpointList and getEndpointInterfaceList on all network nodes and endpoints.
replaceFailedNodeReplaces a failed network node. Please note that this is an asynchronous operation, which means that you must use getOperation to find out when the operation is completed.
removeFailedNodeRemoves a failed network node. Please note that this is an asynchronous operation, which means that you must use getOperation to find out when the operation is completed.
setEndpointInfoSets the name and/or location for an endpoint.
getS2RequestedKeysQueries for requested S2 keys.
setS2GrantKeysGrants keys to a new node while using the S2 mode.
getS2DeviceSpecificKeyRetrieves the S2 device specific key.
acceptS2Accepts or rejects a newly added node while using the S2 mode.
refreshNodeRefreshes a single Z-Wave network node. Please note that this is an asynchronous operation, which means that you must use getOperation to find out when the operation is completed.
addToProvisioningListAdds an entry to the provisioning list.
removeFromProvisioningListRemoves an entry from the provisioning list.
getProvisioningListLists all provisioning entries.
getBatteryStateRetrieves the current battery state from the end node or the last known state from the cache.
getMultilevelSensorStateRetrieves the current state(s) of the multilevel sensor from the end node or the last known state(s) from the cache.
getMultilevelSensorSupportRetrieves the supported sensor types from the end node or the cached supported sensor types.
getMultilevelSensorUnitSupportRetrieves the supported sensor units from the end node or the cached supported sensor units.
getConfigurationRetrieves the configuration parameter value from the end node or the last known value from the cache.
setConfigurationSets the value of a configuration parameter.
getBinarySwitchStateRetrieves the current state of the binary switch from the end node or the last known state from the cache.
setBinarySwitchStateTurns the binary switch ON or OFF.
getBasicStateRetrieves the current interface value mapped to the basic interface from the node or the last known state from the cache.
setBasicStateSets the interface value mapped to the basic interface.
addAssociationAdds a device to a group communicating directly with each other.
removeAssociationRemoves a device from a group communicating directly with each other.
getAssociationDataRetrieves association data for a group of devices capable of communicating with each other from either the end node or the cache.
getSupportedGroupingsRetrieves a list of group IDs supported by an end node from either the end node itself or the cache.
getWakeUpInfoRetrieves the wake-up information from the end node or the most recent wake-up information from the cache.
setWakeUpInfoSets the wake-up interval and selects the node that should be notified.
getMeterReadingRetrieves the meter readings from the end node or the most recent meter reading from the cache.
getMeterCapabilitiesRetrieves the meter capabilities information from the end node or the most recent meter capabilities from the cache.
resetMeterResets all accumulated values stored in the meter device.
getIndicatorValueRetrieves the indicator values from the end node or the most recent indicator value from the cache.
setIndicatorValueSets an indicator value.
getIndicatorCapabilitiesRetrieves all supported indicator information from the cache.
getFirmwareInfoRetrieves firmware information from the end node or the most recent information from the cache.
requestFirmwareUpdateTriggers a new firmware update request for an end node.
getFirmwareUpdateStatusRetrieves the firmware update status for an end node.
requestFirmwareBackupTriggers a new firmware backup request for an end node.
getFirmwareBackupStatusRetrieves the firmware backup status for an end node.
requestFirmwareActivationTriggers a new firmware activation request for an end node.
getFirmwareActivationStatusRetrieves the firmware activation status for an end node.
getNotificationCapabilitiesRetrieves the supported alarm/notification types from either the end node or the most recent types from the cache.
getNotificationEventSupportRetrieves the supported events of a specified alarm/notification type from either an end node or the cache.
getNotificationStateRetrieves the state of the alarm/notification device or a pending notification from either the device or the cache.
setNotificationStateSets the state of the specified Z-Wave alarm type or clears out a persistent notification.
getCentralSceneCapabilitiesRetrieves capabilities like the maximum number of supported scenes along with their supported key attributes from either the end node or the cache.
getCentralSceneConfigurationRetrieves the value of the scene notification configuration from an end node.
setCentralSceneConfigurationConfigures the scene notification settings.
getCentralSceneStateRetrieves the cached central scene data.
getAntiTheftUnlockStateRetrieves the Anti-Theft Unlock state from either the end node or the cache.
setAntiTheftUnlockStateUnlocks a node.
setTemperatureThresholdSets the temperature threshold for temperature events.
getTemperatureThresholdRetrieves the temperature threshold settings from a temperature event.
setIoFunctionBinarySwitchSets I/O to Binary-switch.
setIoFunctionOneShotSets I/O to One-shot.
setIoFunctionSetResetSets I/O to Set/Reset.
setIoFunctionToggleSet I/O to Toggle.
removeIoFunctionRemoves the I/O functionality.
getIoConfigurationRetrieves the current I/O configuration from an end node.
getAllNotificationEventSupportRetrieves the supported events from a specified end node.
getSupportedVersionsRetrieves the API versions supported by your product.

General concepts

Nodes, endpoints and interfaces

A Z-Wave network consists of devices (nodes) that can be either controllers or be controlled. Every node has a unique Node ID and a Home ID that identifies the network. This means that nodes with different Home IDs are unable to communicate with each other. Every node in a Z-Wave network has at least one endpoint with an interface to represent the device and its functionality.

Operations

Management of the Z-Wave network and the nodes in a network are done through sequential operations. Examples of such operations are “Add node”, “Remove node”, “Reset network” and ”Abort operation”. The following tables contains the available operations and statuses.

Available operations
OperationOperation codeDescription
operationNone0No operation is in progress.
operationInitialize1Initializes the operation.
operationAddNode2Adds a node.
operationRemoveNode3Removes a node.
operationReplaceFailedNode4Replaces a failed node.
operationRemoveFailedNode5Removes a failed node.
operationRefreshNetwork7Refreshes the network.
operationResetNetwork8Restores the network settings back to factory default.
operationRefreshNode13Refreshes the node info.
Available operation statuses
Operation statusStatus codeDescription
GenericGeneric status codes
operationStatusNone0Nothing to report.
operationStatusError-1Error.
operationStatusNoNet-4The network is not initialized.
operationStatusAborted-5The network operation is aborted.
Add nodeStatus codes for add node
addNodeStatusProtocolDone1The protocol part is completed.
addNodeStatusGetNodeInfo2Retrieve detailed node info.
addNodeStatusProtocolStart3Starts the add SmartStart Z-Wave protocol operation.
addNodeStatusRequestedKeyReady11(S2 only) Device Requested Key info is ready.
addNodeStatusDSKReady12(S2 only) Device DSK info is ready.
addNodeStatusOnBehalfRequestedKeyReady21(S2 only) Device Requested Key info is ready.
addNodeStatusOnBehalfDSKReady22(S2 only) Device DSK info is ready.
Remove nodeStatus codes for remove node
removeNodeStatusLearnReady1Ready to remove a node.
removeNodeStatusFound2Found a node that can be removed.
removeNodeStatusRemoving3Remove the node.
Replace failed nodeStatus codes for replace a failed node
replaceNodeStatusReady1Ready to replace a failed node.
replaceNodeStatusProtocolDone2Protocol part finished.
replaceNodeStatusSecureInclusion3Add node securely.
replaceNodeStatusGetNodeInfo4Retrieve detailed node information.
Network refreshStatus codes for network refresh
networkRefreshStatusTopology1Network topology refresh started.
networkRefreshStatusNeighbor2Node neighbor refresh started.
networkRefreshStatusGetNodeInfo3Node information refresh started.

S0 and S2

S0 and S2 are layers of security that encrypts the data sent between devices on a Z-Wave network. It has been mandatory to use S2 on new devices since 2017. S2 can be divided into unauthenticated and authenticated, the latter including a unique authentication code. A DSK, or Device Specific Key, is used for the authentication.

SmartStart

This feature allows the user to quickly include end devices when turning them on for the first time by adding devices to a provisioning list, thus allowing a manufacturer or service provider to prepare the installation in advance. The end node will announce itself as soon as it is turned on, which results in the automatic inclusion and “out of the box” experience for the end user.

Command Class

Every device function include groups of commands organized into Command Classes:

  • A node can support a command class, which means that the node will implement all Command Class functions.

  • A node can control a Command Class, which means that the node is able to interact with other nodes by using a subset of the commands available in a Command Class

The following table details some of the available Command Classes.

Controlled Command Classes
Command ClassShort NameNote
Anti-Theft Unlock Command ClassantiTheftUnlock
Association Command Classassociation
Basic Command Classbasic
Battery Command Classbattery
Binary Switch Command ClassbinarySwitch
Central Scene Command ClasscentralScene
Configuration Command Classconfiguration
Firmware Update Meta Data Command ClassfirmwareUpdate
Indicator Command Classindicator
Meter Command Classmeter
Multilevel Sensor Command ClassmultilevelSensor
Alarm/Notification Command ClassnotificationPreviously called Alarm Command Class before it was renamed/overloaded by Notification Command Class.
Wake Up Command ClasswakeUp

Device Classes

Z-Wave devices are organized into three layers of device classes, with a certain set of requirements that needs to be supported, including mandatory Command Classes. The top layer, also known as the Basic Device Class, defines a device as either a portable controller, a static controller, an end node or a routing end node. The second layer is the Generic Device Class, which defines the main functionality. Finally, to define different variants of a given Generic Device Class, there is the Specific Device Classes.

Role Type

A Z-Wave device can have a Role Type to indicate the expectations regarding battery and network functionality. See the table Z-Wave+ Role Type identifiers below for a complete list of Role Type identifiers.

Sensor types
Sensor TypeShort NameUnit(s) NameUnit(s) Notes
Temperature SensortempSensorcelsius
fahrenheit
General Purpose SensorgpSensorpercentage
dimensionless
Luminance SensorluminSensorpercentage
lux
Power SensorpowerSensorW
btuPerHour
Btu/h
Humidity SensorhumidSensorpercentage
gramPerCubicMeter
g/m3
Velocity SensorveloSensormeterPerSecond
milesPerHour
m/s, mph
Direction SensordirectionSensordegrees0 to 360 degrees
0 = no wind
90 = east
180 = south
270 = west
360 = north
Atmospheric Pressure SensoratmSensorkPa
inHg
Barometric Pressure SensorbaroSensorkPa
inHg
Solar Radiation SensorsolarSensorwattPerSquareMeterW/m2
Dew Point SensordewSensorcelsius
fahrenheit
Rain Rate SensorrainSensormillimeterPerHour
inchesPerHour
mm/h
in/h
Tide Level SensortideSensorm
feet
Weight SensorweightSensorkg
pound
Voltage SensorvoltageSensorV
mV
Current SensorcurrentSensorA
mA
CO2–level Sensorco2Sensorppm
Air Flow SensorairSensorcubicMeterPerHour
cfm
m3/h
cubic feet per minute
Tank Capacity SensortankSensorl
cbm
usGallons
US Gallons
Distance SensordistSensorm
cm
feet
Angle Position SensorangleSensorpercentage
degreeNorth
degreeSouth
degrees relative to north/south pole of standing eye view
Rotation SensorrotationSensorrpm
Hz
Water Temperature SensorwaterTempSensorcelsius
fahrenheit
Soil Temperature SensorsoilTempSensorcelsius
fahrenheit
Seismic Intensity SensorseismicIntSensormercalli
europeanMacroseismic
liedu
shindo
Seismic Magnitude SensorseismicMagSensorML
MW
MS
MB
Ultraviolet SensoruvSensoruvIndexUV index
Electrical Resistivity SensorelecResistivitySensorohmMeter
Electrical Conductivity SensorelecCondSensorsiemensPerMeterS/m
Loudness SensorloudnessSensordB
dBA
Moisture SensormoistSensorpercentage
volumeWaterContent
ohm
waterActivity
m3/m3
aw
Frequency SensorfrequencySensorHz
kHz
Time SensortimeSensors
Target Temperature SensortargetTempSensorcelsius
fahrenheit
Particulate Matter 2.5 Sensorpm2_5SensormolePerCubicMeter
microgramPerCubicMeter
mol/m3
ug/m3
Formaldehyde CH20–level Sensorch2oSensormolePerCubicMetermol/m3
Radon Concentration SensorradonSensorbecquerelPerCubicMeter
picocuriesPerLiter
bq/m3
pCi/L
Methane Density CH4 Sensorch4SensormolePerCubicMetermol/m3
Volatile Organic Compound SensorvocSensormolePerCubicMeter
ppm
mol/m3
Carbon Monoxide CO-level sensorcoLvlSensormolePerCubicMeter
ppm
mol/m3
Soil Humidity Sensor soilHumidSensorpercentage
Soil Reactivity SensorsoilReactivitySensorpH
Soil Salinity SensorsoilSalinitySensormolePerCubicMetermol/m3
Heart Rate SensorheartRateSensorbpm
Blood Pressure SensorbloodPressureSensorsystolicMmHg
diastolicMmHg
Muscle Mass SensormuscleMassSensorkg
Fat Mass SensorfatMassSensorkg
Bone Mass SensorboneMassSensorkg
Total Body Water SensortbwSensorkg
Basal Metabolic Rate SensorbmrSensorJ
Body Mass Index SensorbmiSensorbmiIndex
Acceleration, X-axis SensorxAccSensormeterPerSecondSquarem/s2
Acceleration, Y-axis SensoryAccSensormeterPerSecondSquarem/s2
Acceleration, Z-axis SensorzAccSensormeterPerSecondSquarem/s2
Smoke Density SensorsmokeDensitySensorpercentage
Water Flow SensorwaterFlowSensorliterPerHourl/h
Water Pressure SensorwaterPressureSensorkPa
RF Signal Strength SensorrfSignalSensorRSSI
dBm
Particulate Matter 10 Sensorpm10SensormolePerCubicMeter
microgramPerCubicMeter
mol/m3
ug/m3
Respiratory Rate SensorrespiratoryRateSensorbpm
Relative Modulation Level SensorrelativeModSensorpercentage
Boiler Water Temperature SensorboilerTempSensorcelsius
fahrenheit
Domestic Hot Water Temperature SensordhwTempSensorcelsius
fahrenheit
Outside Temperature SensoroutsideTempSensorcelsius
fahrenheit
Exhaust Temperature SensorexhaustTempSensorcelsius
fahrenheit
Water Chlorine Level SensorchlorineLvlSensormilligramPerLitermg/l
Water Acidity SensorwaterAcidSensorpH
Water Oxidation Reduction Potential SensorwaterOxiRedSensormV
Heart Rate LF/HF SensorlfhfRatioSensorunitless
Motion Direction SensormotionSensordegrees0 to 360 degrees
0 = no motion
90 = east
180 = south
270 = west
360 = north
Applied Force On The SensorappliedForceSensorN
Return Air Temperature SensorreturnAirTempSensorcelsius
fahrenheit
Supply Air Temperature SensorsupplyAirTempSensorcelsius
fahrenheit
Condenser Coil Temperature SensorcondenserCoilTempSensorcelsius
fahrenheit
Evaporator Coil Temperature SensorevaporatorCoilTempSensorcelsius
fahrenheit
Liquid Line Temperature SensorliquidLineTempcelsius
fahrenheit
Discharge Line Temperature SensordischargeLineTempSensorcelsius
fahrenheit
Suction Pressure SensorsuctionPressureSensorkPa
psi
Discharge Pressure SensordischargePressureSensorkPa
psi
Defrost Temperature SensordefrostTempSensorcelsius
fahrenheit
Ozone (O3) SensorozoneSensormicrogramPerCubicMeterug/m3
Sulfur Dioxide (SO2) Sensorso2SensormicrogramPerCubicMeterug/m3
Nitrogen Dioxide (NO2) Sensorno2SensormicrogramPerCubicMeterug/m3
Ammonia (NH3) Sensornh3SensormicrogramPerCubicMeterug/m3
Lead (Pb) SensorpbSensormicrogramPerCubicMeterug/m3
Particulate Matter 1 Sensorpm1SensormicrogramPerCubicMeterug/m3
Person Counter (entering)personEnteringCounterunitless
Person Counter (exiting)personExitingCounterunitless
Unknown(1)unknownN.A
  1. Can be a valid unit for all sensor types.
Basic Device Class identifiers
Basic Device ClassCodeDescription
controller1The node is a portable controller.
staticController2The node is a static controller.
endNode3The node is an end node.
routingEndNode4The node is an end node with routing capabilities.
Generic Device Class identifiers
Generic Device ClassCodeDescription
remoteController1Remote Controller
staticController2Static Controller
avControlPoint3AV Control Point
display4Display
networkExtender5Network extender
appliance6Appliance
sensorNotification7Notification sensor
thermostat8Thermostat
windowCovering9Window covering
repeaterEndNode15Repeater end node
switchBinary16Binary switch
switchMultilevel17Multilevel switch
switchRemote18Remote switch
switchToggle19Toggle switch
zipNode21Zip node
ventilation22Ventilation
securityPanel23Security panel
wallController24Wall controller
sensorBinary32Binary sensor
sensorMultilevel33Multilevel sensor
pulseMeter48Pulse meter
meter49Meter
entryControl64Entry Control
semiInteroperable80Semi interoperable
sensorAlarm161Alarm sensor
nonInteroperable255Non interoperable
Specific Device Class identifiers
Specific Device ClassCodeDescription
Generic
notUsed0Specific Device Class not used
Static Controller
pcController1Central Controller Device Type
sceneController2Scene Controller Device Type
staticInstallerTool3Static Installer Tool Device Type
setTopBox4Set Top Box Device Type
subSystemController5Sub System Controller Device Type
tv6TV Device Type
gateway7Gateway Device Type
Notification Sensor
notificationSensor1Notification Sensor Device Type
Binary Switch
powerSwitch1ON/OFF Power Switch Device Type
colorTunable2Binary Turnable Color Light Device Type
sceneSwitch3Binary Scene Switch Device Type
powerStrip4Power Strip Device Type
siren5Siren Device Type
valve6Valve (open/close) Device Type
irrigationController7Irrigation Controller Device Type
Binary Sensor
routingSensor1Routing Binary Sensor Device Type
Multilevel Sensor
routingSensor1Routing Multilevel Sensor Device Type
chimneyFan2Chimney Fan Device Type
Meter
simpleMeter1Sub Energy Meter Device Type
advancedEnergyControl2Whole Home Energy Meter (Advanced) Device Type
wholeHomeMeterSimple3Whole Home Meter (Simple) Device Type
Z-Wave+ Role Type identifiers
Role TypeCodeDescription
centralStaticController0Central Static Controller
subStaticController1Sub Static Controller
portableController2Portable Controller
portableReportingController3Portable Reporting Controller
portableEndNode4Portable End Node
alwaysOnEndNode5Always On End Node
sleepingReportingEndNode6Reporting Sleeping End Node
sleepingListeningEndNode7Listening Sleeping End Node
networkAwareEndNode8Network Aware End Node
Node Type identifiers
Node TypeCodeDescription
zwavePlusNode0Z-Wave Plus node
zwavePlusForIPRouter1Z-Wave Plus for IP router

Identification

API Discovery

id=zwave

Common examples

Set up a Z-Wave network

This example will show you how to set up a Z-Wave network for the first time. By following this example you will be able to:

  • Add a new device to the Z-Wave network

  • Add a node and give it a niceName

1. Enable Z-Wave.

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "setEnabled",
  "params": {
    "enabled": true
  }
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "setEnabled",
  "data": {}
}
Error response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "setEnabled",
  "error": {
    "code": 2101,
    "message": "Invalid JSON"
  }
}

See setEnabled for further details.

3. Use getEnabled to check if Z-Wave is enabled:

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getEnabled"
}

4. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getEnabled",
  "data": {
    "enabled": true
  }
}

See getEnabled for further details.

5. A node can be added to the network once Z-Wave has been successfully enabled.

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "addNode"
}

6. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "addNode",
  "data": {}
}

See addNode for further details.

7. Check the user manual to see how to set the device you wish to add to the network to learn mode. This will start the inclusion, which means you can then use getOperation to retrieve the current status information:

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getOperation"
}

8. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getOperation",
  "data": {
    "net": {
      "operation": {"code": 0, "name": "operationNone"},
      "operationStatus": {"status": 0, "name": "operationStatusNone"},
      "prevOperation": {"code": 2, "name": "operationAddNode"}
    }
  }
}

See getOperation for further details.

9. The controller is ready when operationAddNode and the status addNodeStatusRequestedKeyReady have been reached in the previous example. You will then be able to make a query to request keys:

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getS2RequestedKeys"
}

10. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  method": "getS2RequestedKeys",
  "data": {
    "net": {
      "security": {
        "requestedKeys": ["S2Key0", "S2Key1", "S0LegacyKey"]
      }
    }
  }
}

See getS2RequestedKeys for further details.

11. The response data can be used in an array of strings with the parameter grantKeys.

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "setS2GrantKeys",
  "params": {
    "grantKeys": ["S2Key0", "S2Key1", "S0LegacyKey"]
  }
}

12. Parse the JSON response.

Successful JSON response
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "setS2GrantKeys",
  "data": {}
}

See setS2GrantKeys for further details.

13. This step uses operationAddNode, and the status addNodeStatusDSKReady, to retrieve device specific keys (DSK) with the following request:

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getS2DeviceSpecificKey"
}

14. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getS2DeviceSpecificKey",
  "data": {
    "net": {
      "security": {
        "pinRequired": true,
        "deviceSpecificKey": "-21937-31611-47722-25563-33846-11886-19448"
      }
    }
  }
}

See getS2DeviceSpecificKey for further details.

15. Add the five digit pin to the device included by the integrator. The following request makes the client accept the newly added node into S2 mode:

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "acceptS2",
  "params": {
    "accept": true,
    "deviceSpecificKey": "09407-21937-31611-47722-25563-33846-11886-19448"
  }
}

16. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "acceptS2",
  "data": {}
}

See acceptS2 for further details.

17. The node will become part of the network and listed alongside all available nodes and their descriptors:

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getNodeList"
}

18. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getNodeList",
  "data": {
    "net": {
      "node": [
        {
          "nodeDescriptor": 1,
          "nodeID": 6,
          "nodeProperty": {
            "securityCapabilities": ["S0", "S2"],
            "includedSecurely": true,
            "supportIdentification": false
          },
          "vendorID": 868,
          "vendorProductID": 1,
          "vendorProductType": 3,
          "deviceCategory": {
            "name": "onOffSwitch",
            "code": 2
          },
          "nodeAliveState": "sleeping",
          "isSecure": true,
          "secureInclusionFailed": false,
          "isFLiRSCapable": false,
          "isSleepCapable": true,
          "s2GrantKeys": ["S2Key0", "S2Key1", "S0LegacyKey"]
        }
      ]
    }
  }
}

See getNodeList for further details.

19. List all endpoints to retrieve the endpoint descriptor with help from the node descriptor received in the previous step . This is useful when you want to give the new node a nicename.

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getEndpointList",
  "params": {
    "nodeDescriptor": 1
  }
}

20. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getEndpointList",
  "data": {
    "node": {
      "nodeDescriptor": 1,
      "endpoint": [
        {
          "endpointDescriptor": 1,
          "endpointID": 2,
          "genericDeviceClass": {
            "name": "switchBinary",
            "code": 16
          },
          "specificDeviceClass": {
            "name": "powerSwitch",
            "code": 1
          },
          "endpointName": "Mini plug",
          "endpointLocation": "Office",
          "zwavePlusVersion": 1,
          "roleType": {
            "name": "alwaysOnSlave",
            "code": 5
          },
          "nodeType": {
            "name": "zwavePlusNode",
            "code": 0
          },
          "installerIcon": 1792,
          "userIcon": 1792,
          "aggregatedEndpointList": []
        }
      ]
    }
  }
}

See getEndpointList for further details.

21. Finally, with the endpoint descriptor in place, the node can be given a nicename.

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "setEndpointInfo",
  "params": {
    "endpointDescriptor": 1,
    "name": "Freezer 1",
    "location": "Kitchen"
  }
}

22. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "setEndpointInfo",
  "data": {}
}

See setEndpointInfo for further details.

Retrieve device information

This example will show you how to retrieve all available information, such as the battery status, for an end device.

1. List all available nodes.

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getNodeList"
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getNodeList",
  "data": {
    "net": {
      "node": [
        {
          "nodeDescriptor": 1,
          "nodeID": 6,
          "nodeProperty": {
            "securityCapabilities": ["S0", "S2"],
            "includedSecurely": true,
            "supportIdentification": false
          },
          "vendorID": 868,
          "vendorProductID": 1,
          "vendorProductType": 3,
          "deviceCategory": {
            "name": "onOffSwitch",
            "code": 2
          },
          "nodeAliveState": "sleeping",
          "isSecure": true,
          "secureInclusionFailed": false,
          "isFLiRSCapable": false,
          "isSleepCapable": true,
          "s2GrantKeys": ["S2Key0", "S2Key1", "S0LegacyKey"]
        }
      ]
    }
  }
}

See getNodeList for further details.

3. The descriptor from the previous example along with the following example will show all information associated with this endpoint.

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getEndpointList",
  "params": {
    "nodeDescriptor": 1
  }
}

4. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getEndpointList",
  "data": {
    "node": {
      "nodeDescriptor": 1,
      "endpoint": [
        {
          "endpointDescriptor": 1,
          "endpointID": 2,
          "genericDeviceClass": {
            "name": "switchBinary",
            "code": 16
          },
          "specificDeviceClass": {
            "name": "powerSwitch",
            "code": 1
          },
          "endpointName": "Mini plug",
          "endpointLocation": "Office",
          "zwavePlusVersion": 1,
          "roleType": {
            "name": "alwaysOnSlave",
            "code": 5
          },
          "nodeType": {
            "name": "zwavePlusNode",
            "code": 0
          },
          "installerIcon": 1792,
          "userIcon": 1792,
          "aggregatedEndpointList": []
        }
      ]
    }
  }
}

See getEndpointList for further details.

5. Next, list all available interfaces for that endpoint:

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getEndpointInterfaceList",
  "params": {
    "endpointDescriptor": 1
  }
}

6. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getEndpointInterfaceList",
  "data": {
    "endpoint": {
      "endpointDescriptor": 1,
      "interface": [
        {
          "interfaceDescriptor": 8388870,
          "name": "battery",
          "simulatedVersion": 1,
          "realVersion": 1,
          "accessSupport": {
            "secure": false,
            "unsecure": true
          }
        }
      ]
    }
  }
}

See getEndpointInterfaceList for further details.

7. Using interfaceDescriptor for the battery interface retrieves the battery state:

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getBatteryState",
  "params": {
    "interfaceDescriptor": 8388870,
    "refresh": true
  }
}

8. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getBatteryState",
  "data": {
    "interface": {
      "interfaceDescriptor": 8388870,
      "battery": {
        "lastUpdated": "202101126T092334",
        "level": 50
      }
    }
  }
}

See getBatteryState for further details.

Retrieve the last known device information

This example will show you how to retrieve the last known information for an available end node.

1. List all available nodes.

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getNodeList"
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getNodeList",
  "data": {
    "net": {
      "node": [
        {
          "nodeDescriptor": 1,
          "nodeID": 6,
          "nodeProperty": {
            "securityCapabilities": ["S0", "S2"],
            "includedSecurely": true,
            "supportIdentification": false
          },
          "vendorID": 868,
          "vendorProductID": 1,
          "vendorProductType": 3,
          "deviceCategory": {
            "name": "onOffSwitch",
            "code": 2
          },
          "nodeAliveState": "sleeping",
          "isSecure": true,
          "secureInclusionFailed": false,
          "isFLiRSCapable": false,
          "isSleepCapable": true,
          "s2GrantKeys": ["S2Key0", "S2Key1", "S0LegacyKey"]
        }
      ]
    }
  }
}

See getNodeList for further details.

3. The descriptor from the previous example, together with the following example, will present all information associated with the endpoint.

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getEndpointList",
  "params": {
    "nodeDescriptor": 1
  }
}

4. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getEndpointList",
  "data": {
    "node": {
      "nodeDescriptor": 1,
      "endpoint": [
        {
          "endpointDescriptor": 1,
          "endpointID": 2,
          "genericDeviceClass": {
            "name": "switchBinary",
            "code": 16
          },
          "specificDeviceClass": {
            "name": "powerSwitch",
            "code": 1
          },
          "endpointName": "Mini plug",
          "endpointLocation": "Office",
          "zwavePlusVersion": 1,
          "roleType": {
            "name": "alwaysOnSlave",
            "code": 5
          },
          "nodeType": {
            "name": "zwavePlusNode",
            "code": 0
          },
          "installerIcon": 1792,
          "userIcon": 1792,
          "aggregatedEndpointList": []
        }
      ]
    }
  }
}

See getEndpointList for further details.

5. This call will list all available interfaces for a particular endpoint:

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getEndpointInterfaceList",
  "params": {
    "endpointDescriptor": 1
  }
}

6. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getEndpointInterfaceList",
  "data": {
    "endpoint": {
      "endpointDescriptor": 1,
      "interface": [
        {
          "interfaceDescriptor": 8388870,
          "name": "battery",
          "simulatedVersion": 1,
          "realVersion": 1,
          "accessSupport": {
            "secure": false,
            "unsecure": true
          }
        }
      ]
    }
  }
}

See getEndpointInterfaceList for further details.

7. The interfaceDescriptor for the battery interface will retrieve the battery state:

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getBatteryState",
  "params": {
    "interfaceDescriptor": 8388870,
    "refresh": true
  }
}

8. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getBatteryState",
  "data": {
    "interface": {
      "interfaceDescriptor": 8388870,
      "battery": {
        "lastUpdated": "202101126T092334",
        "level": 50
      }
    }
  }
}

See getBatteryState for further details.

Replace a failing node

This example will show you how to replace a failed node.

1. List all available nodes.

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getNodeList"
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getNodeList",
  "data": {
    "net": {
      "node": [
        {
          "nodeDescriptor": 1,
          "nodeID": 6,
          "nodeProperty": {
            "securityCapabilities": ["S0", "S2"],
            "includedSecurely": true,
            "supportIdentification": false
          },
          "vendorID": 868,
          "vendorProductID": 1,
          "vendorProductType": 3,
          "deviceCategory": {
            "name": "onOffSwitch",
            "code": 2
          },
          "nodeAliveState": "sleeping",
          "isSecure": true,
          "secureInclusionFailed": false,
          "isFLiRSCapable": false,
          "isSleepCapable": true,
          "s2GrantKeys": ["S2Key0", "S2Key1", "S0LegacyKey"]
        }
      ]
    }
  }
}

See getNodeList for further details.

3. Replace the faulty node.

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "replaceFailedNode",
  "params": {
    "nodeDescriptor": 1
  }
}

4. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "replaceFailedNode",
  "data": {}
}

See replaceFailedNode for further details.

5. Setting the replacing device to learn mode, which in this example is one without S2 security, will integrate it into the Z-Wave network. The method getOperation will then check if the operation is complete and if operationAddNode is replaced by operationNone.

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getOperation"
}

6. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getOperation",
  "data": {
    "net": {
      "operation": {"code": 0, "name": "operationNone"},
      "operationStatus": {"status": 0, "name": "operationStatusNone"},
      "prevOperation": {"code": 2, "name": "operationAddNode"}
    }
  }
}

See getOperation for further details.

7. The network change may cause the network topology, routing tables and internal network structures to no longer be up-to-date. It is therefore recommended to refresh the network with the following step:

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "refreshNetwork"
}

8. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "refreshNetwork",
  "data": {}
}

See refreshNetwork for further details.

Remove a node

This example will show you how to remove or exclude a Z-Wave device with the wrong security class.

1. Put the device to learn mode and exclude it from the network with the following steps:

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "removeNode"
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "removeNode",
  "data": {}
}
Error response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "removeNode",
  "error": {
    "code": 2101,
    "message": "Invalid JSON"
  }
}

See removeNode for further details.

Remove a failed node

This example will show you how to remove a faulty node from the Z-Wave network.

1. Remove the faulty node from the network with the following steps:

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "removeFailedNode",
  "params": {
    "nodeDescriptor": 1
  }
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "removeFailedNode",
  "data": {}
}
Error response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "removeFailedNode",
  "error": {
    "code": 1100,
    "message": "Internal error"
  }
}

See removeFailedNode for further details.

Abort operation

This example will show you how to halt an active operation such as addNode, removeNode or removeFailedNode.

1. Remove a node from the network with the following steps:

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "removeNode"
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "removeNode",
  "data": {}
}
Error response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "removeNode",
  "error": {
    "code": 2101,
    "message": "Invalid JSON"
  }
}

See removeNode for further details.

3. In this example, the node should ultimately not be removed. To abort the operation, the following method should be used before a one minute timeout is completed.

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "abortOperation"
}

4. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "abortOperation",
  "data": {}
}

See abortOperation for further details.

Reset network

This example will show you how to reset the Z-Wave network back to its default factory settings.

1. Reset the network to factory default with the following steps:

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "resetNetwork"
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "resetNetwork",
  "data": {}
}
Error response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "resetNetwork",
  "error": {
    "code": 2101,
    "message": "Invalid JSON"
  }
}

See resetNetwork for further details.

Refresh node

This example will show you how to refresh a specific node in the Z-Wave network instead of the entire network and retrieve the latest node status.

1. Refresh the node with the following steps:

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "refreshNode",
  "params": {
    "nodeDescriptor": 1
  }
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "refreshNode",
  "data": {}
}
Error response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "refreshNode",
  "error": {
    "code": 1100,
    "message": "Internal Error"
  }
}

See refreshNode for further details.

SmartStart

This example will show you how to use the Z-Wave SmartStart feature to get an out-of-the-box experience. See SmartStart for an explanation about provisioning lists and the concept of SmartStart.

1. Add an end node to the provisioning list with the following steps:

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "addToProvisioningList",
  "params": {
    "deviceSpecificKey": "09407-21937-31611-47722-25563-33846-11886-19448"
  }
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "addToProvisioningList",
  "data": {}
}

See addToProvisioningList for further details.

3. Check the provisioning list to make sure the end node was added.

JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "getProvisioningList",
}

4. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getProvisioningList",
  "data": {
    "net": {
      "complete": true,
      "deviceInfo": [
        {
          "deviceSpecificKey": "09407-21937-31611-47722-25563-33846-11886-19448",
          "name": "",
          "location": "",
          "networkStatus": "included"
        }
      ]
    }
  }
}

See getProvisioningList for further details.

Remove device from the provisioning list

This example will show you how to remove a Z-Wave device that was added with the wrong device specific key from the provisioning list. See SmartStart for an explanation about provisioning lists and the concept of SmartStart.

1. Remove the end node from the provisioning list with the following steps:

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "1",
  "context": "context",
  "method": "removeFromProvisioningList",
  "params": {
    "deviceSpecificKey": "09407-21937-31611-47722-25563-33846-11886-19448"
  }
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "removeFromProvisioningList",
  "data": {}
}

SeeremoveFromProvisioningList for further details.

Retrieve supported API versions

This example will show you how to retrieve a list containing the API versions supported by your device.

1. Retrieve a list containing supported API versions with the following steps:

Content-type

application/json

Content-length

<size of JSON input parameters below>

POST http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "context": "context",
  "method": "getSupportedVersions"
}

2. Parse the JSON response.

Successful response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getSupportedVersions",
  "data": {
    "apiVersions": ["1.0"]
  }
}
Error response example
{
  "apiVersion": "1.0",
  "context": "context",
  "method": "getSupportedVersions",
  "error": {
    "code": 1100,
    "message": "Internal error"
  }
}

See getSupportedVersions for further details.

API Specifications

Note
“Only applicable” for response data indicates that it will only be part of the response if the given condition is met.

setEnabled

This method should be used when you want to enable or disable the Z-Wave operation on your device. Please note that it will show up in the system log even if the method fails to start.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setEnabled",
  "params": {
    "enabled": <boolean>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="setEnabled"The method that should be used.
params.enabled=<boolean>The state of the Z-Wave operation. Can be either enabled or disabled.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setEnabled",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setEnabled"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setEnabled",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setEnabled"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getEnabled

This method should be used when you want to check the state of the Z-Wave functionality. true means that Z-Wave is running.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getEnabled"
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getEnabled"The method that should be used.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getEnabled",
  "data": {
    "enabled": <boolean>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getEnabled"The requested method.
data.enabled=<boolean>Indicates if Z-Wave is enabled on your device. Can be either true or false.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getEnabled",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getEnabled"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

addNode

This method should be used when you want to add a new Z-Wave device to the network. In the event that no device is found the process will automatically time out after a minute.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "addNode",
  "params": {
    "deviceSpecificKey": <string>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="addNode"The method that should be used.
params.deviceSpecificKey=<string>
Optional
Needs to be in the following format and only consist of numbers between 0–9: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "addNode",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="addNode"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "addNode",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="addNode"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

removeNode

This method should be used when you want to remove a Z-Wave device from the network. In the event that no device is found the process will automatically time out after a minute.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "removeNode"
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="removeNode"The method that should be used.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "removeNode",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="removeNode"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "removeNode",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="removeNode"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getOperation

This method should be used when you want to retrieve an ongoing Z-Wave network operation. See the Available operations and Available operation statuses tables for available operations and statuses in Operations.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getOperation"
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getOperation"The method that should be used.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getOperation",
  "data": {
    "net": {
      "operation": {"code": <integer>, "name": <string>},
      "operationStatus": {"status": <integer>, "name": <string>},
      "prevOperation": {"code": <integer>, "name": <string>}
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getOperation"The requested method.
data.net.operation.code=<integer>The current network operation.
data.net.operation.name=<string>The nice name for the current operation.
data.net.operationStatus.status=<integer>The progress status of an ongoing network operation.
data.net.operationStatus.name=<string>The nice name for the progress status of an ongoing network operation.
data.net.prevOperation.code=<integer>The previous network operation.
data.net.prevOperation.name=<string>The nice name for the previous network operation.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getOperation",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getOperation"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

abortOperation

This method should be used when you want to abort an ongoing network operation. Please note that the stage at which the operation was aborted may affect how much of the operation becomes undone. For example, the device will have already been added to or removed from the Z-Wave network once the status of addNodeStatusProtocolDone or replaceNodeStatusProtocolDone has been reached. Thus, aborting the operation at this stage will only result in the node being added/removed and you need to execute the removeNode or addNode operations manually to undo the operation completely.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "abortOperation"
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="abortOperation"The method that should be used.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "abortOperation",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="abortOperation"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "abortOperation",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="abortOperation"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

resetNetwork

This method should be used when you want to reset the Z-Wave network to the factory default settings. Please note that all devices that are part of the network need to be removed before they can be added back. This can, for example, be done with removeNode.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "resetNetwork"
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="resetNetwork"The method that should be used.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "resetNetwork",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="resetNetwork"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "resetNetwork",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="resetNetwork"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

refreshNetwork

This method should be used when you want to refresh the Z-Wave network and its network topology, routing table and internal network data structures.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "refreshNetwork"
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="refreshNetwork"The method that should be used.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "refreshNetwork",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="refreshNetwork"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "refreshNetwork",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="refreshNetwork"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getNodeList

This method should be used when you want to retrieve either all of, or a subset of available nodes.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getNodeList",
  "params": {
    "nodeIDs": [<integer>]
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getNodeList"The method that should be used.
params.nodeIDs=[<integer>]
Optional
Retrieves a subset of nodes by specifying a list of node IDs. Any non-existent node ID is ignored, thus the result will only contain either the nodes corresponding to valid nodeIDs or none if no given nodeIDs were valid.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getNodeList",
  "data": {
    "net": {
      "node": [
        {
          "nodeDescriptor": <integer>,
          "nodeID": <integer>,
          "nodeProperty": {
            "securityCapabilities": [<string>],
            "includedSecurely": <boolean>,
            "supportIdentification": <boolean>
          },
          "vendorID": <integer>,
          "vendorProductID": <integer>,
          "vendorProductType": <integer>,
          "deviceCategory": {
            "name": <string>,
            "code": <integer>
          },
          "nodeAliveState": <string>,
          "isSecure": <boolean>,
          "secureInclusionFailed": <boolean>,
          "isFLiRSCapable": <boolean>,
          "isSleepCapable": <boolean>,
          "s2GrantKeys": [<string>]
        }
      ]
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getNodeList"The requested method.
data.net.node=[<object>]Lists the nodes on the Z-Wave network.
data.net.node.nodeDescriptor=<integer>The node descriptor.
data.net.node.nodeID=<integer>The node ID. Can be re-used, but must have a value less than 232 in accordance with current Z-Wave standards.
data.net.node.nodeProperty.securityCapabilities=[<string>]Security capabilities included in the node. Available options are S0 and S2.
data.net.node.nodeProperty.includedSecurely=<boolean>True if securely included, otherwise False.
data.net.node.nodeProperty.supportIdentification=<boolean>True if the node is able to identify itself, e.g. a blinking LED.
data.net.node.vendorID=<integer>The vendor ID of the device (manufacturer specific).
data.net.node.vendorProductID=<integer>The product ID (manufacturer specific).
data.net.node.deviceCategory=<object>The device category. A complete list of the different categories and codes can be found in the Device categories table below.
data.net.node.deviceCategory.name=<string>The name of the device category.
data.net.node.deviceCategory.id=<integer>The device category ID.
data.net.node.nodeAliveState=<string>The node alive state. Valid values are alive, down or sleeping, but unavailable might also show up during the startup.
data.net.node.isSecure=<boolean>True if the node has secure interfaces. False otherwise.
data.net.node.secureInclusionFailed=<integer>True if the secure inclusion for the node failed. False otherwise.
data.net.node.isFLiRSCapable=<boolean>True if the node is a Frequency Listening Routing End Node (FLiRS) device, which means that it is a battery powered device that wakes up with low latency whenever it is called
data.net.node.isSleepCapable=<boolean>True if the node is capable of sleep, which means being non-listening and supporting the Wake up command class.
data.net.node.s2GrantKeys=[<string>]Describes the keys used for secure inclusion. The different keys are defined in the table Requested keys of the joining device below. Please note that the node was included non-securely if this parameter is empty.
Requested keys of the joining device
Key nameDescription
S2Key0S2: Class key 0 (Unauthenticated devices)
S2Key1S2: Class key 1 (Authenticated devices)
S2Key2S2: Class key 2 (Access control devices)
S0LegacyKeyS0: Legacy security network key
Device categories
CategoryCodeDescription
unknown0Unknown
sensorAlarm1Sensor alarm
onOffSwitch2ON/OFF switch
powerStrip3Power strip
siren4Siren
valve5Valve
simpleDisplay6Simple display
doorlockKeypad7Door lock with keypad
subEnergyMeter8Sub energy meter
advancedEnergyMeter9Advanced whole home energy meter
simpleEnergyMeter10Simple whole home energy meter
sensor11Sensor
lightDimmer12Light dimmer switch
windowCovering13Window covering no position/endpoint
windowCoveringEndpointAware14Window covering, endpoint aware
windowCoveringPositionAware15Window covering, position/endpoint aware
fanSwitch16Fan switch
remoteControlMultiPurpose17Remote control - multipurpose
remoteControlAV18Remote control - AV
remoteControlSimple19Remote control - simple
unrecognizedGateway20Gateway (unrecognized by the client)
centralController21Central controller
setTopBox22Set top box
tv23TV
subSystemController24Sub system controller
gateway25Gateway
thermostatHVAC26Thermostat - HVAC
termostatSetback27Thermostat - setback
wallController28Wall controller

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getNodeList",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getNodeList"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getEndpointList

This method should be used when you want to retrieve the node endpoints.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getEndpointList",
  "params": {
    "nodeDescriptor": <integer>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getEndpointList"The method that should be used.
params.nodeDescriptor=<integer>The node descriptor listing the endpoints.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getEndpointList",
  "data": {
    "node": {
      "nodeDescriptor": <integer>,
      "endpoint": [
        {
          "endpointDescriptor": <integer>,
          "endpointID": <integer>,
          "genericDeviceClass": {
            "name": <string>,
            "code": <integer>
          },
          "specificDeviceClass": {
            "name": <string>,
            "code": <integer>
          },
          "endpointName": <string>,
          "endpointLocation": <string>,
          "zwavePlusVersion": <integer>,
          "roleType": {
            "name": <string>,
            "code": <integer>
          },
          "nodeType": {
            "name": <string>,
            "code": <integer>
          },
          "installerIcon": <integer>,
          "userIcon": <integer>,
          "aggregatedEndpointList": [<integer>]
        }
      ]
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getEndpointList"The requested method.
data.node.nodeDescriptor=<integer>The node descriptor listing the endpoints.
data.node.endpoint=[<object>]Lists the endpoints belonging to the node.
data.node.endpoint.endpointDescriptor=<integer>The endpoint descriptor, that allows access to the endpoint.
data.node.endpoint.endpointID=<integer>The endpoint ID.
data.node.endpoint.genericDeviceClass=<object>The Generic Device Class. See the Generic Device Class identifiers table in Role Type for a complete list of available classes and the section Device Classes for an explanation.
data.node.endpoint.genericDeviceClass.name=<string>The name of the Generic Device Class.
data.node.endpoint.genericDeviceClass.code=<integer>The code of the Generic Device Class.
data.node.endpoint.specificDeviceClass=<object>The Specific Device Class. See the Specific Device Class identifiers table in Role Type for a complete list of available classes and the section Device Classes for an explanation.
data.node.endpoint.specificDeviceClass.name=<string>The name of the Specific Device Class.
data.node.endpoint.specificDeviceClass.code=<integer>The code of the Specific Device Class.
data.node.endpoint.endpointName=<string>The UTF-8 encoded endpoint name.
data.node.endpoint.endpointLocation=<string>The UTF-8 encoded endpoint location.
data.node.endpoint.zwavePlusVersion=<integer>The version field of the Z-Wave+ Info Report Command, a sub-category of Z-Wave+ Info command class. This value will be 0 if the node doesn’t support Z-Wave+.
data.node.endpoint.roleType=<object>The role type field of the Z-Wave+ Info Report Command, a sub-category of Z-Wave+ Info command class and only applicable if the Z-Wave+ version is higher than 0. See the table Z-Wave+ Role type identifiers in Role Type for a complete list of available node types.
data.node.endpoint.roleType.name=<string>The name of the role type.
data.node.endpoint.roleType.code=<integer>The code of the role type.
data.node.endpoint.nodeType=<object>The node type field of the Z-Wave+ Info Report Command, a sub-category of the Z-Wave+ Info command class and only applicable if the Z-Wave+ version is higher than 0. See the table Node Type identifiers in Role Type for a complete list of available node types.
data.node.endpoint.nodeType.name=<string>The node type name.
data.node.endpoint.nodeType.code=<integer>The node type code.
data.node.endpoint.installerIcon=<integer>The Z-Wave+ installer icon type.
data.node.endpoint.userIcon=<integer>The Z-Wave+ user icon type.
data.node.endpoint.aggregatedEndpointList=[<integer>]ID container for the aggregated members of the endpoint that allows a Multi Channel device to implement functionality related to multiple endpoints. Please note that it will not be an aggregated endpoint if the list is empty.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getEndpointList",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getEndpointList"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getEndpointInterfaceList

This method should be used when you want to list the various endpoint interfaces.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getEndpointInterfaceList",
  "params": {
    "endpointDescriptor": <integer>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getEndpointInterfaceList"The method that should be used.
params.endpointDescriptor=<integer>The endpoint descriptor for the interfaces list.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getEndpointInterfaceList",
  "data": {
    "endpoint": {
      "endpointDescriptor": <integer>,
      "interface": [
        {
          "interfaceDescriptor": <integer>,
          "name": <string>,
          "simulatedVersion": <integer>,
          "realVersion": <integer>,
          "accessSupport": {
            "secure": <boolean>,
            "unsecure": <boolean>
          }
        }
      ]
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getEndpointInterfaceList"The requested method.
data.endpoint.endpointDescriptor=<integer>The endpoint descriptor for the interfaces list.
data.endpoint.interface=[<object>]An interface list belonging to the endpoint.
data.endpoint.interface.interfaceDescriptor=<integer>The descriptor used to access the interface.
data.endpoint.interface.name=<string>The interface name, based on the corresponding Z-Wave Command Class name. See Command Class for a complete list of available Command Classes.
data.endpoint.interface.simulatedVersion=<integer>The Command Class version, upgradable by the device database and equal to the real version below if not upgraded.
data.endpoint.interface.realVersion=<integer>The Command Class version supported by your device. Will be 0 for a simulated interface.
data.endpoint.interface.accessSupport=<object>The interface accessibility support.
data.endpoint.interface.accessSupport.secure=<boolean>true if the interface can be securely accessed.
data.endpoint.interface.accessSupport.unsecure=<boolean>true if the interface can be accessed insecurely.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getEndpointInterfaceList",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getEndpointInterfaceList"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getSummaryList

This method should be used when you want to retrieve a smaller selection of information from all nodes and endpoints on the Z-Wave network that is otherwise obtained through getNodeList, getEndpointList and getEndpointInterfaceList.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getSummaryList"
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getSummaryList"The method that should be used.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getSummaryList",
  "data": {
    "net": {
      "node": [
        {
          "descriptor": <integer>,
          "id": <integer>,
          "deviceCategory": <string>,
          "aliveState": <string>,
          "securityWarning": <string>,
          "endpoint": [
            {
              "descriptor": <integer>,
              "name": <string>,
              "genericDeviceClassName": <string>,
              "specificDeviceClassName": <string>,
              "portNumber": <integer>,
              "interface": [
                {
                  "descriptor": <integer>,
                  "name": <string>
                }
              ]
            }
          ]
        }
      ]
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getSummaryList"The requested method.
data.net.node=[<object>]A list of nodes on the Z-Wave network.
data.net.node.descriptor=<integer>The node descriptor.
data.net.node.id=<integer>The node ID. Can be re-used, but must have a value less than 232 in accordance with current Z-Wave standards.
data.net.node.deviceCategory=<string>The device category. A complete list of the different categories and codes can be found in the Device categories table in getNodeList.
data.net.node.aliveState=<string>The node alive state. Valid values are alivedown or sleeping, but unavailable might also show up during the startup.
data.net.node.securityWarning=<string>An error message. Available messages can be found in the table below.
data.net.node.endpoint=[<object>]A list of node endpoints.
data.net.node.endpoint.descriptor=<integer>The endpoint descriptor.
data.net.node.endpoint.genericDeviceClassName=<string>The name of the Generic Device Class. See the Generic Device Class identifiers table in Role Type for a complete list of available Generic Device Classes and the section Device Classes for an explanation.
data.net.node.endpoint.specificDeviceClassName=<object>The name of the Specific Device Class. See the Specific Device Class identifiers table in Role Type for a complete list of available Generic Device Classes and the section Device Classes for an explanation.
data.net.node.endpoint.name=<string>The UTF-8 encoded endpoint name.
data.net.node.endpoint.portNumber=<integer>Container for assigned I/O port numbers. Not applicable if no number was chosen.
data.net.node.endpoint.interface=[<object>]Lists some of the endpoint interfaces.
data.net.node.endpoint.interface.descriptor=<integer>The interface descriptor.
data.net.node.endpoint.interface.name=<string>The interface name, based on the corresponding Z-Wave Command Class name. See Command Class for a complete list of available Command Classes.
Warning messages
MessageDescription
failedToIncludeSecurelyNode was security bootstrapped with the S0 Command Class in a network capable of S2.
failedToIncludeWithHighestSecurityAn S2 node was not granted the highest requested S2 key during bootstrapping.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getSummaryList",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getSummaryList"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

replaceFailedNode

This method should be used when you want to replace a failed node. Please note that this operation will time out automatically if no new node is found within one minute.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "replaceFailedNode",
  "params": {
    "nodeDescriptor": <integer>,
    "deviceSpecificKey": <string>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="replaceFailedNode"The method that should be used.
params.nodeDescriptor=<integer>The node descriptor of the node that should be replaced.
params.deviceSpecificKey=<string>
Optional
Needs to be in the following format and only consist of numbers between 0–9: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "replaceFailedNode",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="replaceFailedNode"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "replaceFailedNode",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="replaceFailedNode"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

removeFailedNode

This method should be used when you want to remove a failed node. Please note that this method can, unlike removeNode, only be used on an unresponsive node.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "removeFailedNode",
  "params": {
    "nodeDescriptor": <integer>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="removeFailedNode"The method that should be used.
params.nodeDescriptor=<integer>The node descriptor of the node that should be removed.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "removeFailedNode",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="removeFailedNode"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "removeFailedNode",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="removeFailedNode"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

setEndpointInfo

This method should be used when you want to set the nicename, a location or both for an endpoint.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setEndpointInfo",
  "params": {
    "endpointDescriptor": <integer>,
    "name": <string>,
    "location": <string>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="setEndpointInfo"The method that should be used.
params.endpointDescriptor=<integer>The endpoint descriptor of a node.
params.name=<string>
Optional
The nicename. The maximum length of UTF-8 encoded text is 32 bytes.
params.location=<string>
Optional
The location. The maximum length of UTF-8 encoded text is 32 bytes.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setEndpointInfo",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setEndpointInfo"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setEndpointInfo",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setEndpointInfo"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getS2RequestedKeys

This method should be used when you want to query the S2 security keys.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getS2RequestedKeys"
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getS2RequestedKeys"The method that should be used.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getS2RequestedKeys",
  "data": {
    "net": {
      "security": {
        "requestedKeys": [<string>]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getS2RequestedKeys"The requested method.
data.net.security.requestedKeys=[<string>]An array of strings describing the appropriate keys, defined in the Requested keys of the joining device table in getNodeList.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getS2RequestedKeys",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getS2RequestedKeys"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

setS2GrantKeys

This method should be used when you want to grant keys to a node supporting the S2 mode.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setS2GrantKeys"
  "params": {
    "grantKeys": [<string>],
    "accept": <boolean>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="setS2GrantKeys"The method that should be used.
params.grantKeys=[<string>]An array of strings that can be either all, or a subset, of the requested keys in the response from getS2RequestedKeys. The different keys are defined in the table Requested keys of the joining device in getNodeList.
params.accept=<boolean>
Optional
Accept (true) or interrupt (false) Security 2 bootstrapping. The default value is true.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setS2GrantKeys",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setS2GrantKeys"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setS2GrantKeys",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setS2GrantKeys"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getS2DeviceSpecificKey

This method should be used when you want to retrieve a device specific key.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getS2DeviceSpecificKey"
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getS2DeviceSpecificKey"The method that should be used.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getS2DeviceSpecificKey",
  "data": {
    "net": {
      "security": {
        "pinRequired": <boolean>,
        "deviceSpecificKey": <string>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getS2DeviceSpecificKey"The requested method.
data.net.security.pinRequired=<boolean>Indicates if a user needs to enter a pin when including S2.
data.net.security.deviceSpecificKey=<string>The device specific key in a format where x is a number between 0–9: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx. Depending on the value of pinRequired it can be either partial and without the first set of numbers, (-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx) when pinRequired=true, or complete when pinRequired=false.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getS2DeviceSpecificKey",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getS2DeviceSpecificKey"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

acceptS2

This method should be used when you want to accept or reject a node in S2 mode.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "acceptS2",
  "params": {
    "accept": <boolean>,
    "deviceSpecificKey": <string>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="acceptS2"The method that should be used.
params.accept=<boolean>Accept (true) or reject (false) the node.
params.deviceSpecificKey=<string>The device specific key in a format where x is a number between 0–9: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx. If a partial DSK was received with getS2DeviceSpecificKey, the PIN (the first five digits) completes the DSK. This parameter is optional when accept=false.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "acceptS2",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="acceptS2"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "acceptS2",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="acceptS2"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

refreshNode

This method should be used when you want to refresh a single node on the network and keep the node information up-to-date.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "refreshNode",
  "params": {
    "nodeDescriptor": <integer> 
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="refreshNode"The method that should be used.
params.nodeDescriptor=<integer>The descriptor for the node that should be refreshed.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "refreshNode",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="refreshNode"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "refreshNode",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="refreshNode"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

addToProvisioningList

This method should be used when you want to add end nodes to a provisioning list. See SmartStart for an explanation on provisioning lists and the concept of SmartStart.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "addToProvisioningList",
  "params": {
    "deviceSpecificKey": <string>,
    "name": <string>,
    "location": <string>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="addToProvisioningList"The method that should be used.
params.deviceSpecificKey=<string>The device specific key, where x is a number from 0–9: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx.
params.name=<string>
Optional
Sets a nicename with the following rules:
  • The combined size of the name and location strings can not be larger than 62 bytes (excluding the NULL terminating char).

  • Using . means that \. must be used for encoding.

  • The string can not contain the underscore character _.

  • The string can not end with a dash character -.

  • The string must be case insensitive, meaning that the casing may not be maintained.

params.location=<string>
Optional
Sets a location. Please note that the same rules applies to this parameter as params.name=<string> above.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "addToProvisioningList",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="addToProvisioningList"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "addToProvisioningList",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="addToProvisioningList"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

removeFromProvisioningList

This method should be used when you want to remove the end nodes from a provisioning list. See SmartStart for an explanation on provisioning lists and the concept of SmartStart.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "removeFromProvisioningList",
  "params": {
    "deviceSpecificKey": <string>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="removeFromProvisioningList"The method that should be used.
params.deviceSpecificKey=<string>The device specific key, where x is a number from 0–9: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "removeFromProvisioningList",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="removeFromProvisioningList"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "removeFromProvisioningList",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="removeFromProvisioningList"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getProvisioningList

This method should be used when you want to list all entries in a provisioning list. See SmartStart for more information about provisioning lists and SmartStart.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getProvisioningList"
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getProvisioningList"The method that should be used.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getProvisioningList",
  "data": {
    "net": {
      "complete": <boolean>,
      "deviceInfo": [
        {
          "deviceSpecificKey": <string>,
          "name": <string>,
          "location": <string>,
          "networkStatus": <string>
        }
      ]
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getProvisioningList"The requested method.
data.net.complete=<boolean>true, if complete, otherwise false.
data.net.deviceInfo=[<object>]An array containing device info for every device in the provisioning list.
data.net.deviceInfo.deviceSpecificKey=<string>The device specific key, where x is a number from 0–9: xxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx-xxxxx-xxxxx.
data.net.deviceInfo.name=<string>The nicename or an empty string if not set.
data.net.deviceInfo.location=<string>The location, or an empty string if not set.
data.net.deviceInfo.networkStatus=<string>The network status of the device:
  • included: The device is included on the network.

  • notIncluded: The device is pending inclusion on the network.

  • failing: The device was included on the network, but is now reported as failing.

  • unknownStatus: Unknown network status.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getProvisioningList",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getProvisioningList"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getBatteryState

This method should be used when you want to retrieve the current or last known battery status from the end node.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getBatteryState",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getBatteryState"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the state is fetched from the end node and false if the state is retrieved from the cache. Retrieval from the cache is the default.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getBatteryState",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "battery": {
        "lastUpdated": <string>,
        "level": <integer>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getBatteryState"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.battery.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, if 19700101T000000 is shown, no Z-Wave reports were received since the server started up and the rest of the values in the response should be considered undefined.
data.interface.battery.level=<integer>The current battery level (between 0–100%). 255 indicates that the battery level is low.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getBatteryState",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getBatteryState"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getMultilevelSensorState

This method should be used when you want to retrieve either current or last known state(s) of the multilevel sensor. A list of different sensor types and units are specified in the table Sensor types in Role Type.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getMultilevelSensorState",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>,
    "type": <string>,
    "unit": <string>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getMultilevelSensorState"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the state is fetched from the end node and false if the state is retrieved from the cache. Retrieves from the cache by default.
params.type=<string>
Optional
The preferred sensor type. Please note that the preferred type is not guaranteed to be reported, as this depends on whether it is supported by your device. Not specifying this will result in a report listing the factory default sensor type. This parameter is only applicable if refresh=true.
params.unit=<string>
Optional
The preferred sensor unit. Please note that the preferred unit is not guaranteed to be reported, as this depends on whether it is supported by your device and will be ignored if the sensor type isn’t specified. This parameter is only applicable if refresh=true.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getMultilevelSensorState",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "multilevelSensor": [
        {
          "lastUpdated": <string>,
          "type": <string>,
          "value": <number>,
          "precision": <integer>,
          "unit": <string>
        }
      ]
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getMultilevelSensorState"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.multilevelSensor=[<object>]The list of multilevel sensor states. Will be a single entry when the requests consists of both a specific sensor type and unit.
data.interface.multilevelSensor.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, if 19700101T000000 is shown, no Z-Wave reports were received since the server started and the rest of the values in the response should be considered undefined.
data.interface.multilevelSensor.type=<string>The sensor type.
data.interface.multilevelSensor.value=<number>The sensor value, presented as a 32 bit float.
data.interface.multilevelSensor.precision=<integer>The decimal places of the value.
data.interface.multilevelSensor.unit=<string>The sensor unit.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getMultilevelSensorState",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getMultilevelSensorState"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getMultilevelSensorSupport

This method should be used when you want to retrieve the supported sensor types from the end node or cached sensor types. A list of different sensor types and units are specified in the table Sensor types in Role Type. This is applicable if the device supports version 5 or above of the Multilevel Sensor Command Class, but all devices will respond to getMultilevelSensorState.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getMultilevelSensorSupport",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getMultilevelSensorSupport"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the state is fetched from the end node and false if the state is retrieved from the cache. Will retrieve from the cache by default.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getMultilevelSensorSupport",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "multilevelSensor": {
        "lastUpdated": <string>,
        "sensorTypeList": [<string>]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getMultilevelSensorSupport"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.multilevelSensor.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, if 19700101T000000 is shown, no Z-Wave reports were received since the server started up and the rest of the values in the response should be considered undefined.
data.interface.multilevelSensor.sensorTypeList=[<string>]A list containing the supported sensor types.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getMultilevelSensorSupport",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getMultilevelSensorSupport"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getMultilevelSensorUnitSupport

This method should be used when you want to retrieve supported sensor units from the end node or cached sensor units. A list of different sensor types and units are specified in the table Sensor types in Role Type. This is applicable if the device supports version 5 or above of the Multilevel Sensor Command Class, but all devices will respond to getMultilevelSensorState.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getMultilevelSensorUnitSupport",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>,
    "sensorType": <string>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getMultilevelSensorUnitSupport"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the sensor unit support is fetched from the end device, false if it is retrieved from cache (the default value).
params.sensorType=<string>The sensor type to retrieve supported units for, as defined by Sensor types in Role Type. Please note that you need to use the short names.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getMultilevelSensorUnitSupport",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "multilevelSensor": {
        "lastUpdated": <string>,
        "sensorType": <string>,
        "sensorUnitList": [<string>]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getMultilevelSensorUnitSupport"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.multilevelSensor.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, if 19700101T000000 is shown, no Z-Wave reports were received since the server started up and the rest of the values in the response should be considered undefined.
data.interface.multilevelSensor.sensorType=<string>The sensor type given in the request.
data.interface.multilevelSensor.sensorUnitList=[<string>]A list containing the supported sensor units. The different sensor types and units are specified in Sensor types in Role Type.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getMultilevelSensorUnitSupport",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getMultilevelSensorUnitSupport"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getConfiguration

This method should be used when you want to retrieve the value of a configuration parameter of a device or last known value from the cache.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getConfiguration",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>,
    "paramNum": <integer>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getConfiguration"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the value is fetched from the end device, false if it is retrieved from cache (the default value).
params.paramNum=<integer>The parameter number, generally found in the manufacturer’s user manual.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getConfiguration",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "configuration": {
        "lastUpdated": <string>,
        "paramNum": <integer>,
        "paramValue": <number>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getConfiguration"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.configuration.paramNum=<integer>The parameter number.
data.interface.configuration.paramValue=<number>A signed or unsigned number.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getConfiguration",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getConfiguration"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

setConfiguration

This method should be used when you want to set the value of a configuration parameter on your device.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setConfiguration",
  "params": {
    "interfaceDescriptor": <integer>,
    "paramNum": <integer>,
    "useDefault": <boolean>,
    "paramValue": <number>,
    "paramSize": <integer>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="setConfiguration"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.paramNum=<integer>The parameter number, generally found in the manufacturer’s user manual.
params.useDefault=<boolean>True if the default factory setting is used.
params.paramValue=<number>The parameter value. Can be either a signed or an unsigned number and is generally found in the manufacturer’s user manual. Not required if useDefault is true.
params.paramSize=<integer>The parameter size value. Please note that this is a fixed value and the semantics can generally be found in the manufacturer’s user manual. Not required if useDefault is true.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setConfiguration",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setConfiguration"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setConfiguration",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setConfiguration"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getBinarySwitchState

This method should be used when you want to retrieve the current binary switch state from the end node, or the last known state stored in the cache.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getBinarySwitchState",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getBinarySwitchState"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the state is fetched from the end node, false if it is retrieved from the cache (the default value).

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getBinarySwitchState",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "binarySwitch": {
        "lastUpdated": <string>,
        "currentState": <boolean>,
        "targetState": <boolean>,
        "duration": <integer>,
        "stateNum": <integer>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getBinarySwitchState"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.binaryswitch.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, no Z-Wave reports were received since the server started if 19700101T000000 is shown, and the rest of the values in the response should be considered undefined.
data.interface.binarySwitch.currentState=<boolean>The current ON/OFF value.
data.interface.binaryswitch.targetState=<boolean>The target value of either the latest or an ongoing transition.
data.interface.binarySwitch.duration=<integer>The time required to reach the target value, specified in the table below.
data.interface.binarySwitch.stateNum=<integer>Indicates the number of state changes. Please note that the counter will loop around from 0 when it reaches 0xFFFF.
Duration values
ValueTime
0Already at target value.
1–1271–127 seconds.
128–2531–126 minutes.
254Unknown duration.
255Reserved.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getBinarySwitchState",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getBinarySwitchState"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

setBinarySwitchState

This method should be used when you want to turn the binary switch either ON or OFF.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setBinarySwitchState",
  "params": {
    "interfaceDescriptor": <integer>,
    "value": <boolean>,
    "duration": <integer>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="setBinarySwitchState"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.value=<boolean>The value that should be set. ON for true and OFF for false.
params.duration=<integer>
Optional
Only applicable for Binary Switch Command Class version 2 or above and specifies the time it should take to reach the target value, as specified in the table in the previous example.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setBinarySwitchState",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setBinarySwitchState"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setBinarySwitchState",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setBinarySwitchState"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getBasicState

This method should be used when you want to retrieve the value of an interface mapped to the basic interface from the end node, or the last known state from the cache.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getBasicState",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getBasicState"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the state is fetched from the end node, false if it should be retrieved from the cache (the default value).

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getBasicState",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "basic": {
        "lastUpdated": <string>,
        "currentState": <integer>,
        "targetState": <integer>,
        "duration": <integer>,
        "stateNum": <integer>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getBasicState"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.basic.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, no Z-Wave reports were received since the server started up if 19700101T000000 is shown, and the rest of the values in the response should be considered undefined.
data.interface.basic.currentState=<integer>The current value, specified in the table below.
data.interface.basic.targetState=<integer>The target value of either the latest or the ongoing transition, specified in the table below.
data.interface.basic.duration=<integer>The time required to reach the target value, specified in the table Duration values in getBinarySwitchState.
data.interface.basic.stateNum=<integer>Indicates the number of state changes. Please note that the counter will loop back to 0 when it reaches 0xFFFF.
ValueDescription
0OFF
1–991–99%
254Unknown
255ON

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getBasicState",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getBasicState"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

setBasicState

This method should be used when you want to set the value of an interface that has been mapped to the basic interface.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setBasicState",
  "params": {
    "interfaceDescriptor": <integer>,
    "value": <integer>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="setBasicState"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.value=<integer>The value that should be set. Please note that the range is device specific.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setBasicState",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setBasicState"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setBasicState",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setBasicState"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

addAssociation

This method should be used when you want to add a new device to a group of devices already communicating with each other.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "addAssociation",
  "params": {
    "interfaceDescriptor": <integer>,
    "groupID": <integer>,
    "memberCount": <integer>,
    "members": [
      {
        "nodeID": <integer>,
        "endpointID": <integer>
      }
    ]
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="addAssociation"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.groupID=<integer>The group ID.
params.memberCount=<integer>The number of node/endpoint pairs added out of a maximum number of five.
params.members=[<object>]The node/endpoint pairs.
params.members.nodeID=<integer>The node ID.
params.members.endpointID=<integer>The endpoint ID.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "addAssociation",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="addAssociation"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "addAssociation",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="addAssociation"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

removeAssociation

This method should be used when you want to remove a device from a group of communicating devices.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "removeAssociation",
  "params": {
    "interfaceDescriptor": <integer>,
    "groupID": <integer>,
    "memberCount": <integer>,
    "members": [
      {
        "nodeID": <integer>,
        "endpointID": <integer>
      }
    ]
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="removeAssociation"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.groupID=<integer>The group ID.
params.memberCount=<integer>The number of node/endpoint pairs added out of a maximum number of five.
params.members=[<object>]The node/endpoint pairs.
params.members.nodeID=<integer>The node ID.
params.members.endpointID=<integer>The endpoint ID.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "removeAssociation",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="removeAssociation"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "removeAssociation",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="removeAssociation"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getAssociationData

This method should be used when you want to retrieve association data for a group of devices communicating directly with each other from either an end node or the cache.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getAssociationData",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>,
    "groupID": <integer>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getAssociationData"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the information is fetched from the end node, false if it is retrieved from the cache (the default value).
params.groupID=<integer>The group ID.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getAssociationData",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "association": {
        "lastUpdated": <string>,
        "groupID": <integer>,
        "maxCount": <integer>,
        "members": [
          {
            "nodeID": <integer>,
            "endpointID": <integer>
          }
        ]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getAssociationData"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.association.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, no Z-Wave reports were received since the server started up if 19700101T000000 is shown, and the rest of the values in the response should be considered undefined.
data.interface.association.groupID=<integer>The group ID.
data.interface.association.maxCount=<integer>The maximum number of members supported by the group.
data.interface.association.members=[<object>]An array containing the members that are part of a group. Please note that group members may contain endpoints/nodes that don’t exist on the network.
data.interface.association.members.nodeID=<integer>The node ID.
data.interface.association.members.endpointID=<integer>The endpoint ID. 255 denotes node association and everything else denotes endpoint association.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getAssociationData",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getAssociationData"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getSupportedGroupings

This method should be used when you want to retrieve a list of group IDs supported by a specific end node from either the node itself or the cache. More information about supported groupings can be found in your device’s user manual.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getSupportedGroupings",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getSupportedGroupings"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the information is fetched from the end node, false if it should be retrieved from the cache (the default value).

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getSupportedGroupings",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "association": {
        "lastUpdated": <string>,
        "groupIDs": [<integer>]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getSupportedGroupings"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.association.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, no Z-Wave reports were received since the server started up if 19700101T000000 is shown, and the rest of the values in the response should be considered undefined.
data.interface.association.groupIDs=[<integer>]A list of group IDs.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getSupportedGroupings",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getSupportedGroupings"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getWakeUpInfo

This method should be used when you want to retrieve wake-up information, which can include either the minimum or default wake-up interval from the end node or the last known wake-up information from the cache.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getWakeUpInfo",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getWakeUpInfo"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the information is fetched from the end node, false if it should be retrieved from the cache (the default value).

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getWakeUpInfo",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "wakeUp": {
        "lastUpdated": <string>,
        "currentInterval": <integer>,
        "nodeID": <integer>,
        "minInterval": <integer>,
        "maxInterval": <integer>,
        "defaultInterval": <integer>,
        "intervalStep": <integer>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getWakeUpInfo"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.association.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, no Z-Wave reports were received since the server started up if 19700101T000000 is shown, and the rest of the values in the response should be considered undefined.
data.interface.wakeUp.currentInterval=<integer>The current wake-up interval, measured in seconds.
data.interface.wakeUp.nodeId=<integer>The ID of the node to notify on wake-up, 255 for broadcast.
data.interface.wakeUp.minInterval=<integer>The minimum wake-up interval in seconds, valid on devices with Wake Up Command Class version 2 and above.
data.interface.wakeUp.maxInterval=<integer>The maximum wake-up interval in seconds, valid on devices with Wake Up Command Class version 2 and above.
data.interface.wakeUp.defaultInterval=<integer>The default wake-up interval in seconds, valid on devices with Wake Up Command Class version 2 and above.
data.interface.wakeUp.intervalStep=<integer>The wake-up interval step, measured in seconds, indicating the number of seconds between each value that is possible to set as the wake-up interval and only valid on devices with Wake Up Command Class version 2 and above.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getWakeUpInfo",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getWakeUpInfo"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

setWakeUpInfo

This method should be used when you want to set a wake-up interval and the node that should be notified.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setWakeUpInfo",
  "params": {
    "interfaceDescriptor": <integer>,
    "wakeUpInterval": <integer>,
    "nodeID": <integer>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="setWakeUpInfo"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.wakeUpInterval=<integer>The wake-up interval to set.
params.nodeID=<integer>The ID of the node that should be notified on wake-up. 255 is used for broadcasts.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setWakeUpInfo",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setWakeUpInfo"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setWakeUpInfo",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="setWakeUpInfo"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getMeterReading

This method should be used when you want to retrieve the meter readings from the end node, or the most recent meter reading from the cache.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getMeterReading",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>,
    "unit": <string>,
    "rateType": <string>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getMeterReading"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the information is fetched from the end node, false if the state is retrieved from the cache. Retrieves from the cache by default.
params.unit=<string>
Optional
The preferred unit. Please note that this parameter is ignored if the end node doesn’t support it. See the Available Meter units table below for information about available units. This parameter will default to noPreference if it is supported, but not specified.
params.rateType=<string>
Optional
The preferred rate type. Please note that this is ignored if the end node doesn’t support it. See the Available Meter rate types table below for information about available units. This parameter will default to noPreference if it is supported, but not specified.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getMeterReading",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "meter": [
        {
          "lastUpdated": <string>,
          "type": <string>,
          "value": <number>,
          "precision": <integer>,
          "unit": <string>,
          "rateType": <string>,
          "delta": <integer>,
          "prevValue": <number>
        }
      ]
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getMeterReading"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.meter=[<object>]A list containing the reading data for either a single value when it was chosen for the preferred unit, or listing all available units.
data.interface.meter.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, no Z-Wave reports were received since the server started if 19700101T000000 is shown, and the rest of the values in the response should be considered undefined.
data.interface.meter.type=<string>The meter type. Available types are specified in the Available Meter types table below.
data.interface.meter.value=<number>The meter value.
data.interface.meter.precision=<integer>The decimal places of the value.
data.interface.meter.unit=<string>The meter unit. Available units are specified in the Available Meter units table below.
data.interface.meter.rateType=<string>The meter rate type. Available options are specified in the Available Meter rate types table below. Please note that this is only valid if the device supports Meter Command Class version 2.
data.interface.meter.delta=<integer>Elapsed time (measured in seconds) since the last meter data. Will be 0 if no previous value exists and is only valid if the device supports Meter Command Class version 2.
data.interface.meter.prevValue=<number>The previous meter value. Only valid if delta > 0. However the value will be equal to the current value in cases where delta = 0. Please note that this is only valid if the device supports Meter Command Class version 2.
Available Meter types
Type nameDescription
electricElectric meter
gasGas meter
waterWater meter
heatingHeating meter
coolingCooling meter
Available Meter units
NameDescription
eleckWhElectric meter unit: kWh
eleckVAhElectric meter unit: kVAh
elecWElectric meter unit: W
elecPulseElectric meter unit: pulse count
elecVElectric meter unit: V
elecAElectric meter unit: A
elecPFElectric meter unit: power factor
elecKVarElectric meter unit: KVar
elecKVarhElectric meter unit: KVarh
gasCMGas meter unit: cubic meter
gasCFGas meter unit: cubic feet
gasPulseGas meter unit: pulse count
waterCMWater meter unit: cubic meters
waterCFWater meter unit: Cubic feet
waterGalWater meter unit: US gallons
waterPulseWater meter unit: pulse count
heatkWhHeating meter unit: kWh
coolkWhCooling meter unit: kWh
Available Meter rate types
Rate typeDescription
importMeter value is a consumed measurement.
exportMeter value is a produced measurement.
importExportBoth import and export, but not be used in a getMeterReading request.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getMeterReading",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getMeterReading"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getMeterCapabilities

This method should be used when you want to retrieve meter capabilities information from the end node, or the last known information from the cache. Please note that this method is only applicable if the device supports Meter Command Class version 2 or above, as the behavior will otherwise be returned as ‘undefined’.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getMeterCapabilities",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getMeterCapabilities"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the information is fetched from the end node, false if the state is retrieved from the cache. Retrieves from the cache by default.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getMeterCapabilities",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "meter": [
        {
          "lastUpdated": <string>,
          "type": <string>,
          "units": [<string>],
          "reset": <boolean>,
          "rateType": <string>
        }
      ]
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getMeterCapabilities"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.meter.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, no Z-Wave reports were received since the server started if 19700101T000000 is shown, and the rest of the values in the response should be considered undefined.
data.interface.meter.type=<string>The meter type. Available types are specified in the Available Meter types table in getMeterReading.
data.interface.meter.units=[<string>]An array containing the strings of the supported units. Available units are specified in the Available Meter units table in getMeterReading.
data.interface.meter.reset=<boolean>True if the device supports resetting all accumulated values stored in the device.
data.interface.meter.rateType=<string>The meter rate type. Supported options are specified in the Available Meter rate types table in getMeterReading, otherwise the value notSupported will be returned.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getMeterCapabilities",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getMeterCapabilities"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

resetMeter

This method should be used when you want to reset all accumulated values stored on the meter device. Please note that this is only applicable if the device supports at least Meter Command Class version 2 of the, as the behavior will otherwise be returned as ‘undefined’.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "resetMeter",
  "params": {
    "interfaceDescriptor": <integer>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="resetMeter"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "resetMeter",
  "data": {}
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="resetMeter"The requested method.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "resetMeter",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="resetMeter"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

getIndicatorValue

This method should be used when you want to retrieve all indicator values from an end node, or the last known value from the cache.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getIndicatorValue",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>,
    "indicatorName": <string>
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="getIndicatorValue"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the value is fetched from the end node, false if the value is retrieved from the cache (default value).
params.indicatorName=<string>
Optional
The indicator name. Available indicators are listed in the Available indicators table below. Please note that this is only applicable for Indicator Command Class version 2 and above.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getIndicatorValue",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "indicator": {
        "lastUpdated": <string>,
        "value": <integer>,
        "indicatorName": <string>,
        "stateNum": <integer>,
        "properties": [
          {
            "name": <string>,
            "value": <integer>
          }
        ]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getIndicatorValue"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.indicator.lastUpdated=<string>The last updated time, presented in the ISO 8601 basic format (YYYYMMDDThhmmss). For example, no Z-Wave reports were received since the server started if 19700101T000000 is shown, and the rest of the values in the response should be considered undefined.
data.interface.indicator.value=<integer>The value of Indicator Command Class version 1, which can be ignored if the indicator properties are present. Valid values can be either 0 (off/disable), 255 (on/enable) or any value between 1–99. This is only for backwards compatibility in cases where the Indicator Command Class supports version 2 or above.
data.interface.indicator.indicatorName=<string>The indicator name. Available indicators are specified in the Available indicators table below.
data.interface.indicator.stateNum=<integer>Indicates the number of state changes in increments by one for every state change. Please note that the number will loop back to 0 when it reaches 0xFFFF.
data.interface.indicator.properties=[<object>]The list of indicator properties, valid only if the Indicator Command Class supports version 2 or above.
data.interface.indicator.properties.name=<string>The property name. Available values are specified in the Available indicator property names and values table below.
data.interface.indicator.properties.value=<integer>The property value. Valid values are specified in the Available indicator property names and values table below.
Available indicators
Indicator nameDescription
armedThe alarm is armed.
disarmedThe alarm is disarmed.
readyThe device is ready.
faultyA general error.
busyThe device is busy.
enterIDThe device is waiting for an ID.
enterPINThe device is waiting for a PIN.
codeOKThe entered code is accepted.
codeNotOKThe entered code is NOT accepted.
armedStayThe alarm is armed and the user is staying.
armedAwayThe alarm is armed and the user is away.
alarmThe alarm is triggered, reason not specified.
alarmBurglarThe alarm is triggered due to a burglar event.
alarmFireThe alarm is triggered due to a fire alarm.
alarmCOThe alarm is triggered due to a carbon monoxide event.
bypassChallengeThe device expects a bypass challenge code.
entryDelayThe alarm is about to be activated unless disarmed.
exitDelayThe alarm will be active after an exit delay.
zone1Zone 1 is armed.
zone2Zone 2 is armed.
zone3Zone 3 is armed.
zone4Zone 4 is armed.
zone5Zone 5 is armed.
zone6Zone 6 is armed.
lcdBacklightTurns on the LCD backlight.
readyForLetterThe buttons are ready for a letter input.
readyForDigitThe buttons are ready for a digit input.
readyForCommandThe buttons are ready for a command input.
button1Draws attention to button 1.
button2Draws attention to button 2.
button3Draws attention to button 3.
button4Draws attention to button 4.
button5Draws attention to button 5.
button6Draws attention to button 6.
button7Draws attention to button 7.
button8Draws attention to button 8.
button9Draws attention to button 9.
button10Draws attention to button 10.
button11Draws attention to button 11.
button12Draws attention to button 12.
identifyIdentifies a node.
buzzerDraws attention or provides feedback.
Available indicator property names and values
NameValueDescription
level0: OFF
1–99: lowest non-zero level – 100%
255: restores most recent (non-zero) level
A specific level, for example the light level.
binary0: OFF
1–99: ON
255: ON
Turns the indicator ON or OFF.
togglePeriod0–255 (0-25.5 seconds)Toggles the period duration in tenths of seconds. Please note that specifying this property also requires specifying the toggleCycle as well.
toggleCycle0–254 (0–254 times).
255: Run ON/OFF periods until stopped. Please note that 3 is reserved for the indicator identify.
Toggles the cycle of periods that should be run. Please note that specifying this property requires specifying the togglePeriod as well.
toggleOnTime0: ON time equal to OFF time
1–255: ON time ranging from 1–25.5 seconds.
The ON time within an ON/OFF period. Can be set in tenths of seconds.
timeoutMinutes0–255 (0–255 minutes)The timeout duration, measured in minutes, after which the indicator is either turned OFF or muted. Please note that this can be ignored if toggling is defined (when toggleCycle and togglePeriod > 0 or toggleOnTime > 0). The values must be combined in cases where more timeout properties are supported. Setting all timeout properties to 0 means that the indicator will not time out automatically.
timeoutSeconds0–59 (0–59 seconds). 60–255 is ignored.The timeout duration, measured in seconds, after which the indicator is either turned OFF or muted. Please note that this can be ignored if toggling is defined (when toggleCycle and togglePeriod > 0 or toggleOnTime > 0). The values must be combined in cases where more timeout properties are supported. Setting all timeout properties to 0 means that the indicator will not time out automatically.
timeout100thSeconds0–99 (0.00–0.99 seconds). 100–255 is ignored.The timeout duration, measured in 100ths of a seconds, after which the indicator is either turned OFF or muted. Please note that this can be ignored if toggling is defined (when toggleCycle and togglePeriod > 0 or toggleOnTime > 0). The values must be combined in cases where more timeout properties are supported. Setting all timeout properties to 0 means that the indicator will not time out automatically.
soundLevel0: OFF/mute
1–100: 1–100%
255: Restores the most recent (non-zero) level. 101–254 is ignored.
Configures the volume of the indicator without switching it ON.
lowPowerAdvertise only and can not be used with SETUsed by a supporting node to advertise that the indicator can continue its operation even in sleep mode.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getIndicatorValue",
  "error": {
    "code": <integer error code>,
    "message": <error message>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getIndicatorValue"The requested method.
error.code=<integer error code>The error code.
error.message=<string>The error message for the corresponding error code.

Error codes

See General error codes for a complete list of potential errors.

setIndicatorValue

This method should be used when you want to set an indicator value. Please note that, depending on the Command Class version, either value or indicatorName and their properties might need to be supplied.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setIndicatorValue",
  "params": {
    "interfaceDescriptor": <integer>,
    "value": <integer>,
    "indicatorName": <string>
    "properties": [
      {
        "name": <string>,
        "value": <integer>
      }
    ]
  }
}
ParameterDescription
apiVersionThe API version that should be used.
context=<string>
Optional
The user sets this value and the application echoes it back in the response.
method="setIndicatorValue"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.value=<integer>Valid if the end node only supports Indicator Command Class version 1. The value can be either 0 (off/disable), 255 (on/enable) or any value between 1–99.
params.indicatorName=<string>Valid if the end node supports Indicator Command Class version 2. Available indicators are listed in the Available indicators table in getIndicatorValue.
params.properties=[<object>]A list containing the indicator properties. Please note that it is only valid if the end node supports Indicator Command Class version 2 or above. Available property names and valid property values are listed in the Available indicator property names and values table in getIndicatorValue.
params.properties.name=<string>The property name.
params.properties.value=<integer>The property value.

Return value - Success