ASAPP Platform API (combined)
Combined ASAPP API surface (AutoCompose, Conversations, configuration, and more) as one OpenAPI document.
Combined ASAPP API surface (AutoCompose, Conversations, configuration, and more) as one OpenAPI document.
openapi: 3.0.1
info:
title: AutoCompose API
description: >
Autocompose API to suggest the next agent message.
Suggestions are based on the conversation history, conversation metadata,
and
the in-progress message text the agent has already typed into the composer.
version: 0.0.3
servers:
- url: https://api.sandbox.asapp.com
- url: https://api.test.asapp.com
tags:
- name: AutoCompose
description: Improve agent productivity with AutoCompose API
x-displayName: AutoCompose
- name: AutoSummary
description: Endpoints for summarizing conversations and retrieving structured data
x-displayName: AutoSummary
- name: AutoTranscribe
description: Get streaming URL to transcribe audio
x-displayName: AutoTranscribe
- name: Conversations
description: Operations to send conversational inputs to ASAPP AI services
x-displayName: Conversations
- name: File Exporter
description: API to get client exports
x-displayName: File Exporter
- name: GenerativeAgent
description: >-
Operations to send messages and trigger GenerativeAgent to respond or
query the current state
x-displayName: GenerativeAgent
- name: Health Check
description: Operations to ensure that ASAPP APIs are up and running.
x-displayName: Health Check
- name: Knowledge Base
description: >-
Operations to submit and retrieve Articles to the GenerativeAgent
Knowledge Base.
x-displayName: Knowledge Base
- name: Metadata
description: API to submit entity's attributes to ASAPP
x-displayName: Metadata
- name: AutoTranscribe Media Gateway
description: >-
Operations for controlling AutoTranscribe Media Gateway transcription and
streaming
x-displayName: AutoTranscribe Media Gateway
paths:
/autocompose/v1/conversations/{conversationId}/suggestions:
parameters:
- $ref: '#/components/parameters/conversationId'
post:
tags:
- AutoCompose
operationId: getSuggestions
summary: Generate suggestions
description: >
Get suggestions for the next agent message in the conversation.
There are several times when this should be called:
- when an agent joins the conversation,
- after a message is sent by either the customer or the agent,
- and as the agent is typing in the composer (to enable completing the
agent's in-progress message).
Optionally, add a message to the conversation.
requestBody:
description: The parameters for getting suggestions for the next agent message.
content:
application/json:
schema:
$ref: '#/components/schemas/SuggestionsRequest'
responses:
'200':
description: Successfully fetched suggestions for the conversation
content:
application/json:
schema:
$ref: '#/components/schemas/Suggestions'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/profanity/evaluation:
post:
tags:
- AutoCompose
operationId: getEvaluation
summary: Evaluate profanity
description: >
Get an evaluation of a text to verify if it contains profanity,
obscenity or other unwanted words. This service should be called before
sending a message to prevent the agent from sending profanities in the
chat.
requestBody:
description: >-
The parameters for getting a evaluation result of the text typed by
the user.
content:
application/json:
schema:
type: object
properties:
text:
description: text to be checked for profanity
type: string
example:
text: This is a perfectly decent sentence.
responses:
'200':
description: Successfully fetched a evaluation result of the sentence.
content:
application/json:
schema:
$ref: '#/components/schemas/ProfanityResult'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/spellcheck/correction:
post:
tags:
- AutoCompose
operationId: getSpellingCorrection
summary: Check for spelling mistakes
description: >
Get spelling correction for a message as it is being typed, if there is
a misspelling. Only the current word
will be corrected, once it's fully typed (so it is recommended to call
this endpoint after space characters).
requestBody:
description: >-
The parameters for getting a spelling correction as a message is being
typed.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SpellcheckQuery'
responses:
'200':
description: Successfully checked for a spelling mistake.
content:
application/json:
schema:
$ref: '#/components/schemas/SpellcheckCorrection'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/analytics/message-sent:
post:
tags:
- AutoCompose
operationId: createMessageSentEvent
summary: Create a MessageSent analytics event
description: >
Create a MessageSent analytics event describing the agent's usage of
AutoCompose augmentation features
while composing a message
requestBody:
description: The parameters for creating a MessageSent event
content:
application/json:
schema:
$ref: '#/components/schemas/MessageSentEvent'
responses:
'200':
description: Successfully created a MessageSent event
content: {}
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/conversations/{conversationId}/message-analytic-events:
parameters:
- $ref: '#/components/parameters/conversationId'
post:
tags:
- AutoCompose
operationId: createMessageAnalyticEvent
summary: Create a message analytic event
description: >
To improve the performance of ASAPP suggestions, provide information
about the actions performed by the agent while composing a message by
creating `message-analytic-events`.
These analytic events indicate which AutoCompose functionality was used
or not. This information along with the conversation itself is used to
optimize our models, resulting in better results for the agents.
We track the following types of message analytic events:
- suggestion-1-inserted: The agent selected the first of the
`suggestions` from a `Suggestion` API response.
- suggestion-2-inserted: The agent selected the second of the
`suggestions` from a `Suggestion` API response.
- suggestion-3-inserted: The agent selected the third of the
`suggestions` from a `Suggestion` API response.
- phrase-completion-accepted: The agent selected the `phraseCompletion`
from a `Suggestion` API response.
- spellcheck-applied: A correction provided in a `SpellcheckCorrection`
API response was applied automatically.
- spellcheck-undone: A correction provided in a `SpellcheckCorrection`
API response was undone by clicking the undo button.
- custom-response-drawer-inserted: The agent inserted one of their
custom responses from the custom response drawer.
- custom-panel-inserted: The agent inserted a response from their custom
response list in the custom response panel.
- global-panel-inserted: The agent inserted a response from the global
response list in the global response panel.
Some of the event types have a corresponding event object to provide
details.
requestBody:
description: The parameters for reporting the analytic event
content:
application/json:
schema:
$ref: '#/components/schemas/MessageAnalyticEvent'
examples:
Create a suggestion-inserted event.:
value:
type: suggestion-1-inserted
suggestionsId: 4d2fd982640c311394008259594399a1
Create a spellcheck-applied event.:
value:
type: spellcheck-applied
suggestionsId: 4d2fd982640c311394008259594399a1
spellcheckApplied:
correctionId: 75bc8912c66842594375bc8912c66842
Create a spellcheck-undone event.:
value:
type: spellcheck-undone
suggestionsId: 4d2fd982640c311394008259594399a1
spellcheckUndone:
correctionId: 75bc8912c66842594375bc8912c66842
Create a custom-response-drawer-inserted event.:
value:
type: custom-response-drawer-inserted
suggestionsId: 4d2fd982640c311394008259594399a1
customResponseDrawerInserted:
query: Hi
text: Hi, I'm Alice. How can I help you today?
Create a custom-panel-inserted event.:
value:
type: custom-panel-inserted
suggestionsId: 4d2fd982640c311394008259594399a1
customPanelInserted:
text: Hi, I'm Alice. How can I help you today?
Create a global-panel-inserted event.:
value:
type: global-panel-inserted
suggestionsId: 4d2fd982640c311394008259594399a1
globalPanelInserted:
text: How can I help you today?
responses:
'200':
description: Successfully reported selected suggestion
content: {}
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/settings:
parameters:
- $ref: '#/components/parameters/agentId'
get:
tags:
- AutoCompose
operationId: getSettings
summary: Get settings for AutoCompose clients
description: >
Get settings for AutoCompose clients, such as whether any features
should not be used.
It may be desirable to disable some features in high-latency scenarios.
responses:
'200':
description: Settings for AutoCompose clients
content:
application/json:
schema:
$ref: '#/components/schemas/Settings'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/responses/globals:
get:
tags:
- AutoCompose
summary: List the global responses
description: >-
Get the global responses and folder organization for a company.
Responses are sorted by text, and folders are sorted by name.
operationId: getGlobalResponses
parameters:
- in: query
name: folderId
schema:
type: string
required: false
description: >-
Optional identifier for the ID of the folder containing responses to
be retrieved. If this is omitted, all global responses are
returned. Data format is expected to be UUID. The special value
'__root' can also be used to retrieve top level folders/responses.
- in: query
name: resourceType
schema:
type: string
enum:
- folders
- responses
- all
default: all
required: false
description: >-
Optional identifier for the ID of the type of responses to be
retrieved. A value of 'folders' will return only folder information
describing the way responses are organized. A value of 'responses'
will return only responses. A value of 'all' will return a mix of
folders and responses. Note that if the folderId parameter is
specified as well, only the resource type identified here that
exists within the specified folder will be returned. If this is
omitted, all resources are returned.
- in: query
name: searchTerm
schema:
type: string
required: false
description: >-
Search term to search for global responses. This will search for
matching folder names, response text or both, depending on the
resourceType parameter value.
example: greetings
- in: query
name: pageToken
description: >-
This service responds with a set of global responses. These are
divided into pages, with maxPerPage items in each page. This
parameter is the page token returned in the call prior to this one.
If this is the first call being made, this field should be omitted.
The server will respond with global responses following the one
previously sent.
required: false
schema:
type: string
example: '3'
- in: query
name: maxPerPage
description: >-
The maximum number of custom responses the client can handle within
one page
required: false
schema:
type: integer
default: 1000
responses:
'200':
description: The global responses for this company
content:
application/json:
schema:
$ref: '#/components/schemas/GlobalResponsesWithVersion'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/responses/customs:
parameters:
- $ref: '#/components/parameters/agentId'
get:
tags:
- AutoCompose
summary: Get custom responses
description: >-
Get custom responses for an agent. Responses are sorted by title, and
folders are sorted by name.
operationId: getCustomResponseCollection
parameters:
- in: query
name: folderId
schema:
type: string
required: false
description: >-
Optional identifier for the ID of the folder containing responses to
be retrieved. If this is omitted, all custom responses are
returned. Data format is expected to be UUID. The special value
'__root' can also be used to retrieve top level folders/responses.
- in: query
name: resourceType
schema:
type: string
enum:
- folders
- responses
- all
default: all
required: false
description: >-
Optional identifier for the ID of the type of responses to be
retrieved. A value of 'folders' will return only folder information
describing the way responses are organized. A value of 'responses'
will return only responses. A value of 'all' will return a mix of
folders and responses. Note that if the folderId parameter is
specified as well, only the resource type identified here that
exists within the specified folder will be returned. If this is
omitted, all resources are returned.
- in: query
name: searchTerm
schema:
type: string
required: false
description: >-
Search term to search for custom responses. This will search for
matching folder names, response text or both, depending on the
resourceType parameter value.
example: greetings
- in: query
name: pageToken
description: >-
This service responds with a set of custom responses. These are
divided into pages, with maxPerPage items in each page. This
parameter is the page token returned in the call prior to this one.
If this is the first call being made, this field should be omitted.
The server will respond with custom responses following the one
previously sent.
required: false
schema:
type: string
example: '3'
- in: query
name: maxPerPage
description: >-
The maximum number of custom responses the client can handle within
one page
required: false
schema:
type: integer
default: 1000
responses:
'200':
description: >-
A collection of custom response lists for this customer, sorted by
agent ID
content:
application/json:
schema:
$ref: '#/components/schemas/Responses'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/responses/customs/folder:
parameters:
- $ref: '#/components/parameters/agentId'
post:
tags:
- AutoCompose
summary: Create a response folder
description: Add a single folder for an agent
operationId: addCustomResponseFolder
requestBody:
description: The folder to be added
content:
application/json:
schema:
$ref: '#/components/schemas/Folder'
required: true
responses:
'200':
description: Acknowledgement that the folder was successfully added
content:
application/json:
schema:
$ref: '#/components/schemas/Folder'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/responses/customs/response:
parameters:
- $ref: '#/components/parameters/agentId'
post:
tags:
- AutoCompose
summary: Create a custom response
description: Add a single custom response for an agent
operationId: addCustomResponse
requestBody:
description: The custom response to be added
content:
application/json:
schema:
$ref: '#/components/schemas/NewCustomResponse'
required: true
responses:
'200':
description: Acknowledgement that the response was successfully added
content:
application/json:
schema:
$ref: '#/components/schemas/Response'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/responses/customs/response/{responseId}:
parameters:
- $ref: '#/components/parameters/agentId'
- $ref: '#/components/parameters/responseId'
put:
tags:
- AutoCompose
summary: Update a custom response
description: Update a specific custom response for an agent
operationId: updateCustomResponse
requestBody:
description: The custom response to be updated
content:
application/json:
schema:
$ref: '#/components/schemas/NewCustomResponse'
required: true
responses:
'200':
description: Acknowledgement that the custom response was successfully updated
content: {}
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
delete:
tags:
- AutoCompose
summary: Delete a custom response
description: Delete a specific custom response for an agent
operationId: deleteCustomResponse
responses:
'200':
description: Acknowledgement that the custom response was successfully deleted
content: {}
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/responses/customs/folder/{folderId}:
parameters:
- $ref: '#/components/parameters/agentId'
- $ref: '#/components/parameters/folderId'
put:
tags:
- AutoCompose
summary: Update a response folder
description: Update a folder for an agent
operationId: updateFolder
requestBody:
description: The folder to be updated
content:
application/json:
schema:
$ref: '#/components/schemas/Folder'
required: true
responses:
'200':
description: Acknowledgement that the folder was successfully updated
content: {}
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
delete:
tags:
- AutoCompose
summary: Delete a response folder
description: Delete a folder for an agent
operationId: deleteFolder
responses:
'200':
description: Acknowledgement that the custom response was successfully deleted
content: {}
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
/autocompose/v1/autopilot/greetings:
parameters:
- $ref: '#/components/parameters/agentId'
get:
tags:
- AutoCompose
summary: Get autopilot greetings
description: Get autopilot greetings for an agent
operationId: getAutopilotGreetings
responses:
'200':
description: The autopilot greetings for this agent
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotGreeting'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/RequestEntityTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
default:
$ref: '#/components/responses/DefaultError'
security:
- API-ID: []
API-Secret: []
put:
tags:
- AutoCompose
summary: Update autopilot greetings
description: Update autopilot greetings for an agent
operationId: updateAutopilotGreetings
requestBody:
description: The updated autopilot greetings
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotGreeting'
required: true
responses:
'200':
description: Acknowledgement that the greetings were success
# --- truncated at 32 KB (206 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/asapp/refs/heads/main/openapi/asapp-openapi-openapi.yml