diff --git a/descriptions/0/api.intercom.io.yaml b/descriptions/0/api.intercom.io.yaml
index 646bedb6..293a14b3 100644
--- a/descriptions/0/api.intercom.io.yaml
+++ b/descriptions/0/api.intercom.io.yaml
@@ -16951,7 +16951,7 @@ paths:
- name: include_monitors
in: query
required: false
- description: If set to true, the response will include a `monitor_evaluations` array on each conversation with any QA monitor results that flagged it.
+ description: If set to true, the response will include a `monitor_evaluations` array on each conversation with the latest QA monitor evaluation for each monitor that has evaluated it.
example: true
schema:
type: boolean
@@ -17043,6 +17043,10 @@ paths:
has_more: false
ai_agent:
ai_agent_participated: false
+ sales_agent_participated: false
+ sales_agent:
+ company:
+ external_references: []
channel:
initial: messenger
current: messenger
@@ -17073,7 +17077,7 @@ paths:
- monitor_id: '12345'
monitor_name: Customer complaint handling
monitor_type: prompt
- result: flagged
+ result: included
explanation: The customer mentioned wanting a refund without resolution.
evaluated_at: 1734537760
scorecards:
@@ -17145,6 +17149,27 @@ paths:
message: Active subscription needed.
schema:
"$ref": "#/components/schemas/error"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Invalid per_page:
+ value:
+ type: error.list
+ request_id: 3b6e9d52-7a04-4c81-b5f3-0d8a2e4c1f69
+ errors:
+ - code: invalid_per_page
+ message: per_page must be an integer between 0 and 150
+ Invalid starting_after:
+ value:
+ type: error.list
+ request_id: c9a5e130-6d72-4f48-8b0e-2a7c4d1f5b83
+ errors:
+ - code: client_error
+ message: Invalid starting_after param. Please try again using a starting_after value from a paginated response
+ schema:
+ "$ref": "#/components/schemas/error"
post:
summary: Creates a conversation
parameters:
@@ -17227,6 +17252,34 @@ paths:
message: Active subscription needed.
schema:
"$ref": "#/components/schemas/error"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Sender missing:
+ value:
+ type: error.list
+ request_id: 2a9c6e13-5d70-4b84-8f21-6c3e0a7d9b58
+ errors:
+ - code: data_invalid
+ message: "Field 'from' must be an object"
+ schema:
+ "$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable entity
+ content:
+ application/json:
+ examples:
+ Message too long:
+ value:
+ type: error.list
+ request_id: f0b4d728-1e63-4a95-b7c0-8d2a5e9c3f16
+ errors:
+ - code: parameter_invalid
+ message: Message is too long. Maximum length is 300000
+ schema:
+ "$ref": "#/components/schemas/error"
requestBody:
content:
application/json:
@@ -17280,14 +17333,28 @@ paths:
- name: include_email_history
in: query
required: false
- description: If set to true, the source of the conversation will include the email history.
+ description: If set to true, the source of the conversation will include the email history, for conversations started by email.
example: true
schema:
type: boolean
+ - name: parts_created_after
+ in: query
+ required: false
+ description: Only include conversation parts created at or after this time, as a Unix timestamp in seconds.
+ example: 1700000000
+ schema:
+ type: integer
+ - name: parts_created_before
+ in: query
+ required: false
+ description: Only include conversation parts created at or before this time, as a Unix timestamp in seconds.
+ example: 1700086400
+ schema:
+ type: integer
- name: include_monitors
in: query
required: false
- description: If set to true, the response will include a `monitor_evaluations` array with any QA monitor results that flagged this conversation.
+ description: If set to true, the response will include a `monitor_evaluations` array with the latest QA monitor evaluation for each monitor that has evaluated this conversation.
example: true
schema:
type: boolean
@@ -17414,7 +17481,7 @@ paths:
type: conversation_part.list
conversation_parts:
- type: conversation_part
- id: 1
+ id: '1'
part_type: comment
body:
Okay!
created_at: 1663597223
@@ -17442,7 +17509,7 @@ paths:
en: Okay!
fr: "D'accord!
"
- type: conversation_part
- id: 2
+ id: '2'
part_type: custom_action_started
body:
created_at: 1740141842
@@ -17465,7 +17532,7 @@ paths:
name: Jira Create Issue
app_package_code: test-integration
- type: conversation_part
- id: 3
+ id: '3'
part_type: conversation_attribute_updated_by_admin
body:
created_at: 1740141851
@@ -17490,7 +17557,7 @@ paths:
name: PROJ-007
app_package_code: null
- type: conversation_part
- id: 4
+ id: '4'
part_type: custom_action_finished
body:
created_at: 1740141857
@@ -17514,7 +17581,7 @@ paths:
result: success
app_package_code: null
- type: conversation_part
- id: 5
+ id: '5'
part_type: call_summary
body: "The customer asked about a failed payroll run and was advised to re-submit it.
"
created_at: 1740141860
@@ -17536,7 +17603,7 @@ paths:
call_id: '3822007689'
app_package_code: null
- type: conversation_part
- id: 6
+ id: '6'
part_type: ai_agent_event
body:
created_at: 1740141870
@@ -17563,7 +17630,7 @@ paths:
reason: no_email
app_package_code: null
- type: conversation_part
- id: 7
+ id: '7'
part_type: standalone_platform_handoff
body:
created_at: 1740141910
@@ -17673,7 +17740,7 @@ paths:
type: conversation_part.list
conversation_parts:
- type: conversation_part
- id: 1
+ id: '1'
part_type: comment
body: Okay!
created_at: 1663597223
@@ -17701,7 +17768,7 @@ paths:
en: Okay!
fr: "D'accord!
"
- type: conversation_part
- id: 2
+ id: '2'
part_type: custom_action_started
body:
created_at: 1740141842
@@ -17724,7 +17791,7 @@ paths:
name: Jira Create Issue
app_package_code: test-integration
- type: conversation_part
- id: 3
+ id: '3'
part_type: conversation_attribute_updated_by_admin
body:
created_at: 1740141851
@@ -17749,7 +17816,7 @@ paths:
name: PROJ-007
app_package_code: null
- type: conversation_part
- id: 4
+ id: '4'
part_type: custom_action_finished
body:
created_at: 1740141857
@@ -17773,7 +17840,7 @@ paths:
result: success
app_package_code: null
- type: conversation_part
- id: 5
+ id: '5'
part_type: ai_agent_event
body:
created_at: 1740141870
@@ -17819,7 +17886,7 @@ paths:
- monitor_id: '12345'
monitor_name: Customer complaint handling
monitor_type: prompt
- result: flagged
+ result: included
explanation: The customer mentioned wanting a refund without resolution.
evaluated_at: 1734537760
scorecards:
@@ -18232,6 +18299,27 @@ paths:
message: Active subscription needed.
schema:
"$ref": "#/components/schemas/error"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Side conversation:
+ value:
+ type: error.list
+ request_id: c6a1d739-8e25-4f40-b9c7-2d5e0a3b7f19
+ errors:
+ - code: side_conversation
+ message: action can not be performed on a side conversation
+ Unknown conversation attribute:
+ value:
+ type: error.list
+ request_id: 83b4e6f0-2d17-4a59-8c36-0e9a1b5d7c42
+ errors:
+ - code: parameter_invalid
+ message: Conversation attribute 'Region' does not exist
+ schema:
+ "$ref": "#/components/schemas/error"
requestBody:
content:
application/json:
@@ -18370,7 +18458,7 @@ paths:
- name: include_monitors
in: query
required: false
- description: If set to true, the response will include a `monitor_evaluations` array on each conversation with any QA monitor results that flagged it.
+ description: If set to true, the response will include a `monitor_evaluations` array on each conversation with the latest QA monitor evaluation for each monitor that has evaluated it.
example: true
schema:
type: boolean
@@ -18413,11 +18501,12 @@ paths:
| Field | Type |
| :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |
- | id | String |
+ | id | Integer |
+ | type | String |
| created_at | Date (Unix timestamp in seconds) |
| updated_at | Date (Unix timestamp in seconds) |
| source.type | String
Accepted fields are `conversation`, `email`, `facebook`, `instagram`, `phone_call`, `phone_switch`, `push`, `sms`, `twitter` and `whatsapp`. |
- | source.id | String |
+ | source.id | Integer |
| source.delivered_as | String |
| source.subject | String |
| source.body | String |
@@ -18452,7 +18541,7 @@ paths:
| statistics.last_contact_reply_at | Date (Unix timestamp in seconds) |
| statistics.last_admin_reply_at | Date (Unix timestamp in seconds) |
| statistics.last_close_at | Date (Unix timestamp in seconds) |
- | statistics.last_closed_by_id | String |
+ | statistics.last_closed_by_id | Integer |
| statistics.count_reopens | Integer |
| statistics.count_assignments | Integer |
| statistics.count_conversation_parts | Integer |
@@ -18461,7 +18550,7 @@ paths:
| conversation_rating.score | Integer |
| conversation_rating.remark | String |
| conversation_rating.contact_id | String |
- | conversation_rating.admin_d | String |
+ | conversation_rating.admin_id | String |
| ai_agent_participated | Boolean |
| ai_agent.resolution_state | String |
| ai_agent.last_answer_type | String |
@@ -18480,12 +18569,17 @@ paths:
| != | All | Doesn't Equal |
| IN | All | In Shortcut for `OR` queries Values most be in Array |
| NIN | All | Not In Shortcut for `OR !` queries Values must be in Array |
- | > | Integer Date (Unix timestamp in seconds) | Greater (or equal) than |
- | < | Integer Date (Unix timestamp in seconds) | Lower (or equal) than |
+ | > | Integer Date (Unix timestamp in seconds) | Greater than |
+ | >= | Integer Date (Unix timestamp in seconds) | Greater than or equal to |
+ | < | Integer Date (Unix timestamp in seconds) | Lower than |
+ | <= | Integer Date (Unix timestamp in seconds) | Lower than or equal to |
| ~ | String | Contains |
| !~ | String | Doesn't Contain |
| ^ | String | Starts With |
| $ | String | Ends With |
+ ### Sorting
+
+ Results are sorted by `updated_at`, newest first. To sort differently, add a `sort` object to the request body with a `field` and an `order` of `ascending` or `descending`. `field` is required whenever `sort` is sent, and must be one of the fields in the table above, other than `type`, `state`, `source.subject`, `source.body`, `source.author.id`, `source.author.type`, `source.author.name`, `source.author.email`, `conversation_rating.remark`, `ai_agent.rating_remark` and `ai_agent.source_title`, which can't be sorted. A missing `field`, or one that isn't searchable, returns a `400` error with the code `invalid_field`.
responses:
'200':
description: successful
@@ -18554,6 +18648,10 @@ paths:
has_more: false
ai_agent:
ai_agent_participated: false
+ sales_agent_participated: false
+ sales_agent:
+ company:
+ external_references: []
channel:
initial: messenger
current: messenger
@@ -18584,7 +18682,7 @@ paths:
- monitor_id: '12345'
monitor_name: Customer complaint handling
monitor_type: prompt
- result: flagged
+ result: included
explanation: The customer mentioned wanting a refund without resolution.
evaluated_at: 1734537760
scorecards:
@@ -18628,6 +18726,62 @@ paths:
- name: Empathetic tone
schema:
"$ref": "#/components/schemas/conversation_list"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Invalid query:
+ value:
+ type: error.list
+ request_id: 5e0a9c24-6f18-4d73-a2b5-8c1e3d7f9a60
+ errors:
+ - code: invalid_query
+ message: "Invalid query. Ensure 'field', 'operator', 'value' are present for simple queries. Ensure 'operator' and 'value' for composite queries. Ensure query is a JSON object."
+ Invalid operator:
+ value:
+ type: error.list
+ request_id: a1c7e439-0b52-4f86-9d24-3e6a8c0b5d71
+ errors:
+ - code: invalid_operator
+ message: Composite operators must be of type AND or OR
+ Invalid field:
+ value:
+ type: error.list
+ request_id: 2f8d6b05-9a31-4c47-b1e8-7d0c5a3e9f36
+ errors:
+ - code: invalid_field
+ message: foo is not a valid search field
+ Invalid per_page:
+ value:
+ type: error.list
+ request_id: e9b3a728-4d60-4a15-8f7c-1c5e0d2b6a94
+ errors:
+ - code: invalid_per_page
+ message: per_page must be an integer between 0 and 150
+ Invalid starting_after:
+ value:
+ type: error.list
+ request_id: 74a0c5d1-8e39-4b62-a9f4-6b2d1e8c3a07
+ errors:
+ - code: client_error
+ message: Invalid starting_after param. Please try again using a starting_after value from a paginated response
+ schema:
+ "$ref": "#/components/schemas/error"
+ '401':
+ description: Unauthorized
+ content:
+ application/json:
+ examples:
+ Unauthorized:
+ value:
+ type: error.list
+ request_id: d0c4f817-3a96-4e25-8b1d-5f7a2c9e0b38
+ errors:
+ - code: unauthorized
+ message: Access Token Invalid
+ schema:
+ "$ref": "#/components/schemas/error"
requestBody:
content:
application/json:
@@ -18656,8 +18810,7 @@ paths:
- name: id
in: path
required: true
- description: The Intercom provisioned identifier for the conversation or the
- string "last" to reply to the last part of the conversation
+ description: "The Intercom provisioned identifier for the conversation, or the string `last` to use the most recent conversation of a contact. With `last`, also send the contact's `intercom_user_id`, `user_id` or `email` in the request body, whatever type of request you send. A contact that can't be found returns a `404` error, and a contact with no conversations returns a `422` error."
example: 123 or "last"
schema:
type: string
@@ -19034,6 +19187,13 @@ paths:
errors:
- code: not_found
message: Resource Not Found
+ Contact not found:
+ value:
+ type: error.list
+ request_id: 19e8b3c6-0a74-4f52-b6d1-3c9a5e7d2b04
+ errors:
+ - code: not_found
+ message: User Not Found
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -19051,7 +19211,7 @@ paths:
schema:
"$ref": "#/components/schemas/error"
'403':
- description: API plan restricted
+ description: Forbidden
content:
application/json:
examples:
@@ -19062,6 +19222,55 @@ paths:
errors:
- code: api_plan_restricted
message: Active subscription needed.
+ Admin lacks permission:
+ value:
+ type: error.list
+ request_id: d3a6f081-5b27-4e94-8c1d-7a0e9b2c4f68
+ errors:
+ - code: action_forbidden
+ message: The admin doesn't have the permissions required to reply to this conversation
+ schema:
+ "$ref": "#/components/schemas/error"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Side conversation:
+ value:
+ type: error.list
+ request_id: b5e90d26-7c14-4a83-8f3b-1d6a2c9e4b70
+ errors:
+ - code: side_conversation
+ message: action can not be performed on a side conversation
+ Unsupported message type:
+ value:
+ type: error.list
+ request_id: 4c7a1e85-2f90-4d63-a5b8-9e3d0c6f1a27
+ errors:
+ - code: parameter_invalid
+ message: Unsupported message type
+ schema:
+ "$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable entity
+ content:
+ application/json:
+ examples:
+ No conversation for the contact:
+ value:
+ type: error.list
+ request_id: 0e5c9a37-4b82-4d16-a3f7-7c1d8b6e2a49
+ errors:
+ - code: parameter_invalid
+ message: No conversation for this user
+ Message too long:
+ value:
+ type: error.list
+ request_id: 7f2d5a98-1c46-4b03-9e7a-6b8c0d3f5a21
+ errors:
+ - code: parameter_invalid
+ message: Message is too long. Maximum length is 300000
schema:
"$ref": "#/components/schemas/error"
requestBody:
@@ -19082,7 +19291,7 @@ paths:
value:
message_type: note
type: admin
- admin_id: 991267696
+ admin_id: '991267696'
body: " An Unordered HTML List
An Ordered HTML List
\ - Coffee
- Tea
- Milk
@@ -19092,7 +19301,7 @@ paths:
value:
message_type: quick_reply
type: admin
- admin_id: 991267698
+ admin_id: '991267698'
reply_options:
- text: 'Yes'
uuid: a5e1c524-5ddd-4c3e-9328-6bca5d6e3edb
@@ -19125,7 +19334,7 @@ paths:
- name: id
in: path
required: true
- description: The identifier for the conversation as given by Intercom.
+ description: "The identifier for the conversation as given by Intercom, or the string `last` to use the most recent conversation of a contact. With `last`, also send the contact's `intercom_user_id`, `user_id` or `email` in the request body, whatever type of request you send. A contact that can't be found returns a `404` error, and a contact with no conversations returns a `422` error."
example: '123'
schema:
type: string
@@ -19490,6 +19699,13 @@ paths:
errors:
- code: not_found
message: Resource Not Found
+ Contact not found:
+ value:
+ type: error.list
+ request_id: 19e8b3c6-0a74-4f52-b6d1-3c9a5e7d2b04
+ errors:
+ - code: not_found
+ message: User Not Found
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -19507,7 +19723,7 @@ paths:
schema:
"$ref": "#/components/schemas/error"
'403':
- description: API plan restricted
+ description: Forbidden
content:
application/json:
examples:
@@ -19518,6 +19734,62 @@ paths:
errors:
- code: api_plan_restricted
message: Active subscription needed.
+ Admin lacks permission:
+ value:
+ type: error.list
+ request_id: d3a6f081-5b27-4e94-8c1d-7a0e9b2c4f68
+ errors:
+ - code: action_forbidden
+ message: The admin doesn't have the permissions required to reply to this conversation
+ schema:
+ "$ref": "#/components/schemas/error"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Side conversation:
+ value:
+ type: error.list
+ request_id: b5e90d26-7c14-4a83-8f3b-1d6a2c9e4b70
+ errors:
+ - code: side_conversation
+ message: action can not be performed on a side conversation
+ Unsupported message type:
+ value:
+ type: error.list
+ request_id: 4c7a1e85-2f90-4d63-a5b8-9e3d0c6f1a27
+ errors:
+ - code: parameter_invalid
+ message: Unsupported message type
+ schema:
+ "$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable entity
+ content:
+ application/json:
+ examples:
+ Snooze time not in the future:
+ value:
+ type: error.list
+ request_id: 6d1a8f40-9c37-4e25-b0d8-2f7a4c5e8b93
+ errors:
+ - code: parameter_invalid
+ message: snoozed_until must be in the future
+ Already assigned:
+ value:
+ type: error.list
+ request_id: a8f2c514-3e69-4b07-9d1a-5e0c7b3d6f82
+ errors:
+ - code: conversation_already_assigned_to_assignee
+ message: The conversation is already assigned to the specified assignee
+ Message too long:
+ value:
+ type: error.list
+ request_id: 7f2d5a98-1c46-4b03-9e7a-6b8c0d3f5a21
+ errors:
+ - code: parameter_invalid
+ message: Message is too long. Maximum length is 300000
schema:
"$ref": "#/components/schemas/error"
requestBody:
@@ -19535,32 +19807,32 @@ paths:
value:
message_type: close
type: admin
- admin_id: 991267708
+ admin_id: '991267708'
body: Goodbye :)
snooze_a_conversation:
summary: Snooze a conversation
value:
message_type: snoozed
- admin_id: 991267710
+ admin_id: '991267710'
snoozed_until: 1734541187
open_a_conversation:
summary: Open a conversation
value:
message_type: open
- admin_id: 991267712
+ admin_id: '991267712'
assign_a_conversation:
summary: Assign a conversation
value:
message_type: assignment
type: admin
- admin_id: 991267715
- assignee_id: 991267715
+ admin_id: '991267715'
+ assignee_id: '991267715'
not_found:
summary: Not found
value:
message_type: close
type: admin
- admin_id: 991267717
+ admin_id: '991267717'
body: Goodbye :)
"/conversations/{conversation_id}/conversation_parts/{id}":
put:
@@ -20459,8 +20731,8 @@ paths:
summary: Redact a conversation part
value:
type: conversation_part
- conversation_id: 608
- conversation_part_id: 149
+ conversation_id: '608'
+ conversation_part_id: '149'
not_found:
summary: Not found
value:
@@ -20531,8 +20803,8 @@ paths:
created_at: 1734537561
type: conversation
url:
- admin_assignee_id:
- team_assignee_id:
+ admin_assignee_id: 0
+ team_assignee_id: 0
open: true
state: open
read: false
@@ -20618,8 +20890,8 @@ paths:
type: error.list
request_id: b4f6c9d3-2345-6789-abcd-ef0123456789
errors:
- - code: forbidden
- message: Forbidden request
+ - code: action_forbidden
+ message: The admin doesn't have the permissions required to merge conversations
schema:
"$ref": "#/components/schemas/error"
'422':
@@ -20893,7 +21165,21 @@ paths:
request_id: 7a80b950-b392-499f-85db-ea7c6c424d37
errors:
- code: intercom_version_invalid
- message: Requested resource is not available in current API version.
+ message: Requested resource is not available in current API version
+ schema:
+ "$ref": "#/components/schemas/error"
+ '403':
+ description: API plan restricted
+ content:
+ application/json:
+ examples:
+ API plan restricted:
+ value:
+ type: error.list
+ request_id: 58d2b7e4-1f93-4a60-9c05-4e8b3a6d0c17
+ errors:
+ - code: api_plan_restricted
+ message: Active subscription needed.
schema:
"$ref": "#/components/schemas/error"
"/conversations/attributes":
@@ -26687,7 +26973,7 @@ paths:
schema:
"$ref": "#/components/schemas/message"
'400':
- description: No body supplied for email message
+ description: Invalid request
content:
application/json:
examples:
@@ -26712,10 +26998,31 @@ paths:
errors:
- code: parameter_invalid
message: Invalid SMS message body
+ Recipient missing:
+ value:
+ type: error.list
+ request_id: 8c1f3a52-6d0e-4f7b-9a41-2e5b7c9d0a11
+ errors:
+ - code: data_invalid
+ message: "Field 'to' is required"
+ Too many recipients:
+ value:
+ type: error.list
+ request_id: 1b7e9d34-5c28-4a6f-8e03-7d4a6b2c9f52
+ errors:
+ - code: parameter_invalid
+ message: Max Number of recipients per request reached
+ Brand not found:
+ value:
+ type: error.list
+ request_id: 5a2c8e71-3f94-4d0b-b6a8-0c9e1d7f3b64
+ errors:
+ - code: parameter_invalid
+ message: brand_id 1234 not found
schema:
"$ref": "#/components/schemas/error"
'422':
- description: No subject supplied for email message
+ description: Unprocessable entity
content:
application/json:
examples:
@@ -26726,6 +27033,20 @@ paths:
errors:
- code: parameter_not_found
message: No subject supplied for email message
+ Subject too long:
+ value:
+ type: error.list
+ request_id: 3d8b5f90-7a16-4c2e-8f04-9b6d1e3a5c77
+ errors:
+ - code: parameter_invalid
+ message: Subject length must be under 255 characters
+ Message too long:
+ value:
+ type: error.list
+ request_id: c2e7a461-0d95-4b38-a7f6-4e8c0b2d9a15
+ errors:
+ - code: parameter_invalid
+ message: Message is too long. Maximum length is 300000
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -26743,7 +27064,7 @@ paths:
schema:
"$ref": "#/components/schemas/error"
'403':
- description: API plan restricted
+ description: Forbidden
content:
application/json:
examples:
@@ -26754,6 +27075,34 @@ paths:
errors:
- code: api_plan_restricted
message: Active subscription needed.
+ Recipient unsubscribed from emails:
+ value:
+ type: error.list
+ request_id: e4d6b0a8-2c71-4f35-9d8e-6a1b3c5f7e20
+ errors:
+ - code: action_forbidden
+ message: One or more users are unsubscribed from emails
+ Recipient hard bounced:
+ value:
+ type: error.list
+ request_id: 9f3a7c15-8b42-4e60-a1d9-5c7e2b4d6a83
+ errors:
+ - code: action_forbidden
+ message: One or more users have hard bounced and cannot be messaged via email
+ schema:
+ "$ref": "#/components/schemas/error"
+ '404':
+ description: Contact not found
+ content:
+ application/json:
+ examples:
+ Contact not found:
+ value:
+ type: error.list
+ request_id: 7b0d4e92-6a53-4c18-9e2f-3a5c8d1b6f40
+ errors:
+ - code: not_found
+ message: User Not Found
schema:
"$ref": "#/components/schemas/error"
requestBody:
@@ -26799,7 +27148,7 @@ paths:
bcc:
- type: user
id: 6762f23e1bb69f9f2193bc2f
- message_type: conversation
+ message_type: inapp
body: heyy
admin_sms_message_created:
summary: admin sms message created
@@ -29019,7 +29368,7 @@ paths:
schema:
"$ref": "#/components/schemas/phone_switch"
'400':
- description: Phone number lookup or SMS send failed
+ description: The phone number lookup or the SMS send failed
content:
application/json:
examples:
@@ -29032,7 +29381,11 @@ paths:
error_key: invalid_phone_number
message: Invalid phone number
'422':
- description: unprocessable entity
+ description: "The request was invalid. The response is an object with a
+ single `error_key`: `caller_phone` when `phone` is missing, `invalid_phone_number`,
+ `landline_phone`, `twilio_settings` when the workspace has no Twilio account
+ to send the SMS, or `context` when `custom_attributes` is invalid. Any other
+ invalid input returns its own key, such as `send_notification` or `country`."
content:
application/json:
examples:
@@ -29045,6 +29398,12 @@ paths:
Twilio account not found:
value:
error_key: twilio_settings
+ Missing phone number:
+ value:
+ error_key: caller_phone
+ Invalid custom attributes:
+ value:
+ error_key: context
'401':
description: Unauthorized
content:
@@ -29100,6 +29459,19 @@ paths:
custom_attributes:
issue_type: Billing
priority: high
+ missing_phone_number:
+ summary: Missing phone number
+ value:
+ custom_attributes:
+ issue_type: Billing
+ priority: high
+ invalid_custom_attributes:
+ summary: Invalid custom attributes
+ value:
+ phone: "+353832345678"
+ custom_attributes:
+ issue_type:
+ - Billing
"/calls":
get:
summary: List all calls
@@ -36569,6 +36941,18 @@ components:
type: boolean
description: Option to disable notifications when replying to a conversation.
example: true
+ assignee_id:
+ type: string
+ description: The `id` of the admin or team to assign the conversation to
+ with this reply.
+ example: '4324241'
+ skip_reopen:
+ type: boolean
+ default: false
+ description: When true, a reply that assigns the conversation (a `comment`
+ with `assignee_id`) doesn't reopen or unsnooze it. A plain `comment` still
+ reopens a closed conversation. Available from API version 2.17.
+ example: true
skip_unsnooze:
type: boolean
description: When true, prevents the reply from waking a snoozed conversation.
@@ -36579,6 +36963,62 @@ components:
- message_type
- type
- admin_id
+ bot_reply_conversation_request:
+ title: Bot Reply
+ type: object
+ description: Payload of the request to reply on behalf of a bot
+ properties:
+ message_type:
+ type: string
+ enum:
+ - comment
+ - note
+ - quick_reply
+ example: comment
+ type:
+ type: string
+ enum:
+ - bot
+ example: bot
+ bot_id:
+ type: string
+ description: The id of the bot that is authoring the reply. A bot that
+ doesn't exist returns a `404` error.
+ example: '3156780'
+ body:
+ type: string
+ description: The text body of the reply. Must be present for comment and
+ note message types.
+ example: Hello there!
+ created_at:
+ type: integer
+ description: The time the reply was created. If not provided, the current
+ time will be used.
+ example: 1590000000
+ reply_options:
+ title: Quick Reply Options
+ type: array
+ description: The quick reply options to display to the end user. Must be present for quick_reply
+ message types.
+ items:
+ "$ref": "#/components/schemas/quick_reply_option"
+ attachment_urls:
+ type: array
+ description: A list of image URLs that will be added as attachments. You
+ can include up to 10 URLs.
+ items:
+ type: string
+ format: uri
+ maxItems: 10
+ skip_notifications:
+ type: boolean
+ description: Option to disable notifications when replying to a conversation.
+ Available from API version 2.15.
+ example: true
+ required:
+ - message_type
+ - type
+ - bot_id
admin_reply_ticket_request:
title: Admin Reply on ticket
type: object
@@ -38383,55 +38823,47 @@ components:
keeps its original close timestamp and the assignment does not count as
a new closure in reporting.
example: true
+ skip_notifications:
+ type: boolean
+ description: Option to disable notifications when assigning a conversation. Available from API version 2.15.
+ example: true
required:
- message_type
- type
- admin_id
- assignee_id
attach_contact_to_conversation_request:
- title: Assign Conversation Request
+ title: Attach Contact To Conversation Request
type: object
- description: Payload of the request to assign a conversation
+ description: |-
+ Payload of the request to add a contact to a conversation. Say who is adding the contact in one of two ways: send `admin_id` to act as an admin, or send one of `intercom_user_id`, `user_id` or `email` to act as a contact. Sending both, or neither, returns a `422` error. Use `customer` to identify the contact to add.
properties:
admin_id:
type: string
- description: The `id` of the admin who is adding the new participant.
+ description: The `id` of the admin who is adding the new participant. Send
+ this to act as an admin.
example: '12345'
+ intercom_user_id:
+ type: string
+ description: The identifier, as given by Intercom, of the contact who is
+ adding the new participant. Send this, `user_id` or `email` to act as
+ a contact.
+ example: 6329bd9ffe4e2e91dac76188
+ user_id:
+ type: string
+ description: The `external_id` you have defined for the contact who is adding
+ the new participant.
+ example: 2e91dac761886329bd9ffe4e
+ email:
+ type: string
+ description: The email of the contact who is adding the new participant.
+ example: winstonsmith@truth.org
customer:
- type: object
- oneOf:
- - title: Intercom User ID
- properties:
- intercom_user_id:
- type: string
- description: The identifier for the contact as given by Intercom.
- example: 6329bd9ffe4e2e91dac76188
- customer:
- "$ref": "#/components/schemas/customer_request"
- required:
- - intercom_user_id
- - title: User ID
- properties:
- user_id:
- type: string
- description: The external_id you have defined for the contact who
- is being added as a participant.
- example: 6329bd9ffe4e2e91dac76188
- customer:
- "$ref": "#/components/schemas/customer_request"
- required:
- - user_id
- - title: Email
- properties:
- email:
- type: string
- description: The email you have defined for the contact who is being
- added as a participant.
- example: winstonsmith@truth.org
- customer:
- "$ref": "#/components/schemas/customer_request"
- required:
- - email
+ "$ref": "#/components/schemas/customer_request"
+ description: The contact to add as a participant. Identify them with exactly
+ one of `intercom_user_id`, `user_id` or `email`.
+ required:
+ - customer
conversation_participants_response:
title: Conversation Participants Response
type: object
@@ -38792,6 +39224,14 @@ components:
description: Optionally you can leave a message in the conversation to provide
additional context to the user and other teammates.
example: " This conversation is now closed!"
+ assignee_id:
+ type: string
+ description: The `id` of the `admin` or `team` to assign the conversation to when it is closed. Set `0` to unassign it, which clears both the teammate and the team assignee.
+ example: '4324241'
+ skip_notifications:
+ type: boolean
+ description: Option to disable notifications when closing a conversation. Available from API version 2.15.
+ example: true
required:
- message_type
- type
@@ -40694,7 +41134,8 @@ components:
- user
body:
type: string
- description: The text body of the comment.
+ description: The text body of the comment. Required unless the reply includes
+ attachments. Always required when replying to a ticket.
created_at:
type: integer
description: The time the reply was created. If not provided, the current
@@ -40731,7 +41172,6 @@ components:
required:
- message_type
- type
- - body
contact_reply_conversation_request:
title: Contact Reply
oneOf:
@@ -40787,6 +41227,7 @@ components:
- "$ref": "#/components/schemas/contact_reply_base_request"
required:
- email
+ - body
contact_reply_ticket_intercom_user_id_request:
title: Intercom User ID
type: object
@@ -40800,6 +41241,7 @@ components:
description: The identifier for the contact as given by Intercom.
required:
- intercom_user_id
+ - body
contact_reply_ticket_request:
title: Contact Reply on ticket
oneOf:
@@ -40819,6 +41261,7 @@ components:
description: The external_id you have defined for the contact.
required:
- user_id
+ - body
contact_reply_user_id_request:
title: User ID
type: object
@@ -42129,6 +42572,103 @@ components:
type: object
nullable: true
description: The channel through which the conversation was initiated and its current channel.
+ topics:
+ type: object
+ description: The topics of the conversation. An empty object when the workspace
+ doesn't use topics.
+ properties:
+ type:
+ type: string
+ description: Always `topic.list`.
+ example: topic.list
+ topics:
+ type: array
+ description: The topics of the conversation.
+ items:
+ type: object
+ properties:
+ type:
+ type: string
+ description: Always `topic`.
+ example: topic
+ id:
+ type: integer
+ description: The id of the topic.
+ example: 4521
+ name:
+ type: string
+ description: The name of the topic.
+ example: Billing
+ total_count:
+ type: integer
+ description: The number of topics.
+ example: 1
+ ticket:
+ type: object
+ nullable: true
+ description: The ticket details when the conversation is a ticket. `null`
+ for any other conversation.
+ properties:
+ type:
+ type: string
+ description: Always `ticket`.
+ example: ticket
+ id:
+ type: integer
+ description: The id of the ticket's conversation.
+ example: 1295
+ url:
+ type: string
+ description: The link to the ticket in the inbox.
+ example: https://app.intercom.com/a/apps/abcd1234/conversations/1295
+ custom_attributes:
+ type: object
+ description: The ticket's attributes, keyed by attribute name.
+ additionalProperties:
+ type: object
+ properties:
+ value:
+ description: The value of the attribute.
+ anyOf:
+ - type: string
+ nullable: true
+ - type: number
+ - type: boolean
+ - type: array
+ items:
+ type: integer
+ - "$ref": "#/components/schemas/file_attribute"
+ type:
+ type: string
+ description: The data type of the attribute.
+ example: string
+ state:
+ type: string
+ description: The current state of the ticket.
+ example: submitted
+ ticket_type:
+ type: string
+ description: The name of the ticket type.
+ example: Bug report
+ ticket_type_description:
+ type: string
+ description: The description of the ticket type.
+ example: Something is broken
+ ticket_type_emoji:
+ type: string
+ nullable: true
+ description: The emoji of the ticket type.
+ example: "\U0001F41B"
+ ticket_custom_state_admin_label:
+ type: string
+ nullable: true
+ description: The label of the ticket's state as teammates see it.
+ example: Submitted
+ ticket_custom_state_user_label:
+ type: string
+ nullable: true
+ description: The label of the ticket's state as the customer sees it.
+ example: Received
external_references:
type: array
description: References linking this conversation to records in an external helpdesk or CRM system. Populated for Fin Standalone workspaces synced from an external platform; an empty array otherwise. Sorted alphabetically by `type` and capped at 20 entries.
@@ -42141,7 +42681,7 @@ components:
id: abc-def-uuid
monitor_evaluations:
type: array
- description: QA monitor evaluations that flagged this conversation. Only included when `include_monitors=true` is passed as a query parameter.
+ description: The latest QA monitor evaluation for each monitor that has evaluated this conversation, whatever its result. Only included when `include_monitors=true` is passed as a query parameter.
items:
"$ref": "#/components/schemas/conversation_monitor_evaluation"
scorecards:
@@ -42292,7 +42832,7 @@ components:
id: abc-def-uuid
monitor_evaluations:
type: array
- description: QA monitor evaluations that flagged this conversation. Only included when `include_monitors=true` is passed as a query parameter.
+ description: The latest QA monitor evaluation for each monitor that has evaluated this conversation, whatever its result. Only included when `include_monitors=true` is passed as a query parameter.
items:
"$ref": "#/components/schemas/conversation_monitor_evaluation"
scorecards:
@@ -42305,7 +42845,7 @@ components:
type: object
x-tags:
- Conversations
- description: A QA monitor evaluation that flagged this conversation. Returned in the `monitor_evaluations` array on conversation responses when `include_monitors=true` is passed.
+ description: A QA monitor evaluation of this conversation. Returned in the `monitor_evaluations` array on conversation responses when `include_monitors=true` is passed.
properties:
monitor_id:
type: string
@@ -42323,8 +42863,8 @@ components:
example: prompt
result:
type: string
- description: The evaluation outcome reported by the monitor.
- example: flagged
+ description: "The evaluation outcome reported by the monitor: `included` (the conversation matches the monitor's criteria), `excluded`, `error` or `awaiting_async_data`."
+ example: included
explanation:
type: string
nullable: true
@@ -42693,9 +43233,10 @@ components:
example: 5ba682d23d7cf92bef87bfd4
object:
type: string
- description: always conversation
+ description: "`conversation`, or `ticket` when the deleted item is a ticket."
enum:
- conversation
+ - ticket
example: conversation
deleted:
type: boolean
@@ -44206,9 +44747,12 @@ components:
properties:
message_type:
type: string
- description: 'The kind of message being created. Values: `in_app`, `email`, `sms` or `whatsapp`.'
+ description: 'The kind of message being created. Values: `in_app`, `email`, `sms` or `whatsapp`. `inapp`
+ is also accepted for in-app messages, and responses always show in-app
+ messages as `inapp`.'
enum:
- in_app
+ - inapp
- email
- sms
- whatsapp
@@ -44256,6 +44800,22 @@ components:
id: 536e564f316c83104c000020
- type: lead
id: 536e564f316c83104c000021
+ - type: object
+ title: WhatsApp recipient
+ description: The recipient of a `whatsapp` message, identified by phone
+ number. Required form for `whatsapp` messages. A contact is
+ created for the number if there isn't one.
+ properties:
+ phone:
+ type: string
+ description: The recipient's phone number, in international format.
+ example: "+5547999998888"
+ name:
+ type: string
+ description: The name to give the contact if one is created.
+ example: John Doe
+ required:
+ - phone
cc:
oneOf:
- $ref: '#/components/schemas/recipient'
@@ -44287,6 +44847,30 @@ components:
message without the contact replying. Defaults to false if not provided.
default: false
example: true
+ components:
+ type: array
+ description: The components of the WhatsApp template, with the values for
+ its variables. Required for `whatsapp` messages.
+ items:
+ type: object
+ additionalProperties: true
+ example:
+ - type: BODY
+ parameters:
+ - type: text
+ text: Username 123
+ locale:
+ type: string
+ description: The locale of the WhatsApp template to send, such as `en`.
+ If you leave it out, the contact's messenger locale is used, then the
+ workspace locale. A template that isn't available in the locale returns
+ a `400` error.
+ example: en
+ brand_id:
+ type: string
+ description: The id of the brand to send the message from. Not used for
+ `whatsapp` messages. A brand that doesn't exist returns a `400` error.
+ example: '1234'
anyOf:
- title: 'message_type: `email`.'
required:
@@ -44561,7 +45145,45 @@ components:
continue the conversation in the Messenger.
example: "+1 1234567890"
custom_attributes:
- "$ref": "#/components/schemas/custom_attributes_request"
+ type: object
+ description: Custom attributes to add to the user or lead's custom data
+ attributes. Values are strings. Numbers and booleans are converted to
+ strings. An empty string, or any array or object value, returns a
+ `422` error with the key `context`. A `null` value is ignored.
+ additionalProperties:
+ oneOf:
+ - type: string
+ nullable: true
+ - type: number
+ - type: boolean
+ example:
+ issue_type: Billing
+ priority: High
+ body:
+ type: string
+ description: The text of the contact's first message. When you send it,
+ a conversation is created straight away with this text as its first
+ message.
+ example: I need help with my invoice
+ send_notification:
+ type: boolean
+ default: true
+ description: Whether to send the SMS with the link to the Messenger. When
+ `false`, no SMS is sent.
+ example: true
+ user_input_phone:
+ type: string
+ nullable: true
+ description: The phone number as the contact typed it, in national format.
+ When sent with `country`, used in place of `phone` to read the number.
+ `phone` is still required.
+ example: "087 234 5678"
+ country:
+ type: string
+ nullable: true
+ description: The two-letter country code used to read `user_input_phone`.
+ When `country` is `US`, Intercom also looks up the carrier to detect landlines.
+ example: IE
required:
- phone
create_ticket_reply_with_comment_request:
@@ -50234,6 +50856,25 @@ components:
type: string
description: The associated conversation_id
example: '64619700005570'
+ owner:
+ "$ref": "#/components/schemas/admin"
+ description: The admin who sent the message. Only present when the message
+ has an owner.
+ template:
+ type: string
+ description: The style of the email, such as `plain` or `personal`. Only
+ present when `message_type` is `email`.
+ example: plain
+ external_id:
+ type: string
+ description: The external identifier of the message, if one was set when
+ the message was created. Only returned for messages started by a contact.
+ example: api:order-1234
+ whatsapp_message_id:
+ type: string
+ description: The id WhatsApp gave the message. Only present for `whatsapp`
+ messages that WhatsApp accepted.
+ example: wamid.EXAMPLE123
required:
- type
- id
@@ -50944,6 +51585,14 @@ components:
type: string
description: The id of the admin who is performing the action.
example: '5017690'
+ assignee_id:
+ type: string
+ description: The `id` of the `admin` or `team` to assign the conversation to when it is opened. Set `0` to unassign it, which clears both the teammate and the team assignee.
+ example: '4324241'
+ skip_notifications:
+ type: boolean
+ description: Option to disable notifications when opening a conversation. Available from API version 2.15.
+ example: true
required:
- message_type
- admin_id
@@ -51172,6 +51821,7 @@ components:
oneOf:
- "$ref": "#/components/schemas/contact_reply_conversation_request"
- "$ref": "#/components/schemas/admin_reply_conversation_request"
+ - "$ref": "#/components/schemas/bot_reply_conversation_request"
role:
title: Role
type: object
@@ -51234,6 +51884,28 @@ components:
title: multiple filter search request
pagination:
"$ref": "#/components/schemas/starting_after_paging"
+ sort:
+ type: object
+ description: How to sort the results. Without it, the endpoint's default
+ order is used.
+ properties:
+ field:
+ type: string
+ description: The field to sort by, one of the searchable fields listed
+ for the endpoint. Some fields can't be sorted; the endpoint's Sorting
+ section says which. A missing `field`, or one that isn't searchable,
+ returns a `400` error with the code `invalid_field`.
+ example: updated_at
+ order:
+ type: string
+ enum:
+ - ascending
+ - descending
+ default: descending
+ description: The sort order.
+ example: descending
+ required:
+ - field
required:
- query
company_search_request:
@@ -52141,6 +52813,8 @@ components:
- type: number
- type: boolean
- type: array
+ items:
+ "$ref": "#/components/schemas/file_attribute"
- "$ref": "#/components/schemas/file_attribute"
example:
_default_title_: Found a bug
diff --git a/descriptions/2.16/api.intercom.io.yaml b/descriptions/2.16/api.intercom.io.yaml
index bdffed86..df34a751 100644
--- a/descriptions/2.16/api.intercom.io.yaml
+++ b/descriptions/2.16/api.intercom.io.yaml
@@ -12281,7 +12281,7 @@ paths:
- name: include_monitors
in: query
required: false
- description: If set to true, the response will include a `monitor_evaluations` array on each conversation with any QA monitor results that flagged it.
+ description: If set to true, the response will include a `monitor_evaluations` array on each conversation with the latest QA monitor evaluation for each monitor that has evaluated it.
example: true
schema:
type: boolean
@@ -27523,7 +27523,7 @@ components:
id: abc-def-uuid
monitor_evaluations:
type: array
- description: QA monitor evaluations that flagged this conversation. Only included when `include_monitors=true` is passed as a query parameter.
+ description: The latest QA monitor evaluation for each monitor that has evaluated this conversation, whatever its result. Only included when `include_monitors=true` is passed as a query parameter.
items:
"$ref": "#/components/schemas/conversation_monitor_evaluation"
scorecards:
@@ -27674,7 +27674,7 @@ components:
id: abc-def-uuid
monitor_evaluations:
type: array
- description: QA monitor evaluations that flagged this conversation. Only included when `include_monitors=true` is passed as a query parameter.
+ description: The latest QA monitor evaluation for each monitor that has evaluated this conversation, whatever its result. Only included when `include_monitors=true` is passed as a query parameter.
items:
"$ref": "#/components/schemas/conversation_monitor_evaluation"
scorecards:
@@ -27732,7 +27732,7 @@ components:
type: object
x-tags:
- Conversations
- description: A QA monitor evaluation that flagged this conversation. Returned in the `monitor_evaluations` array on conversation responses when `include_monitors=true` is passed.
+ description: A QA monitor evaluation of this conversation. Returned in the `monitor_evaluations` array on conversation responses when `include_monitors=true` is passed.
properties:
monitor_id:
type: string
@@ -27750,8 +27750,8 @@ components:
example: prompt
result:
type: string
- description: The evaluation outcome reported by the monitor.
- example: flagged
+ description: "The evaluation outcome reported by the monitor: `included` (the conversation matches the monitor's criteria), `excluded`, `error` or `awaiting_async_data`."
+ example: included
explanation:
type: string
nullable: true
@@ -28110,7 +28110,7 @@ components:
description: >-
A map of the reply text keyed by locale code. Backs the
`conversation.admin.replied.translated` webhook topic. `original` holds
- the locale code the reply was written in; every other key holds the
+ the locale code the reply was written in, when it is known; every other key holds the
reply translated into that locale.
properties:
original:
@@ -28119,8 +28119,6 @@ components:
example: en
additionalProperties:
type: string
- required:
- - original
example:
original: en
en: 'Hello
'
@@ -34826,7 +34824,7 @@ components:
description: >-
A map of the reply text keyed by locale code. Backs the
`ticket.admin.replied.translated` webhook topic. `original` holds
- the locale code the reply was written in; every other key holds the
+ the locale code the reply was written in, when it is known; every other key holds the
reply translated into that locale.
properties:
original:
@@ -34835,8 +34833,6 @@ components:
example: en
additionalProperties:
type: string
- required:
- - original
example:
original: en
en: 'Hello
'
@@ -35016,7 +35012,7 @@ components:
description: >-
A map of the reply text keyed by locale code. Backs the
`ticket.admin.replied.translated` webhook topic. `original` holds
- the locale code the reply was written in; every other key holds the
+ the locale code the reply was written in, when it is known; every other key holds the
reply translated into that locale.
properties:
original:
@@ -35025,8 +35021,6 @@ components:
example: en
additionalProperties:
type: string
- required:
- - original
example:
original: en
en: 'Hello
'
diff --git a/descriptions/2.17/api.intercom.io.yaml b/descriptions/2.17/api.intercom.io.yaml
index 7bafc729..cb107ebf 100644
--- a/descriptions/2.17/api.intercom.io.yaml
+++ b/descriptions/2.17/api.intercom.io.yaml
@@ -17411,7 +17411,7 @@ paths:
- name: include_monitors
in: query
required: false
- description: If set to true, the response will include a `monitor_evaluations` array on each conversation with any QA monitor results that flagged it.
+ description: If set to true, the response will include a `monitor_evaluations` array on each conversation with the latest QA monitor evaluation for each monitor that has evaluated it.
example: true
schema:
type: boolean
@@ -17502,6 +17502,13 @@ paths:
has_more: false
ai_agent:
ai_agent_participated: false
+ sales_agent_participated: false
+ sales_agent:
+ company:
+ external_references: []
+ channel:
+ initial: messenger
+ current: messenger
schema:
"$ref": "#/components/schemas/conversation_list"
'401':
@@ -17532,6 +17539,27 @@ paths:
message: Active subscription needed.
schema:
"$ref": "#/components/schemas/error"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Invalid per_page:
+ value:
+ type: error.list
+ request_id: 3b6e9d52-7a04-4c81-b5f3-0d8a2e4c1f69
+ errors:
+ - code: invalid_per_page
+ message: per_page must be an integer between 0 and 150
+ Invalid starting_after:
+ value:
+ type: error.list
+ request_id: c9a5e130-6d72-4f48-8b0e-2a7c4d1f5b83
+ errors:
+ - code: client_error
+ message: Invalid starting_after param. Please try again using a starting_after value from a paginated response
+ schema:
+ "$ref": "#/components/schemas/error"
post:
summary: Creates a conversation
parameters:
@@ -17614,6 +17642,34 @@ paths:
message: Active subscription needed.
schema:
"$ref": "#/components/schemas/error"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Sender missing:
+ value:
+ type: error.list
+ request_id: 2a9c6e13-5d70-4b84-8f21-6c3e0a7d9b58
+ errors:
+ - code: data_invalid
+ message: "Field 'from' must be an object"
+ schema:
+ "$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable entity
+ content:
+ application/json:
+ examples:
+ Message too long:
+ value:
+ type: error.list
+ request_id: f0b4d728-1e63-4a95-b7c0-8d2a5e9c3f16
+ errors:
+ - code: parameter_invalid
+ message: Message is too long. Maximum length is 300000
+ schema:
+ "$ref": "#/components/schemas/error"
requestBody:
content:
application/json:
@@ -17663,10 +17719,31 @@ paths:
example: true
schema:
type: boolean
+ - name: include_email_history
+ in: query
+ required: false
+ description: If set to true, the source of the conversation will include the email history, for conversations started by email.
+ example: true
+ schema:
+ type: boolean
+ - name: parts_created_after
+ in: query
+ required: false
+ description: Only include conversation parts created at or after this time, as a Unix timestamp in seconds.
+ example: 1700000000
+ schema:
+ type: integer
+ - name: parts_created_before
+ in: query
+ required: false
+ description: Only include conversation parts created at or before this time, as a Unix timestamp in seconds.
+ example: 1700086400
+ schema:
+ type: integer
- name: include_monitors
in: query
required: false
- description: If set to true, the response will include a `monitor_evaluations` array with any QA monitor results that flagged this conversation.
+ description: If set to true, the response will include a `monitor_evaluations` array with the latest QA monitor evaluation for each monitor that has evaluated this conversation.
example: true
schema:
type: boolean
@@ -17763,7 +17840,7 @@ paths:
type: conversation_part.list
conversation_parts:
- type: conversation_part
- id: 1
+ id: '1'
part_type: comment
body: Okay!
created_at: 1663597223
@@ -17791,7 +17868,7 @@ paths:
en: 'Okay!
'
es: '¡Vale!
'
- type: conversation_part
- id: 2
+ id: '2'
part_type: custom_action_started
body:
created_at: 1740141842
@@ -17814,7 +17891,7 @@ paths:
name: Jira Create Issue
app_package_code: test-integration
- type: conversation_part
- id: 3
+ id: '3'
part_type: conversation_attribute_updated_by_admin
body:
created_at: 1740141851
@@ -17839,7 +17916,7 @@ paths:
name: PROJ-007
app_package_code: null
- type: conversation_part
- id: 4
+ id: '4'
part_type: custom_action_finished
body:
created_at: 1740141857
@@ -18166,6 +18243,27 @@ paths:
message: Active subscription needed.
schema:
"$ref": "#/components/schemas/error"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Side conversation:
+ value:
+ type: error.list
+ request_id: c6a1d739-8e25-4f40-b9c7-2d5e0a3b7f19
+ errors:
+ - code: side_conversation
+ message: action can not be performed on a side conversation
+ Unknown conversation attribute:
+ value:
+ type: error.list
+ request_id: 83b4e6f0-2d17-4a59-8c36-0e9a1b5d7c42
+ errors:
+ - code: parameter_invalid
+ message: Conversation attribute 'Region' does not exist
+ schema:
+ "$ref": "#/components/schemas/error"
requestBody:
content:
application/json:
@@ -18302,7 +18400,7 @@ paths:
- name: include_monitors
in: query
required: false
- description: If set to true, the response will include a `monitor_evaluations` array on each conversation with any QA monitor results that flagged it.
+ description: If set to true, the response will include a `monitor_evaluations` array on each conversation with the latest QA monitor evaluation for each monitor that has evaluated it.
example: true
schema:
type: boolean
@@ -18345,11 +18443,12 @@ paths:
| Field | Type |
| :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |
- | id | String |
+ | id | Integer |
+ | type | String |
| created_at | Date (UNIX timestamp) |
| updated_at | Date (UNIX timestamp) |
| source.type | String
Accepted fields are `conversation`, `email`, `facebook`, `instagram`, `phone_call`, `phone_switch`, `push`, `sms`, `twitter` and `whatsapp`. |
- | source.id | String |
+ | source.id | Integer |
| source.delivered_as | String |
| source.subject | String |
| source.body | String |
@@ -18384,7 +18483,7 @@ paths:
| statistics.last_contact_reply_at | Date (UNIX timestamp) |
| statistics.last_admin_reply_at | Date (UNIX timestamp) |
| statistics.last_close_at | Date (UNIX timestamp) |
- | statistics.last_closed_by_id | String |
+ | statistics.last_closed_by_id | Integer |
| statistics.count_reopens | Integer |
| statistics.count_assignments | Integer |
| statistics.count_conversation_parts | Integer |
@@ -18393,7 +18492,7 @@ paths:
| conversation_rating.score | Integer |
| conversation_rating.remark | String |
| conversation_rating.contact_id | String |
- | conversation_rating.admin_d | String |
+ | conversation_rating.admin_id | String |
| ai_agent_participated | Boolean |
| ai_agent.resolution_state | String |
| ai_agent.last_answer_type | String |
@@ -18412,12 +18511,17 @@ paths:
| != | All | Doesn't Equal |
| IN | All | In Shortcut for `OR` queries Values most be in Array |
| NIN | All | Not In Shortcut for `OR !` queries Values must be in Array |
- | > | Integer Date (UNIX Timestamp) | Greater (or equal) than |
- | < | Integer Date (UNIX Timestamp) | Lower (or equal) than |
+ | > | Integer Date (UNIX Timestamp) | Greater than |
+ | >= | Integer Date (UNIX Timestamp) | Greater than or equal to |
+ | < | Integer Date (UNIX Timestamp) | Lower than |
+ | <= | Integer Date (UNIX Timestamp) | Lower than or equal to |
| ~ | String | Contains |
| !~ | String | Doesn't Contain |
| ^ | String | Starts With |
| $ | String | Ends With |
+ ### Sorting
+
+ Results are sorted by `updated_at`, newest first. To sort differently, add a `sort` object to the request body with a `field` and an `order` of `ascending` or `descending`. `field` is required whenever `sort` is sent, and must be one of the fields in the table above, other than `type`, `state`, `source.subject`, `source.body`, `source.author.id`, `source.author.type`, `source.author.name`, `source.author.email`, `conversation_rating.remark`, `ai_agent.rating_remark` and `ai_agent.source_title`, which can't be sorted. A missing `field`, or one that isn't searchable, returns a `400` error with the code `invalid_field`.
responses:
'200':
description: successful
@@ -18485,8 +18589,71 @@ paths:
has_more: false
ai_agent:
ai_agent_participated: false
+ sales_agent_participated: false
+ sales_agent:
+ company:
+ external_references: []
+ channel:
+ initial: messenger
+ current: messenger
schema:
"$ref": "#/components/schemas/conversation_list"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Invalid query:
+ value:
+ type: error.list
+ request_id: 5e0a9c24-6f18-4d73-a2b5-8c1e3d7f9a60
+ errors:
+ - code: invalid_query
+ message: "Invalid query. Ensure 'field', 'operator', 'value' are present for simple queries. Ensure 'operator' and 'value' for composite queries. Ensure query is a JSON object."
+ Invalid operator:
+ value:
+ type: error.list
+ request_id: a1c7e439-0b52-4f86-9d24-3e6a8c0b5d71
+ errors:
+ - code: invalid_operator
+ message: Composite operators must be of type AND or OR
+ Invalid field:
+ value:
+ type: error.list
+ request_id: 2f8d6b05-9a31-4c47-b1e8-7d0c5a3e9f36
+ errors:
+ - code: invalid_field
+ message: foo is not a valid search field
+ Invalid per_page:
+ value:
+ type: error.list
+ request_id: e9b3a728-4d60-4a15-8f7c-1c5e0d2b6a94
+ errors:
+ - code: invalid_per_page
+ message: per_page must be an integer between 0 and 150
+ Invalid starting_after:
+ value:
+ type: error.list
+ request_id: 74a0c5d1-8e39-4b62-a9f4-6b2d1e8c3a07
+ errors:
+ - code: client_error
+ message: Invalid starting_after param. Please try again using a starting_after value from a paginated response
+ schema:
+ "$ref": "#/components/schemas/error"
+ '401':
+ description: Unauthorized
+ content:
+ application/json:
+ examples:
+ Unauthorized:
+ value:
+ type: error.list
+ request_id: d0c4f817-3a96-4e25-8b1d-5f7a2c9e0b38
+ errors:
+ - code: unauthorized
+ message: Access Token Invalid
+ schema:
+ "$ref": "#/components/schemas/error"
requestBody:
content:
application/json:
@@ -18515,8 +18682,7 @@ paths:
- name: conversation_id
in: path
required: true
- description: The Intercom provisioned identifier for the conversation or the
- string "last" to reply to the last part of the conversation
+ description: "The Intercom provisioned identifier for the conversation, or the string `last` to use the most recent conversation of a contact. With `last`, also send the contact's `intercom_user_id`, `user_id` or `email` in the request body, whatever type of request you send. A contact that can't be found returns a `404` error, and a contact with no conversations returns a `422` error."
example: 123 or "last"
schema:
type: string
@@ -18877,6 +19043,13 @@ paths:
errors:
- code: not_found
message: Resource Not Found
+ Contact not found:
+ value:
+ type: error.list
+ request_id: 19e8b3c6-0a74-4f52-b6d1-3c9a5e7d2b04
+ errors:
+ - code: not_found
+ message: User Not Found
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -18894,7 +19067,7 @@ paths:
schema:
"$ref": "#/components/schemas/error"
'403':
- description: API plan restricted
+ description: Forbidden
content:
application/json:
examples:
@@ -18905,6 +19078,55 @@ paths:
errors:
- code: api_plan_restricted
message: Active subscription needed.
+ Admin lacks permission:
+ value:
+ type: error.list
+ request_id: d3a6f081-5b27-4e94-8c1d-7a0e9b2c4f68
+ errors:
+ - code: action_forbidden
+ message: The admin doesn't have the permissions required to reply to this conversation
+ schema:
+ "$ref": "#/components/schemas/error"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Side conversation:
+ value:
+ type: error.list
+ request_id: b5e90d26-7c14-4a83-8f3b-1d6a2c9e4b70
+ errors:
+ - code: side_conversation
+ message: action can not be performed on a side conversation
+ Unsupported message type:
+ value:
+ type: error.list
+ request_id: 4c7a1e85-2f90-4d63-a5b8-9e3d0c6f1a27
+ errors:
+ - code: parameter_invalid
+ message: Unsupported message type
+ schema:
+ "$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable entity
+ content:
+ application/json:
+ examples:
+ No conversation for the contact:
+ value:
+ type: error.list
+ request_id: 0e5c9a37-4b82-4d16-a3f7-7c1d8b6e2a49
+ errors:
+ - code: parameter_invalid
+ message: No conversation for this user
+ Message too long:
+ value:
+ type: error.list
+ request_id: 7f2d5a98-1c46-4b03-9e7a-6b8c0d3f5a21
+ errors:
+ - code: parameter_invalid
+ message: Message is too long. Maximum length is 300000
schema:
"$ref": "#/components/schemas/error"
requestBody:
@@ -18925,7 +19147,7 @@ paths:
value:
message_type: note
type: admin
- admin_id: 991267696
+ admin_id: '991267696'
body: " An Unordered HTML List
An Ordered HTML List
\ - Coffee
- Tea
- Milk
@@ -18935,7 +19157,7 @@ paths:
value:
message_type: quick_reply
type: admin
- admin_id: 991267698
+ admin_id: '991267698'
reply_options:
- text: 'Yes'
uuid: a5e1c524-5ddd-4c3e-9328-6bca5d6e3edb
@@ -18968,7 +19190,7 @@ paths:
- name: conversation_id
in: path
required: true
- description: The identifier for the conversation as given by Intercom.
+ description: "The identifier for the conversation as given by Intercom, or the string `last` to use the most recent conversation of a contact. With `last`, also send the contact's `intercom_user_id`, `user_id` or `email` in the request body, whatever type of request you send. A contact that can't be found returns a `404` error, and a contact with no conversations returns a `422` error."
example: '123'
schema:
type: string
@@ -19315,6 +19537,13 @@ paths:
errors:
- code: not_found
message: Resource Not Found
+ Contact not found:
+ value:
+ type: error.list
+ request_id: 19e8b3c6-0a74-4f52-b6d1-3c9a5e7d2b04
+ errors:
+ - code: not_found
+ message: User Not Found
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -19332,7 +19561,7 @@ paths:
schema:
"$ref": "#/components/schemas/error"
'403':
- description: API plan restricted
+ description: Forbidden
content:
application/json:
examples:
@@ -19343,6 +19572,62 @@ paths:
errors:
- code: api_plan_restricted
message: Active subscription needed.
+ Admin lacks permission:
+ value:
+ type: error.list
+ request_id: d3a6f081-5b27-4e94-8c1d-7a0e9b2c4f68
+ errors:
+ - code: action_forbidden
+ message: The admin doesn't have the permissions required to reply to this conversation
+ schema:
+ "$ref": "#/components/schemas/error"
+ '400':
+ description: Invalid request
+ content:
+ application/json:
+ examples:
+ Side conversation:
+ value:
+ type: error.list
+ request_id: b5e90d26-7c14-4a83-8f3b-1d6a2c9e4b70
+ errors:
+ - code: side_conversation
+ message: action can not be performed on a side conversation
+ Unsupported message type:
+ value:
+ type: error.list
+ request_id: 4c7a1e85-2f90-4d63-a5b8-9e3d0c6f1a27
+ errors:
+ - code: parameter_invalid
+ message: Unsupported message type
+ schema:
+ "$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable entity
+ content:
+ application/json:
+ examples:
+ Snooze time not in the future:
+ value:
+ type: error.list
+ request_id: 6d1a8f40-9c37-4e25-b0d8-2f7a4c5e8b93
+ errors:
+ - code: parameter_invalid
+ message: snoozed_until must be in the future
+ Already assigned:
+ value:
+ type: error.list
+ request_id: a8f2c514-3e69-4b07-9d1a-5e0c7b3d6f82
+ errors:
+ - code: conversation_already_assigned_to_assignee
+ message: The conversation is already assigned to the specified assignee
+ Message too long:
+ value:
+ type: error.list
+ request_id: 7f2d5a98-1c46-4b03-9e7a-6b8c0d3f5a21
+ errors:
+ - code: parameter_invalid
+ message: Message is too long. Maximum length is 300000
schema:
"$ref": "#/components/schemas/error"
requestBody:
@@ -19360,32 +19645,32 @@ paths:
value:
message_type: close
type: admin
- admin_id: 991267708
+ admin_id: '991267708'
body: Goodbye :)
snooze_a_conversation:
summary: Snooze a conversation
value:
message_type: snoozed
- admin_id: 991267710
+ admin_id: '991267710'
snoozed_until: 1734541187
open_a_conversation:
summary: Open a conversation
value:
message_type: open
- admin_id: 991267712
+ admin_id: '991267712'
assign_a_conversation:
summary: Assign a conversation
value:
message_type: assignment
type: admin
- admin_id: 991267715
- assignee_id: 991267715
+ admin_id: '991267715'
+ assignee_id: '991267715'
not_found:
summary: Not found
value:
message_type: close
type: admin
- admin_id: 991267717
+ admin_id: '991267717'
body: Goodbye :)
"/conversations/{conversation_id}/customers":
post:
@@ -20057,8 +20342,8 @@ paths:
summary: Redact a conversation part
value:
type: conversation_part
- conversation_id: 608
- conversation_part_id: 149
+ conversation_id: '608'
+ conversation_part_id: '149'
not_found:
summary: Not found
value:
@@ -20128,8 +20413,8 @@ paths:
created_at: 1734537561
type: conversation
url:
- admin_assignee_id:
- team_assignee_id:
+ admin_assignee_id: 0
+ team_assignee_id: 0
open: true
state: open
read: false
@@ -20215,8 +20500,8 @@ paths:
type: error.list
request_id: b4f6c9d3-2345-6789-abcd-ef0123456789
errors:
- - code: forbidden
- message: Forbidden request
+ - code: action_forbidden
+ message: The admin doesn't have the permissions required to merge conversations
schema:
"$ref": "#/components/schemas/error"
'422':
@@ -20488,7 +20773,21 @@ paths:
request_id: 7a80b950-b392-499f-85db-ea7c6c424d37
errors:
- code: intercom_version_invalid
- message: Requested resource is not available in current API version.
+ message: Requested resource is not available in current API version
+ schema:
+ "$ref": "#/components/schemas/error"
+ '403':
+ description: API plan restricted
+ content:
+ application/json:
+ examples:
+ API plan restricted:
+ value:
+ type: error.list
+ request_id: 58d2b7e4-1f93-4a60-9c05-4e8b3a6d0c17
+ errors:
+ - code: api_plan_restricted
+ message: Active subscription needed.
schema:
"$ref": "#/components/schemas/error"
"/conversations/attributes":
@@ -24656,7 +24955,7 @@ paths:
schema:
"$ref": "#/components/schemas/message"
'400':
- description: No body supplied for email message
+ description: Invalid request
content:
application/json:
examples:
@@ -24674,10 +24973,31 @@ paths:
errors:
- code: parameter_invalid
message: Body is required
+ Recipient missing:
+ value:
+ type: error.list
+ request_id: 8c1f3a52-6d0e-4f7b-9a41-2e5b7c9d0a11
+ errors:
+ - code: data_invalid
+ message: "Field 'to' is required"
+ Too many recipients:
+ value:
+ type: error.list
+ request_id: 1b7e9d34-5c28-4a6f-8e03-7d4a6b2c9f52
+ errors:
+ - code: parameter_invalid
+ message: Max Number of recipients per request reached
+ Brand not found:
+ value:
+ type: error.list
+ request_id: 5a2c8e71-3f94-4d0b-b6a8-0c9e1d7f3b64
+ errors:
+ - code: parameter_invalid
+ message: brand_id 1234 not found
schema:
"$ref": "#/components/schemas/error"
'422':
- description: No subject supplied for email message
+ description: Unprocessable entity
content:
application/json:
examples:
@@ -24688,6 +25008,20 @@ paths:
errors:
- code: parameter_not_found
message: No subject supplied for email message
+ Subject too long:
+ value:
+ type: error.list
+ request_id: 3d8b5f90-7a16-4c2e-8f04-9b6d1e3a5c77
+ errors:
+ - code: parameter_invalid
+ message: Subject length must be under 255 characters
+ Message too long:
+ value:
+ type: error.list
+ request_id: c2e7a461-0d95-4b38-a7f6-4e8c0b2d9a15
+ errors:
+ - code: parameter_invalid
+ message: Message is too long. Maximum length is 300000
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -24705,7 +25039,7 @@ paths:
schema:
"$ref": "#/components/schemas/error"
'403':
- description: API plan restricted
+ description: Forbidden
content:
application/json:
examples:
@@ -24716,6 +25050,34 @@ paths:
errors:
- code: api_plan_restricted
message: Active subscription needed.
+ Recipient unsubscribed from emails:
+ value:
+ type: error.list
+ request_id: e4d6b0a8-2c71-4f35-9d8e-6a1b3c5f7e20
+ errors:
+ - code: action_forbidden
+ message: One or more users are unsubscribed from emails
+ Recipient hard bounced:
+ value:
+ type: error.list
+ request_id: 9f3a7c15-8b42-4e60-a1d9-5c7e2b4d6a83
+ errors:
+ - code: action_forbidden
+ message: One or more users have hard bounced and cannot be messaged via email
+ schema:
+ "$ref": "#/components/schemas/error"
+ '404':
+ description: Contact not found
+ content:
+ application/json:
+ examples:
+ Contact not found:
+ value:
+ type: error.list
+ request_id: 7b0d4e92-6a53-4c18-9e2f-3a5c8d1b6f40
+ errors:
+ - code: not_found
+ message: User Not Found
schema:
"$ref": "#/components/schemas/error"
requestBody:
@@ -24761,7 +25123,7 @@ paths:
bcc:
- type: user
id: 6762f23e1bb69f9f2193bc2f
- message_type: conversation
+ message_type: inapp
body: heyy
admin_whatsapp_message_created:
summary: admin whatsapp message created
@@ -26420,7 +26782,7 @@ paths:
schema:
"$ref": "#/components/schemas/phone_switch"
'400':
- description: Phone number lookup or SMS send failed
+ description: The phone number lookup or the SMS send failed
content:
application/json:
examples:
@@ -26433,7 +26795,11 @@ paths:
error_key: invalid_phone_number
message: Invalid phone number
'422':
- description: unprocessable entity
+ description: "The request was invalid. The response is an object with a
+ single `error_key`: `caller_phone` when `phone` is missing, `invalid_phone_number`,
+ `landline_phone`, `twilio_settings` when the workspace has no Twilio account
+ to send the SMS, or `context` when `custom_attributes` is invalid. Any other
+ invalid input returns its own key, such as `send_notification` or `country`."
content:
application/json:
examples:
@@ -26446,6 +26812,12 @@ paths:
Twilio account not found:
value:
error_key: twilio_settings
+ Missing phone number:
+ value:
+ error_key: caller_phone
+ Invalid custom attributes:
+ value:
+ error_key: context
'401':
description: Unauthorized
content:
@@ -26501,6 +26873,19 @@ paths:
custom_attributes:
issue_type: Billing
priority: High
+ missing_phone_number:
+ summary: Missing phone number
+ value:
+ custom_attributes:
+ issue_type: Billing
+ priority: High
+ invalid_custom_attributes:
+ summary: Invalid custom attributes
+ value:
+ phone: "+353832345678"
+ custom_attributes:
+ issue_type:
+ - Billing
"/calls":
get:
summary: List all calls
@@ -32045,10 +32430,78 @@ components:
type: boolean
description: Option to disable notifications when replying to a conversation.
example: true
+ assignee_id:
+ type: string
+ description: The `id` of the admin or team to assign the conversation to
+ with this reply.
+ example: '4324241'
+ skip_reopen:
+ type: boolean
+ default: false
+ description: When true, a reply that assigns the conversation (a `comment`
+ with `assignee_id`) doesn't reopen or unsnooze it. A plain `comment` still
+ reopens a closed conversation. Available from API version 2.17.
+ example: true
required:
- message_type
- type
- admin_id
+ bot_reply_conversation_request:
+ title: Bot Reply
+ type: object
+ description: Payload of the request to reply on behalf of a bot
+ properties:
+ message_type:
+ type: string
+ enum:
+ - comment
+ - note
+ - quick_reply
+ example: comment
+ type:
+ type: string
+ enum:
+ - bot
+ example: bot
+ bot_id:
+ type: string
+ description: The id of the bot that is authoring the reply. A bot that
+ doesn't exist returns a `404` error.
+ example: '3156780'
+ body:
+ type: string
+ description: The text body of the reply. Must be present for comment and
+ note message types.
+ example: Hello there!
+ created_at:
+ type: integer
+ description: The time the reply was created. If not provided, the current
+ time will be used.
+ example: 1590000000
+ reply_options:
+ title: Quick Reply Options
+ type: array
+ description: The quick reply options to display to the end user. Must be present for quick_reply
+ message types.
+ items:
+ "$ref": "#/components/schemas/quick_reply_option"
+ attachment_urls:
+ type: array
+ description: A list of image URLs that will be added as attachments. You
+ can include up to 10 URLs.
+ items:
+ type: string
+ format: uri
+ maxItems: 10
+ skip_notifications:
+ type: boolean
+ description: Option to disable notifications when replying to a conversation.
+ Available from API version 2.15.
+ example: true
+ required:
+ - message_type
+ - type
+ - bot_id
admin_reply_ticket_request:
title: Admin Reply on ticket
type: object
@@ -33550,55 +34003,47 @@ components:
keeps its original close timestamp and the assignment does not count as
a new closure in reporting.
example: true
+ skip_notifications:
+ type: boolean
+ description: Option to disable notifications when assigning a conversation. Available from API version 2.15.
+ example: true
required:
- message_type
- type
- admin_id
- assignee_id
attach_contact_to_conversation_request:
- title: Assign Conversation Request
+ title: Attach Contact To Conversation Request
type: object
- description: Payload of the request to assign a conversation
+ description: |-
+ Payload of the request to add a contact to a conversation. Say who is adding the contact in one of two ways: send `admin_id` to act as an admin, or send one of `intercom_user_id`, `user_id` or `email` to act as a contact. Sending both, or neither, returns a `422` error. Use `customer` to identify the contact to add.
properties:
admin_id:
type: string
- description: The `id` of the admin who is adding the new participant.
+ description: The `id` of the admin who is adding the new participant. Send
+ this to act as an admin.
example: '12345'
+ intercom_user_id:
+ type: string
+ description: The identifier, as given by Intercom, of the contact who is
+ adding the new participant. Send this, `user_id` or `email` to act as
+ a contact.
+ example: 6329bd9ffe4e2e91dac76188
+ user_id:
+ type: string
+ description: The `external_id` you have defined for the contact who is adding
+ the new participant.
+ example: 2e91dac761886329bd9ffe4e
+ email:
+ type: string
+ description: The email of the contact who is adding the new participant.
+ example: winstonsmith@truth.org
customer:
- type: object
- oneOf:
- - title: Intercom User ID
- properties:
- intercom_user_id:
- type: string
- description: The identifier for the contact as given by Intercom.
- example: 6329bd9ffe4e2e91dac76188
- customer:
- "$ref": "#/components/schemas/customer_request"
- required:
- - intercom_user_id
- - title: User ID
- properties:
- user_id:
- type: string
- description: The external_id you have defined for the contact who
- is being added as a participant.
- example: 6329bd9ffe4e2e91dac76188
- customer:
- "$ref": "#/components/schemas/customer_request"
- required:
- - user_id
- - title: Email
- properties:
- email:
- type: string
- description: The email you have defined for the contact who is being
- added as a participant.
- example: winstonsmith@truth.org
- customer:
- "$ref": "#/components/schemas/customer_request"
- required:
- - email
+ "$ref": "#/components/schemas/customer_request"
+ description: The contact to add as a participant. Identify them with exactly
+ one of `intercom_user_id`, `user_id` or `email`.
+ required:
+ - customer
conversation_participants_response:
title: Conversation Participants Response
type: object
@@ -33958,6 +34403,14 @@ components:
description: Optionally you can leave a message in the conversation to provide
additional context to the user and other teammates.
example: " This conversation is now closed!"
+ assignee_id:
+ type: string
+ description: The `id` of the `admin` or `team` to assign the conversation to when it is closed. Set `0` to unassign it, which clears both the teammate and the team assignee.
+ example: '4324241'
+ skip_notifications:
+ type: boolean
+ description: Option to disable notifications when closing a conversation. Available from API version 2.15.
+ example: true
required:
- message_type
- type
@@ -35458,7 +35911,8 @@ components:
- user
body:
type: string
- description: The text body of the comment.
+ description: The text body of the comment. Required unless the reply includes
+ attachments. Always required when replying to a ticket.
created_at:
type: integer
description: The time the reply was created. If not provided, the current
@@ -35495,7 +35949,6 @@ components:
required:
- message_type
- type
- - body
contact_reply_conversation_request:
title: Contact Reply
oneOf:
@@ -35551,6 +36004,7 @@ components:
- "$ref": "#/components/schemas/contact_reply_base_request"
required:
- email
+ - body
contact_reply_ticket_intercom_user_id_request:
title: Intercom User ID
type: object
@@ -35564,6 +36018,7 @@ components:
description: The identifier for the contact as given by Intercom.
required:
- intercom_user_id
+ - body
contact_reply_ticket_request:
title: Contact Reply on ticket
oneOf:
@@ -35583,6 +36038,7 @@ components:
description: The external_id you have defined for the contact.
required:
- user_id
+ - body
contact_reply_user_id_request:
title: User ID
type: object
@@ -36894,6 +37350,103 @@ components:
type: object
nullable: true
description: The channel through which the conversation was initiated and its current channel.
+ topics:
+ type: object
+ description: The topics of the conversation. An empty object when the workspace
+ doesn't use topics.
+ properties:
+ type:
+ type: string
+ description: Always `topic.list`.
+ example: topic.list
+ topics:
+ type: array
+ description: The topics of the conversation.
+ items:
+ type: object
+ properties:
+ type:
+ type: string
+ description: Always `topic`.
+ example: topic
+ id:
+ type: integer
+ description: The id of the topic.
+ example: 4521
+ name:
+ type: string
+ description: The name of the topic.
+ example: Billing
+ total_count:
+ type: integer
+ description: The number of topics.
+ example: 1
+ ticket:
+ type: object
+ nullable: true
+ description: The ticket details when the conversation is a ticket. `null`
+ for any other conversation.
+ properties:
+ type:
+ type: string
+ description: Always `ticket`.
+ example: ticket
+ id:
+ type: integer
+ description: The id of the ticket's conversation.
+ example: 1295
+ url:
+ type: string
+ description: The link to the ticket in the inbox.
+ example: https://app.intercom.com/a/apps/abcd1234/conversations/1295
+ custom_attributes:
+ type: object
+ description: The ticket's attributes, keyed by attribute name.
+ additionalProperties:
+ type: object
+ properties:
+ value:
+ description: The value of the attribute.
+ anyOf:
+ - type: string
+ nullable: true
+ - type: number
+ - type: boolean
+ - type: array
+ items:
+ type: integer
+ - "$ref": "#/components/schemas/file_attribute"
+ type:
+ type: string
+ description: The data type of the attribute.
+ example: string
+ state:
+ type: string
+ description: The current state of the ticket.
+ example: submitted
+ ticket_type:
+ type: string
+ description: The name of the ticket type.
+ example: Bug report
+ ticket_type_description:
+ type: string
+ description: The description of the ticket type.
+ example: Something is broken
+ ticket_type_emoji:
+ type: string
+ nullable: true
+ description: The emoji of the ticket type.
+ example: "\U0001F41B"
+ ticket_custom_state_admin_label:
+ type: string
+ nullable: true
+ description: The label of the ticket's state as teammates see it.
+ example: Submitted
+ ticket_custom_state_user_label:
+ type: string
+ nullable: true
+ description: The label of the ticket's state as the customer sees it.
+ example: Received
external_references:
type: array
description: References linking this conversation to records in an external helpdesk or CRM system. Populated for Fin Standalone workspaces synced from an external platform; an empty array otherwise. Sorted alphabetically by `type` and capped at 20 entries.
@@ -36906,7 +37459,7 @@ components:
id: abc-def-uuid
monitor_evaluations:
type: array
- description: QA monitor evaluations that flagged this conversation. Only included when `include_monitors=true` is passed as a query parameter.
+ description: The latest QA monitor evaluation for each monitor that has evaluated this conversation, whatever its result. Only included when `include_monitors=true` is passed as a query parameter.
items:
"$ref": "#/components/schemas/conversation_monitor_evaluation"
scorecards:
@@ -37057,7 +37610,7 @@ components:
id: abc-def-uuid
monitor_evaluations:
type: array
- description: QA monitor evaluations that flagged this conversation. Only included when `include_monitors=true` is passed as a query parameter.
+ description: The latest QA monitor evaluation for each monitor that has evaluated this conversation, whatever its result. Only included when `include_monitors=true` is passed as a query parameter.
items:
"$ref": "#/components/schemas/conversation_monitor_evaluation"
scorecards:
@@ -37115,7 +37668,7 @@ components:
type: object
x-tags:
- Conversations
- description: A QA monitor evaluation that flagged this conversation. Returned in the `monitor_evaluations` array on conversation responses when `include_monitors=true` is passed.
+ description: A QA monitor evaluation of this conversation. Returned in the `monitor_evaluations` array on conversation responses when `include_monitors=true` is passed.
properties:
monitor_id:
type: string
@@ -37133,8 +37686,8 @@ components:
example: prompt
result:
type: string
- description: The evaluation outcome reported by the monitor.
- example: flagged
+ description: "The evaluation outcome reported by the monitor: `included` (the conversation matches the monitor's criteria), `excluded`, `error` or `awaiting_async_data`."
+ example: included
explanation:
type: string
nullable: true
@@ -37466,9 +38019,10 @@ components:
example: 5ba682d23d7cf92bef87bfd4
object:
type: string
- description: always conversation
+ description: "`conversation`, or `ticket` when the deleted item is a ticket."
enum:
- conversation
+ - ticket
example: conversation
deleted:
type: boolean
@@ -37680,7 +38234,7 @@ components:
description: >-
A map of the reply text keyed by locale code. Backs the
`conversation.admin.replied.translated` webhook topic. `original` holds
- the locale code the reply was written in; every other key holds the
+ the locale code the reply was written in, when it is known; every other key holds the
reply translated into that locale.
properties:
original:
@@ -37689,8 +38243,6 @@ components:
example: en
additionalProperties:
type: string
- required:
- - original
example:
original: en
en: 'Hello
'
@@ -38971,9 +39523,12 @@ components:
properties:
message_type:
type: string
- description: 'The kind of message being created. Values: `in_app`, `email` or `whatsapp`.'
+ description: 'The kind of message being created. Values: `in_app`, `email` or `whatsapp`. `inapp`
+ is also accepted for in-app messages, and responses always show in-app
+ messages as `inapp`.'
enum:
- in_app
+ - inapp
- email
- whatsapp
example: in_app
@@ -39020,6 +39575,22 @@ components:
id: 536e564f316c83104c000020
- type: lead
id: 536e564f316c83104c000021
+ - type: object
+ title: WhatsApp recipient
+ description: The recipient of a `whatsapp` message, identified by phone
+ number. Required form for `whatsapp` messages. A contact is
+ created for the number if there isn't one.
+ properties:
+ phone:
+ type: string
+ description: The recipient's phone number, in international format.
+ example: "+5547999998888"
+ name:
+ type: string
+ description: The name to give the contact if one is created.
+ example: John Doe
+ required:
+ - phone
cc:
oneOf:
- $ref: '#/components/schemas/recipient'
@@ -39051,6 +39622,30 @@ components:
message without the contact replying. Defaults to false if not provided.
default: false
example: true
+ components:
+ type: array
+ description: The components of the WhatsApp template, with the values for
+ its variables. Required for `whatsapp` messages.
+ items:
+ type: object
+ additionalProperties: true
+ example:
+ - type: BODY
+ parameters:
+ - type: text
+ text: Username 123
+ locale:
+ type: string
+ description: The locale of the WhatsApp template to send, such as `en`.
+ If you leave it out, the contact's messenger locale is used, then the
+ workspace locale. A template that isn't available in the locale returns
+ a `400` error.
+ example: en
+ brand_id:
+ type: string
+ description: The id of the brand to send the message from. Not used for
+ `whatsapp` messages. A brand that doesn't exist returns a `400` error.
+ example: '1234'
anyOf:
- title: 'message_type: `email`.'
required:
@@ -39319,7 +39914,45 @@ components:
continue the conversation in the Messenger.
example: "+1 1234567890"
custom_attributes:
- "$ref": "#/components/schemas/custom_attributes_request"
+ type: object
+ description: Custom attributes to add to the user or lead's custom data
+ attributes. Values are strings. Numbers and booleans are converted to
+ strings. An empty string, or any array or object value, returns a
+ `422` error with the key `context`. A `null` value is ignored.
+ additionalProperties:
+ oneOf:
+ - type: string
+ nullable: true
+ - type: number
+ - type: boolean
+ example:
+ issue_type: Billing
+ priority: High
+ body:
+ type: string
+ description: The text of the contact's first message. When you send it,
+ a conversation is created straight away with this text as its first
+ message.
+ example: I need help with my invoice
+ send_notification:
+ type: boolean
+ default: true
+ description: Whether to send the SMS with the link to the Messenger. When
+ `false`, no SMS is sent.
+ example: true
+ user_input_phone:
+ type: string
+ nullable: true
+ description: The phone number as the contact typed it, in national format.
+ When sent with `country`, used in place of `phone` to read the number.
+ `phone` is still required.
+ example: "087 234 5678"
+ country:
+ type: string
+ nullable: true
+ description: The two-letter country code used to read `user_input_phone`.
+ When `country` is `US`, Intercom also looks up the carrier to detect landlines.
+ example: IE
required:
- phone
create_ticket_reply_with_comment_request:
@@ -44185,13 +44818,33 @@ components:
- inapp
- facebook
- twitter
- description: The type of message that was sent. Can be email, inapp, facebook
- or twitter.
+ - whatsapp
+ description: The type of message that was sent. Can be email, inapp, facebook,
+ twitter or whatsapp.
example: inapp
conversation_id:
type: string
description: The associated conversation_id
example: '64619700005570'
+ owner:
+ "$ref": "#/components/schemas/admin"
+ description: The admin who sent the message. Only present when the message
+ has an owner.
+ template:
+ type: string
+ description: The style of the email, such as `plain` or `personal`. Only
+ present when `message_type` is `email`.
+ example: plain
+ external_id:
+ type: string
+ description: The external identifier of the message, if one was set when
+ the message was created. Only returned for messages started by a contact.
+ example: api:order-1234
+ whatsapp_message_id:
+ type: string
+ description: The id WhatsApp gave the message. Only present for `whatsapp`
+ messages that WhatsApp accepted.
+ example: wamid.EXAMPLE123
required:
- type
- id
@@ -44736,6 +45389,14 @@ components:
type: string
description: The id of the admin who is performing the action.
example: '5017690'
+ assignee_id:
+ type: string
+ description: The `id` of the `admin` or `team` to assign the conversation to when it is opened. Set `0` to unassign it, which clears both the teammate and the team assignee.
+ example: '4324241'
+ skip_notifications:
+ type: boolean
+ description: Option to disable notifications when opening a conversation. Available from API version 2.15.
+ example: true
required:
- message_type
- admin_id
@@ -44959,6 +45620,7 @@ components:
oneOf:
- "$ref": "#/components/schemas/contact_reply_conversation_request"
- "$ref": "#/components/schemas/admin_reply_conversation_request"
+ - "$ref": "#/components/schemas/bot_reply_conversation_request"
search_request:
description: Search using Intercoms Search APIs.
type: object
@@ -44972,6 +45634,28 @@ components:
title: multiple filter search request
pagination:
"$ref": "#/components/schemas/starting_after_paging"
+ sort:
+ type: object
+ description: How to sort the results. Without it, the endpoint's default
+ order is used.
+ properties:
+ field:
+ type: string
+ description: The field to sort by, one of the searchable fields listed
+ for the endpoint. Some fields can't be sorted; the endpoint's Sorting
+ section says which. A missing `field`, or one that isn't searchable,
+ returns a `400` error with the code `invalid_field`.
+ example: updated_at
+ order:
+ type: string
+ enum:
+ - ascending
+ - descending
+ default: descending
+ description: The sort order.
+ example: descending
+ required:
+ - field
required:
- query
company_search_request:
@@ -45707,6 +46391,8 @@ components:
- type: number
- type: boolean
- type: array
+ items:
+ "$ref": "#/components/schemas/file_attribute"
- "$ref": "#/components/schemas/file_attribute"
example:
_default_title_: Found a bug
@@ -45840,7 +46526,7 @@ components:
description: >-
A map of the reply text keyed by locale code. Backs the
`ticket.admin.replied.translated` webhook topic. `original` holds
- the locale code the reply was written in; every other key holds the
+ the locale code the reply was written in, when it is known; every other key holds the
reply translated into that locale.
properties:
original:
@@ -45849,8 +46535,6 @@ components:
example: en
additionalProperties:
type: string
- required:
- - original
example:
original: en
en: 'Hello
'
@@ -46030,7 +46714,7 @@ components:
description: >-
A map of the reply text keyed by locale code. Backs the
`ticket.admin.replied.translated` webhook topic. `original` holds
- the locale code the reply was written in; every other key holds the
+ the locale code the reply was written in, when it is known; every other key holds the
reply translated into that locale.
properties:
original:
@@ -46039,8 +46723,6 @@ components:
example: en
additionalProperties:
type: string
- required:
- - original
example:
original: en
en: 'Hello
'