Skip to contentSkip to navigationSkip to topbar
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 nameTypeRequiredDescriptionChild properties
sidSID<RL>Optional
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>Optional

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>Optional

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

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

friendly_namestringOptional
PII MTL: 30 days

The string that you assigned to describe the resource.


typeenum<string>Optional

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

Possible values:
channeldeployment

permissionsarray[string]Optional

An array of the permissions the role has been granted.


date_createdstring<date-time>Optional

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>Optional

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>Optional

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
Encoding type:application/x-www-form-urlencoded
SchemaExample
Property nameTypeRequiredDescriptionChild properties
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 resourceLink to code sample: Create a Role resource
1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function createRole() {
11
const role = await client.chat.v2
12
.services("ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
13
.roles.create({
14
friendlyName: "FriendlyName",
15
permission: ["Permission"],
16
type: "channel",
17
});
18
19
console.log(role.sid);
20
}
21
22
createRole();

Output

1
{
2
"sid": "RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
3
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
4
"service_sid": "ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
5
"friendly_name": "FriendlyName",
6
"type": "channel",
7
"permissions": [
8
"sendMessage",
9
"leaveChannel",
10
"editOwnMessage",
11
"deleteOwnMessage"
12
],
13
"date_created": "2016-03-03T19:47:15Z",
14
"date_updated": "2016-03-03T19:47:15Z",
15
"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
1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function fetchRole() {
11
const role = await client.chat.v2
12
.services("ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
13
.roles("RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
14
.fetch();
15
16
console.log(role.sid);
17
}
18
19
fetchRole();

Output

1
{
2
"sid": "RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
3
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
4
"service_sid": "ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
5
"friendly_name": "channel user",
6
"type": "channel",
7
"permissions": [
8
"sendMessage",
9
"leaveChannel",
10
"editOwnMessage",
11
"deleteOwnMessage"
12
],
13
"date_created": "2016-03-03T19:47:15Z",
14
"date_updated": "2016-03-03T19:47:15Z",
15
"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.

1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function listRole() {
11
const roles = await client.chat.v2
12
.services("ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
13
.roles.list({ limit: 20 });
14
15
roles.forEach((r) => console.log(r.sid));
16
}
17
18
listRole();

Output

1
{
2
"meta": {
3
"page": 0,
4
"page_size": 50,
5
"first_page_url": "https://chat.twilio.com/v2/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles?PageSize=50&Page=0",
6
"previous_page_url": null,
7
"url": "https://chat.twilio.com/v2/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles?PageSize=50&Page=0",
8
"next_page_url": null,
9
"key": "roles"
10
},
11
"roles": [
12
{
13
"sid": "RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
14
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
15
"service_sid": "ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
16
"friendly_name": "channel user",
17
"type": "channel",
18
"permissions": [
19
"sendMessage",
20
"leaveChannel",
21
"editOwnMessage",
22
"deleteOwnMessage"
23
],
24
"date_created": "2016-03-03T19:47:15Z",
25
"date_updated": "2016-03-03T19:47:15Z",
26
"url": "https://chat.twilio.com/v2/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles/RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
27
}
28
]
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
Encoding type:application/x-www-form-urlencoded
SchemaExample
Property nameTypeRequiredDescriptionChild properties
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.

1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function updateRole() {
11
const role = await client.chat.v2
12
.services("ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
13
.roles("RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
14
.update({ permission: ["Permission"] });
15
16
console.log(role.sid);
17
}
18
19
updateRole();

Output

1
{
2
"sid": "RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
3
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
4
"service_sid": "ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
5
"friendly_name": "channel user",
6
"type": "channel",
7
"permissions": [
8
"sendMessage",
9
"leaveChannel",
10
"editOwnMessage",
11
"deleteOwnMessage"
12
],
13
"date_created": "2016-03-03T19:47:15Z",
14
"date_updated": "2016-03-03T19:47:15Z",
15
"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
1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function deleteRole() {
11
await client.chat.v2
12
.services("ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
13
.roles("RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
14
.remove();
15
}
16
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

Need some help?

Terms of service

Copyright © 2024 Twilio Inc.