Create Custom Role
Creates a new custom role in the current organization.
REQUEST URI
https://<ZohoAnalytics_Server_URI>/restapi/v2/orgs/roles
Post
oauthscope: ZohoAnalytics.usermanagement.create
QUERY PARAMETERS
| Description |
|---|---|
| CONFIG* | JSONObject Config parameter specifications are available in the below section. |
FIELDS FOR CONFIG JSON
| Key | Description |
|---|---|
| roleName * | String Display name of the custom role. Must be unique within the organization. Character Limit: 1 – 100 characters. |
| accessType * | String Determines the hierarchical scope of the role. One of ALL_DASHBOARDS, ALL_REPORTS_AND_DASHBOARDS, ALL_DATA_REPORTS_AND_DASHBOARDS. |
| permissions * | JSONObject Grouped permission map – see structure in the Fields section. Maximum serialized size 5000 chars. Sub-objects keyed by group name. |
Sample Request:
Copiedcurl https://analyticsapi.zoho.com/restapi/v2/orgs/roles --data-urlencode 'CONFIG={"roleName":"DashboardPowerUser","accessType":"ALL_DASHBOARDS","permissions":{"interactionPermissions":{"read":true,"vud":true,"drillDown":true,"insight":true},"sharePermissions":{"discussion":true,"privateLinks":true},"publishPermissions":{"export":true}}}'
-X 'POST'
-H 'ZANALYTICS-ORGID: <org-id>'
-H 'Authorization: Zoho-oauthtoken <access_token>'Copiedusing System;
using System.Collections.Generic;
using ZohoAnalytics;
namespace ZohoAnalyticsTest
{
class Program
{
long orgId = 55522777;
public void CreateCustomRole(IAnalyticsClient ac)
{
string roleName = "DashboardPowerUser";
// Allowed values for accessType: "ALL_DATA_REPORTS_AND_DASHBOARDS", "ALL_REPORTS_AND_DASHBOARDS", "ALL_DASHBOARDS"
string accessType = "ALL_DASHBOARDS";
Dictionary<string, object> permissions = new Dictionary<string, object>
{
{ "interactionPermissions", new Dictionary<string, object>
{
{ "read", true },
{ "vud", true },
{ "drillDown", true },
{ "insight", true }
}
},
{ "sharePermissions", new Dictionary<string, object>
{
{ "discussion", true },
{ "privateLinks", true }
}
},
{ "publishPermissions", new Dictionary<string, object>
{
{ "export", true }
}
}
};
IOrgAPI org = ac.GetOrgInstance(orgId);
long roleId = org.CreateCustomRole(roleName, accessType, permissions, null);
Console.WriteLine("Created Custom Role ID: " + roleId);
}
static void Main(string[] args)
{
string clientId = "1000.xxxxxxx";
string clientSecret = "xxxxxxx";
string refreshToken = "1000.xxxxxxx.xxxxxxx";
try
{
IAnalyticsClient ac = new AnalyticsClient(clientId, clientSecret, refreshToken);
Program obj = new Program();
obj.CreateCustomRole(ac);
}
catch (ServerException ex)
{
Console.WriteLine("Server exception - " + ex.GetErrorMessage());
}
catch (Exception ex)
{
Console.WriteLine("Other exception - " + ex.Message);
}
}
}
}Copiedpackage main
import (
"fmt"
ZAnalytics "zoho/pkg/analyticsclient"
)
var (
clientId = "1000.xxxxxxx"
clientSecret = "xxxxxxx"
refreshToken = "1000.xxxxxxx.xxxxxxx"
orgId = "55522777"
)
func CreateCustomRole(ac ZAnalytics.Client) {
roleName := "DashboardPowerUser"
// Allowed values for accessType: "ALL_DATA_REPORTS_AND_DASHBOARDS", "ALL_REPORTS_AND_DASHBOARDS", "ALL_DASHBOARDS"
accessType := "ALL_DASHBOARDS"
permissions := map[string]interface{}{
"interactionPermissions": map[string]interface{}{
"read": true,
"vud": true,
"drillDown": true,
"insight": true,
},
"sharePermissions": map[string]interface{}{
"discussion": true,
"privateLinks": true,
},
"publishPermissions": map[string]interface{}{
"export": true,
},
}
org := ZAnalytics.GetOrgInstance(&ac, orgId)
roleId, exception := org.CreateCustomRole(roleName, accessType, permissions, nil)
if exception != nil {
fmt.Println("Error:", exception.ErrorMessage)
return
}
fmt.Println("Created Custom Role ID:", roleId)
}
func main() {
ac := ZAnalytics.GetAnalyticsClient(clientId, clientSecret, refreshToken)
CreateCustomRole(ac)
}Copiedimport com.zoho.analytics.client.*;
import org.json.*;
public class Test {
private long orgId = 55522777l;
public static void main(String args[]) {
String clientId = "1000.xxxxxxx";
String clientSecret = "xxxxxxx";
String refreshToken = "1000.xxxxxxx.xxxxxxx";
Test tObj = new Test();
AnalyticsClient ac = new AnalyticsClient(clientId, clientSecret, refreshToken);
try {
tObj.createCustomRole(ac);
}
catch (ServerException ex) {
System.out.println("Server exception - ErrorCode : " + ex.getErrorCode() + ", ErrorMessage : " + ex.getErrorMessage());
}
catch (ParseException ex) {
System.out.println("Parser exception - ErrorMessage : " + ex.getResponseMessage());
}
catch (Exception ex) {
System.out.println("Other exception - ");
ex.printStackTrace();
}
}
public void createCustomRole(AnalyticsClient ac) throws Exception {
String roleName = "DashboardPowerUser";
// Allowed values for accessType: "ALL_DATA_REPORTS_AND_DASHBOARDS", "ALL_REPORTS_AND_DASHBOARDS", "ALL_DASHBOARDS"
String accessType = "ALL_DASHBOARDS";
JSONObject interactionPermissions = new JSONObject();
interactionPermissions.put("read", true);
interactionPermissions.put("vud", true);
interactionPermissions.put("drillDown", true);
interactionPermissions.put("insight", true);
JSONObject sharePermissions = new JSONObject();
sharePermissions.put("discussion", true);
sharePermissions.put("privateLinks", true);
JSONObject publishPermissions = new JSONObject();
publishPermissions.put("export", true);
JSONObject permissions = new JSONObject();
permissions.put("interactionPermissions", interactionPermissions);
permissions.put("sharePermissions", sharePermissions);
permissions.put("publishPermissions", publishPermissions);
OrgAPI org = ac.getOrgInstance(orgId);
String result = org.createCustomRole(roleName, accessType, permissions, null);
System.out.println(result);
}
}Copied<?php
require 'AnalyticsClient.php';
class Test
{
public $ac = NULL;
public $client_id = "1000.xxxxxxx";
public $client_secret = "xxxxxxx";
public $refresh_token = "1000.xxxxxxx.xxxxxxx";
public $org_id = "55522777";
function __construct() {
$this->ac = new AnalyticsClient($this->client_id, $this->client_secret, $this->refresh_token);
}
function createCustomRole() {
$role_name = "DashboardPowerUser";
// Allowed values for $access_type: 'ALL_DATA_REPORTS_AND_DASHBOARDS', 'ALL_REPORTS_AND_DASHBOARDS', 'ALL_DASHBOARDS'
$access_type = "ALL_DASHBOARDS";
$permissions = array(
"interactionPermissions" => array(
"read" => true,
"vud" => true,
"drillDown" => true,
"insight" => true
),
"sharePermissions" => array(
"discussion" => true,
"privateLinks" => true
),
"publishPermissions" => array(
"export" => true
)
);
$org = $this->ac->getOrgInstance($this->org_id);
$response = $org->createCustomRole($role_name, $access_type, $permissions);
print_r($response);
}
}
$test_obj = new Test();
try {
$test_obj->createCustomRole();
}
catch(ServerException $se) {
echo "Server exception : " . $se->getErrorMessage() . "\n";
}
catch(IOException $ioe) {
echo "IO exception : " . $ioe->getErrorMessage() . "\n";
}
catch(ParseException $pe) {
echo "Parser exception : " . $pe->getErrorMessage() . "\n";
}
catch(Exception $e) {
echo "Exception : " . $e->getErrorMessage() . "\n";
}
?>Copiedfrom __future__ import with_statement
from AnalyticsClient import AnalyticsClient
import sys
import json
class Config:
CLIENTID = "1000.xxxxxxx"
CLIENTSECRET = "xxxxxxx"
REFRESHTOKEN = "1000.xxxxxxx.xxxxxxx"
ORGID = "55522777"
class sample:
ac = AnalyticsClient(Config.CLIENTID, Config.CLIENTSECRET, Config.REFRESHTOKEN)
def create_custom_role(self, ac):
role_name = "DashboardPowerUser"
# Allowed values for access_type: 'ALL_DATA_REPORTS_AND_DASHBOARDS', 'ALL_REPORTS_AND_DASHBOARDS', 'ALL_DASHBOARDS'
access_type = "ALL_DASHBOARDS"
permissions = {
"interactionPermissions": {
"read": True,
"vud": True,
"drillDown": True,
"insight": True
},
"sharePermissions": {
"discussion": True,
"privateLinks": True
},
"publishPermissions": {
"export": True
}
}
org = ac.get_org_instance(Config.ORGID)
result = org.create_custom_role(role_name, access_type, permissions)
print(result)
try:
obj = sample()
obj.create_custom_role(obj.ac)
except Exception as e:
print(str(e))Copiedvar analyticsClient = require('./AnalyticsClient');
var clientId = '1000.xxxxxxx';
var clientSecret = 'xxxxxxx';
var refreshtoken = '1000.xxxxxxx.xxxxxxx';
var orgId = '55522777';
var ac = new analyticsClient(clientId, clientSecret, refreshtoken);
var roleName = 'DashboardPowerUser';
// Allowed values for accessType: 'ALL_DATA_REPORTS_AND_DASHBOARDS', 'ALL_REPORTS_AND_DASHBOARDS', 'ALL_DASHBOARDS'
var accessType = 'ALL_DASHBOARDS';
var permissions = {
'interactionPermissions': {
'read': true,
'vud': true,
'drillDown': true,
'insight': true
},
'sharePermissions': {
'discussion': true,
'privateLinks': true
},
'publishPermissions': {
'export': true
}
};
var org = ac.getOrgInstance(orgId);
org.createCustomRole(roleName, accessType, permissions).then((roleId) => {
console.log('Created Custom Role ID: ' + roleId);
}).catch((error) => {
console.log('errorCode : ' + error.errorCode);
console.log('errorMessage : ' + error.errorMessage);
});CopiedorgId = "55522777";
headersMap = Map();
headersMap.put("ZANALYTICS-ORGID", orgId);
interactionPermissions = Map();
interactionPermissions.put("read", true);
interactionPermissions.put("vud", true);
interactionPermissions.put("drillDown", true);
interactionPermissions.put("insight", true);
sharePermissions = Map();
sharePermissions.put("discussion", true);
sharePermissions.put("privateLinks", true);
publishPermissions = Map();
publishPermissions.put("export", true);
permissions = Map();
permissions.put("interactionPermissions", interactionPermissions);
permissions.put("sharePermissions", sharePermissions);
permissions.put("publishPermissions", publishPermissions);
config = Map();
config.put("roleName", "DashboardPowerUser");
// Allowed values for accessType: "ALL_DATA_REPORTS_AND_DASHBOARDS", "ALL_REPORTS_AND_DASHBOARDS", "ALL_DASHBOARDS"
config.put("accessType", "ALL_DASHBOARDS");
config.put("permissions", permissions);
paramsMap = Map();
paramsMap.put("CONFIG", config.toString());
response = invokeurl
[
url :"https://analyticsapi.zoho.com/restapi/v2/orgs/roles"
type :POST
parameters:paramsMap
headers:headersMap
connection:"analytics_oauth_connection"
];
info response;Copiedrequire 'zoho_analytics_client'
class Config
ORGID = "55522777"
end
class Sample
def initialize
@ac = AnalyticsClient.new
.with_data_center("US")
.with_oauth({
"clientId" => "1000.xxxxxxx",
"clientSecret" => "xxxxxxx",
"refreshToken" => "1000.xxxxxxx.xxxxxxx"
})
#.with_token_store_path("/home/admin/analytics_ruby_sdk/tokens") # Optional – specify a directory path to securely store the encrypted access token
.build
end
def create_custom_role
role_name = "DashboardPowerUser"
# Allowed values for access_type: "ALL_DATA_REPORTS_AND_DASHBOARDS", "ALL_REPORTS_AND_DASHBOARDS", "ALL_DASHBOARDS"
access_type = "ALL_DASHBOARDS"
permissions = {
"interactionPermissions" => {
"read" => true,
"vud" => true,
"drillDown" => true,
"insight" => true
},
"sharePermissions" => {
"discussion" => true,
"privateLinks" => true
},
"publishPermissions" => {
"export" => true
}
}
org = @ac.get_org_instance(Config::ORGID)
result = org.create_custom_role(role_name, access_type, permissions)
puts result
end
end
begin
obj = Sample.new
obj.create_custom_role
rescue ServerError => e
puts "Server Error: \#{e.response_content}"
rescue StandardError => e
puts e.message
puts e.backtrace.join("\n")
endDownload SDKs: C# | GO | JAVA | PHP | PYTHON | NodeJS | Ruby
Sample value for CONFIG parameter:
Copied{
"roleName": "Report Designer",
"accessType": "ALL_REPORTS_AND_DASHBOARDS",
"permissions": {
"createPermissions": {
"createFolder": true
},
"interactionPermissions": {
"read": true,
"vud": true,
"drillDown": true,
"drillThrough": true,
"drillActions": true,
"insight": true
},
"sharePermissions": {
"share": false,
"discussion": true,
"privateLinks": false,
"accessAdminPresets": true,
"createPreset": false
},
"publishPermissions": {
"export": true,
"manageEmailSchedules": true,
"manageDataAlerts": true,
"createSlideshow": false,
"publicViews": false
}
}
}Sample Response:
CopiedHTTP/1.1 200 OK
Content-Type:application/json;charset=UTF-8
{
"status": "success",
"summary": "Create custom role",
"data": {
"roleId": "466206000000312015"
}
}