Update Device Properties
Last updated on 24 February, 2021You can use LogicMonitor’s REST API to programmatically update device properties. There are two ways to do this:
- by making a PATCH request to the devices resource – you can update only the customProperties object and keep the remaining fields the same. By using opType = replace, you can replace the values of one or more properties within the customProperties object.
- by updating the specific property value via the device property resource
Note: As with all of our API calls, authentication is required.
Update a property via the device property resource
HTTP Method: PUT
Resource URI: /device/devices/{deviceID}/properties/{propertyName}
Where deviceID is the ID of the device you’d like to update a property for, which you can get from the devices resource. propertyName is the name of the property you’d like to update (in all lower case).
You’ll need to include the updated value in your PUT request.
Example
The following Python script updates the value of property proddc for device 4374:
#!/bin/env python
import requests
import json
import hashlib
import base64
import time
import hmac
#Account Info
AccessId ='48v2wRzfK94y53sq5EuF'
AccessKey ='H_D9i(f5~B^U36^K6i42=^nS~e75gy382Bf6{)P+'
Company = 'api'
#Request Info
httpVerb ='PUT'
resourcePath = '/device/devices/4374/properties/proddc'
queryParams =''
data = '{"value":"DC"}'
#Construct URL
url = 'https://'+ Company +'.logicmonitor.com/santaba/rest' + resourcePath + queryParams
#Get current time in milliseconds
epoch = str(int(time.time() * 1000))
#Concatenate Request details
requestVars = httpVerb + epoch + data + resourcePath
#Construct signature
hmac1 = hmac.new(AccessKey.encode(),msg=requestVars.encode(),digestmod=hashlib.sha256).hexdigest()
signature = base64.b64encode(hmac1.encode())
#Construct headers
auth = 'LMv1 ' + AccessId + ':' + signature.decode() + ':' + epoch
headers = {'Content-Type':'application/json','Authorization':auth}
#Make request
response = requests.put(url, data=data, headers=headers)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)