Skip to main content
PUT
/
roles
/
{role}
/
permissions
Set Role Permissions
curl --request PUT \
  --url https://{appId}.api-{region}.cometchat.io/v3/roles/{role}/permissions \
  --header 'Content-Type: application/json' \
  --header 'apikey: <api-key>' \
  --data '
{
  "permissions": {
    "createGroup": "allow",
    "listUsers.mode": "friends",
    "createGroup.allowedGroupTypes": [
      "public"
    ]
  }
}
'
import requests

url = "https://{appId}.api-{region}.cometchat.io/v3/roles/{role}/permissions"

payload = { "permissions": {
"createGroup": "allow",
"listUsers.mode": "friends",
"createGroup.allowedGroupTypes": ["public"]
} }
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'PUT',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
permissions: {
createGroup: 'allow',
'listUsers.mode': 'friends',
'createGroup.allowedGroupTypes': ['public']
}
})
};

fetch('https://{appId}.api-{region}.cometchat.io/v3/roles/{role}/permissions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://{appId}.api-{region}.cometchat.io/v3/roles/{role}/permissions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'permissions' => [
'createGroup' => 'allow',
'listUsers.mode' => 'friends',
'createGroup.allowedGroupTypes' => [
'public'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://{appId}.api-{region}.cometchat.io/v3/roles/{role}/permissions"

payload := strings.NewReader("{\n \"permissions\": {\n \"createGroup\": \"allow\",\n \"listUsers.mode\": \"friends\",\n \"createGroup.allowedGroupTypes\": [\n \"public\"\n ]\n }\n}")

req, _ := http.NewRequest("PUT", url, payload)

req.Header.Add("apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.put("https://{appId}.api-{region}.cometchat.io/v3/roles/{role}/permissions")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"permissions\": {\n \"createGroup\": \"allow\",\n \"listUsers.mode\": \"friends\",\n \"createGroup.allowedGroupTypes\": [\n \"public\"\n ]\n }\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://{appId}.api-{region}.cometchat.io/v3/roles/{role}/permissions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"permissions\": {\n \"createGroup\": \"allow\",\n \"listUsers.mode\": \"friends\",\n \"createGroup.allowedGroupTypes\": [\n \"public\"\n ]\n }\n}"

response = http.request(request)
puts response.read_body
{
  "data": {
    "sendMessage": {
      "success": true,
      "message": "Permission with id sendMessage have been mapped successfully to role default."
    },
    "permissions": {
      "listUsers": "allow",
      "listUsers.mode": "all",
      "listUsers.allowedRoles": [
        "new_role"
      ],
      "getUserDetails.mode": "friends",
      "getUserDetails.allowedRoles": [
        "default"
      ],
      "sendMessage": "allow",
      "sendMessage.mode": "all",
      "sendMessage.allowedReceiverTypes": [
        "group"
      ],
      "sendMessage.allowedReceiverRoles": [
        "new_role",
        "default"
      ],
      "sendMessage.allowedMessageTypes": [
        "file",
        "audio",
        "video",
        "image",
        "text"
      ],
      "sendMessage.allowedMessageCategories": [
        "message",
        "custom"
      ],
      "editMessage": "deny",
      "deleteMessage": "deny",
      "sendMessage.allowedMimeTypes": [
        "image/png"
      ],
      "initiateCall": "allow",
      "initiateCall.mode": "all",
      "initiateCall.allowedReceiverRoles": [
        "new_role"
      ],
      "createGroup": "allow",
      "createGroup.allowedGroupTypes": [
        "private"
      ],
      "listGroups": "allow",
      "listGroups.allowedGroupTypes": [
        "password"
      ],
      "joinGroup": "allow",
      "joinGroup.allowedGroupTypes": [
        "public"
      ],
      "listMessages.allowedMessageCategories": [
        "message"
      ],
      "listMessages.allowedMessageTypes": [
        "audio"
      ]
    }
  }
}
For the complete error reference, see Error Guide.

Authorizations

apikey
string
header
required

API Key with fullAccess scope(i.e. Rest API Key from the Dashboard).

Path Parameters

role
string
required

The role identifier to update permissions for

Example:

"default"

Body

application/json
permissions
object
required

Permissions object containing key-value pairs for role permissions

Example:
{
"createGroup": "allow",
"listUsers.mode": "friends",
"createGroup.allowedGroupTypes": ["public"]
}

Response

200 - application/json

Role permissions updated successfully

data
object