REST API Developer's Guide

Update Device Properties

You can use LogicMonitor's REST API to programmatically update device properties.  There are two ways to do this:

  1. 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.
  2. 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
signature = base64.b64encode(hmac.new(AccessKey,msg=requestVars,digestmod=hashlib.sha256).hexdigest())

#Construct headers
auth = 'LMv1 ' + AccessId + ':' + signature + ':' + 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