You can use LogicMonitor’s REST API to programmatically manage the user roles in your account.
Using LogicMonitor’s REST API, you can:
- Get a list of all roles
- Get information about a particular role
- Add a role
- Update a role
- Delete a role
Note: As with all of our API calls, authentication is required.
Resource URI:
Resource Properties:
All roles have the following properties:
With LogicMonitor’s REST API you can programmatically add a new role to your LogicMonitor account.
Note: As with all of our API calls, authentication is required
Add a Role
HTTP Method:POST
URI: /setting/roles
Request Parameters:You can POST the following properties for a new role
Property |
Description |
Required? |
Values |
Type |
name | The name of the role | Yes | Role names are restricted to numbers, letters, and – and _ symbols | String |
description | The description of the role | No | This value defaults to a blank String | String |
requireEula | Whether or not the users associated with this role should be required to acknowledge the EULA (end user license agreement) | No | This value defaults to false | Boolean |
customHelpLabel | The label for the custom help URL as it will appear in the Help & Support dropdown menu | No | This value defaults to a blank String | String |
customHelpURL | The URL that should be added to the Help & Support dropdown menu | No | This value defaults to a blank String | String |
privileges | The privileges granted to the role, where each privilege object must include:
|
Yes | This object should contain nested objects for each privilege granted to the user. | JSON Object |
NOTE: For more information on the privileges object and how is should be constructed, see the About the Roles Resource page.
Example
The following Python script adds a role ‘DB Team’ with permission to:
- manage private dashboards,
- manage the ABC Corporation dashboard group
- manage the dashboard ‘Resource Allocation’
- view all device groups
- manage device dashboards
- edit personal user profile information
- manage API Tokens
- view chat
The role additionally includes a custom help URL & label that will display under the help menu for the user:
#!/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 ='POST'
resourcePath = '/setting/roles'
queryParams = ''
data = '{"name":"DB Team","customHelpLabel":"Internal Support Resources","customHelpURL":"https://logicmonitor.com/support","privileges":[{"objectType":"dashboard_group","objectId":"private","objectName":"private","operation":"write"},{"objectType":"dashboard_group","objectId":4,"objectName":"ABC Corporation","operation":"write"},{"objectType":"dashboard","objectId":77,"objectName":"Resource Allocation","operation":"write"},{"objectType":"host_group","objectId":"*","objectName":"*","operation":"read"},{"objectType":"deviceDashboard","objectId":"","operation":"write"},{"objectType":"setting","objectId":"useraccess.personalinfo","operation":"write"},{"objectType":"setting","objectId":"useraccess.apitoken","operation":"write"},{"objectType":"help","objectId":"chat","objectName":"help","operation":"write"}]}'
#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.post(url, data=data, headers=headers)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
You can use LogicMonitor’s REST API to programmatically get information about your LogicMonitor roles. You can either get a list of roles or you can get details for a particular role.
Note: As with all of our API calls, authentication is required.
Get a list of all Roles
Returns a list of roles
HTTP Method: GET
URI: /setting/roles
Request Parameters: By default, a list of 50 roles 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.
Property |
Syntax |
Description |
Example URI |
sort | sort={+ or -}property | Sorts the response by the property specified in either increasing (+) or decreasing (-) order | /setting/roles?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/roles?filter=name:administrator |
fields | fields={list of properties separated by commas} | Filters the response to only include the following fields for each object | /setting/roles?fields=name,privileges |
size | size=integer | The number of results to display | /setting/roles?size=5 |
offset | offset=integer | The number of results to offset the displayed results by | /setting/roles?offset=2 |
Example 1: GET all Roles
The following Python script will return a list of all roles in the api.logicmonitor.com portal.
#!/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/roles'
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 all Roles
The following Python script will return a list of roles in the api.logicmonitor.com portal, where only the name, associatedUserCount and privileges are returned for each result and the results are sorted in descending order according to the associatedUserCount.
#!/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/roles'
queryParams = '?fields=name,associatedUserCount,privileges&sort=-associatedUserCount'
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 role
Returns details for a particular role
HTTP Method:GET
URI: /setting/roles/{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 | /setting/roles/{id}?fields=name,associatedUserCount |
Example 1: GET one role
The following Python script will return the details for the role with id 8.
#!/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/roles/8'
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)
You can use LogicMonitor’s REST API to programmatically update your LogicMonitor roles.
As with all of our API calls, authentication is required.
Update a role
Update an existing role. Note that consistent with REST standards, any properties not specified in a PUT request will revert back to their default values.
HTTP Method:PUT
URI: /setting/roles/{id}
Request Parameters:
Property | Description | Required? | Values | Type |
name | The name of the role | Yes | Role names are restricted to numbers, letters, and – and _ symbols | String |
description | The description of the role | No | This value defaults to a blank String | String |
requireEula | Whether or not users associated with this role should be required to acknowledge a EULA (end user license agreement) | No | This value defaults to false | Boolean |
customHelpLabel | The label for the custom help URL as it will appear in the Help & Support dropdown menu | No | This value defaults to a blank String | String |
customHelpURL | The URL that should be added to the Help & Support dropdown menu | No | This value defaults to a blank String | String |
privileges | The privileges granted to the role | Yes | This object should contain nested objects for each privilege granted to the user. | JSON Object |
Example
The following Python Script updates the permissions for role 28:
#!/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 = '/setting/roles/28'
queryParams = ''
data = '{"name":"Server Team","customHelpLabel":"Internal Support Resources","customHelpURL":"https://logicmonitor.com/support","privileges":[{"objectType":"setting","objectId":"collectorgroup.4","objectName":"collectorgroup.4","operation":"write"},{"objectType":"setting","objectId":"collector.*","objectName":"collector.*","operation":"read"},{"objectType":"dashboard_group","objectId":"private","objectName":"private","operation":"write"},{"objectType":"dashboard_group","objectId":4,"objectName":"ABC Corporation","operation":"write"},{"objectType":"dashboard","objectId":77,"objectName":"Resource Allocation","operation":"write"},{"objectType":"host_group","objectId":"*","objectName":"*","operation":"read"},{"objectType":"deviceDashboard","objectId":"","operation":"read"},{"objectType":"setting","objectId":"useraccess.personalinfo","operation":"write"},{"objectType":"setting","objectId":"useraccess.apitoken","operation":"write"},{"objectType":"help","objectId":"chat","objectName":"help","operation":"write"}]}'
#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.put(url, data=data, headers=headers)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
With LogicMonitor’s REST API you can programmatically delete your LogicMonitor roles.
As with all of our API calls, authentication is required.
Delete a role
Delete an existing role.
HTTP Method:DELETE
URI: /setting/roles/{id}
Example
The following Python script deletes the role with an id of 28:
#!/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 ='DELETE'
resourcePath = '/setting/roles/28'
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.delete(url, data=data, headers=headers)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)