feat: Update swagger to openapi 3.0.4, update request payloads with examples (#11533)
# Pull Request Template ## Description Updates the public swagger spec to be OpenAPI 3.0.4 compliant. Regarding #7893, I'm investigating the use of [oas_rails](https://github.com/a-chacon/oas_rails) to auto-generate the documentation along with correct expected payloads. Mostly fixes #10531, related to #7893 ## Type of change - [ ] Bug fix (non-breaking change which fixes an issue) - [x] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality not to work as expected) - [ ] This change requires a documentation update ## How Has This Been Tested? Copied spec into swagger editor, reviewed outputs:  Note that this shows two errors with the `DELETE` endpoints as technically these should not have a `requestBody` - in which case we should be making use of another HTTP verb or another endpoint. ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [x] I have commented on my code, particularly in hard-to-understand areas - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [x] Any dependent changes have been merged and published in downstream modules --------- Co-authored-by: Daniel Jimenez <devildan.knex@gmail.com> Co-authored-by: Daniel Jimenez <daniel.jimenez@spark64.com>
This commit is contained in:
committed by
GitHub
parent
99de5f4257
commit
459f225559
@@ -16,8 +16,20 @@ custom_attribute:
|
||||
$ref: ./resource/custom_attribute.yml
|
||||
automation_rule:
|
||||
$ref: ./resource/automation_rule.yml
|
||||
automation_rule_item:
|
||||
$ref: ./resource/automation_rule_item.yml
|
||||
portal:
|
||||
$ref: ./resource/portal.yml
|
||||
portal_single:
|
||||
$ref: ./resource/portal_single.yml
|
||||
portal_config:
|
||||
$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:
|
||||
$ref: ./resource/category.yml
|
||||
article:
|
||||
@@ -34,6 +46,8 @@ agent:
|
||||
$ref: ./resource/agent.yml
|
||||
inbox:
|
||||
$ref: ./resource/inbox.yml
|
||||
inbox_contact:
|
||||
$ref: ./resource/inbox_contact.yml
|
||||
agent_bot:
|
||||
$ref: ./resource/agent_bot.yml
|
||||
contact_inboxes:
|
||||
@@ -173,7 +187,6 @@ contact_list:
|
||||
description: 'array of contacts'
|
||||
items:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/generic_id'
|
||||
- $ref: '#/components/schemas/contact'
|
||||
contact_conversations:
|
||||
type: array
|
||||
@@ -201,3 +214,28 @@ account_summary:
|
||||
$ref: './resource/reports/summary.yml'
|
||||
agent_conversation_metrics:
|
||||
$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
|
||||
|
||||
@@ -2,23 +2,8 @@ type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
uid:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
available_name:
|
||||
type: string
|
||||
display_name:
|
||||
type: string
|
||||
email:
|
||||
type: string
|
||||
account_id:
|
||||
type: integer
|
||||
role:
|
||||
type: string
|
||||
enum: ['agent', 'administrator']
|
||||
confirmed:
|
||||
type: boolean
|
||||
availability_status:
|
||||
type: string
|
||||
enum: ['available', 'busy', 'offline']
|
||||
@@ -26,6 +11,25 @@ properties:
|
||||
auto_offline:
|
||||
type: boolean
|
||||
description: Whether the availability status of agent is configured to go offline automatically when away.
|
||||
custom_attributes:
|
||||
type: object
|
||||
description: Available for users who are created through platform APIs and has custom attributes associated.
|
||||
confirmed:
|
||||
type: boolean
|
||||
description: Whether the agent has confirmed their email address.
|
||||
email:
|
||||
type: string
|
||||
description: The email of the agent
|
||||
available_name:
|
||||
type: string
|
||||
description: The available name of the agent
|
||||
name:
|
||||
type: string
|
||||
description: The name of the agent
|
||||
role:
|
||||
type: string
|
||||
enum: ['agent', 'administrator']
|
||||
description: The role of the agent
|
||||
thumbnail:
|
||||
type: string
|
||||
description: The thumbnail of the agent
|
||||
custom_role_id:
|
||||
type: integer
|
||||
description: The custom role id of the agent
|
||||
|
||||
@@ -9,9 +9,24 @@ properties:
|
||||
description:
|
||||
type: string
|
||||
description: The description about the agent bot
|
||||
account_id:
|
||||
type: number
|
||||
description: Account ID if it's an account specific bot
|
||||
thumbnail:
|
||||
type: string
|
||||
description: The thumbnail of the agent bot
|
||||
outgoing_url:
|
||||
type: string
|
||||
description: The webhook URL for the bot
|
||||
bot_type:
|
||||
type: string
|
||||
description: The type of the bot
|
||||
bot_config:
|
||||
type: object
|
||||
description: The configuration of the bot
|
||||
account_id:
|
||||
type: number
|
||||
description: Account ID if it's an account specific bot
|
||||
access_token:
|
||||
type: string
|
||||
description: The access token for the bot
|
||||
system_bot:
|
||||
type: boolean
|
||||
description: Whether the bot is a system bot
|
||||
|
||||
@@ -1,45 +1,13 @@
|
||||
type: object
|
||||
properties:
|
||||
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
|
||||
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
|
||||
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
|
||||
payload:
|
||||
description: Response payload that contains automation rule(s)
|
||||
oneOf:
|
||||
- type: array
|
||||
description: Array of automation rules (for listing endpoint)
|
||||
items:
|
||||
$ref: '#/components/schemas/automation_rule_item'
|
||||
- type: object
|
||||
description: Single automation rule (for show/create/update endpoints)
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/automation_rule_item'
|
||||
69
swagger/definitions/resource/automation_rule_item.yml
Normal file
69
swagger/definitions/resource/automation_rule_item.yml
Normal file
@@ -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:
|
||||
type: integer
|
||||
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:
|
||||
type: integer
|
||||
description: Account Id
|
||||
short_code:
|
||||
type: string
|
||||
description: Short Code for quick access of the canned response
|
||||
content:
|
||||
type: string
|
||||
description: Message content for canned response
|
||||
created_at:
|
||||
type: string
|
||||
description: The date and time when the canned response was created
|
||||
updated_at:
|
||||
type: string
|
||||
description: The date and time when the canned response was updated
|
||||
|
||||
@@ -1,32 +1,49 @@
|
||||
type: object
|
||||
properties:
|
||||
payload:
|
||||
type: object
|
||||
properties:
|
||||
contact:
|
||||
type: object
|
||||
properties:
|
||||
email:
|
||||
type: string
|
||||
description: Email address of the contact
|
||||
name:
|
||||
type: string
|
||||
description: The name of the contact
|
||||
phone_number:
|
||||
type: string
|
||||
description: Phone number of the contact
|
||||
thumbnail:
|
||||
type: string
|
||||
description: Avatar URL of the contact
|
||||
additional_attributes:
|
||||
type: object
|
||||
description: The object containing additional attributes related to the contact
|
||||
custom_attributes:
|
||||
type: object
|
||||
description: The object to save custom attributes for contact, accepts custom attributes key and value
|
||||
example:
|
||||
{ attribute_key: attribute_value, signed_up_at: dd/mm/yyyy }
|
||||
contact_inboxes:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/contact_inboxes'
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
additional_attributes:
|
||||
type: object
|
||||
description: The object containing additional attributes related to the contact
|
||||
availability_status:
|
||||
type: string
|
||||
description: The availability status of the contact
|
||||
email:
|
||||
type: string
|
||||
description: The email address of the contact
|
||||
id:
|
||||
type: integer
|
||||
description: The ID of the contact
|
||||
name:
|
||||
type: string
|
||||
description: The name of the contact
|
||||
phone_number:
|
||||
type: string
|
||||
description: The phone number of the contact
|
||||
blocked:
|
||||
type: boolean
|
||||
description: Whether the contact is blocked
|
||||
identifier:
|
||||
type: string
|
||||
description: The identifier of the contact
|
||||
thumbnail:
|
||||
type: string
|
||||
description: The thumbnail of the contact
|
||||
custom_attributes:
|
||||
type: object
|
||||
description: The custom attributes of the contact
|
||||
example:
|
||||
{ attribute_key: attribute_value, signed_up_at: dd/mm/yyyy }
|
||||
last_activity_at:
|
||||
type: integer
|
||||
description: The last activity at of the contact
|
||||
created_at:
|
||||
type: integer
|
||||
description: The created at of the contact
|
||||
contact_inboxes:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/contact_inboxes'
|
||||
|
||||
109
swagger/definitions/resource/contact_conversation_message.yml
Normal file
109
swagger/definitions/resource/contact_conversation_message.yml
Normal file
@@ -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
|
||||
48
swagger/definitions/resource/contact_detail.yml
Normal file
48
swagger/definitions/resource/contact_detail.yml
Normal file
@@ -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"]
|
||||
27
swagger/definitions/resource/contact_inbox.yml
Normal file
27
swagger/definitions/resource/contact_inbox.yml
Normal file
@@ -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
|
||||
description: Contact Inbox Source Id
|
||||
inbox:
|
||||
type: object
|
||||
$ref: '#/components/schemas/inbox'
|
||||
$ref: '#/components/schemas/inbox_contact'
|
||||
|
||||
61
swagger/definitions/resource/contact_list_item.yml
Normal file
61
swagger/definitions/resource/contact_list_item.yml
Normal file
@@ -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'
|
||||
8
swagger/definitions/resource/contact_meta.yml
Normal file
8
swagger/definitions/resource/contact_meta.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
description: Total number of contacts
|
||||
current_page:
|
||||
type: string
|
||||
description: Current page number
|
||||
5
swagger/definitions/resource/contact_show_response.yml
Normal file
5
swagger/definitions/resource/contact_show_response.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
type: object
|
||||
properties:
|
||||
payload:
|
||||
$ref: '#/components/schemas/contact_list_item'
|
||||
description: Contact details
|
||||
@@ -0,0 +1,7 @@
|
||||
type: object
|
||||
properties:
|
||||
payload:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/contact_inbox'
|
||||
description: List of contactable inboxes for the contact
|
||||
10
swagger/definitions/resource/contacts_list_response.yml
Normal file
10
swagger/definitions/resource/contacts_list_response.yml
Normal file
@@ -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
|
||||
@@ -10,27 +10,82 @@ properties:
|
||||
account_id:
|
||||
type: number
|
||||
description: Account Id
|
||||
uuid:
|
||||
type: string
|
||||
description: UUID of the conversation
|
||||
additional_attributes:
|
||||
type: object
|
||||
description: The object containing additional attributes related to the conversation
|
||||
agent_last_seen_at:
|
||||
type: number
|
||||
description: The last activity at of the agent
|
||||
assignee_last_seen_at:
|
||||
type: number
|
||||
description: The last activity at of the assignee
|
||||
can_reply:
|
||||
type: boolean
|
||||
description: Whether the conversation can be replied to
|
||||
contact_last_seen_at:
|
||||
type: number
|
||||
description: The last activity at of the contact
|
||||
custom_attributes:
|
||||
type: object
|
||||
description: The object to save custom attributes for conversation, accepts custom attributes key and value
|
||||
inbox_id:
|
||||
type: number
|
||||
description: ID of the inbox
|
||||
labels:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
description: The labels of the conversation
|
||||
muted:
|
||||
type: boolean
|
||||
description: Whether the conversation is muted
|
||||
snoozed_until:
|
||||
type: number
|
||||
description: The time at which the conversation will be unmuted
|
||||
status:
|
||||
type: string
|
||||
enum: ['open', 'resolved', 'pending']
|
||||
description: The status of the conversation
|
||||
created_at:
|
||||
type: number
|
||||
description: The time at which conversation was created
|
||||
updated_at:
|
||||
type: number
|
||||
description: The time at which conversation was updated
|
||||
timestamp:
|
||||
type: string
|
||||
description: The time at which conversation was created
|
||||
contact_last_seen_at:
|
||||
type: string
|
||||
agent_last_seen_at:
|
||||
type: string
|
||||
first_reply_created_at:
|
||||
type: number
|
||||
description: The time at which the first reply was created
|
||||
unread_count:
|
||||
type: number
|
||||
description: The number of unread messages
|
||||
additional_attributes:
|
||||
last_non_activity_message:
|
||||
type: object
|
||||
description: The object containing additional attributes related to the conversation
|
||||
custom_attributes:
|
||||
$ref: '#/components/schemas/message'
|
||||
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
|
||||
description: The object to save custom attributes for conversation, accepts custom attributes key and value
|
||||
example: { attribute_key: attribute_value, priority_conversation_number: 3 }
|
||||
description: The applied SLA
|
||||
sla_events:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
description: SLA event objects
|
||||
|
||||
|
||||
10
swagger/definitions/resource/conversation_messages.yml
Normal file
10
swagger/definitions/resource/conversation_messages.yml
Normal file
@@ -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
|
||||
55
swagger/definitions/resource/conversation_meta.yml
Normal file
55
swagger/definitions/resource/conversation_meta.yml
Normal file
@@ -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:
|
||||
type: string
|
||||
description: Attribute unique key value
|
||||
regex_pattern:
|
||||
type: string
|
||||
description: Regex pattern
|
||||
regex_cue:
|
||||
type: string
|
||||
description: Regex cue
|
||||
attribute_values:
|
||||
type: string
|
||||
description: Attribute values
|
||||
default_value:
|
||||
type: string
|
||||
description: Attribute default value
|
||||
attribute_model:
|
||||
type: string
|
||||
description: Attribute type(conversation_attribute/contact_attribute)
|
||||
account_id:
|
||||
type: integer
|
||||
description: Account Id
|
||||
default_value:
|
||||
type: string
|
||||
description: Attribute default value
|
||||
created_at:
|
||||
type: string
|
||||
description: The date and time when the custom attribute was created
|
||||
updated_at:
|
||||
type: string
|
||||
description: The date and time when the custom attribute was updated
|
||||
|
||||
@@ -6,17 +6,48 @@ properties:
|
||||
sender:
|
||||
type: object
|
||||
properties:
|
||||
additional_attributes:
|
||||
type: object
|
||||
description: The additional attributes of the sender
|
||||
availability_status:
|
||||
type: string
|
||||
description: The availability status of the sender
|
||||
email:
|
||||
type: string
|
||||
description: The email of the sender
|
||||
id:
|
||||
type: number
|
||||
description: ID fo the sender
|
||||
name:
|
||||
type: string
|
||||
description: The name of the sender
|
||||
phone_number:
|
||||
type: string
|
||||
description: The phone number of the sender
|
||||
blocked:
|
||||
type: boolean
|
||||
description: Whether the sender is blocked
|
||||
identifier:
|
||||
type: string
|
||||
description: The identifier of the sender
|
||||
thumbnail:
|
||||
type: string
|
||||
description: Avatar URL of the contact
|
||||
channel:
|
||||
type: string
|
||||
description: Channel Type
|
||||
custom_attributes:
|
||||
type: object
|
||||
description: The custom attributes of the sender
|
||||
last_activity_at:
|
||||
type: number
|
||||
description: The last activity at of the sender
|
||||
created_at:
|
||||
type: number
|
||||
description: The created at of the sender
|
||||
|
||||
channel:
|
||||
type: string
|
||||
description: Channel Type
|
||||
assignee:
|
||||
$ref: '#/components/schemas/user'
|
||||
hmac_verified:
|
||||
type: boolean
|
||||
description: Whether the hmac is verified
|
||||
|
||||
@@ -39,3 +39,87 @@ properties:
|
||||
greeting_message:
|
||||
type: string
|
||||
description: A greeting message when the user starts the conversation
|
||||
channel_id:
|
||||
type: number
|
||||
description: ID of the channel this inbox belongs to
|
||||
working_hours_enabled:
|
||||
type: boolean
|
||||
description: The flag which shows whether working hours feature is enabled
|
||||
enable_email_collect:
|
||||
type: boolean
|
||||
description: The flag to enable collecting email from contacts
|
||||
csat_survey_enabled:
|
||||
type: boolean
|
||||
description: The flag to enable CSAT survey
|
||||
auto_assignment_config:
|
||||
type: object
|
||||
description: Configuration settings for auto assignment
|
||||
out_of_office_message:
|
||||
type: string
|
||||
description: Message to show when agents are out of office
|
||||
working_hours:
|
||||
type: array
|
||||
description: Configuration for working hours of the inbox
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
day_of_week:
|
||||
type: number
|
||||
description: Day of the week (0-6, where 0 is Sunday)
|
||||
closed_all_day:
|
||||
type: boolean
|
||||
description: Whether the inbox is closed for the entire day
|
||||
open_hour:
|
||||
type: number
|
||||
description: Hour when inbox opens (0-23)
|
||||
open_minutes:
|
||||
type: number
|
||||
description: Minutes of the hour when inbox opens (0-59)
|
||||
close_hour:
|
||||
type: number
|
||||
description: Hour when inbox closes (0-23)
|
||||
close_minutes:
|
||||
type: number
|
||||
description: Minutes of the hour when inbox closes (0-59)
|
||||
open_all_day:
|
||||
type: boolean
|
||||
description: Whether the inbox is open for the entire day
|
||||
timezone:
|
||||
type: string
|
||||
description: Timezone configuration for the inbox
|
||||
callback_webhook_url:
|
||||
type: string
|
||||
description: Webhook URL for callbacks
|
||||
allow_messages_after_resolved:
|
||||
type: boolean
|
||||
description: Whether to allow messages after a conversation is resolved
|
||||
lock_to_single_conversation:
|
||||
type: boolean
|
||||
description: Whether to lock a contact to a single conversation
|
||||
sender_name_type:
|
||||
type: string
|
||||
description: Type of sender name to display (e.g., friendly)
|
||||
business_name:
|
||||
type: string
|
||||
description: Business name associated with the inbox
|
||||
hmac_mandatory:
|
||||
type: boolean
|
||||
description: Whether HMAC verification is mandatory
|
||||
selected_feature_flags:
|
||||
type: object
|
||||
description: Selected feature flags for the inbox
|
||||
reply_time:
|
||||
type: string
|
||||
description: Expected reply time
|
||||
messaging_service_sid:
|
||||
type: string
|
||||
description: Messaging service SID for SMS providers
|
||||
phone_number:
|
||||
type: string
|
||||
description: Phone number associated with the inbox
|
||||
medium:
|
||||
type: string
|
||||
description: Medium of communication (e.g., sms, email)
|
||||
provider:
|
||||
type: string
|
||||
description: Provider of the channel
|
||||
|
||||
20
swagger/definitions/resource/inbox_contact.yml
Normal file
20
swagger/definitions/resource/inbox_contact.yml
Normal file
@@ -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
|
||||
@@ -1,8 +1,40 @@
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: number
|
||||
description: The ID of the message
|
||||
content:
|
||||
type: string
|
||||
description: The text content of the message
|
||||
account_id:
|
||||
type: number
|
||||
description: The ID of the account
|
||||
inbox_id:
|
||||
type: number
|
||||
description: The ID of the inbox
|
||||
conversation_id:
|
||||
type: number
|
||||
description: The ID of the conversation
|
||||
message_type:
|
||||
type: integer
|
||||
enum: [0, 1, 2]
|
||||
description: The type of the message
|
||||
created_at:
|
||||
type: integer
|
||||
description: The time at which message was created
|
||||
updated_at:
|
||||
type: integer
|
||||
description: The time at which message was updated
|
||||
private:
|
||||
type: boolean
|
||||
description: The flags which shows whether the message is private or not
|
||||
status:
|
||||
type: string
|
||||
enum: ["sent", "delivered", "read", "failed"]
|
||||
description: The status of the message
|
||||
source_id:
|
||||
type: string
|
||||
description: The source ID of the message
|
||||
content_type:
|
||||
type: string
|
||||
enum: ["text", "input_select", "cards", "form"]
|
||||
@@ -10,22 +42,31 @@ properties:
|
||||
content_attributes:
|
||||
type: object
|
||||
description: The content attributes for each content_type
|
||||
message_type:
|
||||
sender_type:
|
||||
type: string
|
||||
enum: ["incoming", "outgoing", "activity", "template"]
|
||||
description: The type of the message
|
||||
created_at:
|
||||
type: integer
|
||||
description: The time at which message was created
|
||||
private:
|
||||
type: boolean
|
||||
description: The flags which shows whether the message is private or not
|
||||
enum: ["contact", "agent", "agent_bot"]
|
||||
description: The type of the sender
|
||||
sender_id:
|
||||
type: number
|
||||
description: The ID of the sender
|
||||
external_source_ids:
|
||||
type: object
|
||||
description: The external source IDs of the message
|
||||
additional_attributes:
|
||||
type: object
|
||||
description: The additional attributes of the message
|
||||
processed_message_content:
|
||||
type: string
|
||||
description: The processed message content
|
||||
sentiment:
|
||||
type: object
|
||||
description: The sentiment of the message
|
||||
conversation:
|
||||
type: object
|
||||
description: The conversation object
|
||||
attachment:
|
||||
type: object
|
||||
description: The file object attached to the image
|
||||
sender:
|
||||
type: object
|
||||
description: User/Agent/AgentBot object
|
||||
conversation_id:
|
||||
type: number
|
||||
description: ID of the conversation
|
||||
|
||||
47
swagger/definitions/resource/message_detailed.yml
Normal file
47
swagger/definitions/resource/message_detailed.yml
Normal file
@@ -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)
|
||||
@@ -1,34 +1,6 @@
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
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:
|
||||
payload:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/category'
|
||||
articles:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/article'
|
||||
$ref: '#/components/schemas/portal_item'
|
||||
|
||||
18
swagger/definitions/resource/portal_config.yml
Normal file
18
swagger/definitions/resource/portal_config.yml
Normal file
@@ -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
|
||||
40
swagger/definitions/resource/portal_item.yml
Normal file
40
swagger/definitions/resource/portal_item.yml
Normal file
@@ -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'
|
||||
23
swagger/definitions/resource/portal_logo.yml
Normal file
23
swagger/definitions/resource/portal_logo.yml
Normal file
@@ -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
|
||||
23
swagger/definitions/resource/portal_meta.yml
Normal file
23
swagger/definitions/resource/portal_meta.yml
Normal 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
|
||||
5
swagger/definitions/resource/portal_single.yml
Normal file
5
swagger/definitions/resource/portal_single.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
type: object
|
||||
properties:
|
||||
payload:
|
||||
description: A single portal object (for show/update endpoints)
|
||||
$ref: '#/components/schemas/portal_item'
|
||||
@@ -2,27 +2,77 @@ type: object
|
||||
properties:
|
||||
id:
|
||||
type: number
|
||||
uid:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
available_name:
|
||||
type: string
|
||||
display_name:
|
||||
type: string
|
||||
email:
|
||||
access_token:
|
||||
type: string
|
||||
account_id:
|
||||
type: number
|
||||
available_name:
|
||||
type: string
|
||||
avatar_url:
|
||||
type: string
|
||||
confirmed:
|
||||
type: boolean
|
||||
display_name:
|
||||
type: string
|
||||
nullable: true
|
||||
message_signature:
|
||||
type: string
|
||||
nullable: true
|
||||
email:
|
||||
type: string
|
||||
hmac_identifier:
|
||||
type: string
|
||||
inviter_id:
|
||||
type: number
|
||||
name:
|
||||
type: string
|
||||
provider:
|
||||
type: string
|
||||
pubsub_token:
|
||||
type: string
|
||||
role:
|
||||
type: string
|
||||
enum: ['agent', 'administrator']
|
||||
confirmed:
|
||||
type: boolean
|
||||
ui_settings:
|
||||
type: object
|
||||
uid:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
nullable: true
|
||||
custom_attributes:
|
||||
type: object
|
||||
description: Available for users who are created through platform APIs and has custom attributes associated.
|
||||
accounts:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/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
|
||||
|
||||
Reference in New Issue
Block a user