Create Custom Role

Creates a new custom role in the current organization.

REQUEST URI

https://<ZohoAnalytics_Server_URI>/restapi/v2/orgs/roles

Post

oauthscopeZohoAnalytics.usermanagement.create

QUERY PARAMETERS

 

Parameter Name
Description
CONFIG*JSONObject

Config parameter specifications are available in the below section.

FIELDS FOR CONFIG JSON

KeyDescription
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")
end

Download 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"
  }
}