---
source_url: https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/permissions
title: Permissions
updated_at: 2026-06-23T11:42:33.080Z
---

> Documentation Index
> For a curated overview of PubNub documentation, see: https://www.pubnub.com/docs/llms.txt
> For the full list of all documentation pages, see: https://www.pubnub.com/docs/llms-full.txt


# Permissions

Control who can access channels and user metadata in your chat app. Define permission schemas to protect against [unauthorized access](https://www.pubnub.com/docs/chat/unity-chat-sdk/learn/access-control).

**Examples:**

* Restrict channel/profile modifications to specific users
* Allow only admins to remove users from channels

**Chat SDK limitations** (client-side only):

* Channel membership restrictions (direct, group, public)
* Feature availability errors in public chats (typing indicator, invites, read receipts)

Use [Access Manager](https://www.pubnub.com/docs/general/security/access-control) for strict server-enforced access rules. Chat SDK exposes all [Unity SDK](https://www.pubnub.com/docs/sdks/unity/api-reference/access-manager) Access Manager methods.

## Required configuration

1. Enable Access Manager in the [Admin Portal](https://admin.pubnub.com/).
2. [Initialize Chat SDK](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/configuration#initialize-pubnub): Server: with SecretKey to administer permissions, Client: with AuthKey to authenticate users

See [Moderation](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/moderation#server-side-restrictions) for examples.

:::warning Secret key security
Never expose `SecretKey` to clients. If compromised, generate a new one in the Admin Portal.
:::

## Use Access Manager

Available methods:

* [GrantToken()](https://www.pubnub.com/docs/sdks/unity/api-reference/access-manager#grant-token) - Generate time-limited token with access control list
* [RevokeToken()](https://www.pubnub.com/docs/sdks/unity/api-reference/access-manager#revoke-token) - Disable token and revoke permissions
* [ParseToken()](https://www.pubnub.com/docs/sdks/unity/api-reference/access-manager#parse-token) - Decode token to view permissions
* [SetAuthToken()](https://www.pubnub.com/docs/sdks/unity/api-reference/access-manager#set-token) - Update authentication token

:::note Channel group limitation
Chat SDK doesn't support channel groups. Use a [core SDK](https://www.pubnub.com/docs/sdks) for [channel groups](https://www.pubnub.com/docs/general/channels/subscribe#channel-groups).
:::

### Resource permissions

Define operations users can perform on PubNub resources:

| Resource type | Permissions |
| --- | --- |
| `Channels` | `Read`, `Write`, `Get`, `Manage`, `Update`, `Join`, `Delete` |
| `Uuids` | `Get`, `Update`, `Delete` |

See [Moderation](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/moderation#secure-moderation) for muting/banning with Access Manager.

### Operations-to-permissions mapping

Access levels determine user operations. Example: `Write` on `Channels` allows sending messages via `SendText()`.

The tables below map permissions to Chat SDK operations.

#### Pub/Sub

| PubNub operation | Resource type(s) | Permission | Unity Chat SDK method(s) |
| --- | --- | --- | --- |
| Publish on channels | `Channels` | `Write` | Send text messages ([SendText()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/send-receive)) Forward messages ([Forward(), ForwardMessage()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/forward)) Create and send events ([EmitCustomEvent()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/custom-events#create-and-send-events)) Report messages ([Report()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/moderation#flagreport-messages)) |
| Send signals to channels | `Channels` | `Write` | [Typing indicator methods](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/typing-indicator) Create and send events ([EmitCustomEvent()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/custom-events#create-and-send-events)) |
| Subscribe to channels | `Channels` | `Read` | [Typing indicator methods](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/typing-indicator) Receive events ([SetListeningForUpdates()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/updates#get-channel-updates)) Receive messages ([Connect()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/send-receive#receive)) Membership updates ([OnUpdated](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/membership#get-updates)) Channel updates ([Update(), UpdateChannel()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/updates#get-channel-updates)) Messages updates ([OnUpdated](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/updates#get-message-updates)) User updates ([OnUpdated](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/updates#get-user-updates)) |
| Subscribe to presence channels | Presence channels ([<channel-name>-pnpres](https://www.pubnub.com/docs/general/presence/presence-events)) | `Read` | n/a |
| Unsubscribe from channels | `Channels` | None required | Stop receiving typing signals, events, messages, updates on membership, channels, messages, and users |

#### Presence

| PubNub operation | Resource type(s) | Permission | Unity Chat SDK method(s) |
| --- | --- | --- | --- |
| Here Now | `Channels` | `Read` | Channel presence ([WhoIsPresent()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/presence#return-all-users-present-on-channel)) |
| Where Now | `Channels` | None required | Channel presence ([WherePresent()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/presence#return-channels-where-user-is-present), [IsPresentOn(), IsPresent()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/presence#check-users-channel-presence)) |

#### Message Persistence

| PubNub operation | Resource type(s) | Permission | Unity Chat SDK method(s) |
| --- | --- | --- | --- |
| Fetch historical messages | `Channels` | `Read` | [getMessageHistory()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/history) |
| Message counts | `Channels` | `Read` | Unread messages ([GetUnreadMessagesCount()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/unread#get-unread-messages-count-one-channel), [GetUnreadMessagesCounts()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/unread#get-unread-messages-count-all-channels)) |
| Delete messages | `Channels` | `Delete` | [Delete()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/delete) |

#### App Context

| PubNub operation | Resource type(s) | Permission | Unity Chat SDK method(s) |
| --- | --- | --- | --- |
| Set user metadata | `Uuids` | `Update` | Create users ([CreateUser()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/create)) Update user metadata ([Update(), UpdateUser()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/updates#update-user-details)) |
| Delete user metadata | `Uuids` | `Delete` | [DeleteUser()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/delete) |
| Get user metadata | `Uuids` | `Get` | Get user data ([GetUser()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/details)) |
| Get all user metadata | `Uuids` | You don't need to specify permissions to enable it if you uncheck the `Disallow Get All User Metadata` option in the [App Context configuration](https://www.pubnub.com/docs/general/metadata/basics#configuration) in the Admin Portal. | [chat.GetUsers()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/list) |
| Set channel metadata | `Channels` When working with threads, also grant permissions to [PUBNUB_INTERNAL_THREAD](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/threads) channels. | `Update`, `Get` | Create channels ([CreateDirectConversation()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/create#create-direct-channel), [CreateGroupConversation()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/create#create-group-channel), [CreatePublicConversation()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/create#create-public-channel)) Update channels ([Update(), UpdateChannel()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/updates#update-channel-details)) Pin messages ([Pin(), PinMessage()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/pinned)) Threads ([CreateThread()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/threads#create-thread), [PinMessage()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/threads#pin-thread-message-to-thread-channel), [PinMessageToParentChannel()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/threads#pin-thread-message-to-parent-channel), [UnpinMessage()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/threads#unpin-thread-message-from-thread-channel), [UnpinMessageFromParentChannel()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/threads#unpin-thread-message-from-parent-channel)) |
| Delete channel metadata | `Channels` | `Delete` | [Delete(), DeleteChannel()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/delete) |
| Get channel metadata | `Channels` | `Get` | Get channel details ([GetChannel()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/details)) Get pinned messages ([GetPinnedMessage()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/pinned#get)) Get thread ([GetThread()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/threads#get-thread)) |
| Get all channel metadata | `Channels` | You don't need to specify permissions to enable it if you uncheck the `Disallow Get All Channel Metadata` option in the [App Context configuration](https://www.pubnub.com/docs/general/metadata/basics#configuration) in the Admin Portal. | [chat.GetChannels()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/list) |
| Set channel members | `Channels` | `Manage` | Invite multiple users to channels ([InviteMultiple()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/invite#invite-multiple-users)) Mute/Ban users ([SetRestriction()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/moderation#mute-or-ban-users)) |
| Remove channel members | `Channels` | `Manage` | Unmute/Unban users ([SetRestriction()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/moderation#mute-or-ban-users)) |
| Get channel members | `Channels` | `Get` | Get members ([GetMemberships()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/membership#get-membership)) Check restrictions ([GetUserRestriction(), GetUsersRestrictions(), GetChannelsRestrictions(), GetChannelRestriction()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/moderation#check-restrictions)) |
| Set channel memberships | `Channels`, `Uuids` | `Join` on `Channels` `Update` on `Uuids` | Create channels ([CreateDirectConversation()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/create#create-direct-channel), [CreateGroupConversation()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/create#create-group-channel)) Invite a user to a channel ([Invite()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/invite)) Join channels ([Join()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/join)) Update membership ([Update()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/membership#update)) Unread messages ([SetLastReadMessage()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/unread#mark-messages-as-read-one-channel), [MarkAllMessagesAsRead()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/unread#mark-messages-as-read-all-channels)) |
| Remove channel memberships | `Channels`, `Uuids` | `Join` on `Channels` `Update` on `Uuids` | Leave channels ([Leave()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/leave)) |
| Get channel memberships | `Uuids` | `Get` | List channels ([GetChannels()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/list)), [GetMemberships()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/membership#get-membership) |

#### Message Reactions

| PubNub operation | Resource type(s) | Permission | Unity Chat SDK method(s) |
| --- | --- | --- | --- |
| Add message reaction | `Channels` | `Write` | [ToggleReaction()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/reactions#add--delete) |
| Remove message reaction | `Channels` | `Delete` | [ToggleReaction()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/reactions#add--delete) |
| Get history with reactions | `Channels` | `Read` | [getMessageHistory()](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/messages/history) |