Skip to contentSkip to navigationSkip to topbar
Rate this page:
On this page

Role Resource


(error)

Danger

Programmable Chat has been deprecated and is no longer supported. Instead, we'll be focusing on the next generation of chat: Twilio Conversations. Find out more about the EOL process here(link takes you to an external page).

If you're starting a new project, please visit the Conversations Docs to begin. If you've already built on Programmable Chat, please visit our Migration Guide to learn about how to switch.

The Role resource of Programmable Chat represents what a user can do within a Chat Service instance. Roles are scoped to either a Service or a Channel.

Users are assigned a role at the Service scope, which determines what they are can do within the Chat Service instance, such as create and destroy channels.

Members are assigned a role at the Channel scope. This determines what they are able to do within a particular channel, such as invite users to be members of the channel, post messages, and remove members from the channel.

See Permission values for information about the permissions that can be assigned in each scope.


Role Properties

role-properties page anchor

Each Role resource contains these properties.

Property nameTypePIIDescription
sidSID<RL>
Not PII

The unique string that we created to identify the Role resource.

Pattern: ^RL[0-9a-fA-F]{32}$Min length: 34Max length: 34

account_sidSID<AC>

The SID of the Account that created the Role resource.

Pattern: ^AC[0-9a-fA-F]{32}$Min length: 34Max length: 34

service_sidSID<IS>

The SID of the Service the Role resource is associated with.

Pattern: ^IS[0-9a-fA-F]{32}$Min length: 34Max length: 34

friendly_namestring
PII MTL: 30 days

The string that you assigned to describe the resource.


typeenum<string>

The type of role. Can be: channel for Channel roles or deployment for Service roles.

Possible values:
channeldeployment

permissionsarray[string]

An array of the permissions the role has been granted.


date_createdstring<date-time>

The date and time in GMT when the resource was created specified in ISO 8601(link takes you to an external page) format.


date_updatedstring<date-time>

The date and time in GMT when the resource was last updated specified in ISO 8601(link takes you to an external page) format.


urlstring<uri>

The absolute URL of the Role resource.


POST https://chat.twilio.com/v2/Services/{ServiceSid}/Roles

Path parameters

path-parameters page anchor
Property nameTypeRequiredPIIDescription
ServiceSidSID<IS>required

The SID of the Service to create the Role resource under.

Pattern: ^IS[0-9a-fA-F]{32}$Min length: 34Max length: 34
Property nameTypeRequiredPIIDescription
FriendlyNamestringrequired

A descriptive string that you create to describe the new resource. It can be up to 64 characters long.


Typeenum<string>required

The type of role. Can be: channel for Channel roles or deployment for Service roles.

Possible values:
channeldeployment

Permissionarray[string]required

A permission that you grant to the new role. Only one permission can be granted per parameter. To assign more than one permission, repeat this parameter for each permission value. The values for this parameter depend on the role's type.

Create a Role resource

create-a-role-resource-1 page anchor
Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_22
// Download the helper library from https://www.twilio.com/docs/node/install
_22
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_22
_22
// Find your Account SID and Auth Token at twilio.com/console
_22
// and set the environment variables. See http://twil.io/secure
_22
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_22
const authToken = process.env.TWILIO_AUTH_TOKEN;
_22
const client = twilio(accountSid, authToken);
_22
_22
async function createRole() {
_22
const role = await client.chat.v2
_22
.services("ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
_22
.roles.create({
_22
friendlyName: "FriendlyName",
_22
permission: ["Permission"],
_22
type: "channel",
_22
});
_22
_22
console.log(role.sid);
_22
}
_22
_22
createRole();

Output

_16
{
_16
"sid": "RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_16
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_16
"service_sid": "ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_16
"friendly_name": "FriendlyName",
_16
"type": "channel",
_16
"permissions": [
_16
"sendMessage",
_16
"leaveChannel",
_16
"editOwnMessage",
_16
"deleteOwnMessage"
_16
],
_16
"date_created": "2016-03-03T19:47:15Z",
_16
"date_updated": "2016-03-03T19:47:15Z",
_16
"url": "https://chat.twilio.com/v2/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles/RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
_16
}


GET https://chat.twilio.com/v2/Services/{ServiceSid}/Roles/{Sid}

Property nameTypeRequiredPIIDescription
ServiceSidSID<IS>required

The SID of the Service to fetch the Role resource from.

Pattern: ^IS[0-9a-fA-F]{32}$Min length: 34Max length: 34

SidSID<RL>required

The SID of the Role resource to fetch.

Pattern: ^RL[0-9a-fA-F]{32}$Min length: 34Max length: 34
Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_19
// Download the helper library from https://www.twilio.com/docs/node/install
_19
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_19
_19
// Find your Account SID and Auth Token at twilio.com/console
_19
// and set the environment variables. See http://twil.io/secure
_19
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_19
const authToken = process.env.TWILIO_AUTH_TOKEN;
_19
const client = twilio(accountSid, authToken);
_19
_19
async function fetchRole() {
_19
const role = await client.chat.v2
_19
.services("ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
_19
.roles("RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
_19
.fetch();
_19
_19
console.log(role.sid);
_19
}
_19
_19
fetchRole();

Output

_16
{
_16
"sid": "RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_16
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_16
"service_sid": "ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_16
"friendly_name": "channel user",
_16
"type": "channel",
_16
"permissions": [
_16
"sendMessage",
_16
"leaveChannel",
_16
"editOwnMessage",
_16
"deleteOwnMessage"
_16
],
_16
"date_created": "2016-03-03T19:47:15Z",
_16
"date_updated": "2016-03-03T19:47:15Z",
_16
"url": "https://chat.twilio.com/v2/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles/RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
_16
}


Read multiple Role resources

read-multiple-role-resources page anchor
GET https://chat.twilio.com/v2/Services/{ServiceSid}/Roles

Property nameTypeRequiredPIIDescription
ServiceSidSID<IS>required

The SID of the Service to read the Role resources from.

Pattern: ^IS[0-9a-fA-F]{32}$Min length: 34Max length: 34
Property nameTypeRequiredPIIDescription
PageSizeintegerOptional

How many resources to return in each list page. The default is 50, and the maximum is 1000.

Minimum: 1Maximum: 1000

PageintegerOptional

The page index. This value is simply for client state.

Minimum: 0

PageTokenstringOptional

The page token. This is provided by the API.

Read multiple Role resources

read-multiple-role-resources-1 page anchor
Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_18
// Download the helper library from https://www.twilio.com/docs/node/install
_18
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_18
_18
// Find your Account SID and Auth Token at twilio.com/console
_18
// and set the environment variables. See http://twil.io/secure
_18
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_18
const authToken = process.env.TWILIO_AUTH_TOKEN;
_18
const client = twilio(accountSid, authToken);
_18
_18
async function listRole() {
_18
const roles = await client.chat.v2
_18
.services("ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
_18
.roles.list({ limit: 20 });
_18
_18
roles.forEach((r) => console.log(r.sid));
_18
}
_18
_18
listRole();

Output

_29
{
_29
"meta": {
_29
"page": 0,
_29
"page_size": 50,
_29
"first_page_url": "https://chat.twilio.com/v2/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles?PageSize=50&Page=0",
_29
"previous_page_url": null,
_29
"url": "https://chat.twilio.com/v2/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles?PageSize=50&Page=0",
_29
"next_page_url": null,
_29
"key": "roles"
_29
},
_29
"roles": [
_29
{
_29
"sid": "RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_29
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_29
"service_sid": "ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_29
"friendly_name": "channel user",
_29
"type": "channel",
_29
"permissions": [
_29
"sendMessage",
_29
"leaveChannel",
_29
"editOwnMessage",
_29
"deleteOwnMessage"
_29
],
_29
"date_created": "2016-03-03T19:47:15Z",
_29
"date_updated": "2016-03-03T19:47:15Z",
_29
"url": "https://chat.twilio.com/v2/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles/RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
_29
}
_29
]
_29
}


POST https://chat.twilio.com/v2/Services/{ServiceSid}/Roles/{Sid}

Property nameTypeRequiredPIIDescription
ServiceSidSID<IS>required

The SID of the Service to update the Role resource in.

Pattern: ^IS[0-9a-fA-F]{32}$Min length: 34Max length: 34

SidSID<RL>required

The SID of the Role resource to update.

Pattern: ^RL[0-9a-fA-F]{32}$Min length: 34Max length: 34
Property nameTypeRequiredPIIDescription
Permissionarray[string]required

A permission that you grant to the role. Only one permission can be granted per parameter. To assign more than one permission, repeat this parameter for each permission value. Note that the update action replaces all previously assigned permissions with those defined in the update action. To remove a permission, do not include it in the subsequent update action. The values for this parameter depend on the role's type.

Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_19
// Download the helper library from https://www.twilio.com/docs/node/install
_19
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_19
_19
// Find your Account SID and Auth Token at twilio.com/console
_19
// and set the environment variables. See http://twil.io/secure
_19
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_19
const authToken = process.env.TWILIO_AUTH_TOKEN;
_19
const client = twilio(accountSid, authToken);
_19
_19
async function updateRole() {
_19
const role = await client.chat.v2
_19
.services("ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
_19
.roles("RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
_19
.update({ permission: ["Permission"] });
_19
_19
console.log(role.sid);
_19
}
_19
_19
updateRole();

Output

_16
{
_16
"sid": "RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_16
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_16
"service_sid": "ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_16
"friendly_name": "channel user",
_16
"type": "channel",
_16
"permissions": [
_16
"sendMessage",
_16
"leaveChannel",
_16
"editOwnMessage",
_16
"deleteOwnMessage"
_16
],
_16
"date_created": "2016-03-03T19:47:15Z",
_16
"date_updated": "2016-03-03T19:47:15Z",
_16
"url": "https://chat.twilio.com/v2/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles/RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
_16
}


DELETE https://chat.twilio.com/v2/Services/{ServiceSid}/Roles/{Sid}

Property nameTypeRequiredPIIDescription
ServiceSidSID<IS>required

The SID of the Service to delete the Role resource from.

Pattern: ^IS[0-9a-fA-F]{32}$Min length: 34Max length: 34

SidSID<RL>required

The SID of the Role resource to delete.

Pattern: ^RL[0-9a-fA-F]{32}$Min length: 34Max length: 34
Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_17
// Download the helper library from https://www.twilio.com/docs/node/install
_17
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_17
_17
// Find your Account SID and Auth Token at twilio.com/console
_17
// and set the environment variables. See http://twil.io/secure
_17
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_17
const authToken = process.env.TWILIO_AUTH_TOKEN;
_17
const client = twilio(accountSid, authToken);
_17
_17
async function deleteRole() {
_17
await client.chat.v2
_17
.services("ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
_17
.roles("RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
_17
.remove();
_17
}
_17
_17
deleteRole();


Service scope permissions

service-scope-permissions page anchor

These are the available permissions entries for roles where type = deployment.

PermissionEnables the user to:
addMemberAdd other users as members of a channel
createChannelCreate new channels
deleteAnyMessageDelete any message in the Service
destroyChannelDelete channels
editAnyMessageEdit any message in the Service
editAnyMessageAttributesEdit any message attributes in the Service
editAnyUserInfoEdit other User's User Info properties
editChannelAttributesUpdate the optional attributes metadata field on a channel
editChannelNameChange the name of a channel
editOwnMessageEdit their own messages in the Service
editOwnMessageAttributesEdit the own message attributes in the Service
editOwnUserInfoEdit their own User Info properties
inviteMemberInvite other users to be members of a channel
joinChannelJoin channels
removeMemberRemove members from a channel

Channel scope permissions

channel-scope-permissions page anchor

These are the available permissions entries for roles where type = channel.

PermissionEnables the user to:
addMemberAdd other users as members of a channel
deleteAnyMessageDelete any message in the channel
deleteOwnMessageDelete their own messages in the channel
destroyChannelDelete channels
editAnyMessageEdit any message in the channel
editAnyMessageAttributesEdit any message attributes in the channel
editChannelAttributesUpdate the optional attributes metadata field on a channel
editChannelNameChange the name of a channel
editOwnMessageEdit their own messages in the channel
editOwnMessageAttributesEdit the own message attributes in the channel
editOwnUserInfoEdit their own User Info properties
inviteMemberInvite other users to be members of a channel
leaveChannelLeave a channel
removeMemberRemove members from a channel
sendMediaMessageSend media messages to channels
sendMessageSend messages to channels

Rate this page: