Add Roles

Last updated on 29 June, 2022

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


URI: /setting/roles

Request Parameters:You can POST the following properties for a new role






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:


  • objectType
  • objectId
  • operation
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.


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":"","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 +'' + resourcePath +queryParams

#Get current time in milliseconds
epoch = str(int(time.time() * 1000))

#Concatenate Request details
requestVars = httpVerb + epoch + data + resourcePath

#Construct signature
hmac1 =,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 =, 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