Syllable Roles API
Operations related to roles. A role is a collection of permissions that can be assigned to users to control their access to various features within the Syllable system.
Operations related to roles. A role is a collection of permissions that can be assigned to users to control their access to various features within the Syllable system.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/syllable-roles-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: SyllableSDK Roles API
description: "\n# Syllable Platform SDK\n\nSyllable SDK gives you the power of awesome AI agentry. \U0001F680\n\n## Overview\n\nThe Syllable SDK provides a comprehensive set of tools and APIs to integrate powerful AI\ncapabilities into your communication applications. Whether you're building phone agents, chatbots,\nvirtual assistants, or any other AI-driven solutions, Syllable SDK has got you covered.\n\n## Features\n\n- **Agent Configuration**: Create and manage agents that can interact with users across various \nchannels.\n- **Channel Management**: Configure channels like SMS, web chat, and more to connect agents with \nusers.\n- **Custom Messages**: Set up custom messages that agents can deliver as greetings or responses.\n- **Conversations**: Track and manage conversations between users and agents, including session \nmanagement.\n- **Tools and Workflows**: Leverage tools and workflows to enhance agent capabilities, such as data \nprocessing and API calls.\n- **Data Sources**: Integrate data sources to provide agents with additional context and \ninformation.\n- **Insights and Analytics**: Analyze conversations and sessions to gain insights into user \ninteractions.\n- **Permissions and Security**: Manage permissions to control access to various features and \nfunctionalities.\n- **Language Support**: Define language groups to enable multilingual support for agents.\n- **Outbound Campaigns**: Create and manage outbound communication campaigns to reach users \neffectively.\n- **Session Labels**: Label sessions with evaluations of quality and descriptions of issues \nencountered.\n- **Incident Management**: Track and manage incidents related to agent interactions.\n"
version: 0.0.3
servers:
- url: https://api.syllable.cloud
description: API server
tags:
- name: roles
description: Operations related to roles. A role is a collection of permissions that can be assigned to users to control their access to various features within the Syllable system.
paths:
/api/v1/roles/:
get:
tags:
- roles
summary: List Roles
description: List the existing roles.
operationId: roles_list
security:
- APIKeyHeader: []
parameters:
- name: page
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 0
- type: 'null'
description: The page number from which to start (0-based)
examples:
- 0
default: 0
title: Page
description: The page number from which to start (0-based)
- name: limit
in: query
required: false
schema:
type: integer
minimum: 0
description: The maximum number of items to return
examples:
- 25
default: 25
title: Limit
description: The maximum number of items to return
- name: search_fields
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/RoleProperties'
description: String names of fields to search. Correspond by index to search field values
examples:
- name
default: []
title: Search Fields
description: String names of fields to search. Correspond by index to search field values
- name: search_field_values
in: query
required: false
schema:
type: array
items:
type: string
description: Values of fields to search. Correspond by index to search fields. Unless field name contains "list", an individual search field value cannot be a list
examples:
- Some Object Name
default: []
title: Search Field Values
description: Values of fields to search. Correspond by index to search fields. Unless field name contains "list", an individual search field value cannot be a list
- name: order_by
in: query
required: false
schema:
anyOf:
- $ref: '#/components/schemas/RoleProperties'
- type: 'null'
description: The field whose value should be used to order the results
examples:
- name
title: Order By
description: The field whose value should be used to order the results
- name: order_by_direction
in: query
required: false
schema:
anyOf:
- $ref: '#/components/schemas/OrderByDirection'
- type: 'null'
description: The direction in which to order the results
title: Order By Direction
description: The direction in which to order the results
- name: fields
in: query
required: false
schema:
anyOf:
- type: array
items:
$ref: '#/components/schemas/RoleProperties'
- type: 'null'
description: The fields to include in the response
default: []
title: Fields
description: The fields to include in the response
- name: start_datetime
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: The start datetime for filtering results
examples:
- '2023-01-01T00:00:00Z'
title: Start Datetime
description: The start datetime for filtering results
- name: end_datetime
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: The end datetime for filtering results
examples:
- '2024-01-01T00:00:00Z'
title: End Datetime
description: The end datetime for filtering results
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponse_RoleResponse_'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK, models\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.roles.list(page=0, limit=25, search_fields=[\n models.RoleProperties.NAME,\n ], search_field_values=[\n \"Some Object Name\",\n ], start_datetime=\"2023-01-01T00:00:00Z\", end_datetime=\"2024-01-01T00:00:00Z\")\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.roles.list({\n page: 0,\n searchFields: [\n \"name\",\n ],\n searchFieldValues: [\n \"Some Object Name\",\n ],\n startDatetime: \"2023-01-01T00:00:00Z\",\n endDatetime: \"2024-01-01T00:00:00Z\",\n });\n\n console.log(result);\n}\n\nrun();"
post:
tags:
- roles
summary: Create Role
description: Create a new role.
operationId: roles_create
security:
- APIKeyHeader: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RoleCreateRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RoleResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.roles.create(request={\n \"name\": \"Prompt Engineer\",\n \"description\": \"Role for users who can fetch and change prompts\",\n \"permissions\": [\n \"prompts_read\",\n \"prompts_write\",\n \"prompts_delete\",\n ],\n })\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.roles.create({\n name: \"Prompt Engineer\",\n description: \"Role for users who can fetch and change prompts\",\n permissions: [\n \"prompts_read\",\n \"prompts_write\",\n \"prompts_delete\",\n ],\n });\n\n console.log(result);\n}\n\nrun();"
put:
tags:
- roles
summary: Update Role
description: Update an existing role.
operationId: roles_update
security:
- APIKeyHeader: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RoleUpdateRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RoleResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.roles.update(request={\n \"name\": \"Prompt Engineer\",\n \"description\": \"Role for users who can fetch and change prompts\",\n \"permissions\": [\n \"prompts_read\",\n \"prompts_write\",\n \"prompts_delete\",\n ],\n \"id\": 1,\n \"last_updated_comments\": \"Updated to add delete permission\",\n })\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.roles.update({\n name: \"Prompt Engineer\",\n description: \"Role for users who can fetch and change prompts\",\n permissions: [\n \"prompts_read\",\n \"prompts_write\",\n \"prompts_delete\",\n ],\n id: 1,\n lastUpdatedComments: \"Updated to add delete permission\",\n });\n\n console.log(result);\n}\n\nrun();"
/api/v1/roles/{role_id}:
get:
tags:
- roles
summary: Get Role
description: Fetch a given role.
operationId: roles_get_by_id
security:
- APIKeyHeader: []
parameters:
- name: role_id
in: path
required: true
schema:
type: integer
title: Role Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RoleResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.roles.get_by_id(role_id=324660)\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.roles.getById({\n roleId: 324660,\n });\n\n console.log(result);\n}\n\nrun();"
delete:
tags:
- roles
summary: Delete Role
description: Delete a role. Optionally, reassign existing users with that role to a new role.
operationId: roles_delete
security:
- APIKeyHeader: []
parameters:
- name: role_id
in: path
required: true
schema:
type: integer
description: The ID of the role to delete
title: Role Id
description: The ID of the role to delete
- name: reason
in: query
required: true
schema:
type: string
description: The reason for deleting the role
title: Reason
description: The reason for deleting the role
- name: new_role_id
in: query
required: false
schema:
anyOf:
- type: integer
- type: 'null'
description: Users with the deleted role will be reassigned to the new role, if a new role ID is provided
title: New Role Id
description: Users with the deleted role will be reassigned to the new role, if a new role ID is provided
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: python
label: Python (SDK)
source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n res = ss_client.roles.delete(role_id=458987, reason=\"<value>\")\n\n # Handle response\n print(res)"
- lang: typescript
label: Typescript (SDK)
source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n const result = await syllableSDK.roles.delete({\n roleId: 458987,\n reason: \"<value>\",\n });\n\n console.log(result);\n}\n\nrun();"
components:
schemas:
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
OrderByDirection:
type: string
enum:
- asc
- desc
title: OrderByDirection
description: The direction in which to order list results, either ascending or descending.
RoleUpdateRequest:
properties:
name:
type: string
title: Name
description: The name of the role.
examples:
- Prompt Engineer
description:
anyOf:
- type: string
- type: 'null'
title: Description
description: The description of the role.
examples:
- Role for users who can fetch and change prompts
permissions:
items:
type: string
type: array
title: Permissions
description: The permissions associated with the role. Available permissions can be found by calling `GET /permissions`.
examples:
- - prompts_read
- prompts_write
- prompts_delete
id:
type: integer
title: Id
description: The internal ID of the role.
examples:
- 1
last_updated_comments:
anyOf:
- type: string
- type: 'null'
title: Last Updated Comments
description: Comments for the most recent edit to the role.
examples:
- Updated to add delete permission
type: object
required:
- name
- permissions
- id
title: RoleUpdateRequest
description: Request model to update an existing role.
RoleResponse:
properties:
name:
type: string
title: Name
description: The name of the role.
examples:
- Prompt Engineer
description:
anyOf:
- type: string
- type: 'null'
title: Description
description: The description of the role.
examples:
- Role for users who can fetch and change prompts
permissions:
items:
type: string
type: array
title: Permissions
description: The permissions associated with the role. Available permissions can be found by calling `GET /permissions`.
examples:
- - prompts_read
- prompts_write
- prompts_delete
id:
type: integer
title: Id
description: The internal ID of the role.
examples:
- 1
last_updated_comments:
anyOf:
- type: string
- type: 'null'
title: Last Updated Comments
description: Comments for the most recent edit to the role.
examples:
- Updated to add delete permission
is_system_role:
type: boolean
title: Is System Role
description: Whether this is a built-in system role that cannot be updated or deleted
examples:
- false
last_updated:
type: string
format: date-time
title: Last Updated
description: The timestamp of the most recent update to the role
last_updated_by:
type: string
title: Last Updated By
description: The email of the user who last updated the role
examples:
- user@email.com
type: object
required:
- name
- permissions
- id
- is_system_role
- last_updated
- last_updated_by
title: RoleResponse
description: Information about a role.
ListResponse_RoleResponse_:
properties:
items:
items:
$ref: '#/components/schemas/RoleResponse'
type: array
title: Items
description: List of items returned from the query
examples: []
page:
type: integer
title: Page
description: The page number of the results (0-based)
examples:
- 0
page_size:
type: integer
title: Page Size
description: The number of items returned per page
examples:
- 25
total_pages:
anyOf:
- type: integer
- type: 'null'
title: Total Pages
description: The total number of pages of results given the indicated page size
examples:
- 4
total_count:
anyOf:
- type: integer
- type: 'null'
title: Total Count
description: The total number of items returned from the query
examples:
- 100
type: object
required:
- items
- page
- page_size
title: ListResponse[RoleResponse]
RoleProperties:
type: string
enum:
- name
- description
- updated_at
- last_updated_by
title: RoleProperties
description: Names of role fields supported for filtering/sorting on list endpoint.
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
RoleCreateRequest:
properties:
name:
type: string
title: Name
description: The name of the role.
examples:
- Prompt Engineer
description:
anyOf:
- type: string
- type: 'null'
title: Description
description: The description of the role.
examples:
- Role for users who can fetch and change prompts
permissions:
items:
type: string
type: array
title: Permissions
description: The permissions associated with the role. Available permissions can be found by calling `GET /permissions`.
examples:
- - prompts_read
- prompts_write
- prompts_delete
type: object
required:
- name
- permissions
title: RoleCreateRequest
description: Request model to create a role.
securitySchemes:
APIKeyHeader:
type: apiKey
in: header
name: Syllable-API-Key
x-speakeasy-name-override:
- operationId: .*_list$
methodNameOverride: list
- operationId: .*_create$
methodNameOverride: create
- operationId: .*_update$
methodNameOverride: update
- operationId: .*_upload$
methodNameOverride: upload
- operationId: .*_delete$
methodNameOverride: delete
- operationId: .*_get_by_id$
methodNameOverride: get_by_id
- operationId: .*_get_by_name$
methodNameOverride: get_by_name
- operationId: .*_add$
methodNameOverride: add
- operationId: .*_remove$
methodNameOverride: remove
- operationId: .*_results$
methodNameOverride: results
- operationId: .*_queue_work$
methodNameOverride: queue_work
- operationId: .*_activate$
methodNameOverride: activate
- operationId: .*_inactivate$
methodNameOverride: inactivate
- operationId: .*_list_files$
methodNameOverride: list_files
- operationId: .*_move_files$
methodNameOverride: move_files
- operationId: .*_upload_file$
methodNameOverride: upload_file