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.
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.
This is reference documentation for the v1 REST API, which has been deprecated. You should use the current v2 REST API.
The Role resource of Programmable Chat represents what a user can do within a Chat Service instance. Roles are either [Service][service] scoped or [Channel][channel] scoped.
Users are assigned a role at the Service scope, which determines what they are able to do within the Chat Service instance - e.g. create channels, destroy channels, and more.
[Members][member] are also assigned a role at the Channel scope, per channel. This determines what they are able to do within a particular channel - e.g. invite users to be members of the channel, post messages, kick members from the channel, and more.
Each role has these properties:
The unique string that we created to identify the Role resource.
^RL[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The SID of the Account that created the Role resource.
^AC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The SID of the Service the resource is associated with.
^IS[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The type of role. Can be: channel
for Channel roles or deployment
for Service roles.
channel
deployment
An array of the permissions the role has been granted, formatted as a JSON string.
The date and time in GMT when the resource was created specified in RFC 2822 format.
The date and time in GMT when the resource was last updated specified in RFC 2822 format.
The absolute URL of the Role resource.
This is the complete list of possible permissions
entries for deployment
(Service) roles:
name | description |
---|---|
createChannel | Allows users to create new channels |
joinChannel | Allows users to join channels |
destroyChannel | Allows users to delete channels |
inviteMember | Allows users to invite other users to be members of a channel |
removeMember | Allows users to remove members from a channel |
editChannelName | Allows users to change the name of a channel |
editChannelAttributes | Allows users to update the optional attributes metadata field on a channel |
addMember | Allows users to add other users as members of a channel |
editOwnMessage | Allows users to edit their own messages in the Service |
editAnyMessage | Allows users to edit any message in the Service |
editOwnMessageAttributes | Allows users to edit the own message attributes in the Service |
editAnyMessageAttributes | Allows users to edit any message attributes in the Service |
deleteAnyMessage | Allows users to delete any message in the Service |
editOwnUserInfo | Allows users to edit their own User Info properties |
editAnyUserInfo | Allows users to edit other User's User Info properties |
This is the complete list of possible permissions
entries for channel
roles:
name | description |
---|---|
sendMessage | Allows the user to send messages to channels |
leaveChannel | Allows users to leave a channel |
destroyChannel | Allows users to delete channels |
inviteMember | Allows users to invite other users to be members of a channel |
removeMember | Allows users to remove members from a channel |
editChannelName | Allows users to change the name of a channel |
editChannelAttributes | Allows users to update the optional attributes metadata field on a channel |
addMember | Allows users to add other users as members of a channel |
editOwnMessage | Allows users to edit their own messages in the Service |
editAnyMessage | Allows users to edit any message in the Service |
editOwnMessageAttributes | Allows users to edit the own message attributes in the Service |
editAnyMessageAttributes | Allows users to edit any message attributes in the Service |
deleteAnyMessage | Allows users to delete any message in the Service |
editOwnUserInfo | Allows users to edit their own User Info properties |
editAnyUserInfo | Allows users to edit other User's User Info properties |
1GET /Services/{Instance SID}/Roles2
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function listRole() {11const roles = await client.chat.v112.services("ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")13.roles.list({ limit: 20 });1415roles.forEach((r) => console.log(r.sid));16}1718listRole();
1{2"meta": {3"page": 0,4"page_size": 50,5"first_page_url": "https://chat.twilio.com/v1/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles?PageSize=50&Page=0",6"previous_page_url": null,7"url": "https://chat.twilio.com/v1/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/v1/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles/RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"27}28]29}
1POST /Services/{Instance SID}/Roles2
application/x-www-form-urlencoded
A descriptive string that you create to describe the new resource. It can be up to 64 characters long.
The type of role. Can be: channel
for Channel roles or deployment
for Service roles.
channel
deployment
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
and are described in the documentation.
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function createRole() {11const role = await client.chat.v112.services("ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")13.roles.create({14friendlyName: "new_role",15permission: ["createChannel"],16type: "deployment",17});1819console.log(role.sid);20}2122createRole();
1{2"sid": "RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",3"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",4"service_sid": "ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",5"friendly_name": "new_role",6"type": "deployment",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/v1/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles/RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"16}
1GET /Services/{Instance SID}/Roles/{Role SID}2
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function fetchRole() {11const role = await client.chat.v112.services("ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")13.roles("RLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")14.fetch();1516console.log(role.sid);17}1819fetchRole();
1{2"sid": "RLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",3"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",4"service_sid": "ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",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/v1/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles/RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"16}
1POST /Services/{Instance SID}/Roles/{Role SID}2
The SID of the Service to update the resource from.
^IS[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The Twilio-provided string that uniquely identifies the Role resource to update.
^RL[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
application/x-www-form-urlencoded
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. The values for this parameter depend on the role's type
and are described in the documentation.
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function updateRole() {11const role = await client.chat.v112.services("ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")13.roles("RLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")14.update({ permission: ["sendMediaMessage"] });1516console.log(role.sid);17}1819updateRole();
1{2"sid": "RLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",3"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",4"service_sid": "ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",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/v1/Services/ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Roles/RLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"16}
1DELETE /Services/{Instance SID}/Roles/{Role SID}2
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function deleteRole() {11await client.chat.v112.services("ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")13.roles("RLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")14.remove();15}1617deleteRole();