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

HTTP Code

200 OK

Content-Type

application/json

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

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setIndicatorValue",
  "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="setIndicatorValue"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.

getIndicatorCapabilities

This method should be used when you want to check the indicator capabilities 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": "getIndicatorCapabilities",
  "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="getIndicatorCapabilities"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": "getIndicatorCapabilities",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "indicator": {
        "lastUpdated": <string>,
        "indicatorSupport": [
          {
            "indicatorName": <string>,
            "propertyNameList": [<string>]
          }
        ]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getIndicatorCapabilities"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.indicatorSupport=[<object>]An array containing the supported indicators.
data.interface.indicator.indicatorSupport.indicatorName=<string>The indicator name. Available indicators are listed in the Available indicators table in getIndicatorValue and is only valid if the Indicator Command Class supports version 2 or above.
data.interface.indicator.indicatorSupport.propertyNameList=[<string>]A list containing the indicator property names when the Indicator Command Class supports version 2 or above. Available values are specified in the Available indicator property names and values table in getIndicatorValue.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getIndicatorCapabilities",
  "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="getIndicatorCapabilities"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.

getFirmwareInfo

This method should be used when you want to check the firmware information on the end node, or the last known information 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": "getFirmwareInfo",
  "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="getFirmwareInfo"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 and false if the information is retrieved from the cache (default value).

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getFirmwareInfo",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "firmwareUpdate": {
        "lastUpdated": <string>,
        "vendorID": <integer>,
        "zwaveFirmwareID": <integer>,
        "checksum": <integer>,
        "maxFragmentSize": <integer>,
        "fixedFragmentSize": <integer>,
        "upgradable": <boolean>,
        "hardwareVersionValid": <boolean>,
        "hardwareVersion": <integer>,
        "upgradeFunctionality": <string>,
        "activation": <string>,
        "firmwareTargets": [
          {
            "firmwareTarget": <integer>,
            "firmwareID": <integer>
          }
        ]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getFirmwareInfo"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.firmwareUpdate.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.firmwareUpdate.vendorID=<integer>The manufacturer specific vendor ID of the device.
data.interface.firmwareUpdate.zwaveFirmwareID=<integer>The Z-Wave firmware ID.
data.interface.firmwareUpdate.checksum=<integer>The CRC-CCITT checksum.
data.interface.firmwareUpdate.maxFramerateSize=<integer>The maximum meta data fragment size for the firmware update.
data.interface.firmwareUpdate.fixedFragmentSize=<boolean>A flag indicating whether maxFragmentSize should be used during a Firmware update request. true indicates a fixed size, false a variable size.
data.interface.firmwareUpdate.upgradable=<boolean>true if the firmware is upgradable, otherwise false.
data.interface.firmwareUpdate.hardwareVersionValid=<boolean>true if the hardware version is valid, otherwise false. Using an invalid hardware version will result in an unsuccessful firmware update request.
data.interface.firmwareUpdate.hardwareVersion=<integer>The hardware version.
data.interface.firmwareUpdate.upgradeFunctionality=<string>A string indicating whether other command classes will function normally during a firmware upgrade. Available options are normal, limited and unknown.
data.interface.firmwareUpdate.activation=<string>A string indicating whether activation is supported after download. Available options are supported, unsupported and unknown.
data.interface.firmwareUpdate.firmwareTargets=[<object>]A list containing the firmware targets.
data.interface.firmwareUpdate.firmwareTargets.firmwareTarget=<integer>The firmware target number, starting from 1.
data.interface.firmwareUpdate.firmwareTargets.firmwareID=<integer>The firmware ID of the firmware target.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getFirmwareInfo",
  "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="getFirmwareInfo"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.

requestFirmwareUpdate

This method should be used when you want to trigger a firmware upgrade request for an end node. Please note that you need to use getFirmwareInfo before calling this method.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "requestFirmwareUpdate",
  "params": {
    "interfaceDescriptor": <integer>,
    "vendorID": <integer>,
    "firmwareTarget": <integer>,
    "firmwareID": <integer>,
    "fileName": <string>,
    "hardwareVersion": <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="requestFirmwareUpdate"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.vendorID=<integer>The vendor ID of the device (manufacturer specific).
params.firmwareTarget=<integer>The firmware target number. 0 is used for Z-Wave firmware, while any number in the range of 1–255 can be used and returned by getFirmwareInfo.
params.firmwareID=<integer>The firmware ID intended for the firmware.
params.fileName=<string>The firmware file path.
params.hardwareVersion=<integer>The hardware version.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "requestFirmwareUpdate",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "firmwareUpdate": {
        "latestRequestTime": <string>,
        "requestStatus": <string>,
        "completionStatus": <string>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="requestFirmwareUpdate"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.firmwareUpdate.latestRequestTime=<string>The last time a firmware update request was made, presented in the ISO 8601 basic format (YYYYMMDDThhmmss).
data.interface.firmwareUpdate.requestStatus=<string>The firmware update request status. See the Available firmware update request statuses table below for a complete list of available statuses.
data.interface.firmwareUpdate.completionStatus=<string>The firmware update completion status. See the Available firmware update completion statuses table below for a complete list of available statuses.
Available firmware update request statuses
Update statusDescription
invalidComboThe combination of vendorID and firmwareID is not valid.
authenticationNeededOut-of-band authentication event to enable firmware updates required.
fragmentSizeErrorThe requested fragment size is exceeding the maximum fragment size.
upgradeErrorUpgrading the firmware target is not possible.
hardwareVersionErrorHardware version is invalid.
transferInProgressAnother firmware image is currently transferred.
lowBatteryThe battery level is too low to complete the firmware update.
validComboThe combination of vendorID and firmwareID is valid, which means that the upgrade will start.
unknownStatusThe status is unknown.
Available firmware update completion statuses
Update statusDescription
checksumErrorThe requested firmware has a checksum error.
downloadErrorDownload of the requested firmware failed.
vendorIDErrorThe vendor/manufacturer ID is mismatched.
firmwareIDErrorThe firmware ID is mismatched.
firmwareTargetErrorThe firmware target is mismatched.
fileHeaderErrorThe file header information is invalid.
headerFormatErrorThe file header format is invalid.
memoryErrorAn out of memory error.
hardwareVersionErrorThe hardware version is mismatched.
lowBatteryThe battery level is too low to initiate the update.
unknownBatteryLevelThe battery level is unknown and update can’t be initiated.
okWaitThe image has been downloaded and is awaiting an activation command.
okNoRestartThe image has been successfully stored in a temporary non-volatile memory and the device will not restart itself.
okRestartThe image has been successfully stored in a temporary non-volatile memory. The device will proceed to store the image in a primary non-volatile memory and restart itself.
unknownStatusThe status is unknown.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "requestFirmwareUpdate",
  "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="requestFirmwareUpdate"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.

getFirmwareUpdateStatus

This method should be used when you want to check the status of a firmware update request.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getFirmwareUpdateStatus",
  "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="getFirmwareUpdateStatus"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": "getFirmwareUpdateStatus",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "firmwareUpdate": {
        "latestRequestTime": <string>,
        "requestStatus": <string>,
        "completionStatus": <string>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getFirmwareUpdateStatus"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.firmwareUpdate.latestRequestTime=<string>The last time a firmware update request was made, presented in the ISO 8601 basic format (YYYYMMDDThhmmss).
data.interface.firmwareUpdate.requestStatus=<string>The firmware update request status. See the Available firmware update request statuses table in requestFirmwareUpdate for a complete list of available statuses.
data.interface.firmwareUpdate.completionStatus=<string>The firmware update completion status. See the Available firmware update completion statuses table in requestFirmwareUpdate for a complete list of available statuses.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getFirmwareUpdateStatus",
  "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="getFirmwareUpdateStatus"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.

requestFirmwareBackup

This method should be used when you want to trigger a new firmware backup request for an end node. Please note that you need to use getFirmwareInfo before calling this method and that it is only applicable if the device supports Firmware Update Meta Data Command Class version 5 or above.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "requestFirmwareBackup",
  "params": {
    "interfaceDescriptor": <integer>,
    "vendorID": <integer>,
    "firmwareTarget": <integer>,
    "firmwareID": <integer>,
    "hardwareVersion": <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="requestFirmwareBackup"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.vendorID=<integer>The vendor ID of the device (manufacturer specific).
params.firmwareTarget=<integer>The target number of the firmware. 0 is used for Z-Wave firmware, while any number in the range of 1–255 can be used and returned by getFirmwareInfo.
params.firmwareID=<integer>The firmware ID intended for the firmware.
params.hardwareVersion=<integer>The hardware version.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "requestFirmwareBackup",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "firmwareUpdate": {
        "latestRequestTime": <string>,
        "requestStatus": <string>,
        "completionStatus": <string>,
        "backupPath": <string>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="requestFirmwareBackup"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.firmwareUpdate.latestRequestTime=<string>The last time a firmware update request was made, presented in the ISO 8601 basic format (YYYYMMDDThhmmss).
data.interface.firmwareUpdate.requestStatus=<string>The firmware update request status. See the Available firmware backup request statuses table below for a complete list of available statuses.
data.interface.firmwareUpdate.completionStatus=<string>The firmware update completion status. See the Available firmware backup completion statuses table below for a complete list of available statuses.
data.interface.firmwareUpdate.backPath=<string>The path to the backup file.
Available firmware backup request statuses
Update statusDescription
invalidComboCombination of vendorID and firmwareID is not valid.
authenticationNeededAn out-of-band authentication event is required to enable firmware updates.
fragmentSizeErrorThe requested fragment size exceeds the maximum fragment size.
downloadErrorCreating a backup of this firmware target is not possible.
hardwareVersionErrorThe hardware version is invalid.
requestOKThe receiving node is able to initiate the firmware backup of the target.
unknownStatusThe status is unknown.
Available firmware backup completion statuses.
Update statusDescription
checksumErrorThe downloaded firmware has a checksum error.
downloadErrorDownloading the requested firmware failed.
memoryErrorAn out-of-memory error.
requestStatusErrorCould not retrieve the firmware download request status, which means that the download does not start.
requestTimeoutErrorInitiates the firmware download request timeout, which means that the download does not start.
writeErrorFailed to write the firmware file.
exceedSizeLimitThe firmware size is too large.
errorOtherAn unspecified error.
statusOKThe firmware was successfully downloaded and saved to file.
unknownStatusThe status is unknown.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "requestFirmwareBackup",
  "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="requestFirmwareBackup"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.

getFirmwareBackupStatus

This method should be used when you want to check the status of a firmware backup request. Please note that this method is only applicable if the device supports Firmware Update Meta Data Command Class version 5 or above.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getFirmwareBackupStatus",
  "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="getFirmwareBackupStatus"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": "getFirmwareBackupStatus",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "firmwareUpdate": {
        "latestRequestTime": <string>,
        "requestStatus": <string>,
        "completionStatus": <string>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getFirmwareBackupStatus"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.firmwareUpdate.latestRequestTime=<string>The last time a firmware update request was made, presented in the ISO 8601 basic format (YYYYMMDDThhmmss).
data.interface.firmwareUpdate.requestStatus=<string>The firmware update request status. See the Available firmware backup request statuses table in requestFirmwareBackup for a complete list of available statuses.
data.interface.firmwareUpdate.completionStatus=<string>The firmware update completion status. See the Available firmware backup completion statuses table in requestFirmwareBackup for a complete list of available statuses.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getFirmwareBackupStatus",
  "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="getFirmwareBackupStatus"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.

requestFirmwareActivation

This method should be used when you wand to trigger a new firmware activation request for an end node. Please note that this method is only applicable if the device supports Firmware Update Meta Data Command Class version 4 or above.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "requestFirmwareActivation",
  "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="requestFirmwareActivation"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": "requestFirmwareActivation",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "firmwareUpdate": {
        "latestRequestTime": <string>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="requestFirmwareActivation"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.firmwareUpdate.latestRequestTime=<string>The last time a firmware update request was made, presented in the ISO 8601 basic format (YYYYMMDDThhmmss).

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "requestFirmwareActivation",
  "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="requestFirmwareActivation"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.

getFirmwareActivationStatus

This method should be used when you want to check the status of a firmware activation request, but is only applicable if the device supports FIrmware Update Meta Data Command Class version 4 and above.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getFirmwareActivationStatus",
  "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="getFirmwareActivationStatus"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": "getFirmwareActivationStatus",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "firmwareUpdate": {
        "vendorID": <integer>,
        "firmwareTarget": <integer>,
        "firmwareID": <integer>,
        "hardwareVersion": <integer>,
        "checksum": <integer>,
        "latestRequestTime": <string>,
        "requestStatus": <string>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getFirmwareActivationStatus"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.firmwareUpdate.vendorID=<integer>The vendor ID of the device (manufacturer specific).
data.interface.firmwareUpdate.firmwareTarget=<integer>The firmware target number. 0 is Z-Wave firmware, 1–255 is the target number returned by getFirmwareInfo.
data.interface.firmwareUpdate.firmwareID=<integer>The firmware ID intended for the firmware.
data.interface.firmwareUpdate.hardwareVersion=<integer>The hardware version.
data.interface.firmwareUpdate.checksum=<integer>The CRC-CCITT checksum.
data.interface.firmwareUpdate.latestRequestTime=<string>The last time a firmware update request was made, presented in the ISO 8601 basic format (YYYYMMDDThhmmss).
data.interface.firmwareUpdate.requestStatus=<string>The firmware update request status. See the Available firmware activation statuses table for a complete list of available statuses.
Available firmware activation statuses
Update statusDescription
invalidComboA combination of vendorID, firmwareID and hardwareVersion or firmwareTarget is not valid.
activationErrorAn error activating the firmware, restoring the original firmware.
requestOKA firmware activation was successfully completed.
unknownStatusStatus unknown.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getFirmwareActivationStatus",
  "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="getFirmwareActivationStatus"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.

getNotificationCapabilities

This method should be used when you want to retrieve the supported alarm/notifications types from either the end node or the last known types from the cache. Please note that this methods is only applicable if the Alarm/Notification Command Class supports version 2 or above.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getNotificationCapabilities",
  "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="getNotificationCapabilities"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
True if the supported types should be fetched from the end node and false if it should be retrieved from the cache (default value.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getNotificationCapabilities",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "notification": {
        "lastUpdated": <string>,
        "hasVendorSpecificType": <boolean>,
        "zwaveAlarmTypeList": [
          {
            "type": <string>,
            "code": <integer>
          }
        ]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getNotificationCapabilities"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.notification.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.notification.hasVendorSpecificType=<boolean>True if the vendor specific alarm/notification type is supported.
data.interface.notification.zwaveAlarmTypeList=[<object>]A list containing the supported Z-Wave alarm/notification types. The most common alarm/notification types can be found in the Common Z-Wave alarm types table below, although please note that vendor specific types also exists. This parameter is only valid if the Alarm/Notification Command Class supports version 2 or above.
data.interface.notification.zwaveAlarmTypeList.type=<string>The alarm/notification type denoted as vendorSpecific when it belongs to a certain vendor.
data.interface.notification.zwaveAlarmTypeList.code=<integer>The corresponding code.
Common Z-Wave alarm types
Z-Wave alarm typeCodeDescription
smoke1Smoke alarm
co2Carbon monoxide alarm
co23Carbon dioxide alarm
heat4Heat alarm
water5Water alarm
lock6Lock access control alarm
burglar7Burglar alarm or home security
power8Power management alarm
system9System alarm
emergency10Emergency alarm
clock11Alarm clock
appliance12Home appliance alarm
health13Home health alarm
siren14Siren alarm
waterValve15Water valve alarm
weather16Weather alarm
irrigation17Irrigation alarm
gas18Gas alarm
pestControl19Pest control
lightSensor20Light sensor
waterQuality21Water quality monitoring
homeMonitor22Home monitoring

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getNotificationCapabilities",
  "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="getNotificationCapabilities"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.

getNotificationEventSupport

This method should be used when you want to check the events supported by a specific alarm/notification type from the end node or the cache. Please note that this method is only applicable if the Alarm/Notification Command Class supports version 3 or above.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getNotificationEventSupport",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>,
    "zwaveAlarmType": <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="getNotificationEventSupport"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the supported types should be fetched from the end node, false if it should be retrieved from the cache (default value).
params.zwaveAlarmType=<string>The alarm/notification type. The most common alarm/notification types can be found in the Common Z-Wave alarm types table in getNotificationCapabilities

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getNotificationEventSupport",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "notification": {
        "lastUpdated": <string>,
        "zwaveAlarmType": <string>,
        "zwaveEventList": [<integer>]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getNotificationEventSupport"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.notification.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.notification.zwaveAlarmType=<string>The given alarm/notification type.
data.interface.notification.zwaveEventList=[<integer>]A list of codes denoting the supported events for the specified alarm/notification type.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getNotificationEventSupport",
  "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="getNotificationEventSupport"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.

getNotificationState

This method should be used when you want to check the state of the alarm/notification device when it is operating in push mode or a pending notification when operating in pull mode in either the end node or cache. Please note that an alarm/notifications report list should not be used as a history log since newer reports might overwrite older reports.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getNotificationState",
  "params": {
    "interfaceDescriptor": <integer>,
    "refresh": <boolean>,
    "vendorAlarmType": <integer>,
    "zwaveAlarmType": <string>,
    "zwaveEvent": <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="getNotificationState"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the supported types should be fetched from the end node, false if it should be retrieved from the cache (default value).
params.vendorAlarmType=<integer>The vendor specific alarm type that defaults to 0 when not in use. -1 indicates no favorites when retrieving from the cache.
params.zwaveAlarmType=<string>OptionalThe alarm/notification type that defaults to latest if not used. Using latest as input will only give you the latest alarm/notification report. The most common alarm/notification types can be found in the Common Z-Wave alarm types table in getNotificationCapabilities
This parameter is only applicable for Alarm/Notification Command Class version 2 or above.
params.zwaveEvent=<integer>
Optional
Valid only when operating in push mode and defaults to 0 (latest) when not used. In cases where an alarm type has been specified it will be the latest event of that type. Please note that this is only valid if the Alarm/Notification Command Class supports version 3 and above.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getNotificationState",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "notification": {
        "report": {
          "lastUpdated": <string>,
          "vendorAlarmType": <integer>,
          "vendorAlarmLevel": <integer>,
          "extendedInfoValid": <boolean>,
          "extendedInfoAlarmStatus": <string>,
          "extendedInfoAlarmType": <string>,
          "extendedInfoAlarmEvent": <integer>,
          "extendedInfoParameterLength": <integer>,
          "extendedInfoParameterType": <string>,
          "extendedInfoParameter": <integer>,
          "extendedInfoLocation": <string>
        }
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getNotificationState"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.notification.report=<object>An alarm/notification report.
data.interface.notification.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.notification.report.vendorAlarmType=<integer>The vendor specific alarm type.
data.interface.notification.report.vendorAlarmLevel=<integer>The vendor specific alarm level.
data.interface.notification.report.extendedInfoValid=<boolean>True if the extended information fields should be considered valid. Please note that this is only valid if the Alarm/Notification Command Class supports version 2 and above.
data.interface.notification.report.extendedInfoAlarmStatus=<string>The Z-Wave alarm/notification status. See the Z-Wave alarm statuses table below for available statuses. Please note that this is only valid if the Alarm/Notification Command Class supports version 2 and above.
data.interface.notification.report.extendedInfoAlarmType=<string>The Z-Wave alarm/notification type. The most common types can be found in the Common Z-Wave alarm types in getNotificationCapabilities. Please note that this is only valid if the Alarm/Notification Command Class supports version 2 and above.
data.interface.notification.report.extendedInfoAlarmEvent=<integer>The Z-Wave event. Please note that this is only valid if the Alarm/Notification Command Class supports version 2 and above.
data.interface.notification.report.extendedInfoParameterLength=<integer>The event parameter length measured in bytes. 0 means that no parameters are present. Please note that this is only valid if the Alarm/Notification Command Class supports version 2 and above.
data.interface.notification.report.extendedInfoParameterType=<string>The event parameter type. Available types are listed in the Extended info parameter types definitions table below. Please note that this is only valid if the Alarm/Notification Command Class supports version 2 and above.
data.interface.notification.report.extendedInfoParameter=<integer>The event parameter that is only available if extendedInfoParameterType is not set to location. Please note that this is only valid if the Alarm/Notification Command Class supports version 2 and above.
data.interface.notification.report.extendedInfoLocation=<string>The UTF-8 encoded event parameter that is only available if extendedInfoParameterType is set to location. Please note that this is only valid if the Alarm/Notification Command Class supports version 2 and above.
Z-Wave alarm statuses
Alarm statusDescription
deactivatedThe unsolicited alarm/notification report is deactivated (push mode), or the report messages carries valid notification information (pull mode).
activatedThe unsolicited alarm/notification report is activated (push mode).
noPendingNoticeThe report messages do not carry valid notification information. The queue is empty.
Extended info parameter types definitions
Parameter typeDescription
locationThe device location.
userIDThe user ID. Can be either 1 or 2 bytes long, with the first byte being the MSB.
oemErrorThe OEM proprietary system failure code.
proprietaryThe proprietary event parameters.
eventIDThe at this stage not active Event ID.
unknownThe unknown alarm/notification event parameters.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getNotificationState",
  "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="getNotificationState"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.

setNotificationState

This method should be used when you want to set the state of a specific Z-Wave alarm/notification type when the device is operating in push mode, or clear a persistent notification when the device is operating in pull mode. Please note that this method is only applicable if the Alarm/Notification Command Class supports version 2 or above.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setNotificationState",
  "params": {
    "interfaceDescriptor": <integer>,
    "zwaveAlarmType": <string>,
    "status": <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="setNotificationState"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.zwaveAlarmType=<string>The alarm/notification type. The most common alarm/notification types can be found in the Common Z-Wave alarm types table in getNotificationCapabilities
params.status=<integer>For alarms operating in push mode:
0 = disable an unsolicited report.
255 = enable an unsolicited report.
For alarms operating in pull mode:
0 = clears a persistent notification.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

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

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setNotificationState",
  "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="setNotificationState"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.

getCentralSceneCapabilities

This method should be used when you want to check supported scene capabilities, including the maximum supported scenes and key attributes, of either the end node or cache.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getCentralSceneCapabilities",
  "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="getCentralSceneCapabilities"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the capabilities should be fetched from the end node, false if it should be retrieved from the cache (default value).

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getCentralSceneCapabilities",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "centralScene": {
        "lastUpdated": <string>,
        "maxSceneCount": <integer>,
        "slowRefresh": <boolean>,
        "keyAttributes": [
          {
            "sceneNumber": <integer>,
            "support": [<string>]
          }
        ]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getCentralSceneCapabilities"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.centralScene.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.centralScene.maxSceneCount=<integer>The maximum number of scenes.
data.interface.centralScene.slowRefresh=<boolean>true if slow refresh is supported, false if it isn’t.
data.interface.centralScene.keyAttributes=[<object>]Only valid if the Central Scene Command Class supports version 2 and above.
data.interface.centralScene.keyAttributes.sceneNumber=<integer>The scene number.
data.interface.centralScene.keyAttributes.support=[<string>]An array of key attributes defined in the Central scene key attributes table below.
Central scene key attributes
Key attributesCodeDescription
singleKeyPress0A key is pressed and released before timeout.
keyReleased1A key is released, terminating a keyHeldDown sequence.
keyHeldDown2A key is pressed and not released before timeout.
keyPress2Times3A key is pressed two times.
keyPress3Times4A key is pressed three times.
keyPress4Times5A key is pressed four times.
keyPress5Times6A key is pressed five times.
unknownN.AUnknown.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getCentralSceneCapabilities",
  "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="getCentralSceneCapabilities"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.

getCentralSceneConfiguration

This method should be used when you want to check the configuration value of a scene notification in the end node. Please note that this methods is only applicable if the Central Scene Command Class supports version 3 or above.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getCentralSceneConfiguration",
  "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="getCentralSceneConfiguration"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": "getCentralSceneConfiguration",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "centralScene": {
        "lastUpdated": <string>,
        "slowRefresh": <boolean>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getCentralSceneConfiguration"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.centralScene.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.centralScene.slowRefresh=<boolean>The slow refresh status of the keyHeldDown notification. true if enabled, false otherwise.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getCentralSceneConfiguration",
  "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="getCentralSceneConfiguration"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.

setCentralSceneConfiguration

This method should be used when you want to configure a scene notification. Please note that this methods is only applicable if the Central Scene Command Class supports version 3 or above.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setCentralSceneConfiguration",
  "params": {
    "interfaceDescriptor": <integer>,
    "slowRefresh": <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="setCentralSceneConfiguration"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.slowRefresh=<boolean>true if slow refresh should be used, false otherwise.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

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

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setCentralSceneConfiguration",
  "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="setCentralSceneConfiguration"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.

getCentralSceneState

This method should be used when you want to check the cached central scene data.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getCentralSceneState",
  "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="getCentralSceneState"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": "getCentralSceneState",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "centralScene": {
        "lastUpdated": <string>,
        "sequenceNumber": <integer>,
        "keyAttribute": <string>,
        "sceneNumber": <integer>,
        "slowRefresh": <boolean>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getCentralSceneState"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.centralScene.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.centralScene.sequenceNumber=<integer>The sequence number incremented when a new report is issued.
data.interface.centralScene.keyAttribute=<string>The key attribute. The available key attributes are specified in the Central scene key attributes table in getCentralSceneCapabilities.
data.interface.centralScene.sceneNumber=<integer>The actual scene identifier.
data.interface.centralScene.slowRefresh=<boolean>The status for the slow refresh of the keyHeldDown notification. true if enabled, false otherwise.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getCentralSceneState",
  "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="getCentralSceneState"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.

getAntiTheftUnlockState

This method should be used when you want to retrieve the current anti-theft unlock state from either 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": "getAntiTheftUnlockState",
  "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="getAntiTheftUnlockState"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 (default value).

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getAntiTheftUnlockState",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "antiTheftUnlock": {
        "lastUpdated": <string>,
        "stateNum": <integer>,
        "state": <boolean>,
        "restricted": <boolean>,
        "hint": <string>,
        "manufacturerID": <integer>,
        "entityID": <integer>
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getAntiTheftUnlockState"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.centralScene.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.antiTheftUnlock.stateNum=<integer>Indicates the number of state changes. Please note that the counter will loop from 0 when it reaches 0xFFFF.
data.interface.antiTheftUnlock.state=<boolean>true if locked, false otherwise.
data.interface.antiTheftUnlock.restricted=<boolean>true if the node is running in restricted mode.
data.interface.antiTheftUnlock.hint=<string>A hex string consisting of between 0–10 bytes and containing hints that helps you retrieve the Magic Code needed to unlock.
data.interface.antiTheftUnlock.manufacturerID=<integer>The manufacturer ID belonging to the company whose product has locked the node.
data.interface.antiTheftUnlock.entityID=<integer>The entity ID, a unique identifier for the entity that locked the node.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getAntiTheftUnlockState",
  "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="getAntiTheftUnlockState"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.

setAntiTheftUnlockState

This method should be used when you want to unlock a node.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setAntiTheftUnlockState",
  "params": {
    "interfaceDescriptor": <integer>,
    "code": <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="setAntiTheftUnlockState"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.code=<string>The Magic Code used to unlock the node with a hex string between 1–10 bytes, where every byte is represented by two characters. For example, 0x01 0x02 0xFF would be presented as 0102FF.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

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

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setAntiTheftUnlockState",
  "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="setAntiTheftUnlockState"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.

setTemperatureThreshold

This method should be used when you want to set the value for a temperature threshold that will activate when the temperature goes above or below the specified threshold. Omitting any optional parameters means that the current value for those parameters are kept.

Please note that your device needs to support Multilevel Sensor Command Class to use this method.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "setTemperatureThreshold",
  "params": {
    "endpointDescriptor": <integer>,
    "active": <boolean>,
    "warningRule": <string>,
    "threshold": <integer>,
    "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="setTemperatureThreshold"The method that should be used.
params.endpointDescriptor=<integer>The endpoint descriptor.
params.active=<boolean>Defines the state of the temperature threshold functionality. Can be either active true or inactive false.
params.warningRule=<string>OptionalDefines when the temperature threshold event should be triggered. Can be either above or below.
params.threshold=<integer>OptionalThe threshold value that may be either above or below the target temperature depending on warningRule. Hysteresis is not included.
params.unit=<string>OptionalThe supported temperature units. Can be either Celsius or Fahrenheit.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

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

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setTemperatureThreshold",
  "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="setTemperatureThreshold"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.

getTemperatureThreshold

This method should be used when you want to check the current settings for the temperature threshold.

Please note that your device needs to support Multilevel Sensor Command Class to use this method.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/zwave.cgi HTTP/1.1
JSON input parameters
{
  "apiVersion": "<Major>",
  "context": <string>,
  "method": "getTemperatureThreshold",
  "params": {
    "endpointDescriptor": <integer>,
    "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="getTemperatureThreshold"The method that should be used.
params.endpointDescriptor=<integer>The endpoint descriptor.
params.unit=<string>
Optional
The supported temperature unit. Can be either Celsius (default) or Fahrenheit.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getTemperatureThreshold",
  "data": {
    "active": <boolean>,
    "warningRule": <string>,
    "threshold": <integer>
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getTemperatureThreshold"The requested method.
data.active=<boolean>Defines the state of the temperature threshold functionality. Can be either active true or inactive false.
data.warningRule=<string>Defines when the temperature threshold event should be triggered. Can be either above or below the specified value, however unknown will be returned if no value has been set.
data.threshold=<integer>The threshold value that may be either above or below the target temperature depending on warningRule. Hysteresis is not included. 0 will be returned if no value has been set.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getTemperatureThreshold",
  "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="getTemperatureThreshold"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.

setIoFunctionBinarySwitch

This method should be used when you want to set the binary-switch I/O functionality for an 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": "setIoFunctionBinarySwitch",
  "params": {
    "endpointDescriptor": <integer>,
    "ioPortNumber": <integer>,
    "invert": <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="setIoFunctionBinarySwitch"The method that should be used.
params.endpointDescriptor=<integer>The endpoint descriptor.
params.ioPortNumber=<integer>The I/O port number.
params.invert=<boolean>true turns on the Binary-switch when the I/O port is low, false turns on the Binary-switch when the I/O port is high.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

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

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setIoFunctionBinarySwitch",
  "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="setIoFunctionBinarySwitch"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.

setIoFunctionOneShot

This method should be used when you want to set the One-shot I/O functionality for an 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": "setIoFunctionOneShot",
  "params": {
    "endpointDescriptor": <integer>,
    "ioPortNumber": <integer>,
    "alarmType": <integer>,
    "event": <integer>,
    "invert": <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="setIoFunctionOneShot"The method that should be used.
params.endpointDescriptor=<integer>The endpoint descriptor.
params.ioPortNumber=<integer>The I/O port number.
params.alarmType=<integer>The alarm/notification type.
params.event=<integer>The event that sets the I/O port to high for a duration of time.
params.invert=<boolean>true turns on the Binary-switch when the I/O port is low, false turns on the Binary-switch when the I/O port is high.
params.duration=<integer>Specifies the time, in seconds, that the I/O port should be kept high or low depending on the invert flag before returning back to its default value.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

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

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setIoFunctionOneShot",
  "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="setIoFunctionOneShot"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.

setIoFunctionSetReset

This method should be used when you want to use the Set and Reset I/O functionality for an 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": "setIoFunctionSetReset",
  "params": {
    "endpointDescriptor": <integer>
    "ioPortNumber": <integer>,
    "setAlarmType": <integer>,
    "setEvent": <integer>,
    "resetAlarmType": <integer>,
    "resetEvent": <integer>,
    "invert": <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="setIoFunctionSetReset"The method that should be used.
params.endpointDescriptor=<integer>The endpoint descriptor.
params.ioPortNumber=<integer>The I/O port number.
params.setAlarmType=<integer>The alarm/notification type for the set event.
params.setEvent=<integer>The event that sets the I/O port to high.
params.resetAlarmType=<integer>The alarm/notification type for the reset event.
params.resetEvent=<integer>The reset event that resets the I/O port to low.
params.invert=<boolean>true inverts the action where the set event sets the I/O port to low and the reset event will set it back to high, while false uses the set event to set the I/O port to high and reset will set it back to low.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

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

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setIoFunctionSetReset",
  "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="setIoFunctionSetReset"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.

setIoFunctionToggle

This method should be used when you want to set the Toggle I/O functionality for an 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": "setIoFunctionToggle",
  "params": {
    "endpointDescriptor": <integer>,
    "ioPortNumber": <string>,
    "alarmType": <integer>,
    "event": <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="setIoFunctionToggle"The method that should be used.
params.endpointDescriptor=<integer>The endpoint descriptor.
params.ioPortNumber=<integer>The I/O port number.
params.alarmType=<integer>The alarm/notification type.
params.event=<integer>The I/O toggle event. In this case, the I/O port should be set to high if it was previously low, or low if it was high.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

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

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "setIoFunctionToggle",
  "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="setIoFunctionToggle"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.

removeIoFunction

This method should be used when you want to remove the I/O functionality from an 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": "removeIoFunction",
  "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="removeIoFunction"The method that should be used.
params.endpointDescriptor=<integer>The endpoint descriptor.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

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

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "removeIoFunction",
  "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="removeIoFunction"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.

getIoConfiguration

This method should be used when you want to retrieve the current I/O configuration for an 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": "getIoConfiguration",
  "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="getIoConfiguration"The method that should be used.
params.endpointDescriptor=<integer>The endpoint descriptor.

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getIoConfiguration",
  "data": {
    "endpointDescriptor": <integer>,
    "ioConfiguration": {
      "ioFunction": <string>,
      "enabled": <boolean>,
      "ioPortNumber": <integer>,
      "alarmType": <integer>,
      "event": <integer>,
      "resetAlarmType": <integer>,
      "resetEvent": <integer>,
      "invert": <boolean>,
      "duration": <integer>
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getIoConfiguration"The requested method.
data.endpointDescriptor=<integer>The given endpointDescriptor.
data.ioConfiguration.ioFunction=<string>The I/O function used by the end node configuration. Current values are Set/Reset, Toggle, One-shot and Binary-switch.
data.ioConfiguration.enabled=<boolean>A boolean indicating if the configuration is currently used.
data.ioConfiguration.ioPortNumber=<integer>The I/O port number.
data.ioConfiguration.alarmType=<integer>The alarm/notification type for the set event. This parameter is not used by the configuration if the value is 0.
data.ioConfiguration.event=<integer>The event used by the I/O function. This parameter is not used by the configuration if the value is 0.
data.ioConfiguration.resetAlarmType=<integer>The alarm/notification type for the reset event valid for the Set/Reset I/O function. This parameter is not used by the configuration if the value is 0.
data.ioConfiguration.resetEvent=<integer>The reset event valid for the Set/Reset I/O function. This parameter is not used by the configuration if the value is 0.
data.ioConfiguration.invert=<boolean>A boolean indicating if the I/O action should be inverted. This parameter is valid for the I/O functions Set/Reset, One-shot and Binary-switch.
data.ioConfiguration.duration=<integer>Specifies the duration, in seconds, when the I/O port should be high/low. This parameter is only valid for the I/O function One-shot.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getIoConfiguration",
  "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="getIoConfiguration"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.

getAllNotificationEventSupport

This method should be used when you want to retrieve all notification events supported by 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": "getAllNotificationEventSupport",
  "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="getAllNotificationEventSupport"The method that should be used.
params.interfaceDescriptor=<integer>The interface descriptor.
params.refresh=<boolean>
Optional
true if the supported types is fetched from the end node and false if it is retrieved from the cached. 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": "getAllNotificationEventSupport",
  "data": {
    "interface": {
      "interfaceDescriptor": <integer>,
      "notification": {
        "lastUpdated": <string>,
        "zwaveAlarmTypeList": [
          {
            "type": <string>,
            "code": <integer>,
            "zwaveEventList": [
              {
                "type": <string>,
                "code": <integer>
              }
            ]
          }
        ]
      }
    }
  }
}
ParameterDescription
apiVersionThe API version that was used in the request.
context=<string>
Optional
The context set by the user in the request.
method="getAllNotificationEventSupport"The requested method.
data.interface.interfaceDescriptor=<integer>The interface descriptor.
data.interface.notification.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.notification.zwaveAlarmTypeList=[<object>]A list containing the supported Z-Wave alarm/notification types and their corresponding zwaveEventList.
data.interface.notification.zwaveAlarmTypeList.type=<integer>The alarm/notification type.
data.interface.notification.zwaveAlarmTypeList.code=<integer>A code denoting the alarm/notification type. The most common alarm/notification can be found in the table Common Z-Wave alarm types in getNotificationCapabilities.
data.interface.notification.zwaveAlarmTypeList.zwaveEventList=[object]Lists the events supported by the specified alarm/notification type.
data.interface.notification.zwaveAlarmTypeList.zwaveEventList.type=<string>An event name denoting the supported event for a specific alarm/notification type.
data.interface.notification.zwaveAlarmTypeList.zwaveEventList.code=<integer>A code denoting the supported event for a specific alarm/notification type.

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getAllNotificationEventSupport",
  "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="getAllNotificationEventSupport"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.

getSupportedVersions

This method should be used when you want to retrieve a list containing API versions supported by your device.

Request

Security level

Administrator

Method

POST

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

Return value - Success

HTTP Code

200 OK

Content-Type

application/json

Response body syntax
{
  "context": <string>,
  "method": "getSupportedVersions",
  "data": {
    "apiVersions": [ "<Major1>.<Minor1>", "<Major2>.<Minor2>" ]
  }
}
ParameterDescription
context=<string>
Optional
The context set by the user in the request.
method="getSupportedVersions"The requested method.
data.apiVersions[]=<list of versions>A list containing all supported major versions along with their highest minor version, e.g. [“1.0”, “1.2”].

Return value - Failure

HTTP Code

400 Bad Request

Content-Type

application/json

Response body syntax
{
  "apiVersion": "<Major>.<Minor>",
  "context": <string>,
  "method": "getSupportedVersions",
  "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="getSupportedVersions"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.

General error codes

The following table lists the errors that may occur for any CGI method, while you will find the method specific errors under their corresponding API description. JSON error codes exists in the following ranges:

1100–1199

Generic error codes common for many APIs and reserved for server errors such as “Maximum number of configurations reached”. The actual cause can be seen in the server log and can sometimes be solved by restarting the device.

1200–1999

API-specific server errors that may collide between different APIs.

2100–2199

Generic error codes common to many APIs and reserved for client errors such as “Invalid parameter”. These errors should be possible to solve by changing the input data to the API.

2200–2999

API-specific client errors that may collide between different APIs.

Note
The 4–digit error codes are returned in the JSON body when the service is executed, which means that the client must be prepared to handle transport-level errors codes with non-JSON responses. Specifically, HTTP error 401/403 will be emitted if either authentication or authorization fails.
JSON CodeHTTP CodeDescription
1100500Internal error.(1)
1200400Z-Wave is disabled.
1201500Open file error.
2100400API version not supported.
2101400Invalid JSON.
2102400Method not supported.
2103400Required parameter missing.
2104400Invalid parameter value specified.
2105403Authorization failed.
2106401Authentication failed.
21074XX, 5XXTransport-level error.
2200400Bad interface descriptor.
2201400Command Class Version not supported.
2202400Bad endpoint descriptor.
2203400Timeout.
2204400Operation already in progress.
2205400Maximum nodes reached.
.........
  1. Out-of-memory errors are reported as 1100 Internal error.

Events

Battery State Changed Event

This event can be invoked whenever a battery state change is detected and contains the interfaceDescriptor, which can be used to retrieve the new battery state.

Battery State Changed Event
<tt:MetadataStream xmlns:tt="http://www.onvif.org/ver10/schema">
  <tt:Event>
    <wsnt:NotificationMessage xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsaxis="http://www.axis.com/2009/event/topics" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa5="http://www.w3.org/2005/08/addressing">
      <wsnt:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">tns1:Device/tnsaxis:ZWave/batteryState/Changed</wsnt:Topic>
      <wsnt:ProducerReference>
        <wsa5:Address>uri://5195f286-aa2f-46b6-9bce-930d35856e27/ProducerReference</wsa5:Address>
      </wsnt:ProducerReference>
      <wsnt:Message>
        <tt:Message UtcTime="2021-06-23T07:30:52.335597Z">
          <tt:Source>
            <tt:SimpleItem Name="interfaceDescriptor" Value="8388873"/>
          </tt:Source>
          <tt:Data></tt:Data>
        </tt:Message>
      </wsnt:Message>
    </wsnt:NotificationMessage>
  </tt:Event>
</tt:MetadataStream>

Binary Switch State Changed Event

This event can be invoked whenever a binary switch state change is detected and contains the interfaceDescriptor, which can be used to retrieve a new binary switch state.

Binary Switch State Changed Event
<tt:MetadataStream xmlns:tt="http://www.onvif.org/ver10/schema">
  <tt:Event>
    <wsnt:NotificationMessage xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsaxis="http://www.axis.com/2009/event/topics" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa5="http://www.w3.org/2005/08/addressing">
      <wsnt:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">tns1:Device/tnsaxis:ZWave/binarySwitchState/Changed</wsnt:Topic>
      <wsnt:ProducerReference>
        <wsa5:Address>uri://5195f286-aa2f-46b6-9bce-930d35856e27/ProducerReference</wsa5:Address>
      </wsnt:ProducerReference>
      <wsnt:Message>
        <tt:Message UtcTime="2021-06-23T08:36:15.504761Z">
          <tt:Source>
            <tt:SimpleItem Name="interfaceDescriptor" Value="2425094"/>
          </tt:Source>
          <tt:Data></tt:Data>
        </tt:Message>
      </wsnt:Message>
    </wsnt:NotificationMessage>
  </tt:Event>
</tt:MetadataStream>

Multilevel Sensor State Changed Event

This event can be invoked whenever a multilevel sensor state change is detected and contains the interfaceDescriptor, which can be used to retrieve a new multilevel sensor state. Additionally, it also contains the sensor type that was changed.

Multilevel Sensor State Changed Event
<tt:MetadataStream xmlns:tt="http://www.onvif.org/ver10/schema">
  <tt:Event>
    <wsnt:NotificationMessage xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsaxis="http://www.axis.com/2009/event/topics" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa5="http://www.w3.org/2005/08/addressing">
      <wsnt:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">tns1:Device/tnsaxis:ZWave/multilevelSensorState/Changed</wsnt:Topic>
      <wsnt:ProducerReference>
        <wsa5:Address>uri://5195f286-aa2f-46b6-9bce-930d35856e27/ProducerReference</wsa5:Address>
      </wsnt:ProducerReference>
      <wsnt:Message>
        <tt:Message UtcTime="2021-06-23T08:45:45.956367Z">
          <tt:Source>
            <tt:SimpleItem Name="interfaceDescriptor" Value="3211530"/>
          </tt:Source>
          <tt:Data>
            <tt:SimpleItem Name="sensorType" Value="lumSensor"/>
          </tt:Data>
        </tt:Message>
      </wsnt:Message>
    </wsnt:NotificationMessage>
  </tt:Event>
</tt:MetadataStream>

Node Alive State Changed Event

This event can be invoked whenever a node alive state change is detected and contains both the nodeDescriptor and the new alive state of a node.

Node Alive State Changed Event
<tt:MetadataStream xmlns:tt="http://www.onvif.org/ver10/schema">
  <tt:Event>
    <wsnt:NotificationMessage xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsaxis="http://www.axis.com/2009/event/topics" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa5="http://www.w3.org/2005/08/addressing">
      <wsnt:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">tns1:Device/tnsaxis:ZWave/nodeState/Changed</wsnt:Topic>
      <wsnt:ProducerReference>
        <wsa5:Address>uri://5195f286-aa2f-46b6-9bce-930d35856e27/ProducerReference</wsa5:Address>
      </wsnt:ProducerReference>
      <wsnt:Message>
        <tt:Message UtcTime="2021-06-23T08:43:33.660643Z">
          <tt:Source>
            <tt:SimpleItem Name="nodeDescriptor" Value="6"/>
          </tt:Source>
          <tt:Data>
            <tt:SimpleItem Name="aliveState" Value="unavailable"/>
          </tt:Data>
        </tt:Message>
      </wsnt:Message>
    </wsnt:NotificationMessage>
  </tt:Event>
</tt:MetadataStream>

Operation Changed Event

This event can be invoked whenever an operation change is detected and contains both the current and new operations, as well as the current operation status.

Operation Changed Event
<tt:MetadataStream xmlns:tt="http://www.onvif.org/ver10/schema">
  <tt:Event>
    <wsnt:NotificationMessage xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsaxis="http://www.axis.com/2009/event/topics" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa5="http://www.w3.org/2005/08/addressing">
      <wsnt:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">tns1:Device/tnsaxis:ZWave/operation/Changed</wsnt:Topic>
      <wsnt:ProducerReference>
        <wsa5:Address>uri://5195f286-aa2f-46b6-9bce-930d35856e27/ProducerReference</wsa5:Address>
      </wsnt:ProducerReference>
      <wsnt:Message>
        <tt:Message UtcTime="2021-06-23T08:41:18.833203Z">
          <tt:Source>
            <tt:SimpleItem Name="operation" Value="operationAddNode/>
          </tt:Source>
          <tt:Data>
            <tt:SimpleItem Name="status" Value="operationStatusNone"/>
            <tt:SimpleItem Name="prevOperation" Value="operationNone"/>
          </tt:Data>
        </tt:Message>
      </wsnt:Message>
    </wsnt:NotificationMessage>
  </tt:Event>
</tt:MetadataStream>

The event stream

As a client, you can subscribe to events from the VAPIX/ONVIF event stream described in http://www.onvif.org/onvif/ver10/schema/onvif.xsd . When using VAPIX, you can retrieve the stream over RTSP using the following url:

rtsp://<servername>/axis-media/media.amp?event=on&eventtopic=onvif:Device/axis:ZWave//