Get DataSources
Last updated on 13 June, 2022You can use LogicMonitor’s REST API to programmatically:
- Get a list of all datasources in your account
- Get information about a particular datasource in your account
- Get information about devices associated with a datasource in your account
- Get the update history for a particular datasource
As with all of our API requests, authentication is required.
Get a list of datasources
Returns a list of datasources
HTTP Method:GET
URI: /setting/datasources
Request Parameters:
By default, 50 datasources will be returned. You can include sort, filter, fields, size, and offset parameters to control what data is included in the response and how it is formatted.
Property | Syntax | Description | Example URI |
sort | sort={+ or -}property | Sorts the response by the property specified in either increasing (+) or decreasing (-) order | /setting/datasources?sort=-id |
filter | filter=property{operator}value | Filters the response according to the operator and value specified. Note that you can use * to match on more than one character.You can use the ‘.’ character to filter values within an object (e.g. custom properties), and multiple filters can be separated by a comma.
Operators include:
|
/setting/datasources?filter=name:QAservice |
fields | fields={list of properties separated by commas} | Filters the response to only include the following fields for each object | /setting/datasources?fields=name,id |
size | size=integer | The number of results to display. A default of 50 results will be displayed, and size can be specified up to 1000. | /setting/datasources?size=5 |
offset | offset=integer | The number of results to offset the displayed results by | /setting/datasources?offset=2 |
Example 1: Get a list of datasources
The following Python script requests datasources in the api.logicmonitor.com account:
#!/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 ='GET'
resourcePath = '/setting/datasources'
queryParams = ''
data = ''
#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.get(url, data=data, headers=headers)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
Example 2: Get a list of datasources
The following Python script will return the id and name for datasources in api.logicmonitor.com, where the results sorted in ascending order by the id:
#!/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 ='GET'
resourcePath = '/setting/datasources'
queryParams = '?fields=id,name&sort=+id'
data = ''
#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.get(url, data=data, headers=headers)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
Example 3: Get a list of datasources
The following Python request will return datasources in api.logicmonitor.com that have an applies to function including “isLinux”:
#!/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 ='GET'
resourcePath = '/setting/datasources'
queryParams = '?filter=appliesTo~isLinux'
data = ''
#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.get(url, data=data, headers=headers)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
Get information about a particular datasource
Returns details for a particular datasource
HTTP Method:GET
URI: /setting/datasources/{id}
Request Parameters:You can include a filter parameter to control which properties are displayed in the response and how they are formatted:
Property | Syntax | Description | Example URI |
fields | fields={list of properties separated by commas} | Filters the response to only include the following fields for each object | /setting/datasources/{id}?fields=name,id |
Example 1: Get information about a particular datasource
The following Python script returns the details for the datasource with id of 345
#!/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 ='GET'
resourcePath = '/setting/datasources/345'
queryParams = ''
data = ''
#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.get(url, data=data, headers=headers)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
Get devices associated with a datasource
Returns a list of devices associated with a datasource
HTTP Method:GET
URI: /setting/datasources/{id}/devices
Where {id} should be replaced with the datasource id.
Request Parameters:
By default, 50 devices will be returned. You can include sort, filter, fields, size, and offset parameters to control what data is included in the response and how it is formatted.
Property | Syntax | Description | Example URI |
sort | sort={+ or -}property | Sorts the response by the property specified in either increasing (+) or decreasing (-) order | /setting/datasources/12/devices?sort=-id |
filter | filter=property{operator}value | Filters the response according to the operator and value specified. Note that you can use * to match on more than one character.You can use the ‘.’ character to filter values within an object (e.g. custom properties), and multiple filters can be separated by a comma.
Operators include:
|
/setting/datasources/13/devices?filter=hasActiveInstance:true |
fields | fields={list of properties separated by commas} | Filters the response to only include the following fields for each object | /setting/datasources/14/devices?fields=name,id |
size | size=integer | The number of results to display. A default of 50 results will be displayed, and size can be specified up to 1000. | /setting/datasources/15/devices?size=5 |
offset | offset=integer | The number of results to offset the displayed results by | /setting/datasources/16/devices?offset=2 |
#!/bin/env python
import requests
import json
import hashlib
import base64
import time
import hmac
#Account Info
AccessId ='ACCESS_ID'
AccessKey ='ACCESS_KEY'
Company = 'COMPANY_NAME'
#Request Info
httpVerb ='GET'
resourcePath = '/setting/datasources/247527051/devices'
queryParams = ''
data =''
#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.get(url, data=data, headers=headers)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
Get update history for a DataSource
Returns a list of update reasons for a DataSource
HTTP Method:GET
URI: /setting/datasources/{id}/updatereasons
Where {id} should be replaced with the datasource id.