Skip to main content
CometChat provides two types of access control permissions: Each type is documented independently below with its own working mechanism, data types, and permission tables.

RBAC (Role-Based Access Control)

Role-Based Access Control (RBAC) enables fine-grained control over what actions a user can perform and what data they can access, based on the role assigned to them (for example: doctor, patient, buyer, seller).

How RBAC Works

  • Permissions are configured per role
  • Each permission has a default value
  • Explicitly configured permissions override defaults
  • RBAC permissions are evaluated at runtime for every API request
  • If a permission evaluation fails, the API returns an ERR_PERMISSION_DENIED error
RBAC supports:
  • Binary permissions (allow / deny)
  • Conditional permissions using additional configuration keys such as mode, allowedRoles, and allowedMessageTypes
Permissions can be restricted by additional conditions such as:
  • User relationships (all users vs friends)
  • Sender or receiver roles
  • Message categories and types

RBAC Data Types

Data TypeDescriptionExample Values
stringSingle string valueallow, deny, all, friends
stringArrayArray of predefined strings["user", "group"], ["text", "image"]
rolesStringArrayArray of role names["doctor", "patient"]
customStringArrayArray of custom user-defined strings["custom-type-1", "custom-type-2"]

RBAC Permission Structure

Each RBAC permission follows this structure:
AttributeDescription
KeyThe RBAC permission key used in APIs
CategoryLogical grouping (Users, Messages, etc.)
Data TypeExpected value type
Available ValuesSupported values
DefaultApplied if not explicitly configured

RBAC Permission Value Behavior

When an array permission (e.g., allowedRoles, allowedMimeTypes) has a value of null:
  • It means no restriction - all values are allowed
  • This is equivalent to an empty array []
For allow / deny values:
  • allow: The action is permitted
  • deny: The action is blocked, returns ERR_PERMISSION_DENIED
For mode values:
  • all: Action applies to all users
  • friends: Action is restricted to friends only

RBAC Permissions

1. Users

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
User ListingAllow or deny user listing functionalitystringlistUsersallow, denyallow
User Listing ModeChoose who can be listed: all users or friends onlystringlistUsers.modeall, friendsall
User Listing Role FilterSelect which user roles can be listedrolesStringArraylistUsers.allowedRolesnullnull
User Details AccessAllow or deny viewing detailed user informationstringgetUserDetailsallow, denyallow
User Details ModeChoose whose details can be viewed: all users or friends onlystringgetUserDetails.modeall, friendsall
User Details Role FilterSelect which user roles’ details can be viewedrolesStringArraygetUserDetails.allowedRolesnullnull
Block UserAllow or deny user blocking functionalitystringblockUserallow, denyallow
Block User Role FilterSelect which user roles can be blockedrolesStringArrayblockUser.allowedRolesnullnull
Blocked User ListingAllow or deny listing blocked usersstringlistBlockedUserallow, denyallow
Blocked User Listing Role FilterSelect which blocked user roles can be listedrolesStringArraylistBlockedUser.allowedRolesnullnull
Unblock UserAllow or deny user unblocking functionalitystringunblockedUserallow, denyallow
Unblock User Role FilterSelect which user roles can be unblockedrolesStringArrayunblockedUser.allowedRolesnullnull
Edit User ProfileAllow or deny user detail editsstringeditProfileallow, denyallow

2. Messages

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
Message ListingAllow or deny message listing functionalitystringlistMessagesallow, denyallow
Message Listing ModeChoose whose messages can be listed: all users or friends onlystringlistMessages.modeall, friendsall
Message List Receiver FilterSelect which receiver types are allowed in message listsstringArraylistMessages.allowedReceiverTypesuser, groupnull
Message List Sender FilterSelect which sender roles’ messages can be listedrolesStringArraylistMessages.allowedSenderRolesnullnull
Message List Category FilterSelect which message categories can be listedstringArraylistMessages.allowedMessageCategoriesmessage, customnull
Message List Type FilterSelect which message types can be listedstringArraylistMessages.allowedMessageTypestext, image, audio, video, filenull
Message DetailsAllow or deny fetching message detailsstringgetMessageDetailsallow, denyallow
Message Details ModeChoose whose message details can be viewed: all users or friends onlystringgetMessageDetails.modeall, friendsall
Message SendingAllow or deny message sending functionalitystringsendMessageallow, denyallow
Message Sending ModeChoose who can receive messages: all users or friends onlystringsendMessage.modeall, friendsall
Message Send Receiver FilterSelect receiver types to which the messages can be sentstringArraysendMessage.allowedReceiverTypesuser, groupnull
Message Send Role FilterSelect receiver roles to which the messages can be sentrolesStringArraysendMessage.allowedReceiverRolesnullnull
Message Send Category FilterSelect which message categories can be sentstringArraysendMessage.allowedMessageCategoriesmessage, customnull
Message Send Type FilterSelect which message types can be sentstringArraysendMessage.allowedMessageTypestext, image, audio, video, filenull
Custom Message TypesDefine custom message types that can be sentcustomStringArraysendMessage.allowedCustomTypesnullnull
Media MIME TypesDefine MIME types allowed for media messagescustomStringArraysendMessage.allowedMimeTypesnullnull
Message EditingAllow or deny editing of own messagesstringeditMessageallow, denyallow
Message DeletionAllow or deny deletion of own messagesstringdeleteMessageallow, denyallow

3. Message Thread

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
Threaded Message ListingAllow or deny listing of threaded messagesstringlistThreadedMessagesallow, denyallow
Thread Message SendingAllow or deny sending messages in threadsstringsendThreadedMessageallow, denyallow
Thread Receiver Type FilterSelect which receiver types (user/group) can receive thread messagesstringArraysendThreadedMessage.allowedReceiverTypesuser, groupnull
Thread Role FilterSelect which receiver roles can receive thread messages (1-on-1 only)rolesStringArraysendThreadedMessage.allowedReceiverRolesnullnull
Thread Category FilterSelect which message categories can be sent in threadsstringArraysendThreadedMessage.allowedMessageCategoriesmessage, customnull
Thread Type FilterSelect which message types can be sent in threadsstringArraysendThreadedMessage.allowedMessageTypestext, image, audio, video, filenull
Thread Custom TypesDefine custom message types that can be sent in threadscustomStringArraysendThreadedMessage.allowedCustomTypesnullnull
Thread Media TypesDefine MIME types allowed for thread media messagescustomStringArraysendThreadedMessage.allowedMimeTypesnullnull
Thread Message EditingAllow or deny editing of thread messagesstringeditThreadedMessageallow, denyallow
Thread Message DeletionAllow or deny deletion of thread messagesstringdeleteThreadedMessageallow, denyallow

4. Message Reactions

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
Reaction ListingAllow or deny viewing message reactionsstringlistReactionsallow, denyallow
Reaction ManagementAllow or deny adding/removing message reactionsstringaddReactionallow, denyallow

5. Calls

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
Call InitiationAllow or deny call initiation functionalitystringinitiateCallallow, denyallow
Call Receiver Type FilterSelect which receiver types can receive callsstringArrayinitiateCall.allowedReceiverTypesuser, groupnull
Call Receiver Role FilterSelect which receiver roles can receive calls (1-on-1 only)rolesStringArrayinitiateCall.allowedReceiverRolesnullnull
Call JoiningAllow or deny joining 1-on-1 callsstringjoinCallallow, denyallow

6. Conversations

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
List ConversationAllow or deny conversations listing functionalitystringlistConversationsallow, denyallow
Update ConversationAllow or deny conversation update functionalitystringupdateConversationallow, denyallow
Delete ConversationAllow or deny conversation delete functionalitystringdeleteConversationallow, denyallow

7. Groups

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
Group ListingAllow or deny group listing functionalitystringlistGroupsallow, denyallow
Group List Type FilterSelect which group types can be listedstringArraylistGroups.allowedGroupTypespublic, password, privatenull
Group DetailsAllow or deny details for a groupstringgetGroupDetailsallow, denyallow
Group Details Type FilterSelect for which group types details can be fetchedstringArraygetGroupDetails.allowedGroupTypespublic, password, privatenull
Group CreationAllow or deny group creation functionalitystringcreateGroupallow, denyallow
Group Creation Type FilterSelect which group types can be createdstringArraycreateGroup.allowedGroupTypespublic, password, privatenull
Group JoiningAllow or deny group joining functionalitystringjoinGroupallow, denyallow
Group Join Type FilterSelect which group types can be joinedstringArrayjoinGroup.allowedGroupTypespublic, passwordnull

RBAC Example Configuration

The following example denies the sendMessage permission for the user role. When applied, users with this role will not be able to send messages and will receive an ERR_PERMISSION_DENIED error.
{
  "permissions": {
    "sendMessage": "deny"
  }
}

RBAC Permission Evaluation Order

  1. Explicitly configured permission for the role which has the highest priority
  2. Permission default value (from permission definition)
If a permission is not explicitly configured for a role, the default value is used.

SBAC (Scope-Based Access Control)

Scope-Based Access Control (SBAC) enables fine-grained control over what actions a user can perform within a group, based on their member scope (for example: admin, moderator, participant).

How SBAC Works

  • Permissions are configured per scope within group context
  • Each permission has a default value
  • Explicitly configured permissions override defaults
  • SBAC permissions are evaluated at runtime for every group-related API request
  • If a permission evaluation fails, the API returns an ERR_PERMISSION_DENIED error
  • SBAC permissions are evaluated alongside RBAC rules. For group operations, both must allow the action
SBAC supports:
  • Binary permissions (allow / deny)
  • Conditional permissions using additional configuration keys such as allowedScopes, allowedMessageTypes, and allowedMimeTypes
Permissions can be restricted by additional conditions such as:
  • Member scopes within the group
  • Message categories and types
  • Group-specific message history access

SBAC Data Types

Data TypeDescriptionExample Values
stringSingle string valueallow, deny
stringArrayArray of predefined strings["admin", "moderator"], ["text", "image"]
customStringArrayArray of custom user-defined strings["custom-type-1", "custom-type-2"]

SBAC Permission Structure

Each SBAC permission follows this structure:
AttributeDescription
KeyThe SBAC permission key used in APIs
CategoryLogical grouping (Groups, Members, Messages, etc.)
Data TypeExpected value type
Available ValuesSupported values
DefaultApplied if not explicitly configured

SBAC Permission Value Behavior

When an array permission (e.g., allowedScopes, allowedMimeTypes) has a value of null:
  • It means no restriction - all values are allowed
  • This is equivalent to an empty array []
For allow / deny values:
  • allow: The action is permitted
  • deny: The action is blocked, returns ERR_PERMISSION_DENIED

SBAC Permissions

1. Groups

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
Group Edit DetailsAllow or deny group editsstringeditGroupallow, denyadmin: allow
moderator: deny
participant: deny
Group DeleteAllow or deny group deletesstringdeleteGroupallow, denyadmin: deny
moderator: deny
participant: deny
Group LeaveAllow or deny group leavestringleaveGroupallow, denyallow

2. Members

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
Member ListingAllow or deny listing group membersstringlistMembersallow, denyallow
Member List Scope FilterSelect which member scopes can be listedstringArraylistMembers.allowedScopesadmin, moderator, participantnull
Member AdditionAllow or deny adding members to groupsstringaddMembersallow, denyadmin: allow
moderator: deny
participant: deny
Member Add Scope FilterSelect which member scopes can be addedstringArrayaddMembers.allowedScopesadmin, moderator, participantnull
Member RemovalAllow or deny kicking members from groupsstringkickMembersallow, denyadmin: allow
moderator: allow
participant: deny
Member Kick Scope FilterSelect which member scopes can be kickedstringArraykickMembers.allowedScopesadmin, moderator, participantnull
Banned Member ListingAllow or deny listing banned membersstringlistBannedUsersallow, denyadmin: allow
moderator: allow
participant: deny
Member BanningAllow or deny banning members from groupsstringbanallow, denyadmin: allow
moderator: allow
participant: deny
Member Ban Scope FilterSelect which member scopes can be bannedstringArrayban.allowedScopesadmin, moderator, participantnull
Member UnbanningAllow or deny unbanning members from groupsstringunbanallow, denyadmin: allow
moderator: allow
participant: deny

3. Messages

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
Message Category FilterSelect which message categories can be listed in groupsstringArraylistMessages.allowedMessageCategoriesmessage, customnull
Message Type FilterSelect which message types can be listed in groupsstringArraylistMessages.allowedMessageTypestext, image, audio, video, filenull
Message HistoryAllow or deny listing messages sent before joining the groupstringlistMessages.historyBeforeJoinallow, denyallow
Group Message SendingAllow or deny sending messages in groupsstringsendMessageallow, denyallow
Group Send Category FilterSelect which message categories can be sent in groupsstringArraysendMessage.allowedMessageCategoriesmessage, customnull
Group Send Type FilterSelect which message types can be sent in groupsstringArraysendMessage.allowedMessageTypestext, image, audio, video, filenull
Group Custom Message TypesDefine custom message types that can be sent in groupscustomStringArraysendMessage.allowedCustomTypesnullnull
Group Media MIME TypesDefine MIME types allowed for group media messagescustomStringArraysendMessage.allowedMimeTypesnullnull
Group Message EditingAllow or deny editing messages in groupsstringeditMessageallow, denyallow
Group Message DeletionAllow or deny deleting messages in groupsstringdeleteMessageallow, denyallow

4. Message Thread

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
Group Thread ListingAllow or deny listing threaded messages in groupsstringlistThreadedMessagesallow, denyallow
Group Thread SendingAllow or deny sending messages in group threadsstringsendThreadedMessageallow, denyallow
Group Thread Category FilterSelect which message categories can be sent in group threadsstringArraysendThreadedMessage.allowedMessageCategoriesmessage, customnull
Group Thread Type FilterSelect which message types can be sent in group threadsstringArraysendThreadedMessage.allowedMessageTypestext, image, audio, video, filenull
Group Thread Custom TypesDefine custom message types that can be sent in group threadscustomStringArraysendThreadedMessage.allowedCustomTypesnullnull
Group Thread Media TypesDefine MIME types allowed for group thread media messagescustomStringArraysendThreadedMessage.allowedMimeTypesnullnull
Group Thread EditingAllow or deny editing thread messages in groupsstringeditThreadedMessageallow, denyallow
Group Thread DeletionAllow or deny deleting thread messages in groupsstringdeleteThreadedMessageallow, denyallow

5. Message Reactions

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
Group Reaction ListingAllow or deny viewing message reactions in groupsstringlistReactionsallow, denyallow
Group Reaction ManagementAllow or deny adding/removing message reactions in groupsstringaddReactionallow, denyallow

6. Calls

TitleDescriptionData TypePermission KeyAvailable ValuesDefault
Group Call InitiationAllow or deny call initiation in groupsstringinitiateCallallow, denyallow
Call JoiningAllow or deny joining calls in groupsstringjoinCallallow, denyallow

SBAC Example Configuration

The following example denies the sendMessage permission for the participant scope. When applied, group members with the participant scope will not be able to send messages in the group and will receive an ERR_PERMISSION_DENIED error.
{
  "permissions": {
    "sendMessage": "deny"
  }
}

SBAC Permission Evaluation Order

  1. Explicitly configured permission for the scope which has the highest priority
  2. Permission default value (from permission definition)
If a permission is not explicitly configured for a scope, the default value is used.