Get DataSources
Last updated - 23 July, 2025
You 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.