REST API Developer's Guide

Add a Device

You can use LogicMonitor's REST API to programmatically add device to your account.

As with all of our API calls, authentication is required.

 

HTTP Method: POST

URI: /device/devices

Request Parameters: You can POST the following properties for all new devices

Property

Description

Required?

Type

Example

name The host name or IP address of the device Yes String "name":"10.36.11.240"
displayName The display name of the device Yes String "displayName":"ProdServer24"
preferredCollectorId The Id of the preferred collector assigned to monitor the device Yes Integer "preferredCollectorId":85
hostGroupIds The Id(s) of the groups the device is in, where multiple group ids should be comma separated No. Defaults to "1" (root group). String "hostGroupIds":"2,34"
description The device description No String "description":"A server in the LA Datacenter"
disableAlerting Indicates whether alerting is disabled (true) or enabled (false) for this device No. Defaults to false. Boolean "disableAlerting":false
link The URL link associated with the device No String "link":"https://status.aws.amazon.com"
enableNetflow Indicates whether Netflow is enabled (true) or disabled (false) for the device No. Default to false. Boolean "enableNetflow":false
netflowCollectorId The Id of the netflow collector associated with the device Only if enableNetflow=true Integer "netflowCollectorId":125
customProperties Define custom properties for this device. Each property needs to have a name and a value. No JSON object "customProperties":[{"name":"snmp.version","value":"v2c"},{"name":"location","value":"Santa Barbara, CA"}]

 

Example Request

The following Python script adds a device with IP address is 172.16.19.171 to the device group with id 2 in account apiAccount.logicmonitor.com:

#!/bin/env python

import requests
import json
import hashlib
import base64
import time
import hmac

#Account Info
AccessId ='J62te62B8u7WnCR846h6'
AccessKey ='{[H^LX=^Zg^32yp-x(-2Bq22vZ~^u-k3)8!9[7U^'
Company = 'apiAccount'

#Request Info
httpVerb ='POST'
resourcePath = '/device/devices'
data = '{"name":"172.16.19.171","displayName":"ProdServer25","preferredCollectorId":171,"hostGroupIds":2,"customProperties":[{"name":"snmp.version","value":"v3"},{"name":"location","value":"Santa Barbara,CA"}]}'

#Construct URL 
url = 'https://'+ Company +'.logicmonitor.com/santaba/rest' + resourcePath

#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.post(url, data=data, headers=headers)

#Print status and body of response
print 'Response Status:',response.status_code
print 'Response Body:',response.content

 

Example Response

Response Status: 200
Response Body: {
  "status" : 200,
  "errmsg" : "OK",
  "data" : {
    "id" : 409,
    "name" : "172.16.19.171",
    "displayName" : "ProdServer25",
    "deviceType" : 0,
    "relatedDeviceId" : -1,
    "currentCollectorId" : 171,
    "preferredCollectorId" : 171,
    "preferredCollectorGroupId" : 1,
    "preferredCollectorGroupName" : "@default",
    "description" : "",
    "createdOn" : 1466462717,
    "updatedOn" : 1466462717,
    "disableAlerting" : false,
    "autoPropsAssignedOn" : 0,
    "autoPropsUpdatedOn" : 0,
    "scanConfigId" : 0,
    "link" : "",
    "enableNetflow" : false,
    "netflowCollectorId" : 0,
    "netflowCollectorGroupId" : 0,
    "netflowCollectorGroupName" : null,
    "lastDataTime" : 0,
    "lastRawdataTime" : 0,
    "hostGroupIds" : "2",
    "sdtStatus" : "none-none-none",
    "userPermission" : "write",
    "hostStatus" : "normal",
    "alertStatus" : "none",
    "alertStatusPriority" : 100000,
    "awsState" : 1,
    "alertDisableStatus" : "none-none-none",
    "alertingDisabledOn" : null,
    "collectorDescription" : "SARAHSWINDOWSVM",
    "netflowCollectorDescription" : null,
    "customProperties" : [ {
      "name" : "location",
      "value" : "Santa Barbara,CA"
    }, {
      "name" : "snmp.version",
      "value" : "v3"
    }, {
      "name" : "system.categories",
      "value" : ""
    } ],
    "upTimeInSeconds" : 0,
    "deletedTimeInMs" : 0,
    "toDeleteTimeInMs" : 0,
    "hasDisabledSubResource" : false,
    "manualDiscoveryFlags" : null
  }
}