Update Custom Role

Updates the configuration of an existing custom role.

REQUEST URI

https://<ZohoAnalytics_Server_URI>/restapi/v2/orgs/roles/<role-id>

Put

oauthscopeZohoAnalytics.usermanagement.update

QUERY PARAMETERS

 

Parameter Name
Description
CONFIGJSONObject

Config parameter specifications are available in the below section.

FIELDS FOR CONFIG JSON

KeyDescription
roleNameString

New display name of the custom role. Conditional – at least one of roleName / accessType must be supplied. Character limit: 1 – 100 characters.
accessTypeString

New access-type scope of the role. Conditional – must be supplied together with permissions. When supplied, permissions must be supplied as well.

One of ALL_DASHBOARDS, ALL_REPORTS_AND_DASHBOARDS, ALL_DATA_REPORTS_AND_DASHBOARDS.
permissionsJSONObject

Full replacement of the role’s permission map. Conditional – must be supplied together with accessType. The same validation rules used by Create are re-applied here.

Maximum serialized size 5000 chars. Same structure as for Create Custom Role.

Sample Request:

Copiedcurl https://analyticsapi.zoho.com/restapi/v2/orgs/roles/<role-id> --data-urlencode 'CONFIG={"roleName":"DashboardPowerUser","accessType":"ALL_DASHBOARDS","permissions":{"interactionPermissions":{"read":true,"vud":true,"drillDown":false,"insight":false},"sharePermissions":{"share":true,"privateLinks":false},"publishPermissions":{"export":true}}}'
-X 'PUT'
-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 UpdateCustomRole(IAnalyticsClient ac)
        {
            long roleId = 0L;
            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", false },
                        { "insight", false }
                    }
                },
                { "sharePermissions", new Dictionary<string, object>
                    {
                        { "share", true },
                        { "privateLinks", false }
                    }
                },
                { "publishPermissions", new Dictionary<string, object>
                    {
                        { "export", true }
                    }
                }
            };

            IOrgAPI org = ac.GetOrgInstance(orgId);
            org.UpdateCustomRole(roleId, roleName, accessType, permissions, null);
            Console.WriteLine("success");
        }

        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.UpdateCustomRole(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 UpdateCustomRole(ac ZAnalytics.Client) {
    roleId := ""
    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": false,
            "insight":   false,
        },
        "sharePermissions": map[string]interface{}{
            "share":        true,
            "privateLinks": false,
        },
        "publishPermissions": map[string]interface{}{
            "export": true,
        },
    }

    org := ZAnalytics.GetOrgInstance(&ac, orgId)
    exception := org.UpdateCustomRole(roleId, roleName, accessType, permissions, nil)
    if exception != nil {
        fmt.Println("Error:", exception.ErrorMessage)
        return
    }
    fmt.Println("success")
}

func main() {
    ac := ZAnalytics.GetAnalyticsClient(clientId, clientSecret, refreshToken)
    UpdateCustomRole(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.updateCustomRole(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 updateCustomRole(AnalyticsClient ac) throws Exception {
        String roleId = "";
        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", false);
        interactionPermissions.put("insight", false);

        JSONObject sharePermissions = new JSONObject();
        sharePermissions.put("share", true);
        sharePermissions.put("privateLinks", false);

        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);
        org.updateCustomRole(roleId, roleName, accessType, permissions, null);
        System.out.println("success");
    }
}
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 updateCustomRole() {
            $role_id = "";
            $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" => false,
                    "insight" => false
                ),
                "sharePermissions" => array(
                    "share" => true,
                    "privateLinks" => false
                ),
                "publishPermissions" => array(
                    "export" => true
                )
            );
            $org = $this->ac->getOrgInstance($this->org_id);
            $org->updateCustomRole($role_id, $role_name, $access_type, $permissions);
            echo "success\n";
        }
    }

    $test_obj = new Test();

    try {
        $test_obj->updateCustomRole();
    }
    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 update_custom_role(self, ac):
        role_id = ""
        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": False,
                "insight": False
            },
            "sharePermissions": {
                "share": True,
                "privateLinks": False
            },
            "publishPermissions": {
                "export": True
            }
        }
        org = ac.get_org_instance(Config.ORGID)
        org.update_custom_role(role_id, role_name, access_type, permissions)
        print("success")

try:
    obj = sample()
    obj.update_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 roleId = '';

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': false,
        'insight': false
    },
    'sharePermissions': {
        'share': true,
        'privateLinks': false
    },
    'publishPermissions': {
        'export': true
    }
};

var org = ac.getOrgInstance(orgId);
org.updateCustomRole(roleId, roleName, accessType, permissions).then(() => {
    console.log('success');
}).catch((error) => {
    console.log('errorCode : ' + error.errorCode);
    console.log('errorMessage : ' + error.errorMessage);
});
CopiedorgId = "55522777";
roleId = "<role-id>";

headersMap = Map();
headersMap.put("ZANALYTICS-ORGID", orgId);

interactionPermissions = Map();
interactionPermissions.put("read", true);
interactionPermissions.put("vud", true);
interactionPermissions.put("drillDown", false);
interactionPermissions.put("insight", false);

sharePermissions = Map();
sharePermissions.put("share", true);
sharePermissions.put("privateLinks", false);

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/" + roleId
  type :PUT
  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 update_custom_role
    role_id = ""
    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" => false,
        "insight" => false
      },
      "sharePermissions" => {
        "share" => true,
        "privateLinks" => false
      },
      "publishPermissions" => {
        "export" => true
      }
    }
    org = @ac.get_org_instance(Config::ORGID)
    org.update_custom_role(role_id, role_name, access_type, permissions)
    puts "success"
  end
end

begin
  obj = Sample.new
  obj.update_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:

CopiedRename-only update – change the role name without altering permissions:

{
  "roleName": "Report Designer (Read-Only)"
}

Full update – change the access-type and replace the permission map:

{
  "roleName": "Report Designer (Plus Data)",
  "accessType": "ALL_DATA_REPORTS_AND_DASHBOARDS",
  "permissions": {
    "createPermissions": {
      "createTable":      true,
      "createQueryTable": true,
      "createFolder":     true,
      "createFormula":    true
    },
    "dataPermissions": {
      "addRow":                true,
      "modifyRow":             true,
      "deleteRow":             true,
      "importAppend":          true,
      "importAddOrUpdate":     true,
      "importDeleteAllAdd":    true,
      "importDeleteUpdateAdd": true,
      "dataArchives":          true
    },
    "designPermissions": {
      "designModify": true
    },
    "interactionPermissions": {
      "read":         true,
      "vud":          true,
      "drillDown":    true,
      "drillThrough": true,
      "drillActions": true,
      "insight":      true
    },
    "sharePermissions": {
      "share":              true,
      "discussion":         true,
      "privateLinks":       true,
      "accessAdminPresets": true,
      "createPreset":       true
    },
    "publishPermissions": {
      "export":                  true,
      "manageEmailSchedules":    true,
      "allEmailSchedulesAccess": true,
      "manageDataAlerts":        true,
      "allDataAlertsAccess":     true,
      "createSlideshow":         true,
      "publicViews":             false
    }
  }
}

Sample Response:

CopiedHTTP/1.1 204 No Content