diff --git a/developer-docs/docs.json b/developer-docs/docs.json
index ad2f4cb41..43d19ef9a 100644
--- a/developer-docs/docs.json
+++ b/developer-docs/docs.json
@@ -16,7 +16,7 @@
"tabs": [
{
"tab": "API Documentation",
- "openapi": "https://raw.githubusercontent.com/chatwoot/chatwoot/2b043e54604b70715a9e7d0a9a7836763174a126/swagger/swagger.json"
+ "openapi": "https://raw.githubusercontent.com/chatwoot/chatwoot/90c600acd94cfe2f5c41d5cedebdec9534cba2d7/swagger/swagger.json"
}
]
},
diff --git a/docker-compose.yaml b/docker-compose.yaml
index facac830f..b14695899 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -92,7 +92,7 @@ services:
environment:
- POSTGRES_DB=chatwoot
- POSTGRES_USER=postgres
- - POSTGRES_PASSWORD=
+ - POSTGRES_PASSWORD=postgres
redis:
image: redis:alpine
diff --git a/docs/api-reference/application.mdx b/docs/api-reference/application.mdx
new file mode 100644
index 000000000..58f129a7d
--- /dev/null
+++ b/docs/api-reference/application.mdx
@@ -0,0 +1,70 @@
+---
+title: 'Application API'
+description: 'API endpoints for managing application-level resources'
+---
+
+# Application API
+
+The Application API provides endpoints for managing application-level resources in Chatwoot, including contacts, conversations, inboxes, messages, and more.
+
+
+These APIs require a user API access token (`userApiKey`) for authentication.
+
+
+## Available Endpoints
+
+The Application API includes endpoints for:
+
+- **Account AgentBots** - Managing agent bots within accounts
+- **Agents** - Managing agents
+- **Canned Responses** - Managing canned responses
+- **Contacts** - Managing contacts
+- **Conversations** - Managing conversations
+- **Custom Attributes** - Managing custom attributes
+- **Custom Filters** - Managing custom filters
+- **Inboxes** - Managing inboxes
+- **Integrations** - Managing integrations
+- **Messages** - Managing messages
+- **Profile** - Managing user profile
+- **Reports** - Generating reports
+- **Teams** - Managing teams
+- **Webhooks** - Managing webhooks
+- **Automation Rules** - Managing automation rules
+- **Help Center** - Managing help center
+
+## Authentication
+
+Application API endpoints require the user API access token:
+
+```bash
+curl -X GET "https://app.chatwoot.com/api/v1/accounts/{account_id}/inboxes" \
+ -H "api_access_token: your_user_api_token"
+```
+
+## Rate Limiting
+
+Application API requests are subject to rate limiting. Implement appropriate retry logic in your applications.
+
+## OpenAPI Specification
+
+The complete OpenAPI specification for the Application API is available below:
+
+
+ View the complete OpenAPI specification for the Application API
+
+
+## Code Examples
+
+```javascript
+// Example: Fetching all inboxes in an account
+const response = await fetch('https://app.chatwoot.com/api/v1/accounts/1/inboxes', {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'api_access_token': 'your_user_api_token'
+ }
+});
+
+const data = await response.json();
+console.log(data);
+```
\ No newline at end of file
diff --git a/docs/api-reference/client.mdx b/docs/api-reference/client.mdx
new file mode 100644
index 000000000..e63c5dd08
--- /dev/null
+++ b/docs/api-reference/client.mdx
@@ -0,0 +1,55 @@
+---
+title: 'Client API'
+description: 'API endpoints for client applications'
+---
+
+# Client API
+
+The Client API provides endpoints for client applications to interact with Chatwoot, including managing contacts, conversations, and messages.
+
+
+Some of these APIs may not require authentication, while others may use alternative authentication methods.
+
+
+## Available Endpoints
+
+The Client API includes endpoints for:
+
+- **Contacts API** - APIs for managing contacts from client applications
+- **Conversations API** - APIs for managing conversations from client applications
+- **Messages API** - APIs for managing messages from client applications
+
+## Authentication
+
+Authentication requirements vary by endpoint. Refer to the specific endpoint documentation for details.
+
+## Rate Limiting
+
+Client API requests are subject to rate limiting. Implement appropriate retry logic in your applications.
+
+## OpenAPI Specification
+
+The complete OpenAPI specification for the Client API is available below:
+
+
+ View the complete OpenAPI specification for the Client API
+
+
+## Code Examples
+
+```javascript
+// Example: Creating a contact using the Client API
+const response = await fetch('https://app.chatwoot.com/public/api/v1/inboxes/{inbox_identifier}/contacts', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({
+ name: 'John Doe',
+ email: 'john@example.com'
+ })
+});
+
+const data = await response.json();
+console.log(data);
+```
\ No newline at end of file
diff --git a/docs/api-reference/other.mdx b/docs/api-reference/other.mdx
new file mode 100644
index 000000000..1f201d879
--- /dev/null
+++ b/docs/api-reference/other.mdx
@@ -0,0 +1,45 @@
+---
+title: 'Other APIs'
+description: 'Additional API endpoints'
+---
+
+# Other APIs
+
+This section covers additional API endpoints in Chatwoot that don't fit neatly into the other categories.
+
+## Available Endpoints
+
+The Other APIs include endpoints for:
+
+- **CSAT Survey Page** - APIs for CSAT survey functionality
+
+## Authentication
+
+Authentication requirements vary by endpoint. Refer to the specific endpoint documentation for details.
+
+## Rate Limiting
+
+API requests are subject to rate limiting. Implement appropriate retry logic in your applications.
+
+## OpenAPI Specification
+
+The complete OpenAPI specification for the Other APIs is available below:
+
+
+ View the complete OpenAPI specification for the Other APIs
+
+
+## Code Examples
+
+```javascript
+// Example: Retrieving survey responses
+const response = await fetch('https://app.chatwoot.com/survey/responses/{conversation_uuid}', {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+});
+
+const data = await response.json();
+console.log(data);
+```
\ No newline at end of file
diff --git a/docs/api-reference/platform.mdx b/docs/api-reference/platform.mdx
new file mode 100644
index 000000000..c94ef9f14
--- /dev/null
+++ b/docs/api-reference/platform.mdx
@@ -0,0 +1,61 @@
+---
+title: 'Platform API'
+description: 'API endpoints for managing platform-level resources'
+---
+
+# Platform API
+
+The Platform API provides endpoints for managing platform-level resources in Chatwoot, including accounts, account users, agent bots, and users.
+
+
+These APIs require a platform app API access token (`platformAppApiKey`) for authentication.
+
+
+## Available Endpoints
+
+The Platform API includes endpoints for:
+
+- **Accounts** - Creating, updating, retrieving, and deleting accounts
+- **Account Users** - Managing users within accounts
+- **AgentBots** - Creating and managing agent bots at the platform level
+- **Users** - Creating, updating, retrieving, and deleting users
+
+## Authentication
+
+Platform API endpoints require the platform app API access token:
+
+```bash
+curl -X GET "https://app.chatwoot.com/platform/api/v1/accounts" \
+ -H "api_access_token: your_platform_app_api_token"
+```
+
+## Rate Limiting
+
+Platform API requests are subject to rate limiting. Implement appropriate retry logic in your applications.
+
+## OpenAPI Specification
+
+The complete OpenAPI specification for the Platform API is available below:
+
+
+ View the complete OpenAPI specification for the Platform API
+
+
+## Code Examples
+
+```javascript
+// Example: Creating a new account using the Platform API
+const response = await fetch('https://app.chatwoot.com/platform/api/v1/accounts', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'api_access_token': 'your_platform_app_api_token'
+ },
+ body: JSON.stringify({
+ name: 'New Account'
+ })
+});
+
+const data = await response.json();
+console.log(data);
+```
\ No newline at end of file
diff --git a/docs/authentication.mdx b/docs/authentication.mdx
new file mode 100644
index 000000000..866027930
--- /dev/null
+++ b/docs/authentication.mdx
@@ -0,0 +1,44 @@
+---
+title: 'Authentication'
+description: 'Learn how to authenticate with the Chatwoot API'
+---
+
+# Authentication
+
+All API requests to Chatwoot require authentication. Chatwoot uses API access tokens for authentication.
+
+## API Access Tokens
+
+### User API Access Token
+
+This token can be obtained from your profile page in the Chatwoot dashboard. It provides access to endpoints based on your user permission levels.
+
+```bash
+curl -X GET "https://app.chatwoot.com/api/v1/profile" \
+ -H "api_access_token: your_api_access_token"
+```
+
+### Agent Bot API Access Token
+
+This token should be provided by a system admin or obtained via the Rails console. It can be used to build bot integrations and can only access limited APIs.
+
+### Platform App API Access Token
+
+This token can be obtained by the system admin after creating a platform app. It should be used to provision agent bots, accounts, users, and their roles.
+
+## Adding Authentication to Requests
+
+Include your API access token in the request header:
+
+```bash
+curl -X GET "https://app.chatwoot.com/api/v1/accounts/{account_id}/inboxes" \
+ -H "api_access_token: your_api_access_token"
+```
+
+## Security Best Practices
+
+- Keep your API access tokens secure
+- Rotate your tokens periodically
+- Use HTTPS for all API requests
+- Only grant the minimum required permissions
+- Don't expose tokens in client-side code
\ No newline at end of file
diff --git a/docs/errors.mdx b/docs/errors.mdx
new file mode 100644
index 000000000..da9385587
--- /dev/null
+++ b/docs/errors.mdx
@@ -0,0 +1,60 @@
+---
+title: 'Error Handling'
+description: 'Learn about error responses from the Chatwoot API'
+---
+
+# Error Handling
+
+When using the Chatwoot API, you may encounter various error responses. This guide helps you understand and handle these errors effectively.
+
+## HTTP Status Codes
+
+Chatwoot APIs use standard HTTP status codes to indicate the success or failure of a request:
+
+| Status Code | Description |
+|-------------|-------------|
+| 200 OK | The request was successful |
+| 201 Created | The resource was successfully created |
+| 400 Bad Request | The request was invalid or cannot be served |
+| 401 Unauthorized | Authentication failed or user doesn't have permissions |
+| 403 Forbidden | The authenticated user doesn't have access to the requested resource |
+| 404 Not Found | The requested resource doesn't exist |
+| 422 Unprocessable Entity | The request was well-formed but was unable to be followed due to semantic errors |
+| 429 Too Many Requests | Too many requests, rate limiting applied |
+| 500 Internal Server Error | Something went wrong on our servers |
+
+## Error Response Format
+
+Error responses include a JSON object with an error message:
+
+```json
+{
+ "error": "Invalid login credentials"
+}
+```
+
+## Common Error Scenarios
+
+### Authentication Errors
+
+- **401 Unauthorized**: Invalid or missing API access token
+- **403 Forbidden**: Insufficient permissions for the requested operation
+
+### Resource Errors
+
+- **404 Not Found**: The requested resource does not exist
+- **422 Unprocessable Entity**: The request contained invalid data
+
+### Rate Limiting
+
+- **429 Too Many Requests**: You've exceeded the API rate limits
+
+## Handling Errors
+
+When building integrations with Chatwoot, always:
+
+1. Check HTTP status codes
+2. Parse error messages
+3. Implement appropriate retry logic
+4. Log errors for debugging
+5. Provide meaningful error messages to users
\ No newline at end of file
diff --git a/docs/introduction.mdx b/docs/introduction.mdx
new file mode 100644
index 000000000..5b1277706
--- /dev/null
+++ b/docs/introduction.mdx
@@ -0,0 +1,33 @@
+---
+title: 'Chatwoot API Documentation'
+description: 'Welcome to the Chatwoot API Documentation'
+---
+
+# Introduction to Chatwoot API
+
+Chatwoot provides comprehensive API endpoints to manage and integrate with all aspects of the platform. Use these APIs to create custom integrations, automate workflows, and build on top of Chatwoot.
+
+## Getting Started
+
+To use the Chatwoot API, you'll need:
+
+1. A Chatwoot account
+2. An API access token (obtained from your profile page)
+3. Basic understanding of RESTful APIs and HTTP requests
+
+## API Organization
+
+Our APIs are organized into several logical groups:
+
+- **Platform API** - For managing platform-level resources like accounts, users, and agent bots
+- **Application API** - For working with application-level resources like contacts, conversations, and inboxes
+- **Client API** - For client applications to interact with Chatwoot
+- **Other APIs** - Additional functionality like CSAT surveys
+
+## Authentication
+
+All API requests require authentication. See the [Authentication](/authentication) section for details.
+
+## Rate Limiting
+
+API requests are subject to rate limiting. Please implement appropriate retry logic in your applications.
\ No newline at end of file
diff --git a/lib/tasks/swagger.rake b/lib/tasks/swagger.rake
index ef48ce3eb..cf61e179d 100644
--- a/lib/tasks/swagger.rake
+++ b/lib/tasks/swagger.rake
@@ -17,6 +17,61 @@ namespace :swagger do
puts 'Swagger build was successful.'
puts "Generated #{base_path}/swagger.json"
puts 'Go to http://localhost:3000/swagger see the changes.'
+
+ # Build tag group specific swagger files
+ Rake::Task['swagger:build_tag_groups'].invoke
end
end
+
+ desc 'build separate swagger files for each tag group'
+ task build_tag_groups: :environment do
+ require 'json_refs'
+
+ base_path = Rails.root.join('swagger')
+ tag_groups_path = base_path.join('tag_groups')
+
+ Dir.chdir(tag_groups_path) do
+ # Build for platform
+ platform_yaml = YAML.safe_load(File.open('platform.yml'))
+ platform_build = JsonRefs.call(
+ platform_yaml,
+ resolve_local_ref: false,
+ resolve_file_ref: true,
+ logging: true
+ )
+ File.write('platform_swagger.json', JSON.pretty_generate(platform_build))
+
+ # Build for application
+ application_yaml = YAML.safe_load(File.open('application.yml'))
+ application_build = JsonRefs.call(
+ application_yaml,
+ resolve_local_ref: false,
+ resolve_file_ref: true,
+ logging: true
+ )
+ File.write('application_swagger.json', JSON.pretty_generate(application_build))
+
+ # Build for client
+ client_yaml = YAML.safe_load(File.open('client.yml'))
+ client_build = JsonRefs.call(
+ client_yaml,
+ resolve_local_ref: false,
+ resolve_file_ref: true,
+ logging: true
+ )
+ File.write('client_swagger.json', JSON.pretty_generate(client_build))
+
+ # Build for others
+ others_yaml = YAML.safe_load(File.open('others.yml'))
+ others_build = JsonRefs.call(
+ others_yaml,
+ resolve_local_ref: false,
+ resolve_file_ref: true,
+ logging: true
+ )
+ File.write('other_swagger.json', JSON.pretty_generate(others_build))
+ end
+
+ puts 'Tag-specific swagger files generated successfully.'
+ end
end
diff --git a/swagger/tag_groups/application.yml b/swagger/tag_groups/application.yml
new file mode 100644
index 000000000..d99d1b12f
--- /dev/null
+++ b/swagger/tag_groups/application.yml
@@ -0,0 +1,59 @@
+openapi: '3.0.4'
+info:
+ title: Chatwoot - Application API
+ description: Application API endpoints for Chatwoot
+ version: 1.1.0
+ termsOfService: https://www.chatwoot.com/terms-of-service/
+ contact:
+ email: hello@chatwoot.com
+ license:
+ name: MIT License
+ url: https://opensource.org/licenses/MIT
+servers:
+ - url: https://app.chatwoot.com/
+tags:
+ - name: Account AgentBots
+ description: Manage agent bots within accounts
+ - name: Agents
+ description: Manage agents
+ - name: Canned Responses
+ description: Manage canned responses
+ - name: Contacts
+ description: Manage contacts
+ - name: Conversations
+ description: Manage conversations
+ - name: Custom Attributes
+ description: Manage custom attributes
+ - name: Custom Filters
+ description: Manage custom filters
+ - name: Inboxes
+ description: Manage inboxes
+ - name: Integrations
+ description: Manage integrations
+ - name: Messages
+ description: Manage messages
+ - name: Profile
+ description: Manage user profile
+ - name: Reports
+ description: Generate reports
+ - name: Teams
+ description: Manage teams
+ - name: Webhooks
+ description: Manage webhooks
+ - name: Automation Rule
+ description: Manage automation rules
+ - name: Help Center
+ description: Manage help center
+paths:
+ $ref: ../paths/index.yml
+components:
+ schemas:
+ $ref: ../definitions/index.yml
+ parameters:
+ $ref: ../parameters/index.yml
+ securitySchemes:
+ userApiKey:
+ type: apiKey
+ in: header
+ name: api_access_token
+ description: This token can be obtained by visiting the profile page or via rails console. Provides access to endpoints based on the user permissions levels.
\ No newline at end of file
diff --git a/swagger/tag_groups/application_swagger.json b/swagger/tag_groups/application_swagger.json
new file mode 100644
index 000000000..b486473ba
--- /dev/null
+++ b/swagger/tag_groups/application_swagger.json
@@ -0,0 +1,11979 @@
+{
+ "openapi": "3.0.4",
+ "info": {
+ "title": "Chatwoot - Application API",
+ "description": "Application API endpoints for Chatwoot",
+ "version": "1.1.0",
+ "termsOfService": "https://www.chatwoot.com/terms-of-service/",
+ "contact": {
+ "email": "hello@chatwoot.com"
+ },
+ "license": {
+ "name": "MIT License",
+ "url": "https://opensource.org/licenses/MIT"
+ }
+ },
+ "servers": [
+ {
+ "url": "https://app.chatwoot.com/"
+ }
+ ],
+ "tags": [
+ {
+ "name": "Account AgentBots",
+ "description": "Manage agent bots within accounts"
+ },
+ {
+ "name": "Agents",
+ "description": "Manage agents"
+ },
+ {
+ "name": "Canned Responses",
+ "description": "Manage canned responses"
+ },
+ {
+ "name": "Contacts",
+ "description": "Manage contacts"
+ },
+ {
+ "name": "Conversations",
+ "description": "Manage conversations"
+ },
+ {
+ "name": "Custom Attributes",
+ "description": "Manage custom attributes"
+ },
+ {
+ "name": "Custom Filters",
+ "description": "Manage custom filters"
+ },
+ {
+ "name": "Inboxes",
+ "description": "Manage inboxes"
+ },
+ {
+ "name": "Integrations",
+ "description": "Manage integrations"
+ },
+ {
+ "name": "Messages",
+ "description": "Manage messages"
+ },
+ {
+ "name": "Profile",
+ "description": "Manage user profile"
+ },
+ {
+ "name": "Reports",
+ "description": "Generate reports"
+ },
+ {
+ "name": "Teams",
+ "description": "Manage teams"
+ },
+ {
+ "name": "Webhooks",
+ "description": "Manage webhooks"
+ },
+ {
+ "name": "Automation Rule",
+ "description": "Manage automation rules"
+ },
+ {
+ "name": "Help Center",
+ "description": "Manage help center"
+ }
+ ],
+ "paths": {
+ "/platform/api/v1/accounts": {
+ "post": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "create-an-account",
+ "summary": "Create an Account",
+ "description": "Create an Account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/accounts/{account_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "get-details-of-an-account",
+ "summary": "Get an account details",
+ "description": "Get the details of an account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "update-an-account",
+ "summary": "Update an account",
+ "description": "Update an account's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "delete-an-account",
+ "summary": "Delete an Account",
+ "description": "Delete an Account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/accounts/{account_id}/account_users": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "list-all-account-users",
+ "summary": "List all Account Users",
+ "description": "List all account users",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "create-an-account-user",
+ "summary": "Create an Account User",
+ "description": "Create an Account User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "account_id": {
+ "type": "integer",
+ "description": "The ID of the account"
+ },
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user"
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "delete-an-account-user",
+ "summary": "Delete an Account User",
+ "description": "Delete an Account User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/agent_bots": {
+ "get": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "list-all-agent-bots",
+ "summary": "List all AgentBots",
+ "description": "List all agent bots available",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent bots",
+ "items": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "create-an-agent-bot",
+ "summary": "Create an Agent Bot",
+ "description": "Create an agent bot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/agent_bots/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/agent_bot_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "get-details-of-a-single-agent-bot",
+ "summary": "Get an agent bot details",
+ "description": "Get the details of an agent bot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given agent bot ID does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "update-an-agent-bot",
+ "summary": "Update an agent bot",
+ "description": "Update an agent bot's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "delete-an-agent-bot",
+ "summary": "Delete an AgentBot",
+ "description": "Delete an AgentBot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The agent bot does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users": {
+ "post": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "create-a-user",
+ "summary": "Create a User",
+ "description": "Create a User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/platform_user_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "get-details-of-a-user",
+ "summary": "Get an user details",
+ "description": "Get the details of an user",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "update-a-user",
+ "summary": "Update a user",
+ "description": "Update a user's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "delete-a-user",
+ "summary": "Delete a User",
+ "description": "Delete a User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users/{id}/login": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/platform_user_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "get-sso-url-of-a-user",
+ "summary": "Get User SSO Link",
+ "description": "Get the sso link of a user",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "SSO url to autenticate the user"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Inbox API"
+ ],
+ "operationId": "get-details-of-a-inbox",
+ "summary": "Inbox details",
+ "description": "Get the details of an inbox",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_inbox"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given inbox does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "create-a-contact",
+ "summary": "Create a contact",
+ "description": "Create a contact",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "get-details-of-a-contact",
+ "summary": "Get a contact",
+ "description": "Get the details of a contact",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given contact does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "update-a-contact",
+ "summary": "Update a contact",
+ "description": "Update a contact's attributes",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "create-a-conversation",
+ "summary": "Create a conversation",
+ "description": "Create a conversation",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "list-all-contact-conversations",
+ "summary": "List all conversations",
+ "description": "List all conversations for the contact",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of conversations",
+ "items": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "get-single-conversation",
+ "summary": "Get a single conversation",
+ "description": "Retrieves the details of a specific conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/toggle_status": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "resolve-conversation",
+ "summary": "Resolve a conversation",
+ "description": "Marks a conversation as resolved",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Conversation resolved successfully",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/toggle_typing": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "toggle-typing-status",
+ "summary": "Toggle typing status",
+ "description": "Toggles the typing status in a conversation",
+ "security": [
+
+ ],
+ "parameters": [
+ {
+ "name": "typing_status",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Typing status, either 'on' or 'off'"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "typing_status": {
+ "type": "string",
+ "enum": [
+ "on",
+ "off"
+ ],
+ "description": "The typing status to set",
+ "example": "on"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Typing status toggled successfully"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/update_last_seen": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "update-last-seen",
+ "summary": "Update last seen",
+ "description": "Updates the last seen time of the contact in a conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Last seen updated successfully"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "create-a-message",
+ "summary": "Create a message",
+ "description": "Create a message",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "list-all-converation-messages",
+ "summary": "List all messages",
+ "description": "List all messages in the conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of messages",
+ "items": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/messages/{message_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ },
+ {
+ "$ref": "#/components/parameters/message_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "update-a-message",
+ "summary": "Update a message",
+ "description": "Update a message",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/survey/responses/{conversation_uuid}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/conversation_uuid"
+ }
+ ],
+ "get": {
+ "tags": [
+ "CSAT Survey Page"
+ ],
+ "operationId": "get-csat-survey-page",
+ "summary": "Get CSAT survey page",
+ "description": "You can redirect the client to this URL, instead of implementing the CSAT survey component yourself.",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agent_bots": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "list-all-account-agent-bots",
+ "summary": "List all AgentBots",
+ "description": "List all agent bots available for the current account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent bots",
+ "items": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "create-an-account-agent-bot",
+ "summary": "Create an Agent Bot",
+ "description": "Create an agent bot in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agent_bots/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/agent_bot_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "get-details-of-a-single-account-agent-bot",
+ "summary": "Get an agent bot details",
+ "description": "Get the details of an agent bot in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given agent bot ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "update-an-account-agent-bot",
+ "summary": "Update an agent bot",
+ "description": "Update an agent bot's attributes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "delete-an-account-agent-bot",
+ "summary": "Delete an AgentBot",
+ "description": "Delete an AgentBot from the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The agent bot does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agents": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "get-account-agents",
+ "summary": "List Agents in Account",
+ "description": "Get Details of Agents in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "add-new-agent-to-account",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agents/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "update-agent-in-account",
+ "summary": "Update Agent in Account",
+ "description": "Update an Agent in Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agent to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "delete-agent-from-account",
+ "summary": "Remove an Agent from Account",
+ "description": "Remove an Agent from Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agent to be deleted."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/canned_responses": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "get-account-canned-response",
+ "summary": "List all Canned Responses in an Account",
+ "description": "Get Details of Canned Responses in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all canned responses",
+ "items": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "add-new-canned-response-to-account",
+ "summary": "Add a New Canned Response",
+ "description": "Add a new Canned Response to Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/canned_responses/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "update-canned-response-in-account",
+ "summary": "Update Canned Response in Account",
+ "description": "Update a Canned Response in Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the canned response to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "delete-canned-response-from-account",
+ "summary": "Remove a Canned Response from Account",
+ "description": "Remove a Canned Response from Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the canned response to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Canned Response not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_attribute_definitions": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "get-account-custom-attribute",
+ "summary": "List all custom attributes in an account",
+ "parameters": [
+ {
+ "name": "attribute_model",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "0",
+ "1"
+ ]
+ },
+ "description": "conversation_attribute(0)/contact_attribute(1)",
+ "required": true
+ }
+ ],
+ "description": "Get details of custom attributes in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all custom attributes",
+ "items": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "add-new-custom-attribute-to-account",
+ "summary": "Add a new custom attribute",
+ "description": "Add a new custom attribute to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_attribute_definitions/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the custom attribute",
+ "required": true
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "get-details-of-a-single-custom-attribute",
+ "summary": "Get a custom attribute details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of a custom attribute in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be updated."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given attribute ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "update-custom-attribute-in-account",
+ "summary": "Update custom attribute in Account",
+ "description": "Update a custom attribute in account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "delete-custom-attribute-from-account",
+ "summary": "Remove a custom attribute from account",
+ "description": "Remove a custom attribute from account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Custom attribute not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts": {
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactList",
+ "description": "Listing all the resolved contacts with pagination (Page size = 15). Resolved contacts are the ones with a value for identifier, email or phone number",
+ "summary": "List Contacts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/contact_sort_param"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactCreate",
+ "description": "Create a new Contact",
+ "summary": "Create Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/extended_contact"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactDetails",
+ "summary": "Show Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get a contact belonging to the account using ID",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_show_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactUpdate",
+ "summary": "Update Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a contact belonging to the account using ID",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "204": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_base"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactDelete",
+ "summary": "Delete Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a contact belonging to the account using ID",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactConversations",
+ "summary": "Contact Conversations",
+ "description": "Get conversations associated with that contact",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_conversations_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/labels": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "list-all-labels-of-a-contact",
+ "summary": "List Labels",
+ "description": "Lists all the labels of a contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_labels"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contact-add-labels",
+ "summary": "Add Labels",
+ "description": "Add labels to a contact. Note that this API would overwrite the existing list of labels associated to the conversation.",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "labels"
+ ],
+ "properties": {
+ "labels": {
+ "type": "array",
+ "description": "Array of labels (comma-separated strings)",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "support",
+ "billing"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_labels"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/search": {
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactSearch",
+ "description": "Search the resolved contacts using a search key, currently supports email search (Page size = 15). Resolved contacts are the ones with a value for identifier, email or phone number",
+ "summary": "Search Contacts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Search using contact `name`, `identifier`, `email` or `phone number`"
+ },
+ {
+ "$ref": "#/components/parameters/contact_sort_param"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/filter": {
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactFilter",
+ "description": "Filter contacts with custom filter options and pagination",
+ "summary": "Contact Filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "attribute_key": {
+ "type": "string",
+ "description": "filter attribute name"
+ },
+ "filter_operator": {
+ "type": "string",
+ "description": "filter operator name",
+ "enum": [
+ "equal_to",
+ "not_equal_to",
+ "contains",
+ "does_not_contain"
+ ]
+ },
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "array of the attribute values to filter"
+ },
+ "query_operator": {
+ "type": "string",
+ "description": "query operator name",
+ "enum": [
+ "AND",
+ "OR"
+ ]
+ }
+ }
+ },
+ "example": [
+ {
+ "attribute_key": "name",
+ "filter_operator": "equal_to",
+ "values": [
+ "en"
+ ],
+ "query_operator": "AND"
+ },
+ {
+ "attribute_key": "country_code",
+ "filter_operator": "equal_to",
+ "values": [
+ "us"
+ ],
+ "query_operator": null
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/contact_inboxes": {
+ "post": {
+ "tags": [
+ "Contact"
+ ],
+ "operationId": "contactInboxCreation",
+ "description": "Create a contact inbox record for an inbox",
+ "summary": "Create contact inbox",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact",
+ "required": true
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_inboxes"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "Incorrect payload",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/contactable_inboxes": {
+ "get": {
+ "tags": [
+ "Contact"
+ ],
+ "operationId": "contactableInboxesGet",
+ "description": "Get List of contactable Inboxes",
+ "summary": "Get Contactable Inboxes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contactable_inboxes_response"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "Incorrect payload",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/automation_rules": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "get-account-automation-rule",
+ "summary": "List all automation rules in an account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "description": "Get details of automation rules in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "add-new-automation-rule-to-account",
+ "summary": "Add a new automation rule",
+ "description": "Add a new automation rule to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/automation_rules/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the Automation Rule",
+ "required": true
+ }
+ ],
+ "get": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "get-details-of-a-single-automation-rule",
+ "summary": "Get a automation rule details",
+ "description": "Get the details of a automation rule in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be updated."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ },
+ "example": {
+ "payload": {
+ "id": 90,
+ "account_id": 1,
+ "name": "add-label-bug-if-message-contains-bug",
+ "description": "add-label-bug-if-message-contains-bug",
+ "event_name": "message_created",
+ "conditions": [
+ {
+ "values": [
+ "incoming"
+ ],
+ "attribute_key": "message_type",
+ "query_operator": "and",
+ "filter_operator": "equal_to"
+ },
+ {
+ "values": [
+ "bug"
+ ],
+ "attribute_key": "content",
+ "filter_operator": "contains"
+ }
+ ],
+ "actions": [
+ {
+ "action_name": "add_label",
+ "action_params": [
+ "bugs",
+ "support-query"
+ ]
+ }
+ ],
+ "created_on": 1650555440,
+ "active": true
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given rule ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "update-automation-rule-in-account",
+ "summary": "Update automation rule in Account",
+ "description": "Update a automation rule in account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Rule not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "delete-automation-rule-from-account",
+ "summary": "Remove a automation rule from account",
+ "description": "Remove a automation rule from account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "automation rule not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-portal-to-account",
+ "summary": "Add a new portal",
+ "description": "Add a new portal to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "get-portal",
+ "summary": "List all portals in an account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "description": "Get details of portals in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal"
+ },
+ "example": {
+ "payload": [
+ {
+ "id": 4,
+ "color": "#1F93FF",
+ "custom_domain": "chatwoot.help",
+ "header_text": "Handbook",
+ "homepage_link": "https://www.chatwoot.com",
+ "name": "Handbook",
+ "page_title": "Handbook",
+ "slug": "handbook",
+ "archived": false,
+ "account_id": 1,
+ "config": {
+ "allowed_locales": [
+ {
+ "code": "en",
+ "articles_count": 32,
+ "categories_count": 9
+ }
+ ]
+ },
+ "inbox": {
+ "id": 37,
+ "avatar_url": "https://example.com/avatar.png",
+ "channel_id": 1,
+ "name": "Chatwoot",
+ "channel_type": "Channel::WebWidget",
+ "greeting_enabled": true,
+ "widget_color": "#1F93FF",
+ "website_url": "chatwoot.com"
+ },
+ "logo": {
+ "id": 19399916,
+ "portal_id": 4,
+ "file_type": "image/png",
+ "account_id": 1,
+ "file_url": "https://example.com/logo.png",
+ "blob_id": 21239614,
+ "filename": "square.png"
+ },
+ "meta": {
+ "all_articles_count": 0,
+ "categories_count": 9,
+ "default_locale": "en"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "update-portal-to-account",
+ "summary": "Update a portal",
+ "description": "Update a portal to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_single"
+ },
+ "example": {
+ "payload": {
+ "id": 123,
+ "archived": false,
+ "color": "#1F93FF",
+ "config": {
+ "allowed_locales": [
+ {
+ "code": "en",
+ "articles_count": 32,
+ "categories_count": 9
+ }
+ ]
+ },
+ "custom_domain": "chatwoot.help",
+ "header_text": "Handbook",
+ "homepage_link": "https://www.chatwoot.com",
+ "name": "Handbook",
+ "slug": "handbook",
+ "page_title": "Handbook",
+ "account_id": 123,
+ "inbox": {
+ "id": 123,
+ "name": "Chatwoot",
+ "website_url": "chatwoot.com",
+ "channel_type": "Channel::WebWidget",
+ "avatar_url": "https://example.com/avatar.png",
+ "widget_color": "#1F93FF",
+ "website_token": "4cWzuf9i9jxN9tbnv8K9STKU",
+ "enable_auto_assignment": true,
+ "web_widget_script": "",
+ "welcome_title": "Hi there ! 🙌🏼",
+ "welcome_tagline": "We make it simple to connect with us.",
+ "greeting_enabled": true,
+ "greeting_message": "Hey there 👋, Thank you for reaching out to us.",
+ "channel_id": 123,
+ "working_hours_enabled": true,
+ "enable_email_collect": true,
+ "csat_survey_enabled": true,
+ "timezone": "America/Los_Angeles",
+ "business_name": "Chatwoot",
+ "hmac_mandatory": true
+ },
+ "logo": {
+ "id": 123,
+ "portal_id": 123,
+ "file_type": "image/png",
+ "account_id": 123,
+ "file_url": "https://example.com/logo.png",
+ "blob_id": 123,
+ "filename": "square.png"
+ },
+ "meta": {
+ "all_articles_count": 32,
+ "categories_count": 9,
+ "default_locale": "en"
+ }
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Portal not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}/categories": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-category-to-account",
+ "summary": "Add a new category",
+ "description": "Add a new category to portal",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/category_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/category"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}/articles": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-article-to-account",
+ "summary": "Add a new article",
+ "description": "Add a new article to portal",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/article_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/article"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/meta": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationListMeta",
+ "description": "Get open, unassigned and all Conversation counts",
+ "summary": "Get Conversation Counts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "status",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "all",
+ "open",
+ "resolved",
+ "pending",
+ "snoozed"
+ ],
+ "default": "open"
+ },
+ "description": "Filter by conversation status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filters conversations with messages containing the search term"
+ },
+ {
+ "name": "inbox_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "team_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "labels",
+ "in": "query",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "mine_count": {
+ "type": "number"
+ },
+ "unassigned_count": {
+ "type": "number"
+ },
+ "assigned_count": {
+ "type": "number"
+ },
+ "all_count": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationList",
+ "description": "List all the conversations with pagination",
+ "summary": "Conversations List",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "assignee_type",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "me",
+ "unassigned",
+ "all",
+ "assigned"
+ ],
+ "default": "all"
+ },
+ "description": "Filter conversations by assignee type."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "all",
+ "open",
+ "resolved",
+ "pending",
+ "snoozed"
+ ],
+ "default": "open"
+ },
+ "description": "Filter by conversation status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filters conversations with messages containing the search term"
+ },
+ {
+ "name": "inbox_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "team_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "labels",
+ "in": "query",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "integer",
+ "default": 1
+ },
+ "description": "paginate through conversations"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_list"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "newConversation",
+ "summary": "Create New Conversation",
+ "description": "Creating a conversation in chatwoot requires a source id. \n\n Learn more about source_id: https://www.chatwoot.com/hc/user-guide/articles/1677839703-how-to-create-an-api-channel-inbox#send-messages-to-the-api-channel",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the conversation"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account Id"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ }
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/filter": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationFilter",
+ "description": "Filter conversations with custom filter options and pagination",
+ "summary": "Conversations Filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "attribute_key": {
+ "type": "string",
+ "description": "filter attribute name"
+ },
+ "filter_operator": {
+ "type": "string",
+ "description": "filter operator name",
+ "enum": [
+ "equal_to",
+ "not_equal_to",
+ "contains",
+ "does_not_contain"
+ ]
+ },
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "array of the attribute values to filter"
+ },
+ "query_operator": {
+ "type": "string",
+ "description": "query operator name",
+ "enum": [
+ "AND",
+ "OR"
+ ]
+ }
+ }
+ },
+ "example": [
+ {
+ "attribute_key": "browser_language",
+ "filter_operator": "not_equal_to",
+ "values": [
+ "en"
+ ],
+ "query_operator": "AND"
+ },
+ {
+ "attribute_key": "status",
+ "filter_operator": "equal_to",
+ "values": [
+ "pending"
+ ],
+ "query_operator": null
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_list"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "get-details-of-a-conversation",
+ "summary": "Conversation Details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get all details regarding a conversation with all messages in the conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_show"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "update-conversation",
+ "summary": "Update Conversation",
+ "description": "Update Conversation Attributes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "priority": {
+ "type": "string",
+ "enum": [
+ "urgent",
+ "high",
+ "medium",
+ "low",
+ "none"
+ ],
+ "description": "The priority of the conversation",
+ "example": "high"
+ },
+ "sla_policy_id": {
+ "type": "number",
+ "description": "The ID of the SLA policy (Available only in Enterprise edition)",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/toggle_status": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "toggle-status-of-a-conversation",
+ "summary": "Toggle Status",
+ "description": "Toggles the status of the conversation between open and resolved",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "status"
+ ],
+ "properties": {
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "The status of the conversation",
+ "example": "open"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_status_toggle"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/toggle_priority": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "toggle-priority-of-a-conversation",
+ "summary": "Toggle Priority",
+ "description": "Toggles the priority of conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "priority"
+ ],
+ "properties": {
+ "priority": {
+ "type": "string",
+ "enum": [
+ "urgent",
+ "high",
+ "medium",
+ "low",
+ "none"
+ ],
+ "description": "The priority of the conversation",
+ "example": "high"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/custom_attributes": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "update-custom-attributes-of-a-conversation",
+ "summary": "Update Custom Attributes",
+ "description": "Updates the custom attributes of a conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "custom_attributes"
+ ],
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes to be set for the conversation",
+ "example": {
+ "order_id": "12345",
+ "previous_conversation": "67890"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the conversation"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/assignments": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "assign-a-conversation",
+ "summary": "Assign Conversation",
+ "description": "Assign a conversation to an agent or a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "assignee_id": {
+ "type": "number",
+ "description": "Id of the assignee user",
+ "example": 1
+ },
+ "team_id": {
+ "type": "number",
+ "description": "Id of the team. If the assignee_id is present, this param would be ignored",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/labels": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "list-all-labels-of-a-conversation",
+ "summary": "List Labels",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Lists all the labels of a conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_labels"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversation-add-labels",
+ "summary": "Add Labels",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Add labels to a conversation. Note that this API would overwrite the existing list of labels associated to the conversation.",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "labels"
+ ],
+ "properties": {
+ "labels": {
+ "type": "array",
+ "description": "Array of labels (comma-separated strings)",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "support",
+ "billing"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_labels"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "listAllInboxes",
+ "summary": "List all inboxes",
+ "description": "List all inboxes available in the current account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of inboxes",
+ "items": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "GetInbox",
+ "summary": "Get an inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get an inbox available in the current account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/": {
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "inboxCreation",
+ "summary": "Create an inbox",
+ "description": "You can create more than one website inbox in each account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}": {
+ "patch": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "updateInbox",
+ "summary": "Update Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update an existing inbox",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/agent_bot": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "getInboxAgentBot",
+ "summary": "Show Inbox Agent Bot",
+ "description": "See if an agent bot is associated to the Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found, Agent bot not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/set_agent_bot": {
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "updateAgentBot",
+ "summary": "Add or remove agent bot",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "To add an agent bot pass agent_bot id, to remove agent bot from an inbox pass null",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "agent_bot"
+ ],
+ "properties": {
+ "agent_bot": {
+ "type": "number",
+ "description": "Agent bot ID",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "204": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Inbox not found, Agent bot not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inbox_members/{inbox_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/inbox_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "get-inbox-members",
+ "summary": "List Agents in Inbox",
+ "description": "Get Details of Agents in an Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/inbox_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inbox_members": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "add-new-agent-to-inbox",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "integer",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the inbox",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "update-agents-in-inbox",
+ "summary": "Update Agents in Inbox",
+ "description": "All agents except the one passed in params will be removed",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "string",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the inbox",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "delete-agent-in-inbox",
+ "summary": "Remove an Agent from Inbox",
+ "description": "Remove an Agent from Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "string",
+ "description": "The ID of the inbox"
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be deleted from the inbox"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "list-all-messages",
+ "summary": "Get messages",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all messages of a conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "additional_attributes": {
+ "type": "object"
+ },
+ "contact": {
+ "$ref": "#/components/schemas/contact"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/agent"
+ },
+ "agent_last_seen_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "assignee_last_seen_at": {
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "payload": {
+ "type": "array",
+ "description": "Array of messages",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "create-a-new-message-in-a-conversation",
+ "summary": "Create New Message",
+ "description": "Create a new message in the conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_message_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/message"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages/{message_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ },
+ {
+ "$ref": "#/components/parameters/message_id"
+ }
+ ],
+ "delete": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "delete-a-message",
+ "summary": "Delete a message",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a message and it's attachments from the conversation.",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The message or conversation does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/apps": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "get-details-of-all-integrations",
+ "summary": "List all the Integrations",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of all Integrations available for the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of Integration apps",
+ "items": {
+ "$ref": "#/components/schemas/integrations_app"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Url not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/hooks": {
+ "post": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "create-an-integration-hook",
+ "summary": "Create an integration hook",
+ "description": "Create an integration hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/hooks/{hook_id}": {
+ "patch": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "update-an-integrations-hook",
+ "summary": "Update an Integration Hook",
+ "description": "Update an Integration Hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/hook_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "delete-an-integration-hook",
+ "summary": "Delete an Integration Hook",
+ "description": "Delete an Integration Hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/hook_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The hook does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/profile": {
+ "get": {
+ "tags": [
+ "Profile"
+ ],
+ "operationId": "fetchProfile",
+ "summary": "Fetch user profile",
+ "description": "Get the user profile details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "list-all-teams",
+ "summary": "List all teams",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all teams available in the current account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of teams",
+ "items": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "create-a-team",
+ "summary": "Create a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Create a team in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams/{team_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "get-details-of-a-single-team",
+ "summary": "Get a team details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of a team in the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given team ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "update-a-team",
+ "summary": "Update a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a team's attributes",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "delete-a-team",
+ "summary": "Delete a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a team from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The team does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams/{team_id}/team_members": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "get-team-members",
+ "summary": "List Agents in Team",
+ "description": "Get Details of Agents in an Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all agents in the team",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "add-new-agent-to-team",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the team",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "update-agents-in-team",
+ "summary": "Update Agents in Team",
+ "description": "All agents except the one passed in params will be removed",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the team",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all agents in the team",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "delete-agent-in-team",
+ "summary": "Remove an Agent from Team",
+ "description": "Remove an Agent from Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be deleted from the team"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_filters": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "filter_type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ]
+ },
+ "required": false,
+ "description": "The type of custom filter"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "list-all-filters",
+ "summary": "List all custom filters",
+ "description": "List all custom filters in a category of a user",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of custom filters",
+ "items": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "create-a-custom-filter",
+ "summary": "Create a custom filter",
+ "description": "Create a custom filter in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_filters/{custom_filter_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/custom_filter_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "get-details-of-a-single-custom-filter",
+ "summary": "Get a custom filter details",
+ "description": "Get the details of a custom filter in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given team ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "update-a-custom-filter",
+ "summary": "Update a custom filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a custom filter's attributes",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "delete-a-custom-filter",
+ "summary": "Delete a custom filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a custom filter from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The custom filter does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/webhooks": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "list-all-webhooks",
+ "summary": "List all webhooks",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all webhooks in the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of webhook objects",
+ "items": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "create-a-webhook",
+ "summary": "Add a webhook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Add a webhook subscription to the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/webhooks/{webhook_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/webhook_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "update-a-webhook",
+ "summary": "Update a webhook object",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a webhook object in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "delete-a-webhook",
+ "summary": "Delete a webhook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a webhook from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The webhook does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/report_metric"
+ },
+ {
+ "$ref": "#/components/parameters/report_type"
+ },
+ {
+ "in": "query",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The Id of specific object in case of agent/inbox/label"
+ },
+ {
+ "in": "query",
+ "name": "since",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should start."
+ },
+ {
+ "in": "query",
+ "name": "until",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should stop."
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "list-all-conversation-statistics",
+ "summary": "Get Account reports",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get Account reports for a specific type, metric and date range",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of date based conversation statistics",
+ "items": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/summary": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/report_type"
+ },
+ {
+ "in": "query",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The Id of specific object in case of agent/inbox/label"
+ },
+ {
+ "in": "query",
+ "name": "since",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should start."
+ },
+ {
+ "in": "query",
+ "name": "until",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should stop."
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "list-all-conversation-statistics-summary",
+ "summary": "Get Account reports summary",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get Account reports summary for a specific type and date range",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_summary"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "account"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "get-account-conversation-metrics",
+ "summary": "Account Conversation Metrics",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get conversation metrics for Account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "description": "Object of account conversation metrics",
+ "properties": {
+ "open": {
+ "type": "number"
+ },
+ "unattended": {
+ "type": "number"
+ },
+ "unassigned": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/conversations/": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "agent"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ },
+ {
+ "in": "query",
+ "name": "user_id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The numeric ID of the user"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "get-agent-conversation-metrics",
+ "summary": "Agent Conversation Metrics",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get conversation metrics for Agent",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent based conversation metrics",
+ "items": {
+ "$ref": "#/components/schemas/agent_conversation_metrics"
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/accounts/{account_id}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "conversation_id",
+ "in": "path",
+ "description": "ID of the conversation",
+ "required": true,
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversation"
+ ],
+ "summary": "Get messages from a conversation",
+ "description": "Returns all messages from a specific conversation",
+ "operationId": "getConversationMessages",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_messages"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "bad_request_error": {
+ "title": "data",
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/request_error"
+ }
+ }
+ }
+ },
+ "request_error": {
+ "type": "object",
+ "properties": {
+ "field": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "code": {
+ "type": "string"
+ }
+ }
+ },
+ "generic_id": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ }
+ }
+ },
+ "canned_response": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the canned response"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "Account Id"
+ },
+ "short_code": {
+ "type": "string",
+ "description": "Short Code for quick access of the canned response"
+ },
+ "content": {
+ "type": "string",
+ "description": "Message content for canned response"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "The date and time when the canned response was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "The date and time when the canned response was updated"
+ }
+ }
+ },
+ "custom_attribute": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Identifier"
+ },
+ "attribute_display_name": {
+ "type": "string",
+ "description": "Attribute display name"
+ },
+ "attribute_display_type": {
+ "type": "string",
+ "description": "Attribute display type (text, number, currency, percent, link, date, list, checkbox)"
+ },
+ "attribute_description": {
+ "type": "string",
+ "description": "Attribute description"
+ },
+ "attribute_key": {
+ "type": "string",
+ "description": "Attribute unique key value"
+ },
+ "regex_pattern": {
+ "type": "string",
+ "description": "Regex pattern"
+ },
+ "regex_cue": {
+ "type": "string",
+ "description": "Regex cue"
+ },
+ "attribute_values": {
+ "type": "string",
+ "description": "Attribute values"
+ },
+ "attribute_model": {
+ "type": "string",
+ "description": "Attribute type(conversation_attribute/contact_attribute)"
+ },
+ "default_value": {
+ "type": "string",
+ "description": "Attribute default value"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "The date and time when the custom attribute was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "The date and time when the custom attribute was updated"
+ }
+ }
+ },
+ "automation_rule": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "description": "Response payload that contains automation rule(s)",
+ "oneOf": [
+ {
+ "type": "array",
+ "description": "Array of automation rules (for listing endpoint)",
+ "items": {
+ "$ref": "#/components/schemas/automation_rule_item"
+ }
+ },
+ {
+ "type": "object",
+ "description": "Single automation rule (for show/create/update endpoints)",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/automation_rule_item"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "automation_rule_item": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The ID of the automation rule"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "Account Id"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the rule",
+ "example": "Add label on message create event"
+ },
+ "description": {
+ "type": "string",
+ "description": "Description to give more context about the rule",
+ "example": "Add label support and sales on message create event if incoming message content contains text help"
+ },
+ "event_name": {
+ "type": "string",
+ "description": "Automation Rule event, on which we call the actions(conversation_created, conversation_updated, message_created)",
+ "enum": [
+ "conversation_created",
+ "conversation_updated",
+ "message_created"
+ ],
+ "example": "message_created"
+ },
+ "conditions": {
+ "type": "array",
+ "description": "Array of conditions on which conversation/message filter would work",
+ "items": {
+ "type": "object",
+ "properties": {
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "attribute_key": {
+ "type": "string"
+ },
+ "query_operator": {
+ "type": "string"
+ },
+ "filter_operator": {
+ "type": "string"
+ }
+ },
+ "example": {
+ "attribute_key": "content",
+ "filter_operator": "contains",
+ "values": [
+ "help"
+ ],
+ "query_operator": "and"
+ }
+ }
+ },
+ "actions": {
+ "type": "array",
+ "description": "Array of actions which we perform when condition matches",
+ "items": {
+ "type": "object",
+ "properties": {
+ "action_name": {
+ "type": "string"
+ },
+ "action_params": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "example": {
+ "action_name": "add_label",
+ "action_params": [
+ "support",
+ "sales"
+ ]
+ }
+ }
+ },
+ "created_on": {
+ "type": "integer",
+ "description": "The timestamp when the rule was created"
+ },
+ "active": {
+ "type": "boolean",
+ "description": "Enable/disable automation rule"
+ }
+ }
+ },
+ "portal": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/portal_item"
+ }
+ }
+ }
+ },
+ "portal_config": {
+ "type": "object",
+ "description": "Configuration settings for the portal",
+ "properties": {
+ "allowed_locales": {
+ "type": "array",
+ "description": "List of allowed locales for the portal",
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "description": "The language code"
+ },
+ "articles_count": {
+ "type": "integer",
+ "description": "Number of articles in this locale"
+ },
+ "categories_count": {
+ "type": "integer",
+ "description": "Number of categories in this locale"
+ }
+ }
+ }
+ }
+ }
+ },
+ "portal_logo": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the logo file"
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "ID of the portal this logo belongs to"
+ },
+ "file_type": {
+ "type": "string",
+ "description": "MIME type of the file"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account"
+ },
+ "file_url": {
+ "type": "string",
+ "description": "URL to access the logo file"
+ },
+ "blob_id": {
+ "type": "integer",
+ "description": "ID of the blob"
+ },
+ "filename": {
+ "type": "string",
+ "description": "Name of the file"
+ }
+ }
+ },
+ "portal_meta": {
+ "type": "object",
+ "properties": {
+ "all_articles_count": {
+ "type": "integer",
+ "description": "Total number of articles"
+ },
+ "archived_articles_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of archived articles"
+ },
+ "published_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of published articles"
+ },
+ "draft_articles_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of draft articles"
+ },
+ "categories_count": {
+ "type": "integer",
+ "description": "Number of categories"
+ },
+ "default_locale": {
+ "type": "string",
+ "description": "Default locale for the portal"
+ }
+ }
+ },
+ "portal_item": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The ID of the portal"
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Whether the portal is archived"
+ },
+ "color": {
+ "type": "string",
+ "description": "The color code for the portal"
+ },
+ "config": {
+ "$ref": "#/components/schemas/portal_config"
+ },
+ "custom_domain": {
+ "type": "string",
+ "description": "Custom domain for the portal"
+ },
+ "header_text": {
+ "type": "string",
+ "description": "The header text for the portal"
+ },
+ "homepage_link": {
+ "type": "string",
+ "description": "Homepage link for the portal"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the portal"
+ },
+ "slug": {
+ "type": "string",
+ "description": "URL slug for the portal"
+ },
+ "page_title": {
+ "type": "string",
+ "description": "Page title for the portal"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account the portal belongs to"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox"
+ },
+ "logo": {
+ "$ref": "#/components/schemas/portal_logo"
+ },
+ "meta": {
+ "$ref": "#/components/schemas/portal_meta"
+ }
+ }
+ },
+ "category": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string",
+ "description": "The text content."
+ },
+ "locale": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "slug": {
+ "type": "string"
+ },
+ "position": {
+ "type": "integer"
+ },
+ "portal_id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "associated_category_id": {
+ "type": "integer",
+ "description": "To associate similar categories to each other, e.g same category of product documentation in different languages"
+ },
+ "parent_category_id": {
+ "type": "integer",
+ "description": "To define parent category, e.g product documentation has multiple level features in sales category or in engineering category."
+ }
+ }
+ },
+ "article": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content."
+ },
+ "meta": {
+ "type": "object"
+ },
+ "position": {
+ "type": "integer"
+ },
+ "status": {
+ "type": "integer",
+ "enum": [
+ "draft",
+ "published",
+ "archived"
+ ]
+ },
+ "title": {
+ "type": "string"
+ },
+ "slug": {
+ "type": "string"
+ },
+ "views": {
+ "type": "integer"
+ },
+ "portal_id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "author_id": {
+ "type": "integer"
+ },
+ "category_id": {
+ "type": "integer"
+ },
+ "folder_id": {
+ "type": "integer"
+ },
+ "associated_article_id": {
+ "type": "integer",
+ "description": "To associate similar articles to each other, e.g to provide the link for the reference."
+ }
+ }
+ },
+ "contact": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact"
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact",
+ "example": {
+ "attribute_key": "attribute_value",
+ "signed_up_at": "dd/mm/yyyy"
+ }
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "The last activity at of the contact"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The created at of the contact"
+ },
+ "contact_inboxes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_inboxes"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the conversation"
+ },
+ "messages": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ }
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account Id"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "UUID of the conversation"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the conversation"
+ },
+ "agent_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the agent"
+ },
+ "assignee_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the assignee"
+ },
+ "can_reply": {
+ "type": "boolean",
+ "description": "Whether the conversation can be replied to"
+ },
+ "contact_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The object to save custom attributes for conversation, accepts custom attributes key and value"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ },
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The labels of the conversation"
+ },
+ "muted": {
+ "type": "boolean",
+ "description": "Whether the conversation is muted"
+ },
+ "snoozed_until": {
+ "type": "number",
+ "description": "The time at which the conversation will be unmuted"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "The status of the conversation"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The time at which conversation was created"
+ },
+ "updated_at": {
+ "type": "number",
+ "description": "The time at which conversation was updated"
+ },
+ "timestamp": {
+ "type": "string",
+ "description": "The time at which conversation was created"
+ },
+ "first_reply_created_at": {
+ "type": "number",
+ "description": "The time at which the first reply was created"
+ },
+ "unread_count": {
+ "type": "number",
+ "description": "The number of unread messages"
+ },
+ "last_non_activity_message": {
+ "$ref": "#/components/schemas/message"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the conversation"
+ },
+ "priority": {
+ "type": "string",
+ "description": "The priority of the conversation"
+ },
+ "waiting_since": {
+ "type": "number",
+ "description": "The time at which the conversation was waiting"
+ },
+ "sla_policy_id": {
+ "type": "number",
+ "description": "The ID of the SLA policy"
+ },
+ "applied_sla": {
+ "type": "object",
+ "description": "The applied SLA"
+ },
+ "sla_events": {
+ "type": "array"
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content of the message"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The ID of the account"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "number",
+ "description": "The ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "enum": [
+ 0,
+ 1,
+ 2
+ ],
+ "description": "The type of the message"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The time at which message was created"
+ },
+ "updated_at": {
+ "type": "integer",
+ "description": "The time at which message was updated"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "The flags which shows whether the message is private or not"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "sent",
+ "delivered",
+ "read",
+ "failed"
+ ],
+ "description": "The status of the message"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The source ID of the message"
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_select",
+ "cards",
+ "form"
+ ],
+ "description": "The type of the template message"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "The content attributes for each content_type"
+ },
+ "sender_type": {
+ "type": "string",
+ "enum": [
+ "contact",
+ "agent",
+ "agent_bot"
+ ],
+ "description": "The type of the sender"
+ },
+ "sender_id": {
+ "type": "number",
+ "description": "The ID of the sender"
+ },
+ "external_source_ids": {
+ "type": "object",
+ "description": "The external source IDs of the message"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the message"
+ },
+ "processed_message_content": {
+ "type": "string",
+ "description": "The processed message content"
+ },
+ "sentiment": {
+ "type": "object",
+ "description": "The sentiment of the message"
+ },
+ "conversation": {
+ "type": "object",
+ "description": "The conversation object"
+ },
+ "attachment": {
+ "type": "object",
+ "description": "The file object attached to the image"
+ },
+ "sender": {
+ "type": "object",
+ "description": "User/Agent/AgentBot object"
+ }
+ }
+ },
+ "user": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "access_token": {
+ "type": "string"
+ },
+ "account_id": {
+ "type": "number"
+ },
+ "available_name": {
+ "type": "string"
+ },
+ "avatar_url": {
+ "type": "string"
+ },
+ "confirmed": {
+ "type": "boolean"
+ },
+ "display_name": {
+ "type": "string",
+ "nullable": true
+ },
+ "message_signature": {
+ "type": "string",
+ "nullable": true
+ },
+ "email": {
+ "type": "string"
+ },
+ "hmac_identifier": {
+ "type": "string"
+ },
+ "inviter_id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "pubsub_token": {
+ "type": "string"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ]
+ },
+ "ui_settings": {
+ "type": "object"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "nullable": true
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Available for users who are created through platform APIs and has custom attributes associated."
+ },
+ "accounts": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "active_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "administrator",
+ "agent"
+ ]
+ },
+ "permissions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "availability": {
+ "type": "string"
+ },
+ "availability_status": {
+ "type": "string"
+ },
+ "auto_offline": {
+ "type": "boolean"
+ },
+ "custom_role_id": {
+ "type": "number",
+ "nullable": true
+ },
+ "custom_role": {
+ "type": "object",
+ "nullable": true
+ }
+ }
+ }
+ }
+ }
+ },
+ "agent": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability status of the agent computed by Chatwoot."
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away."
+ },
+ "confirmed": {
+ "type": "boolean",
+ "description": "Whether the agent has confirmed their email address."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the agent"
+ },
+ "available_name": {
+ "type": "string",
+ "description": "The available name of the agent"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the agent"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "The role of the agent"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the agent"
+ },
+ "custom_role_id": {
+ "type": "integer",
+ "description": "The custom role id of the agent"
+ }
+ }
+ },
+ "inbox": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox"
+ },
+ "website_url": {
+ "type": "string",
+ "description": "Website URL"
+ },
+ "channel_type": {
+ "type": "string",
+ "description": "The type of the inbox"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The avatar image of the inbox"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "Widget Color used for customization of the widget"
+ },
+ "website_token": {
+ "type": "string",
+ "description": "Website Token"
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "The flag which shows whether Auto Assignment is enabled or not"
+ },
+ "web_widget_script": {
+ "type": "string",
+ "description": "Script used to load the website widget"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "The flag which shows whether greeting is enabled"
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "A greeting message when the user starts the conversation"
+ },
+ "channel_id": {
+ "type": "number",
+ "description": "ID of the channel this inbox belongs to"
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "The flag which shows whether working hours feature is enabled"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "The flag to enable collecting email from contacts"
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "The flag to enable CSAT survey"
+ },
+ "auto_assignment_config": {
+ "type": "object",
+ "description": "Configuration settings for auto assignment"
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Message to show when agents are out of office"
+ },
+ "working_hours": {
+ "type": "array",
+ "description": "Configuration for working hours of the inbox",
+ "items": {
+ "type": "object",
+ "properties": {
+ "day_of_week": {
+ "type": "number",
+ "description": "Day of the week (0-6, where 0 is Sunday)"
+ },
+ "closed_all_day": {
+ "type": "boolean",
+ "description": "Whether the inbox is closed for the entire day"
+ },
+ "open_hour": {
+ "type": "number",
+ "description": "Hour when inbox opens (0-23)"
+ },
+ "open_minutes": {
+ "type": "number",
+ "description": "Minutes of the hour when inbox opens (0-59)"
+ },
+ "close_hour": {
+ "type": "number",
+ "description": "Hour when inbox closes (0-23)"
+ },
+ "close_minutes": {
+ "type": "number",
+ "description": "Minutes of the hour when inbox closes (0-59)"
+ },
+ "open_all_day": {
+ "type": "boolean",
+ "description": "Whether the inbox is open for the entire day"
+ }
+ }
+ }
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone configuration for the inbox"
+ },
+ "callback_webhook_url": {
+ "type": "string",
+ "description": "Webhook URL for callbacks"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Whether to allow messages after a conversation is resolved"
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Whether to lock a contact to a single conversation"
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Type of sender name to display (e.g., friendly)"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name associated with the inbox"
+ },
+ "hmac_mandatory": {
+ "type": "boolean",
+ "description": "Whether HMAC verification is mandatory"
+ },
+ "selected_feature_flags": {
+ "type": "object",
+ "description": "Selected feature flags for the inbox"
+ },
+ "reply_time": {
+ "type": "string",
+ "description": "Expected reply time"
+ },
+ "messaging_service_sid": {
+ "type": "string",
+ "description": "Messaging service SID for SMS providers"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "Phone number associated with the inbox"
+ },
+ "medium": {
+ "type": "string",
+ "description": "Medium of communication (e.g., sms, email)"
+ },
+ "provider": {
+ "type": "string",
+ "description": "Provider of the channel"
+ }
+ }
+ },
+ "agent_bot": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the agent bot"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the agent bot"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot"
+ },
+ "bot_type": {
+ "type": "string",
+ "description": "The type of the bot"
+ },
+ "bot_config": {
+ "type": "object",
+ "description": "The configuration of the bot"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account ID if it's an account specific bot"
+ },
+ "access_token": {
+ "type": "string",
+ "description": "The access token for the bot"
+ },
+ "system_bot": {
+ "type": "boolean",
+ "description": "Whether the bot is a system bot"
+ }
+ }
+ },
+ "contact_inboxes": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox_contact"
+ }
+ }
+ },
+ "contactable_inboxes": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ },
+ "custom_filter": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the custom filter"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the custom filter"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ],
+ "description": "The description about the custom filter"
+ },
+ "query": {
+ "type": "object",
+ "description": "A query that needs to be saved as a custom filter"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The time at which the custom filter was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The time at which the custom filter was updated"
+ }
+ }
+ },
+ "webhook": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the webhook"
+ },
+ "url": {
+ "type": "string",
+ "description": "The url to which the events will be send"
+ },
+ "subscriptions": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_status_changed",
+ "conversation_updated",
+ "contact_created",
+ "contact_updated",
+ "message_created",
+ "message_updated",
+ "webwidget_triggered"
+ ]
+ },
+ "description": "The list of subscribed events"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The id of the account which the webhook object belongs to"
+ }
+ }
+ },
+ "account": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Account ID"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the account"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "administrator",
+ "agent"
+ ],
+ "description": "The user role in the account"
+ }
+ }
+ },
+ "account_user": {
+ "type": "array",
+ "description": "Array of account users",
+ "items": {
+ "type": "object",
+ "properties": {
+ "account_id": {
+ "type": "integer",
+ "description": "The ID of the account"
+ },
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user"
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent"
+ }
+ }
+ }
+ },
+ "platform_account": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Account ID"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the account"
+ }
+ }
+ },
+ "team": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the team"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the team"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the team"
+ },
+ "allow_auto_assign": {
+ "type": "boolean",
+ "description": "If this setting is turned on, the system would automatically assign the conversation to an agent in the team while assigning the conversation to a team"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The ID of the account with the team is a part of"
+ },
+ "is_member": {
+ "type": "boolean",
+ "description": "This field shows whether the current user is a part of the team"
+ }
+ }
+ },
+ "integrations_app": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the integration"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the integration"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the team"
+ },
+ "hook_type": {
+ "type": "string",
+ "description": "Whether the integration is an account or inbox integration"
+ },
+ "enabled": {
+ "type": "boolean",
+ "description": "Whether the integration is enabled for the account"
+ },
+ "allow_multiple_hooks": {
+ "type": "boolean",
+ "description": "Whether multiple hooks can be created for the integration"
+ },
+ "hooks": {
+ "type": "array",
+ "items": {
+ "type": "object"
+ },
+ "description": "If there are any hooks created for this integration"
+ }
+ }
+ },
+ "integrations_hook": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the integration hook"
+ },
+ "app_id": {
+ "type": "string",
+ "description": "The ID of the integration app"
+ },
+ "inbox_id": {
+ "type": "string",
+ "description": "Inbox ID if its an Inbox integration"
+ },
+ "account_id": {
+ "type": "string",
+ "description": "Account ID of the integration"
+ },
+ "status": {
+ "type": "boolean",
+ "description": "Whether the integration hook is enabled for the account"
+ },
+ "hook_type": {
+ "type": "boolean",
+ "description": "Whether its an account or inbox integration hook"
+ },
+ "settings": {
+ "type": "object",
+ "description": "The associated settings for the integration"
+ }
+ }
+ },
+ "public_contact": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Id of the contact"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The session identifier of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the contact"
+ },
+ "pubsub_token": {
+ "type": "string",
+ "description": "The token to be used to connect to chatwoot websocket"
+ }
+ }
+ },
+ "public_conversation": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Id of the conversation"
+ },
+ "inbox_id": {
+ "type": "string",
+ "description": "The inbox id of the conversation"
+ },
+ "messages": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ },
+ "description": "Messages in the conversation"
+ },
+ "contact": {
+ "type": "object",
+ "description": "The contact information associated to the conversation"
+ }
+ }
+ },
+ "public_message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Id of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "Text content of the message"
+ },
+ "message_type": {
+ "type": "string",
+ "description": "Denotes the message type"
+ },
+ "content_type": {
+ "type": "string",
+ "description": "Content type of the message"
+ },
+ "content_attributes": {
+ "type": "string",
+ "description": "Additional content attributes of the message"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "Created at time stamp of the message"
+ },
+ "conversation_id": {
+ "type": "string",
+ "description": "Conversation Id of the message"
+ },
+ "attachments": {
+ "type": "array",
+ "items": {
+ "type": "object"
+ },
+ "description": "Attachments if any"
+ },
+ "sender": {
+ "type": "object",
+ "description": "Details of the sender"
+ }
+ }
+ },
+ "public_inbox": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "Inbox identifier"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the inbox"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "The timezone defined on the inbox"
+ },
+ "working_hours": {
+ "type": "array",
+ "description": "The working hours defined on the inbox",
+ "items": {
+ "type": "object",
+ "properties": {
+ "day_of_week": {
+ "type": "integer",
+ "description": "Day of the week as a number. Sunday -> 0, Saturday -> 6"
+ },
+ "open_all_day": {
+ "type": "boolean",
+ "description": "Whether or not the business is open the whole day"
+ },
+ "closed_all_day": {
+ "type": "boolean",
+ "description": "Whether or not the business is closed the whole day"
+ },
+ "open_hour": {
+ "type": "integer",
+ "description": "Opening hour. Can be null if closed all day"
+ },
+ "open_minutes": {
+ "type": "integer",
+ "description": "Opening minute. Can be null if closed all day"
+ },
+ "close_hour": {
+ "type": "integer",
+ "description": "Closing hour. Can be null if closed all day"
+ },
+ "close_minutes": {
+ "type": "integer",
+ "description": "Closing minute. Can be null if closed all day"
+ }
+ }
+ }
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the working hours are enabled on the inbox"
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the Customer Satisfaction survey is enabled on the inbox"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the Greeting Message is enabled on the inbox"
+ },
+ "identity_validation_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the User Identity Validation is enforced on the inbox"
+ }
+ }
+ },
+ "account_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the account",
+ "example": "My Account"
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the account",
+ "example": "en"
+ },
+ "domain": {
+ "type": "string",
+ "description": "The domain of the account",
+ "example": "example.com"
+ },
+ "support_email": {
+ "type": "string",
+ "description": "The support email of the account",
+ "example": "support@example.com"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "active",
+ "suspended"
+ ],
+ "description": "The status of the account",
+ "example": "active"
+ },
+ "limits": {
+ "type": "object",
+ "description": "The limits of the account",
+ "example": {
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the account",
+ "example": {
+ }
+ }
+ }
+ },
+ "account_user_create_update_payload": {
+ "type": "object",
+ "required": [
+ "user_id",
+ "role"
+ ],
+ "properties": {
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user",
+ "example": 1
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent",
+ "example": "administrator"
+ }
+ }
+ },
+ "platform_agent_bot_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot",
+ "example": "My Agent Bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the agent bot",
+ "example": "This is a sample agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot",
+ "example": "https://example.com/webhook"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "The account ID to associate the agent bot with",
+ "example": 1
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the agent bot avatar",
+ "example": "https://example.com/avatar.png"
+ }
+ }
+ },
+ "agent_bot_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot",
+ "example": "My Agent Bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the agent bot",
+ "example": "This is a sample agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot",
+ "example": "https://example.com/webhook"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the agent bot avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "bot_type": {
+ "type": "integer",
+ "description": "The type of the bot (0 for webhook)",
+ "example": 0
+ },
+ "bot_config": {
+ "type": "object",
+ "description": "The configuration for the bot",
+ "example": {
+ }
+ }
+ }
+ },
+ "user_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the user",
+ "example": "Daniel"
+ },
+ "display_name": {
+ "type": "string",
+ "description": "Display name of the user",
+ "example": "Dan"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the user",
+ "example": "daniel@acme.inc"
+ },
+ "password": {
+ "type": "string",
+ "description": "Password must contain uppercase, lowercase letters, number and a special character",
+ "example": "Password2!"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes you want to associate with the user",
+ "example": {
+ }
+ }
+ }
+ },
+ "canned_response_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "Message content for canned response",
+ "example": "Hello, {{contact.name}}! Welcome to our service."
+ },
+ "short_code": {
+ "type": "string",
+ "description": "Short Code for quick access of the canned response",
+ "example": "welcome"
+ }
+ }
+ },
+ "custom_attribute_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "attribute_display_name": {
+ "type": "string",
+ "description": "Attribute display name",
+ "example": "Custom Attribute"
+ },
+ "attribute_display_type": {
+ "type": "integer",
+ "description": "Attribute display type (text- 0, number- 1, currency- 2, percent- 3, link- 4, date- 5, list- 6, checkbox- 7)",
+ "example": 0
+ },
+ "attribute_description": {
+ "type": "string",
+ "description": "Attribute description",
+ "example": "This is a custom attribute"
+ },
+ "attribute_key": {
+ "type": "string",
+ "description": "Attribute unique key value",
+ "example": "custom_attribute"
+ },
+ "attribute_values": {
+ "type": "array",
+ "description": "Attribute values",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "value1",
+ "value2"
+ ]
+ },
+ "attribute_model": {
+ "type": "integer",
+ "description": "Attribute type(conversation_attribute- 0, contact_attribute- 1)",
+ "example": 0
+ },
+ "regex_pattern": {
+ "type": "string",
+ "description": "Regex pattern (Only applicable for type- text). The regex pattern is used to validate the attribute value(s).",
+ "example": "^[a-zA-Z0-9]+$"
+ },
+ "regex_cue": {
+ "type": "string",
+ "description": "Regex cue message (Only applicable for type- text). The cue message is shown when the regex pattern is not matched.",
+ "example": "Please enter a valid value"
+ }
+ }
+ },
+ "agent_create_payload": {
+ "type": "object",
+ "required": [
+ "name",
+ "email",
+ "role"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Full Name of the agent",
+ "example": "John Doe"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the Agent",
+ "example": "john.doe@acme.inc"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "Whether its administrator or agent",
+ "example": "agent"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability setting of the agent.",
+ "example": "available"
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away.",
+ "example": true
+ }
+ }
+ },
+ "agent_update_payload": {
+ "type": "object",
+ "required": [
+ "role"
+ ],
+ "properties": {
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "Whether its administrator or agent",
+ "example": "agent"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability status of the agent.",
+ "example": "available"
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away.",
+ "example": true
+ }
+ }
+ },
+ "contact_create_payload": {
+ "type": "object",
+ "required": [
+ "inbox_id"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox to which the contact belongs",
+ "example": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "name of the contact",
+ "example": "Alice"
+ },
+ "email": {
+ "type": "string",
+ "description": "email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "whether the contact is blocked or not",
+ "example": false
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the contact avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "A unique identifier for the contact in external system",
+ "example": "1234567890"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "An object where you can store additional attributes for contact. example {\"type\":\"customer\", \"age\":30}",
+ "example": {
+ "type": "customer",
+ "age": 30
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "An object where you can store custom attributes for contact. example {\"type\":\"customer\", \"age\":30}, this should have a valid custom attribute definition.",
+ "example": {
+ }
+ }
+ }
+ },
+ "contact_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "name of the contact",
+ "example": "Alice"
+ },
+ "email": {
+ "type": "string",
+ "description": "email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "whether the contact is blocked or not",
+ "example": false
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the contact avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "A unique identifier for the contact in external system",
+ "example": "1234567890"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "An object where you can store additional attributes for contact. example {\"type\":\"customer\", \"age\":30}",
+ "example": {
+ "type": "customer",
+ "age": 30
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "An object where you can store custom attributes for contact. example {\"type\":\"customer\", \"age\":30}, this should have a valid custom attribute definition.",
+ "example": {
+ }
+ }
+ }
+ },
+ "conversation_create_payload": {
+ "type": "object",
+ "required": [
+ "source_id",
+ "inbox_id"
+ ],
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Conversation source id",
+ "example": "1234567890"
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "Id of inbox in which the conversation is created
Allowed Inbox Types: Website, Phone, Api, Email",
+ "example": 1
+ },
+ "contact_id": {
+ "type": "integer",
+ "description": "Contact Id for which conversation is created",
+ "example": 1
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "Lets you specify attributes like browser information",
+ "example": {
+ "browser": "Chrome",
+ "browser_version": "89.0.4389.82",
+ "os": "Windows",
+ "os_version": "10"
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The object to save custom attributes for conversation, accepts custom attributes key and value",
+ "example": {
+ "attribute_key": "attribute_value",
+ "priority_conversation_number": 3
+ }
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "Specify the conversation whether it's pending, open, closed",
+ "example": "open"
+ },
+ "assignee_id": {
+ "type": "integer",
+ "description": "Agent Id for assigning a conversation to an agent",
+ "example": 1
+ },
+ "team_id": {
+ "type": "integer",
+ "description": "Team Id for assigning a conversation to a team\\",
+ "example": 1
+ },
+ "snoozed_until": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Snoozed until date time",
+ "example": "2030-07-21T17:32:28Z"
+ },
+ "message": {
+ "type": "object",
+ "description": "The initial message to be sent to the conversation",
+ "required": [
+ "content"
+ ],
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "The content of the message",
+ "example": "Hello, how can I help you?"
+ },
+ "template_params": {
+ "type": "object",
+ "description": "The template params for the message in case of whatsapp Channel",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "sample_issue_resolution"
+ },
+ "category": {
+ "type": "string",
+ "description": "Category of the template",
+ "example": "UTILITY"
+ },
+ "language": {
+ "type": "string",
+ "description": "Language of the template",
+ "example": "en_US"
+ },
+ "processed_params": {
+ "type": "object",
+ "description": "The processed param values for template variables in template",
+ "example": {
+ "1": "Chatwoot"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation_message_create_payload": {
+ "type": "object",
+ "required": [
+ "content"
+ ],
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "The content of the message",
+ "example": "Hello, how can I help you?"
+ },
+ "message_type": {
+ "type": "string",
+ "enum": [
+ "outgoing",
+ "incoming"
+ ],
+ "description": "The type of the message",
+ "example": "outgoing"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "Flag to identify if it is a private note",
+ "example": false
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_email",
+ "cards",
+ "input_select",
+ "form",
+ "article"
+ ],
+ "description": "Content type of the message",
+ "example": "text"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "Attributes based on the content type",
+ "example": {
+ }
+ },
+ "campaign_id": {
+ "type": "integer",
+ "description": "The campaign id to which the message belongs",
+ "example": 1
+ },
+ "template_params": {
+ "type": "object",
+ "description": "The template params for the message in case of whatsapp Channel",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "sample_issue_resolution"
+ },
+ "category": {
+ "type": "string",
+ "description": "Category of the template",
+ "example": "UTILITY"
+ },
+ "language": {
+ "type": "string",
+ "description": "Language of the template",
+ "example": "en_US"
+ },
+ "processed_params": {
+ "type": "object",
+ "description": "The processed param values for template variables in template",
+ "example": {
+ "1": "Chatwoot"
+ }
+ }
+ }
+ }
+ }
+ },
+ "inbox_create_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox",
+ "example": "Support"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Image file for avatar"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Enable greeting message",
+ "example": true
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "Greeting message to be displayed on the widget",
+ "example": "Hello, how can I help you?"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "Enable email collection",
+ "example": true
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Enable CSAT survey",
+ "example": true
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "Enable Auto Assignment",
+ "example": true
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Enable working hours",
+ "example": true
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Out of office message to be displayed on the widget",
+ "example": "We are currently out of office. Please leave a message and we will get back to you."
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone of the inbox",
+ "example": "America/New_York"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Allow messages after conversation is resolved",
+ "example": true
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Lock to single conversation",
+ "example": true
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "Id of the help center portal to attach to the inbox",
+ "example": 1
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Sender name type for the inbox",
+ "enum": [
+ "friendly",
+ "professional"
+ ],
+ "example": "friendly"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name for the inbox",
+ "example": "My Business"
+ },
+ "channel": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "Type of the channel",
+ "enum": [
+ "web_widget",
+ "api",
+ "email",
+ "line",
+ "telegram",
+ "whatsapp",
+ "sms"
+ ],
+ "example": "web_widget"
+ },
+ "website_url": {
+ "type": "string",
+ "description": "URL at which the widget will be loaded",
+ "example": "https://example.com"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget",
+ "example": "Welcome to our support"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget",
+ "example": "We are here to help you"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "A Hex-color string used to customize the widget",
+ "example": "#FF5733"
+ }
+ }
+ }
+ }
+ },
+ "inbox_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox",
+ "example": "Support"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Image file for avatar"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Enable greeting message",
+ "example": true
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "Greeting message to be displayed on the widget",
+ "example": "Hello, how can I help you?"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "Enable email collection",
+ "example": true
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Enable CSAT survey",
+ "example": true
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "Enable Auto Assignment",
+ "example": true
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Enable working hours",
+ "example": true
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Out of office message to be displayed on the widget",
+ "example": "We are currently out of office. Please leave a message and we will get back to you."
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone of the inbox",
+ "example": "America/New_York"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Allow messages after conversation is resolved",
+ "example": true
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Lock to single conversation",
+ "example": true
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "Id of the help center portal to attach to the inbox",
+ "example": 1
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Sender name type for the inbox",
+ "enum": [
+ "friendly",
+ "professional"
+ ],
+ "example": "friendly"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name for the inbox",
+ "example": "My Business"
+ },
+ "channel": {
+ "type": "object",
+ "properties": {
+ "website_url": {
+ "type": "string",
+ "description": "URL at which the widget will be loaded",
+ "example": "https://example.com"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget",
+ "example": "Welcome to our support"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget",
+ "example": "We are here to help you"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "A Hex-color string used to customize the widget",
+ "example": "#FF5733"
+ }
+ }
+ }
+ }
+ },
+ "team_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the team",
+ "example": "Support Team"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the team",
+ "example": "This is a team of support agents"
+ },
+ "allow_auto_assign": {
+ "type": "boolean",
+ "description": "If this setting is turned on, the system would automatically assign the conversation to an agent in the team while assigning the conversation to a team",
+ "example": true
+ }
+ }
+ },
+ "custom_filter_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the custom filter",
+ "example": "My Custom Filter"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ],
+ "description": "The description about the custom filter",
+ "example": "conversation"
+ },
+ "query": {
+ "type": "object",
+ "description": "A query that needs to be saved as a custom filter",
+ "example": {
+ }
+ }
+ }
+ },
+ "webhook_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "The url where the events should be sent",
+ "example": "https://example.com/webhook"
+ },
+ "subscriptions": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_status_changed",
+ "conversation_updated",
+ "message_created",
+ "message_updated",
+ "contact_created",
+ "contact_updated",
+ "webwidget_triggered"
+ ]
+ },
+ "description": "The events you want to subscribe to.",
+ "example": [
+ "conversation_created",
+ "conversation_status_changed"
+ ]
+ }
+ }
+ },
+ "integrations_hook_create_payload": {
+ "type": "object",
+ "properties": {
+ "app_id": {
+ "type": "integer",
+ "description": "The ID of app for which integration hook is being created",
+ "example": 1
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "The inbox ID, if the hook is an inbox hook",
+ "example": 1
+ },
+ "status": {
+ "type": "integer",
+ "description": "The status of the integration (0 for inactive, 1 for active)",
+ "example": 1
+ },
+ "settings": {
+ "type": "object",
+ "description": "The settings required by the integration",
+ "example": {
+ }
+ }
+ }
+ },
+ "integrations_hook_update_payload": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "integer",
+ "description": "The status of the integration (0 for inactive, 1 for active)",
+ "example": 1
+ },
+ "settings": {
+ "type": "object",
+ "description": "The settings required by the integration",
+ "example": {
+ }
+ }
+ }
+ },
+ "automation_rule_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Rule name",
+ "example": "Add label on message create event"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the automation and actions",
+ "example": "Add label support and sales on message create event if incoming message content contains text help"
+ },
+ "event_name": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_updated",
+ "message_created"
+ ],
+ "example": "message_created",
+ "description": "The event when you want to execute the automation actions"
+ },
+ "active": {
+ "type": "boolean",
+ "description": "Enable/disable automation rule"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Array of actions which you want to perform when condition matches, e.g add label support if message contains content help.",
+ "items": {
+ "type": "object",
+ "example": {
+ "action_name": "add_label",
+ "action_params": [
+ "support"
+ ]
+ }
+ }
+ },
+ "conditions": {
+ "type": "array",
+ "description": "Array of conditions on which conversation filter would work, e.g message content contains text help.",
+ "items": {
+ "type": "object",
+ "example": {
+ "attribute_key": "content",
+ "filter_operator": "contains",
+ "query_operator": "OR",
+ "values": [
+ "help"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "portal_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "color": {
+ "type": "string",
+ "description": "Header color for help-center in hex format",
+ "example": "#FFFFFF"
+ },
+ "custom_domain": {
+ "type": "string",
+ "description": "Custom domain to display help center.",
+ "example": "chatwoot.help"
+ },
+ "header_text": {
+ "type": "string",
+ "description": "Help center header",
+ "example": "Handbook"
+ },
+ "homepage_link": {
+ "type": "string",
+ "description": "link to main dashboard",
+ "example": "https://www.chatwoot.com/"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name for the portal",
+ "example": "Handbook"
+ },
+ "page_title": {
+ "type": "string",
+ "description": "Page title for the portal",
+ "example": "Handbook"
+ },
+ "slug": {
+ "type": "string",
+ "description": "Slug for the portal to display in link",
+ "example": "handbook"
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Status to check if portal is live",
+ "example": false
+ },
+ "config": {
+ "type": "object",
+ "description": "Configuration about supporting locales",
+ "example": {
+ "allowed_locales": [
+ "en",
+ "es"
+ ],
+ "default_locale": "en"
+ }
+ }
+ }
+ },
+ "category_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the category",
+ "example": "Category Name"
+ },
+ "description": {
+ "type": "string",
+ "description": "A description for the category",
+ "example": "Category description"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Category position in the portal list to sort",
+ "example": 1
+ },
+ "slug": {
+ "type": "string",
+ "description": "The category slug used in the URL",
+ "example": "category-name"
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the category",
+ "example": "en"
+ },
+ "icon": {
+ "type": "string",
+ "description": "The icon of the category as a string (emoji)",
+ "example": "📚"
+ },
+ "parent_category_id": {
+ "type": "integer",
+ "description": "To define parent category, e.g product documentation has multiple level features in sales category or in engineering category.",
+ "example": 1
+ },
+ "associated_category_id": {
+ "type": "integer",
+ "description": "To associate similar categories to each other, e.g same category of product documentation in different languages",
+ "example": 2
+ }
+ }
+ },
+ "article_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "title": {
+ "type": "string",
+ "description": "The title of the article",
+ "example": "Article Title"
+ },
+ "slug": {
+ "type": "string",
+ "description": "The slug of the article",
+ "example": "article-title"
+ },
+ "position": {
+ "type": "integer",
+ "description": "article position in category",
+ "example": 1
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content.",
+ "example": "This is the content of the article"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the article",
+ "example": "This is the description of the article"
+ },
+ "category_id": {
+ "type": "integer",
+ "description": "The category id of the article",
+ "example": 1
+ },
+ "author_id": {
+ "type": "integer",
+ "description": "The author agent id of the article",
+ "example": 1
+ },
+ "associated_article_id": {
+ "type": "integer",
+ "description": "To associate similar articles to each other, e.g to provide the link for the reference.",
+ "example": 2
+ },
+ "status": {
+ "type": "integer",
+ "description": "The status of the article. 0 for draft, 1 for published, 2 for archived",
+ "example": 1
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the article",
+ "example": "en"
+ },
+ "meta": {
+ "type": "object",
+ "description": "Use for search",
+ "example": {
+ "tags": [
+ "article_name"
+ ],
+ "title": "article title",
+ "description": "article description"
+ }
+ }
+ }
+ },
+ "public_contact_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "External identifier of the contact",
+ "example": "1234567890"
+ },
+ "identifier_hash": {
+ "type": "string",
+ "description": "Identifier hash prepared for HMAC authentication",
+ "example": "e93275d4eba0e5679ad55f5360af00444e2a888df9b0afa3e8b691c3173725f9"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the contact",
+ "example": "Alice"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "Phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes of the customer",
+ "example": {
+ }
+ }
+ }
+ },
+ "public_message_create_payload": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "Content for the message",
+ "example": "Hello, how can I help you?"
+ },
+ "echo_id": {
+ "type": "string",
+ "description": "Temporary identifier which will be passed back via websockets",
+ "example": "1234567890"
+ }
+ }
+ },
+ "public_message_update_payload": {
+ "type": "object",
+ "properties": {
+ "submitted_values": {
+ "type": "object",
+ "description": "Replies to the Bot Message Types",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submiitted value",
+ "example": "My Name"
+ },
+ "title": {
+ "type": "string",
+ "description": "The title of the submitted value",
+ "example": "My Title"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the submitted value",
+ "example": "value"
+ },
+ "csat_survey_response": {
+ "type": "object",
+ "description": "The CSAT survey response",
+ "properties": {
+ "feedback_message": {
+ "type": "string",
+ "description": "The feedback message of the CSAT survey response",
+ "example": "Great service!"
+ },
+ "rating": {
+ "type": "integer",
+ "description": "The rating of the CSAT survey response",
+ "example": 5
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "public_conversation_create_payload": {
+ "type": "object",
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes of the conversation",
+ "example": {
+ }
+ }
+ }
+ },
+ "extended_contact": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/contact"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Id of the user"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "online",
+ "offline"
+ ],
+ "description": "Availability status of the user"
+ }
+ }
+ }
+ ]
+ },
+ "contact_base": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/contact"
+ }
+ ]
+ },
+ "contact_list": {
+ "type": "array",
+ "description": "array of contacts",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/contact"
+ }
+ ]
+ }
+ },
+ "contact_conversations": {
+ "type": "array",
+ "description": "array of conversations",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "display_id": {
+ "type": "number"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "contact_labels": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of labels",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "conversation_list": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "mine_count": {
+ "type": "number"
+ },
+ "unassigned_count": {
+ "type": "number"
+ },
+ "assigned_count": {
+ "type": "number"
+ },
+ "all_count": {
+ "type": "number"
+ }
+ }
+ },
+ "payload": {
+ "type": "array",
+ "description": "array of conversations",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation_show": {
+ "type": "object",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "conversation_status_toggle": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object"
+ },
+ "payload": {
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean"
+ },
+ "current_status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved"
+ ]
+ },
+ "conversation_id": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "conversation_labels": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of labels",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "account_summary": {
+ "type": "object",
+ "properties": {
+ "avg_first_response_time": {
+ "type": "string"
+ },
+ "avg_resolution_time": {
+ "type": "string"
+ },
+ "conversations_count": {
+ "type": "number"
+ },
+ "incoming_messages_count": {
+ "type": "number"
+ },
+ "outgoing_messages_count": {
+ "type": "number"
+ },
+ "resolutions_count": {
+ "type": "number"
+ },
+ "previous": {
+ "type": "object",
+ "properties": {
+ "avg_first_response_time": {
+ "type": "string"
+ },
+ "avg_resolution_time": {
+ "type": "string"
+ },
+ "conversations_count": {
+ "type": "number"
+ },
+ "incoming_messages_count": {
+ "type": "number"
+ },
+ "outgoing_messages_count": {
+ "type": "number"
+ },
+ "resolutions_count": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "agent_conversation_metrics": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ },
+ "thumbnail": {
+ "type": "string"
+ },
+ "availability": {
+ "type": "string"
+ },
+ "metric": {
+ "type": "object",
+ "properties": {
+ "open": {
+ "type": "number"
+ },
+ "unattended": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "contact_detail": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact",
+ "properties": {
+ "city": {
+ "type": "string",
+ "description": "City of the contact"
+ },
+ "country": {
+ "type": "string",
+ "description": "Country of the contact"
+ },
+ "country_code": {
+ "type": "string",
+ "description": "Country code of the contact"
+ },
+ "created_at_ip": {
+ "type": "string",
+ "description": "IP address when the contact was created"
+ }
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact"
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact",
+ "nullable": true
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact",
+ "nullable": true
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "type": {
+ "type": "string",
+ "description": "The type of entity",
+ "enum": [
+ "contact"
+ ]
+ }
+ }
+ },
+ "message_detailed": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content of the message"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "number",
+ "description": "The ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "enum": [
+ 0,
+ 1,
+ 2,
+ 3
+ ],
+ "description": "The type of the message (0: incoming, 1: outgoing, 2: activity, 3: template)"
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_select",
+ "cards",
+ "form",
+ "input_csat"
+ ],
+ "description": "The type of the message content"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "sent",
+ "delivered",
+ "read",
+ "failed"
+ ],
+ "description": "The status of the message"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "The content attributes for each content_type",
+ "properties": {
+ "in_reply_to": {
+ "type": "string",
+ "description": "ID of the message this is replying to",
+ "nullable": true
+ }
+ }
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The timestamp when message was created"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "The flag which shows whether the message is private or not"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The source ID of the message",
+ "nullable": true
+ },
+ "sender": {
+ "$ref": "#/components/schemas/contact_detail"
+ }
+ }
+ },
+ "conversation_meta": {
+ "type": "object",
+ "properties": {
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Labels associated with the conversation"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "properties": {
+ "browser": {
+ "type": "object",
+ "properties": {
+ "device_name": {
+ "type": "string",
+ "description": "Name of the device"
+ },
+ "browser_name": {
+ "type": "string",
+ "description": "Name of the browser"
+ },
+ "platform_name": {
+ "type": "string",
+ "description": "Name of the platform"
+ },
+ "browser_version": {
+ "type": "string",
+ "description": "Version of the browser"
+ },
+ "platform_version": {
+ "type": "string",
+ "description": "Version of the platform"
+ }
+ }
+ },
+ "referer": {
+ "type": "string",
+ "description": "Referrer URL"
+ },
+ "initiated_at": {
+ "type": "object",
+ "properties": {
+ "timestamp": {
+ "type": "string",
+ "description": "Timestamp when the conversation was initiated"
+ }
+ }
+ },
+ "browser_language": {
+ "type": "string",
+ "description": "Browser language setting"
+ },
+ "conversation_language": {
+ "type": "string",
+ "description": "Conversation language"
+ }
+ },
+ "description": "Additional attributes of the conversation"
+ },
+ "contact": {
+ "$ref": "#/components/schemas/contact_detail"
+ },
+ "agent_last_seen_at": {
+ "type": "string",
+ "description": "Timestamp when the agent last saw the conversation",
+ "nullable": true
+ },
+ "assignee_last_seen_at": {
+ "type": "string",
+ "description": "Timestamp when the assignee last saw the conversation",
+ "nullable": true
+ }
+ }
+ },
+ "conversation_messages": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/conversation_meta"
+ },
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message_detailed"
+ },
+ "description": "List of messages in the conversation"
+ }
+ }
+ },
+ "contact_meta": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "integer",
+ "description": "Total number of contacts"
+ },
+ "current_page": {
+ "type": "string",
+ "description": "Current page number"
+ }
+ }
+ },
+ "contact_inbox": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Source identifier for the contact inbox"
+ },
+ "inbox": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the inbox"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "URL for the inbox avatar"
+ },
+ "channel_id": {
+ "type": "integer",
+ "description": "ID of the channel"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the inbox"
+ },
+ "channel_type": {
+ "type": "string",
+ "description": "Type of channel"
+ },
+ "provider": {
+ "type": "string",
+ "description": "Provider of the inbox",
+ "nullable": true
+ }
+ }
+ }
+ }
+ },
+ "contact_list_item": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact",
+ "properties": {
+ "city": {
+ "type": "string",
+ "description": "City of the contact"
+ },
+ "country": {
+ "type": "string",
+ "description": "Country of the contact"
+ },
+ "country_code": {
+ "type": "string",
+ "description": "Country code of the contact"
+ },
+ "created_at_ip": {
+ "type": "string",
+ "description": "IP address when the contact was created"
+ }
+ }
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "Availability status of the contact",
+ "enum": [
+ "online",
+ "offline"
+ ]
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact",
+ "nullable": true
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact",
+ "nullable": true
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact",
+ "nullable": true
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact"
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "Timestamp of last activity",
+ "nullable": true
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "Timestamp when contact was created"
+ },
+ "contact_inboxes": {
+ "type": "array",
+ "description": "List of inboxes associated with this contact",
+ "items": {
+ "$ref": "#/components/schemas/contact_inbox"
+ }
+ }
+ }
+ },
+ "contacts_list_response": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/contact_meta"
+ },
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_list_item"
+ },
+ "description": "List of contacts"
+ }
+ }
+ },
+ "contact_show_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "$ref": "#/components/schemas/contact_list_item"
+ }
+ }
+ },
+ "contact_conversation_message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "Content of the message"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account"
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "integer",
+ "description": "ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "description": "Type of the message"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "Timestamp when message was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "Formatted datetime when message was updated"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "Whether the message is private"
+ },
+ "status": {
+ "type": "string",
+ "description": "Status of the message"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "Source ID of the message",
+ "nullable": true
+ },
+ "content_type": {
+ "type": "string",
+ "description": "Type of the content"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "Attributes of the content"
+ },
+ "sender_type": {
+ "type": "string",
+ "description": "Type of the sender",
+ "nullable": true
+ },
+ "sender_id": {
+ "type": "integer",
+ "description": "ID of the sender",
+ "nullable": true
+ },
+ "external_source_ids": {
+ "type": "object",
+ "description": "External source IDs"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "Additional attributes of the message"
+ },
+ "processed_message_content": {
+ "type": "string",
+ "description": "Processed message content",
+ "nullable": true
+ },
+ "sentiment": {
+ "type": "object",
+ "description": "Sentiment analysis of the message"
+ },
+ "conversation": {
+ "type": "object",
+ "description": "Conversation details",
+ "properties": {
+ "assignee_id": {
+ "type": "integer",
+ "description": "ID of the assignee",
+ "nullable": true
+ },
+ "unread_count": {
+ "type": "integer",
+ "description": "Count of unread messages"
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "Timestamp of last activity"
+ },
+ "contact_inbox": {
+ "type": "object",
+ "description": "Contact inbox details",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Source ID of the contact inbox"
+ }
+ }
+ }
+ }
+ },
+ "sender": {
+ "type": "object",
+ "description": "Details of the sender",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the sender"
+ },
+ "available_name": {
+ "type": "string",
+ "description": "Available name of the sender"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "URL of the sender's avatar"
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "Availability status of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Thumbnail URL of the sender"
+ }
+ }
+ }
+ }
+ },
+ "contact_conversations_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "description": "List of conversations for the contact"
+ }
+ }
+ },
+ "contactable_inboxes_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_inbox"
+ },
+ "description": "List of contactable inboxes for the contact"
+ }
+ }
+ }
+ },
+ "parameters": {
+ "account_id": {
+ "in": "path",
+ "name": "account_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the account"
+ },
+ "agent_bot_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agentbot to be updated"
+ },
+ "team_id": {
+ "in": "path",
+ "name": "team_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the team to be updated"
+ },
+ "inbox_id": {
+ "in": "path",
+ "name": "inbox_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the Inbox"
+ },
+ "hook_id": {
+ "in": "path",
+ "name": "hook_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the integration hook"
+ },
+ "source_id": {
+ "in": "path",
+ "name": "source_id",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Id of the session for which the conversation is created.\n\n\n\n Source Ids can be obtained through contactable inboxes API or via generated.
Website: Chatwoot generated string which can be obtained from webhook events.
Phone Channels(Twilio): Phone number in e164 format
Email Channels: Contact Email address
API Channel: Any Random String"
+ },
+ "contact_sort_param": {
+ "in": "query",
+ "name": "sort",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "name",
+ "email",
+ "phone_number",
+ "last_activity_at",
+ "-name",
+ "-email",
+ "-phone_number",
+ "-last_activity_at"
+ ]
+ },
+ "required": false,
+ "description": "The attribute by which list should be sorted"
+ },
+ "conversation_id": {
+ "in": "path",
+ "name": "conversation_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the conversation"
+ },
+ "conversation_uuid": {
+ "in": "path",
+ "name": "conversation_uuid",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The uuid of the conversation"
+ },
+ "custom_filter_id": {
+ "in": "path",
+ "name": "custom_filter_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the custom filter"
+ },
+ "webhook_id": {
+ "in": "path",
+ "name": "webhook_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the webhook"
+ },
+ "message_id": {
+ "in": "path",
+ "name": "message_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the message"
+ },
+ "page": {
+ "in": "query",
+ "name": "page",
+ "schema": {
+ "type": "integer",
+ "default": 1
+ },
+ "required": false,
+ "description": "The page parameter"
+ },
+ "platform_user_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the user on the platform"
+ },
+ "report_type": {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "account",
+ "agent",
+ "inbox",
+ "label",
+ "team"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ },
+ "report_metric": {
+ "in": "query",
+ "name": "metric",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "conversations_count",
+ "incoming_messages_count",
+ "outgoing_messages_count",
+ "avg_first_response_time",
+ "avg_resolution_time",
+ "resolutions_count"
+ ]
+ },
+ "required": true,
+ "description": "The type of metric"
+ },
+ "public_inbox_identifier": {
+ "in": "path",
+ "name": "inbox_identifier",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The identifier obtained from API inbox channel"
+ },
+ "public_contact_identifier": {
+ "in": "path",
+ "name": "contact_identifier",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The source id of contact obtained on contact create"
+ },
+ "portal_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The slug identifier of the portal"
+ }
+ },
+ "securitySchemes": {
+ "userApiKey": {
+ "type": "apiKey",
+ "in": "header",
+ "name": "api_access_token",
+ "description": "This token can be obtained by visiting the profile page or via rails console. Provides access to endpoints based on the user permissions levels."
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/swagger/tag_groups/client.yml b/swagger/tag_groups/client.yml
new file mode 100644
index 000000000..fdd177b97
--- /dev/null
+++ b/swagger/tag_groups/client.yml
@@ -0,0 +1,33 @@
+openapi: '3.0.4'
+info:
+ title: Chatwoot - Client API
+ description: Client API endpoints for Chatwoot
+ version: 1.1.0
+ termsOfService: https://www.chatwoot.com/terms-of-service/
+ contact:
+ email: hello@chatwoot.com
+ license:
+ name: MIT License
+ url: https://opensource.org/licenses/MIT
+servers:
+ - url: https://app.chatwoot.com/
+tags:
+ - name: Contacts API
+ description: APIs for managing contacts from client applications
+ - name: Conversations API
+ description: APIs for managing conversations from client applications
+ - name: Messages API
+ description: APIs for managing messages from client applications
+paths:
+ $ref: ../paths/index.yml
+components:
+ schemas:
+ $ref: ../definitions/index.yml
+ parameters:
+ $ref: ../parameters/index.yml
+ securitySchemes:
+ userApiKey:
+ type: apiKey
+ in: header
+ name: api_access_token
+ description: This token can be obtained by visiting the profile page or via rails console. Provides access to endpoints based on the user permissions levels.
\ No newline at end of file
diff --git a/swagger/tag_groups/client_swagger.json b/swagger/tag_groups/client_swagger.json
new file mode 100644
index 000000000..910b0d42e
--- /dev/null
+++ b/swagger/tag_groups/client_swagger.json
@@ -0,0 +1,11927 @@
+{
+ "openapi": "3.0.4",
+ "info": {
+ "title": "Chatwoot - Client API",
+ "description": "Client API endpoints for Chatwoot",
+ "version": "1.1.0",
+ "termsOfService": "https://www.chatwoot.com/terms-of-service/",
+ "contact": {
+ "email": "hello@chatwoot.com"
+ },
+ "license": {
+ "name": "MIT License",
+ "url": "https://opensource.org/licenses/MIT"
+ }
+ },
+ "servers": [
+ {
+ "url": "https://app.chatwoot.com/"
+ }
+ ],
+ "tags": [
+ {
+ "name": "Contacts API",
+ "description": "APIs for managing contacts from client applications"
+ },
+ {
+ "name": "Conversations API",
+ "description": "APIs for managing conversations from client applications"
+ },
+ {
+ "name": "Messages API",
+ "description": "APIs for managing messages from client applications"
+ }
+ ],
+ "paths": {
+ "/platform/api/v1/accounts": {
+ "post": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "create-an-account",
+ "summary": "Create an Account",
+ "description": "Create an Account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/accounts/{account_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "get-details-of-an-account",
+ "summary": "Get an account details",
+ "description": "Get the details of an account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "update-an-account",
+ "summary": "Update an account",
+ "description": "Update an account's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "delete-an-account",
+ "summary": "Delete an Account",
+ "description": "Delete an Account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/accounts/{account_id}/account_users": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "list-all-account-users",
+ "summary": "List all Account Users",
+ "description": "List all account users",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "create-an-account-user",
+ "summary": "Create an Account User",
+ "description": "Create an Account User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "account_id": {
+ "type": "integer",
+ "description": "The ID of the account"
+ },
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user"
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "delete-an-account-user",
+ "summary": "Delete an Account User",
+ "description": "Delete an Account User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/agent_bots": {
+ "get": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "list-all-agent-bots",
+ "summary": "List all AgentBots",
+ "description": "List all agent bots available",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent bots",
+ "items": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "create-an-agent-bot",
+ "summary": "Create an Agent Bot",
+ "description": "Create an agent bot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/agent_bots/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/agent_bot_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "get-details-of-a-single-agent-bot",
+ "summary": "Get an agent bot details",
+ "description": "Get the details of an agent bot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given agent bot ID does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "update-an-agent-bot",
+ "summary": "Update an agent bot",
+ "description": "Update an agent bot's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "delete-an-agent-bot",
+ "summary": "Delete an AgentBot",
+ "description": "Delete an AgentBot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The agent bot does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users": {
+ "post": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "create-a-user",
+ "summary": "Create a User",
+ "description": "Create a User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/platform_user_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "get-details-of-a-user",
+ "summary": "Get an user details",
+ "description": "Get the details of an user",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "update-a-user",
+ "summary": "Update a user",
+ "description": "Update a user's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "delete-a-user",
+ "summary": "Delete a User",
+ "description": "Delete a User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users/{id}/login": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/platform_user_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "get-sso-url-of-a-user",
+ "summary": "Get User SSO Link",
+ "description": "Get the sso link of a user",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "SSO url to autenticate the user"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Inbox API"
+ ],
+ "operationId": "get-details-of-a-inbox",
+ "summary": "Inbox details",
+ "description": "Get the details of an inbox",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_inbox"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given inbox does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "create-a-contact",
+ "summary": "Create a contact",
+ "description": "Create a contact",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "get-details-of-a-contact",
+ "summary": "Get a contact",
+ "description": "Get the details of a contact",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given contact does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "update-a-contact",
+ "summary": "Update a contact",
+ "description": "Update a contact's attributes",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "create-a-conversation",
+ "summary": "Create a conversation",
+ "description": "Create a conversation",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "list-all-contact-conversations",
+ "summary": "List all conversations",
+ "description": "List all conversations for the contact",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of conversations",
+ "items": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "get-single-conversation",
+ "summary": "Get a single conversation",
+ "description": "Retrieves the details of a specific conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/toggle_status": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "resolve-conversation",
+ "summary": "Resolve a conversation",
+ "description": "Marks a conversation as resolved",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Conversation resolved successfully",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/toggle_typing": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "toggle-typing-status",
+ "summary": "Toggle typing status",
+ "description": "Toggles the typing status in a conversation",
+ "security": [
+
+ ],
+ "parameters": [
+ {
+ "name": "typing_status",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Typing status, either 'on' or 'off'"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "typing_status": {
+ "type": "string",
+ "enum": [
+ "on",
+ "off"
+ ],
+ "description": "The typing status to set",
+ "example": "on"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Typing status toggled successfully"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/update_last_seen": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "update-last-seen",
+ "summary": "Update last seen",
+ "description": "Updates the last seen time of the contact in a conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Last seen updated successfully"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "create-a-message",
+ "summary": "Create a message",
+ "description": "Create a message",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "list-all-converation-messages",
+ "summary": "List all messages",
+ "description": "List all messages in the conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of messages",
+ "items": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/messages/{message_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ },
+ {
+ "$ref": "#/components/parameters/message_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "update-a-message",
+ "summary": "Update a message",
+ "description": "Update a message",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/survey/responses/{conversation_uuid}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/conversation_uuid"
+ }
+ ],
+ "get": {
+ "tags": [
+ "CSAT Survey Page"
+ ],
+ "operationId": "get-csat-survey-page",
+ "summary": "Get CSAT survey page",
+ "description": "You can redirect the client to this URL, instead of implementing the CSAT survey component yourself.",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agent_bots": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "list-all-account-agent-bots",
+ "summary": "List all AgentBots",
+ "description": "List all agent bots available for the current account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent bots",
+ "items": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "create-an-account-agent-bot",
+ "summary": "Create an Agent Bot",
+ "description": "Create an agent bot in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agent_bots/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/agent_bot_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "get-details-of-a-single-account-agent-bot",
+ "summary": "Get an agent bot details",
+ "description": "Get the details of an agent bot in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given agent bot ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "update-an-account-agent-bot",
+ "summary": "Update an agent bot",
+ "description": "Update an agent bot's attributes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "delete-an-account-agent-bot",
+ "summary": "Delete an AgentBot",
+ "description": "Delete an AgentBot from the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The agent bot does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agents": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "get-account-agents",
+ "summary": "List Agents in Account",
+ "description": "Get Details of Agents in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "add-new-agent-to-account",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agents/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "update-agent-in-account",
+ "summary": "Update Agent in Account",
+ "description": "Update an Agent in Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agent to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "delete-agent-from-account",
+ "summary": "Remove an Agent from Account",
+ "description": "Remove an Agent from Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agent to be deleted."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/canned_responses": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "get-account-canned-response",
+ "summary": "List all Canned Responses in an Account",
+ "description": "Get Details of Canned Responses in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all canned responses",
+ "items": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "add-new-canned-response-to-account",
+ "summary": "Add a New Canned Response",
+ "description": "Add a new Canned Response to Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/canned_responses/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "update-canned-response-in-account",
+ "summary": "Update Canned Response in Account",
+ "description": "Update a Canned Response in Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the canned response to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "delete-canned-response-from-account",
+ "summary": "Remove a Canned Response from Account",
+ "description": "Remove a Canned Response from Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the canned response to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Canned Response not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_attribute_definitions": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "get-account-custom-attribute",
+ "summary": "List all custom attributes in an account",
+ "parameters": [
+ {
+ "name": "attribute_model",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "0",
+ "1"
+ ]
+ },
+ "description": "conversation_attribute(0)/contact_attribute(1)",
+ "required": true
+ }
+ ],
+ "description": "Get details of custom attributes in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all custom attributes",
+ "items": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "add-new-custom-attribute-to-account",
+ "summary": "Add a new custom attribute",
+ "description": "Add a new custom attribute to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_attribute_definitions/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the custom attribute",
+ "required": true
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "get-details-of-a-single-custom-attribute",
+ "summary": "Get a custom attribute details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of a custom attribute in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be updated."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given attribute ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "update-custom-attribute-in-account",
+ "summary": "Update custom attribute in Account",
+ "description": "Update a custom attribute in account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "delete-custom-attribute-from-account",
+ "summary": "Remove a custom attribute from account",
+ "description": "Remove a custom attribute from account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Custom attribute not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts": {
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactList",
+ "description": "Listing all the resolved contacts with pagination (Page size = 15). Resolved contacts are the ones with a value for identifier, email or phone number",
+ "summary": "List Contacts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/contact_sort_param"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactCreate",
+ "description": "Create a new Contact",
+ "summary": "Create Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/extended_contact"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactDetails",
+ "summary": "Show Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get a contact belonging to the account using ID",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_show_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactUpdate",
+ "summary": "Update Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a contact belonging to the account using ID",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "204": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_base"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactDelete",
+ "summary": "Delete Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a contact belonging to the account using ID",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactConversations",
+ "summary": "Contact Conversations",
+ "description": "Get conversations associated with that contact",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_conversations_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/labels": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "list-all-labels-of-a-contact",
+ "summary": "List Labels",
+ "description": "Lists all the labels of a contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_labels"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contact-add-labels",
+ "summary": "Add Labels",
+ "description": "Add labels to a contact. Note that this API would overwrite the existing list of labels associated to the conversation.",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "labels"
+ ],
+ "properties": {
+ "labels": {
+ "type": "array",
+ "description": "Array of labels (comma-separated strings)",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "support",
+ "billing"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_labels"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/search": {
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactSearch",
+ "description": "Search the resolved contacts using a search key, currently supports email search (Page size = 15). Resolved contacts are the ones with a value for identifier, email or phone number",
+ "summary": "Search Contacts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Search using contact `name`, `identifier`, `email` or `phone number`"
+ },
+ {
+ "$ref": "#/components/parameters/contact_sort_param"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/filter": {
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactFilter",
+ "description": "Filter contacts with custom filter options and pagination",
+ "summary": "Contact Filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "attribute_key": {
+ "type": "string",
+ "description": "filter attribute name"
+ },
+ "filter_operator": {
+ "type": "string",
+ "description": "filter operator name",
+ "enum": [
+ "equal_to",
+ "not_equal_to",
+ "contains",
+ "does_not_contain"
+ ]
+ },
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "array of the attribute values to filter"
+ },
+ "query_operator": {
+ "type": "string",
+ "description": "query operator name",
+ "enum": [
+ "AND",
+ "OR"
+ ]
+ }
+ }
+ },
+ "example": [
+ {
+ "attribute_key": "name",
+ "filter_operator": "equal_to",
+ "values": [
+ "en"
+ ],
+ "query_operator": "AND"
+ },
+ {
+ "attribute_key": "country_code",
+ "filter_operator": "equal_to",
+ "values": [
+ "us"
+ ],
+ "query_operator": null
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/contact_inboxes": {
+ "post": {
+ "tags": [
+ "Contact"
+ ],
+ "operationId": "contactInboxCreation",
+ "description": "Create a contact inbox record for an inbox",
+ "summary": "Create contact inbox",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact",
+ "required": true
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_inboxes"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "Incorrect payload",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/contactable_inboxes": {
+ "get": {
+ "tags": [
+ "Contact"
+ ],
+ "operationId": "contactableInboxesGet",
+ "description": "Get List of contactable Inboxes",
+ "summary": "Get Contactable Inboxes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contactable_inboxes_response"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "Incorrect payload",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/automation_rules": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "get-account-automation-rule",
+ "summary": "List all automation rules in an account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "description": "Get details of automation rules in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "add-new-automation-rule-to-account",
+ "summary": "Add a new automation rule",
+ "description": "Add a new automation rule to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/automation_rules/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the Automation Rule",
+ "required": true
+ }
+ ],
+ "get": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "get-details-of-a-single-automation-rule",
+ "summary": "Get a automation rule details",
+ "description": "Get the details of a automation rule in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be updated."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ },
+ "example": {
+ "payload": {
+ "id": 90,
+ "account_id": 1,
+ "name": "add-label-bug-if-message-contains-bug",
+ "description": "add-label-bug-if-message-contains-bug",
+ "event_name": "message_created",
+ "conditions": [
+ {
+ "values": [
+ "incoming"
+ ],
+ "attribute_key": "message_type",
+ "query_operator": "and",
+ "filter_operator": "equal_to"
+ },
+ {
+ "values": [
+ "bug"
+ ],
+ "attribute_key": "content",
+ "filter_operator": "contains"
+ }
+ ],
+ "actions": [
+ {
+ "action_name": "add_label",
+ "action_params": [
+ "bugs",
+ "support-query"
+ ]
+ }
+ ],
+ "created_on": 1650555440,
+ "active": true
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given rule ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "update-automation-rule-in-account",
+ "summary": "Update automation rule in Account",
+ "description": "Update a automation rule in account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Rule not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "delete-automation-rule-from-account",
+ "summary": "Remove a automation rule from account",
+ "description": "Remove a automation rule from account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "automation rule not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-portal-to-account",
+ "summary": "Add a new portal",
+ "description": "Add a new portal to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "get-portal",
+ "summary": "List all portals in an account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "description": "Get details of portals in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal"
+ },
+ "example": {
+ "payload": [
+ {
+ "id": 4,
+ "color": "#1F93FF",
+ "custom_domain": "chatwoot.help",
+ "header_text": "Handbook",
+ "homepage_link": "https://www.chatwoot.com",
+ "name": "Handbook",
+ "page_title": "Handbook",
+ "slug": "handbook",
+ "archived": false,
+ "account_id": 1,
+ "config": {
+ "allowed_locales": [
+ {
+ "code": "en",
+ "articles_count": 32,
+ "categories_count": 9
+ }
+ ]
+ },
+ "inbox": {
+ "id": 37,
+ "avatar_url": "https://example.com/avatar.png",
+ "channel_id": 1,
+ "name": "Chatwoot",
+ "channel_type": "Channel::WebWidget",
+ "greeting_enabled": true,
+ "widget_color": "#1F93FF",
+ "website_url": "chatwoot.com"
+ },
+ "logo": {
+ "id": 19399916,
+ "portal_id": 4,
+ "file_type": "image/png",
+ "account_id": 1,
+ "file_url": "https://example.com/logo.png",
+ "blob_id": 21239614,
+ "filename": "square.png"
+ },
+ "meta": {
+ "all_articles_count": 0,
+ "categories_count": 9,
+ "default_locale": "en"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "update-portal-to-account",
+ "summary": "Update a portal",
+ "description": "Update a portal to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_single"
+ },
+ "example": {
+ "payload": {
+ "id": 123,
+ "archived": false,
+ "color": "#1F93FF",
+ "config": {
+ "allowed_locales": [
+ {
+ "code": "en",
+ "articles_count": 32,
+ "categories_count": 9
+ }
+ ]
+ },
+ "custom_domain": "chatwoot.help",
+ "header_text": "Handbook",
+ "homepage_link": "https://www.chatwoot.com",
+ "name": "Handbook",
+ "slug": "handbook",
+ "page_title": "Handbook",
+ "account_id": 123,
+ "inbox": {
+ "id": 123,
+ "name": "Chatwoot",
+ "website_url": "chatwoot.com",
+ "channel_type": "Channel::WebWidget",
+ "avatar_url": "https://example.com/avatar.png",
+ "widget_color": "#1F93FF",
+ "website_token": "4cWzuf9i9jxN9tbnv8K9STKU",
+ "enable_auto_assignment": true,
+ "web_widget_script": "",
+ "welcome_title": "Hi there ! 🙌🏼",
+ "welcome_tagline": "We make it simple to connect with us.",
+ "greeting_enabled": true,
+ "greeting_message": "Hey there 👋, Thank you for reaching out to us.",
+ "channel_id": 123,
+ "working_hours_enabled": true,
+ "enable_email_collect": true,
+ "csat_survey_enabled": true,
+ "timezone": "America/Los_Angeles",
+ "business_name": "Chatwoot",
+ "hmac_mandatory": true
+ },
+ "logo": {
+ "id": 123,
+ "portal_id": 123,
+ "file_type": "image/png",
+ "account_id": 123,
+ "file_url": "https://example.com/logo.png",
+ "blob_id": 123,
+ "filename": "square.png"
+ },
+ "meta": {
+ "all_articles_count": 32,
+ "categories_count": 9,
+ "default_locale": "en"
+ }
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Portal not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}/categories": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-category-to-account",
+ "summary": "Add a new category",
+ "description": "Add a new category to portal",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/category_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/category"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}/articles": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-article-to-account",
+ "summary": "Add a new article",
+ "description": "Add a new article to portal",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/article_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/article"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/meta": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationListMeta",
+ "description": "Get open, unassigned and all Conversation counts",
+ "summary": "Get Conversation Counts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "status",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "all",
+ "open",
+ "resolved",
+ "pending",
+ "snoozed"
+ ],
+ "default": "open"
+ },
+ "description": "Filter by conversation status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filters conversations with messages containing the search term"
+ },
+ {
+ "name": "inbox_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "team_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "labels",
+ "in": "query",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "mine_count": {
+ "type": "number"
+ },
+ "unassigned_count": {
+ "type": "number"
+ },
+ "assigned_count": {
+ "type": "number"
+ },
+ "all_count": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationList",
+ "description": "List all the conversations with pagination",
+ "summary": "Conversations List",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "assignee_type",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "me",
+ "unassigned",
+ "all",
+ "assigned"
+ ],
+ "default": "all"
+ },
+ "description": "Filter conversations by assignee type."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "all",
+ "open",
+ "resolved",
+ "pending",
+ "snoozed"
+ ],
+ "default": "open"
+ },
+ "description": "Filter by conversation status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filters conversations with messages containing the search term"
+ },
+ {
+ "name": "inbox_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "team_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "labels",
+ "in": "query",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "integer",
+ "default": 1
+ },
+ "description": "paginate through conversations"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_list"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "newConversation",
+ "summary": "Create New Conversation",
+ "description": "Creating a conversation in chatwoot requires a source id. \n\n Learn more about source_id: https://www.chatwoot.com/hc/user-guide/articles/1677839703-how-to-create-an-api-channel-inbox#send-messages-to-the-api-channel",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the conversation"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account Id"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ }
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/filter": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationFilter",
+ "description": "Filter conversations with custom filter options and pagination",
+ "summary": "Conversations Filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "attribute_key": {
+ "type": "string",
+ "description": "filter attribute name"
+ },
+ "filter_operator": {
+ "type": "string",
+ "description": "filter operator name",
+ "enum": [
+ "equal_to",
+ "not_equal_to",
+ "contains",
+ "does_not_contain"
+ ]
+ },
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "array of the attribute values to filter"
+ },
+ "query_operator": {
+ "type": "string",
+ "description": "query operator name",
+ "enum": [
+ "AND",
+ "OR"
+ ]
+ }
+ }
+ },
+ "example": [
+ {
+ "attribute_key": "browser_language",
+ "filter_operator": "not_equal_to",
+ "values": [
+ "en"
+ ],
+ "query_operator": "AND"
+ },
+ {
+ "attribute_key": "status",
+ "filter_operator": "equal_to",
+ "values": [
+ "pending"
+ ],
+ "query_operator": null
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_list"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "get-details-of-a-conversation",
+ "summary": "Conversation Details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get all details regarding a conversation with all messages in the conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_show"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "update-conversation",
+ "summary": "Update Conversation",
+ "description": "Update Conversation Attributes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "priority": {
+ "type": "string",
+ "enum": [
+ "urgent",
+ "high",
+ "medium",
+ "low",
+ "none"
+ ],
+ "description": "The priority of the conversation",
+ "example": "high"
+ },
+ "sla_policy_id": {
+ "type": "number",
+ "description": "The ID of the SLA policy (Available only in Enterprise edition)",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/toggle_status": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "toggle-status-of-a-conversation",
+ "summary": "Toggle Status",
+ "description": "Toggles the status of the conversation between open and resolved",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "status"
+ ],
+ "properties": {
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "The status of the conversation",
+ "example": "open"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_status_toggle"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/toggle_priority": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "toggle-priority-of-a-conversation",
+ "summary": "Toggle Priority",
+ "description": "Toggles the priority of conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "priority"
+ ],
+ "properties": {
+ "priority": {
+ "type": "string",
+ "enum": [
+ "urgent",
+ "high",
+ "medium",
+ "low",
+ "none"
+ ],
+ "description": "The priority of the conversation",
+ "example": "high"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/custom_attributes": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "update-custom-attributes-of-a-conversation",
+ "summary": "Update Custom Attributes",
+ "description": "Updates the custom attributes of a conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "custom_attributes"
+ ],
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes to be set for the conversation",
+ "example": {
+ "order_id": "12345",
+ "previous_conversation": "67890"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the conversation"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/assignments": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "assign-a-conversation",
+ "summary": "Assign Conversation",
+ "description": "Assign a conversation to an agent or a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "assignee_id": {
+ "type": "number",
+ "description": "Id of the assignee user",
+ "example": 1
+ },
+ "team_id": {
+ "type": "number",
+ "description": "Id of the team. If the assignee_id is present, this param would be ignored",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/labels": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "list-all-labels-of-a-conversation",
+ "summary": "List Labels",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Lists all the labels of a conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_labels"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversation-add-labels",
+ "summary": "Add Labels",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Add labels to a conversation. Note that this API would overwrite the existing list of labels associated to the conversation.",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "labels"
+ ],
+ "properties": {
+ "labels": {
+ "type": "array",
+ "description": "Array of labels (comma-separated strings)",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "support",
+ "billing"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_labels"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "listAllInboxes",
+ "summary": "List all inboxes",
+ "description": "List all inboxes available in the current account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of inboxes",
+ "items": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "GetInbox",
+ "summary": "Get an inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get an inbox available in the current account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/": {
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "inboxCreation",
+ "summary": "Create an inbox",
+ "description": "You can create more than one website inbox in each account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}": {
+ "patch": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "updateInbox",
+ "summary": "Update Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update an existing inbox",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/agent_bot": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "getInboxAgentBot",
+ "summary": "Show Inbox Agent Bot",
+ "description": "See if an agent bot is associated to the Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found, Agent bot not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/set_agent_bot": {
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "updateAgentBot",
+ "summary": "Add or remove agent bot",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "To add an agent bot pass agent_bot id, to remove agent bot from an inbox pass null",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "agent_bot"
+ ],
+ "properties": {
+ "agent_bot": {
+ "type": "number",
+ "description": "Agent bot ID",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "204": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Inbox not found, Agent bot not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inbox_members/{inbox_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/inbox_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "get-inbox-members",
+ "summary": "List Agents in Inbox",
+ "description": "Get Details of Agents in an Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/inbox_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inbox_members": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "add-new-agent-to-inbox",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "integer",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the inbox",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "update-agents-in-inbox",
+ "summary": "Update Agents in Inbox",
+ "description": "All agents except the one passed in params will be removed",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "string",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the inbox",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "delete-agent-in-inbox",
+ "summary": "Remove an Agent from Inbox",
+ "description": "Remove an Agent from Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "string",
+ "description": "The ID of the inbox"
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be deleted from the inbox"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "list-all-messages",
+ "summary": "Get messages",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all messages of a conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "additional_attributes": {
+ "type": "object"
+ },
+ "contact": {
+ "$ref": "#/components/schemas/contact"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/agent"
+ },
+ "agent_last_seen_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "assignee_last_seen_at": {
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "payload": {
+ "type": "array",
+ "description": "Array of messages",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "create-a-new-message-in-a-conversation",
+ "summary": "Create New Message",
+ "description": "Create a new message in the conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_message_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/message"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages/{message_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ },
+ {
+ "$ref": "#/components/parameters/message_id"
+ }
+ ],
+ "delete": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "delete-a-message",
+ "summary": "Delete a message",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a message and it's attachments from the conversation.",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The message or conversation does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/apps": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "get-details-of-all-integrations",
+ "summary": "List all the Integrations",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of all Integrations available for the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of Integration apps",
+ "items": {
+ "$ref": "#/components/schemas/integrations_app"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Url not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/hooks": {
+ "post": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "create-an-integration-hook",
+ "summary": "Create an integration hook",
+ "description": "Create an integration hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/hooks/{hook_id}": {
+ "patch": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "update-an-integrations-hook",
+ "summary": "Update an Integration Hook",
+ "description": "Update an Integration Hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/hook_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "delete-an-integration-hook",
+ "summary": "Delete an Integration Hook",
+ "description": "Delete an Integration Hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/hook_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The hook does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/profile": {
+ "get": {
+ "tags": [
+ "Profile"
+ ],
+ "operationId": "fetchProfile",
+ "summary": "Fetch user profile",
+ "description": "Get the user profile details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "list-all-teams",
+ "summary": "List all teams",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all teams available in the current account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of teams",
+ "items": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "create-a-team",
+ "summary": "Create a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Create a team in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams/{team_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "get-details-of-a-single-team",
+ "summary": "Get a team details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of a team in the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given team ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "update-a-team",
+ "summary": "Update a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a team's attributes",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "delete-a-team",
+ "summary": "Delete a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a team from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The team does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams/{team_id}/team_members": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "get-team-members",
+ "summary": "List Agents in Team",
+ "description": "Get Details of Agents in an Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all agents in the team",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "add-new-agent-to-team",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the team",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "update-agents-in-team",
+ "summary": "Update Agents in Team",
+ "description": "All agents except the one passed in params will be removed",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the team",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all agents in the team",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "delete-agent-in-team",
+ "summary": "Remove an Agent from Team",
+ "description": "Remove an Agent from Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be deleted from the team"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_filters": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "filter_type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ]
+ },
+ "required": false,
+ "description": "The type of custom filter"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "list-all-filters",
+ "summary": "List all custom filters",
+ "description": "List all custom filters in a category of a user",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of custom filters",
+ "items": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "create-a-custom-filter",
+ "summary": "Create a custom filter",
+ "description": "Create a custom filter in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_filters/{custom_filter_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/custom_filter_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "get-details-of-a-single-custom-filter",
+ "summary": "Get a custom filter details",
+ "description": "Get the details of a custom filter in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given team ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "update-a-custom-filter",
+ "summary": "Update a custom filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a custom filter's attributes",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "delete-a-custom-filter",
+ "summary": "Delete a custom filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a custom filter from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The custom filter does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/webhooks": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "list-all-webhooks",
+ "summary": "List all webhooks",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all webhooks in the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of webhook objects",
+ "items": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "create-a-webhook",
+ "summary": "Add a webhook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Add a webhook subscription to the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/webhooks/{webhook_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/webhook_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "update-a-webhook",
+ "summary": "Update a webhook object",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a webhook object in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "delete-a-webhook",
+ "summary": "Delete a webhook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a webhook from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The webhook does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/report_metric"
+ },
+ {
+ "$ref": "#/components/parameters/report_type"
+ },
+ {
+ "in": "query",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The Id of specific object in case of agent/inbox/label"
+ },
+ {
+ "in": "query",
+ "name": "since",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should start."
+ },
+ {
+ "in": "query",
+ "name": "until",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should stop."
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "list-all-conversation-statistics",
+ "summary": "Get Account reports",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get Account reports for a specific type, metric and date range",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of date based conversation statistics",
+ "items": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/summary": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/report_type"
+ },
+ {
+ "in": "query",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The Id of specific object in case of agent/inbox/label"
+ },
+ {
+ "in": "query",
+ "name": "since",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should start."
+ },
+ {
+ "in": "query",
+ "name": "until",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should stop."
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "list-all-conversation-statistics-summary",
+ "summary": "Get Account reports summary",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get Account reports summary for a specific type and date range",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_summary"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "account"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "get-account-conversation-metrics",
+ "summary": "Account Conversation Metrics",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get conversation metrics for Account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "description": "Object of account conversation metrics",
+ "properties": {
+ "open": {
+ "type": "number"
+ },
+ "unattended": {
+ "type": "number"
+ },
+ "unassigned": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/conversations/": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "agent"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ },
+ {
+ "in": "query",
+ "name": "user_id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The numeric ID of the user"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "get-agent-conversation-metrics",
+ "summary": "Agent Conversation Metrics",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get conversation metrics for Agent",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent based conversation metrics",
+ "items": {
+ "$ref": "#/components/schemas/agent_conversation_metrics"
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/accounts/{account_id}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "conversation_id",
+ "in": "path",
+ "description": "ID of the conversation",
+ "required": true,
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversation"
+ ],
+ "summary": "Get messages from a conversation",
+ "description": "Returns all messages from a specific conversation",
+ "operationId": "getConversationMessages",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_messages"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "bad_request_error": {
+ "title": "data",
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/request_error"
+ }
+ }
+ }
+ },
+ "request_error": {
+ "type": "object",
+ "properties": {
+ "field": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "code": {
+ "type": "string"
+ }
+ }
+ },
+ "generic_id": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ }
+ }
+ },
+ "canned_response": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the canned response"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "Account Id"
+ },
+ "short_code": {
+ "type": "string",
+ "description": "Short Code for quick access of the canned response"
+ },
+ "content": {
+ "type": "string",
+ "description": "Message content for canned response"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "The date and time when the canned response was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "The date and time when the canned response was updated"
+ }
+ }
+ },
+ "custom_attribute": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Identifier"
+ },
+ "attribute_display_name": {
+ "type": "string",
+ "description": "Attribute display name"
+ },
+ "attribute_display_type": {
+ "type": "string",
+ "description": "Attribute display type (text, number, currency, percent, link, date, list, checkbox)"
+ },
+ "attribute_description": {
+ "type": "string",
+ "description": "Attribute description"
+ },
+ "attribute_key": {
+ "type": "string",
+ "description": "Attribute unique key value"
+ },
+ "regex_pattern": {
+ "type": "string",
+ "description": "Regex pattern"
+ },
+ "regex_cue": {
+ "type": "string",
+ "description": "Regex cue"
+ },
+ "attribute_values": {
+ "type": "string",
+ "description": "Attribute values"
+ },
+ "attribute_model": {
+ "type": "string",
+ "description": "Attribute type(conversation_attribute/contact_attribute)"
+ },
+ "default_value": {
+ "type": "string",
+ "description": "Attribute default value"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "The date and time when the custom attribute was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "The date and time when the custom attribute was updated"
+ }
+ }
+ },
+ "automation_rule": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "description": "Response payload that contains automation rule(s)",
+ "oneOf": [
+ {
+ "type": "array",
+ "description": "Array of automation rules (for listing endpoint)",
+ "items": {
+ "$ref": "#/components/schemas/automation_rule_item"
+ }
+ },
+ {
+ "type": "object",
+ "description": "Single automation rule (for show/create/update endpoints)",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/automation_rule_item"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "automation_rule_item": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The ID of the automation rule"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "Account Id"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the rule",
+ "example": "Add label on message create event"
+ },
+ "description": {
+ "type": "string",
+ "description": "Description to give more context about the rule",
+ "example": "Add label support and sales on message create event if incoming message content contains text help"
+ },
+ "event_name": {
+ "type": "string",
+ "description": "Automation Rule event, on which we call the actions(conversation_created, conversation_updated, message_created)",
+ "enum": [
+ "conversation_created",
+ "conversation_updated",
+ "message_created"
+ ],
+ "example": "message_created"
+ },
+ "conditions": {
+ "type": "array",
+ "description": "Array of conditions on which conversation/message filter would work",
+ "items": {
+ "type": "object",
+ "properties": {
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "attribute_key": {
+ "type": "string"
+ },
+ "query_operator": {
+ "type": "string"
+ },
+ "filter_operator": {
+ "type": "string"
+ }
+ },
+ "example": {
+ "attribute_key": "content",
+ "filter_operator": "contains",
+ "values": [
+ "help"
+ ],
+ "query_operator": "and"
+ }
+ }
+ },
+ "actions": {
+ "type": "array",
+ "description": "Array of actions which we perform when condition matches",
+ "items": {
+ "type": "object",
+ "properties": {
+ "action_name": {
+ "type": "string"
+ },
+ "action_params": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "example": {
+ "action_name": "add_label",
+ "action_params": [
+ "support",
+ "sales"
+ ]
+ }
+ }
+ },
+ "created_on": {
+ "type": "integer",
+ "description": "The timestamp when the rule was created"
+ },
+ "active": {
+ "type": "boolean",
+ "description": "Enable/disable automation rule"
+ }
+ }
+ },
+ "portal": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/portal_item"
+ }
+ }
+ }
+ },
+ "portal_config": {
+ "type": "object",
+ "description": "Configuration settings for the portal",
+ "properties": {
+ "allowed_locales": {
+ "type": "array",
+ "description": "List of allowed locales for the portal",
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "description": "The language code"
+ },
+ "articles_count": {
+ "type": "integer",
+ "description": "Number of articles in this locale"
+ },
+ "categories_count": {
+ "type": "integer",
+ "description": "Number of categories in this locale"
+ }
+ }
+ }
+ }
+ }
+ },
+ "portal_logo": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the logo file"
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "ID of the portal this logo belongs to"
+ },
+ "file_type": {
+ "type": "string",
+ "description": "MIME type of the file"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account"
+ },
+ "file_url": {
+ "type": "string",
+ "description": "URL to access the logo file"
+ },
+ "blob_id": {
+ "type": "integer",
+ "description": "ID of the blob"
+ },
+ "filename": {
+ "type": "string",
+ "description": "Name of the file"
+ }
+ }
+ },
+ "portal_meta": {
+ "type": "object",
+ "properties": {
+ "all_articles_count": {
+ "type": "integer",
+ "description": "Total number of articles"
+ },
+ "archived_articles_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of archived articles"
+ },
+ "published_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of published articles"
+ },
+ "draft_articles_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of draft articles"
+ },
+ "categories_count": {
+ "type": "integer",
+ "description": "Number of categories"
+ },
+ "default_locale": {
+ "type": "string",
+ "description": "Default locale for the portal"
+ }
+ }
+ },
+ "portal_item": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The ID of the portal"
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Whether the portal is archived"
+ },
+ "color": {
+ "type": "string",
+ "description": "The color code for the portal"
+ },
+ "config": {
+ "$ref": "#/components/schemas/portal_config"
+ },
+ "custom_domain": {
+ "type": "string",
+ "description": "Custom domain for the portal"
+ },
+ "header_text": {
+ "type": "string",
+ "description": "The header text for the portal"
+ },
+ "homepage_link": {
+ "type": "string",
+ "description": "Homepage link for the portal"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the portal"
+ },
+ "slug": {
+ "type": "string",
+ "description": "URL slug for the portal"
+ },
+ "page_title": {
+ "type": "string",
+ "description": "Page title for the portal"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account the portal belongs to"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox"
+ },
+ "logo": {
+ "$ref": "#/components/schemas/portal_logo"
+ },
+ "meta": {
+ "$ref": "#/components/schemas/portal_meta"
+ }
+ }
+ },
+ "category": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string",
+ "description": "The text content."
+ },
+ "locale": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "slug": {
+ "type": "string"
+ },
+ "position": {
+ "type": "integer"
+ },
+ "portal_id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "associated_category_id": {
+ "type": "integer",
+ "description": "To associate similar categories to each other, e.g same category of product documentation in different languages"
+ },
+ "parent_category_id": {
+ "type": "integer",
+ "description": "To define parent category, e.g product documentation has multiple level features in sales category or in engineering category."
+ }
+ }
+ },
+ "article": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content."
+ },
+ "meta": {
+ "type": "object"
+ },
+ "position": {
+ "type": "integer"
+ },
+ "status": {
+ "type": "integer",
+ "enum": [
+ "draft",
+ "published",
+ "archived"
+ ]
+ },
+ "title": {
+ "type": "string"
+ },
+ "slug": {
+ "type": "string"
+ },
+ "views": {
+ "type": "integer"
+ },
+ "portal_id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "author_id": {
+ "type": "integer"
+ },
+ "category_id": {
+ "type": "integer"
+ },
+ "folder_id": {
+ "type": "integer"
+ },
+ "associated_article_id": {
+ "type": "integer",
+ "description": "To associate similar articles to each other, e.g to provide the link for the reference."
+ }
+ }
+ },
+ "contact": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact"
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact",
+ "example": {
+ "attribute_key": "attribute_value",
+ "signed_up_at": "dd/mm/yyyy"
+ }
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "The last activity at of the contact"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The created at of the contact"
+ },
+ "contact_inboxes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_inboxes"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the conversation"
+ },
+ "messages": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ }
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account Id"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "UUID of the conversation"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the conversation"
+ },
+ "agent_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the agent"
+ },
+ "assignee_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the assignee"
+ },
+ "can_reply": {
+ "type": "boolean",
+ "description": "Whether the conversation can be replied to"
+ },
+ "contact_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The object to save custom attributes for conversation, accepts custom attributes key and value"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ },
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The labels of the conversation"
+ },
+ "muted": {
+ "type": "boolean",
+ "description": "Whether the conversation is muted"
+ },
+ "snoozed_until": {
+ "type": "number",
+ "description": "The time at which the conversation will be unmuted"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "The status of the conversation"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The time at which conversation was created"
+ },
+ "updated_at": {
+ "type": "number",
+ "description": "The time at which conversation was updated"
+ },
+ "timestamp": {
+ "type": "string",
+ "description": "The time at which conversation was created"
+ },
+ "first_reply_created_at": {
+ "type": "number",
+ "description": "The time at which the first reply was created"
+ },
+ "unread_count": {
+ "type": "number",
+ "description": "The number of unread messages"
+ },
+ "last_non_activity_message": {
+ "$ref": "#/components/schemas/message"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the conversation"
+ },
+ "priority": {
+ "type": "string",
+ "description": "The priority of the conversation"
+ },
+ "waiting_since": {
+ "type": "number",
+ "description": "The time at which the conversation was waiting"
+ },
+ "sla_policy_id": {
+ "type": "number",
+ "description": "The ID of the SLA policy"
+ },
+ "applied_sla": {
+ "type": "object",
+ "description": "The applied SLA"
+ },
+ "sla_events": {
+ "type": "array"
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content of the message"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The ID of the account"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "number",
+ "description": "The ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "enum": [
+ 0,
+ 1,
+ 2
+ ],
+ "description": "The type of the message"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The time at which message was created"
+ },
+ "updated_at": {
+ "type": "integer",
+ "description": "The time at which message was updated"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "The flags which shows whether the message is private or not"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "sent",
+ "delivered",
+ "read",
+ "failed"
+ ],
+ "description": "The status of the message"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The source ID of the message"
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_select",
+ "cards",
+ "form"
+ ],
+ "description": "The type of the template message"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "The content attributes for each content_type"
+ },
+ "sender_type": {
+ "type": "string",
+ "enum": [
+ "contact",
+ "agent",
+ "agent_bot"
+ ],
+ "description": "The type of the sender"
+ },
+ "sender_id": {
+ "type": "number",
+ "description": "The ID of the sender"
+ },
+ "external_source_ids": {
+ "type": "object",
+ "description": "The external source IDs of the message"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the message"
+ },
+ "processed_message_content": {
+ "type": "string",
+ "description": "The processed message content"
+ },
+ "sentiment": {
+ "type": "object",
+ "description": "The sentiment of the message"
+ },
+ "conversation": {
+ "type": "object",
+ "description": "The conversation object"
+ },
+ "attachment": {
+ "type": "object",
+ "description": "The file object attached to the image"
+ },
+ "sender": {
+ "type": "object",
+ "description": "User/Agent/AgentBot object"
+ }
+ }
+ },
+ "user": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "access_token": {
+ "type": "string"
+ },
+ "account_id": {
+ "type": "number"
+ },
+ "available_name": {
+ "type": "string"
+ },
+ "avatar_url": {
+ "type": "string"
+ },
+ "confirmed": {
+ "type": "boolean"
+ },
+ "display_name": {
+ "type": "string",
+ "nullable": true
+ },
+ "message_signature": {
+ "type": "string",
+ "nullable": true
+ },
+ "email": {
+ "type": "string"
+ },
+ "hmac_identifier": {
+ "type": "string"
+ },
+ "inviter_id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "pubsub_token": {
+ "type": "string"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ]
+ },
+ "ui_settings": {
+ "type": "object"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "nullable": true
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Available for users who are created through platform APIs and has custom attributes associated."
+ },
+ "accounts": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "active_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "administrator",
+ "agent"
+ ]
+ },
+ "permissions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "availability": {
+ "type": "string"
+ },
+ "availability_status": {
+ "type": "string"
+ },
+ "auto_offline": {
+ "type": "boolean"
+ },
+ "custom_role_id": {
+ "type": "number",
+ "nullable": true
+ },
+ "custom_role": {
+ "type": "object",
+ "nullable": true
+ }
+ }
+ }
+ }
+ }
+ },
+ "agent": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability status of the agent computed by Chatwoot."
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away."
+ },
+ "confirmed": {
+ "type": "boolean",
+ "description": "Whether the agent has confirmed their email address."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the agent"
+ },
+ "available_name": {
+ "type": "string",
+ "description": "The available name of the agent"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the agent"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "The role of the agent"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the agent"
+ },
+ "custom_role_id": {
+ "type": "integer",
+ "description": "The custom role id of the agent"
+ }
+ }
+ },
+ "inbox": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox"
+ },
+ "website_url": {
+ "type": "string",
+ "description": "Website URL"
+ },
+ "channel_type": {
+ "type": "string",
+ "description": "The type of the inbox"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The avatar image of the inbox"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "Widget Color used for customization of the widget"
+ },
+ "website_token": {
+ "type": "string",
+ "description": "Website Token"
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "The flag which shows whether Auto Assignment is enabled or not"
+ },
+ "web_widget_script": {
+ "type": "string",
+ "description": "Script used to load the website widget"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "The flag which shows whether greeting is enabled"
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "A greeting message when the user starts the conversation"
+ },
+ "channel_id": {
+ "type": "number",
+ "description": "ID of the channel this inbox belongs to"
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "The flag which shows whether working hours feature is enabled"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "The flag to enable collecting email from contacts"
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "The flag to enable CSAT survey"
+ },
+ "auto_assignment_config": {
+ "type": "object",
+ "description": "Configuration settings for auto assignment"
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Message to show when agents are out of office"
+ },
+ "working_hours": {
+ "type": "array",
+ "description": "Configuration for working hours of the inbox",
+ "items": {
+ "type": "object",
+ "properties": {
+ "day_of_week": {
+ "type": "number",
+ "description": "Day of the week (0-6, where 0 is Sunday)"
+ },
+ "closed_all_day": {
+ "type": "boolean",
+ "description": "Whether the inbox is closed for the entire day"
+ },
+ "open_hour": {
+ "type": "number",
+ "description": "Hour when inbox opens (0-23)"
+ },
+ "open_minutes": {
+ "type": "number",
+ "description": "Minutes of the hour when inbox opens (0-59)"
+ },
+ "close_hour": {
+ "type": "number",
+ "description": "Hour when inbox closes (0-23)"
+ },
+ "close_minutes": {
+ "type": "number",
+ "description": "Minutes of the hour when inbox closes (0-59)"
+ },
+ "open_all_day": {
+ "type": "boolean",
+ "description": "Whether the inbox is open for the entire day"
+ }
+ }
+ }
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone configuration for the inbox"
+ },
+ "callback_webhook_url": {
+ "type": "string",
+ "description": "Webhook URL for callbacks"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Whether to allow messages after a conversation is resolved"
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Whether to lock a contact to a single conversation"
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Type of sender name to display (e.g., friendly)"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name associated with the inbox"
+ },
+ "hmac_mandatory": {
+ "type": "boolean",
+ "description": "Whether HMAC verification is mandatory"
+ },
+ "selected_feature_flags": {
+ "type": "object",
+ "description": "Selected feature flags for the inbox"
+ },
+ "reply_time": {
+ "type": "string",
+ "description": "Expected reply time"
+ },
+ "messaging_service_sid": {
+ "type": "string",
+ "description": "Messaging service SID for SMS providers"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "Phone number associated with the inbox"
+ },
+ "medium": {
+ "type": "string",
+ "description": "Medium of communication (e.g., sms, email)"
+ },
+ "provider": {
+ "type": "string",
+ "description": "Provider of the channel"
+ }
+ }
+ },
+ "agent_bot": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the agent bot"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the agent bot"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot"
+ },
+ "bot_type": {
+ "type": "string",
+ "description": "The type of the bot"
+ },
+ "bot_config": {
+ "type": "object",
+ "description": "The configuration of the bot"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account ID if it's an account specific bot"
+ },
+ "access_token": {
+ "type": "string",
+ "description": "The access token for the bot"
+ },
+ "system_bot": {
+ "type": "boolean",
+ "description": "Whether the bot is a system bot"
+ }
+ }
+ },
+ "contact_inboxes": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox_contact"
+ }
+ }
+ },
+ "contactable_inboxes": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ },
+ "custom_filter": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the custom filter"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the custom filter"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ],
+ "description": "The description about the custom filter"
+ },
+ "query": {
+ "type": "object",
+ "description": "A query that needs to be saved as a custom filter"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The time at which the custom filter was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The time at which the custom filter was updated"
+ }
+ }
+ },
+ "webhook": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the webhook"
+ },
+ "url": {
+ "type": "string",
+ "description": "The url to which the events will be send"
+ },
+ "subscriptions": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_status_changed",
+ "conversation_updated",
+ "contact_created",
+ "contact_updated",
+ "message_created",
+ "message_updated",
+ "webwidget_triggered"
+ ]
+ },
+ "description": "The list of subscribed events"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The id of the account which the webhook object belongs to"
+ }
+ }
+ },
+ "account": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Account ID"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the account"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "administrator",
+ "agent"
+ ],
+ "description": "The user role in the account"
+ }
+ }
+ },
+ "account_user": {
+ "type": "array",
+ "description": "Array of account users",
+ "items": {
+ "type": "object",
+ "properties": {
+ "account_id": {
+ "type": "integer",
+ "description": "The ID of the account"
+ },
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user"
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent"
+ }
+ }
+ }
+ },
+ "platform_account": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Account ID"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the account"
+ }
+ }
+ },
+ "team": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the team"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the team"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the team"
+ },
+ "allow_auto_assign": {
+ "type": "boolean",
+ "description": "If this setting is turned on, the system would automatically assign the conversation to an agent in the team while assigning the conversation to a team"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The ID of the account with the team is a part of"
+ },
+ "is_member": {
+ "type": "boolean",
+ "description": "This field shows whether the current user is a part of the team"
+ }
+ }
+ },
+ "integrations_app": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the integration"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the integration"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the team"
+ },
+ "hook_type": {
+ "type": "string",
+ "description": "Whether the integration is an account or inbox integration"
+ },
+ "enabled": {
+ "type": "boolean",
+ "description": "Whether the integration is enabled for the account"
+ },
+ "allow_multiple_hooks": {
+ "type": "boolean",
+ "description": "Whether multiple hooks can be created for the integration"
+ },
+ "hooks": {
+ "type": "array",
+ "items": {
+ "type": "object"
+ },
+ "description": "If there are any hooks created for this integration"
+ }
+ }
+ },
+ "integrations_hook": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the integration hook"
+ },
+ "app_id": {
+ "type": "string",
+ "description": "The ID of the integration app"
+ },
+ "inbox_id": {
+ "type": "string",
+ "description": "Inbox ID if its an Inbox integration"
+ },
+ "account_id": {
+ "type": "string",
+ "description": "Account ID of the integration"
+ },
+ "status": {
+ "type": "boolean",
+ "description": "Whether the integration hook is enabled for the account"
+ },
+ "hook_type": {
+ "type": "boolean",
+ "description": "Whether its an account or inbox integration hook"
+ },
+ "settings": {
+ "type": "object",
+ "description": "The associated settings for the integration"
+ }
+ }
+ },
+ "public_contact": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Id of the contact"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The session identifier of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the contact"
+ },
+ "pubsub_token": {
+ "type": "string",
+ "description": "The token to be used to connect to chatwoot websocket"
+ }
+ }
+ },
+ "public_conversation": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Id of the conversation"
+ },
+ "inbox_id": {
+ "type": "string",
+ "description": "The inbox id of the conversation"
+ },
+ "messages": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ },
+ "description": "Messages in the conversation"
+ },
+ "contact": {
+ "type": "object",
+ "description": "The contact information associated to the conversation"
+ }
+ }
+ },
+ "public_message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Id of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "Text content of the message"
+ },
+ "message_type": {
+ "type": "string",
+ "description": "Denotes the message type"
+ },
+ "content_type": {
+ "type": "string",
+ "description": "Content type of the message"
+ },
+ "content_attributes": {
+ "type": "string",
+ "description": "Additional content attributes of the message"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "Created at time stamp of the message"
+ },
+ "conversation_id": {
+ "type": "string",
+ "description": "Conversation Id of the message"
+ },
+ "attachments": {
+ "type": "array",
+ "items": {
+ "type": "object"
+ },
+ "description": "Attachments if any"
+ },
+ "sender": {
+ "type": "object",
+ "description": "Details of the sender"
+ }
+ }
+ },
+ "public_inbox": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "Inbox identifier"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the inbox"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "The timezone defined on the inbox"
+ },
+ "working_hours": {
+ "type": "array",
+ "description": "The working hours defined on the inbox",
+ "items": {
+ "type": "object",
+ "properties": {
+ "day_of_week": {
+ "type": "integer",
+ "description": "Day of the week as a number. Sunday -> 0, Saturday -> 6"
+ },
+ "open_all_day": {
+ "type": "boolean",
+ "description": "Whether or not the business is open the whole day"
+ },
+ "closed_all_day": {
+ "type": "boolean",
+ "description": "Whether or not the business is closed the whole day"
+ },
+ "open_hour": {
+ "type": "integer",
+ "description": "Opening hour. Can be null if closed all day"
+ },
+ "open_minutes": {
+ "type": "integer",
+ "description": "Opening minute. Can be null if closed all day"
+ },
+ "close_hour": {
+ "type": "integer",
+ "description": "Closing hour. Can be null if closed all day"
+ },
+ "close_minutes": {
+ "type": "integer",
+ "description": "Closing minute. Can be null if closed all day"
+ }
+ }
+ }
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the working hours are enabled on the inbox"
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the Customer Satisfaction survey is enabled on the inbox"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the Greeting Message is enabled on the inbox"
+ },
+ "identity_validation_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the User Identity Validation is enforced on the inbox"
+ }
+ }
+ },
+ "account_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the account",
+ "example": "My Account"
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the account",
+ "example": "en"
+ },
+ "domain": {
+ "type": "string",
+ "description": "The domain of the account",
+ "example": "example.com"
+ },
+ "support_email": {
+ "type": "string",
+ "description": "The support email of the account",
+ "example": "support@example.com"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "active",
+ "suspended"
+ ],
+ "description": "The status of the account",
+ "example": "active"
+ },
+ "limits": {
+ "type": "object",
+ "description": "The limits of the account",
+ "example": {
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the account",
+ "example": {
+ }
+ }
+ }
+ },
+ "account_user_create_update_payload": {
+ "type": "object",
+ "required": [
+ "user_id",
+ "role"
+ ],
+ "properties": {
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user",
+ "example": 1
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent",
+ "example": "administrator"
+ }
+ }
+ },
+ "platform_agent_bot_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot",
+ "example": "My Agent Bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the agent bot",
+ "example": "This is a sample agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot",
+ "example": "https://example.com/webhook"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "The account ID to associate the agent bot with",
+ "example": 1
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the agent bot avatar",
+ "example": "https://example.com/avatar.png"
+ }
+ }
+ },
+ "agent_bot_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot",
+ "example": "My Agent Bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the agent bot",
+ "example": "This is a sample agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot",
+ "example": "https://example.com/webhook"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the agent bot avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "bot_type": {
+ "type": "integer",
+ "description": "The type of the bot (0 for webhook)",
+ "example": 0
+ },
+ "bot_config": {
+ "type": "object",
+ "description": "The configuration for the bot",
+ "example": {
+ }
+ }
+ }
+ },
+ "user_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the user",
+ "example": "Daniel"
+ },
+ "display_name": {
+ "type": "string",
+ "description": "Display name of the user",
+ "example": "Dan"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the user",
+ "example": "daniel@acme.inc"
+ },
+ "password": {
+ "type": "string",
+ "description": "Password must contain uppercase, lowercase letters, number and a special character",
+ "example": "Password2!"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes you want to associate with the user",
+ "example": {
+ }
+ }
+ }
+ },
+ "canned_response_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "Message content for canned response",
+ "example": "Hello, {{contact.name}}! Welcome to our service."
+ },
+ "short_code": {
+ "type": "string",
+ "description": "Short Code for quick access of the canned response",
+ "example": "welcome"
+ }
+ }
+ },
+ "custom_attribute_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "attribute_display_name": {
+ "type": "string",
+ "description": "Attribute display name",
+ "example": "Custom Attribute"
+ },
+ "attribute_display_type": {
+ "type": "integer",
+ "description": "Attribute display type (text- 0, number- 1, currency- 2, percent- 3, link- 4, date- 5, list- 6, checkbox- 7)",
+ "example": 0
+ },
+ "attribute_description": {
+ "type": "string",
+ "description": "Attribute description",
+ "example": "This is a custom attribute"
+ },
+ "attribute_key": {
+ "type": "string",
+ "description": "Attribute unique key value",
+ "example": "custom_attribute"
+ },
+ "attribute_values": {
+ "type": "array",
+ "description": "Attribute values",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "value1",
+ "value2"
+ ]
+ },
+ "attribute_model": {
+ "type": "integer",
+ "description": "Attribute type(conversation_attribute- 0, contact_attribute- 1)",
+ "example": 0
+ },
+ "regex_pattern": {
+ "type": "string",
+ "description": "Regex pattern (Only applicable for type- text). The regex pattern is used to validate the attribute value(s).",
+ "example": "^[a-zA-Z0-9]+$"
+ },
+ "regex_cue": {
+ "type": "string",
+ "description": "Regex cue message (Only applicable for type- text). The cue message is shown when the regex pattern is not matched.",
+ "example": "Please enter a valid value"
+ }
+ }
+ },
+ "agent_create_payload": {
+ "type": "object",
+ "required": [
+ "name",
+ "email",
+ "role"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Full Name of the agent",
+ "example": "John Doe"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the Agent",
+ "example": "john.doe@acme.inc"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "Whether its administrator or agent",
+ "example": "agent"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability setting of the agent.",
+ "example": "available"
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away.",
+ "example": true
+ }
+ }
+ },
+ "agent_update_payload": {
+ "type": "object",
+ "required": [
+ "role"
+ ],
+ "properties": {
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "Whether its administrator or agent",
+ "example": "agent"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability status of the agent.",
+ "example": "available"
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away.",
+ "example": true
+ }
+ }
+ },
+ "contact_create_payload": {
+ "type": "object",
+ "required": [
+ "inbox_id"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox to which the contact belongs",
+ "example": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "name of the contact",
+ "example": "Alice"
+ },
+ "email": {
+ "type": "string",
+ "description": "email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "whether the contact is blocked or not",
+ "example": false
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the contact avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "A unique identifier for the contact in external system",
+ "example": "1234567890"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "An object where you can store additional attributes for contact. example {\"type\":\"customer\", \"age\":30}",
+ "example": {
+ "type": "customer",
+ "age": 30
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "An object where you can store custom attributes for contact. example {\"type\":\"customer\", \"age\":30}, this should have a valid custom attribute definition.",
+ "example": {
+ }
+ }
+ }
+ },
+ "contact_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "name of the contact",
+ "example": "Alice"
+ },
+ "email": {
+ "type": "string",
+ "description": "email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "whether the contact is blocked or not",
+ "example": false
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the contact avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "A unique identifier for the contact in external system",
+ "example": "1234567890"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "An object where you can store additional attributes for contact. example {\"type\":\"customer\", \"age\":30}",
+ "example": {
+ "type": "customer",
+ "age": 30
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "An object where you can store custom attributes for contact. example {\"type\":\"customer\", \"age\":30}, this should have a valid custom attribute definition.",
+ "example": {
+ }
+ }
+ }
+ },
+ "conversation_create_payload": {
+ "type": "object",
+ "required": [
+ "source_id",
+ "inbox_id"
+ ],
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Conversation source id",
+ "example": "1234567890"
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "Id of inbox in which the conversation is created
Allowed Inbox Types: Website, Phone, Api, Email",
+ "example": 1
+ },
+ "contact_id": {
+ "type": "integer",
+ "description": "Contact Id for which conversation is created",
+ "example": 1
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "Lets you specify attributes like browser information",
+ "example": {
+ "browser": "Chrome",
+ "browser_version": "89.0.4389.82",
+ "os": "Windows",
+ "os_version": "10"
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The object to save custom attributes for conversation, accepts custom attributes key and value",
+ "example": {
+ "attribute_key": "attribute_value",
+ "priority_conversation_number": 3
+ }
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "Specify the conversation whether it's pending, open, closed",
+ "example": "open"
+ },
+ "assignee_id": {
+ "type": "integer",
+ "description": "Agent Id for assigning a conversation to an agent",
+ "example": 1
+ },
+ "team_id": {
+ "type": "integer",
+ "description": "Team Id for assigning a conversation to a team\\",
+ "example": 1
+ },
+ "snoozed_until": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Snoozed until date time",
+ "example": "2030-07-21T17:32:28Z"
+ },
+ "message": {
+ "type": "object",
+ "description": "The initial message to be sent to the conversation",
+ "required": [
+ "content"
+ ],
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "The content of the message",
+ "example": "Hello, how can I help you?"
+ },
+ "template_params": {
+ "type": "object",
+ "description": "The template params for the message in case of whatsapp Channel",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "sample_issue_resolution"
+ },
+ "category": {
+ "type": "string",
+ "description": "Category of the template",
+ "example": "UTILITY"
+ },
+ "language": {
+ "type": "string",
+ "description": "Language of the template",
+ "example": "en_US"
+ },
+ "processed_params": {
+ "type": "object",
+ "description": "The processed param values for template variables in template",
+ "example": {
+ "1": "Chatwoot"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation_message_create_payload": {
+ "type": "object",
+ "required": [
+ "content"
+ ],
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "The content of the message",
+ "example": "Hello, how can I help you?"
+ },
+ "message_type": {
+ "type": "string",
+ "enum": [
+ "outgoing",
+ "incoming"
+ ],
+ "description": "The type of the message",
+ "example": "outgoing"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "Flag to identify if it is a private note",
+ "example": false
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_email",
+ "cards",
+ "input_select",
+ "form",
+ "article"
+ ],
+ "description": "Content type of the message",
+ "example": "text"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "Attributes based on the content type",
+ "example": {
+ }
+ },
+ "campaign_id": {
+ "type": "integer",
+ "description": "The campaign id to which the message belongs",
+ "example": 1
+ },
+ "template_params": {
+ "type": "object",
+ "description": "The template params for the message in case of whatsapp Channel",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "sample_issue_resolution"
+ },
+ "category": {
+ "type": "string",
+ "description": "Category of the template",
+ "example": "UTILITY"
+ },
+ "language": {
+ "type": "string",
+ "description": "Language of the template",
+ "example": "en_US"
+ },
+ "processed_params": {
+ "type": "object",
+ "description": "The processed param values for template variables in template",
+ "example": {
+ "1": "Chatwoot"
+ }
+ }
+ }
+ }
+ }
+ },
+ "inbox_create_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox",
+ "example": "Support"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Image file for avatar"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Enable greeting message",
+ "example": true
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "Greeting message to be displayed on the widget",
+ "example": "Hello, how can I help you?"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "Enable email collection",
+ "example": true
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Enable CSAT survey",
+ "example": true
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "Enable Auto Assignment",
+ "example": true
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Enable working hours",
+ "example": true
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Out of office message to be displayed on the widget",
+ "example": "We are currently out of office. Please leave a message and we will get back to you."
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone of the inbox",
+ "example": "America/New_York"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Allow messages after conversation is resolved",
+ "example": true
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Lock to single conversation",
+ "example": true
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "Id of the help center portal to attach to the inbox",
+ "example": 1
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Sender name type for the inbox",
+ "enum": [
+ "friendly",
+ "professional"
+ ],
+ "example": "friendly"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name for the inbox",
+ "example": "My Business"
+ },
+ "channel": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "Type of the channel",
+ "enum": [
+ "web_widget",
+ "api",
+ "email",
+ "line",
+ "telegram",
+ "whatsapp",
+ "sms"
+ ],
+ "example": "web_widget"
+ },
+ "website_url": {
+ "type": "string",
+ "description": "URL at which the widget will be loaded",
+ "example": "https://example.com"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget",
+ "example": "Welcome to our support"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget",
+ "example": "We are here to help you"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "A Hex-color string used to customize the widget",
+ "example": "#FF5733"
+ }
+ }
+ }
+ }
+ },
+ "inbox_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox",
+ "example": "Support"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Image file for avatar"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Enable greeting message",
+ "example": true
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "Greeting message to be displayed on the widget",
+ "example": "Hello, how can I help you?"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "Enable email collection",
+ "example": true
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Enable CSAT survey",
+ "example": true
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "Enable Auto Assignment",
+ "example": true
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Enable working hours",
+ "example": true
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Out of office message to be displayed on the widget",
+ "example": "We are currently out of office. Please leave a message and we will get back to you."
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone of the inbox",
+ "example": "America/New_York"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Allow messages after conversation is resolved",
+ "example": true
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Lock to single conversation",
+ "example": true
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "Id of the help center portal to attach to the inbox",
+ "example": 1
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Sender name type for the inbox",
+ "enum": [
+ "friendly",
+ "professional"
+ ],
+ "example": "friendly"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name for the inbox",
+ "example": "My Business"
+ },
+ "channel": {
+ "type": "object",
+ "properties": {
+ "website_url": {
+ "type": "string",
+ "description": "URL at which the widget will be loaded",
+ "example": "https://example.com"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget",
+ "example": "Welcome to our support"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget",
+ "example": "We are here to help you"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "A Hex-color string used to customize the widget",
+ "example": "#FF5733"
+ }
+ }
+ }
+ }
+ },
+ "team_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the team",
+ "example": "Support Team"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the team",
+ "example": "This is a team of support agents"
+ },
+ "allow_auto_assign": {
+ "type": "boolean",
+ "description": "If this setting is turned on, the system would automatically assign the conversation to an agent in the team while assigning the conversation to a team",
+ "example": true
+ }
+ }
+ },
+ "custom_filter_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the custom filter",
+ "example": "My Custom Filter"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ],
+ "description": "The description about the custom filter",
+ "example": "conversation"
+ },
+ "query": {
+ "type": "object",
+ "description": "A query that needs to be saved as a custom filter",
+ "example": {
+ }
+ }
+ }
+ },
+ "webhook_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "The url where the events should be sent",
+ "example": "https://example.com/webhook"
+ },
+ "subscriptions": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_status_changed",
+ "conversation_updated",
+ "message_created",
+ "message_updated",
+ "contact_created",
+ "contact_updated",
+ "webwidget_triggered"
+ ]
+ },
+ "description": "The events you want to subscribe to.",
+ "example": [
+ "conversation_created",
+ "conversation_status_changed"
+ ]
+ }
+ }
+ },
+ "integrations_hook_create_payload": {
+ "type": "object",
+ "properties": {
+ "app_id": {
+ "type": "integer",
+ "description": "The ID of app for which integration hook is being created",
+ "example": 1
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "The inbox ID, if the hook is an inbox hook",
+ "example": 1
+ },
+ "status": {
+ "type": "integer",
+ "description": "The status of the integration (0 for inactive, 1 for active)",
+ "example": 1
+ },
+ "settings": {
+ "type": "object",
+ "description": "The settings required by the integration",
+ "example": {
+ }
+ }
+ }
+ },
+ "integrations_hook_update_payload": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "integer",
+ "description": "The status of the integration (0 for inactive, 1 for active)",
+ "example": 1
+ },
+ "settings": {
+ "type": "object",
+ "description": "The settings required by the integration",
+ "example": {
+ }
+ }
+ }
+ },
+ "automation_rule_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Rule name",
+ "example": "Add label on message create event"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the automation and actions",
+ "example": "Add label support and sales on message create event if incoming message content contains text help"
+ },
+ "event_name": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_updated",
+ "message_created"
+ ],
+ "example": "message_created",
+ "description": "The event when you want to execute the automation actions"
+ },
+ "active": {
+ "type": "boolean",
+ "description": "Enable/disable automation rule"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Array of actions which you want to perform when condition matches, e.g add label support if message contains content help.",
+ "items": {
+ "type": "object",
+ "example": {
+ "action_name": "add_label",
+ "action_params": [
+ "support"
+ ]
+ }
+ }
+ },
+ "conditions": {
+ "type": "array",
+ "description": "Array of conditions on which conversation filter would work, e.g message content contains text help.",
+ "items": {
+ "type": "object",
+ "example": {
+ "attribute_key": "content",
+ "filter_operator": "contains",
+ "query_operator": "OR",
+ "values": [
+ "help"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "portal_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "color": {
+ "type": "string",
+ "description": "Header color for help-center in hex format",
+ "example": "#FFFFFF"
+ },
+ "custom_domain": {
+ "type": "string",
+ "description": "Custom domain to display help center.",
+ "example": "chatwoot.help"
+ },
+ "header_text": {
+ "type": "string",
+ "description": "Help center header",
+ "example": "Handbook"
+ },
+ "homepage_link": {
+ "type": "string",
+ "description": "link to main dashboard",
+ "example": "https://www.chatwoot.com/"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name for the portal",
+ "example": "Handbook"
+ },
+ "page_title": {
+ "type": "string",
+ "description": "Page title for the portal",
+ "example": "Handbook"
+ },
+ "slug": {
+ "type": "string",
+ "description": "Slug for the portal to display in link",
+ "example": "handbook"
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Status to check if portal is live",
+ "example": false
+ },
+ "config": {
+ "type": "object",
+ "description": "Configuration about supporting locales",
+ "example": {
+ "allowed_locales": [
+ "en",
+ "es"
+ ],
+ "default_locale": "en"
+ }
+ }
+ }
+ },
+ "category_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the category",
+ "example": "Category Name"
+ },
+ "description": {
+ "type": "string",
+ "description": "A description for the category",
+ "example": "Category description"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Category position in the portal list to sort",
+ "example": 1
+ },
+ "slug": {
+ "type": "string",
+ "description": "The category slug used in the URL",
+ "example": "category-name"
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the category",
+ "example": "en"
+ },
+ "icon": {
+ "type": "string",
+ "description": "The icon of the category as a string (emoji)",
+ "example": "📚"
+ },
+ "parent_category_id": {
+ "type": "integer",
+ "description": "To define parent category, e.g product documentation has multiple level features in sales category or in engineering category.",
+ "example": 1
+ },
+ "associated_category_id": {
+ "type": "integer",
+ "description": "To associate similar categories to each other, e.g same category of product documentation in different languages",
+ "example": 2
+ }
+ }
+ },
+ "article_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "title": {
+ "type": "string",
+ "description": "The title of the article",
+ "example": "Article Title"
+ },
+ "slug": {
+ "type": "string",
+ "description": "The slug of the article",
+ "example": "article-title"
+ },
+ "position": {
+ "type": "integer",
+ "description": "article position in category",
+ "example": 1
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content.",
+ "example": "This is the content of the article"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the article",
+ "example": "This is the description of the article"
+ },
+ "category_id": {
+ "type": "integer",
+ "description": "The category id of the article",
+ "example": 1
+ },
+ "author_id": {
+ "type": "integer",
+ "description": "The author agent id of the article",
+ "example": 1
+ },
+ "associated_article_id": {
+ "type": "integer",
+ "description": "To associate similar articles to each other, e.g to provide the link for the reference.",
+ "example": 2
+ },
+ "status": {
+ "type": "integer",
+ "description": "The status of the article. 0 for draft, 1 for published, 2 for archived",
+ "example": 1
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the article",
+ "example": "en"
+ },
+ "meta": {
+ "type": "object",
+ "description": "Use for search",
+ "example": {
+ "tags": [
+ "article_name"
+ ],
+ "title": "article title",
+ "description": "article description"
+ }
+ }
+ }
+ },
+ "public_contact_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "External identifier of the contact",
+ "example": "1234567890"
+ },
+ "identifier_hash": {
+ "type": "string",
+ "description": "Identifier hash prepared for HMAC authentication",
+ "example": "e93275d4eba0e5679ad55f5360af00444e2a888df9b0afa3e8b691c3173725f9"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the contact",
+ "example": "Alice"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "Phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes of the customer",
+ "example": {
+ }
+ }
+ }
+ },
+ "public_message_create_payload": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "Content for the message",
+ "example": "Hello, how can I help you?"
+ },
+ "echo_id": {
+ "type": "string",
+ "description": "Temporary identifier which will be passed back via websockets",
+ "example": "1234567890"
+ }
+ }
+ },
+ "public_message_update_payload": {
+ "type": "object",
+ "properties": {
+ "submitted_values": {
+ "type": "object",
+ "description": "Replies to the Bot Message Types",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submiitted value",
+ "example": "My Name"
+ },
+ "title": {
+ "type": "string",
+ "description": "The title of the submitted value",
+ "example": "My Title"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the submitted value",
+ "example": "value"
+ },
+ "csat_survey_response": {
+ "type": "object",
+ "description": "The CSAT survey response",
+ "properties": {
+ "feedback_message": {
+ "type": "string",
+ "description": "The feedback message of the CSAT survey response",
+ "example": "Great service!"
+ },
+ "rating": {
+ "type": "integer",
+ "description": "The rating of the CSAT survey response",
+ "example": 5
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "public_conversation_create_payload": {
+ "type": "object",
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes of the conversation",
+ "example": {
+ }
+ }
+ }
+ },
+ "extended_contact": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/contact"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Id of the user"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "online",
+ "offline"
+ ],
+ "description": "Availability status of the user"
+ }
+ }
+ }
+ ]
+ },
+ "contact_base": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/contact"
+ }
+ ]
+ },
+ "contact_list": {
+ "type": "array",
+ "description": "array of contacts",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/contact"
+ }
+ ]
+ }
+ },
+ "contact_conversations": {
+ "type": "array",
+ "description": "array of conversations",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "display_id": {
+ "type": "number"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "contact_labels": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of labels",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "conversation_list": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "mine_count": {
+ "type": "number"
+ },
+ "unassigned_count": {
+ "type": "number"
+ },
+ "assigned_count": {
+ "type": "number"
+ },
+ "all_count": {
+ "type": "number"
+ }
+ }
+ },
+ "payload": {
+ "type": "array",
+ "description": "array of conversations",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation_show": {
+ "type": "object",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "conversation_status_toggle": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object"
+ },
+ "payload": {
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean"
+ },
+ "current_status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved"
+ ]
+ },
+ "conversation_id": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "conversation_labels": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of labels",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "account_summary": {
+ "type": "object",
+ "properties": {
+ "avg_first_response_time": {
+ "type": "string"
+ },
+ "avg_resolution_time": {
+ "type": "string"
+ },
+ "conversations_count": {
+ "type": "number"
+ },
+ "incoming_messages_count": {
+ "type": "number"
+ },
+ "outgoing_messages_count": {
+ "type": "number"
+ },
+ "resolutions_count": {
+ "type": "number"
+ },
+ "previous": {
+ "type": "object",
+ "properties": {
+ "avg_first_response_time": {
+ "type": "string"
+ },
+ "avg_resolution_time": {
+ "type": "string"
+ },
+ "conversations_count": {
+ "type": "number"
+ },
+ "incoming_messages_count": {
+ "type": "number"
+ },
+ "outgoing_messages_count": {
+ "type": "number"
+ },
+ "resolutions_count": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "agent_conversation_metrics": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ },
+ "thumbnail": {
+ "type": "string"
+ },
+ "availability": {
+ "type": "string"
+ },
+ "metric": {
+ "type": "object",
+ "properties": {
+ "open": {
+ "type": "number"
+ },
+ "unattended": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "contact_detail": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact",
+ "properties": {
+ "city": {
+ "type": "string",
+ "description": "City of the contact"
+ },
+ "country": {
+ "type": "string",
+ "description": "Country of the contact"
+ },
+ "country_code": {
+ "type": "string",
+ "description": "Country code of the contact"
+ },
+ "created_at_ip": {
+ "type": "string",
+ "description": "IP address when the contact was created"
+ }
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact"
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact",
+ "nullable": true
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact",
+ "nullable": true
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "type": {
+ "type": "string",
+ "description": "The type of entity",
+ "enum": [
+ "contact"
+ ]
+ }
+ }
+ },
+ "message_detailed": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content of the message"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "number",
+ "description": "The ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "enum": [
+ 0,
+ 1,
+ 2,
+ 3
+ ],
+ "description": "The type of the message (0: incoming, 1: outgoing, 2: activity, 3: template)"
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_select",
+ "cards",
+ "form",
+ "input_csat"
+ ],
+ "description": "The type of the message content"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "sent",
+ "delivered",
+ "read",
+ "failed"
+ ],
+ "description": "The status of the message"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "The content attributes for each content_type",
+ "properties": {
+ "in_reply_to": {
+ "type": "string",
+ "description": "ID of the message this is replying to",
+ "nullable": true
+ }
+ }
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The timestamp when message was created"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "The flag which shows whether the message is private or not"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The source ID of the message",
+ "nullable": true
+ },
+ "sender": {
+ "$ref": "#/components/schemas/contact_detail"
+ }
+ }
+ },
+ "conversation_meta": {
+ "type": "object",
+ "properties": {
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Labels associated with the conversation"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "properties": {
+ "browser": {
+ "type": "object",
+ "properties": {
+ "device_name": {
+ "type": "string",
+ "description": "Name of the device"
+ },
+ "browser_name": {
+ "type": "string",
+ "description": "Name of the browser"
+ },
+ "platform_name": {
+ "type": "string",
+ "description": "Name of the platform"
+ },
+ "browser_version": {
+ "type": "string",
+ "description": "Version of the browser"
+ },
+ "platform_version": {
+ "type": "string",
+ "description": "Version of the platform"
+ }
+ }
+ },
+ "referer": {
+ "type": "string",
+ "description": "Referrer URL"
+ },
+ "initiated_at": {
+ "type": "object",
+ "properties": {
+ "timestamp": {
+ "type": "string",
+ "description": "Timestamp when the conversation was initiated"
+ }
+ }
+ },
+ "browser_language": {
+ "type": "string",
+ "description": "Browser language setting"
+ },
+ "conversation_language": {
+ "type": "string",
+ "description": "Conversation language"
+ }
+ },
+ "description": "Additional attributes of the conversation"
+ },
+ "contact": {
+ "$ref": "#/components/schemas/contact_detail"
+ },
+ "agent_last_seen_at": {
+ "type": "string",
+ "description": "Timestamp when the agent last saw the conversation",
+ "nullable": true
+ },
+ "assignee_last_seen_at": {
+ "type": "string",
+ "description": "Timestamp when the assignee last saw the conversation",
+ "nullable": true
+ }
+ }
+ },
+ "conversation_messages": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/conversation_meta"
+ },
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message_detailed"
+ },
+ "description": "List of messages in the conversation"
+ }
+ }
+ },
+ "contact_meta": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "integer",
+ "description": "Total number of contacts"
+ },
+ "current_page": {
+ "type": "string",
+ "description": "Current page number"
+ }
+ }
+ },
+ "contact_inbox": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Source identifier for the contact inbox"
+ },
+ "inbox": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the inbox"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "URL for the inbox avatar"
+ },
+ "channel_id": {
+ "type": "integer",
+ "description": "ID of the channel"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the inbox"
+ },
+ "channel_type": {
+ "type": "string",
+ "description": "Type of channel"
+ },
+ "provider": {
+ "type": "string",
+ "description": "Provider of the inbox",
+ "nullable": true
+ }
+ }
+ }
+ }
+ },
+ "contact_list_item": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact",
+ "properties": {
+ "city": {
+ "type": "string",
+ "description": "City of the contact"
+ },
+ "country": {
+ "type": "string",
+ "description": "Country of the contact"
+ },
+ "country_code": {
+ "type": "string",
+ "description": "Country code of the contact"
+ },
+ "created_at_ip": {
+ "type": "string",
+ "description": "IP address when the contact was created"
+ }
+ }
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "Availability status of the contact",
+ "enum": [
+ "online",
+ "offline"
+ ]
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact",
+ "nullable": true
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact",
+ "nullable": true
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact",
+ "nullable": true
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact"
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "Timestamp of last activity",
+ "nullable": true
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "Timestamp when contact was created"
+ },
+ "contact_inboxes": {
+ "type": "array",
+ "description": "List of inboxes associated with this contact",
+ "items": {
+ "$ref": "#/components/schemas/contact_inbox"
+ }
+ }
+ }
+ },
+ "contacts_list_response": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/contact_meta"
+ },
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_list_item"
+ },
+ "description": "List of contacts"
+ }
+ }
+ },
+ "contact_show_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "$ref": "#/components/schemas/contact_list_item"
+ }
+ }
+ },
+ "contact_conversation_message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "Content of the message"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account"
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "integer",
+ "description": "ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "description": "Type of the message"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "Timestamp when message was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "Formatted datetime when message was updated"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "Whether the message is private"
+ },
+ "status": {
+ "type": "string",
+ "description": "Status of the message"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "Source ID of the message",
+ "nullable": true
+ },
+ "content_type": {
+ "type": "string",
+ "description": "Type of the content"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "Attributes of the content"
+ },
+ "sender_type": {
+ "type": "string",
+ "description": "Type of the sender",
+ "nullable": true
+ },
+ "sender_id": {
+ "type": "integer",
+ "description": "ID of the sender",
+ "nullable": true
+ },
+ "external_source_ids": {
+ "type": "object",
+ "description": "External source IDs"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "Additional attributes of the message"
+ },
+ "processed_message_content": {
+ "type": "string",
+ "description": "Processed message content",
+ "nullable": true
+ },
+ "sentiment": {
+ "type": "object",
+ "description": "Sentiment analysis of the message"
+ },
+ "conversation": {
+ "type": "object",
+ "description": "Conversation details",
+ "properties": {
+ "assignee_id": {
+ "type": "integer",
+ "description": "ID of the assignee",
+ "nullable": true
+ },
+ "unread_count": {
+ "type": "integer",
+ "description": "Count of unread messages"
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "Timestamp of last activity"
+ },
+ "contact_inbox": {
+ "type": "object",
+ "description": "Contact inbox details",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Source ID of the contact inbox"
+ }
+ }
+ }
+ }
+ },
+ "sender": {
+ "type": "object",
+ "description": "Details of the sender",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the sender"
+ },
+ "available_name": {
+ "type": "string",
+ "description": "Available name of the sender"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "URL of the sender's avatar"
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "Availability status of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Thumbnail URL of the sender"
+ }
+ }
+ }
+ }
+ },
+ "contact_conversations_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "description": "List of conversations for the contact"
+ }
+ }
+ },
+ "contactable_inboxes_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_inbox"
+ },
+ "description": "List of contactable inboxes for the contact"
+ }
+ }
+ }
+ },
+ "parameters": {
+ "account_id": {
+ "in": "path",
+ "name": "account_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the account"
+ },
+ "agent_bot_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agentbot to be updated"
+ },
+ "team_id": {
+ "in": "path",
+ "name": "team_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the team to be updated"
+ },
+ "inbox_id": {
+ "in": "path",
+ "name": "inbox_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the Inbox"
+ },
+ "hook_id": {
+ "in": "path",
+ "name": "hook_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the integration hook"
+ },
+ "source_id": {
+ "in": "path",
+ "name": "source_id",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Id of the session for which the conversation is created.\n\n\n\n Source Ids can be obtained through contactable inboxes API or via generated.
Website: Chatwoot generated string which can be obtained from webhook events.
Phone Channels(Twilio): Phone number in e164 format
Email Channels: Contact Email address
API Channel: Any Random String"
+ },
+ "contact_sort_param": {
+ "in": "query",
+ "name": "sort",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "name",
+ "email",
+ "phone_number",
+ "last_activity_at",
+ "-name",
+ "-email",
+ "-phone_number",
+ "-last_activity_at"
+ ]
+ },
+ "required": false,
+ "description": "The attribute by which list should be sorted"
+ },
+ "conversation_id": {
+ "in": "path",
+ "name": "conversation_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the conversation"
+ },
+ "conversation_uuid": {
+ "in": "path",
+ "name": "conversation_uuid",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The uuid of the conversation"
+ },
+ "custom_filter_id": {
+ "in": "path",
+ "name": "custom_filter_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the custom filter"
+ },
+ "webhook_id": {
+ "in": "path",
+ "name": "webhook_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the webhook"
+ },
+ "message_id": {
+ "in": "path",
+ "name": "message_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the message"
+ },
+ "page": {
+ "in": "query",
+ "name": "page",
+ "schema": {
+ "type": "integer",
+ "default": 1
+ },
+ "required": false,
+ "description": "The page parameter"
+ },
+ "platform_user_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the user on the platform"
+ },
+ "report_type": {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "account",
+ "agent",
+ "inbox",
+ "label",
+ "team"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ },
+ "report_metric": {
+ "in": "query",
+ "name": "metric",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "conversations_count",
+ "incoming_messages_count",
+ "outgoing_messages_count",
+ "avg_first_response_time",
+ "avg_resolution_time",
+ "resolutions_count"
+ ]
+ },
+ "required": true,
+ "description": "The type of metric"
+ },
+ "public_inbox_identifier": {
+ "in": "path",
+ "name": "inbox_identifier",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The identifier obtained from API inbox channel"
+ },
+ "public_contact_identifier": {
+ "in": "path",
+ "name": "contact_identifier",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The source id of contact obtained on contact create"
+ },
+ "portal_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The slug identifier of the portal"
+ }
+ },
+ "securitySchemes": {
+ "userApiKey": {
+ "type": "apiKey",
+ "in": "header",
+ "name": "api_access_token",
+ "description": "This token can be obtained by visiting the profile page or via rails console. Provides access to endpoints based on the user permissions levels."
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/swagger/tag_groups/other_swagger.json b/swagger/tag_groups/other_swagger.json
new file mode 100644
index 000000000..6182b876e
--- /dev/null
+++ b/swagger/tag_groups/other_swagger.json
@@ -0,0 +1,11919 @@
+{
+ "openapi": "3.0.4",
+ "info": {
+ "title": "Chatwoot - Other APIs",
+ "description": "Other API endpoints for Chatwoot",
+ "version": "1.1.0",
+ "termsOfService": "https://www.chatwoot.com/terms-of-service/",
+ "contact": {
+ "email": "hello@chatwoot.com"
+ },
+ "license": {
+ "name": "MIT License",
+ "url": "https://opensource.org/licenses/MIT"
+ }
+ },
+ "servers": [
+ {
+ "url": "https://app.chatwoot.com/"
+ }
+ ],
+ "tags": [
+ {
+ "name": "CSAT Survey Page",
+ "description": "APIs for CSAT survey functionality"
+ }
+ ],
+ "paths": {
+ "/platform/api/v1/accounts": {
+ "post": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "create-an-account",
+ "summary": "Create an Account",
+ "description": "Create an Account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/accounts/{account_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "get-details-of-an-account",
+ "summary": "Get an account details",
+ "description": "Get the details of an account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "update-an-account",
+ "summary": "Update an account",
+ "description": "Update an account's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "delete-an-account",
+ "summary": "Delete an Account",
+ "description": "Delete an Account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/accounts/{account_id}/account_users": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "list-all-account-users",
+ "summary": "List all Account Users",
+ "description": "List all account users",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "create-an-account-user",
+ "summary": "Create an Account User",
+ "description": "Create an Account User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "account_id": {
+ "type": "integer",
+ "description": "The ID of the account"
+ },
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user"
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "delete-an-account-user",
+ "summary": "Delete an Account User",
+ "description": "Delete an Account User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/agent_bots": {
+ "get": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "list-all-agent-bots",
+ "summary": "List all AgentBots",
+ "description": "List all agent bots available",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent bots",
+ "items": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "create-an-agent-bot",
+ "summary": "Create an Agent Bot",
+ "description": "Create an agent bot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/agent_bots/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/agent_bot_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "get-details-of-a-single-agent-bot",
+ "summary": "Get an agent bot details",
+ "description": "Get the details of an agent bot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given agent bot ID does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "update-an-agent-bot",
+ "summary": "Update an agent bot",
+ "description": "Update an agent bot's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "delete-an-agent-bot",
+ "summary": "Delete an AgentBot",
+ "description": "Delete an AgentBot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The agent bot does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users": {
+ "post": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "create-a-user",
+ "summary": "Create a User",
+ "description": "Create a User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/platform_user_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "get-details-of-a-user",
+ "summary": "Get an user details",
+ "description": "Get the details of an user",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "update-a-user",
+ "summary": "Update a user",
+ "description": "Update a user's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "delete-a-user",
+ "summary": "Delete a User",
+ "description": "Delete a User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users/{id}/login": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/platform_user_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "get-sso-url-of-a-user",
+ "summary": "Get User SSO Link",
+ "description": "Get the sso link of a user",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "SSO url to autenticate the user"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Inbox API"
+ ],
+ "operationId": "get-details-of-a-inbox",
+ "summary": "Inbox details",
+ "description": "Get the details of an inbox",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_inbox"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given inbox does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "create-a-contact",
+ "summary": "Create a contact",
+ "description": "Create a contact",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "get-details-of-a-contact",
+ "summary": "Get a contact",
+ "description": "Get the details of a contact",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given contact does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "update-a-contact",
+ "summary": "Update a contact",
+ "description": "Update a contact's attributes",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "create-a-conversation",
+ "summary": "Create a conversation",
+ "description": "Create a conversation",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "list-all-contact-conversations",
+ "summary": "List all conversations",
+ "description": "List all conversations for the contact",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of conversations",
+ "items": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "get-single-conversation",
+ "summary": "Get a single conversation",
+ "description": "Retrieves the details of a specific conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/toggle_status": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "resolve-conversation",
+ "summary": "Resolve a conversation",
+ "description": "Marks a conversation as resolved",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Conversation resolved successfully",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/toggle_typing": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "toggle-typing-status",
+ "summary": "Toggle typing status",
+ "description": "Toggles the typing status in a conversation",
+ "security": [
+
+ ],
+ "parameters": [
+ {
+ "name": "typing_status",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Typing status, either 'on' or 'off'"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "typing_status": {
+ "type": "string",
+ "enum": [
+ "on",
+ "off"
+ ],
+ "description": "The typing status to set",
+ "example": "on"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Typing status toggled successfully"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/update_last_seen": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "update-last-seen",
+ "summary": "Update last seen",
+ "description": "Updates the last seen time of the contact in a conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Last seen updated successfully"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "create-a-message",
+ "summary": "Create a message",
+ "description": "Create a message",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "list-all-converation-messages",
+ "summary": "List all messages",
+ "description": "List all messages in the conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of messages",
+ "items": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/messages/{message_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ },
+ {
+ "$ref": "#/components/parameters/message_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "update-a-message",
+ "summary": "Update a message",
+ "description": "Update a message",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/survey/responses/{conversation_uuid}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/conversation_uuid"
+ }
+ ],
+ "get": {
+ "tags": [
+ "CSAT Survey Page"
+ ],
+ "operationId": "get-csat-survey-page",
+ "summary": "Get CSAT survey page",
+ "description": "You can redirect the client to this URL, instead of implementing the CSAT survey component yourself.",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agent_bots": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "list-all-account-agent-bots",
+ "summary": "List all AgentBots",
+ "description": "List all agent bots available for the current account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent bots",
+ "items": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "create-an-account-agent-bot",
+ "summary": "Create an Agent Bot",
+ "description": "Create an agent bot in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agent_bots/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/agent_bot_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "get-details-of-a-single-account-agent-bot",
+ "summary": "Get an agent bot details",
+ "description": "Get the details of an agent bot in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given agent bot ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "update-an-account-agent-bot",
+ "summary": "Update an agent bot",
+ "description": "Update an agent bot's attributes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "delete-an-account-agent-bot",
+ "summary": "Delete an AgentBot",
+ "description": "Delete an AgentBot from the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The agent bot does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agents": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "get-account-agents",
+ "summary": "List Agents in Account",
+ "description": "Get Details of Agents in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "add-new-agent-to-account",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agents/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "update-agent-in-account",
+ "summary": "Update Agent in Account",
+ "description": "Update an Agent in Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agent to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "delete-agent-from-account",
+ "summary": "Remove an Agent from Account",
+ "description": "Remove an Agent from Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agent to be deleted."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/canned_responses": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "get-account-canned-response",
+ "summary": "List all Canned Responses in an Account",
+ "description": "Get Details of Canned Responses in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all canned responses",
+ "items": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "add-new-canned-response-to-account",
+ "summary": "Add a New Canned Response",
+ "description": "Add a new Canned Response to Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/canned_responses/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "update-canned-response-in-account",
+ "summary": "Update Canned Response in Account",
+ "description": "Update a Canned Response in Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the canned response to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "delete-canned-response-from-account",
+ "summary": "Remove a Canned Response from Account",
+ "description": "Remove a Canned Response from Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the canned response to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Canned Response not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_attribute_definitions": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "get-account-custom-attribute",
+ "summary": "List all custom attributes in an account",
+ "parameters": [
+ {
+ "name": "attribute_model",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "0",
+ "1"
+ ]
+ },
+ "description": "conversation_attribute(0)/contact_attribute(1)",
+ "required": true
+ }
+ ],
+ "description": "Get details of custom attributes in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all custom attributes",
+ "items": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "add-new-custom-attribute-to-account",
+ "summary": "Add a new custom attribute",
+ "description": "Add a new custom attribute to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_attribute_definitions/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the custom attribute",
+ "required": true
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "get-details-of-a-single-custom-attribute",
+ "summary": "Get a custom attribute details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of a custom attribute in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be updated."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given attribute ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "update-custom-attribute-in-account",
+ "summary": "Update custom attribute in Account",
+ "description": "Update a custom attribute in account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "delete-custom-attribute-from-account",
+ "summary": "Remove a custom attribute from account",
+ "description": "Remove a custom attribute from account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Custom attribute not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts": {
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactList",
+ "description": "Listing all the resolved contacts with pagination (Page size = 15). Resolved contacts are the ones with a value for identifier, email or phone number",
+ "summary": "List Contacts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/contact_sort_param"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactCreate",
+ "description": "Create a new Contact",
+ "summary": "Create Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/extended_contact"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactDetails",
+ "summary": "Show Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get a contact belonging to the account using ID",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_show_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactUpdate",
+ "summary": "Update Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a contact belonging to the account using ID",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "204": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_base"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactDelete",
+ "summary": "Delete Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a contact belonging to the account using ID",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactConversations",
+ "summary": "Contact Conversations",
+ "description": "Get conversations associated with that contact",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_conversations_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/labels": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "list-all-labels-of-a-contact",
+ "summary": "List Labels",
+ "description": "Lists all the labels of a contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_labels"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contact-add-labels",
+ "summary": "Add Labels",
+ "description": "Add labels to a contact. Note that this API would overwrite the existing list of labels associated to the conversation.",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "labels"
+ ],
+ "properties": {
+ "labels": {
+ "type": "array",
+ "description": "Array of labels (comma-separated strings)",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "support",
+ "billing"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_labels"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/search": {
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactSearch",
+ "description": "Search the resolved contacts using a search key, currently supports email search (Page size = 15). Resolved contacts are the ones with a value for identifier, email or phone number",
+ "summary": "Search Contacts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Search using contact `name`, `identifier`, `email` or `phone number`"
+ },
+ {
+ "$ref": "#/components/parameters/contact_sort_param"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/filter": {
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactFilter",
+ "description": "Filter contacts with custom filter options and pagination",
+ "summary": "Contact Filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "attribute_key": {
+ "type": "string",
+ "description": "filter attribute name"
+ },
+ "filter_operator": {
+ "type": "string",
+ "description": "filter operator name",
+ "enum": [
+ "equal_to",
+ "not_equal_to",
+ "contains",
+ "does_not_contain"
+ ]
+ },
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "array of the attribute values to filter"
+ },
+ "query_operator": {
+ "type": "string",
+ "description": "query operator name",
+ "enum": [
+ "AND",
+ "OR"
+ ]
+ }
+ }
+ },
+ "example": [
+ {
+ "attribute_key": "name",
+ "filter_operator": "equal_to",
+ "values": [
+ "en"
+ ],
+ "query_operator": "AND"
+ },
+ {
+ "attribute_key": "country_code",
+ "filter_operator": "equal_to",
+ "values": [
+ "us"
+ ],
+ "query_operator": null
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/contact_inboxes": {
+ "post": {
+ "tags": [
+ "Contact"
+ ],
+ "operationId": "contactInboxCreation",
+ "description": "Create a contact inbox record for an inbox",
+ "summary": "Create contact inbox",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact",
+ "required": true
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_inboxes"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "Incorrect payload",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/contactable_inboxes": {
+ "get": {
+ "tags": [
+ "Contact"
+ ],
+ "operationId": "contactableInboxesGet",
+ "description": "Get List of contactable Inboxes",
+ "summary": "Get Contactable Inboxes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contactable_inboxes_response"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "Incorrect payload",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/automation_rules": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "get-account-automation-rule",
+ "summary": "List all automation rules in an account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "description": "Get details of automation rules in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "add-new-automation-rule-to-account",
+ "summary": "Add a new automation rule",
+ "description": "Add a new automation rule to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/automation_rules/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the Automation Rule",
+ "required": true
+ }
+ ],
+ "get": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "get-details-of-a-single-automation-rule",
+ "summary": "Get a automation rule details",
+ "description": "Get the details of a automation rule in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be updated."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ },
+ "example": {
+ "payload": {
+ "id": 90,
+ "account_id": 1,
+ "name": "add-label-bug-if-message-contains-bug",
+ "description": "add-label-bug-if-message-contains-bug",
+ "event_name": "message_created",
+ "conditions": [
+ {
+ "values": [
+ "incoming"
+ ],
+ "attribute_key": "message_type",
+ "query_operator": "and",
+ "filter_operator": "equal_to"
+ },
+ {
+ "values": [
+ "bug"
+ ],
+ "attribute_key": "content",
+ "filter_operator": "contains"
+ }
+ ],
+ "actions": [
+ {
+ "action_name": "add_label",
+ "action_params": [
+ "bugs",
+ "support-query"
+ ]
+ }
+ ],
+ "created_on": 1650555440,
+ "active": true
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given rule ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "update-automation-rule-in-account",
+ "summary": "Update automation rule in Account",
+ "description": "Update a automation rule in account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Rule not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "delete-automation-rule-from-account",
+ "summary": "Remove a automation rule from account",
+ "description": "Remove a automation rule from account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "automation rule not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-portal-to-account",
+ "summary": "Add a new portal",
+ "description": "Add a new portal to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "get-portal",
+ "summary": "List all portals in an account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "description": "Get details of portals in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal"
+ },
+ "example": {
+ "payload": [
+ {
+ "id": 4,
+ "color": "#1F93FF",
+ "custom_domain": "chatwoot.help",
+ "header_text": "Handbook",
+ "homepage_link": "https://www.chatwoot.com",
+ "name": "Handbook",
+ "page_title": "Handbook",
+ "slug": "handbook",
+ "archived": false,
+ "account_id": 1,
+ "config": {
+ "allowed_locales": [
+ {
+ "code": "en",
+ "articles_count": 32,
+ "categories_count": 9
+ }
+ ]
+ },
+ "inbox": {
+ "id": 37,
+ "avatar_url": "https://example.com/avatar.png",
+ "channel_id": 1,
+ "name": "Chatwoot",
+ "channel_type": "Channel::WebWidget",
+ "greeting_enabled": true,
+ "widget_color": "#1F93FF",
+ "website_url": "chatwoot.com"
+ },
+ "logo": {
+ "id": 19399916,
+ "portal_id": 4,
+ "file_type": "image/png",
+ "account_id": 1,
+ "file_url": "https://example.com/logo.png",
+ "blob_id": 21239614,
+ "filename": "square.png"
+ },
+ "meta": {
+ "all_articles_count": 0,
+ "categories_count": 9,
+ "default_locale": "en"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "update-portal-to-account",
+ "summary": "Update a portal",
+ "description": "Update a portal to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_single"
+ },
+ "example": {
+ "payload": {
+ "id": 123,
+ "archived": false,
+ "color": "#1F93FF",
+ "config": {
+ "allowed_locales": [
+ {
+ "code": "en",
+ "articles_count": 32,
+ "categories_count": 9
+ }
+ ]
+ },
+ "custom_domain": "chatwoot.help",
+ "header_text": "Handbook",
+ "homepage_link": "https://www.chatwoot.com",
+ "name": "Handbook",
+ "slug": "handbook",
+ "page_title": "Handbook",
+ "account_id": 123,
+ "inbox": {
+ "id": 123,
+ "name": "Chatwoot",
+ "website_url": "chatwoot.com",
+ "channel_type": "Channel::WebWidget",
+ "avatar_url": "https://example.com/avatar.png",
+ "widget_color": "#1F93FF",
+ "website_token": "4cWzuf9i9jxN9tbnv8K9STKU",
+ "enable_auto_assignment": true,
+ "web_widget_script": "",
+ "welcome_title": "Hi there ! 🙌🏼",
+ "welcome_tagline": "We make it simple to connect with us.",
+ "greeting_enabled": true,
+ "greeting_message": "Hey there 👋, Thank you for reaching out to us.",
+ "channel_id": 123,
+ "working_hours_enabled": true,
+ "enable_email_collect": true,
+ "csat_survey_enabled": true,
+ "timezone": "America/Los_Angeles",
+ "business_name": "Chatwoot",
+ "hmac_mandatory": true
+ },
+ "logo": {
+ "id": 123,
+ "portal_id": 123,
+ "file_type": "image/png",
+ "account_id": 123,
+ "file_url": "https://example.com/logo.png",
+ "blob_id": 123,
+ "filename": "square.png"
+ },
+ "meta": {
+ "all_articles_count": 32,
+ "categories_count": 9,
+ "default_locale": "en"
+ }
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Portal not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}/categories": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-category-to-account",
+ "summary": "Add a new category",
+ "description": "Add a new category to portal",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/category_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/category"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}/articles": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-article-to-account",
+ "summary": "Add a new article",
+ "description": "Add a new article to portal",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/article_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/article"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/meta": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationListMeta",
+ "description": "Get open, unassigned and all Conversation counts",
+ "summary": "Get Conversation Counts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "status",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "all",
+ "open",
+ "resolved",
+ "pending",
+ "snoozed"
+ ],
+ "default": "open"
+ },
+ "description": "Filter by conversation status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filters conversations with messages containing the search term"
+ },
+ {
+ "name": "inbox_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "team_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "labels",
+ "in": "query",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "mine_count": {
+ "type": "number"
+ },
+ "unassigned_count": {
+ "type": "number"
+ },
+ "assigned_count": {
+ "type": "number"
+ },
+ "all_count": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationList",
+ "description": "List all the conversations with pagination",
+ "summary": "Conversations List",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "assignee_type",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "me",
+ "unassigned",
+ "all",
+ "assigned"
+ ],
+ "default": "all"
+ },
+ "description": "Filter conversations by assignee type."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "all",
+ "open",
+ "resolved",
+ "pending",
+ "snoozed"
+ ],
+ "default": "open"
+ },
+ "description": "Filter by conversation status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filters conversations with messages containing the search term"
+ },
+ {
+ "name": "inbox_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "team_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "labels",
+ "in": "query",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "integer",
+ "default": 1
+ },
+ "description": "paginate through conversations"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_list"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "newConversation",
+ "summary": "Create New Conversation",
+ "description": "Creating a conversation in chatwoot requires a source id. \n\n Learn more about source_id: https://www.chatwoot.com/hc/user-guide/articles/1677839703-how-to-create-an-api-channel-inbox#send-messages-to-the-api-channel",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the conversation"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account Id"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ }
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/filter": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationFilter",
+ "description": "Filter conversations with custom filter options and pagination",
+ "summary": "Conversations Filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "attribute_key": {
+ "type": "string",
+ "description": "filter attribute name"
+ },
+ "filter_operator": {
+ "type": "string",
+ "description": "filter operator name",
+ "enum": [
+ "equal_to",
+ "not_equal_to",
+ "contains",
+ "does_not_contain"
+ ]
+ },
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "array of the attribute values to filter"
+ },
+ "query_operator": {
+ "type": "string",
+ "description": "query operator name",
+ "enum": [
+ "AND",
+ "OR"
+ ]
+ }
+ }
+ },
+ "example": [
+ {
+ "attribute_key": "browser_language",
+ "filter_operator": "not_equal_to",
+ "values": [
+ "en"
+ ],
+ "query_operator": "AND"
+ },
+ {
+ "attribute_key": "status",
+ "filter_operator": "equal_to",
+ "values": [
+ "pending"
+ ],
+ "query_operator": null
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_list"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "get-details-of-a-conversation",
+ "summary": "Conversation Details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get all details regarding a conversation with all messages in the conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_show"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "update-conversation",
+ "summary": "Update Conversation",
+ "description": "Update Conversation Attributes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "priority": {
+ "type": "string",
+ "enum": [
+ "urgent",
+ "high",
+ "medium",
+ "low",
+ "none"
+ ],
+ "description": "The priority of the conversation",
+ "example": "high"
+ },
+ "sla_policy_id": {
+ "type": "number",
+ "description": "The ID of the SLA policy (Available only in Enterprise edition)",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/toggle_status": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "toggle-status-of-a-conversation",
+ "summary": "Toggle Status",
+ "description": "Toggles the status of the conversation between open and resolved",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "status"
+ ],
+ "properties": {
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "The status of the conversation",
+ "example": "open"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_status_toggle"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/toggle_priority": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "toggle-priority-of-a-conversation",
+ "summary": "Toggle Priority",
+ "description": "Toggles the priority of conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "priority"
+ ],
+ "properties": {
+ "priority": {
+ "type": "string",
+ "enum": [
+ "urgent",
+ "high",
+ "medium",
+ "low",
+ "none"
+ ],
+ "description": "The priority of the conversation",
+ "example": "high"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/custom_attributes": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "update-custom-attributes-of-a-conversation",
+ "summary": "Update Custom Attributes",
+ "description": "Updates the custom attributes of a conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "custom_attributes"
+ ],
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes to be set for the conversation",
+ "example": {
+ "order_id": "12345",
+ "previous_conversation": "67890"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the conversation"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/assignments": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "assign-a-conversation",
+ "summary": "Assign Conversation",
+ "description": "Assign a conversation to an agent or a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "assignee_id": {
+ "type": "number",
+ "description": "Id of the assignee user",
+ "example": 1
+ },
+ "team_id": {
+ "type": "number",
+ "description": "Id of the team. If the assignee_id is present, this param would be ignored",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/labels": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "list-all-labels-of-a-conversation",
+ "summary": "List Labels",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Lists all the labels of a conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_labels"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversation-add-labels",
+ "summary": "Add Labels",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Add labels to a conversation. Note that this API would overwrite the existing list of labels associated to the conversation.",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "labels"
+ ],
+ "properties": {
+ "labels": {
+ "type": "array",
+ "description": "Array of labels (comma-separated strings)",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "support",
+ "billing"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_labels"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "listAllInboxes",
+ "summary": "List all inboxes",
+ "description": "List all inboxes available in the current account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of inboxes",
+ "items": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "GetInbox",
+ "summary": "Get an inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get an inbox available in the current account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/": {
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "inboxCreation",
+ "summary": "Create an inbox",
+ "description": "You can create more than one website inbox in each account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}": {
+ "patch": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "updateInbox",
+ "summary": "Update Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update an existing inbox",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/agent_bot": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "getInboxAgentBot",
+ "summary": "Show Inbox Agent Bot",
+ "description": "See if an agent bot is associated to the Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found, Agent bot not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/set_agent_bot": {
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "updateAgentBot",
+ "summary": "Add or remove agent bot",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "To add an agent bot pass agent_bot id, to remove agent bot from an inbox pass null",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "agent_bot"
+ ],
+ "properties": {
+ "agent_bot": {
+ "type": "number",
+ "description": "Agent bot ID",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "204": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Inbox not found, Agent bot not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inbox_members/{inbox_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/inbox_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "get-inbox-members",
+ "summary": "List Agents in Inbox",
+ "description": "Get Details of Agents in an Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/inbox_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inbox_members": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "add-new-agent-to-inbox",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "integer",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the inbox",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "update-agents-in-inbox",
+ "summary": "Update Agents in Inbox",
+ "description": "All agents except the one passed in params will be removed",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "string",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the inbox",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "delete-agent-in-inbox",
+ "summary": "Remove an Agent from Inbox",
+ "description": "Remove an Agent from Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "string",
+ "description": "The ID of the inbox"
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be deleted from the inbox"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "list-all-messages",
+ "summary": "Get messages",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all messages of a conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "additional_attributes": {
+ "type": "object"
+ },
+ "contact": {
+ "$ref": "#/components/schemas/contact"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/agent"
+ },
+ "agent_last_seen_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "assignee_last_seen_at": {
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "payload": {
+ "type": "array",
+ "description": "Array of messages",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "create-a-new-message-in-a-conversation",
+ "summary": "Create New Message",
+ "description": "Create a new message in the conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_message_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/message"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages/{message_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ },
+ {
+ "$ref": "#/components/parameters/message_id"
+ }
+ ],
+ "delete": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "delete-a-message",
+ "summary": "Delete a message",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a message and it's attachments from the conversation.",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The message or conversation does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/apps": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "get-details-of-all-integrations",
+ "summary": "List all the Integrations",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of all Integrations available for the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of Integration apps",
+ "items": {
+ "$ref": "#/components/schemas/integrations_app"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Url not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/hooks": {
+ "post": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "create-an-integration-hook",
+ "summary": "Create an integration hook",
+ "description": "Create an integration hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/hooks/{hook_id}": {
+ "patch": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "update-an-integrations-hook",
+ "summary": "Update an Integration Hook",
+ "description": "Update an Integration Hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/hook_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "delete-an-integration-hook",
+ "summary": "Delete an Integration Hook",
+ "description": "Delete an Integration Hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/hook_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The hook does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/profile": {
+ "get": {
+ "tags": [
+ "Profile"
+ ],
+ "operationId": "fetchProfile",
+ "summary": "Fetch user profile",
+ "description": "Get the user profile details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "list-all-teams",
+ "summary": "List all teams",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all teams available in the current account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of teams",
+ "items": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "create-a-team",
+ "summary": "Create a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Create a team in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams/{team_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "get-details-of-a-single-team",
+ "summary": "Get a team details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of a team in the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given team ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "update-a-team",
+ "summary": "Update a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a team's attributes",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "delete-a-team",
+ "summary": "Delete a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a team from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The team does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams/{team_id}/team_members": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "get-team-members",
+ "summary": "List Agents in Team",
+ "description": "Get Details of Agents in an Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all agents in the team",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "add-new-agent-to-team",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the team",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "update-agents-in-team",
+ "summary": "Update Agents in Team",
+ "description": "All agents except the one passed in params will be removed",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the team",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all agents in the team",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "delete-agent-in-team",
+ "summary": "Remove an Agent from Team",
+ "description": "Remove an Agent from Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be deleted from the team"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_filters": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "filter_type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ]
+ },
+ "required": false,
+ "description": "The type of custom filter"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "list-all-filters",
+ "summary": "List all custom filters",
+ "description": "List all custom filters in a category of a user",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of custom filters",
+ "items": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "create-a-custom-filter",
+ "summary": "Create a custom filter",
+ "description": "Create a custom filter in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_filters/{custom_filter_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/custom_filter_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "get-details-of-a-single-custom-filter",
+ "summary": "Get a custom filter details",
+ "description": "Get the details of a custom filter in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given team ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "update-a-custom-filter",
+ "summary": "Update a custom filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a custom filter's attributes",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "delete-a-custom-filter",
+ "summary": "Delete a custom filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a custom filter from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The custom filter does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/webhooks": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "list-all-webhooks",
+ "summary": "List all webhooks",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all webhooks in the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of webhook objects",
+ "items": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "create-a-webhook",
+ "summary": "Add a webhook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Add a webhook subscription to the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/webhooks/{webhook_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/webhook_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "update-a-webhook",
+ "summary": "Update a webhook object",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a webhook object in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "delete-a-webhook",
+ "summary": "Delete a webhook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a webhook from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The webhook does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/report_metric"
+ },
+ {
+ "$ref": "#/components/parameters/report_type"
+ },
+ {
+ "in": "query",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The Id of specific object in case of agent/inbox/label"
+ },
+ {
+ "in": "query",
+ "name": "since",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should start."
+ },
+ {
+ "in": "query",
+ "name": "until",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should stop."
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "list-all-conversation-statistics",
+ "summary": "Get Account reports",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get Account reports for a specific type, metric and date range",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of date based conversation statistics",
+ "items": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/summary": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/report_type"
+ },
+ {
+ "in": "query",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The Id of specific object in case of agent/inbox/label"
+ },
+ {
+ "in": "query",
+ "name": "since",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should start."
+ },
+ {
+ "in": "query",
+ "name": "until",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should stop."
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "list-all-conversation-statistics-summary",
+ "summary": "Get Account reports summary",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get Account reports summary for a specific type and date range",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_summary"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "account"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "get-account-conversation-metrics",
+ "summary": "Account Conversation Metrics",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get conversation metrics for Account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "description": "Object of account conversation metrics",
+ "properties": {
+ "open": {
+ "type": "number"
+ },
+ "unattended": {
+ "type": "number"
+ },
+ "unassigned": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/conversations/": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "agent"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ },
+ {
+ "in": "query",
+ "name": "user_id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The numeric ID of the user"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "get-agent-conversation-metrics",
+ "summary": "Agent Conversation Metrics",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get conversation metrics for Agent",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent based conversation metrics",
+ "items": {
+ "$ref": "#/components/schemas/agent_conversation_metrics"
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/accounts/{account_id}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "conversation_id",
+ "in": "path",
+ "description": "ID of the conversation",
+ "required": true,
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversation"
+ ],
+ "summary": "Get messages from a conversation",
+ "description": "Returns all messages from a specific conversation",
+ "operationId": "getConversationMessages",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_messages"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "bad_request_error": {
+ "title": "data",
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/request_error"
+ }
+ }
+ }
+ },
+ "request_error": {
+ "type": "object",
+ "properties": {
+ "field": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "code": {
+ "type": "string"
+ }
+ }
+ },
+ "generic_id": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ }
+ }
+ },
+ "canned_response": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the canned response"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "Account Id"
+ },
+ "short_code": {
+ "type": "string",
+ "description": "Short Code for quick access of the canned response"
+ },
+ "content": {
+ "type": "string",
+ "description": "Message content for canned response"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "The date and time when the canned response was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "The date and time when the canned response was updated"
+ }
+ }
+ },
+ "custom_attribute": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Identifier"
+ },
+ "attribute_display_name": {
+ "type": "string",
+ "description": "Attribute display name"
+ },
+ "attribute_display_type": {
+ "type": "string",
+ "description": "Attribute display type (text, number, currency, percent, link, date, list, checkbox)"
+ },
+ "attribute_description": {
+ "type": "string",
+ "description": "Attribute description"
+ },
+ "attribute_key": {
+ "type": "string",
+ "description": "Attribute unique key value"
+ },
+ "regex_pattern": {
+ "type": "string",
+ "description": "Regex pattern"
+ },
+ "regex_cue": {
+ "type": "string",
+ "description": "Regex cue"
+ },
+ "attribute_values": {
+ "type": "string",
+ "description": "Attribute values"
+ },
+ "attribute_model": {
+ "type": "string",
+ "description": "Attribute type(conversation_attribute/contact_attribute)"
+ },
+ "default_value": {
+ "type": "string",
+ "description": "Attribute default value"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "The date and time when the custom attribute was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "The date and time when the custom attribute was updated"
+ }
+ }
+ },
+ "automation_rule": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "description": "Response payload that contains automation rule(s)",
+ "oneOf": [
+ {
+ "type": "array",
+ "description": "Array of automation rules (for listing endpoint)",
+ "items": {
+ "$ref": "#/components/schemas/automation_rule_item"
+ }
+ },
+ {
+ "type": "object",
+ "description": "Single automation rule (for show/create/update endpoints)",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/automation_rule_item"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "automation_rule_item": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The ID of the automation rule"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "Account Id"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the rule",
+ "example": "Add label on message create event"
+ },
+ "description": {
+ "type": "string",
+ "description": "Description to give more context about the rule",
+ "example": "Add label support and sales on message create event if incoming message content contains text help"
+ },
+ "event_name": {
+ "type": "string",
+ "description": "Automation Rule event, on which we call the actions(conversation_created, conversation_updated, message_created)",
+ "enum": [
+ "conversation_created",
+ "conversation_updated",
+ "message_created"
+ ],
+ "example": "message_created"
+ },
+ "conditions": {
+ "type": "array",
+ "description": "Array of conditions on which conversation/message filter would work",
+ "items": {
+ "type": "object",
+ "properties": {
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "attribute_key": {
+ "type": "string"
+ },
+ "query_operator": {
+ "type": "string"
+ },
+ "filter_operator": {
+ "type": "string"
+ }
+ },
+ "example": {
+ "attribute_key": "content",
+ "filter_operator": "contains",
+ "values": [
+ "help"
+ ],
+ "query_operator": "and"
+ }
+ }
+ },
+ "actions": {
+ "type": "array",
+ "description": "Array of actions which we perform when condition matches",
+ "items": {
+ "type": "object",
+ "properties": {
+ "action_name": {
+ "type": "string"
+ },
+ "action_params": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "example": {
+ "action_name": "add_label",
+ "action_params": [
+ "support",
+ "sales"
+ ]
+ }
+ }
+ },
+ "created_on": {
+ "type": "integer",
+ "description": "The timestamp when the rule was created"
+ },
+ "active": {
+ "type": "boolean",
+ "description": "Enable/disable automation rule"
+ }
+ }
+ },
+ "portal": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/portal_item"
+ }
+ }
+ }
+ },
+ "portal_config": {
+ "type": "object",
+ "description": "Configuration settings for the portal",
+ "properties": {
+ "allowed_locales": {
+ "type": "array",
+ "description": "List of allowed locales for the portal",
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "description": "The language code"
+ },
+ "articles_count": {
+ "type": "integer",
+ "description": "Number of articles in this locale"
+ },
+ "categories_count": {
+ "type": "integer",
+ "description": "Number of categories in this locale"
+ }
+ }
+ }
+ }
+ }
+ },
+ "portal_logo": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the logo file"
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "ID of the portal this logo belongs to"
+ },
+ "file_type": {
+ "type": "string",
+ "description": "MIME type of the file"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account"
+ },
+ "file_url": {
+ "type": "string",
+ "description": "URL to access the logo file"
+ },
+ "blob_id": {
+ "type": "integer",
+ "description": "ID of the blob"
+ },
+ "filename": {
+ "type": "string",
+ "description": "Name of the file"
+ }
+ }
+ },
+ "portal_meta": {
+ "type": "object",
+ "properties": {
+ "all_articles_count": {
+ "type": "integer",
+ "description": "Total number of articles"
+ },
+ "archived_articles_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of archived articles"
+ },
+ "published_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of published articles"
+ },
+ "draft_articles_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of draft articles"
+ },
+ "categories_count": {
+ "type": "integer",
+ "description": "Number of categories"
+ },
+ "default_locale": {
+ "type": "string",
+ "description": "Default locale for the portal"
+ }
+ }
+ },
+ "portal_item": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The ID of the portal"
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Whether the portal is archived"
+ },
+ "color": {
+ "type": "string",
+ "description": "The color code for the portal"
+ },
+ "config": {
+ "$ref": "#/components/schemas/portal_config"
+ },
+ "custom_domain": {
+ "type": "string",
+ "description": "Custom domain for the portal"
+ },
+ "header_text": {
+ "type": "string",
+ "description": "The header text for the portal"
+ },
+ "homepage_link": {
+ "type": "string",
+ "description": "Homepage link for the portal"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the portal"
+ },
+ "slug": {
+ "type": "string",
+ "description": "URL slug for the portal"
+ },
+ "page_title": {
+ "type": "string",
+ "description": "Page title for the portal"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account the portal belongs to"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox"
+ },
+ "logo": {
+ "$ref": "#/components/schemas/portal_logo"
+ },
+ "meta": {
+ "$ref": "#/components/schemas/portal_meta"
+ }
+ }
+ },
+ "category": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string",
+ "description": "The text content."
+ },
+ "locale": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "slug": {
+ "type": "string"
+ },
+ "position": {
+ "type": "integer"
+ },
+ "portal_id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "associated_category_id": {
+ "type": "integer",
+ "description": "To associate similar categories to each other, e.g same category of product documentation in different languages"
+ },
+ "parent_category_id": {
+ "type": "integer",
+ "description": "To define parent category, e.g product documentation has multiple level features in sales category or in engineering category."
+ }
+ }
+ },
+ "article": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content."
+ },
+ "meta": {
+ "type": "object"
+ },
+ "position": {
+ "type": "integer"
+ },
+ "status": {
+ "type": "integer",
+ "enum": [
+ "draft",
+ "published",
+ "archived"
+ ]
+ },
+ "title": {
+ "type": "string"
+ },
+ "slug": {
+ "type": "string"
+ },
+ "views": {
+ "type": "integer"
+ },
+ "portal_id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "author_id": {
+ "type": "integer"
+ },
+ "category_id": {
+ "type": "integer"
+ },
+ "folder_id": {
+ "type": "integer"
+ },
+ "associated_article_id": {
+ "type": "integer",
+ "description": "To associate similar articles to each other, e.g to provide the link for the reference."
+ }
+ }
+ },
+ "contact": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact"
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact",
+ "example": {
+ "attribute_key": "attribute_value",
+ "signed_up_at": "dd/mm/yyyy"
+ }
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "The last activity at of the contact"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The created at of the contact"
+ },
+ "contact_inboxes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_inboxes"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the conversation"
+ },
+ "messages": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ }
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account Id"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "UUID of the conversation"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the conversation"
+ },
+ "agent_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the agent"
+ },
+ "assignee_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the assignee"
+ },
+ "can_reply": {
+ "type": "boolean",
+ "description": "Whether the conversation can be replied to"
+ },
+ "contact_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The object to save custom attributes for conversation, accepts custom attributes key and value"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ },
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The labels of the conversation"
+ },
+ "muted": {
+ "type": "boolean",
+ "description": "Whether the conversation is muted"
+ },
+ "snoozed_until": {
+ "type": "number",
+ "description": "The time at which the conversation will be unmuted"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "The status of the conversation"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The time at which conversation was created"
+ },
+ "updated_at": {
+ "type": "number",
+ "description": "The time at which conversation was updated"
+ },
+ "timestamp": {
+ "type": "string",
+ "description": "The time at which conversation was created"
+ },
+ "first_reply_created_at": {
+ "type": "number",
+ "description": "The time at which the first reply was created"
+ },
+ "unread_count": {
+ "type": "number",
+ "description": "The number of unread messages"
+ },
+ "last_non_activity_message": {
+ "$ref": "#/components/schemas/message"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the conversation"
+ },
+ "priority": {
+ "type": "string",
+ "description": "The priority of the conversation"
+ },
+ "waiting_since": {
+ "type": "number",
+ "description": "The time at which the conversation was waiting"
+ },
+ "sla_policy_id": {
+ "type": "number",
+ "description": "The ID of the SLA policy"
+ },
+ "applied_sla": {
+ "type": "object",
+ "description": "The applied SLA"
+ },
+ "sla_events": {
+ "type": "array"
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content of the message"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The ID of the account"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "number",
+ "description": "The ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "enum": [
+ 0,
+ 1,
+ 2
+ ],
+ "description": "The type of the message"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The time at which message was created"
+ },
+ "updated_at": {
+ "type": "integer",
+ "description": "The time at which message was updated"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "The flags which shows whether the message is private or not"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "sent",
+ "delivered",
+ "read",
+ "failed"
+ ],
+ "description": "The status of the message"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The source ID of the message"
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_select",
+ "cards",
+ "form"
+ ],
+ "description": "The type of the template message"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "The content attributes for each content_type"
+ },
+ "sender_type": {
+ "type": "string",
+ "enum": [
+ "contact",
+ "agent",
+ "agent_bot"
+ ],
+ "description": "The type of the sender"
+ },
+ "sender_id": {
+ "type": "number",
+ "description": "The ID of the sender"
+ },
+ "external_source_ids": {
+ "type": "object",
+ "description": "The external source IDs of the message"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the message"
+ },
+ "processed_message_content": {
+ "type": "string",
+ "description": "The processed message content"
+ },
+ "sentiment": {
+ "type": "object",
+ "description": "The sentiment of the message"
+ },
+ "conversation": {
+ "type": "object",
+ "description": "The conversation object"
+ },
+ "attachment": {
+ "type": "object",
+ "description": "The file object attached to the image"
+ },
+ "sender": {
+ "type": "object",
+ "description": "User/Agent/AgentBot object"
+ }
+ }
+ },
+ "user": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "access_token": {
+ "type": "string"
+ },
+ "account_id": {
+ "type": "number"
+ },
+ "available_name": {
+ "type": "string"
+ },
+ "avatar_url": {
+ "type": "string"
+ },
+ "confirmed": {
+ "type": "boolean"
+ },
+ "display_name": {
+ "type": "string",
+ "nullable": true
+ },
+ "message_signature": {
+ "type": "string",
+ "nullable": true
+ },
+ "email": {
+ "type": "string"
+ },
+ "hmac_identifier": {
+ "type": "string"
+ },
+ "inviter_id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "pubsub_token": {
+ "type": "string"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ]
+ },
+ "ui_settings": {
+ "type": "object"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "nullable": true
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Available for users who are created through platform APIs and has custom attributes associated."
+ },
+ "accounts": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "active_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "administrator",
+ "agent"
+ ]
+ },
+ "permissions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "availability": {
+ "type": "string"
+ },
+ "availability_status": {
+ "type": "string"
+ },
+ "auto_offline": {
+ "type": "boolean"
+ },
+ "custom_role_id": {
+ "type": "number",
+ "nullable": true
+ },
+ "custom_role": {
+ "type": "object",
+ "nullable": true
+ }
+ }
+ }
+ }
+ }
+ },
+ "agent": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability status of the agent computed by Chatwoot."
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away."
+ },
+ "confirmed": {
+ "type": "boolean",
+ "description": "Whether the agent has confirmed their email address."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the agent"
+ },
+ "available_name": {
+ "type": "string",
+ "description": "The available name of the agent"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the agent"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "The role of the agent"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the agent"
+ },
+ "custom_role_id": {
+ "type": "integer",
+ "description": "The custom role id of the agent"
+ }
+ }
+ },
+ "inbox": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox"
+ },
+ "website_url": {
+ "type": "string",
+ "description": "Website URL"
+ },
+ "channel_type": {
+ "type": "string",
+ "description": "The type of the inbox"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The avatar image of the inbox"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "Widget Color used for customization of the widget"
+ },
+ "website_token": {
+ "type": "string",
+ "description": "Website Token"
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "The flag which shows whether Auto Assignment is enabled or not"
+ },
+ "web_widget_script": {
+ "type": "string",
+ "description": "Script used to load the website widget"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "The flag which shows whether greeting is enabled"
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "A greeting message when the user starts the conversation"
+ },
+ "channel_id": {
+ "type": "number",
+ "description": "ID of the channel this inbox belongs to"
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "The flag which shows whether working hours feature is enabled"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "The flag to enable collecting email from contacts"
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "The flag to enable CSAT survey"
+ },
+ "auto_assignment_config": {
+ "type": "object",
+ "description": "Configuration settings for auto assignment"
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Message to show when agents are out of office"
+ },
+ "working_hours": {
+ "type": "array",
+ "description": "Configuration for working hours of the inbox",
+ "items": {
+ "type": "object",
+ "properties": {
+ "day_of_week": {
+ "type": "number",
+ "description": "Day of the week (0-6, where 0 is Sunday)"
+ },
+ "closed_all_day": {
+ "type": "boolean",
+ "description": "Whether the inbox is closed for the entire day"
+ },
+ "open_hour": {
+ "type": "number",
+ "description": "Hour when inbox opens (0-23)"
+ },
+ "open_minutes": {
+ "type": "number",
+ "description": "Minutes of the hour when inbox opens (0-59)"
+ },
+ "close_hour": {
+ "type": "number",
+ "description": "Hour when inbox closes (0-23)"
+ },
+ "close_minutes": {
+ "type": "number",
+ "description": "Minutes of the hour when inbox closes (0-59)"
+ },
+ "open_all_day": {
+ "type": "boolean",
+ "description": "Whether the inbox is open for the entire day"
+ }
+ }
+ }
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone configuration for the inbox"
+ },
+ "callback_webhook_url": {
+ "type": "string",
+ "description": "Webhook URL for callbacks"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Whether to allow messages after a conversation is resolved"
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Whether to lock a contact to a single conversation"
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Type of sender name to display (e.g., friendly)"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name associated with the inbox"
+ },
+ "hmac_mandatory": {
+ "type": "boolean",
+ "description": "Whether HMAC verification is mandatory"
+ },
+ "selected_feature_flags": {
+ "type": "object",
+ "description": "Selected feature flags for the inbox"
+ },
+ "reply_time": {
+ "type": "string",
+ "description": "Expected reply time"
+ },
+ "messaging_service_sid": {
+ "type": "string",
+ "description": "Messaging service SID for SMS providers"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "Phone number associated with the inbox"
+ },
+ "medium": {
+ "type": "string",
+ "description": "Medium of communication (e.g., sms, email)"
+ },
+ "provider": {
+ "type": "string",
+ "description": "Provider of the channel"
+ }
+ }
+ },
+ "agent_bot": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the agent bot"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the agent bot"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot"
+ },
+ "bot_type": {
+ "type": "string",
+ "description": "The type of the bot"
+ },
+ "bot_config": {
+ "type": "object",
+ "description": "The configuration of the bot"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account ID if it's an account specific bot"
+ },
+ "access_token": {
+ "type": "string",
+ "description": "The access token for the bot"
+ },
+ "system_bot": {
+ "type": "boolean",
+ "description": "Whether the bot is a system bot"
+ }
+ }
+ },
+ "contact_inboxes": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox_contact"
+ }
+ }
+ },
+ "contactable_inboxes": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ },
+ "custom_filter": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the custom filter"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the custom filter"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ],
+ "description": "The description about the custom filter"
+ },
+ "query": {
+ "type": "object",
+ "description": "A query that needs to be saved as a custom filter"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The time at which the custom filter was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The time at which the custom filter was updated"
+ }
+ }
+ },
+ "webhook": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the webhook"
+ },
+ "url": {
+ "type": "string",
+ "description": "The url to which the events will be send"
+ },
+ "subscriptions": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_status_changed",
+ "conversation_updated",
+ "contact_created",
+ "contact_updated",
+ "message_created",
+ "message_updated",
+ "webwidget_triggered"
+ ]
+ },
+ "description": "The list of subscribed events"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The id of the account which the webhook object belongs to"
+ }
+ }
+ },
+ "account": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Account ID"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the account"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "administrator",
+ "agent"
+ ],
+ "description": "The user role in the account"
+ }
+ }
+ },
+ "account_user": {
+ "type": "array",
+ "description": "Array of account users",
+ "items": {
+ "type": "object",
+ "properties": {
+ "account_id": {
+ "type": "integer",
+ "description": "The ID of the account"
+ },
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user"
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent"
+ }
+ }
+ }
+ },
+ "platform_account": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Account ID"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the account"
+ }
+ }
+ },
+ "team": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the team"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the team"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the team"
+ },
+ "allow_auto_assign": {
+ "type": "boolean",
+ "description": "If this setting is turned on, the system would automatically assign the conversation to an agent in the team while assigning the conversation to a team"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The ID of the account with the team is a part of"
+ },
+ "is_member": {
+ "type": "boolean",
+ "description": "This field shows whether the current user is a part of the team"
+ }
+ }
+ },
+ "integrations_app": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the integration"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the integration"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the team"
+ },
+ "hook_type": {
+ "type": "string",
+ "description": "Whether the integration is an account or inbox integration"
+ },
+ "enabled": {
+ "type": "boolean",
+ "description": "Whether the integration is enabled for the account"
+ },
+ "allow_multiple_hooks": {
+ "type": "boolean",
+ "description": "Whether multiple hooks can be created for the integration"
+ },
+ "hooks": {
+ "type": "array",
+ "items": {
+ "type": "object"
+ },
+ "description": "If there are any hooks created for this integration"
+ }
+ }
+ },
+ "integrations_hook": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the integration hook"
+ },
+ "app_id": {
+ "type": "string",
+ "description": "The ID of the integration app"
+ },
+ "inbox_id": {
+ "type": "string",
+ "description": "Inbox ID if its an Inbox integration"
+ },
+ "account_id": {
+ "type": "string",
+ "description": "Account ID of the integration"
+ },
+ "status": {
+ "type": "boolean",
+ "description": "Whether the integration hook is enabled for the account"
+ },
+ "hook_type": {
+ "type": "boolean",
+ "description": "Whether its an account or inbox integration hook"
+ },
+ "settings": {
+ "type": "object",
+ "description": "The associated settings for the integration"
+ }
+ }
+ },
+ "public_contact": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Id of the contact"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The session identifier of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the contact"
+ },
+ "pubsub_token": {
+ "type": "string",
+ "description": "The token to be used to connect to chatwoot websocket"
+ }
+ }
+ },
+ "public_conversation": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Id of the conversation"
+ },
+ "inbox_id": {
+ "type": "string",
+ "description": "The inbox id of the conversation"
+ },
+ "messages": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ },
+ "description": "Messages in the conversation"
+ },
+ "contact": {
+ "type": "object",
+ "description": "The contact information associated to the conversation"
+ }
+ }
+ },
+ "public_message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Id of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "Text content of the message"
+ },
+ "message_type": {
+ "type": "string",
+ "description": "Denotes the message type"
+ },
+ "content_type": {
+ "type": "string",
+ "description": "Content type of the message"
+ },
+ "content_attributes": {
+ "type": "string",
+ "description": "Additional content attributes of the message"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "Created at time stamp of the message"
+ },
+ "conversation_id": {
+ "type": "string",
+ "description": "Conversation Id of the message"
+ },
+ "attachments": {
+ "type": "array",
+ "items": {
+ "type": "object"
+ },
+ "description": "Attachments if any"
+ },
+ "sender": {
+ "type": "object",
+ "description": "Details of the sender"
+ }
+ }
+ },
+ "public_inbox": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "Inbox identifier"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the inbox"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "The timezone defined on the inbox"
+ },
+ "working_hours": {
+ "type": "array",
+ "description": "The working hours defined on the inbox",
+ "items": {
+ "type": "object",
+ "properties": {
+ "day_of_week": {
+ "type": "integer",
+ "description": "Day of the week as a number. Sunday -> 0, Saturday -> 6"
+ },
+ "open_all_day": {
+ "type": "boolean",
+ "description": "Whether or not the business is open the whole day"
+ },
+ "closed_all_day": {
+ "type": "boolean",
+ "description": "Whether or not the business is closed the whole day"
+ },
+ "open_hour": {
+ "type": "integer",
+ "description": "Opening hour. Can be null if closed all day"
+ },
+ "open_minutes": {
+ "type": "integer",
+ "description": "Opening minute. Can be null if closed all day"
+ },
+ "close_hour": {
+ "type": "integer",
+ "description": "Closing hour. Can be null if closed all day"
+ },
+ "close_minutes": {
+ "type": "integer",
+ "description": "Closing minute. Can be null if closed all day"
+ }
+ }
+ }
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the working hours are enabled on the inbox"
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the Customer Satisfaction survey is enabled on the inbox"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the Greeting Message is enabled on the inbox"
+ },
+ "identity_validation_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the User Identity Validation is enforced on the inbox"
+ }
+ }
+ },
+ "account_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the account",
+ "example": "My Account"
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the account",
+ "example": "en"
+ },
+ "domain": {
+ "type": "string",
+ "description": "The domain of the account",
+ "example": "example.com"
+ },
+ "support_email": {
+ "type": "string",
+ "description": "The support email of the account",
+ "example": "support@example.com"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "active",
+ "suspended"
+ ],
+ "description": "The status of the account",
+ "example": "active"
+ },
+ "limits": {
+ "type": "object",
+ "description": "The limits of the account",
+ "example": {
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the account",
+ "example": {
+ }
+ }
+ }
+ },
+ "account_user_create_update_payload": {
+ "type": "object",
+ "required": [
+ "user_id",
+ "role"
+ ],
+ "properties": {
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user",
+ "example": 1
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent",
+ "example": "administrator"
+ }
+ }
+ },
+ "platform_agent_bot_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot",
+ "example": "My Agent Bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the agent bot",
+ "example": "This is a sample agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot",
+ "example": "https://example.com/webhook"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "The account ID to associate the agent bot with",
+ "example": 1
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the agent bot avatar",
+ "example": "https://example.com/avatar.png"
+ }
+ }
+ },
+ "agent_bot_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot",
+ "example": "My Agent Bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the agent bot",
+ "example": "This is a sample agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot",
+ "example": "https://example.com/webhook"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the agent bot avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "bot_type": {
+ "type": "integer",
+ "description": "The type of the bot (0 for webhook)",
+ "example": 0
+ },
+ "bot_config": {
+ "type": "object",
+ "description": "The configuration for the bot",
+ "example": {
+ }
+ }
+ }
+ },
+ "user_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the user",
+ "example": "Daniel"
+ },
+ "display_name": {
+ "type": "string",
+ "description": "Display name of the user",
+ "example": "Dan"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the user",
+ "example": "daniel@acme.inc"
+ },
+ "password": {
+ "type": "string",
+ "description": "Password must contain uppercase, lowercase letters, number and a special character",
+ "example": "Password2!"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes you want to associate with the user",
+ "example": {
+ }
+ }
+ }
+ },
+ "canned_response_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "Message content for canned response",
+ "example": "Hello, {{contact.name}}! Welcome to our service."
+ },
+ "short_code": {
+ "type": "string",
+ "description": "Short Code for quick access of the canned response",
+ "example": "welcome"
+ }
+ }
+ },
+ "custom_attribute_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "attribute_display_name": {
+ "type": "string",
+ "description": "Attribute display name",
+ "example": "Custom Attribute"
+ },
+ "attribute_display_type": {
+ "type": "integer",
+ "description": "Attribute display type (text- 0, number- 1, currency- 2, percent- 3, link- 4, date- 5, list- 6, checkbox- 7)",
+ "example": 0
+ },
+ "attribute_description": {
+ "type": "string",
+ "description": "Attribute description",
+ "example": "This is a custom attribute"
+ },
+ "attribute_key": {
+ "type": "string",
+ "description": "Attribute unique key value",
+ "example": "custom_attribute"
+ },
+ "attribute_values": {
+ "type": "array",
+ "description": "Attribute values",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "value1",
+ "value2"
+ ]
+ },
+ "attribute_model": {
+ "type": "integer",
+ "description": "Attribute type(conversation_attribute- 0, contact_attribute- 1)",
+ "example": 0
+ },
+ "regex_pattern": {
+ "type": "string",
+ "description": "Regex pattern (Only applicable for type- text). The regex pattern is used to validate the attribute value(s).",
+ "example": "^[a-zA-Z0-9]+$"
+ },
+ "regex_cue": {
+ "type": "string",
+ "description": "Regex cue message (Only applicable for type- text). The cue message is shown when the regex pattern is not matched.",
+ "example": "Please enter a valid value"
+ }
+ }
+ },
+ "agent_create_payload": {
+ "type": "object",
+ "required": [
+ "name",
+ "email",
+ "role"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Full Name of the agent",
+ "example": "John Doe"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the Agent",
+ "example": "john.doe@acme.inc"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "Whether its administrator or agent",
+ "example": "agent"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability setting of the agent.",
+ "example": "available"
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away.",
+ "example": true
+ }
+ }
+ },
+ "agent_update_payload": {
+ "type": "object",
+ "required": [
+ "role"
+ ],
+ "properties": {
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "Whether its administrator or agent",
+ "example": "agent"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability status of the agent.",
+ "example": "available"
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away.",
+ "example": true
+ }
+ }
+ },
+ "contact_create_payload": {
+ "type": "object",
+ "required": [
+ "inbox_id"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox to which the contact belongs",
+ "example": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "name of the contact",
+ "example": "Alice"
+ },
+ "email": {
+ "type": "string",
+ "description": "email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "whether the contact is blocked or not",
+ "example": false
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the contact avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "A unique identifier for the contact in external system",
+ "example": "1234567890"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "An object where you can store additional attributes for contact. example {\"type\":\"customer\", \"age\":30}",
+ "example": {
+ "type": "customer",
+ "age": 30
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "An object where you can store custom attributes for contact. example {\"type\":\"customer\", \"age\":30}, this should have a valid custom attribute definition.",
+ "example": {
+ }
+ }
+ }
+ },
+ "contact_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "name of the contact",
+ "example": "Alice"
+ },
+ "email": {
+ "type": "string",
+ "description": "email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "whether the contact is blocked or not",
+ "example": false
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the contact avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "A unique identifier for the contact in external system",
+ "example": "1234567890"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "An object where you can store additional attributes for contact. example {\"type\":\"customer\", \"age\":30}",
+ "example": {
+ "type": "customer",
+ "age": 30
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "An object where you can store custom attributes for contact. example {\"type\":\"customer\", \"age\":30}, this should have a valid custom attribute definition.",
+ "example": {
+ }
+ }
+ }
+ },
+ "conversation_create_payload": {
+ "type": "object",
+ "required": [
+ "source_id",
+ "inbox_id"
+ ],
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Conversation source id",
+ "example": "1234567890"
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "Id of inbox in which the conversation is created
Allowed Inbox Types: Website, Phone, Api, Email",
+ "example": 1
+ },
+ "contact_id": {
+ "type": "integer",
+ "description": "Contact Id for which conversation is created",
+ "example": 1
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "Lets you specify attributes like browser information",
+ "example": {
+ "browser": "Chrome",
+ "browser_version": "89.0.4389.82",
+ "os": "Windows",
+ "os_version": "10"
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The object to save custom attributes for conversation, accepts custom attributes key and value",
+ "example": {
+ "attribute_key": "attribute_value",
+ "priority_conversation_number": 3
+ }
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "Specify the conversation whether it's pending, open, closed",
+ "example": "open"
+ },
+ "assignee_id": {
+ "type": "integer",
+ "description": "Agent Id for assigning a conversation to an agent",
+ "example": 1
+ },
+ "team_id": {
+ "type": "integer",
+ "description": "Team Id for assigning a conversation to a team\\",
+ "example": 1
+ },
+ "snoozed_until": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Snoozed until date time",
+ "example": "2030-07-21T17:32:28Z"
+ },
+ "message": {
+ "type": "object",
+ "description": "The initial message to be sent to the conversation",
+ "required": [
+ "content"
+ ],
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "The content of the message",
+ "example": "Hello, how can I help you?"
+ },
+ "template_params": {
+ "type": "object",
+ "description": "The template params for the message in case of whatsapp Channel",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "sample_issue_resolution"
+ },
+ "category": {
+ "type": "string",
+ "description": "Category of the template",
+ "example": "UTILITY"
+ },
+ "language": {
+ "type": "string",
+ "description": "Language of the template",
+ "example": "en_US"
+ },
+ "processed_params": {
+ "type": "object",
+ "description": "The processed param values for template variables in template",
+ "example": {
+ "1": "Chatwoot"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation_message_create_payload": {
+ "type": "object",
+ "required": [
+ "content"
+ ],
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "The content of the message",
+ "example": "Hello, how can I help you?"
+ },
+ "message_type": {
+ "type": "string",
+ "enum": [
+ "outgoing",
+ "incoming"
+ ],
+ "description": "The type of the message",
+ "example": "outgoing"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "Flag to identify if it is a private note",
+ "example": false
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_email",
+ "cards",
+ "input_select",
+ "form",
+ "article"
+ ],
+ "description": "Content type of the message",
+ "example": "text"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "Attributes based on the content type",
+ "example": {
+ }
+ },
+ "campaign_id": {
+ "type": "integer",
+ "description": "The campaign id to which the message belongs",
+ "example": 1
+ },
+ "template_params": {
+ "type": "object",
+ "description": "The template params for the message in case of whatsapp Channel",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "sample_issue_resolution"
+ },
+ "category": {
+ "type": "string",
+ "description": "Category of the template",
+ "example": "UTILITY"
+ },
+ "language": {
+ "type": "string",
+ "description": "Language of the template",
+ "example": "en_US"
+ },
+ "processed_params": {
+ "type": "object",
+ "description": "The processed param values for template variables in template",
+ "example": {
+ "1": "Chatwoot"
+ }
+ }
+ }
+ }
+ }
+ },
+ "inbox_create_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox",
+ "example": "Support"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Image file for avatar"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Enable greeting message",
+ "example": true
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "Greeting message to be displayed on the widget",
+ "example": "Hello, how can I help you?"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "Enable email collection",
+ "example": true
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Enable CSAT survey",
+ "example": true
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "Enable Auto Assignment",
+ "example": true
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Enable working hours",
+ "example": true
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Out of office message to be displayed on the widget",
+ "example": "We are currently out of office. Please leave a message and we will get back to you."
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone of the inbox",
+ "example": "America/New_York"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Allow messages after conversation is resolved",
+ "example": true
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Lock to single conversation",
+ "example": true
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "Id of the help center portal to attach to the inbox",
+ "example": 1
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Sender name type for the inbox",
+ "enum": [
+ "friendly",
+ "professional"
+ ],
+ "example": "friendly"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name for the inbox",
+ "example": "My Business"
+ },
+ "channel": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "Type of the channel",
+ "enum": [
+ "web_widget",
+ "api",
+ "email",
+ "line",
+ "telegram",
+ "whatsapp",
+ "sms"
+ ],
+ "example": "web_widget"
+ },
+ "website_url": {
+ "type": "string",
+ "description": "URL at which the widget will be loaded",
+ "example": "https://example.com"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget",
+ "example": "Welcome to our support"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget",
+ "example": "We are here to help you"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "A Hex-color string used to customize the widget",
+ "example": "#FF5733"
+ }
+ }
+ }
+ }
+ },
+ "inbox_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox",
+ "example": "Support"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Image file for avatar"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Enable greeting message",
+ "example": true
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "Greeting message to be displayed on the widget",
+ "example": "Hello, how can I help you?"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "Enable email collection",
+ "example": true
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Enable CSAT survey",
+ "example": true
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "Enable Auto Assignment",
+ "example": true
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Enable working hours",
+ "example": true
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Out of office message to be displayed on the widget",
+ "example": "We are currently out of office. Please leave a message and we will get back to you."
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone of the inbox",
+ "example": "America/New_York"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Allow messages after conversation is resolved",
+ "example": true
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Lock to single conversation",
+ "example": true
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "Id of the help center portal to attach to the inbox",
+ "example": 1
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Sender name type for the inbox",
+ "enum": [
+ "friendly",
+ "professional"
+ ],
+ "example": "friendly"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name for the inbox",
+ "example": "My Business"
+ },
+ "channel": {
+ "type": "object",
+ "properties": {
+ "website_url": {
+ "type": "string",
+ "description": "URL at which the widget will be loaded",
+ "example": "https://example.com"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget",
+ "example": "Welcome to our support"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget",
+ "example": "We are here to help you"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "A Hex-color string used to customize the widget",
+ "example": "#FF5733"
+ }
+ }
+ }
+ }
+ },
+ "team_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the team",
+ "example": "Support Team"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the team",
+ "example": "This is a team of support agents"
+ },
+ "allow_auto_assign": {
+ "type": "boolean",
+ "description": "If this setting is turned on, the system would automatically assign the conversation to an agent in the team while assigning the conversation to a team",
+ "example": true
+ }
+ }
+ },
+ "custom_filter_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the custom filter",
+ "example": "My Custom Filter"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ],
+ "description": "The description about the custom filter",
+ "example": "conversation"
+ },
+ "query": {
+ "type": "object",
+ "description": "A query that needs to be saved as a custom filter",
+ "example": {
+ }
+ }
+ }
+ },
+ "webhook_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "The url where the events should be sent",
+ "example": "https://example.com/webhook"
+ },
+ "subscriptions": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_status_changed",
+ "conversation_updated",
+ "message_created",
+ "message_updated",
+ "contact_created",
+ "contact_updated",
+ "webwidget_triggered"
+ ]
+ },
+ "description": "The events you want to subscribe to.",
+ "example": [
+ "conversation_created",
+ "conversation_status_changed"
+ ]
+ }
+ }
+ },
+ "integrations_hook_create_payload": {
+ "type": "object",
+ "properties": {
+ "app_id": {
+ "type": "integer",
+ "description": "The ID of app for which integration hook is being created",
+ "example": 1
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "The inbox ID, if the hook is an inbox hook",
+ "example": 1
+ },
+ "status": {
+ "type": "integer",
+ "description": "The status of the integration (0 for inactive, 1 for active)",
+ "example": 1
+ },
+ "settings": {
+ "type": "object",
+ "description": "The settings required by the integration",
+ "example": {
+ }
+ }
+ }
+ },
+ "integrations_hook_update_payload": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "integer",
+ "description": "The status of the integration (0 for inactive, 1 for active)",
+ "example": 1
+ },
+ "settings": {
+ "type": "object",
+ "description": "The settings required by the integration",
+ "example": {
+ }
+ }
+ }
+ },
+ "automation_rule_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Rule name",
+ "example": "Add label on message create event"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the automation and actions",
+ "example": "Add label support and sales on message create event if incoming message content contains text help"
+ },
+ "event_name": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_updated",
+ "message_created"
+ ],
+ "example": "message_created",
+ "description": "The event when you want to execute the automation actions"
+ },
+ "active": {
+ "type": "boolean",
+ "description": "Enable/disable automation rule"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Array of actions which you want to perform when condition matches, e.g add label support if message contains content help.",
+ "items": {
+ "type": "object",
+ "example": {
+ "action_name": "add_label",
+ "action_params": [
+ "support"
+ ]
+ }
+ }
+ },
+ "conditions": {
+ "type": "array",
+ "description": "Array of conditions on which conversation filter would work, e.g message content contains text help.",
+ "items": {
+ "type": "object",
+ "example": {
+ "attribute_key": "content",
+ "filter_operator": "contains",
+ "query_operator": "OR",
+ "values": [
+ "help"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "portal_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "color": {
+ "type": "string",
+ "description": "Header color for help-center in hex format",
+ "example": "#FFFFFF"
+ },
+ "custom_domain": {
+ "type": "string",
+ "description": "Custom domain to display help center.",
+ "example": "chatwoot.help"
+ },
+ "header_text": {
+ "type": "string",
+ "description": "Help center header",
+ "example": "Handbook"
+ },
+ "homepage_link": {
+ "type": "string",
+ "description": "link to main dashboard",
+ "example": "https://www.chatwoot.com/"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name for the portal",
+ "example": "Handbook"
+ },
+ "page_title": {
+ "type": "string",
+ "description": "Page title for the portal",
+ "example": "Handbook"
+ },
+ "slug": {
+ "type": "string",
+ "description": "Slug for the portal to display in link",
+ "example": "handbook"
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Status to check if portal is live",
+ "example": false
+ },
+ "config": {
+ "type": "object",
+ "description": "Configuration about supporting locales",
+ "example": {
+ "allowed_locales": [
+ "en",
+ "es"
+ ],
+ "default_locale": "en"
+ }
+ }
+ }
+ },
+ "category_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the category",
+ "example": "Category Name"
+ },
+ "description": {
+ "type": "string",
+ "description": "A description for the category",
+ "example": "Category description"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Category position in the portal list to sort",
+ "example": 1
+ },
+ "slug": {
+ "type": "string",
+ "description": "The category slug used in the URL",
+ "example": "category-name"
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the category",
+ "example": "en"
+ },
+ "icon": {
+ "type": "string",
+ "description": "The icon of the category as a string (emoji)",
+ "example": "📚"
+ },
+ "parent_category_id": {
+ "type": "integer",
+ "description": "To define parent category, e.g product documentation has multiple level features in sales category or in engineering category.",
+ "example": 1
+ },
+ "associated_category_id": {
+ "type": "integer",
+ "description": "To associate similar categories to each other, e.g same category of product documentation in different languages",
+ "example": 2
+ }
+ }
+ },
+ "article_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "title": {
+ "type": "string",
+ "description": "The title of the article",
+ "example": "Article Title"
+ },
+ "slug": {
+ "type": "string",
+ "description": "The slug of the article",
+ "example": "article-title"
+ },
+ "position": {
+ "type": "integer",
+ "description": "article position in category",
+ "example": 1
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content.",
+ "example": "This is the content of the article"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the article",
+ "example": "This is the description of the article"
+ },
+ "category_id": {
+ "type": "integer",
+ "description": "The category id of the article",
+ "example": 1
+ },
+ "author_id": {
+ "type": "integer",
+ "description": "The author agent id of the article",
+ "example": 1
+ },
+ "associated_article_id": {
+ "type": "integer",
+ "description": "To associate similar articles to each other, e.g to provide the link for the reference.",
+ "example": 2
+ },
+ "status": {
+ "type": "integer",
+ "description": "The status of the article. 0 for draft, 1 for published, 2 for archived",
+ "example": 1
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the article",
+ "example": "en"
+ },
+ "meta": {
+ "type": "object",
+ "description": "Use for search",
+ "example": {
+ "tags": [
+ "article_name"
+ ],
+ "title": "article title",
+ "description": "article description"
+ }
+ }
+ }
+ },
+ "public_contact_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "External identifier of the contact",
+ "example": "1234567890"
+ },
+ "identifier_hash": {
+ "type": "string",
+ "description": "Identifier hash prepared for HMAC authentication",
+ "example": "e93275d4eba0e5679ad55f5360af00444e2a888df9b0afa3e8b691c3173725f9"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the contact",
+ "example": "Alice"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "Phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes of the customer",
+ "example": {
+ }
+ }
+ }
+ },
+ "public_message_create_payload": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "Content for the message",
+ "example": "Hello, how can I help you?"
+ },
+ "echo_id": {
+ "type": "string",
+ "description": "Temporary identifier which will be passed back via websockets",
+ "example": "1234567890"
+ }
+ }
+ },
+ "public_message_update_payload": {
+ "type": "object",
+ "properties": {
+ "submitted_values": {
+ "type": "object",
+ "description": "Replies to the Bot Message Types",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submiitted value",
+ "example": "My Name"
+ },
+ "title": {
+ "type": "string",
+ "description": "The title of the submitted value",
+ "example": "My Title"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the submitted value",
+ "example": "value"
+ },
+ "csat_survey_response": {
+ "type": "object",
+ "description": "The CSAT survey response",
+ "properties": {
+ "feedback_message": {
+ "type": "string",
+ "description": "The feedback message of the CSAT survey response",
+ "example": "Great service!"
+ },
+ "rating": {
+ "type": "integer",
+ "description": "The rating of the CSAT survey response",
+ "example": 5
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "public_conversation_create_payload": {
+ "type": "object",
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes of the conversation",
+ "example": {
+ }
+ }
+ }
+ },
+ "extended_contact": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/contact"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Id of the user"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "online",
+ "offline"
+ ],
+ "description": "Availability status of the user"
+ }
+ }
+ }
+ ]
+ },
+ "contact_base": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/contact"
+ }
+ ]
+ },
+ "contact_list": {
+ "type": "array",
+ "description": "array of contacts",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/contact"
+ }
+ ]
+ }
+ },
+ "contact_conversations": {
+ "type": "array",
+ "description": "array of conversations",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "display_id": {
+ "type": "number"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "contact_labels": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of labels",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "conversation_list": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "mine_count": {
+ "type": "number"
+ },
+ "unassigned_count": {
+ "type": "number"
+ },
+ "assigned_count": {
+ "type": "number"
+ },
+ "all_count": {
+ "type": "number"
+ }
+ }
+ },
+ "payload": {
+ "type": "array",
+ "description": "array of conversations",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation_show": {
+ "type": "object",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "conversation_status_toggle": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object"
+ },
+ "payload": {
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean"
+ },
+ "current_status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved"
+ ]
+ },
+ "conversation_id": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "conversation_labels": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of labels",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "account_summary": {
+ "type": "object",
+ "properties": {
+ "avg_first_response_time": {
+ "type": "string"
+ },
+ "avg_resolution_time": {
+ "type": "string"
+ },
+ "conversations_count": {
+ "type": "number"
+ },
+ "incoming_messages_count": {
+ "type": "number"
+ },
+ "outgoing_messages_count": {
+ "type": "number"
+ },
+ "resolutions_count": {
+ "type": "number"
+ },
+ "previous": {
+ "type": "object",
+ "properties": {
+ "avg_first_response_time": {
+ "type": "string"
+ },
+ "avg_resolution_time": {
+ "type": "string"
+ },
+ "conversations_count": {
+ "type": "number"
+ },
+ "incoming_messages_count": {
+ "type": "number"
+ },
+ "outgoing_messages_count": {
+ "type": "number"
+ },
+ "resolutions_count": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "agent_conversation_metrics": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ },
+ "thumbnail": {
+ "type": "string"
+ },
+ "availability": {
+ "type": "string"
+ },
+ "metric": {
+ "type": "object",
+ "properties": {
+ "open": {
+ "type": "number"
+ },
+ "unattended": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "contact_detail": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact",
+ "properties": {
+ "city": {
+ "type": "string",
+ "description": "City of the contact"
+ },
+ "country": {
+ "type": "string",
+ "description": "Country of the contact"
+ },
+ "country_code": {
+ "type": "string",
+ "description": "Country code of the contact"
+ },
+ "created_at_ip": {
+ "type": "string",
+ "description": "IP address when the contact was created"
+ }
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact"
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact",
+ "nullable": true
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact",
+ "nullable": true
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "type": {
+ "type": "string",
+ "description": "The type of entity",
+ "enum": [
+ "contact"
+ ]
+ }
+ }
+ },
+ "message_detailed": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content of the message"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "number",
+ "description": "The ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "enum": [
+ 0,
+ 1,
+ 2,
+ 3
+ ],
+ "description": "The type of the message (0: incoming, 1: outgoing, 2: activity, 3: template)"
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_select",
+ "cards",
+ "form",
+ "input_csat"
+ ],
+ "description": "The type of the message content"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "sent",
+ "delivered",
+ "read",
+ "failed"
+ ],
+ "description": "The status of the message"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "The content attributes for each content_type",
+ "properties": {
+ "in_reply_to": {
+ "type": "string",
+ "description": "ID of the message this is replying to",
+ "nullable": true
+ }
+ }
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The timestamp when message was created"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "The flag which shows whether the message is private or not"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The source ID of the message",
+ "nullable": true
+ },
+ "sender": {
+ "$ref": "#/components/schemas/contact_detail"
+ }
+ }
+ },
+ "conversation_meta": {
+ "type": "object",
+ "properties": {
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Labels associated with the conversation"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "properties": {
+ "browser": {
+ "type": "object",
+ "properties": {
+ "device_name": {
+ "type": "string",
+ "description": "Name of the device"
+ },
+ "browser_name": {
+ "type": "string",
+ "description": "Name of the browser"
+ },
+ "platform_name": {
+ "type": "string",
+ "description": "Name of the platform"
+ },
+ "browser_version": {
+ "type": "string",
+ "description": "Version of the browser"
+ },
+ "platform_version": {
+ "type": "string",
+ "description": "Version of the platform"
+ }
+ }
+ },
+ "referer": {
+ "type": "string",
+ "description": "Referrer URL"
+ },
+ "initiated_at": {
+ "type": "object",
+ "properties": {
+ "timestamp": {
+ "type": "string",
+ "description": "Timestamp when the conversation was initiated"
+ }
+ }
+ },
+ "browser_language": {
+ "type": "string",
+ "description": "Browser language setting"
+ },
+ "conversation_language": {
+ "type": "string",
+ "description": "Conversation language"
+ }
+ },
+ "description": "Additional attributes of the conversation"
+ },
+ "contact": {
+ "$ref": "#/components/schemas/contact_detail"
+ },
+ "agent_last_seen_at": {
+ "type": "string",
+ "description": "Timestamp when the agent last saw the conversation",
+ "nullable": true
+ },
+ "assignee_last_seen_at": {
+ "type": "string",
+ "description": "Timestamp when the assignee last saw the conversation",
+ "nullable": true
+ }
+ }
+ },
+ "conversation_messages": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/conversation_meta"
+ },
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message_detailed"
+ },
+ "description": "List of messages in the conversation"
+ }
+ }
+ },
+ "contact_meta": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "integer",
+ "description": "Total number of contacts"
+ },
+ "current_page": {
+ "type": "string",
+ "description": "Current page number"
+ }
+ }
+ },
+ "contact_inbox": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Source identifier for the contact inbox"
+ },
+ "inbox": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the inbox"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "URL for the inbox avatar"
+ },
+ "channel_id": {
+ "type": "integer",
+ "description": "ID of the channel"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the inbox"
+ },
+ "channel_type": {
+ "type": "string",
+ "description": "Type of channel"
+ },
+ "provider": {
+ "type": "string",
+ "description": "Provider of the inbox",
+ "nullable": true
+ }
+ }
+ }
+ }
+ },
+ "contact_list_item": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact",
+ "properties": {
+ "city": {
+ "type": "string",
+ "description": "City of the contact"
+ },
+ "country": {
+ "type": "string",
+ "description": "Country of the contact"
+ },
+ "country_code": {
+ "type": "string",
+ "description": "Country code of the contact"
+ },
+ "created_at_ip": {
+ "type": "string",
+ "description": "IP address when the contact was created"
+ }
+ }
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "Availability status of the contact",
+ "enum": [
+ "online",
+ "offline"
+ ]
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact",
+ "nullable": true
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact",
+ "nullable": true
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact",
+ "nullable": true
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact"
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "Timestamp of last activity",
+ "nullable": true
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "Timestamp when contact was created"
+ },
+ "contact_inboxes": {
+ "type": "array",
+ "description": "List of inboxes associated with this contact",
+ "items": {
+ "$ref": "#/components/schemas/contact_inbox"
+ }
+ }
+ }
+ },
+ "contacts_list_response": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/contact_meta"
+ },
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_list_item"
+ },
+ "description": "List of contacts"
+ }
+ }
+ },
+ "contact_show_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "$ref": "#/components/schemas/contact_list_item"
+ }
+ }
+ },
+ "contact_conversation_message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "Content of the message"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account"
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "integer",
+ "description": "ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "description": "Type of the message"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "Timestamp when message was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "Formatted datetime when message was updated"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "Whether the message is private"
+ },
+ "status": {
+ "type": "string",
+ "description": "Status of the message"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "Source ID of the message",
+ "nullable": true
+ },
+ "content_type": {
+ "type": "string",
+ "description": "Type of the content"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "Attributes of the content"
+ },
+ "sender_type": {
+ "type": "string",
+ "description": "Type of the sender",
+ "nullable": true
+ },
+ "sender_id": {
+ "type": "integer",
+ "description": "ID of the sender",
+ "nullable": true
+ },
+ "external_source_ids": {
+ "type": "object",
+ "description": "External source IDs"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "Additional attributes of the message"
+ },
+ "processed_message_content": {
+ "type": "string",
+ "description": "Processed message content",
+ "nullable": true
+ },
+ "sentiment": {
+ "type": "object",
+ "description": "Sentiment analysis of the message"
+ },
+ "conversation": {
+ "type": "object",
+ "description": "Conversation details",
+ "properties": {
+ "assignee_id": {
+ "type": "integer",
+ "description": "ID of the assignee",
+ "nullable": true
+ },
+ "unread_count": {
+ "type": "integer",
+ "description": "Count of unread messages"
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "Timestamp of last activity"
+ },
+ "contact_inbox": {
+ "type": "object",
+ "description": "Contact inbox details",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Source ID of the contact inbox"
+ }
+ }
+ }
+ }
+ },
+ "sender": {
+ "type": "object",
+ "description": "Details of the sender",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the sender"
+ },
+ "available_name": {
+ "type": "string",
+ "description": "Available name of the sender"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "URL of the sender's avatar"
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "Availability status of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Thumbnail URL of the sender"
+ }
+ }
+ }
+ }
+ },
+ "contact_conversations_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "description": "List of conversations for the contact"
+ }
+ }
+ },
+ "contactable_inboxes_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_inbox"
+ },
+ "description": "List of contactable inboxes for the contact"
+ }
+ }
+ }
+ },
+ "parameters": {
+ "account_id": {
+ "in": "path",
+ "name": "account_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the account"
+ },
+ "agent_bot_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agentbot to be updated"
+ },
+ "team_id": {
+ "in": "path",
+ "name": "team_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the team to be updated"
+ },
+ "inbox_id": {
+ "in": "path",
+ "name": "inbox_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the Inbox"
+ },
+ "hook_id": {
+ "in": "path",
+ "name": "hook_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the integration hook"
+ },
+ "source_id": {
+ "in": "path",
+ "name": "source_id",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Id of the session for which the conversation is created.\n\n\n\n Source Ids can be obtained through contactable inboxes API or via generated.
Website: Chatwoot generated string which can be obtained from webhook events.
Phone Channels(Twilio): Phone number in e164 format
Email Channels: Contact Email address
API Channel: Any Random String"
+ },
+ "contact_sort_param": {
+ "in": "query",
+ "name": "sort",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "name",
+ "email",
+ "phone_number",
+ "last_activity_at",
+ "-name",
+ "-email",
+ "-phone_number",
+ "-last_activity_at"
+ ]
+ },
+ "required": false,
+ "description": "The attribute by which list should be sorted"
+ },
+ "conversation_id": {
+ "in": "path",
+ "name": "conversation_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the conversation"
+ },
+ "conversation_uuid": {
+ "in": "path",
+ "name": "conversation_uuid",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The uuid of the conversation"
+ },
+ "custom_filter_id": {
+ "in": "path",
+ "name": "custom_filter_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the custom filter"
+ },
+ "webhook_id": {
+ "in": "path",
+ "name": "webhook_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the webhook"
+ },
+ "message_id": {
+ "in": "path",
+ "name": "message_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the message"
+ },
+ "page": {
+ "in": "query",
+ "name": "page",
+ "schema": {
+ "type": "integer",
+ "default": 1
+ },
+ "required": false,
+ "description": "The page parameter"
+ },
+ "platform_user_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the user on the platform"
+ },
+ "report_type": {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "account",
+ "agent",
+ "inbox",
+ "label",
+ "team"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ },
+ "report_metric": {
+ "in": "query",
+ "name": "metric",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "conversations_count",
+ "incoming_messages_count",
+ "outgoing_messages_count",
+ "avg_first_response_time",
+ "avg_resolution_time",
+ "resolutions_count"
+ ]
+ },
+ "required": true,
+ "description": "The type of metric"
+ },
+ "public_inbox_identifier": {
+ "in": "path",
+ "name": "inbox_identifier",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The identifier obtained from API inbox channel"
+ },
+ "public_contact_identifier": {
+ "in": "path",
+ "name": "contact_identifier",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The source id of contact obtained on contact create"
+ },
+ "portal_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The slug identifier of the portal"
+ }
+ },
+ "securitySchemes": {
+ "userApiKey": {
+ "type": "apiKey",
+ "in": "header",
+ "name": "api_access_token",
+ "description": "This token can be obtained by visiting the profile page or via rails console. Provides access to endpoints based on the user permissions levels."
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/swagger/tag_groups/others.yml b/swagger/tag_groups/others.yml
new file mode 100644
index 000000000..08219959c
--- /dev/null
+++ b/swagger/tag_groups/others.yml
@@ -0,0 +1,29 @@
+openapi: '3.0.4'
+info:
+ title: Chatwoot - Other APIs
+ description: Other API endpoints for Chatwoot
+ version: 1.1.0
+ termsOfService: https://www.chatwoot.com/terms-of-service/
+ contact:
+ email: hello@chatwoot.com
+ license:
+ name: MIT License
+ url: https://opensource.org/licenses/MIT
+servers:
+ - url: https://app.chatwoot.com/
+tags:
+ - name: CSAT Survey Page
+ description: APIs for CSAT survey functionality
+paths:
+ $ref: ../paths/index.yml
+components:
+ schemas:
+ $ref: ../definitions/index.yml
+ parameters:
+ $ref: ../parameters/index.yml
+ securitySchemes:
+ userApiKey:
+ type: apiKey
+ in: header
+ name: api_access_token
+ description: This token can be obtained by visiting the profile page or via rails console. Provides access to endpoints based on the user permissions levels.
\ No newline at end of file
diff --git a/swagger/tag_groups/platform.yml b/swagger/tag_groups/platform.yml
new file mode 100644
index 000000000..139dd741e
--- /dev/null
+++ b/swagger/tag_groups/platform.yml
@@ -0,0 +1,40 @@
+openapi: '3.0.4'
+info:
+ title: Chatwoot - Platform API
+ description: Platform API endpoints for Chatwoot
+ version: 1.1.0
+ termsOfService: https://www.chatwoot.com/terms-of-service/
+ contact:
+ email: hello@chatwoot.com
+ license:
+ name: MIT License
+ url: https://opensource.org/licenses/MIT
+servers:
+ - url: https://app.chatwoot.com/
+tags:
+ - name: Accounts
+ description: Platform account management
+ - name: Account Users
+ description: Manage users within platform accounts
+ - name: AgentBots
+ description: Manage agent bots on the platform
+ - name: Users
+ description: Platform user management
+paths:
+ $ref: ../paths/index.yml
+components:
+ schemas:
+ $ref: ../definitions/index.yml
+ parameters:
+ $ref: ../parameters/index.yml
+ securitySchemes:
+ userApiKey:
+ type: apiKey
+ in: header
+ name: api_access_token
+ description: This token can be obtained by visiting the profile page or via rails console. Provides access to endpoints based on the user permissions levels.
+ platformAppApiKey:
+ type: apiKey
+ in: header
+ name: api_access_token
+ description: This token can be obtained by the system admin after creating a platformApp. This token should be used to provision agent bots, accounts, users and their roles.
\ No newline at end of file
diff --git a/swagger/tag_groups/platform_swagger.json b/swagger/tag_groups/platform_swagger.json
new file mode 100644
index 000000000..6d54040ac
--- /dev/null
+++ b/swagger/tag_groups/platform_swagger.json
@@ -0,0 +1,11937 @@
+{
+ "openapi": "3.0.4",
+ "info": {
+ "title": "Chatwoot - Platform API",
+ "description": "Platform API endpoints for Chatwoot",
+ "version": "1.1.0",
+ "termsOfService": "https://www.chatwoot.com/terms-of-service/",
+ "contact": {
+ "email": "hello@chatwoot.com"
+ },
+ "license": {
+ "name": "MIT License",
+ "url": "https://opensource.org/licenses/MIT"
+ }
+ },
+ "servers": [
+ {
+ "url": "https://app.chatwoot.com/"
+ }
+ ],
+ "tags": [
+ {
+ "name": "Accounts",
+ "description": "Platform account management"
+ },
+ {
+ "name": "Account Users",
+ "description": "Manage users within platform accounts"
+ },
+ {
+ "name": "AgentBots",
+ "description": "Manage agent bots on the platform"
+ },
+ {
+ "name": "Users",
+ "description": "Platform user management"
+ }
+ ],
+ "paths": {
+ "/platform/api/v1/accounts": {
+ "post": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "create-an-account",
+ "summary": "Create an Account",
+ "description": "Create an Account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/accounts/{account_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "get-details-of-an-account",
+ "summary": "Get an account details",
+ "description": "Get the details of an account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "update-an-account",
+ "summary": "Update an account",
+ "description": "Update an account's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_account"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Accounts"
+ ],
+ "operationId": "delete-an-account",
+ "summary": "Delete an Account",
+ "description": "Delete an Account",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/accounts/{account_id}/account_users": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "list-all-account-users",
+ "summary": "List all Account Users",
+ "description": "List all account users",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "create-an-account-user",
+ "summary": "Create an Account User",
+ "description": "Create an Account User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "account_id": {
+ "type": "integer",
+ "description": "The ID of the account"
+ },
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user"
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Account Users"
+ ],
+ "operationId": "delete-an-account-user",
+ "summary": "Delete an Account User",
+ "description": "Delete an Account User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The account does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/agent_bots": {
+ "get": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "list-all-agent-bots",
+ "summary": "List all AgentBots",
+ "description": "List all agent bots available",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent bots",
+ "items": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "create-an-agent-bot",
+ "summary": "Create an Agent Bot",
+ "description": "Create an agent bot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/agent_bots/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/agent_bot_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "get-details-of-a-single-agent-bot",
+ "summary": "Get an agent bot details",
+ "description": "Get the details of an agent bot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given agent bot ID does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "update-an-agent-bot",
+ "summary": "Update an agent bot",
+ "description": "Update an agent bot's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/platform_agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "AgentBots"
+ ],
+ "operationId": "delete-an-agent-bot",
+ "summary": "Delete an AgentBot",
+ "description": "Delete an AgentBot",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The agent bot does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users": {
+ "post": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "create-a-user",
+ "summary": "Create a User",
+ "description": "Create a User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/platform_user_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "get-details-of-a-user",
+ "summary": "Get an user details",
+ "description": "Get the details of an user",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "update-a-user",
+ "summary": "Update a user",
+ "description": "Update a user's attributes",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "delete-a-user",
+ "summary": "Delete a User",
+ "description": "Delete a User",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/platform/api/v1/users/{id}/login": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/platform_user_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Users"
+ ],
+ "operationId": "get-sso-url-of-a-user",
+ "summary": "Get User SSO Link",
+ "description": "Get the sso link of a user",
+ "security": [
+ {
+ "platformAppApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "SSO url to autenticate the user"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given user does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Inbox API"
+ ],
+ "operationId": "get-details-of-a-inbox",
+ "summary": "Inbox details",
+ "description": "Get the details of an inbox",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_inbox"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given inbox does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "create-a-contact",
+ "summary": "Create a contact",
+ "description": "Create a contact",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "get-details-of-a-contact",
+ "summary": "Get a contact",
+ "description": "Get the details of a contact",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given contact does not exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Contacts API"
+ ],
+ "operationId": "update-a-contact",
+ "summary": "Update a contact",
+ "description": "Update a contact's attributes",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_contact"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "create-a-conversation",
+ "summary": "Create a conversation",
+ "description": "Create a conversation",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "list-all-contact-conversations",
+ "summary": "List all conversations",
+ "description": "List all conversations for the contact",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of conversations",
+ "items": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "get-single-conversation",
+ "summary": "Get a single conversation",
+ "description": "Retrieves the details of a specific conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/toggle_status": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "resolve-conversation",
+ "summary": "Resolve a conversation",
+ "description": "Marks a conversation as resolved",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Conversation resolved successfully",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_conversation"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/toggle_typing": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "toggle-typing-status",
+ "summary": "Toggle typing status",
+ "description": "Toggles the typing status in a conversation",
+ "security": [
+
+ ],
+ "parameters": [
+ {
+ "name": "typing_status",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Typing status, either 'on' or 'off'"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "typing_status": {
+ "type": "string",
+ "enum": [
+ "on",
+ "off"
+ ],
+ "description": "The typing status to set",
+ "example": "on"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Typing status toggled successfully"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/update_last_seen": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations API"
+ ],
+ "operationId": "update-last-seen",
+ "summary": "Update last seen",
+ "description": "Updates the last seen time of the contact in a conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Last seen updated successfully"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "create-a-message",
+ "summary": "Create a message",
+ "description": "Create a message",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "list-all-converation-messages",
+ "summary": "List all messages",
+ "description": "List all messages in the conversation",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of messages",
+ "items": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/messages/{message_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/public_inbox_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/public_contact_identifier"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ },
+ {
+ "$ref": "#/components/parameters/message_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Messages API"
+ ],
+ "operationId": "update-a-message",
+ "summary": "Update a message",
+ "description": "Update a message",
+ "security": [
+
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/public_message"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/survey/responses/{conversation_uuid}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/conversation_uuid"
+ }
+ ],
+ "get": {
+ "tags": [
+ "CSAT Survey Page"
+ ],
+ "operationId": "get-csat-survey-page",
+ "summary": "Get CSAT survey page",
+ "description": "You can redirect the client to this URL, instead of implementing the CSAT survey component yourself.",
+ "security": [
+
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agent_bots": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "list-all-account-agent-bots",
+ "summary": "List all AgentBots",
+ "description": "List all agent bots available for the current account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent bots",
+ "items": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "create-an-account-agent-bot",
+ "summary": "Create an Agent Bot",
+ "description": "Create an agent bot in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agent_bots/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/agent_bot_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "get-details-of-a-single-account-agent-bot",
+ "summary": "Get an agent bot details",
+ "description": "Get the details of an agent bot in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given agent bot ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "update-an-account-agent-bot",
+ "summary": "Update an agent bot",
+ "description": "Update an agent bot's attributes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Account AgentBots"
+ ],
+ "operationId": "delete-an-account-agent-bot",
+ "summary": "Delete an AgentBot",
+ "description": "Delete an AgentBot from the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The agent bot does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agents": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "get-account-agents",
+ "summary": "List Agents in Account",
+ "description": "Get Details of Agents in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "add-new-agent-to-account",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/agents/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "update-agent-in-account",
+ "summary": "Update Agent in Account",
+ "description": "Update an Agent in Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agent to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Agents"
+ ],
+ "operationId": "delete-agent-from-account",
+ "summary": "Remove an Agent from Account",
+ "description": "Remove an Agent from Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agent to be deleted."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/canned_responses": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "get-account-canned-response",
+ "summary": "List all Canned Responses in an Account",
+ "description": "Get Details of Canned Responses in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all canned responses",
+ "items": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "add-new-canned-response-to-account",
+ "summary": "Add a New Canned Response",
+ "description": "Add a new Canned Response to Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/canned_responses/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "update-canned-response-in-account",
+ "summary": "Update Canned Response in Account",
+ "description": "Update a Canned Response in Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the canned response to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/canned_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Canned Responses"
+ ],
+ "operationId": "delete-canned-response-from-account",
+ "summary": "Remove a Canned Response from Account",
+ "description": "Remove a Canned Response from Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the canned response to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Canned Response not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_attribute_definitions": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "get-account-custom-attribute",
+ "summary": "List all custom attributes in an account",
+ "parameters": [
+ {
+ "name": "attribute_model",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "0",
+ "1"
+ ]
+ },
+ "description": "conversation_attribute(0)/contact_attribute(1)",
+ "required": true
+ }
+ ],
+ "description": "Get details of custom attributes in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all custom attributes",
+ "items": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "add-new-custom-attribute-to-account",
+ "summary": "Add a new custom attribute",
+ "description": "Add a new custom attribute to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_attribute_definitions/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the custom attribute",
+ "required": true
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "get-details-of-a-single-custom-attribute",
+ "summary": "Get a custom attribute details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of a custom attribute in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be updated."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given attribute ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "update-custom-attribute-in-account",
+ "summary": "Update custom attribute in Account",
+ "description": "Update a custom attribute in account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_attribute"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Agent not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Custom Attributes"
+ ],
+ "operationId": "delete-custom-attribute-from-account",
+ "summary": "Remove a custom attribute from account",
+ "description": "Remove a custom attribute from account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the custom attribute to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Custom attribute not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts": {
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactList",
+ "description": "Listing all the resolved contacts with pagination (Page size = 15). Resolved contacts are the ones with a value for identifier, email or phone number",
+ "summary": "List Contacts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/contact_sort_param"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactCreate",
+ "description": "Create a new Contact",
+ "summary": "Create Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/extended_contact"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactDetails",
+ "summary": "Show Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get a contact belonging to the account using ID",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_show_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactUpdate",
+ "summary": "Update Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a contact belonging to the account using ID",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "204": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_base"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactDelete",
+ "summary": "Delete Contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a contact belonging to the account using ID",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactConversations",
+ "summary": "Contact Conversations",
+ "description": "Get conversations associated with that contact",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_conversations_response"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/labels": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "list-all-labels-of-a-contact",
+ "summary": "List Labels",
+ "description": "Lists all the labels of a contact",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_labels"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contact-add-labels",
+ "summary": "Add Labels",
+ "description": "Add labels to a contact. Note that this API would overwrite the existing list of labels associated to the conversation.",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "labels"
+ ],
+ "properties": {
+ "labels": {
+ "type": "array",
+ "description": "Array of labels (comma-separated strings)",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "support",
+ "billing"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_labels"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Contact not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/search": {
+ "get": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactSearch",
+ "description": "Search the resolved contacts using a search key, currently supports email search (Page size = 15). Resolved contacts are the ones with a value for identifier, email or phone number",
+ "summary": "Search Contacts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Search using contact `name`, `identifier`, `email` or `phone number`"
+ },
+ {
+ "$ref": "#/components/parameters/contact_sort_param"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/filter": {
+ "post": {
+ "tags": [
+ "Contacts"
+ ],
+ "operationId": "contactFilter",
+ "description": "Filter contacts with custom filter options and pagination",
+ "summary": "Contact Filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "attribute_key": {
+ "type": "string",
+ "description": "filter attribute name"
+ },
+ "filter_operator": {
+ "type": "string",
+ "description": "filter operator name",
+ "enum": [
+ "equal_to",
+ "not_equal_to",
+ "contains",
+ "does_not_contain"
+ ]
+ },
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "array of the attribute values to filter"
+ },
+ "query_operator": {
+ "type": "string",
+ "description": "query operator name",
+ "enum": [
+ "AND",
+ "OR"
+ ]
+ }
+ }
+ },
+ "example": [
+ {
+ "attribute_key": "name",
+ "filter_operator": "equal_to",
+ "values": [
+ "en"
+ ],
+ "query_operator": "AND"
+ },
+ {
+ "attribute_key": "country_code",
+ "filter_operator": "equal_to",
+ "values": [
+ "us"
+ ],
+ "query_operator": null
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contacts_list_response"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/contact_inboxes": {
+ "post": {
+ "tags": [
+ "Contact"
+ ],
+ "operationId": "contactInboxCreation",
+ "description": "Create a contact inbox record for an inbox",
+ "summary": "Create contact inbox",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact",
+ "required": true
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contact_inboxes"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "Incorrect payload",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/contacts/{id}/contactable_inboxes": {
+ "get": {
+ "tags": [
+ "Contact"
+ ],
+ "operationId": "contactableInboxesGet",
+ "description": "Get List of contactable Inboxes",
+ "summary": "Get Contactable Inboxes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the contact",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/contactable_inboxes_response"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Authentication error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "Incorrect payload",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/automation_rules": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "get-account-automation-rule",
+ "summary": "List all automation rules in an account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ }
+ ],
+ "description": "Get details of automation rules in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "add-new-automation-rule-to-account",
+ "summary": "Add a new automation rule",
+ "description": "Add a new automation rule to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/automation_rules/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the Automation Rule",
+ "required": true
+ }
+ ],
+ "get": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "get-details-of-a-single-automation-rule",
+ "summary": "Get a automation rule details",
+ "description": "Get the details of a automation rule in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be updated."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ },
+ "example": {
+ "payload": {
+ "id": 90,
+ "account_id": 1,
+ "name": "add-label-bug-if-message-contains-bug",
+ "description": "add-label-bug-if-message-contains-bug",
+ "event_name": "message_created",
+ "conditions": [
+ {
+ "values": [
+ "incoming"
+ ],
+ "attribute_key": "message_type",
+ "query_operator": "and",
+ "filter_operator": "equal_to"
+ },
+ {
+ "values": [
+ "bug"
+ ],
+ "attribute_key": "content",
+ "filter_operator": "contains"
+ }
+ ],
+ "actions": [
+ {
+ "action_name": "add_label",
+ "action_params": [
+ "bugs",
+ "support-query"
+ ]
+ }
+ ],
+ "created_on": 1650555440,
+ "active": true
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given rule ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "update-automation-rule-in-account",
+ "summary": "Update automation rule in Account",
+ "description": "Update a automation rule in account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be updated."
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/automation_rule"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Rule not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Automation Rule"
+ ],
+ "operationId": "delete-automation-rule-from-account",
+ "summary": "Remove a automation rule from account",
+ "description": "Remove a automation rule from account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the automation rule to be deleted"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "automation rule not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-portal-to-account",
+ "summary": "Add a new portal",
+ "description": "Add a new portal to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "get-portal",
+ "summary": "List all portals in an account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "description": "Get details of portals in an Account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal"
+ },
+ "example": {
+ "payload": [
+ {
+ "id": 4,
+ "color": "#1F93FF",
+ "custom_domain": "chatwoot.help",
+ "header_text": "Handbook",
+ "homepage_link": "https://www.chatwoot.com",
+ "name": "Handbook",
+ "page_title": "Handbook",
+ "slug": "handbook",
+ "archived": false,
+ "account_id": 1,
+ "config": {
+ "allowed_locales": [
+ {
+ "code": "en",
+ "articles_count": 32,
+ "categories_count": 9
+ }
+ ]
+ },
+ "inbox": {
+ "id": 37,
+ "avatar_url": "https://example.com/avatar.png",
+ "channel_id": 1,
+ "name": "Chatwoot",
+ "channel_type": "Channel::WebWidget",
+ "greeting_enabled": true,
+ "widget_color": "#1F93FF",
+ "website_url": "chatwoot.com"
+ },
+ "logo": {
+ "id": 19399916,
+ "portal_id": 4,
+ "file_type": "image/png",
+ "account_id": 1,
+ "file_url": "https://example.com/logo.png",
+ "blob_id": 21239614,
+ "filename": "square.png"
+ },
+ "meta": {
+ "all_articles_count": 0,
+ "categories_count": 9,
+ "default_locale": "en"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "update-portal-to-account",
+ "summary": "Update a portal",
+ "description": "Update a portal to account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/portal_single"
+ },
+ "example": {
+ "payload": {
+ "id": 123,
+ "archived": false,
+ "color": "#1F93FF",
+ "config": {
+ "allowed_locales": [
+ {
+ "code": "en",
+ "articles_count": 32,
+ "categories_count": 9
+ }
+ ]
+ },
+ "custom_domain": "chatwoot.help",
+ "header_text": "Handbook",
+ "homepage_link": "https://www.chatwoot.com",
+ "name": "Handbook",
+ "slug": "handbook",
+ "page_title": "Handbook",
+ "account_id": 123,
+ "inbox": {
+ "id": 123,
+ "name": "Chatwoot",
+ "website_url": "chatwoot.com",
+ "channel_type": "Channel::WebWidget",
+ "avatar_url": "https://example.com/avatar.png",
+ "widget_color": "#1F93FF",
+ "website_token": "4cWzuf9i9jxN9tbnv8K9STKU",
+ "enable_auto_assignment": true,
+ "web_widget_script": "",
+ "welcome_title": "Hi there ! 🙌🏼",
+ "welcome_tagline": "We make it simple to connect with us.",
+ "greeting_enabled": true,
+ "greeting_message": "Hey there 👋, Thank you for reaching out to us.",
+ "channel_id": 123,
+ "working_hours_enabled": true,
+ "enable_email_collect": true,
+ "csat_survey_enabled": true,
+ "timezone": "America/Los_Angeles",
+ "business_name": "Chatwoot",
+ "hmac_mandatory": true
+ },
+ "logo": {
+ "id": 123,
+ "portal_id": 123,
+ "file_type": "image/png",
+ "account_id": 123,
+ "file_url": "https://example.com/logo.png",
+ "blob_id": 123,
+ "filename": "square.png"
+ },
+ "meta": {
+ "all_articles_count": 32,
+ "categories_count": 9,
+ "default_locale": "en"
+ }
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Portal not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}/categories": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-category-to-account",
+ "summary": "Add a new category",
+ "description": "Add a new category to portal",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/category_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/category"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/portals/{id}/articles": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/portal_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Help Center"
+ ],
+ "operationId": "add-new-article-to-account",
+ "summary": "Add a new article",
+ "description": "Add a new article to portal",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/article_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/article"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/meta": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationListMeta",
+ "description": "Get open, unassigned and all Conversation counts",
+ "summary": "Get Conversation Counts",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "status",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "all",
+ "open",
+ "resolved",
+ "pending",
+ "snoozed"
+ ],
+ "default": "open"
+ },
+ "description": "Filter by conversation status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filters conversations with messages containing the search term"
+ },
+ {
+ "name": "inbox_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "team_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "labels",
+ "in": "query",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "mine_count": {
+ "type": "number"
+ },
+ "unassigned_count": {
+ "type": "number"
+ },
+ "assigned_count": {
+ "type": "number"
+ },
+ "all_count": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationList",
+ "description": "List all the conversations with pagination",
+ "summary": "Conversations List",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "assignee_type",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "me",
+ "unassigned",
+ "all",
+ "assigned"
+ ],
+ "default": "all"
+ },
+ "description": "Filter conversations by assignee type."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "all",
+ "open",
+ "resolved",
+ "pending",
+ "snoozed"
+ ],
+ "default": "open"
+ },
+ "description": "Filter by conversation status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filters conversations with messages containing the search term"
+ },
+ {
+ "name": "inbox_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "team_id",
+ "in": "query",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "labels",
+ "in": "query",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "integer",
+ "default": 1
+ },
+ "description": "paginate through conversations"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_list"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "newConversation",
+ "summary": "Create New Conversation",
+ "description": "Creating a conversation in chatwoot requires a source id. \n\n Learn more about source_id: https://www.chatwoot.com/hc/user-guide/articles/1677839703-how-to-create-an-api-channel-inbox#send-messages-to-the-api-channel",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the conversation"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account Id"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ }
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/filter": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversationFilter",
+ "description": "Filter conversations with custom filter options and pagination",
+ "summary": "Conversations Filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "name": "page",
+ "in": "query",
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "attribute_key": {
+ "type": "string",
+ "description": "filter attribute name"
+ },
+ "filter_operator": {
+ "type": "string",
+ "description": "filter operator name",
+ "enum": [
+ "equal_to",
+ "not_equal_to",
+ "contains",
+ "does_not_contain"
+ ]
+ },
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "array of the attribute values to filter"
+ },
+ "query_operator": {
+ "type": "string",
+ "description": "query operator name",
+ "enum": [
+ "AND",
+ "OR"
+ ]
+ }
+ }
+ },
+ "example": [
+ {
+ "attribute_key": "browser_language",
+ "filter_operator": "not_equal_to",
+ "values": [
+ "en"
+ ],
+ "query_operator": "AND"
+ },
+ {
+ "attribute_key": "status",
+ "filter_operator": "equal_to",
+ "values": [
+ "pending"
+ ],
+ "query_operator": null
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_list"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "get-details-of-a-conversation",
+ "summary": "Conversation Details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get all details regarding a conversation with all messages in the conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_show"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "update-conversation",
+ "summary": "Update Conversation",
+ "description": "Update Conversation Attributes",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "priority": {
+ "type": "string",
+ "enum": [
+ "urgent",
+ "high",
+ "medium",
+ "low",
+ "none"
+ ],
+ "description": "The priority of the conversation",
+ "example": "high"
+ },
+ "sla_policy_id": {
+ "type": "number",
+ "description": "The ID of the SLA policy (Available only in Enterprise edition)",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/toggle_status": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "toggle-status-of-a-conversation",
+ "summary": "Toggle Status",
+ "description": "Toggles the status of the conversation between open and resolved",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "status"
+ ],
+ "properties": {
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "The status of the conversation",
+ "example": "open"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_status_toggle"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/toggle_priority": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "toggle-priority-of-a-conversation",
+ "summary": "Toggle Priority",
+ "description": "Toggles the priority of conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "priority"
+ ],
+ "properties": {
+ "priority": {
+ "type": "string",
+ "enum": [
+ "urgent",
+ "high",
+ "medium",
+ "low",
+ "none"
+ ],
+ "description": "The priority of the conversation",
+ "example": "high"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/custom_attributes": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "update-custom-attributes-of-a-conversation",
+ "summary": "Update Custom Attributes",
+ "description": "Updates the custom attributes of a conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "custom_attributes"
+ ],
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes to be set for the conversation",
+ "example": {
+ "order_id": "12345",
+ "previous_conversation": "67890"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the conversation"
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/assignments": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "assign-a-conversation",
+ "summary": "Assign Conversation",
+ "description": "Assign a conversation to an agent or a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "assignee_id": {
+ "type": "number",
+ "description": "Id of the assignee user",
+ "example": 1
+ },
+ "team_id": {
+ "type": "number",
+ "description": "Id of the team. If the assignee_id is present, this param would be ignored",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/labels": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "list-all-labels-of-a-conversation",
+ "summary": "List Labels",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Lists all the labels of a conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_labels"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Conversations"
+ ],
+ "operationId": "conversation-add-labels",
+ "summary": "Add Labels",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Add labels to a conversation. Note that this API would overwrite the existing list of labels associated to the conversation.",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "labels"
+ ],
+ "properties": {
+ "labels": {
+ "type": "array",
+ "description": "Array of labels (comma-separated strings)",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "support",
+ "billing"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_labels"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "listAllInboxes",
+ "summary": "List all inboxes",
+ "description": "List all inboxes available in the current account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of inboxes",
+ "items": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "GetInbox",
+ "summary": "Get an inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get an inbox available in the current account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/": {
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "inboxCreation",
+ "summary": "Create an inbox",
+ "description": "You can create more than one website inbox in each account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}": {
+ "patch": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "updateInbox",
+ "summary": "Update Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update an existing inbox",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/agent_bot": {
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "getInboxAgentBot",
+ "summary": "Show Inbox Agent Bot",
+ "description": "See if an agent bot is associated to the Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/agent_bot"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found, Agent bot not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inboxes/{id}/set_agent_bot": {
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "updateAgentBot",
+ "summary": "Add or remove agent bot",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "To add an agent bot pass agent_bot id, to remove agent bot from an inbox pass null",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "number"
+ },
+ "description": "ID of the inbox",
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "agent_bot"
+ ],
+ "properties": {
+ "agent_bot": {
+ "type": "number",
+ "description": "Agent bot ID",
+ "example": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "204": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Inbox not found, Agent bot not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inbox_members/{inbox_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/inbox_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "get-inbox-members",
+ "summary": "List Agents in Inbox",
+ "description": "Get Details of Agents in an Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/inbox_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/inbox_members": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "post": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "add-new-agent-to-inbox",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "integer",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the inbox",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "update-agents-in-inbox",
+ "summary": "Update Agents in Inbox",
+ "description": "All agents except the one passed in params will be removed",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "string",
+ "description": "The ID of the inbox",
+ "example": 1
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the inbox",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Inboxes"
+ ],
+ "operationId": "delete-agent-in-inbox",
+ "summary": "Remove an Agent from Inbox",
+ "description": "Remove an Agent from Inbox",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "inbox_id",
+ "user_ids"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "string",
+ "description": "The ID of the inbox"
+ },
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be deleted from the inbox"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "404": {
+ "description": "Inbox not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "list-all-messages",
+ "summary": "Get messages",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all messages of a conversation",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "additional_attributes": {
+ "type": "object"
+ },
+ "contact": {
+ "$ref": "#/components/schemas/contact"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/agent"
+ },
+ "agent_last_seen_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "assignee_last_seen_at": {
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "payload": {
+ "type": "array",
+ "description": "Array of messages",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "create-a-new-message-in-a-conversation",
+ "summary": "Create New Message",
+ "description": "Create a new message in the conversation",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ },
+ {
+ "agentBotApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_message_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/message"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Conversation not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages/{message_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/conversation_id"
+ },
+ {
+ "$ref": "#/components/parameters/message_id"
+ }
+ ],
+ "delete": {
+ "tags": [
+ "Messages"
+ ],
+ "operationId": "delete-a-message",
+ "summary": "Delete a message",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a message and it's attachments from the conversation.",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The message or conversation does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/apps": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "get-details-of-all-integrations",
+ "summary": "List all the Integrations",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of all Integrations available for the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of Integration apps",
+ "items": {
+ "$ref": "#/components/schemas/integrations_app"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Url not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/hooks": {
+ "post": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "create-an-integration-hook",
+ "summary": "Create an integration hook",
+ "description": "Create an integration hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook_create_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/integrations/hooks/{hook_id}": {
+ "patch": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "update-an-integrations-hook",
+ "summary": "Update an Integration Hook",
+ "description": "Update an Integration Hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/hook_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/integrations_hook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Integrations"
+ ],
+ "operationId": "delete-an-integration-hook",
+ "summary": "Delete an Integration Hook",
+ "description": "Delete an Integration Hook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/hook_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The hook does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/profile": {
+ "get": {
+ "tags": [
+ "Profile"
+ ],
+ "operationId": "fetchProfile",
+ "summary": "Fetch user profile",
+ "description": "Get the user profile details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/user"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "list-all-teams",
+ "summary": "List all teams",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all teams available in the current account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of teams",
+ "items": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "create-a-team",
+ "summary": "Create a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Create a team in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams/{team_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "get-details-of-a-single-team",
+ "summary": "Get a team details",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get the details of a team in the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given team ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "update-a-team",
+ "summary": "Update a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a team's attributes",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/team"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "delete-a-team",
+ "summary": "Delete a team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a team from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The team does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/teams/{team_id}/team_members": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "get-team-members",
+ "summary": "List Agents in Team",
+ "description": "Get Details of Agents in an Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/team_id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all agents in the team",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "add-new-agent-to-team",
+ "summary": "Add a New Agent",
+ "description": "Add a new Agent to Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the team",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all active agents",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "update-agents-in-team",
+ "summary": "Update Agents in Team",
+ "description": "All agents except the one passed in params will be removed",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be added to the team",
+ "example": [
+ 1
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of all agents in the team",
+ "items": {
+ "$ref": "#/components/schemas/agent"
+ }
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Teams"
+ ],
+ "operationId": "delete-agent-in-team",
+ "summary": "Remove an Agent from Team",
+ "description": "Remove an Agent from Team",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "user_ids"
+ ],
+ "properties": {
+ "user_ids": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "IDs of users to be deleted from the team"
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Team not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "User must exist",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_filters": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "filter_type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ]
+ },
+ "required": false,
+ "description": "The type of custom filter"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "list-all-filters",
+ "summary": "List all custom filters",
+ "description": "List all custom filters in a category of a user",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of custom filters",
+ "items": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "create-a-custom-filter",
+ "summary": "Create a custom filter",
+ "description": "Create a custom filter in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/custom_filters/{custom_filter_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/custom_filter_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "get-details-of-a-single-custom-filter",
+ "summary": "Get a custom filter details",
+ "description": "Get the details of a custom filter in the account",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The given team ID does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "update-a-custom-filter",
+ "summary": "Update a custom filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a custom filter's attributes",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/custom_filter"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Custom Filters"
+ ],
+ "operationId": "delete-a-custom-filter",
+ "summary": "Delete a custom filter",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a custom filter from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The custom filter does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/webhooks": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "list-all-webhooks",
+ "summary": "List all webhooks",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "List all webhooks in the account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of webhook objects",
+ "items": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "create-a-webhook",
+ "summary": "Add a webhook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Add a webhook subscription to the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/accounts/{account_id}/webhooks/{webhook_id}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/webhook_id"
+ }
+ ],
+ "patch": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "update-a-webhook",
+ "summary": "Update a webhook object",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Update a webhook object in the account",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook_create_update_payload"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/webhook"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Webhooks"
+ ],
+ "operationId": "delete-a-webhook",
+ "summary": "Delete a webhook",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Delete a webhook from the account",
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "The webhook does not exist in the account",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/report_metric"
+ },
+ {
+ "$ref": "#/components/parameters/report_type"
+ },
+ {
+ "in": "query",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The Id of specific object in case of agent/inbox/label"
+ },
+ {
+ "in": "query",
+ "name": "since",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should start."
+ },
+ {
+ "in": "query",
+ "name": "until",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should stop."
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "list-all-conversation-statistics",
+ "summary": "Get Account reports",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get Account reports for a specific type, metric and date range",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of date based conversation statistics",
+ "items": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/summary": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "$ref": "#/components/parameters/report_type"
+ },
+ {
+ "in": "query",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The Id of specific object in case of agent/inbox/label"
+ },
+ {
+ "in": "query",
+ "name": "since",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should start."
+ },
+ {
+ "in": "query",
+ "name": "until",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The timestamp from where report should stop."
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "list-all-conversation-statistics-summary",
+ "summary": "Get Account reports summary",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get Account reports summary for a specific type and date range",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/account_summary"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/conversations": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "account"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "get-account-conversation-metrics",
+ "summary": "Account Conversation Metrics",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get conversation metrics for Account",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "description": "Object of account conversation metrics",
+ "properties": {
+ "open": {
+ "type": "number"
+ },
+ "unattended": {
+ "type": "number"
+ },
+ "unassigned": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v2/accounts/{account_id}/reports/conversations/": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "agent"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ },
+ {
+ "in": "query",
+ "name": "user_id",
+ "schema": {
+ "type": "string"
+ },
+ "description": "The numeric ID of the user"
+ }
+ ],
+ "get": {
+ "tags": [
+ "Reports"
+ ],
+ "operationId": "get-agent-conversation-metrics",
+ "summary": "Agent Conversation Metrics",
+ "security": [
+ {
+ "userApiKey": [
+
+ ]
+ }
+ ],
+ "description": "Get conversation metrics for Agent",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "description": "Array of agent based conversation metrics",
+ "items": {
+ "$ref": "#/components/schemas/agent_conversation_metrics"
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "reports not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "Access denied",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/bad_request_error"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/accounts/{account_id}/conversations/{conversation_id}/messages": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/account_id"
+ },
+ {
+ "name": "conversation_id",
+ "in": "path",
+ "description": "ID of the conversation",
+ "required": true,
+ "schema": {
+ "type": "number"
+ }
+ }
+ ],
+ "get": {
+ "tags": [
+ "Conversation"
+ ],
+ "summary": "Get messages from a conversation",
+ "description": "Returns all messages from a specific conversation",
+ "operationId": "getConversationMessages",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/conversation_messages"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "bad_request_error": {
+ "title": "data",
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/request_error"
+ }
+ }
+ }
+ },
+ "request_error": {
+ "type": "object",
+ "properties": {
+ "field": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "code": {
+ "type": "string"
+ }
+ }
+ },
+ "generic_id": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ }
+ }
+ },
+ "canned_response": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the canned response"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "Account Id"
+ },
+ "short_code": {
+ "type": "string",
+ "description": "Short Code for quick access of the canned response"
+ },
+ "content": {
+ "type": "string",
+ "description": "Message content for canned response"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "The date and time when the canned response was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "The date and time when the canned response was updated"
+ }
+ }
+ },
+ "custom_attribute": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Identifier"
+ },
+ "attribute_display_name": {
+ "type": "string",
+ "description": "Attribute display name"
+ },
+ "attribute_display_type": {
+ "type": "string",
+ "description": "Attribute display type (text, number, currency, percent, link, date, list, checkbox)"
+ },
+ "attribute_description": {
+ "type": "string",
+ "description": "Attribute description"
+ },
+ "attribute_key": {
+ "type": "string",
+ "description": "Attribute unique key value"
+ },
+ "regex_pattern": {
+ "type": "string",
+ "description": "Regex pattern"
+ },
+ "regex_cue": {
+ "type": "string",
+ "description": "Regex cue"
+ },
+ "attribute_values": {
+ "type": "string",
+ "description": "Attribute values"
+ },
+ "attribute_model": {
+ "type": "string",
+ "description": "Attribute type(conversation_attribute/contact_attribute)"
+ },
+ "default_value": {
+ "type": "string",
+ "description": "Attribute default value"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "The date and time when the custom attribute was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "The date and time when the custom attribute was updated"
+ }
+ }
+ },
+ "automation_rule": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "description": "Response payload that contains automation rule(s)",
+ "oneOf": [
+ {
+ "type": "array",
+ "description": "Array of automation rules (for listing endpoint)",
+ "items": {
+ "$ref": "#/components/schemas/automation_rule_item"
+ }
+ },
+ {
+ "type": "object",
+ "description": "Single automation rule (for show/create/update endpoints)",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/automation_rule_item"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "automation_rule_item": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The ID of the automation rule"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "Account Id"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the rule",
+ "example": "Add label on message create event"
+ },
+ "description": {
+ "type": "string",
+ "description": "Description to give more context about the rule",
+ "example": "Add label support and sales on message create event if incoming message content contains text help"
+ },
+ "event_name": {
+ "type": "string",
+ "description": "Automation Rule event, on which we call the actions(conversation_created, conversation_updated, message_created)",
+ "enum": [
+ "conversation_created",
+ "conversation_updated",
+ "message_created"
+ ],
+ "example": "message_created"
+ },
+ "conditions": {
+ "type": "array",
+ "description": "Array of conditions on which conversation/message filter would work",
+ "items": {
+ "type": "object",
+ "properties": {
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "attribute_key": {
+ "type": "string"
+ },
+ "query_operator": {
+ "type": "string"
+ },
+ "filter_operator": {
+ "type": "string"
+ }
+ },
+ "example": {
+ "attribute_key": "content",
+ "filter_operator": "contains",
+ "values": [
+ "help"
+ ],
+ "query_operator": "and"
+ }
+ }
+ },
+ "actions": {
+ "type": "array",
+ "description": "Array of actions which we perform when condition matches",
+ "items": {
+ "type": "object",
+ "properties": {
+ "action_name": {
+ "type": "string"
+ },
+ "action_params": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "example": {
+ "action_name": "add_label",
+ "action_params": [
+ "support",
+ "sales"
+ ]
+ }
+ }
+ },
+ "created_on": {
+ "type": "integer",
+ "description": "The timestamp when the rule was created"
+ },
+ "active": {
+ "type": "boolean",
+ "description": "Enable/disable automation rule"
+ }
+ }
+ },
+ "portal": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/portal_item"
+ }
+ }
+ }
+ },
+ "portal_config": {
+ "type": "object",
+ "description": "Configuration settings for the portal",
+ "properties": {
+ "allowed_locales": {
+ "type": "array",
+ "description": "List of allowed locales for the portal",
+ "items": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string",
+ "description": "The language code"
+ },
+ "articles_count": {
+ "type": "integer",
+ "description": "Number of articles in this locale"
+ },
+ "categories_count": {
+ "type": "integer",
+ "description": "Number of categories in this locale"
+ }
+ }
+ }
+ }
+ }
+ },
+ "portal_logo": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the logo file"
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "ID of the portal this logo belongs to"
+ },
+ "file_type": {
+ "type": "string",
+ "description": "MIME type of the file"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account"
+ },
+ "file_url": {
+ "type": "string",
+ "description": "URL to access the logo file"
+ },
+ "blob_id": {
+ "type": "integer",
+ "description": "ID of the blob"
+ },
+ "filename": {
+ "type": "string",
+ "description": "Name of the file"
+ }
+ }
+ },
+ "portal_meta": {
+ "type": "object",
+ "properties": {
+ "all_articles_count": {
+ "type": "integer",
+ "description": "Total number of articles"
+ },
+ "archived_articles_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of archived articles"
+ },
+ "published_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of published articles"
+ },
+ "draft_articles_count": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Number of draft articles"
+ },
+ "categories_count": {
+ "type": "integer",
+ "description": "Number of categories"
+ },
+ "default_locale": {
+ "type": "string",
+ "description": "Default locale for the portal"
+ }
+ }
+ },
+ "portal_item": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "The ID of the portal"
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Whether the portal is archived"
+ },
+ "color": {
+ "type": "string",
+ "description": "The color code for the portal"
+ },
+ "config": {
+ "$ref": "#/components/schemas/portal_config"
+ },
+ "custom_domain": {
+ "type": "string",
+ "description": "Custom domain for the portal"
+ },
+ "header_text": {
+ "type": "string",
+ "description": "The header text for the portal"
+ },
+ "homepage_link": {
+ "type": "string",
+ "description": "Homepage link for the portal"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the portal"
+ },
+ "slug": {
+ "type": "string",
+ "description": "URL slug for the portal"
+ },
+ "page_title": {
+ "type": "string",
+ "description": "Page title for the portal"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account the portal belongs to"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox"
+ },
+ "logo": {
+ "$ref": "#/components/schemas/portal_logo"
+ },
+ "meta": {
+ "$ref": "#/components/schemas/portal_meta"
+ }
+ }
+ },
+ "category": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string",
+ "description": "The text content."
+ },
+ "locale": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "slug": {
+ "type": "string"
+ },
+ "position": {
+ "type": "integer"
+ },
+ "portal_id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "associated_category_id": {
+ "type": "integer",
+ "description": "To associate similar categories to each other, e.g same category of product documentation in different languages"
+ },
+ "parent_category_id": {
+ "type": "integer",
+ "description": "To define parent category, e.g product documentation has multiple level features in sales category or in engineering category."
+ }
+ }
+ },
+ "article": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content."
+ },
+ "meta": {
+ "type": "object"
+ },
+ "position": {
+ "type": "integer"
+ },
+ "status": {
+ "type": "integer",
+ "enum": [
+ "draft",
+ "published",
+ "archived"
+ ]
+ },
+ "title": {
+ "type": "string"
+ },
+ "slug": {
+ "type": "string"
+ },
+ "views": {
+ "type": "integer"
+ },
+ "portal_id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "author_id": {
+ "type": "integer"
+ },
+ "category_id": {
+ "type": "integer"
+ },
+ "folder_id": {
+ "type": "integer"
+ },
+ "associated_article_id": {
+ "type": "integer",
+ "description": "To associate similar articles to each other, e.g to provide the link for the reference."
+ }
+ }
+ },
+ "contact": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact"
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact",
+ "example": {
+ "attribute_key": "attribute_value",
+ "signed_up_at": "dd/mm/yyyy"
+ }
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "The last activity at of the contact"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The created at of the contact"
+ },
+ "contact_inboxes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_inboxes"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the conversation"
+ },
+ "messages": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ }
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account Id"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "UUID of the conversation"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the conversation"
+ },
+ "agent_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the agent"
+ },
+ "assignee_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the assignee"
+ },
+ "can_reply": {
+ "type": "boolean",
+ "description": "Whether the conversation can be replied to"
+ },
+ "contact_last_seen_at": {
+ "type": "number",
+ "description": "The last activity at of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The object to save custom attributes for conversation, accepts custom attributes key and value"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ },
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The labels of the conversation"
+ },
+ "muted": {
+ "type": "boolean",
+ "description": "Whether the conversation is muted"
+ },
+ "snoozed_until": {
+ "type": "number",
+ "description": "The time at which the conversation will be unmuted"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "The status of the conversation"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The time at which conversation was created"
+ },
+ "updated_at": {
+ "type": "number",
+ "description": "The time at which conversation was updated"
+ },
+ "timestamp": {
+ "type": "string",
+ "description": "The time at which conversation was created"
+ },
+ "first_reply_created_at": {
+ "type": "number",
+ "description": "The time at which the first reply was created"
+ },
+ "unread_count": {
+ "type": "number",
+ "description": "The number of unread messages"
+ },
+ "last_non_activity_message": {
+ "$ref": "#/components/schemas/message"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the conversation"
+ },
+ "priority": {
+ "type": "string",
+ "description": "The priority of the conversation"
+ },
+ "waiting_since": {
+ "type": "number",
+ "description": "The time at which the conversation was waiting"
+ },
+ "sla_policy_id": {
+ "type": "number",
+ "description": "The ID of the SLA policy"
+ },
+ "applied_sla": {
+ "type": "object",
+ "description": "The applied SLA"
+ },
+ "sla_events": {
+ "type": "array"
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content of the message"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The ID of the account"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "number",
+ "description": "The ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "enum": [
+ 0,
+ 1,
+ 2
+ ],
+ "description": "The type of the message"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The time at which message was created"
+ },
+ "updated_at": {
+ "type": "integer",
+ "description": "The time at which message was updated"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "The flags which shows whether the message is private or not"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "sent",
+ "delivered",
+ "read",
+ "failed"
+ ],
+ "description": "The status of the message"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The source ID of the message"
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_select",
+ "cards",
+ "form"
+ ],
+ "description": "The type of the template message"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "The content attributes for each content_type"
+ },
+ "sender_type": {
+ "type": "string",
+ "enum": [
+ "contact",
+ "agent",
+ "agent_bot"
+ ],
+ "description": "The type of the sender"
+ },
+ "sender_id": {
+ "type": "number",
+ "description": "The ID of the sender"
+ },
+ "external_source_ids": {
+ "type": "object",
+ "description": "The external source IDs of the message"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the message"
+ },
+ "processed_message_content": {
+ "type": "string",
+ "description": "The processed message content"
+ },
+ "sentiment": {
+ "type": "object",
+ "description": "The sentiment of the message"
+ },
+ "conversation": {
+ "type": "object",
+ "description": "The conversation object"
+ },
+ "attachment": {
+ "type": "object",
+ "description": "The file object attached to the image"
+ },
+ "sender": {
+ "type": "object",
+ "description": "User/Agent/AgentBot object"
+ }
+ }
+ },
+ "user": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "access_token": {
+ "type": "string"
+ },
+ "account_id": {
+ "type": "number"
+ },
+ "available_name": {
+ "type": "string"
+ },
+ "avatar_url": {
+ "type": "string"
+ },
+ "confirmed": {
+ "type": "boolean"
+ },
+ "display_name": {
+ "type": "string",
+ "nullable": true
+ },
+ "message_signature": {
+ "type": "string",
+ "nullable": true
+ },
+ "email": {
+ "type": "string"
+ },
+ "hmac_identifier": {
+ "type": "string"
+ },
+ "inviter_id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "pubsub_token": {
+ "type": "string"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ]
+ },
+ "ui_settings": {
+ "type": "object"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "nullable": true
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Available for users who are created through platform APIs and has custom attributes associated."
+ },
+ "accounts": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "status": {
+ "type": "string"
+ },
+ "active_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "administrator",
+ "agent"
+ ]
+ },
+ "permissions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "availability": {
+ "type": "string"
+ },
+ "availability_status": {
+ "type": "string"
+ },
+ "auto_offline": {
+ "type": "boolean"
+ },
+ "custom_role_id": {
+ "type": "number",
+ "nullable": true
+ },
+ "custom_role": {
+ "type": "object",
+ "nullable": true
+ }
+ }
+ }
+ }
+ }
+ },
+ "agent": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "account_id": {
+ "type": "integer"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability status of the agent computed by Chatwoot."
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away."
+ },
+ "confirmed": {
+ "type": "boolean",
+ "description": "Whether the agent has confirmed their email address."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the agent"
+ },
+ "available_name": {
+ "type": "string",
+ "description": "The available name of the agent"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the agent"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "The role of the agent"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the agent"
+ },
+ "custom_role_id": {
+ "type": "integer",
+ "description": "The custom role id of the agent"
+ }
+ }
+ },
+ "inbox": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the inbox"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox"
+ },
+ "website_url": {
+ "type": "string",
+ "description": "Website URL"
+ },
+ "channel_type": {
+ "type": "string",
+ "description": "The type of the inbox"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The avatar image of the inbox"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "Widget Color used for customization of the widget"
+ },
+ "website_token": {
+ "type": "string",
+ "description": "Website Token"
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "The flag which shows whether Auto Assignment is enabled or not"
+ },
+ "web_widget_script": {
+ "type": "string",
+ "description": "Script used to load the website widget"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "The flag which shows whether greeting is enabled"
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "A greeting message when the user starts the conversation"
+ },
+ "channel_id": {
+ "type": "number",
+ "description": "ID of the channel this inbox belongs to"
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "The flag which shows whether working hours feature is enabled"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "The flag to enable collecting email from contacts"
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "The flag to enable CSAT survey"
+ },
+ "auto_assignment_config": {
+ "type": "object",
+ "description": "Configuration settings for auto assignment"
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Message to show when agents are out of office"
+ },
+ "working_hours": {
+ "type": "array",
+ "description": "Configuration for working hours of the inbox",
+ "items": {
+ "type": "object",
+ "properties": {
+ "day_of_week": {
+ "type": "number",
+ "description": "Day of the week (0-6, where 0 is Sunday)"
+ },
+ "closed_all_day": {
+ "type": "boolean",
+ "description": "Whether the inbox is closed for the entire day"
+ },
+ "open_hour": {
+ "type": "number",
+ "description": "Hour when inbox opens (0-23)"
+ },
+ "open_minutes": {
+ "type": "number",
+ "description": "Minutes of the hour when inbox opens (0-59)"
+ },
+ "close_hour": {
+ "type": "number",
+ "description": "Hour when inbox closes (0-23)"
+ },
+ "close_minutes": {
+ "type": "number",
+ "description": "Minutes of the hour when inbox closes (0-59)"
+ },
+ "open_all_day": {
+ "type": "boolean",
+ "description": "Whether the inbox is open for the entire day"
+ }
+ }
+ }
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone configuration for the inbox"
+ },
+ "callback_webhook_url": {
+ "type": "string",
+ "description": "Webhook URL for callbacks"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Whether to allow messages after a conversation is resolved"
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Whether to lock a contact to a single conversation"
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Type of sender name to display (e.g., friendly)"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name associated with the inbox"
+ },
+ "hmac_mandatory": {
+ "type": "boolean",
+ "description": "Whether HMAC verification is mandatory"
+ },
+ "selected_feature_flags": {
+ "type": "object",
+ "description": "Selected feature flags for the inbox"
+ },
+ "reply_time": {
+ "type": "string",
+ "description": "Expected reply time"
+ },
+ "messaging_service_sid": {
+ "type": "string",
+ "description": "Messaging service SID for SMS providers"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "Phone number associated with the inbox"
+ },
+ "medium": {
+ "type": "string",
+ "description": "Medium of communication (e.g., sms, email)"
+ },
+ "provider": {
+ "type": "string",
+ "description": "Provider of the channel"
+ }
+ }
+ },
+ "agent_bot": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "ID of the agent bot"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the agent bot"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot"
+ },
+ "bot_type": {
+ "type": "string",
+ "description": "The type of the bot"
+ },
+ "bot_config": {
+ "type": "object",
+ "description": "The configuration of the bot"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "Account ID if it's an account specific bot"
+ },
+ "access_token": {
+ "type": "string",
+ "description": "The access token for the bot"
+ },
+ "system_bot": {
+ "type": "boolean",
+ "description": "Whether the bot is a system bot"
+ }
+ }
+ },
+ "contact_inboxes": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox_contact"
+ }
+ }
+ },
+ "contactable_inboxes": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Contact Inbox Source Id"
+ },
+ "inbox": {
+ "$ref": "#/components/schemas/inbox"
+ }
+ }
+ },
+ "custom_filter": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the custom filter"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the custom filter"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ],
+ "description": "The description about the custom filter"
+ },
+ "query": {
+ "type": "object",
+ "description": "A query that needs to be saved as a custom filter"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The time at which the custom filter was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The time at which the custom filter was updated"
+ }
+ }
+ },
+ "webhook": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the webhook"
+ },
+ "url": {
+ "type": "string",
+ "description": "The url to which the events will be send"
+ },
+ "subscriptions": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_status_changed",
+ "conversation_updated",
+ "contact_created",
+ "contact_updated",
+ "message_created",
+ "message_updated",
+ "webwidget_triggered"
+ ]
+ },
+ "description": "The list of subscribed events"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The id of the account which the webhook object belongs to"
+ }
+ }
+ },
+ "account": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Account ID"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the account"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "administrator",
+ "agent"
+ ],
+ "description": "The user role in the account"
+ }
+ }
+ },
+ "account_user": {
+ "type": "array",
+ "description": "Array of account users",
+ "items": {
+ "type": "object",
+ "properties": {
+ "account_id": {
+ "type": "integer",
+ "description": "The ID of the account"
+ },
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user"
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent"
+ }
+ }
+ }
+ },
+ "platform_account": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Account ID"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the account"
+ }
+ }
+ },
+ "team": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the team"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the team"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the team"
+ },
+ "allow_auto_assign": {
+ "type": "boolean",
+ "description": "If this setting is turned on, the system would automatically assign the conversation to an agent in the team while assigning the conversation to a team"
+ },
+ "account_id": {
+ "type": "number",
+ "description": "The ID of the account with the team is a part of"
+ },
+ "is_member": {
+ "type": "boolean",
+ "description": "This field shows whether the current user is a part of the team"
+ }
+ }
+ },
+ "integrations_app": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the integration"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the integration"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the team"
+ },
+ "hook_type": {
+ "type": "string",
+ "description": "Whether the integration is an account or inbox integration"
+ },
+ "enabled": {
+ "type": "boolean",
+ "description": "Whether the integration is enabled for the account"
+ },
+ "allow_multiple_hooks": {
+ "type": "boolean",
+ "description": "Whether multiple hooks can be created for the integration"
+ },
+ "hooks": {
+ "type": "array",
+ "items": {
+ "type": "object"
+ },
+ "description": "If there are any hooks created for this integration"
+ }
+ }
+ },
+ "integrations_hook": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the integration hook"
+ },
+ "app_id": {
+ "type": "string",
+ "description": "The ID of the integration app"
+ },
+ "inbox_id": {
+ "type": "string",
+ "description": "Inbox ID if its an Inbox integration"
+ },
+ "account_id": {
+ "type": "string",
+ "description": "Account ID of the integration"
+ },
+ "status": {
+ "type": "boolean",
+ "description": "Whether the integration hook is enabled for the account"
+ },
+ "hook_type": {
+ "type": "boolean",
+ "description": "Whether its an account or inbox integration hook"
+ },
+ "settings": {
+ "type": "object",
+ "description": "The associated settings for the integration"
+ }
+ }
+ },
+ "public_contact": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Id of the contact"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The session identifier of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the contact"
+ },
+ "pubsub_token": {
+ "type": "string",
+ "description": "The token to be used to connect to chatwoot websocket"
+ }
+ }
+ },
+ "public_conversation": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Id of the conversation"
+ },
+ "inbox_id": {
+ "type": "string",
+ "description": "The inbox id of the conversation"
+ },
+ "messages": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message"
+ },
+ "description": "Messages in the conversation"
+ },
+ "contact": {
+ "type": "object",
+ "description": "The contact information associated to the conversation"
+ }
+ }
+ },
+ "public_message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Id of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "Text content of the message"
+ },
+ "message_type": {
+ "type": "string",
+ "description": "Denotes the message type"
+ },
+ "content_type": {
+ "type": "string",
+ "description": "Content type of the message"
+ },
+ "content_attributes": {
+ "type": "string",
+ "description": "Additional content attributes of the message"
+ },
+ "created_at": {
+ "type": "string",
+ "description": "Created at time stamp of the message"
+ },
+ "conversation_id": {
+ "type": "string",
+ "description": "Conversation Id of the message"
+ },
+ "attachments": {
+ "type": "array",
+ "items": {
+ "type": "object"
+ },
+ "description": "Attachments if any"
+ },
+ "sender": {
+ "type": "object",
+ "description": "Details of the sender"
+ }
+ }
+ },
+ "public_inbox": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "Inbox identifier"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the inbox"
+ },
+ "timezone": {
+ "type": "string",
+ "description": "The timezone defined on the inbox"
+ },
+ "working_hours": {
+ "type": "array",
+ "description": "The working hours defined on the inbox",
+ "items": {
+ "type": "object",
+ "properties": {
+ "day_of_week": {
+ "type": "integer",
+ "description": "Day of the week as a number. Sunday -> 0, Saturday -> 6"
+ },
+ "open_all_day": {
+ "type": "boolean",
+ "description": "Whether or not the business is open the whole day"
+ },
+ "closed_all_day": {
+ "type": "boolean",
+ "description": "Whether or not the business is closed the whole day"
+ },
+ "open_hour": {
+ "type": "integer",
+ "description": "Opening hour. Can be null if closed all day"
+ },
+ "open_minutes": {
+ "type": "integer",
+ "description": "Opening minute. Can be null if closed all day"
+ },
+ "close_hour": {
+ "type": "integer",
+ "description": "Closing hour. Can be null if closed all day"
+ },
+ "close_minutes": {
+ "type": "integer",
+ "description": "Closing minute. Can be null if closed all day"
+ }
+ }
+ }
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the working hours are enabled on the inbox"
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the Customer Satisfaction survey is enabled on the inbox"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the Greeting Message is enabled on the inbox"
+ },
+ "identity_validation_enabled": {
+ "type": "boolean",
+ "description": "Whether of not the User Identity Validation is enforced on the inbox"
+ }
+ }
+ },
+ "account_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the account",
+ "example": "My Account"
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the account",
+ "example": "en"
+ },
+ "domain": {
+ "type": "string",
+ "description": "The domain of the account",
+ "example": "example.com"
+ },
+ "support_email": {
+ "type": "string",
+ "description": "The support email of the account",
+ "example": "support@example.com"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "active",
+ "suspended"
+ ],
+ "description": "The status of the account",
+ "example": "active"
+ },
+ "limits": {
+ "type": "object",
+ "description": "The limits of the account",
+ "example": {
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the account",
+ "example": {
+ }
+ }
+ }
+ },
+ "account_user_create_update_payload": {
+ "type": "object",
+ "required": [
+ "user_id",
+ "role"
+ ],
+ "properties": {
+ "user_id": {
+ "type": "integer",
+ "description": "The ID of the user",
+ "example": 1
+ },
+ "role": {
+ "type": "string",
+ "description": "whether user is an administrator or agent",
+ "example": "administrator"
+ }
+ }
+ },
+ "platform_agent_bot_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot",
+ "example": "My Agent Bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the agent bot",
+ "example": "This is a sample agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot",
+ "example": "https://example.com/webhook"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "The account ID to associate the agent bot with",
+ "example": 1
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the agent bot avatar",
+ "example": "https://example.com/avatar.png"
+ }
+ }
+ },
+ "agent_bot_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the agent bot",
+ "example": "My Agent Bot"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the agent bot",
+ "example": "This is a sample agent bot"
+ },
+ "outgoing_url": {
+ "type": "string",
+ "description": "The webhook URL for the bot",
+ "example": "https://example.com/webhook"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the agent bot avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "bot_type": {
+ "type": "integer",
+ "description": "The type of the bot (0 for webhook)",
+ "example": 0
+ },
+ "bot_config": {
+ "type": "object",
+ "description": "The configuration for the bot",
+ "example": {
+ }
+ }
+ }
+ },
+ "user_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the user",
+ "example": "Daniel"
+ },
+ "display_name": {
+ "type": "string",
+ "description": "Display name of the user",
+ "example": "Dan"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the user",
+ "example": "daniel@acme.inc"
+ },
+ "password": {
+ "type": "string",
+ "description": "Password must contain uppercase, lowercase letters, number and a special character",
+ "example": "Password2!"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes you want to associate with the user",
+ "example": {
+ }
+ }
+ }
+ },
+ "canned_response_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "Message content for canned response",
+ "example": "Hello, {{contact.name}}! Welcome to our service."
+ },
+ "short_code": {
+ "type": "string",
+ "description": "Short Code for quick access of the canned response",
+ "example": "welcome"
+ }
+ }
+ },
+ "custom_attribute_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "attribute_display_name": {
+ "type": "string",
+ "description": "Attribute display name",
+ "example": "Custom Attribute"
+ },
+ "attribute_display_type": {
+ "type": "integer",
+ "description": "Attribute display type (text- 0, number- 1, currency- 2, percent- 3, link- 4, date- 5, list- 6, checkbox- 7)",
+ "example": 0
+ },
+ "attribute_description": {
+ "type": "string",
+ "description": "Attribute description",
+ "example": "This is a custom attribute"
+ },
+ "attribute_key": {
+ "type": "string",
+ "description": "Attribute unique key value",
+ "example": "custom_attribute"
+ },
+ "attribute_values": {
+ "type": "array",
+ "description": "Attribute values",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "value1",
+ "value2"
+ ]
+ },
+ "attribute_model": {
+ "type": "integer",
+ "description": "Attribute type(conversation_attribute- 0, contact_attribute- 1)",
+ "example": 0
+ },
+ "regex_pattern": {
+ "type": "string",
+ "description": "Regex pattern (Only applicable for type- text). The regex pattern is used to validate the attribute value(s).",
+ "example": "^[a-zA-Z0-9]+$"
+ },
+ "regex_cue": {
+ "type": "string",
+ "description": "Regex cue message (Only applicable for type- text). The cue message is shown when the regex pattern is not matched.",
+ "example": "Please enter a valid value"
+ }
+ }
+ },
+ "agent_create_payload": {
+ "type": "object",
+ "required": [
+ "name",
+ "email",
+ "role"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Full Name of the agent",
+ "example": "John Doe"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the Agent",
+ "example": "john.doe@acme.inc"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "Whether its administrator or agent",
+ "example": "agent"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability setting of the agent.",
+ "example": "available"
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away.",
+ "example": true
+ }
+ }
+ },
+ "agent_update_payload": {
+ "type": "object",
+ "required": [
+ "role"
+ ],
+ "properties": {
+ "role": {
+ "type": "string",
+ "enum": [
+ "agent",
+ "administrator"
+ ],
+ "description": "Whether its administrator or agent",
+ "example": "agent"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "available",
+ "busy",
+ "offline"
+ ],
+ "description": "The availability status of the agent.",
+ "example": "available"
+ },
+ "auto_offline": {
+ "type": "boolean",
+ "description": "Whether the availability status of agent is configured to go offline automatically when away.",
+ "example": true
+ }
+ }
+ },
+ "contact_create_payload": {
+ "type": "object",
+ "required": [
+ "inbox_id"
+ ],
+ "properties": {
+ "inbox_id": {
+ "type": "number",
+ "description": "ID of the inbox to which the contact belongs",
+ "example": 1
+ },
+ "name": {
+ "type": "string",
+ "description": "name of the contact",
+ "example": "Alice"
+ },
+ "email": {
+ "type": "string",
+ "description": "email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "whether the contact is blocked or not",
+ "example": false
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the contact avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "A unique identifier for the contact in external system",
+ "example": "1234567890"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "An object where you can store additional attributes for contact. example {\"type\":\"customer\", \"age\":30}",
+ "example": {
+ "type": "customer",
+ "age": 30
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "An object where you can store custom attributes for contact. example {\"type\":\"customer\", \"age\":30}, this should have a valid custom attribute definition.",
+ "example": {
+ }
+ }
+ }
+ },
+ "contact_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "name of the contact",
+ "example": "Alice"
+ },
+ "email": {
+ "type": "string",
+ "description": "email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "whether the contact is blocked or not",
+ "example": false
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "The url to a jpeg, png file for the contact avatar",
+ "example": "https://example.com/avatar.png"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "A unique identifier for the contact in external system",
+ "example": "1234567890"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "An object where you can store additional attributes for contact. example {\"type\":\"customer\", \"age\":30}",
+ "example": {
+ "type": "customer",
+ "age": 30
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "An object where you can store custom attributes for contact. example {\"type\":\"customer\", \"age\":30}, this should have a valid custom attribute definition.",
+ "example": {
+ }
+ }
+ }
+ },
+ "conversation_create_payload": {
+ "type": "object",
+ "required": [
+ "source_id",
+ "inbox_id"
+ ],
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Conversation source id",
+ "example": "1234567890"
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "Id of inbox in which the conversation is created
Allowed Inbox Types: Website, Phone, Api, Email",
+ "example": 1
+ },
+ "contact_id": {
+ "type": "integer",
+ "description": "Contact Id for which conversation is created",
+ "example": 1
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "Lets you specify attributes like browser information",
+ "example": {
+ "browser": "Chrome",
+ "browser_version": "89.0.4389.82",
+ "os": "Windows",
+ "os_version": "10"
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The object to save custom attributes for conversation, accepts custom attributes key and value",
+ "example": {
+ "attribute_key": "attribute_value",
+ "priority_conversation_number": 3
+ }
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved",
+ "pending"
+ ],
+ "description": "Specify the conversation whether it's pending, open, closed",
+ "example": "open"
+ },
+ "assignee_id": {
+ "type": "integer",
+ "description": "Agent Id for assigning a conversation to an agent",
+ "example": 1
+ },
+ "team_id": {
+ "type": "integer",
+ "description": "Team Id for assigning a conversation to a team\\",
+ "example": 1
+ },
+ "snoozed_until": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Snoozed until date time",
+ "example": "2030-07-21T17:32:28Z"
+ },
+ "message": {
+ "type": "object",
+ "description": "The initial message to be sent to the conversation",
+ "required": [
+ "content"
+ ],
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "The content of the message",
+ "example": "Hello, how can I help you?"
+ },
+ "template_params": {
+ "type": "object",
+ "description": "The template params for the message in case of whatsapp Channel",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "sample_issue_resolution"
+ },
+ "category": {
+ "type": "string",
+ "description": "Category of the template",
+ "example": "UTILITY"
+ },
+ "language": {
+ "type": "string",
+ "description": "Language of the template",
+ "example": "en_US"
+ },
+ "processed_params": {
+ "type": "object",
+ "description": "The processed param values for template variables in template",
+ "example": {
+ "1": "Chatwoot"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation_message_create_payload": {
+ "type": "object",
+ "required": [
+ "content"
+ ],
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "The content of the message",
+ "example": "Hello, how can I help you?"
+ },
+ "message_type": {
+ "type": "string",
+ "enum": [
+ "outgoing",
+ "incoming"
+ ],
+ "description": "The type of the message",
+ "example": "outgoing"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "Flag to identify if it is a private note",
+ "example": false
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_email",
+ "cards",
+ "input_select",
+ "form",
+ "article"
+ ],
+ "description": "Content type of the message",
+ "example": "text"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "Attributes based on the content type",
+ "example": {
+ }
+ },
+ "campaign_id": {
+ "type": "integer",
+ "description": "The campaign id to which the message belongs",
+ "example": 1
+ },
+ "template_params": {
+ "type": "object",
+ "description": "The template params for the message in case of whatsapp Channel",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "sample_issue_resolution"
+ },
+ "category": {
+ "type": "string",
+ "description": "Category of the template",
+ "example": "UTILITY"
+ },
+ "language": {
+ "type": "string",
+ "description": "Language of the template",
+ "example": "en_US"
+ },
+ "processed_params": {
+ "type": "object",
+ "description": "The processed param values for template variables in template",
+ "example": {
+ "1": "Chatwoot"
+ }
+ }
+ }
+ }
+ }
+ },
+ "inbox_create_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox",
+ "example": "Support"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Image file for avatar"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Enable greeting message",
+ "example": true
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "Greeting message to be displayed on the widget",
+ "example": "Hello, how can I help you?"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "Enable email collection",
+ "example": true
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Enable CSAT survey",
+ "example": true
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "Enable Auto Assignment",
+ "example": true
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Enable working hours",
+ "example": true
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Out of office message to be displayed on the widget",
+ "example": "We are currently out of office. Please leave a message and we will get back to you."
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone of the inbox",
+ "example": "America/New_York"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Allow messages after conversation is resolved",
+ "example": true
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Lock to single conversation",
+ "example": true
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "Id of the help center portal to attach to the inbox",
+ "example": 1
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Sender name type for the inbox",
+ "enum": [
+ "friendly",
+ "professional"
+ ],
+ "example": "friendly"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name for the inbox",
+ "example": "My Business"
+ },
+ "channel": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "Type of the channel",
+ "enum": [
+ "web_widget",
+ "api",
+ "email",
+ "line",
+ "telegram",
+ "whatsapp",
+ "sms"
+ ],
+ "example": "web_widget"
+ },
+ "website_url": {
+ "type": "string",
+ "description": "URL at which the widget will be loaded",
+ "example": "https://example.com"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget",
+ "example": "Welcome to our support"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget",
+ "example": "We are here to help you"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "A Hex-color string used to customize the widget",
+ "example": "#FF5733"
+ }
+ }
+ }
+ }
+ },
+ "inbox_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the inbox",
+ "example": "Support"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Image file for avatar"
+ },
+ "greeting_enabled": {
+ "type": "boolean",
+ "description": "Enable greeting message",
+ "example": true
+ },
+ "greeting_message": {
+ "type": "string",
+ "description": "Greeting message to be displayed on the widget",
+ "example": "Hello, how can I help you?"
+ },
+ "enable_email_collect": {
+ "type": "boolean",
+ "description": "Enable email collection",
+ "example": true
+ },
+ "csat_survey_enabled": {
+ "type": "boolean",
+ "description": "Enable CSAT survey",
+ "example": true
+ },
+ "enable_auto_assignment": {
+ "type": "boolean",
+ "description": "Enable Auto Assignment",
+ "example": true
+ },
+ "working_hours_enabled": {
+ "type": "boolean",
+ "description": "Enable working hours",
+ "example": true
+ },
+ "out_of_office_message": {
+ "type": "string",
+ "description": "Out of office message to be displayed on the widget",
+ "example": "We are currently out of office. Please leave a message and we will get back to you."
+ },
+ "timezone": {
+ "type": "string",
+ "description": "Timezone of the inbox",
+ "example": "America/New_York"
+ },
+ "allow_messages_after_resolved": {
+ "type": "boolean",
+ "description": "Allow messages after conversation is resolved",
+ "example": true
+ },
+ "lock_to_single_conversation": {
+ "type": "boolean",
+ "description": "Lock to single conversation",
+ "example": true
+ },
+ "portal_id": {
+ "type": "integer",
+ "description": "Id of the help center portal to attach to the inbox",
+ "example": 1
+ },
+ "sender_name_type": {
+ "type": "string",
+ "description": "Sender name type for the inbox",
+ "enum": [
+ "friendly",
+ "professional"
+ ],
+ "example": "friendly"
+ },
+ "business_name": {
+ "type": "string",
+ "description": "Business name for the inbox",
+ "example": "My Business"
+ },
+ "channel": {
+ "type": "object",
+ "properties": {
+ "website_url": {
+ "type": "string",
+ "description": "URL at which the widget will be loaded",
+ "example": "https://example.com"
+ },
+ "welcome_title": {
+ "type": "string",
+ "description": "Welcome title to be displayed on the widget",
+ "example": "Welcome to our support"
+ },
+ "welcome_tagline": {
+ "type": "string",
+ "description": "Welcome tagline to be displayed on the widget",
+ "example": "We are here to help you"
+ },
+ "widget_color": {
+ "type": "string",
+ "description": "A Hex-color string used to customize the widget",
+ "example": "#FF5733"
+ }
+ }
+ }
+ }
+ },
+ "team_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the team",
+ "example": "Support Team"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the team",
+ "example": "This is a team of support agents"
+ },
+ "allow_auto_assign": {
+ "type": "boolean",
+ "description": "If this setting is turned on, the system would automatically assign the conversation to an agent in the team while assigning the conversation to a team",
+ "example": true
+ }
+ }
+ },
+ "custom_filter_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the custom filter",
+ "example": "My Custom Filter"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "conversation",
+ "contact",
+ "report"
+ ],
+ "description": "The description about the custom filter",
+ "example": "conversation"
+ },
+ "query": {
+ "type": "object",
+ "description": "A query that needs to be saved as a custom filter",
+ "example": {
+ }
+ }
+ }
+ },
+ "webhook_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "The url where the events should be sent",
+ "example": "https://example.com/webhook"
+ },
+ "subscriptions": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_status_changed",
+ "conversation_updated",
+ "message_created",
+ "message_updated",
+ "contact_created",
+ "contact_updated",
+ "webwidget_triggered"
+ ]
+ },
+ "description": "The events you want to subscribe to.",
+ "example": [
+ "conversation_created",
+ "conversation_status_changed"
+ ]
+ }
+ }
+ },
+ "integrations_hook_create_payload": {
+ "type": "object",
+ "properties": {
+ "app_id": {
+ "type": "integer",
+ "description": "The ID of app for which integration hook is being created",
+ "example": 1
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "The inbox ID, if the hook is an inbox hook",
+ "example": 1
+ },
+ "status": {
+ "type": "integer",
+ "description": "The status of the integration (0 for inactive, 1 for active)",
+ "example": 1
+ },
+ "settings": {
+ "type": "object",
+ "description": "The settings required by the integration",
+ "example": {
+ }
+ }
+ }
+ },
+ "integrations_hook_update_payload": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "integer",
+ "description": "The status of the integration (0 for inactive, 1 for active)",
+ "example": 1
+ },
+ "settings": {
+ "type": "object",
+ "description": "The settings required by the integration",
+ "example": {
+ }
+ }
+ }
+ },
+ "automation_rule_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Rule name",
+ "example": "Add label on message create event"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description about the automation and actions",
+ "example": "Add label support and sales on message create event if incoming message content contains text help"
+ },
+ "event_name": {
+ "type": "string",
+ "enum": [
+ "conversation_created",
+ "conversation_updated",
+ "message_created"
+ ],
+ "example": "message_created",
+ "description": "The event when you want to execute the automation actions"
+ },
+ "active": {
+ "type": "boolean",
+ "description": "Enable/disable automation rule"
+ },
+ "actions": {
+ "type": "array",
+ "description": "Array of actions which you want to perform when condition matches, e.g add label support if message contains content help.",
+ "items": {
+ "type": "object",
+ "example": {
+ "action_name": "add_label",
+ "action_params": [
+ "support"
+ ]
+ }
+ }
+ },
+ "conditions": {
+ "type": "array",
+ "description": "Array of conditions on which conversation filter would work, e.g message content contains text help.",
+ "items": {
+ "type": "object",
+ "example": {
+ "attribute_key": "content",
+ "filter_operator": "contains",
+ "query_operator": "OR",
+ "values": [
+ "help"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "portal_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "color": {
+ "type": "string",
+ "description": "Header color for help-center in hex format",
+ "example": "#FFFFFF"
+ },
+ "custom_domain": {
+ "type": "string",
+ "description": "Custom domain to display help center.",
+ "example": "chatwoot.help"
+ },
+ "header_text": {
+ "type": "string",
+ "description": "Help center header",
+ "example": "Handbook"
+ },
+ "homepage_link": {
+ "type": "string",
+ "description": "link to main dashboard",
+ "example": "https://www.chatwoot.com/"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name for the portal",
+ "example": "Handbook"
+ },
+ "page_title": {
+ "type": "string",
+ "description": "Page title for the portal",
+ "example": "Handbook"
+ },
+ "slug": {
+ "type": "string",
+ "description": "Slug for the portal to display in link",
+ "example": "handbook"
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Status to check if portal is live",
+ "example": false
+ },
+ "config": {
+ "type": "object",
+ "description": "Configuration about supporting locales",
+ "example": {
+ "allowed_locales": [
+ "en",
+ "es"
+ ],
+ "default_locale": "en"
+ }
+ }
+ }
+ },
+ "category_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the category",
+ "example": "Category Name"
+ },
+ "description": {
+ "type": "string",
+ "description": "A description for the category",
+ "example": "Category description"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Category position in the portal list to sort",
+ "example": 1
+ },
+ "slug": {
+ "type": "string",
+ "description": "The category slug used in the URL",
+ "example": "category-name"
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the category",
+ "example": "en"
+ },
+ "icon": {
+ "type": "string",
+ "description": "The icon of the category as a string (emoji)",
+ "example": "📚"
+ },
+ "parent_category_id": {
+ "type": "integer",
+ "description": "To define parent category, e.g product documentation has multiple level features in sales category or in engineering category.",
+ "example": 1
+ },
+ "associated_category_id": {
+ "type": "integer",
+ "description": "To associate similar categories to each other, e.g same category of product documentation in different languages",
+ "example": 2
+ }
+ }
+ },
+ "article_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "title": {
+ "type": "string",
+ "description": "The title of the article",
+ "example": "Article Title"
+ },
+ "slug": {
+ "type": "string",
+ "description": "The slug of the article",
+ "example": "article-title"
+ },
+ "position": {
+ "type": "integer",
+ "description": "article position in category",
+ "example": 1
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content.",
+ "example": "This is the content of the article"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the article",
+ "example": "This is the description of the article"
+ },
+ "category_id": {
+ "type": "integer",
+ "description": "The category id of the article",
+ "example": 1
+ },
+ "author_id": {
+ "type": "integer",
+ "description": "The author agent id of the article",
+ "example": 1
+ },
+ "associated_article_id": {
+ "type": "integer",
+ "description": "To associate similar articles to each other, e.g to provide the link for the reference.",
+ "example": 2
+ },
+ "status": {
+ "type": "integer",
+ "description": "The status of the article. 0 for draft, 1 for published, 2 for archived",
+ "example": 1
+ },
+ "locale": {
+ "type": "string",
+ "description": "The locale of the article",
+ "example": "en"
+ },
+ "meta": {
+ "type": "object",
+ "description": "Use for search",
+ "example": {
+ "tags": [
+ "article_name"
+ ],
+ "title": "article title",
+ "description": "article description"
+ }
+ }
+ }
+ },
+ "public_contact_create_update_payload": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "External identifier of the contact",
+ "example": "1234567890"
+ },
+ "identifier_hash": {
+ "type": "string",
+ "description": "Identifier hash prepared for HMAC authentication",
+ "example": "e93275d4eba0e5679ad55f5360af00444e2a888df9b0afa3e8b691c3173725f9"
+ },
+ "email": {
+ "type": "string",
+ "description": "Email of the contact",
+ "example": "alice@acme.inc"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the contact",
+ "example": "Alice"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "Phone number of the contact",
+ "example": "+123456789"
+ },
+ "avatar": {
+ "type": "string",
+ "format": "binary",
+ "description": "Send the form data with the avatar image binary or use the avatar_url"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes of the customer",
+ "example": {
+ }
+ }
+ }
+ },
+ "public_message_create_payload": {
+ "type": "object",
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "Content for the message",
+ "example": "Hello, how can I help you?"
+ },
+ "echo_id": {
+ "type": "string",
+ "description": "Temporary identifier which will be passed back via websockets",
+ "example": "1234567890"
+ }
+ }
+ },
+ "public_message_update_payload": {
+ "type": "object",
+ "properties": {
+ "submitted_values": {
+ "type": "object",
+ "description": "Replies to the Bot Message Types",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submiitted value",
+ "example": "My Name"
+ },
+ "title": {
+ "type": "string",
+ "description": "The title of the submitted value",
+ "example": "My Title"
+ },
+ "value": {
+ "type": "string",
+ "description": "The value of the submitted value",
+ "example": "value"
+ },
+ "csat_survey_response": {
+ "type": "object",
+ "description": "The CSAT survey response",
+ "properties": {
+ "feedback_message": {
+ "type": "string",
+ "description": "The feedback message of the CSAT survey response",
+ "example": "Great service!"
+ },
+ "rating": {
+ "type": "integer",
+ "description": "The rating of the CSAT survey response",
+ "example": 5
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "public_conversation_create_payload": {
+ "type": "object",
+ "properties": {
+ "custom_attributes": {
+ "type": "object",
+ "description": "Custom attributes of the conversation",
+ "example": {
+ }
+ }
+ }
+ },
+ "extended_contact": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/contact"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Id of the user"
+ },
+ "availability_status": {
+ "type": "string",
+ "enum": [
+ "online",
+ "offline"
+ ],
+ "description": "Availability status of the user"
+ }
+ }
+ }
+ ]
+ },
+ "contact_base": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/contact"
+ }
+ ]
+ },
+ "contact_list": {
+ "type": "array",
+ "description": "array of contacts",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/contact"
+ }
+ ]
+ }
+ },
+ "contact_conversations": {
+ "type": "array",
+ "description": "array of conversations",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "properties": {
+ "display_id": {
+ "type": "number"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "contact_labels": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of labels",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "conversation_list": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "mine_count": {
+ "type": "number"
+ },
+ "unassigned_count": {
+ "type": "number"
+ },
+ "assigned_count": {
+ "type": "number"
+ },
+ "all_count": {
+ "type": "number"
+ }
+ }
+ },
+ "payload": {
+ "type": "array",
+ "description": "array of conversations",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/generic_id"
+ },
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "conversation_show": {
+ "type": "object",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "conversation_status_toggle": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object"
+ },
+ "payload": {
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean"
+ },
+ "current_status": {
+ "type": "string",
+ "enum": [
+ "open",
+ "resolved"
+ ]
+ },
+ "conversation_id": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "conversation_labels": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "description": "Array of labels",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "account_summary": {
+ "type": "object",
+ "properties": {
+ "avg_first_response_time": {
+ "type": "string"
+ },
+ "avg_resolution_time": {
+ "type": "string"
+ },
+ "conversations_count": {
+ "type": "number"
+ },
+ "incoming_messages_count": {
+ "type": "number"
+ },
+ "outgoing_messages_count": {
+ "type": "number"
+ },
+ "resolutions_count": {
+ "type": "number"
+ },
+ "previous": {
+ "type": "object",
+ "properties": {
+ "avg_first_response_time": {
+ "type": "string"
+ },
+ "avg_resolution_time": {
+ "type": "string"
+ },
+ "conversations_count": {
+ "type": "number"
+ },
+ "incoming_messages_count": {
+ "type": "number"
+ },
+ "outgoing_messages_count": {
+ "type": "number"
+ },
+ "resolutions_count": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "agent_conversation_metrics": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ },
+ "thumbnail": {
+ "type": "string"
+ },
+ "availability": {
+ "type": "string"
+ },
+ "metric": {
+ "type": "object",
+ "properties": {
+ "open": {
+ "type": "number"
+ },
+ "unattended": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "contact_detail": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact",
+ "properties": {
+ "city": {
+ "type": "string",
+ "description": "City of the contact"
+ },
+ "country": {
+ "type": "string",
+ "description": "Country of the contact"
+ },
+ "country_code": {
+ "type": "string",
+ "description": "Country code of the contact"
+ },
+ "created_at_ip": {
+ "type": "string",
+ "description": "IP address when the contact was created"
+ }
+ }
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact"
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact",
+ "nullable": true
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact",
+ "nullable": true
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "type": {
+ "type": "string",
+ "description": "The type of entity",
+ "enum": [
+ "contact"
+ ]
+ }
+ }
+ },
+ "message_detailed": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "The ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "The text content of the message"
+ },
+ "inbox_id": {
+ "type": "number",
+ "description": "The ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "number",
+ "description": "The ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "enum": [
+ 0,
+ 1,
+ 2,
+ 3
+ ],
+ "description": "The type of the message (0: incoming, 1: outgoing, 2: activity, 3: template)"
+ },
+ "content_type": {
+ "type": "string",
+ "enum": [
+ "text",
+ "input_select",
+ "cards",
+ "form",
+ "input_csat"
+ ],
+ "description": "The type of the message content"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "sent",
+ "delivered",
+ "read",
+ "failed"
+ ],
+ "description": "The status of the message"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "The content attributes for each content_type",
+ "properties": {
+ "in_reply_to": {
+ "type": "string",
+ "description": "ID of the message this is replying to",
+ "nullable": true
+ }
+ }
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "The timestamp when message was created"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "The flag which shows whether the message is private or not"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "The source ID of the message",
+ "nullable": true
+ },
+ "sender": {
+ "$ref": "#/components/schemas/contact_detail"
+ }
+ }
+ },
+ "conversation_meta": {
+ "type": "object",
+ "properties": {
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Labels associated with the conversation"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "properties": {
+ "browser": {
+ "type": "object",
+ "properties": {
+ "device_name": {
+ "type": "string",
+ "description": "Name of the device"
+ },
+ "browser_name": {
+ "type": "string",
+ "description": "Name of the browser"
+ },
+ "platform_name": {
+ "type": "string",
+ "description": "Name of the platform"
+ },
+ "browser_version": {
+ "type": "string",
+ "description": "Version of the browser"
+ },
+ "platform_version": {
+ "type": "string",
+ "description": "Version of the platform"
+ }
+ }
+ },
+ "referer": {
+ "type": "string",
+ "description": "Referrer URL"
+ },
+ "initiated_at": {
+ "type": "object",
+ "properties": {
+ "timestamp": {
+ "type": "string",
+ "description": "Timestamp when the conversation was initiated"
+ }
+ }
+ },
+ "browser_language": {
+ "type": "string",
+ "description": "Browser language setting"
+ },
+ "conversation_language": {
+ "type": "string",
+ "description": "Conversation language"
+ }
+ },
+ "description": "Additional attributes of the conversation"
+ },
+ "contact": {
+ "$ref": "#/components/schemas/contact_detail"
+ },
+ "agent_last_seen_at": {
+ "type": "string",
+ "description": "Timestamp when the agent last saw the conversation",
+ "nullable": true
+ },
+ "assignee_last_seen_at": {
+ "type": "string",
+ "description": "Timestamp when the assignee last saw the conversation",
+ "nullable": true
+ }
+ }
+ },
+ "conversation_messages": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/conversation_meta"
+ },
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/message_detailed"
+ },
+ "description": "List of messages in the conversation"
+ }
+ }
+ },
+ "contact_meta": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "integer",
+ "description": "Total number of contacts"
+ },
+ "current_page": {
+ "type": "string",
+ "description": "Current page number"
+ }
+ }
+ },
+ "contact_inbox": {
+ "type": "object",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Source identifier for the contact inbox"
+ },
+ "inbox": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the inbox"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "URL for the inbox avatar"
+ },
+ "channel_id": {
+ "type": "integer",
+ "description": "ID of the channel"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the inbox"
+ },
+ "channel_type": {
+ "type": "string",
+ "description": "Type of channel"
+ },
+ "provider": {
+ "type": "string",
+ "description": "Provider of the inbox",
+ "nullable": true
+ }
+ }
+ }
+ }
+ },
+ "contact_list_item": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The object containing additional attributes related to the contact",
+ "properties": {
+ "city": {
+ "type": "string",
+ "description": "City of the contact"
+ },
+ "country": {
+ "type": "string",
+ "description": "Country of the contact"
+ },
+ "country_code": {
+ "type": "string",
+ "description": "Country code of the contact"
+ },
+ "created_at_ip": {
+ "type": "string",
+ "description": "IP address when the contact was created"
+ }
+ }
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "Availability status of the contact",
+ "enum": [
+ "online",
+ "offline"
+ ]
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact",
+ "nullable": true
+ },
+ "id": {
+ "type": "integer",
+ "description": "The ID of the contact"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the contact"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the contact",
+ "nullable": true
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the contact is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the contact",
+ "nullable": true
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "The thumbnail of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the contact"
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "Timestamp of last activity",
+ "nullable": true
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "Timestamp when contact was created"
+ },
+ "contact_inboxes": {
+ "type": "array",
+ "description": "List of inboxes associated with this contact",
+ "items": {
+ "$ref": "#/components/schemas/contact_inbox"
+ }
+ }
+ }
+ },
+ "contacts_list_response": {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/contact_meta"
+ },
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_list_item"
+ },
+ "description": "List of contacts"
+ }
+ }
+ },
+ "contact_show_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "$ref": "#/components/schemas/contact_list_item"
+ }
+ }
+ },
+ "contact_conversation_message": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the message"
+ },
+ "content": {
+ "type": "string",
+ "description": "Content of the message"
+ },
+ "account_id": {
+ "type": "integer",
+ "description": "ID of the account"
+ },
+ "inbox_id": {
+ "type": "integer",
+ "description": "ID of the inbox"
+ },
+ "conversation_id": {
+ "type": "integer",
+ "description": "ID of the conversation"
+ },
+ "message_type": {
+ "type": "integer",
+ "description": "Type of the message"
+ },
+ "created_at": {
+ "type": "integer",
+ "description": "Timestamp when message was created"
+ },
+ "updated_at": {
+ "type": "string",
+ "description": "Formatted datetime when message was updated"
+ },
+ "private": {
+ "type": "boolean",
+ "description": "Whether the message is private"
+ },
+ "status": {
+ "type": "string",
+ "description": "Status of the message"
+ },
+ "source_id": {
+ "type": "string",
+ "description": "Source ID of the message",
+ "nullable": true
+ },
+ "content_type": {
+ "type": "string",
+ "description": "Type of the content"
+ },
+ "content_attributes": {
+ "type": "object",
+ "description": "Attributes of the content"
+ },
+ "sender_type": {
+ "type": "string",
+ "description": "Type of the sender",
+ "nullable": true
+ },
+ "sender_id": {
+ "type": "integer",
+ "description": "ID of the sender",
+ "nullable": true
+ },
+ "external_source_ids": {
+ "type": "object",
+ "description": "External source IDs"
+ },
+ "additional_attributes": {
+ "type": "object",
+ "description": "Additional attributes of the message"
+ },
+ "processed_message_content": {
+ "type": "string",
+ "description": "Processed message content",
+ "nullable": true
+ },
+ "sentiment": {
+ "type": "object",
+ "description": "Sentiment analysis of the message"
+ },
+ "conversation": {
+ "type": "object",
+ "description": "Conversation details",
+ "properties": {
+ "assignee_id": {
+ "type": "integer",
+ "description": "ID of the assignee",
+ "nullable": true
+ },
+ "unread_count": {
+ "type": "integer",
+ "description": "Count of unread messages"
+ },
+ "last_activity_at": {
+ "type": "integer",
+ "description": "Timestamp of last activity"
+ },
+ "contact_inbox": {
+ "type": "object",
+ "description": "Contact inbox details",
+ "properties": {
+ "source_id": {
+ "type": "string",
+ "description": "Source ID of the contact inbox"
+ }
+ }
+ }
+ }
+ },
+ "sender": {
+ "type": "object",
+ "description": "Details of the sender",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "ID of the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the sender"
+ },
+ "available_name": {
+ "type": "string",
+ "description": "Available name of the sender"
+ },
+ "avatar_url": {
+ "type": "string",
+ "description": "URL of the sender's avatar"
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "Availability status of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Thumbnail URL of the sender"
+ }
+ }
+ }
+ }
+ },
+ "contact_conversations_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/conversation"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "meta": {
+ "type": "object",
+ "properties": {
+ "sender": {
+ "type": "object",
+ "properties": {
+ "additional_attributes": {
+ "type": "object",
+ "description": "The additional attributes of the sender"
+ },
+ "availability_status": {
+ "type": "string",
+ "description": "The availability status of the sender"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email of the sender"
+ },
+ "id": {
+ "type": "number",
+ "description": "ID fo the sender"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the sender"
+ },
+ "phone_number": {
+ "type": "string",
+ "description": "The phone number of the sender"
+ },
+ "blocked": {
+ "type": "boolean",
+ "description": "Whether the sender is blocked"
+ },
+ "identifier": {
+ "type": "string",
+ "description": "The identifier of the sender"
+ },
+ "thumbnail": {
+ "type": "string",
+ "description": "Avatar URL of the contact"
+ },
+ "custom_attributes": {
+ "type": "object",
+ "description": "The custom attributes of the sender"
+ },
+ "last_activity_at": {
+ "type": "number",
+ "description": "The last activity at of the sender"
+ },
+ "created_at": {
+ "type": "number",
+ "description": "The created at of the sender"
+ }
+ }
+ },
+ "channel": {
+ "type": "string",
+ "description": "Channel Type"
+ },
+ "assignee": {
+ "$ref": "#/components/schemas/user"
+ },
+ "hmac_verified": {
+ "type": "boolean",
+ "description": "Whether the hmac is verified"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "description": "List of conversations for the contact"
+ }
+ }
+ },
+ "contactable_inboxes_response": {
+ "type": "object",
+ "properties": {
+ "payload": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/contact_inbox"
+ },
+ "description": "List of contactable inboxes for the contact"
+ }
+ }
+ }
+ },
+ "parameters": {
+ "account_id": {
+ "in": "path",
+ "name": "account_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the account"
+ },
+ "agent_bot_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the agentbot to be updated"
+ },
+ "team_id": {
+ "in": "path",
+ "name": "team_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the team to be updated"
+ },
+ "inbox_id": {
+ "in": "path",
+ "name": "inbox_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The ID of the Inbox"
+ },
+ "hook_id": {
+ "in": "path",
+ "name": "hook_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the integration hook"
+ },
+ "source_id": {
+ "in": "path",
+ "name": "source_id",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Id of the session for which the conversation is created.\n\n\n\n Source Ids can be obtained through contactable inboxes API or via generated.
Website: Chatwoot generated string which can be obtained from webhook events.
Phone Channels(Twilio): Phone number in e164 format
Email Channels: Contact Email address
API Channel: Any Random String"
+ },
+ "contact_sort_param": {
+ "in": "query",
+ "name": "sort",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "name",
+ "email",
+ "phone_number",
+ "last_activity_at",
+ "-name",
+ "-email",
+ "-phone_number",
+ "-last_activity_at"
+ ]
+ },
+ "required": false,
+ "description": "The attribute by which list should be sorted"
+ },
+ "conversation_id": {
+ "in": "path",
+ "name": "conversation_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the conversation"
+ },
+ "conversation_uuid": {
+ "in": "path",
+ "name": "conversation_uuid",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The uuid of the conversation"
+ },
+ "custom_filter_id": {
+ "in": "path",
+ "name": "custom_filter_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the custom filter"
+ },
+ "webhook_id": {
+ "in": "path",
+ "name": "webhook_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the webhook"
+ },
+ "message_id": {
+ "in": "path",
+ "name": "message_id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the message"
+ },
+ "page": {
+ "in": "query",
+ "name": "page",
+ "schema": {
+ "type": "integer",
+ "default": 1
+ },
+ "required": false,
+ "description": "The page parameter"
+ },
+ "platform_user_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "integer"
+ },
+ "required": true,
+ "description": "The numeric ID of the user on the platform"
+ },
+ "report_type": {
+ "in": "query",
+ "name": "type",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "account",
+ "agent",
+ "inbox",
+ "label",
+ "team"
+ ]
+ },
+ "required": true,
+ "description": "Type of report"
+ },
+ "report_metric": {
+ "in": "query",
+ "name": "metric",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "conversations_count",
+ "incoming_messages_count",
+ "outgoing_messages_count",
+ "avg_first_response_time",
+ "avg_resolution_time",
+ "resolutions_count"
+ ]
+ },
+ "required": true,
+ "description": "The type of metric"
+ },
+ "public_inbox_identifier": {
+ "in": "path",
+ "name": "inbox_identifier",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The identifier obtained from API inbox channel"
+ },
+ "public_contact_identifier": {
+ "in": "path",
+ "name": "contact_identifier",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The source id of contact obtained on contact create"
+ },
+ "portal_id": {
+ "in": "path",
+ "name": "id",
+ "schema": {
+ "type": "string"
+ },
+ "required": true,
+ "description": "The slug identifier of the portal"
+ }
+ },
+ "securitySchemes": {
+ "userApiKey": {
+ "type": "apiKey",
+ "in": "header",
+ "name": "api_access_token",
+ "description": "This token can be obtained by visiting the profile page or via rails console. Provides access to endpoints based on the user permissions levels."
+ },
+ "platformAppApiKey": {
+ "type": "apiKey",
+ "in": "header",
+ "name": "api_access_token",
+ "description": "This token can be obtained by the system admin after creating a platformApp. This token should be used to provision agent bots, accounts, users and their roles."
+ }
+ }
+ }
+}
\ No newline at end of file