Get Websites
Last updated on 14 July, 2021You can use LogicMonitor’s REST API to programmatically get information about your LogicMonitor websites. You can either get a list of websites or you can get details for a particular website.
Note that scripted web checks will not be returned via v1 of the REST API, and that you should use v2 to get and manage these resources.
Get a list of Websites
Returns a list of websites
HTTP Method: GET
URI: /service/services
Request Parameters: By default, a list of 50 services will be returned. You can include sort, filter, fields, size and offset parameters in your request to control what data is included in the response and how it is formatted. Note that query parameters are not considered part of the resource path, and should not be included the calculation of the LMv1 authentication signature.
Property | Syntax | Description | Example URI |
sort | sort={+ or -}property | Sorts the response by the property specified in either increasing (+) or decreasing (-) order | /service/services?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:
|
/service/services?filter=name:QAservice |
fields | fields={list of properties separated by commas} | Filters the response to only include the following fields for each object | /service/services?fields=name,id |
size | size=integer | The number of results to display. Max is 1000. | /service/services?size=5 |
offset | offset=integer | The number of results to offset the displayed results by | /service/services?offset=2 |
Get information about a particular website
Returns details for a particular website
HTTP Method:GET
URI: /service/services/{id}
Request Parameters: You can include a filter parameter that controls which properties are displayed in the response:
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 | /service/services/{id}?fields=name,id |
Examples
The following examples illustrate GET requests to the Websites (Services) resource in Python:
- Example 1: GET all Websites, where all fields are returned for each website
- Example 2: GET all Websites, where a limited number of fields are returned for each website
- Example 3: GET one Website, where all fields are returned for that Website
- Example 4: GET one Website, where a limited number of fields are returned for the Website
Example 1: GET all Websites
The following Python 3 script returns a list of all services in the api.logicmonitor.com portal.
#!/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 = 'api' #Request Info: Get Services httpVerb ='GET' resourcePath = '/service/services' #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 + 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, headers=headers) #Print status and body of response print('Response Status:',response.status_code) print('Response Body:',response.content)
Output:
{ "status" : 200, "errmsg" : "OK", "data" : { "total" : 5, "items" : [ { "type" : "webservice", "id" : 58, "name" : "Form-based auth", "description" : "", "serviceFolderId" : 1, "stopMonitoring" : false, "stopMonitoringByFolder" : false, "disableAlerting" : false, "individualSmAlertEnable" : false, "individualAlertLevel" : "warn", "overallAlertLevel" : "warn", "alertStatus" : "none", "sdtStatus" : "none-none-none", "alertDisableStatus" : "none-none-none", "pollingInterval" : 10, "transition" : 1, "testLocation" : "{\"smgIds\":[3],\"all\":false}", "globalSmAlertCond" : 0, "useDefaultLocationSetting" : false, "useDefaultAlertSetting" : false, "userPermission" : "write", "checkpoints" : [ { "id" : 292, "geoInfo" : "Overall", "smgId" : 0 }, { "id" : 294, "geoInfo" : "US - San Francisco", "smgId" : 3 } ], "serviceProperties" : [ ], "steps" : [ { "HTTPHeaders" : "", "statusCode" : "", "followRedirection" : true, "matchType" : "plain", "keyword" : "", "HTTPBody" : "", "HTTPMethod" : "GET", "postDataEditType" : "raw", "label" : "", "url" : "test.logicmonitor.com/santaba/", "fullpageLoad" : false, "requireAuth" : false, "auth" : null, "invertMatch" : false, "timeout" : 30, "HTTPVersion" : "1.1", "schema" : "https", "description" : "", "path" : "", "enable" : true, "name" : "__step0", "domain" : "test.logicmonitor.com" }, { "HTTPHeaders" : "Content-Type:application/x-www-form-urlencoded", "statusCode" : "", "followRedirection" : true, "matchType" : "plain", "keyword" : "", "HTTPBody" : "c=test&u=testp=test", "HTTPMethod" : "POST", "postDataEditType" : "raw", "label" : "", "url" : "test.logicmonitor.com/santaba/", "fullpageLoad" : false, "requireAuth" : false, "auth" : null, "invertMatch" : false, "timeout" : 30, "HTTPVersion" : "1.1", "schema" : "https", "description" : "", "path" : "data.status", "enable" : true, "name" : "__step1", "domain" : "test.logicmonitor.com" }, { "HTTPHeaders" : "", "statusCode" : "", "followRedirection" : true, "matchType" : "plain", "keyword" : "sarah", "HTTPBody" : "", "HTTPMethod" : "GET", "postDataEditType" : "raw", "label" : "", "url" : "test.logicmonitor.com/santaba/uiv3/device/index.jsp#layer/dg/1/info", "fullpageLoad" : true, "requireAuth" : false, "auth" : null, "invertMatch" : false, "timeout" : 30, "HTTPVersion" : "1.1", "schema" : "https", "description" : "", "path" : "", "enable" : true, "name" : "__step2", "domain" : "test.logicmonitor.com" } ], "script" : "", "method" : "tabledriven", "ignoreSSL" : false, "pageLoadAlertTimeInMS" : 30000 }, { "type" : "webservice", "id" : 41, "name" : "Multi-Step", "description" : "", "serviceFolderId" : 11, "stopMonitoring" : false, "stopMonitoringByFolder" : false, "disableAlerting" : false, "individualSmAlertEnable" : false, "individualAlertLevel" : "warn", "overallAlertLevel" : "warn", "alertStatus" : "unconfirmed-warn", "sdtStatus" : "none-none-none", "alertDisableStatus" : "none-none-none", "pollingInterval" : 1, "transition" : 1, "testLocation" : "{\"all\":true}", "globalSmAlertCond" : 0, "useDefaultLocationSetting" : false, "useDefaultAlertSetting" : false, "userPermission" : "write", "checkpoints" : [ { "id" : 204, "geoInfo" : "Overall", "smgId" : 0 }, { "id" : 208, "geoInfo" : "Asia - Singapore", "smgId" : 5 }, { "id" : 207, "geoInfo" : "Europe - Dublin", "smgId" : 4 }, { "id" : 205, "geoInfo" : "US - San Francisco", "smgId" : 3 }, { "id" : 203, "geoInfo" : "US - Washington DC", "smgId" : 2 } ], "serviceProperties" : [ ], "steps" : [ { "HTTPHeaders" : "", "statusCode" : "", "followRedirection" : false, "matchType" : "plain", "keyword" : "", "HTTPBody" : "", "HTTPMethod" : "GET", "postDataEditType" : "raw", "label" : "step 1", "url" : "kittens.test.logicmonitor.com/morekittens.html", "fullpageLoad" : true, "requireAuth" : false, "auth" : null, "invertMatch" : false, "timeout" : 30, "HTTPVersion" : "1.1", "schema" : "http", "description" : "", "path" : "", "enable" : true, "name" : "__step0", "domain" : "kittens.test.logicmonitor.com" } ], "script" : "", "method" : "tabledriven", "ignoreSSL" : true, "pageLoadAlertTimeInMS" : 30000 }, { "type" : "ping", "id" : 60, "name" : "JIRA", "description" : "", "serviceFolderId" : 11, "stopMonitoring" : false, "stopMonitoringByFolder" : false, "disableAlerting" : false, "individualSmAlertEnable" : true, "individualAlertLevel" : "critical", "overallAlertLevel" : "critical", "alertStatus" : "unconfirmed-critical", "sdtStatus" : "none-none-none", "alertDisableStatus" : "none-none-none", "pollingInterval" : 5, "transition" : 1, "testLocation" : "{\"smgIds\":[1,2,3,4,5],\"all\":true}", "globalSmAlertCond" : 0, "useDefaultLocationSetting" : true, "useDefaultAlertSetting" : false, "userPermission" : "write", "checkpoints" : [ { "id" : 302, "geoInfo" : "Overall", "smgId" : 0 }, { "id" : 306, "geoInfo" : "Asia - Singapore", "smgId" : 5 }, { "id" : 305, "geoInfo" : "Europe - Dublin", "smgId" : 4 }, { "id" : 304, "geoInfo" : "US - San Francisco", "smgId" : 3 }, { "id" : 303, "geoInfo" : "US - Washington DC", "smgId" : 2 } ], "serviceProperties" : [ ], "count" : 5, "host" : "asdfasdfasdfasdf", "percentPktsNotReceiveInTime" : 80, "timeoutInMSPktsNotReceive" : 500 }, { "type" : "webservice", "id" : 49, "name" : "LMCertification", "description" : "", "serviceFolderId" : 12, "stopMonitoring" : false, "stopMonitoringByFolder" : false, "disableAlerting" : false, "individualSmAlertEnable" : false, "individualAlertLevel" : "warn", "overallAlertLevel" : "warn", "alertStatus" : "none", "sdtStatus" : "none-none-none", "alertDisableStatus" : "none-none-none", "pollingInterval" : 10, "transition" : 3, "testLocation" : "{\"smgIds\":[1,4],\"all\":false}", "globalSmAlertCond" : 0, "useDefaultLocationSetting" : false, "useDefaultAlertSetting" : false, "userPermission" : "write", "checkpoints" : [ { "id" : 251, "geoInfo" : "Overall", "smgId" : 0 }, { "id" : 253, "geoInfo" : "Europe - Dublin", "smgId" : 4 } ], "serviceProperties" : [ ], "steps" : [ { "HTTPHeaders" : "", "statusCode" : "", "followRedirection" : true, "matchType" : "plain", "keyword" : "LogicMonitor Certification", "HTTPBody" : "", "HTTPMethod" : "GET", "postDataEditType" : "raw", "label" : "", "url" : "logicmonitor.docebosaas.com/lms/", "fullpageLoad" : false, "requireAuth" : false, "auth" : null, "invertMatch" : false, "timeout" : 30, "HTTPVersion" : "1.1", "schema" : "https", "description" : "", "path" : "", "enable" : true, "name" : "__step0", "domain" : "logicmonitor.docebosaas.com" }, { "HTTPHeaders" : "Content-Type:application/x-www-form-urlencoded", "statusCode" : "", "followRedirection" : true, "matchType" : "plain", "keyword" : "", "HTTPBody" : "login_pwd=test&login_user=test", "HTTPMethod" : "POST", "postDataEditType" : "x-www-form-urlencoded", "label" : "", "url" : "logicmonitor.docebosaas.com/lms/", "fullpageLoad" : false, "requireAuth" : false, "auth" : null, "invertMatch" : false, "timeout" : 30, "HTTPVersion" : "1.1", "schema" : "https", "description" : "", "path" : "", "enable" : true, "name" : "__step1", "domain" : "logicmonitor.docebosaas.com" } ], "script" : "", "method" : "tabledriven", "ignoreSSL" : false, "pageLoadAlertTimeInMS" : 20000 }, { "type" : "ping", "id" : 48, "name" : "LMService", "description" : "", "serviceFolderId" : 12, "stopMonitoring" : false, "stopMonitoringByFolder" : false, "disableAlerting" : false, "individualSmAlertEnable" : false, "individualAlertLevel" : "warn", "overallAlertLevel" : "warn", "alertStatus" : "none", "sdtStatus" : "none-none-none", "alertDisableStatus" : "none-none-none", "pollingInterval" : 5, "transition" : 1, "testLocation" : "{\"all\":true}", "globalSmAlertCond" : 0, "useDefaultLocationSetting" : false, "useDefaultAlertSetting" : false, "userPermission" : "write", "checkpoints" : [ { "id" : 245, "geoInfo" : "Overall", "smgId" : 0 }, { "id" : 250, "geoInfo" : "Asia - Singapore", "smgId" : 5 }, { "id" : 249, "geoInfo" : "Europe - Dublin", "smgId" : 4 }, { "id" : 248, "geoInfo" : "US - San Francisco", "smgId" : 3 }, { "id" : 247, "geoInfo" : "US - Washington DC", "smgId" : 2 } ], "serviceProperties" : [ ], "count" : 20, "host" : "kittens.test.logicmonitor.com", "percentPktsNotReceiveInTime" : 70, "timeoutInMSPktsNotReceive" : 300 } ], "searchId" : null }
Example 2: GET all Websites
The following Python 3 script returns a list of all websites in the api.logicmonitor.com portal, where only the id, name, type, and alertStatus fields are returned for each result and the results are sorted in descending order according to the alertStatus.
#!/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 = 'api' #Request Info: Get Services httpVerb ='GET' resourcePath = '/service/services' queryParams = '?fields=id,name,host,alertStatus&sort=-alertStatus' #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 + 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, headers=headers) #Print status and body of response print('Response Status:',response.status_code) print('Response Body:',response.content)
Output:
{ "status" : 200, "errmsg" : "OK", "data" : { "total" : 5, "items" : [ { "type" : "webservice", "id" : 58, "name" : "Form-based auth", "alertStatus" : "none" }, { "type" : "webservice", "id" : 41, "name" : "Multi-Step", "alertStatus" : "unconfirmed-warn" }, { "type" : "ping", "id" : 60, "name" : "JIRA", "alertStatus" : "unconfirmed-critical" }, { "type" : "webservice", "id" : 49, "name" : "LMCertification", "alertStatus" : "none" }, { "type" : "ping", "id" : 48, "name" : "LMService", "alertStatus" : "none" } ], "searchId" : null }
Example 3: GET one website
The following Python 3 script returns the details for the website with id 2.
#!/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 = 'api' #Request Info: Get Services httpVerb ='GET' resourcePath = '/service/services/2' #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 + 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, headers=headers) #Print status and body of response print('Response Status:',response.status_code) print('Response Body:',response.content)
Output:
{ "status" : 200, "errmsg" : "OK", "data" : { "type" : "ping", "id" : 2, "name" : "JIRA", "description" : "", "serviceFolderId" : 11, "stopMonitoring" : false, "stopMonitoringByFolder" : false, "disableAlerting" : false, "individualSmAlertEnable" : true, "individualAlertLevel" : "critical", "overallAlertLevel" : "critical", "alertStatus" : "unconfirmed-critical", "sdtStatus" : "none-none-none", "alertDisableStatus" : "none-none-none", "pollingInterval" : 5, "transition" : 1, "testLocation" : "{\"smgIds\":[1,2,3,4,5],\"all\":true}", "globalSmAlertCond" : 0, "useDefaultLocationSetting" : true, "useDefaultAlertSetting" : false, "userPermission" : "write", "checkpoints" : [ { "id" : 302, "geoInfo" : "Overall", "smgId" : 0 }, { "id" : 306, "geoInfo" : "Asia - Singapore", "smgId" : 5 }, { "id" : 305, "geoInfo" : "Europe - Dublin", "smgId" : 4 }, { "id" : 304, "geoInfo" : "US - San Francisco", "smgId" : 3 }, { "id" : 303, "geoInfo" : "US - Washington DC", "smgId" : 2 } ], "serviceProperties" : [ ], "count" : 5, "host" : "test.jira.com", "percentPktsNotReceiveInTime" : 80, "timeoutInMSPktsNotReceive" : 500 }
Example 4: GET one website
The following Python 3 script returns the id, name, and alertStatus for the website with id 2.
#!/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 = 'api' #Request Info: Get Services httpVerb ='GET' resourcePath = '/service/services/2' queryParams = '?fields=id,name,alertStatus' #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 + 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, headers=headers) #Print status and body of response print('Response Status:',response.status_code) print('Response Body:',response.content)
Output:
{ "status" : 200, "errmsg" : "OK", "data" : { "id" : 60, "name" : "JIRA", "alertStatus" : "unconfirmed-critical" }