Update Roles

Last updated on 24 February, 2021

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.


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


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)
Python 3
In This Article