Compare commits

...
Author SHA1 Message Date
Tanmay Deep Sharma 78b03a1651 validate swagger api specification 2025-05-20 17:00:52 +07:00
Tanmay Deep Sharma 22b2280337 update the commit id in docs.json 2025-05-20 16:55:50 +07:00
Tanmay Deep Sharma 3b42191705 add tags to swagger 2025-05-20 16:43:22 +07:00
Tanmay Deep Sharma 019a596a3e add tags to swagger 2025-05-20 16:09:44 +07:00
Tanmay Deep Sharma 285b79d488 add tags to swagger 2025-05-20 15:49:16 +07:00
Tanmay Deep Sharma b3c17cc81e add tags to swagger 2025-05-20 15:41:50 +07:00
Tanmay Deep Sharma 90c600acd9 add tags to swagger 2025-05-20 15:35:41 +07:00
Tanmay Deep Sharma 2187a3e566 update user profile payload for developer docs 2025-05-20 00:49:24 +07:00
Tanmay Deep Sharma 2b043e5460 update contact payload for developer docs 2025-05-20 00:34:42 +07:00
Tanmay Deep Sharma ac94e34c72 update message payload for developer docs 2025-05-15 15:36:55 +07:00
Tanmay Deep Sharma dc9e19a122 update portal payload for developer docs 2025-05-15 15:30:40 +07:00
Tanmay Deep Sharma 073e32770f update portal payload for developer docs 2025-05-15 15:22:16 +07:00
Tanmay Deep Sharma a1bddd53f1 update automation rules payload for developer docs 2025-05-15 15:10:04 +07:00
Tanmay Deep Sharma fa74cac1d6 update automation rules payload for developer docs 2025-05-15 15:03:51 +07:00
Tanmay Deep Sharma 7d863d3e29 update automation rules payload for developer docs 2025-05-15 14:56:38 +07:00
Tanmay Deep Sharma 97c3da6f93 update automation rules payload for developer docs 2025-05-15 14:49:26 +07:00
Tanmay Deep Sharma c56c1489d5 update contact payload for developer docs 2025-05-15 14:28:29 +07:00
Tanmay Deep Sharma f0a43e3ba6 update contact payload for developer docs 2025-05-15 14:01:36 +07:00
Tanmay Deep Sharma 97b6624d9d update message payload for developer docs 2025-05-15 13:43:35 +07:00
Tanmay Deep Sharma fd3426a984 update conversation payload for developer docs 2025-05-15 13:11:10 +07:00
Tanmay Deep Sharma 9181a57df2 fix developer docs request data 2025-05-15 12:39:48 +07:00
Tanmay Deep Sharma c738b3cfaa define tags in openapi documentation 2025-05-13 17:28:56 +07:00
Tanmay Deep Sharma f20a1e96e4 Merge remote-tracking branch 'daniel/develop' into developer-docs 2025-05-13 14:58:46 +07:00
Daniel Jimenez aedec95e37 fix: Test all endpoints, ensuring payloads work correctly 2025-05-13 17:24:36 +12:00
Daniel Jimenez 2c3a3bbbd2 feat: Finish adding all request payload examples 2025-05-13 14:29:02 +12:00
Daniel Jimenez c3f741bdda fix: Update swagger.json spec 2025-05-13 14:29:02 +12:00
Daniel Jimenez 62e9c613df fix: Add more examples to api endpoints 2025-05-13 14:29:02 +12:00
Daniel Jimenez 9eefec31b3 feat: Add examples to request payloads 2025-05-13 14:29:02 +12:00
Daniel Jimenez 470d51c913 fix: Security definitions for endpoints 2025-05-13 14:29:02 +12:00
Daniel JimenezandDaniel Jimenez 444668c646 feat: Update swagger to openapi 3.0.4 2025-05-13 14:29:02 +12:00
Tanmay Deep Sharma f4a77dabd9 add Open API v3 developer docs 2025-05-08 12:47:22 +07:00
229 changed files with 38599 additions and 5993 deletions
@@ -68,7 +68,7 @@ class Api::V1::Accounts::ArticlesController < Api::V1::Accounts::BaseController
def article_params def article_params
params.require(:article).permit( params.require(:article).permit(
:title, :slug, :position, :content, :description, :position, :category_id, :author_id, :associated_article_id, :status, :title, :slug, :position, :content, :description, :category_id, :author_id, :associated_article_id, :status,
:locale, meta: [:title, :locale, meta: [:title,
:description, :description,
{ tags: [] }] { tags: [] }]
+28
View File
@@ -0,0 +1,28 @@
## Chatwoot Developer Documentation
Welcome to the official Chatwoot developer documentation. This guide contains everything you need to know about Chatwoot APIs and build custom flows on top of Chatwoot APIs.
### 👩‍💻 Development
Install the [Mintlify CLI](https://www.npmjs.com/package/mintlify) to preview the documentation changes locally. To install, use the following command
```
npm i -g mintlify
```
Run the following command at the root of your documentation (where mint.json is)
```
mintlify dev
```
### 😎 Publishing Changes
Changes will be deployed to production automatically after pushing to the default branch.
You can also preview changes using PRs, which generates a preview link of the docs.
#### Troubleshooting
- Mintlify dev isn't running - Run `mintlify install` it'll re-install dependencies.
- Page loads as a 404 - Make sure you are running in a folder with `mint.json`
+84
View File
@@ -0,0 +1,84 @@
{
"name": "Chatwoot Developer Docs",
"description": "Official developer documentation for Chatwoot - the open-source customer support platform. Learn about our APIs, integrations, and development guidelines.",
"logo": {
"dark": "/logo/dark.png",
"light": "/logo/light.png"
},
"favicon": "/favicon.png",
"colors": {
"primary": "#0069ED",
"light": "#4D9CFF",
"dark": "#0050B4"
},
"theme": "maple",
"navigation": {
"tabs": [
{
"tab": "API Documentation",
"groups": [
{
"group": "Platform API",
"description": "APIs for managing platform aspects of Chatwoot",
"includeTags": [
"Accounts",
"Account Users",
"AgentBots",
"Users"
],
"openapi": "https://raw.githubusercontent.com/chatwoot/chatwoot/3b421917058c6761aa138044fe518dacdca75e89/swagger/tag_groups/platform_swagger.json"
},
{
"group": "Application API",
"description": "APIs for managing application aspects of Chatwoot",
"includeTags": [
"Account AgentBots",
"Agents",
"Canned Responses",
"Contacts",
"Contact Labels",
"Conversation Assignments",
"Conversation Labels",
"Conversations",
"Custom Attributes",
"Custom Filters",
"Inboxes",
"Integrations",
"Messages",
"Profile",
"Reports",
"Teams",
"Webhooks",
"Automation Rule",
"Help Center"
],
"openapi": "https://raw.githubusercontent.com/chatwoot/chatwoot/3b421917058c6761aa138044fe518dacdca75e89/swagger/tag_groups/application_swagger.json"
},
{
"group": "Client API",
"description": "APIs for client applications",
"includeTags": [
"Contacts API",
"Conversations API",
"Messages API"
],
"openapi": "https://raw.githubusercontent.com/chatwoot/chatwoot/3b421917058c6761aa138044fe518dacdca75e89/swagger/tag_groups/client_swagger.json"
},
{
"group": "Other APIs",
"description": "Other Chatwoot APIs",
"includeTags": [
"CSAT Survey Page"
],
"openapi": "https://raw.githubusercontent.com/chatwoot/chatwoot/3b421917058c6761aa138044fe518dacdca75e89/swagger/tag_groups/other_swagger.json"
}
]
}
]
},
"footerSocials": {
"twitter": "https://twitter.com/chatwootapp",
"github": "https://github.com/chatwoot",
"linkedin": "https://www.linkedin.com/company/chatwoot"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

+96
View File
@@ -17,6 +17,102 @@ namespace :swagger do
puts 'Swagger build was successful.' puts 'Swagger build was successful.'
puts "Generated #{base_path}/swagger.json" puts "Generated #{base_path}/swagger.json"
puts 'Go to http://localhost:3000/swagger see the changes.' 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
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')
# Load the full swagger specification
full_spec = JSON.parse(File.read(base_path.join('swagger.json')))
# Load the tag groups from index.yml
swagger_index = YAML.safe_load(File.open(base_path.join('index.yml')))
tag_groups = swagger_index['x-tagGroups']
# Process each tag group
tag_groups.each do |tag_group|
group_name = tag_group['name']
tags = tag_group['tags']
# Create a copy of the full spec for this tag group
tag_spec = full_spec.dup
# Filter paths to only include those with operations tagged with any of our tags
filtered_paths = {}
full_spec['paths'].each do |path, path_item|
# Check if any operation in this path has a tag from our group
operations_with_our_tags = false
path_item.each do |method, operation|
next unless operation.is_a?(Hash) && operation['tags']
# Check if any of our tags are in the operation's tags
if (operation['tags'] & tags).any?
operations_with_our_tags = true
break
end
end
# If we found operations with our tags, add the path to our filtered paths
if operations_with_our_tags
filtered_paths[path] = path_item
end
end
# Replace the paths in our tag-specific spec
tag_spec['paths'] = filtered_paths
# Filter tags to only include those in our group
tag_spec['tags'] = full_spec['tags'].select { |tag| tags.include?(tag['name']) }
# Write the tag-specific spec to file
output_file = "#{group_name.downcase}_swagger.json"
output_file = "other_swagger.json" if group_name.downcase == 'others'
File.write(tag_groups_path.join(output_file), JSON.pretty_generate(tag_spec))
end
puts 'Tag-specific swagger files generated successfully.'
end
desc 'build swagger files and create symlinks in developer-docs'
task build_for_docs: :environment do
# First, build the swagger files
Rake::Task['swagger:build'].invoke
# Create directories in developer-docs if they don't exist
dev_docs_public = Rails.root.join('developer-docs', 'public')
FileUtils.mkdir_p(File.join(dev_docs_public, 'swagger', 'tag_groups'))
# Create symlinks to the swagger files
tag_groups_path = Rails.root.join('swagger', 'tag_groups')
# Symlink each JSON file
puts 'Creating symlinks for developer-docs...'
symlink_files = %w[platform_swagger.json application_swagger.json client_swagger.json other_swagger.json]
symlink_files.each do |file|
source = File.join(tag_groups_path, file)
target = File.join(dev_docs_public, 'swagger', 'tag_groups', file)
# Remove existing file or symlink
FileUtils.rm_f(target)
# Create a relative symbolic link
rel_path = Pathname.new(source).relative_path_from(Pathname.new(File.dirname(target)))
FileUtils.ln_sf(rel_path, target)
end
puts 'Symlinks created successfully.'
puts 'You can now run the Mintlify dev server to preview the documentation.'
end
end end
+1 -1
View File
@@ -6,4 +6,4 @@ properties:
errors: errors:
type: array type: array
items: items:
$ref: '#/definitions/request_error' $ref: '#/components/schemas/request_error'
+84 -32
View File
@@ -1,13 +1,11 @@
## ---------- ERRORS ------------- ## ## ---------- ERRORS -------------- ##
## -------------------------------- ## ## -------------------------------- ##
bad_request_error: bad_request_error:
$ref: ./error/bad_request.yml $ref: ./error/bad_request.yml
request_error: request_error:
$ref: ./error/request.yml $ref: ./error/request.yml
## ---------- RESOURCE ------------ ##
## ---------- RESOURCE ------------- ##
## -------------------------------- ## ## -------------------------------- ##
generic_id: generic_id:
@@ -18,12 +16,20 @@ custom_attribute:
$ref: ./resource/custom_attribute.yml $ref: ./resource/custom_attribute.yml
automation_rule: automation_rule:
$ref: ./resource/automation_rule.yml $ref: ./resource/automation_rule.yml
automation_rule_item:
$ref: ./resource/automation_rule_item.yml
portal: portal:
$ref: ./resource/portal.yml $ref: ./resource/portal.yml
category: portal_single:
$ref: ./resource/category.yml $ref: ./resource/portal_single.yml
article: portal_config:
$ref: ./resource/article.yml $ref: ./resource/portal_config.yml
portal_logo:
$ref: ./resource/portal_logo.yml
portal_meta:
$ref: ./resource/portal_meta.yml
portal_item:
$ref: ./resource/portal_item.yml
category: category:
$ref: ./resource/category.yml $ref: ./resource/category.yml
article: article:
@@ -40,6 +46,8 @@ agent:
$ref: ./resource/agent.yml $ref: ./resource/agent.yml
inbox: inbox:
$ref: ./resource/inbox.yml $ref: ./resource/inbox.yml
inbox_contact:
$ref: ./resource/inbox_contact.yml
agent_bot: agent_bot:
$ref: ./resource/agent_bot.yml $ref: ./resource/agent_bot.yml
contact_inboxes: contact_inboxes:
@@ -52,6 +60,8 @@ webhook:
$ref: ./resource/webhook.yml $ref: ./resource/webhook.yml
account: account:
$ref: ./resource/account.yml $ref: ./resource/account.yml
account_user:
$ref: ./resource/account_user.yml
platform_account: platform_account:
$ref: ./resource/platform_account.yml $ref: ./resource/platform_account.yml
team: team:
@@ -71,13 +81,18 @@ public_message:
public_inbox: public_inbox:
$ref: ./resource/public/inbox.yml $ref: ./resource/public/inbox.yml
## ---------- REQUEST ------------- ##
## ---------- REQUEST------------- ##
## -------------------------------- ## ## -------------------------------- ##
account_create_update_payload: account_create_update_payload:
$ref: ./request/account/create_update_payload.yml $ref: ./request/account/create_update_payload.yml
account_user_create_update_payload:
$ref: ./request/account_user/create_update_payload.yml
platform_agent_bot_create_update_payload:
$ref: ./request/platform/agent_bot/create_update_payload.yml
agent_bot_create_update_payload: agent_bot_create_update_payload:
$ref: ./request/agent_bot/create_update_payload.yml $ref: ./request/agent_bot/create_update_payload.yml
@@ -89,21 +104,36 @@ canned_response_create_update_payload:
custom_attribute_create_update_payload: custom_attribute_create_update_payload:
$ref: ./request/custom_attribute/create_update_payload.yml $ref: ./request/custom_attribute/create_update_payload.yml
## contact
contact_create:
$ref: ./request/contact/create.yml
contact_update:
$ref: ./request/contact/update.yml
## conversation ## Agent
conversation_message_create: agent_create_payload:
$ref: ./request/conversation/create_message.yml $ref: ./request/agent/create_payload.yml
agent_update_payload:
$ref: ./request/agent/update_payload.yml
# Team request Payload ## Contact
contact_create_payload:
$ref: ./request/contact/create_payload.yml
contact_update_payload:
$ref: ./request/contact/update_payload.yml
## Conversation
conversation_create_payload:
$ref: ./request/conversation/create_payload.yml
conversation_message_create_payload:
$ref: ./request/conversation/create_message_payload.yml
# Inbox
inbox_create_payload:
$ref: ./request/inbox/create_payload.yml
inbox_update_payload:
$ref: ./request/inbox/update_payload.yml
# Team
team_create_update_payload: team_create_update_payload:
$ref: ./request/team/create_update_payload.yml $ref: ./request/team/create_update_payload.yml
# Custom Filter request Payload # Custom Filter
custom_filter_create_update_payload: custom_filter_create_update_payload:
$ref: ./request/custom_filter/create_update_payload.yml $ref: ./request/custom_filter/create_update_payload.yml
@@ -128,7 +158,6 @@ category_create_update_payload:
article_create_update_payload: article_create_update_payload:
$ref: ./request/portal/article_create_update_payload.yml $ref: ./request/portal/article_create_update_payload.yml
## public requests ## public requests
public_contact_create_update_payload: public_contact_create_update_payload:
$ref: ./request/public/contact/create_update_payload.yml $ref: ./request/public/contact/create_update_payload.yml
@@ -141,37 +170,36 @@ public_message_update_payload:
public_conversation_create_payload: public_conversation_create_payload:
$ref: ./request/public/conversation/create_payload.yml $ref: ./request/public/conversation/create_payload.yml
## ---------- RESPONSE ------------- ## ## ---------- RESPONSE ------------ ##
## -------------------------------- ## ## -------------------------------- ##
## contact ## Contact
extended_contact: extended_contact:
allOf: allOf:
- $ref: '#/definitions/contact' - $ref: '#/components/schemas/contact'
- $ref: ./resource/extension/contact/show.yml - $ref: ./resource/extension/contact/show.yml
contact_base: contact_base:
allOf: allOf:
- $ref: '#/definitions/generic_id' - $ref: '#/components/schemas/generic_id'
- $ref: '#/definitions/contact' - $ref: '#/components/schemas/contact'
contact_list: contact_list:
type: array type: array
description: 'array of contacts' description: 'array of contacts'
items: items:
allOf: allOf:
- $ref: '#/definitions/generic_id' - $ref: '#/components/schemas/contact'
- $ref: '#/definitions/contact'
contact_conversations: contact_conversations:
type: array type: array
description: 'array of conversations' description: 'array of conversations'
items: items:
allOf: allOf:
- $ref: '#/definitions/conversation' - $ref: '#/components/schemas/conversation'
- $ref: ./resource/extension/contact/conversation.yml - $ref: ./resource/extension/contact/conversation.yml
- $ref: ./resource/extension/conversation/with_display_id.yml - $ref: ./resource/extension/conversation/with_display_id.yml
contact_labels: contact_labels:
$ref: ./resource/extension/contact/labels.yml $ref: ./resource/extension/contact/labels.yml
## conversation ## Conversation
conversation_list: conversation_list:
$ref: ./resource/extension/conversation/list.yml $ref: ./resource/extension/conversation/list.yml
conversation_show: conversation_show:
@@ -181,9 +209,33 @@ conversation_status_toggle:
conversation_labels: conversation_labels:
$ref: ./resource/extension/conversation/labels.yml $ref: ./resource/extension/conversation/labels.yml
## Report
## report
account_summary: account_summary:
$ref: './resource/reports/summary.yml' $ref: './resource/reports/summary.yml'
agent_conversation_metrics: agent_conversation_metrics:
$ref: './resource/reports/conversation/agent.yml' $ref: './resource/reports/conversation/agent.yml'
contact_detail:
$ref: ./resource/contact_detail.yml
message_detailed:
$ref: ./resource/message_detailed.yml
conversation_meta:
$ref: ./resource/conversation_meta.yml
conversation_messages:
$ref: ./resource/conversation_messages.yml
contact_meta:
$ref: ./resource/contact_meta.yml
contact_inbox:
$ref: ./resource/contact_inbox.yml
contact_list_item:
$ref: ./resource/contact_list_item.yml
contacts_list_response:
$ref: ./resource/contacts_list_response.yml
contact_show_response:
$ref: ./resource/contact_show_response.yml
contact_conversation_message:
$ref: ./resource/contact_conversation_message.yml
contact_conversations_response:
$ref: ./resource/contact_conversations_response.yml
contactable_inboxes_response:
$ref: ./resource/contactable_inboxes_response.yml
@@ -3,3 +3,29 @@ properties:
name: name:
type: string type: string
description: Name of the account 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: {}
@@ -0,0 +1,13 @@
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
@@ -0,0 +1,28 @@
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
@@ -0,0 +1,18 @@
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
@@ -3,9 +3,28 @@ properties:
name: name:
type: string type: string
description: The name of the agent bot description: The name of the agent bot
example: 'My Agent Bot'
description: description:
type: string type: string
description: The description about the agent bot description: The description of the agent bot
example: 'This is a sample agent bot'
outgoing_url: outgoing_url:
type: string type: string
description: The webhook URL for the bot 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: {}
@@ -36,6 +36,6 @@ properties:
example: example:
attribute_key: content attribute_key: content
filter_operator: contains filter_operator: contains
query_operator: nil query_operator: OR
values: values:
- help - help
@@ -3,6 +3,8 @@ properties:
content: content:
type: string type: string
description: Message content for canned response description: Message content for canned response
example: 'Hello, {{contact.name}}! Welcome to our service.'
short_code: short_code:
type: string type: string
description: Short Code for quick access of the canned response description: Short Code for quick access of the canned response
example: 'welcome'
@@ -0,0 +1,44 @@
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: {}
@@ -1,25 +0,0 @@
type: object
properties:
name:
type: string
description: name of the contact
email:
type: string
description: email of the contact
phone_number:
type: string
description: phone number of the contact
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
identifier:
type: string
description: A unique identifier for the contact in external system
custom_attributes:
type: object
description: An object where you can store custom attributes for contact. example {"type":"customer", "age":30}
@@ -1,18 +1,21 @@
type: object type: object
required:
- inbox_id
properties: properties:
inbox_id:
type: number
name: name:
type: string type: string
description: name of the contact description: name of the contact
example: Alice
email: email:
type: string type: string
description: email of the contact description: email of the contact
example: alice@acme.inc
blocked:
type: boolean
description: whether the contact is blocked or not
example: false
phone_number: phone_number:
type: string type: string
description: phone number of the contact description: phone number of the contact
example: '+123456789'
avatar: avatar:
type: string type: string
format: binary format: binary
@@ -20,9 +23,16 @@ properties:
avatar_url: avatar_url:
type: string type: string
description: The url to a jpeg, png file for the contact avatar description: The url to a jpeg, png file for the contact avatar
example: https://example.com/avatar.png
identifier: identifier:
type: string type: string
description: A unique identifier for the contact in external system 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: custom_attributes:
type: object type: object
description: An object where you can store custom attributes for contact. example {"type":"customer", "age":30} 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: {}
@@ -5,20 +5,29 @@ properties:
content: content:
type: string type: string
description: The content of the message description: The content of the message
example: 'Hello, how can I help you?'
message_type: message_type:
type: string type: string
enum: ['outgoing', 'incoming'] enum: ['outgoing', 'incoming']
description: The type of the message
example: 'outgoing'
private: private:
type: boolean type: boolean
description: Flag to identify if it is a private note description: Flag to identify if it is a private note
example: false
content_type: content_type:
type: string type: string
enum: ['text', 'input_email', 'cards', 'input_select', 'form' , 'article'] enum: ['text', 'input_email', 'cards', 'input_select', 'form', 'article']
example: 'cards' description: Content type of the message
description: 'if you want to create custom message types' example: 'text'
content_attributes: content_attributes:
type: object type: object
description: attributes based on your content type 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: template_params:
type: object type: object
description: The template params for the message in case of whatsapp Channel description: The template params for the message in case of whatsapp Channel
@@ -35,8 +44,8 @@ properties:
type: string type: string
description: Language of the template description: Language of the template
example: en_US example: en_US
processed_params: processed_params:
type: object type: object
description: The processed param values for template variables in template description: The processed param values for template variables in template
example: example:
1: "Chatwoot" 1: 'Chatwoot'
@@ -0,0 +1,79 @@
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 <br/> 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'
@@ -3,20 +3,34 @@ properties:
attribute_display_name: attribute_display_name:
type: string type: string
description: Attribute display name description: Attribute display name
example: 'Custom Attribute'
attribute_display_type: attribute_display_type:
type: integer type: integer
description: Attribute display type (text- 0, number- 1, currency- 2, percent- 3, link- 4, date- 5, list- 6, checkbox- 7) description: Attribute display type (text- 0, number- 1, currency- 2, percent- 3, link- 4, date- 5, list- 6, checkbox- 7)
example: 0
attribute_description: attribute_description:
type: string type: string
description: Attribute description description: Attribute description
example: 'This is a custom attribute'
attribute_key: attribute_key:
type: string type: string
description: Attribute unique key value description: Attribute unique key value
example: 'custom_attribute'
attribute_values: attribute_values:
type: array type: array
description: Attribute values description: Attribute values
items: items:
type: string type: string
example: ['value1', 'value2']
attribute_model: attribute_model:
type: integer type: integer
description: Attribute type(conversation_attribute- 0, contact_attribute- 1) 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'
@@ -3,10 +3,13 @@ properties:
name: name:
type: string type: string
description: The name of the custom filter description: The name of the custom filter
example: 'My Custom Filter'
type: type:
type: string type: string
enum: ["conversation", "contact", "report"] enum: ['conversation', 'contact', 'report']
description: The description about the custom filter description: The description about the custom filter
example: 'conversation'
query: query:
type: object type: object
description: A query that needs to be saved as a custom filter description: A query that needs to be saved as a custom filter
example: {}
@@ -0,0 +1,88 @@
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'
@@ -0,0 +1,82 @@
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'
@@ -1,11 +1,18 @@
type: object type: object
properties: properties:
app_id: app_id:
type: string type: integer
description: The ID of app for which integration hook is being created description: The ID of app for which integration hook is being created
example: 1
inbox_id: inbox_id:
type: string type: integer
description: The inbox ID, if the hook is an inbox hook 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: settings:
type: object type: object
description: The settings required by the integration description: The settings required by the integration
example: {}
@@ -1,5 +1,10 @@
type: object type: object
properties: properties:
status:
type: integer
description: The status of the integration (0 for inactive, 1 for active)
example: 1
settings: settings:
type: object type: object
description: The settings required by the integration description: The settings required by the integration
example: {}
@@ -0,0 +1,26 @@
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
@@ -1,34 +1,51 @@
type: object type: object
properties: properties:
content: title:
type: string type: string
description: The text content. description: The title of the article
meta: example: 'Article Title'
type: object slug:
description: Use for search type: string
example: { tags: ['article_name'], title: 'article title', description: 'article description' } description: The slug of the article
example: 'article-title'
position: position:
type: integer type: integer
description: article position in category description: article position in category
status: example: 1
type: integer content:
example: ['draft', 'published', 'archived']
title:
type: string type: string
slug: description: The text content.
example: 'This is the content of the article'
description:
type: string type: string
views: description: The description of the article
type: integer example: 'This is the description of the article'
portal_id:
type: integer
account_id:
type: integer
author_id:
type: integer
category_id: category_id:
type: integer type: integer
folder_id: description: The category id of the article
example: 1
author_id:
type: integer type: integer
description: The author agent id of the article
example: 1
associated_article_id: associated_article_id:
type: integer type: integer
description: To associate similar articles to each other, e.g to provide the link for the reference. 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',
}
@@ -1,28 +1,34 @@
type: object type: object
properties: properties:
description:
type: string
description: Category description
locale:
type: string
description: Category locale
example: en/es
name: name:
type: string type: string
description: Category name description: The name of the category
slug: example: 'Category Name'
description:
type: string type: string
description: Category slug description: A description for the category
example: 'Category description'
position: position:
type: integer type: integer
description: Category position in the portal list to sort description: Category position in the portal list to sort
portal_id: example: 1
type: integer slug:
account_id: type: string
type: integer description: The category slug used in the URL
associated_category_id: example: 'category-name'
type: integer locale:
description: To associate similar categories to each other, e.g same category of product documentation in different languages 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: parent_category_id:
type: integer type: integer
description: To define parent category, e.g product documentation has multiple level features in sales category or in engineering category. 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
@@ -1,20 +1,13 @@
type: object type: object
properties: properties:
archived:
type: boolean
description: Status to check if portal is live
color: color:
type: string type: string
description: Header color for help-center description: Header color for help-center in hex format
example: add color HEX string, "#fffff" example: '#FFFFFF'
config:
type: object
description: Configuration about supporting locales
example: { allowed_locales: ['en', 'es'], default_locale: 'en' }
custom_domain: custom_domain:
type: string type: string
description: Custom domain to display help center. description: Custom domain to display help center.
example: https://chatwoot.help/. example: chatwoot.help
header_text: header_text:
type: string type: string
description: Help center header description: Help center header
@@ -26,11 +19,20 @@ properties:
name: name:
type: string type: string
description: Name for the portal description: Name for the portal
slug: example: Handbook
type: string
description: Slug for the portal to display in link
page_title: page_title:
type: string type: string
description: Page title for the portal description: Page title for the portal
account_id: example: Handbook
type: integer 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' }
@@ -1,24 +1,30 @@
type: object type: object
properties: properties:
identifier: identifier:
type: string type: string
description: External identifier of the contact description: External identifier of the contact
example: '1234567890'
identifier_hash: identifier_hash:
type: string type: string
description: Identifier hash prepared for HMAC authentication description: Identifier hash prepared for HMAC authentication
example: 'e93275d4eba0e5679ad55f5360af00444e2a888df9b0afa3e8b691c3173725f9'
email: email:
type: string type: string
description: Email of the contact description: Email of the contact
example: alice@acme.inc
name: name:
type: string type: string
description: Name of the contact description: Name of the contact
example: Alice
phone_number: phone_number:
type: string type: string
description: Phone number of the contact description: Phone number of the contact
avatar_url: example: '+123456789'
avatar:
type: string type: string
description: The url to a jpeg, png file for the user avatar format: binary
description: Send the form data with the avatar image binary or use the avatar_url
custom_attributes: custom_attributes:
type: object type: object
description: Custom attributes of the customer description: Custom attributes of the customer
example: {}
@@ -3,3 +3,4 @@ properties:
custom_attributes: custom_attributes:
type: object type: object
description: Custom attributes of the conversation description: Custom attributes of the conversation
example: {}
@@ -1,10 +1,10 @@
type: object type: object
properties: properties:
content: content:
type: string type: string
description: Content for the message description: Content for the message
example: 'Hello, how can I help you?'
echo_id: echo_id:
type: string type: string
description: Temporary identifier which will be passed back via websockets description: Temporary identifier which will be passed back via websockets
example: '1234567890'
@@ -1,6 +1,30 @@
type: object type: object
properties: properties:
submitted_values: submitted_values:
type: object type: object
description: Replies to the Bot Message Types 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
@@ -3,9 +3,12 @@ properties:
name: name:
type: string type: string
description: The name of the team description: The name of the team
example: Support Team
description: description:
type: string type: string
description: The description of the team description: The description of the team
example: This is a team of support agents
allow_auto_assign: allow_auto_assign:
type: boolean 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 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
@@ -3,13 +3,20 @@ properties:
name: name:
type: string type: string
description: Name of the user description: Name of the user
example: 'Daniel'
display_name:
type: string
description: Display name of the user
example: 'Dan'
email: email:
type: string type: string
description: Email of the user description: Email of the user
example: 'daniel@acme.inc'
password: password:
type: string type: string
description: Password must contain uppercase, lowercase letters, number and a special character description: Password must contain uppercase, lowercase letters, number and a special character
example: 'Password2!'
custom_attributes: custom_attributes:
type: object type: object
description: Custom attributes you want to associate with the user description: Custom attributes you want to associate with the user
example: {}
@@ -3,16 +3,23 @@ properties:
url: url:
type: string type: string
description: The url where the events should be sent description: The url where the events should be sent
example: https://example.com/webhook
subscriptions: subscriptions:
type: array type: array
items: items:
type: string type: string
enum: [ enum:
"conversation_created", [
"conversation_status_changed", 'conversation_created',
"conversation_updated", 'conversation_status_changed',
"message_created", 'conversation_updated',
"message_updated", 'message_created',
"webwidget_triggered" 'message_updated',
] 'contact_created',
'contact_updated',
'webwidget_triggered',
]
description: The events you want to subscribe to. description: The events you want to subscribe to.
example:
- conversation_created
- conversation_status_changed
@@ -0,0 +1,14 @@
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
+23 -20
View File
@@ -2,31 +2,34 @@ type: object
properties: properties:
id: id:
type: integer type: integer
uid:
type: string
name:
type: string
available_name:
type: string
display_name:
type: string
email:
type: string
account_id: account_id:
type: integer type: integer
role: availability_status:
type: string
enum: ['agent', 'administrator']
confirmed:
type: boolean
availability_status:
type: string type: string
enum: ['available', 'busy', 'offline'] enum: ['available', 'busy', 'offline']
description: The availability status of the agent computed by Chatwoot. description: The availability status of the agent computed by Chatwoot.
auto_offline: auto_offline:
type: boolean type: boolean
description: Whether the availability status of agent is configured to go offline automatically when away. description: Whether the availability status of agent is configured to go offline automatically when away.
custom_attributes: confirmed:
type: object type: boolean
description: Available for users who are created through platform APIs and has custom attributes associated. 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
+18 -3
View File
@@ -9,9 +9,24 @@ properties:
description: description:
type: string type: string
description: The description about the agent bot description: The description about the agent bot
account_id: thumbnail:
type: number type: string
description: Account ID if it's an account specific bot description: The thumbnail of the agent bot
outgoing_url: outgoing_url:
type: string type: string
description: The webhook URL for the bot 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
@@ -1,45 +1,13 @@
type: object type: object
properties: properties:
event_name: payload:
type: string description: Response payload that contains automation rule(s)
description: Automation Rule event, on which we call the actions(conversation_created, conversation_updated, message_created) oneOf:
enum: - type: array
- conversation_created description: Array of automation rules (for listing endpoint)
- conversation_updated items:
- message_created $ref: '#/components/schemas/automation_rule_item'
example: message_created - type: object
name: description: Single automation rule (for show/create/update endpoints)
type: string allOf:
description: The name of the rule - $ref: '#/components/schemas/automation_rule_item'
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
active:
type: boolean
description: Enable/disable automation rule
actions:
type: array
description: Array of actions which we perform when condition matches
items:
type: object
example:
action_name: add_label
action_params:
- support
- sales
conditions:
type: array
description: Array of conditions on which conversation/message filter would work
items:
type: object
example:
attribute_key: content
filter_operator: contains
values:
- help
query_operator: nil
account_id:
type: integer
description: Account Id
@@ -0,0 +1,69 @@
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
@@ -3,12 +3,18 @@ properties:
id: id:
type: integer type: integer
description: ID of the canned response description: ID of the canned response
content:
type: string
description: Message content for canned response
short_code:
type: string
description: Short Code for quick access of the canned response
account_id: account_id:
type: integer type: integer
description: Account Id 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
+46 -28
View File
@@ -1,31 +1,49 @@
type: object type: object
properties: properties:
payload: payload:
type: object type: array
properties: items:
contact: type: object
type: object properties:
properties: additional_attributes:
email: type: object
type: string description: The object containing additional attributes related to the contact
description: Email address of the contact availability_status:
name: type: string
type: string description: The availability status of the contact
description: The name of the contact email:
phone_number: type: string
type: string description: The email address of the contact
description: Phone number of the contact id:
thumbnail: type: integer
type: string description: The ID of the contact
description: Avatar URL of the contact name:
additional_attributes: type: string
type: object description: The name of the contact
description: The object containing additional attributes related to the contact phone_number:
custom_attributes: type: string
type: object description: The phone number of the contact
description: The object to save custom attributes for contact, accepts custom attributes key and value blocked:
example: { attribute_key: attribute_value, signed_up_at: dd/mm/yyyy } type: boolean
contact_inboxes: description: Whether the contact is blocked
type: array identifier:
items: type: string
$ref: '#/definitions/contact_inboxes' 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'
@@ -0,0 +1,109 @@
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
@@ -0,0 +1,13 @@
type: object
properties:
payload:
type: array
items:
allOf:
- $ref: '#/components/schemas/conversation'
- type: object
properties:
meta:
$ref: './extension/contact/conversation.yml#/properties/meta'
description: Meta information about the conversation
description: List of conversations for the contact
@@ -0,0 +1,48 @@
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"]
@@ -0,0 +1,27 @@
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
@@ -4,5 +4,4 @@ properties:
type: string type: string
description: Contact Inbox Source Id description: Contact Inbox Source Id
inbox: inbox:
type: object $ref: '#/components/schemas/inbox_contact'
$ref: '#/definitions/inbox'
@@ -0,0 +1,61 @@
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'
@@ -0,0 +1,8 @@
type: object
properties:
count:
type: integer
description: Total number of contacts
current_page:
type: string
description: Current page number
@@ -0,0 +1,5 @@
type: object
properties:
payload:
$ref: '#/components/schemas/contact_list_item'
description: Contact details
@@ -5,4 +5,4 @@ properties:
description: Contact Inbox Source Id description: Contact Inbox Source Id
inbox: inbox:
type: object type: object
$ref: '#/definitions/inbox' $ref: '#/components/schemas/inbox'
@@ -0,0 +1,7 @@
type: object
properties:
payload:
type: array
items:
$ref: '#/components/schemas/contact_inbox'
description: List of contactable inboxes for the contact
@@ -0,0 +1,10 @@
type: object
properties:
meta:
$ref: '#/components/schemas/contact_meta'
description: Metadata about the contact list response
payload:
type: array
items:
$ref: '#/components/schemas/contact_list_item'
description: List of contacts
+65 -10
View File
@@ -6,31 +6,86 @@ properties:
messages: messages:
type: array type: array
items: items:
$ref: '#/definitions/message' $ref: '#/components/schemas/message'
account_id: account_id:
type: number type: number
description: Account Id 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: inbox_id:
type: number type: number
description: ID of the inbox 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: status:
type: string type: string
enum: ['open', 'resolved', 'pending'] enum: ['open', 'resolved', 'pending']
description: The status of the conversation 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: timestamp:
type: string type: string
description: The time at which conversation was created description: The time at which conversation was created
contact_last_seen_at: first_reply_created_at:
type: string type: number
agent_last_seen_at: description: The time at which the first reply was created
type: string
unread_count: unread_count:
type: number type: number
description: The number of unread messages description: The number of unread messages
additional_attributes: last_non_activity_message:
type: object type: object
description: The object containing additional attributes related to the conversation $ref: '#/components/schemas/message'
custom_attributes: description: The last non activity 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 type: object
description: The object to save custom attributes for conversation, accepts custom attributes key and value description: The applied SLA
example: { attribute_key: attribute_value, priority_conversation_number: 3 } sla_events:
type: array
items:
type: object
description: SLA event objects
@@ -0,0 +1,10 @@
type: object
properties:
meta:
$ref: '#/components/schemas/conversation_meta'
description: Meta information about the conversation
payload:
type: array
items:
$ref: '#/components/schemas/message_detailed'
description: List of messages in the conversation
@@ -0,0 +1,55 @@
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'
description: Contact details
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
@@ -15,15 +15,24 @@ properties:
attribute_key: attribute_key:
type: string type: string
description: Attribute unique key value description: Attribute unique key value
regex_pattern:
type: string
description: Regex pattern
regex_cue:
type: string
description: Regex cue
attribute_values: attribute_values:
type: string type: string
description: Attribute values description: Attribute values
default_value:
type: string
description: Attribute default value
attribute_model: attribute_model:
type: string type: string
description: Attribute type(conversation_attribute/contact_attribute) description: Attribute type(conversation_attribute/contact_attribute)
account_id: default_value:
type: integer type: string
description: Account Id 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
@@ -6,17 +6,48 @@ properties:
sender: sender:
type: object type: object
properties: 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: id:
type: number type: number
description: ID fo the sender description: ID fo the sender
name: name:
type: string type: string
description: The name of the sender 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: thumbnail:
type: string type: string
description: Avatar URL of the contact description: Avatar URL of the contact
channel: custom_attributes:
type: string type: object
description: Channel Type 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: assignee:
$ref: '#/definitions/user' $ref: '#/components/schemas/user'
hmac_verified:
type: boolean
description: Whether the hmac is verified
@@ -19,6 +19,6 @@ properties:
description: 'array of conversations' description: 'array of conversations'
items: items:
allOf: allOf:
- $ref: '#/definitions/generic_id' - $ref: '#/components/schemas/generic_id'
- $ref: '#/definitions/conversation' - $ref: '#/components/schemas/conversation'
- $ref: '../contact/conversation.yml' - $ref: '../contact/conversation.yml'
@@ -1,4 +1,4 @@
type: object type: object
allOf: allOf:
- $ref: '#/definitions/conversation' - $ref: '#/components/schemas/conversation'
- $ref: '../contact/conversation.yml' - $ref: '../contact/conversation.yml'
+84
View File
@@ -39,3 +39,87 @@ properties:
greeting_message: greeting_message:
type: string type: string
description: A greeting message when the user starts the conversation 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
@@ -0,0 +1,20 @@
type: object
properties:
id:
type: number
description: ID of the inbox
avatar_url:
type: string
description: The avatar image of the inbox
channel_id:
type: number
description: The ID of the channel
name:
type: string
description: The name of the inbox
channel_type:
type: string
description: The type of the inbox
provider:
type: string
description: The provider of the inbox
+53 -12
View File
@@ -1,8 +1,40 @@
type: object type: object
properties: properties:
id:
type: number
description: The ID of the message
content: content:
type: string type: string
description: The text content of the message 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: content_type:
type: string type: string
enum: ["text", "input_select", "cards", "form"] enum: ["text", "input_select", "cards", "form"]
@@ -10,22 +42,31 @@ properties:
content_attributes: content_attributes:
type: object type: object
description: The content attributes for each content_type description: The content attributes for each content_type
message_type: sender_type:
type: string type: string
enum: ["incoming", "outgoing", "activity", "template"] enum: ["contact", "agent", "agent_bot"]
description: The type of the message description: The type of the sender
created_at: sender_id:
type: integer type: number
description: The time at which message was created description: The ID of the sender
private: external_source_ids:
type: boolean type: object
description: The flags which shows whether the message is private or not 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: attachment:
type: object type: object
description: The file object attached to the image description: The file object attached to the image
sender: sender:
type: object type: object
description: User/Agent/AgentBot object description: User/Agent/AgentBot object
conversation_id:
type: number
description: ID of the conversation
@@ -0,0 +1,47 @@
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'
description: The sender of the message (only for incoming messages)
+2 -30
View File
@@ -1,34 +1,6 @@
type: object type: object
properties: properties:
id: payload:
type: integer
archived:
type: boolean
color:
type: string
config:
type: object
description: Save information about locales, allowed_locales and default portal/help-center locale
custom_domain:
type: string
header_text:
type: string
description: The text content.
homepage_link:
type: string
name:
type: string
slug:
type: string
page_title:
type: string
account_id:
type: integer
categories:
type: array type: array
items: items:
$ref: '#/definitions/category' $ref: '#/components/schemas/portal_item'
articles:
type: array
items:
$ref: '#/definitions/article'
@@ -0,0 +1,18 @@
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
@@ -0,0 +1,40 @@
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'
@@ -0,0 +1,23 @@
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
@@ -0,0 +1,23 @@
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
@@ -0,0 +1,5 @@
type: object
properties:
payload:
description: A single portal object (for show/update endpoints)
$ref: '#/components/schemas/portal_item'
@@ -1,5 +1,5 @@
type: object type: object
properties: properties:
id: id:
type: integer type: integer
description: Id of the contact description: Id of the contact
@@ -14,4 +14,4 @@ properties:
description: Email of the contact description: Email of the contact
pubsub_token: pubsub_token:
type: string type: string
description: The token to be used to connect to chatwoot websocket description: The token to be used to connect to chatwoot websocket
@@ -9,7 +9,7 @@ properties:
messages: messages:
type: array type: array
items: items:
$ref: '#/definitions/message' $ref: '#/components/schemas/message'
description: Messages in the conversation description: Messages in the conversation
contact: contact:
type: object type: object
+63 -13
View File
@@ -2,27 +2,77 @@ type: object
properties: properties:
id: id:
type: number type: number
uid: access_token:
type: string
name:
type: string
available_name:
type: string
display_name:
type: string
email:
type: string type: string
account_id: account_id:
type: number 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: role:
type: string type: string
enum: ['agent', 'administrator'] enum: ['agent', 'administrator']
confirmed: ui_settings:
type: boolean type: object
custom_attributes: uid:
type: string
type:
type: string
nullable: true
custom_attributes:
type: object type: object
description: Available for users who are created through platform APIs and has custom attributes associated. description: Available for users who are created through platform APIs and has custom attributes associated.
accounts: accounts:
type: array type: array
items: items:
$ref: '#/definitions/account' 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
+83 -37
View File
@@ -1,48 +1,94 @@
swagger: "2.0" openapi: '3.0.4'
info: info:
description: This is the API documentation for Chatwoot server.
version: 1.0.0
title: Chatwoot title: Chatwoot
termsOfService: https://www.chatwoot.com/terms-of-service/ description: This is the API documentation for Chatwoot server.
version: 1.1.0
termsOfService: https://www.chatwoot.com/terms-of-service/
contact: contact:
email: hello@chatwoot.com email: hello@chatwoot.com
license: license:
name: MIT License name: MIT License
url: https://opensource.org/licenses/MIT url: https://opensource.org/licenses/MIT
host: app.chatwoot.com servers:
basePath: / - url: https://app.chatwoot.com/
schemes:
- https
produces:
- application/json; charset=utf-8
consumes:
- application/json; charset=utf-8
securityDefinitions:
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. This token can be saved by an external system when user is created via API, to perform activities on behalf of the user.
agentBotApiKey:
type: apiKey
in: header
name: api_access_token
description: This token should be provided by system admin or obtained via rails console. This token can be used to build bot integrations and can only access limited apis.
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.
security:
- userApiKey: []
paths: paths:
$ref: ./paths/index.yml $ref: ./paths/index.yml
definitions: components:
$ref: ./definitions/index.yml schemas:
parameters: $ref: ./definitions/index.yml
$ref: ./parameters/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. This token can be saved by an external system when user is created via API, to perform activities on behalf of the user.
agentBotApiKey:
type: apiKey
in: header
name: api_access_token
description: This token should be provided by system admin or obtained via rails console. This token can be used to build bot integrations and can only access limited apis.
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.
tags:
- name: Accounts
description: Account management APIs
- name: Account Users
description: Account user management APIs
- name: AgentBots
description: Bot integrations
- name: Users
description: User management APIs
- name: Account AgentBots
description: Account-specific Agent Bots
- name: Agents
description: Agent management APIs
- name: Canned Responses
description: Pre-defined responses for common queries
- name: Contacts
description: Contact management APIs
- name: Contact Labels
description: Manage contact labels
- name: Conversation Assignments
description: Manage conversation assignments
- name: Conversation Labels
description: Manage conversation labels
- name: Conversations
description: Conversation management APIs
- name: Custom Attributes
description: Custom fields for contacts and conversations
- name: Custom Filters
description: Saved filters for conversations
- name: Inboxes
description: Communication channels setup
- name: Integrations
description: Third-party integrations
- name: Messages
description: Message management APIs
- name: Profile
description: User profile APIs
- name: Reports
description: Analytics and reporting APIs
- name: Teams
description: Team management APIs
- name: Webhooks
description: Event notification webhooks
- name: Automation Rule
description: Workflow automation rules
- name: Help Center
description: Knowledge base management
- name: Contacts API
description: Public contact APIs
- name: Conversations API
description: Public conversation APIs
- name: Messages API
description: Public message APIs
- name: CSAT Survey Page
description: Customer satisfaction survey
x-tagGroups: x-tagGroups:
- name: Platform - name: Platform
tags: tags:
@@ -57,7 +103,7 @@ x-tagGroups:
- Canned Responses - Canned Responses
- Contacts - Contacts
- Contact Labels - Contact Labels
- Conversation Assignment - Conversation Assignments
- Conversation Labels - Conversation Labels
- Conversations - Conversations
- Custom Attributes - Custom Attributes
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: account_id name: account_id
type: integer schema:
type: integer
required: true required: true
description: The numeric ID of the account description: The numeric ID of the account
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: id name: id
type: integer schema:
type: integer
required: true required: true
description: The ID of the agentbot to be updated description: The ID of the agentbot to be updated
+11 -10
View File
@@ -1,14 +1,15 @@
in: query in: query
name: sort name: sort
type: string schema:
enum: type: string
- name enum:
- email - name
- phone_number - email
- last_activity_at - phone_number
- -name - last_activity_at
- -email - -name
- -phone_number - -email
- -last_activity_at - -phone_number
- -last_activity_at
required: false required: false
description: The attribute by which list should be sorted description: The attribute by which list should be sorted
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: conversation_id name: conversation_id
type: integer schema:
type: integer
required: true required: true
description: The numeric ID of the conversation description: The numeric ID of the conversation
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: conversation_uuid name: conversation_uuid
type: integer schema:
type: integer
required: true required: true
description: The uuid of the conversation description: The uuid of the conversation
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: custom_filter_id name: custom_filter_id
type: integer schema:
type: integer
required: true required: true
description: The numeric ID of the custom filter description: The numeric ID of the custom filter
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: hook_id name: hook_id
type: integer schema:
type: integer
required: true required: true
description: The numeric ID of the integration hook description: The numeric ID of the integration hook
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: inbox_id name: inbox_id
type: integer schema:
type: integer
required: true required: true
description: The ID of the Inbox description: The ID of the Inbox
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: message_id name: message_id
type: integer schema:
type: integer
required: true required: true
description: The numeric ID of the message description: The numeric ID of the message
+3 -2
View File
@@ -1,6 +1,7 @@
in: query in: query
name: page name: page
type: integer schema:
default: 1 type: integer
default: 1
required: false required: false
description: The page parameter description: The page parameter
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: id name: id
type: integer schema:
type: integer
required: true required: true
description: The numeric ID of the user on the platform description: The numeric ID of the user on the platform
+4 -3
View File
@@ -1,5 +1,6 @@
in: path in: path
name: portal_id name: id
type: integer schema:
type: string
required: true required: true
description: The numeric ID of the portal description: The slug identifier of the portal
@@ -1,5 +1,6 @@
in: path in: path
name: contact_identifier name: contact_identifier
type: string schema:
type: string
required: true required: true
description: The source id of contact obtained on contact create description: The source id of contact obtained on contact create
@@ -1,5 +1,6 @@
in: path in: path
name: inbox_identifier name: inbox_identifier
type: string schema:
type: string
required: true required: true
description: The identifier obtained from API inbox channel description: The identifier obtained from API inbox channel
+9 -8
View File
@@ -1,12 +1,13 @@
in: query in: query
name: metric name: metric
type: string schema:
enum: type: string
- conversations_count enum:
- incoming_messages_count - conversations_count
- outgoing_messages_count - incoming_messages_count
- avg_first_response_time - outgoing_messages_count
- avg_resolution_time - avg_first_response_time
- resolutions_count - avg_resolution_time
- resolutions_count
required: true required: true
description: The type of metric description: The type of metric
+8 -7
View File
@@ -1,11 +1,12 @@
in: query in: query
name: type name: type
type: string schema:
enum: type: string
- account enum:
- agent - account
- inbox - agent
- label - inbox
- team - label
- team
required: true required: true
description: Type of report description: Type of report
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: source_id name: source_id
required: true required: true
type: string 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.<br/><br/>Website: Chatwoot generated string which can be obtained from webhook events. <br/> Phone Channels(Twilio): Phone number in e164 format <br/> Email Channels: Contact Email address <br/> API Channel: Any Random 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.<br/><br/>Website: Chatwoot generated string which can be obtained from webhook events. <br/> Phone Channels(Twilio): Phone number in e164 format <br/> Email Channels: Contact Email address <br/> API Channel: Any Random String"
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: team_id name: team_id
type: integer schema:
type: integer
required: true required: true
description: The ID of the team to be updated description: The ID of the team to be updated
+2 -1
View File
@@ -1,5 +1,6 @@
in: path in: path
name: webhook_id name: webhook_id
type: integer schema:
type: integer
required: true required: true
description: The numeric ID of the webhook description: The numeric ID of the webhook
+18 -11
View File
@@ -3,17 +3,24 @@ tags:
operationId: create-an-account-agent-bot operationId: create-an-account-agent-bot
summary: Create an Agent Bot summary: Create an Agent Bot
description: Create an agent bot in the account description: Create an agent bot in the account
parameters: security:
- $ref: '#/parameters/account_id' - userApiKey: []
- name: data requestBody:
in: body required: true
required: true content:
schema: application/json:
$ref: '#/definitions/agent_bot_create_update_payload' schema:
$ref: '#/components/schemas/agent_bot_create_update_payload'
responses: responses:
200: '200':
description: Success description: Success
schema: content:
$ref: '#/definitions/agent_bot' application/json:
401: schema:
$ref: '#/components/schemas/agent_bot'
'401':
description: Unauthorized description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/bad_request_error'
@@ -3,10 +3,20 @@ tags:
operationId: delete-an-account-agent-bot operationId: delete-an-account-agent-bot
summary: Delete an AgentBot summary: Delete an AgentBot
description: Delete an AgentBot from the account description: Delete an AgentBot from the account
security:
- userApiKey: []
responses: responses:
200: 200:
description: Success description: Success
401: 401:
description: Unauthorized description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/bad_request_error'
404: 404:
description: The agent bot does not exist in the account description: The agent bot does not exist in the account
content:
application/json:
schema:
$ref: '#/components/schemas/bad_request_error'
+15 -8
View File
@@ -3,14 +3,21 @@ tags:
operationId: list-all-account-agent-bots operationId: list-all-account-agent-bots
summary: List all AgentBots summary: List all AgentBots
description: List all agent bots available for the current account description: List all agent bots available for the current account
security:
- userApiKey: []
responses: responses:
200: '200':
description: Success description: Success
schema: content:
type: array application/json:
description: 'Array of agent bots' schema:
items: type: array
$ref: '#/definitions/agent_bot' description: 'Array of agent bots'
items:
401: $ref: '#/components/schemas/agent_bot'
'401':
description: Unauthorized description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/bad_request_error'
+17 -5
View File
@@ -3,12 +3,24 @@ tags:
operationId: get-details-of-a-single-account-agent-bot operationId: get-details-of-a-single-account-agent-bot
summary: Get an agent bot details summary: Get an agent bot details
description: Get the details of an agent bot in the account description: Get the details of an agent bot in the account
security:
- userApiKey: []
responses: responses:
200: '200':
description: Success description: Success
schema: content:
$ref: '#/definitions/agent_bot' application/json:
401: schema:
$ref: '#/components/schemas/agent_bot'
'401':
description: Unauthorized description: Unauthorized
404: content:
application/json:
schema:
$ref: '#/components/schemas/bad_request_error'
'404':
description: The given agent bot ID does not exist in the account description: The given agent bot ID does not exist in the account
content:
application/json:
schema:
$ref: '#/components/schemas/bad_request_error'

Some files were not shown because too many files have changed in this diff Show More