openapi: 3.2.0
info:
title: Bright Pattern Methods API
version: 1.0.0
contact:
name: Bright Pattern
url: https://www.brightpattern.com/contact/
description: 'Operations tagged Methods across 3 of this provider''s published API definitions: bright-pattern-mobile-web-messaging-v1-openapi.yml, bright-pattern-mobile-web-messaging-v2-openapi.yml, bright-pattern-real-time-statistics-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
security:
- bearerAuth: []
tags:
- name: Methods
paths:
/clientweb/api/v1/availability:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
get:
operationId: checkAvailability
summary: Check Availability
description: 'This method returns the availability status of the configured hours of operation of the associated Messaging/Chat scenario entry. Optionally, Estimated Wait time (EWT) (in seconds) may be returned but could be missing if the server does not have enough data to estimate the EWT value. Note that the API does not check if there are any agents actually logged in.
Status Meanings
Status Name
Description
available
The requested service is available.
notAvailable
The office providing the requested service is currently closed.
Returns
Code
Description
200
Success: Returns the scenario entry’s current status / EWT (optionally)
Errors
Code
Description
403
Forbidden'
tags:
- Methods
parameters:
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
responses:
'200':
description: Check Availability Example
content:
application/json:
example:
chat: <available|notAvailable>
ewt: <estimated wait time in seconds for a chat in state queued>
security:
- bearerAuth: []
/clientweb/api/v1/parameters:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
get:
operationId: expectedParameters
summary: Expected Parameters
description: 'This method returns an array of expected parameters. The parameters are optional. They may be used, for example, to look for the most qualified agents to handle the requested chat sessions and/or to display user information for the agents. These parameters are initially specified for the Messaging/Chat scenario entry through which this mobile application will communicate with the contact center.
Currently, the following parameter types are supported:
PHONE
TEXT
EMAIL
FIRST_NAME
LAST_NAME
ACCOUNT
COMPANY
Returns
Code
Description
200
application/json with names and types of parameters that may be expected from the client application
Errors
Code
Description
403
Forbidden'
tags:
- Methods
parameters:
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
responses:
'200':
description: Expected Parameters Example
content:
application/json:
example:
parameters:
- <name>: <type>
- '...'
security:
- bearerAuth: []
/clientweb/api/v1/chats:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
post:
operationId: requestChat
summary: Request Chat
description: "This method initiates a chat session. It provides values of all or some of the expected parameters, and it may also contain the phone number of the mobile device. Depending on the scenario entry configuration, a callback can be initiated automatically to the specified number as soon as the chat request is delivered to the agent.\n\nNotes:\n\nThe Request Chat method may return the ID and parameters of an existing chat session if there are any currently existing chat sessions associated with this specific client. For example, the client app created a chat session, which was then closed or crashed, then restarted before the session timed out on the server. \n\nThe is_new_chat response attribute is specified if the chat is a new session or existing session. The client application will handle these differently (e.g., if in an existing session the app may request session history and show the previous content.\n\nIf the associated mobile/web scenario entry is not configured for automatic callback, the agent can still use this number to call the mobile user manually, either upon the agent's own initiative or when asked to do this via a chat message from the mobile user.\n\nThe parameter from may be used to specify either the device owner’s name or phone number. It will be placed in the scenario variable $(item.from).\n\nParameters returned in the parameters attribute are propagated into the scenario variable $(item.externalChatData).\n\nOptionally, Estimated Wait time (EWT) (in seconds) may be returned but could be missing if the server does not have enough data to estimate the EWT value. This might be important for the clients with strict JSON serialization (i.e., the client app may fail deserializing the JSON if the attribute is missing).\n\nReturns\n\nCode\nDescription\n\n200\nChat session properties (content type: application/json)\n\nErrors\n\nCode\nDescription\n\n400\nBad request\n\n403\nForbidden"
tags:
- Methods
parameters:
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: Content
in: header
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: string
example: "{\n \"phone_number\":\"<phone number for callback, if necessary>\",\n \"from\":\"<propagated into scenario variable $(item.from)>\",\n \"parameters\":{\n \"parameter_1\":\"value_1\",\n \"...\",\n \"parameter_n\":\"value_n\"\n }\n}"
responses:
'200':
description: Request Chat Example
content:
application/json:
example:
chat_id: <chat ID>
state: <queued|connected|ivr|establishing>
ewt: <estimated wait time for a chat in state queued>
is_new_chat: true|false
phone_number: phone number that will be used for callback
security:
- bearerAuth: []
/clientweb/api/v1/chats/active:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
get:
operationId: getActiveChat
summary: Get Active Chat
description: 'This method returns the properties of an active chat session. Optionally, Estimated Wait time (EWT) (in seconds) may be returned but could be missing if the server does not have enough data to estimate the EWT value.
Returns
Code
Description
200
Chat session properties (content type: application/json)
Errors
Code
Description
403
Forbidden
404
Not found'
tags:
- Methods
parameters:
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
responses:
'200':
description: Get Active Chat Example
content:
application/json:
example:
chat_id: <chat ID>
state: <queued|connected|ivr|establishing>
ewt: <estimated wait time for a chat in state queued>
phone_number: <phone number that will be used for callback>
security:
- bearerAuth: []
/clientweb/api/v1/chats/{chatId}/events:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
post:
operationId: sendEvents
summary: Send Events
description: 'This method sends events from the client to the server side.
Returns
Code
Description
200
Array of new chat events from the server side (content type: application/json)
Errors
Code
Description
403
Forbidden
404
Not found'
tags:
- Methods
parameters:
- name: chatId
in: path
required: true
schema:
type: string
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: string
example: "{\n “events”: [<array of chat events>\n ]\n}"
responses:
'200':
description: Send Events Example
content:
application/json:
example:
events:
- <array of new chat events from server>
security:
- bearerAuth: []
get:
operationId: getNewChatEvents
summary: Get New Chat Events
description: 'This method returns new chat events for the current session. If there are no new events, the server can keep the request active during a timeout (i.e., for about 5–15 seconds). If the client sends another request to get new events while the previous request is kept active, the server will respond with error 400 (Bad request).
Returns
Code
Description
200
Array of chat events (content type: application/json)
Errors
Code
Description
400
Bad request
403
Forbidden
404
Not found'
tags:
- Methods
parameters:
- name: chatId
in: path
required: true
schema:
type: string
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
responses:
'200':
description: Get New Chat Events Example
content:
application/json:
example:
events:
- <array of chat events>
security:
- bearerAuth: []
/clientweb/api/v1/chats/{chatId}/history:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
get:
operationId: getChatHistory
summary: Get Chat History
description: 'This method returns all client events and all server events for the current session. Multiple event objects can be returned; each event''s timestamp attribute can be used to restore the correct message order.
Returns
Code
Description
200
Array of chat events (content type: application/json)
Errors
Code
Description
403
Forbidden
404
Not found'
tags:
- Methods
parameters:
- name: chatId
in: path
required: true
schema:
type: string
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
responses:
'200':
description: Get Chat History Example
content:
application/json:
example:
events:
- <array of chat events>
security:
- bearerAuth: []
/clientweb/api/v1/files:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
post:
operationId: uploadFile
summary: Upload File
description: 'This method uploads a file to the server. The maximum file size is 25 MB. The server will store up to 1000 files. Newly received files will replace the oldest files. This method can be used, for example, to send pictures from the client mobile application to the contact center agents.
Returns
Code
Description
200
File ID to be used in the chat_session_file message (content type: application/json)
Errors
Code
Description
403
Forbidden'
tags:
- Methods
parameters:
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Upload File Example
content:
application/json:
example:
file_id: file ID
security:
- bearerAuth: []
/clientweb/api/v1/chats/{chatId}/files/{fileId}:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
get:
operationId: getFile
summary: Get File
description: 'This method downloads a file from the server using the received file ID. See server event Chat Session File.
Returns
Code
Description
200
File content type
Errors
Code
Description
403
Forbidden
404
Not found'
tags:
- Methods
parameters:
- name: chatId
in: path
required: true
schema:
type: string
- name: fileId
in: path
required: true
schema:
type: string
responses:
'200':
description: Get File Example
content:
application/json:
example: File content type
security:
- bearerAuth: []
/clientweb/api/v1/chats/{chatId}/profilephotos/{partyId}:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
get:
operationId: getAgentProfilePhoto
summary: Get Agent Profile Photo
description: 'This method downloads a profile photo of the specified agent.
Request Body
The request body is the party ID of the agent participating in the current chat session.
Note: The party ID is provided with the chat event (polled at https://{host:port}/clientweb/api/v1/chats/{chatId}/events?tenantUrl={tenantUrl}). For example, you can see party_ID in the event message for chat_session_party_joined.
Returns
Code
Description
200
File content type
Errors
Code
Description
403
Forbidden
404
Not found'
tags:
- Methods
parameters:
- name: chatId
in: path
required: true
schema:
type: string
- name: partyId
in: path
required: true
schema:
type: string
responses:
'200':
description: Get Agent Profile Photo Example
content:
application/json:
example: File content type
security:
- bearerAuth: []
/clientweb/api/v1/iceservers:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
get:
operationId: getIceServers
summary: Get ICE servers
description: 'This method returns a list of configured ICE servers to provide to the browser so that an audio-visual session could be added to the chat.
Returns
Code
Description
200
Success: JSON response with information of ICE servers
Errors
Code
Description
403
Forbidden'
tags:
- Methods
parameters:
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
responses:
'200':
description: Get ICE servers
content:
application/json:
example:
servers:
- url: <url>
username: <(optional) username>
credential: <(optional) password>
security:
- bearerAuth: []
/clientweb/api/v1/configuration:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
get:
operationId: getChatWidgetConfiguration
summary: Get Chat Widget Configuration
description: 'This method returns the chat widget configuration for the launch point.
Returns
Code
Description
200
Success: JSON response with information of ICE servers
Errors
Code
Description
403
Forbidden'
tags:
- Methods
parameters:
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
responses:
'200':
description: Get Chat Widget Configuration
content:
application/json:
example: "{\n \"widgets\":[\n {\n \"name\": \"<widget name>\",\n \"urls\":[\"<url>\", …],\n \"definition\": {\n \"contact_tab\":{\n \"enabled\": true|false,\n \"location\": \"top_left|top_middle|top_right\n |right_top|right_middle|right_bottom\n |bottom_left| bottom_middle|bottom_right\n |left_top|left_middle|left_bottom\",\n \"color\": \"<color>\",\n \"bg_color\": \"color\",\n \"font\": {\n \"family\": \"<font family>\",\n \"size\": \"<font size>\",\n \"style\": \"<font style>\",\n \"weight\": \"<font weight>\" \n },\n \"agents_available_msg\": \"<msg>\",\n \"agents_not_available_msg\": \"<msg>\",\n \"out_of_hours_msg\": \"<msg>\",\n \"show_ewt_out_of_hours\": true|false \n }\n },\n\t \"styles\":{\n\t\t \"style1\":{\n \"contentMargin\" : {\n \"margin\": \"\"\n },\n \"titleFont\" : {\n \"font-family\": \"\",\n \"font-style\": \"\",\n \"font-size\": \"\",\n \"font-weight\": \"\"\t\n },\n \"contactTabFont\" : {\n \"font-family\": \"\",\n \"font-style\": \"\",\n \"font-size\": \"\",\n \"font-weight\": \"\"\t\n },\n \"systemMessage\" : {\n \"background-color\": \"\"\n },\n \"agentMessage\" : {\n \"background-color\": \"\"\n },\n \"widgetBorder\" : {\n \"border\": \"1px solid etc...\",\n \"border-radius\": \"\"\n },\n \"contactTabBorder\": {\n \"border\": \"1px solid etc...\",\n \"border-radius\": \"\"\n },\n \"widgetBackground\" {\n \"background\": \"url(img.png) #fff repeat-y\" \n },\n \"baseFont\": {\n \"font-family\": \"\",\n \"font-style\": \"\",\n \"font-size\": \"\",\n \"font-weight\": \"\",\n \"color\": \"\"\n }, \n \"dialogShadow\": {\n \"box-shadow\":\"\"\n } \n }\n } \n }\n ]\n}\n"
security:
- bearerAuth: []
/clientweb/api/v2/availability:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
get:
operationId: checkAvailability
summary: Check Availability
description: 'This method returns the availability status of the configured hours of operation of the associated Messaging/Chat scenario entry. Optionally, Estimated Wait time (EWT) (in seconds) may be returned but could be missing if the server does not have enough data to estimate the EWT value. Note that the API does not check if there are any agents actually logged in.
Status Meanings
Status Name
Description
available
The requested service is available.
notAvailable
The office providing the requested service is currently closed.
Returns
Code
Description
200
Success: Returns the scenario entry’s current status / EWT (optionally)
Errors
Code
Description
403
Forbidden
503
Service Unavailable'
tags:
- Methods
parameters:
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
responses:
'200':
description: Check Availability Example
content:
application/json:
example:
chat: available
ewt: '3'
security:
- bearerAuth: []
/clientweb/api/v2/parameters:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
get:
operationId: expectedParameters
summary: Expected Parameters
description: 'This method returns an array of expected parameters. The parameters are optional. They may be used, for example, to look for the most qualified agents to handle the requested chat sessions and/or to display user information for the agents. These parameters are initially specified for the Messaging/Chat scenario entry through which this mobile application will communicate with the contact center.
Currently, the following parameter types are supported:
PHONE
TEXT
EMAIL
FIRST_NAME
LAST_NAME
ACCOUNT
COMPANY
Returns
Code
Description
200
application/json with names and types of parameters that may be expected from the client application
Errors
Code
Description
403
Forbidden'
tags:
- Methods
parameters:
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
responses:
'200':
description: Expected Parameters Example
content:
application/json:
example:
parameters:
- <name>: <type>
- '...'
security:
- bearerAuth: []
/clientweb/api/v2/chats:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
post:
operationId: requestChat
summary: Request Chat
description: 'This method initiates a chat session. It provides values of all or some of the expected parameters, and it may also contain the phone number of the mobile device. Depending on the scenario entry configuration, a callback can be initiated automatically to the specified number as soon as the chat request is delivered to the agent.
Notes:
The Request Chat method may return the ID and parameters of an existing chat session if there are any currently existing chat sessions associated with this specific client. For example, the client app created a chat session, which was then closed or crashed, then restarted before the session timed out on the server.
The is_new_chat response attribute is specified if the chat is a new session or existing session. The client application will handle these differently (e.g., if in an existing session the app may request session history and show the previous content.
If the associated mobile/web scenario entry is not configured for automatic callback, the agent can still use this number to call the mobile user manually, either upon the agent''s own initiative or when asked to do this via a chat message from the mobile user.
The parameter from may be used to specify either the device owner’s name or phone number. It will be placed in the scenario variable $(item.from).
Parameters returned in the parameters attribute are propagated into the scenario variable $(item.externalChatData).
Optionally, Estimated Wait time (EWT) (in seconds) may be returned but could be missing if the server does not have enough data to estimate the EWT value. This might be important for the clients with strict JSON serialization (i.e., the client app may fail deserializing the JSON if the attribute is missing).
Returns
Code
Description
200
Chat session properties (content type: application/json)
Errors
Code
Description
403
Forbidden
503
Service Unavailable'
tags:
- Methods
parameters:
- name: tenantUrl
in: query
required: false
schema:
type: string
- name: Content
in: header
required: false
schema:
type: string
- name: User-Agent
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: string
example: "{\n \"phone_number\":\"<phone number for callback, if necessary>\",\n \"from\":\"<propagated into scenario variable $(item.from)>\",\n \"parameters\":{\n \"parameter_1\":\"value_1\",\n \"...\",\n \"parameter_n\":\"value_n\"\n }\n}"
responses:
'200':
description: Request Chat Example
content:
application/json:
example:
state: ivr
ewt: '0'
chat_id: d6c1adc2-385b-42e5-9e0a-1883c2bc5f81
is_new_chat: true
phone_number: '16508888888'
security:
- bearerAuth: []
/clientweb/api/v2/chats/{chatId}/notifications:
servers:
- url: https://{tenant_url}
description: Bright Pattern is multi-tenant; the base host is the customer contact-center tenant domain.
variables:
tenant_url:
default: example.brightpattern.com
description: Your Bright Pattern Contact Center tenant hostname.
post:
operationId: mobileNotificationSubscription
summary: Mobile Notification Subscription
description: 'This method is a client application request for either subscribing to or canceling mobile notifications for a chat session.
Notes
This method should be invoked after invoking the Request Chat method (i.e., the chatId value required for this method is returned in the Request Chat method).
Additionally, this method should be invoked when its device token is changed.
The client application may also opt to stop receiving mobile notifications by using this API method
with an empty JSON body: {}
Request Parameters
The mobile application will specify one of the following parameters, depending on the application’s
operating system and used notification framework.
Parameter Name
Description
ios_apns_device_token
The iOS application using native APNs
ios_app_bundle_id
For iOS devices using native APNs, this parameter is required and is used as the APNs topic
ios_firebase_devi
# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bright-pattern/refs/heads/main/openapi/bright-pattern-methods-api-openapi.yml