Unblu Web API (8.32.3)

Download OpenAPI specification:Download

Unblu Web API v4

The Java libraries containing the web API models and the Jersey client are available on Maven Central and GitHub.
For more information, refer to the project's page on GitHub.

Authentication

basicAuth

Security Scheme Type HTTP
HTTP Authorization Scheme basic

bearerAuth

Security Scheme Type HTTP
HTTP Authorization Scheme bearer

Accounts

With this service the accounts of the unblu system can be managed. Most of the provided interface needs super admin permissions. Especially if the edited account is not the one of the current user.

create

Creates the given entity in the system. The ID of the entity is ignored for create operations, a new one is generated.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The entity to create

$_type
string
Default: "Account"
Value: "Account"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

name
string

The name of the account. Maximum length of 250 characters and can not be empty.

string or Avatar (object)
expand-query-key: avatar
type: ExpandableField

Avatar of the entity: id that can be expanded.

object

A map of localized versions of the name of this entity

object
expand-query-key: configuration
type: Map

The entity's configuration properties. Only contains values when the 'expand' query parameter is used with the value 'configuration'. Not filled in webhook events.

object
expand-query-key: metadata
type: Map

The entity's metadata properties. Only contains values when the 'expand' query parameter is used with the value 'metadata'. Not filled in webhook events.

object
expand-query-key: text
type: Map

The entity's text properties. Only contains values when the 'expand' query parameter is used with the value 'text'. Not filled in webhook events.

Responses

Request samples

Content type
application/json

Create an Account with translations of the name for it

{
  • "$_type": "Account",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "name": "with-translations-test",
  • "avatar": null,
  • "translations": {
    },
  • "configuration": null,
  • "metadata": null,
  • "text": null
}

Response samples

Content type
application/json

Create an Account with translations of the name for it

{
  • "$_type": "Account",
  • "id": "A7d9E_0-c3cC4aoFDb85t6n",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "name": "with-translations-test",
  • "avatar": null,
  • "translations": {
    },
  • "configuration": null,
  • "metadata": null,
  • "text": null
}

createAccountWithNewAdmin

Create a new account with a new admin which will receive an email with the initial password.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

the new account and admin user information

$_type
string
Default: "AccountUserContainer"
Value: "AccountUserContainer"
object (Account)

Model of an account

object (User)

Model of a user. A user is normally an agent and/or a person who manages the system

Responses

Request samples

Content type
application/json

Create an Account and an Admin user for it

{
  • "$_type": "AccountUserContainer",
  • "account": {
    },
  • "adminUser": {
    }
}

Response samples

Content type
application/json
{
  • "$_type": "AccountUserContainer",
  • "account": {
    },
  • "adminUser": {
    }
}

delete

Deletes the account with the given ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
path Parameters
accountId
required
string

The ID of the account which should be deleted

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

disableAccountIngress

Disables ingress for the given account.

Calling this method triggers the ingress deactivation process. This consists of a single step:

  1. Migrate all users of the account to be managed through the built-in Unblu user management system.
Successfully completing the deactivation process changes the getMigrationStatus to DONE_INGRESS_INACTIVE and thegetIngressStatus to GLOBAL
If the deactivation process fails, getMigrationStatus changes to ERROR.
In such a case, use readIngressStatus to retrieve the current status and find the potential source of the problems.

Once you've resolved the issues that caused the deactivation process to fail, use restartIngressMigration to restart the process.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
path Parameters
accountId
required
string

The ID of the account for which ingress should be disabled

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

enableAccountIngress

Enables ingress for the given account. Before calling this method, you must have configured ingress correctly.

Calling this method triggers the ingress activation process. The process consists of the following steps:

  1. Migrate all the users of the account to be managed through ingress single sign-on (SSO).
  2. Check and apply all ingress-related configuration properties.
Successfully completing the activation process changes the getMigrationStatus to DONE_INGRESS_ACTIVE and thegetIngressStatus to ACCOUNT
If the activation process fails, the getMigrationStatus changes to ERROR.
In such a case, use readIngressStatus to retrieve the current status and find the potential source of the problems.

If the process failed because of an invalid configuration, ingress is automatically activated once the configuration has been rectified.
If there was an issue during migration, use restartIngressMigration to restart the process once you've resolved all migration issues.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
path Parameters
accountId
required
string

The ID of the account for which ingress should be enabled

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

getAccountSecret

Returns the account secret for the given account ID.

Only superadmins can call this endpoint for accounts other than their own.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
accountId
required
string

The ID of the account the secret belongs to

Responses

Response samples

Content type
application/json
{
  • "$_type": "AccountSecret",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "secretKey": "string"
}

getByName

Returns an account by the given name or an error, if there is no such account

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
query Parameters
name
string

The name of the account which should be returned

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "Account",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "name": "string",
  • "avatar": "string",
  • "translations": {
    },
  • "configuration": {
    },
  • "metadata": {
    },
  • "text": {
    }
}

getCurrentAccount

Returns the account object of the current logged in user

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "Account",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "name": "string",
  • "avatar": "string",
  • "translations": {
    },
  • "configuration": {
    },
  • "metadata": {
    },
  • "text": {
    }
}

getIngressStatus

Returns the current state of the account ingress configuration.

Use enableAccountIngress to enable account ingress.

Use disableAccountIngress to disable account ingress.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
accountId
required
string

The ID of the account for which the status should be returned

Responses

Response samples

Content type
application/json
{
  • "$_type": "AccountIngressStatus",
  • "enabled": true,
  • "ingressStatus": "ACCOUNT",
  • "migrationStatus": "MIGRATING",
  • "errorDetails": [
    ],
  • "warningDetails": [
    ]
}

getQuotaUsage

Calculates the quota usage values and their corresponding limits for API keys, domains, teams, and users in the current account.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPERVISOR"]
Authorizations:

Responses

Response samples

Content type
application/json
{
  • "$_type": "AccountQuotaUsageData",
  • "apiKeys": {
    },
  • "domains": {
    },
  • "teams": {
    },
  • "users": {
    },
  • "activeExternalWebhooks": {
    },
  • "branches": {
    }
}

getRecordedMinutes

Returns the total length of all conversation recordings made between the given dates over all accounts. If there were no recordings in the given time, the return value is 0.

Only superadmins can call this endpoint for accounts other than their own.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
accountId
required
string

The ID of the account to get the total length of all conversation recordings for.

query Parameters
fromTime
integer <int64>

Date from which to count the conversation recording length. The value is rounded to the beginning of the day.

toTime
integer <int64>

Date to which to count the conversation recording length. The value is rounded to the end of the day.

Responses

Response samples

Content type
application/json
{
  • "$_type": "RecordedMinutesData",
  • "recordedMinutes": 0
}

read

Returns the account with the given ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
path Parameters
accountId
required
string

ID of the account which should be returned

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "Account",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "name": "string",
  • "avatar": "string",
  • "translations": {
    },
  • "configuration": {
    },
  • "metadata": {
    },
  • "text": {
    }
}

readMultiple

Gets a list of accounts with the given IDs. IDs that can't be found are ignored.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The IDs of the accounts to fetch

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
{
  • "$_type": "AccountList",
  • "items": [
    ]
}

restartIngressMigration

Retries the ingress migration process for the given account. This is necessary when main_account#ingress_migration_status is ERROR.

When the service is executed, it updates the ingress_activation_status to MIGRATING. This causes the ingress migration leader selection task to resume the migration.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
path Parameters
accountId
required
string

The ID of the account for which the ingress migration should be restarted

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

search

Search for accounts

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
$_type
string
Default: "AccountQuery"
Value: "AccountQuery"
Array of any (AccountSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (AccountOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "AccountQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "AccountResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

update

Allows to update the current account as admin. If user is super admin, he can also update other accounts

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The account entity to update

$_type
string
Default: "Account"
Value: "Account"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

name
string

The name of the account. Maximum length of 250 characters and can not be empty.

string or Avatar (object)
expand-query-key: avatar
type: ExpandableField

Avatar of the entity: id that can be expanded.

object

A map of localized versions of the name of this entity

object
expand-query-key: configuration
type: Map

The entity's configuration properties. Only contains values when the 'expand' query parameter is used with the value 'configuration'. Not filled in webhook events.

object
expand-query-key: metadata
type: Map

The entity's metadata properties. Only contains values when the 'expand' query parameter is used with the value 'metadata'. Not filled in webhook events.

object
expand-query-key: text
type: Map

The entity's text properties. Only contains values when the 'expand' query parameter is used with the value 'text'. Not filled in webhook events.

Responses

Request samples

Content type
application/json
{
  • "$_type": "Account",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "name": "string",
  • "avatar": "string",
  • "translations": {
    },
  • "configuration": {
    },
  • "metadata": {
    },
  • "text": {
    }
}

Response samples

Content type
application/json
{
  • "$_type": "Account",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "name": "string",
  • "avatar": "string",
  • "translations": {
    },
  • "configuration": {
    },
  • "metadata": {
    },
  • "text": {
    }
}

AnalyticsDashboards

Service for managing analytics dashboards

create

This endpoint is in preview mode.

Creates the specified analytics dashboard. The dashboard's ID is generated automatically, therefore any ID provided in the analytics dashboard entity is ignored.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
status: PREVIEW
Authorizations:
Request Body schema: application/json

The analytics dashboard to create.

$_type
string
Default: "AnalyticsDashboard"
Value: "AnalyticsDashboard"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

name
string

Name of the dashboard. Maximum length of 500 characters. Mandatory.

description
string

Description of the dashboard. Maximum length of 2000 characters. Optional.

initialTimeFrameType
string (EAnalyticsKpiTimeFrameType)
Enum: "GLOBALLY_SYNCED" "TIME_SPAN" "LAST_DAYS" "CUSTOM"
enum-descriptions: ["GLOBALLY_SYNCED: The timeframe is calculated based on dashboard configuration. Available only on widgets.","TIME_SPAN: A fixed time span, ending at the present time.","LAST_DAYS: A fixed number of last days, ending at the present time.","CUSTOM: A custom timeframe specified by a start timestamp and an end timestamp. Available on widgets and data requests."]
initialTimeFrameSpan
string (EAnalyticsKpiFixedTimeFrameSpan)
Enum: "CURRENT_DAY" "WEEK_TO_DATE" "MONTH_TO_DATE" "QUARTER_TO_DATE" "YEAR_TO_DATE"
enum-descriptions: ["CURRENT_DAY: The current day, starting at 00:00, up to the present time.","WEEK_TO_DATE: The current week, starting at 00:00 on Monday, up to the present time.","MONTH_TO_DATE: The current month, starting at 00:00 on the first day of the month, up to the present time.","QUARTER_TO_DATE: The current quarter, starting at 00:00 on the first day of the quarter, up to the present time.","YEAR_TO_DATE: The current year, starting at 00:00 on the first day of the year, up to the present time."]
initialTimeFrameLastDays
integer <int32>

Initial timeframe number of last days. Used by widgets with the GLOBALLY_SYNCED timeframe type. Mandatory when the timeframe type is LAST_DAYS.

initialGranularity
string (EAnalyticsKpiFixedGranularity)
Enum: "MINUTE" "HOUR" "DAY" "WEEK" "MONTH" "WHOLE_TIMEFRAME"
enum-descriptions: ["MINUTE: Minute.","HOUR: Hour.","DAY: Day.","WEEK: Week.","MONTH: Month.","WHOLE_TIMEFRAME: Whole timeframe."]
enabledGlobalFilters
Array of strings (EAnalyticsGlobalFilterType)
Items Enum: "CONVERSATION_TEMPLATE_ID" "CONVERSATION_LOCALE" "INITIAL_ENGAGEMENT_TYPE" "RECIPIENT_ID" "ASSIGNED_AGENT_PERSON_ID" "ASSIGNED_AGENT_TEAM_ID"

Enabled global filters for filtering all widgets of the dashboard simultaneously.

object

A map of localized versions of the dashboard's name and description.

Responses

Request samples

Content type
application/json

create analytics dashboard

{
  • "$_type": "AnalyticsDashboard",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "name": "my-analytics-dashboard-test",
  • "description": null,
  • "initialTimeFrameType": "TIME_SPAN",
  • "initialTimeFrameSpan": "MONTH_TO_DATE",
  • "initialTimeFrameLastDays": null,
  • "initialGranularity": "DAY",
  • "enabledGlobalFilters": null,
  • "translations": null
}

Response samples

Content type
application/json

create analytics dashboard

{
  • "$_type": "AnalyticsDashboard",
  • "id": "D60Uit_ARVWSrAvBEm0q1g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "my-analytics-dashboard-test",
  • "description": null,
  • "initialTimeFrameType": "TIME_SPAN",
  • "initialTimeFrameSpan": "MONTH_TO_DATE",
  • "initialTimeFrameLastDays": null,
  • "initialGranularity": "DAY",
  • "enabledGlobalFilters": [ ],
  • "translations": { }
}

createFromTemplate

This endpoint is in preview mode.

Creates a new dashboard using the specified template.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
status: PREVIEW
Authorizations:
Request Body schema: application/json

The analytics dashboard from template request.

$_type
string
Default: "AnalyticsDashboardFromTemplateRequest"
Value: "AnalyticsDashboardFromTemplateRequest"
template
string (EAnalyticsDashboardTemplateType)
Enum: "SUPPORT" "GENERAL" "ADVISORY" "AGENT"
enum-descriptions: ["SUPPORT: Customer support KPIs related to the queue.","GENERAL: KPIs on the volume of conversations.","ADVISORY: KPIs related to the secure messenger.","AGENT: KPIs of agent personal conversations."]
name
string

Name to use for the dashboard. If not provided, the template name will be used. Optional.

Responses

Request samples

Content type
application/json
{
  • "$_type": "AnalyticsDashboardFromTemplateRequest",
  • "template": "SUPPORT",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "AnalyticsDashboard",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "initialTimeFrameType": "GLOBALLY_SYNCED",
  • "initialTimeFrameSpan": "CURRENT_DAY",
  • "initialTimeFrameLastDays": 0,
  • "initialGranularity": "MINUTE",
  • "enabledGlobalFilters": [
    ],
  • "translations": {
    }
}

delete

This endpoint is in preview mode.

Deletes the analytics dashboard with the specified ID.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
status: PREVIEW
Authorizations:
path Parameters
analyticsDashboardId
required
string

The ID of the analytics dashboard to delete.

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

read

This endpoint is in preview mode.

Returns the analytics dashboard with the specified ID.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
status: PREVIEW
Authorizations:
path Parameters
analyticsDashboardId
required
string

The ID of the analytics dashboard to return.

Responses

Response samples

Content type
application/json
{
  • "$_type": "AnalyticsDashboard",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "initialTimeFrameType": "GLOBALLY_SYNCED",
  • "initialTimeFrameSpan": "CURRENT_DAY",
  • "initialTimeFrameLastDays": 0,
  • "initialGranularity": "MINUTE",
  • "enabledGlobalFilters": [
    ],
  • "translations": {
    }
}

search

This endpoint is in preview mode.

Searches for analytics dashboards matching the specified query.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
status: PREVIEW
Authorizations:
Request Body schema: application/json

The query used for the search.

$_type
string
Default: "AnalyticsDashboardQuery"
Value: "AnalyticsDashboardQuery"
Array of any (AnalyticsDashboardSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (AnalyticsDashboardOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json

search analytics dashboards order by name ascending

{
  • "$_type": "AnalyticsDashboardQuery",
  • "searchFilters": null,
  • "orderBy": [
    ],
  • "offset": null,
  • "limit": null
}

Response samples

Content type
application/json

search analytics dashboards order by name ascending

{
  • "$_type": "AnalyticsDashboardResult",
  • "hasMoreItems": false,
  • "nextOffset": null,
  • "items": [
    ]
}

update

This endpoint is in preview mode.

Updates the analytics dashboard in the system with the provided entity. The update fails if no analytics dashboard exists with the specified ID.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
status: PREVIEW
Authorizations:
Request Body schema: application/json

The details to update the analytics dashboard with.

$_type
string
Default: "AnalyticsDashboard"
Value: "AnalyticsDashboard"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

name
string

Name of the dashboard. Maximum length of 500 characters. Mandatory.

description
string

Description of the dashboard. Maximum length of 2000 characters. Optional.

initialTimeFrameType
string (EAnalyticsKpiTimeFrameType)
Enum: "GLOBALLY_SYNCED" "TIME_SPAN" "LAST_DAYS" "CUSTOM"
enum-descriptions: ["GLOBALLY_SYNCED: The timeframe is calculated based on dashboard configuration. Available only on widgets.","TIME_SPAN: A fixed time span, ending at the present time.","LAST_DAYS: A fixed number of last days, ending at the present time.","CUSTOM: A custom timeframe specified by a start timestamp and an end timestamp. Available on widgets and data requests."]
initialTimeFrameSpan
string (EAnalyticsKpiFixedTimeFrameSpan)
Enum: "CURRENT_DAY" "WEEK_TO_DATE" "MONTH_TO_DATE" "QUARTER_TO_DATE" "YEAR_TO_DATE"
enum-descriptions: ["CURRENT_DAY: The current day, starting at 00:00, up to the present time.","WEEK_TO_DATE: The current week, starting at 00:00 on Monday, up to the present time.","MONTH_TO_DATE: The current month, starting at 00:00 on the first day of the month, up to the present time.","QUARTER_TO_DATE: The current quarter, starting at 00:00 on the first day of the quarter, up to the present time.","YEAR_TO_DATE: The current year, starting at 00:00 on the first day of the year, up to the present time."]
initialTimeFrameLastDays
integer <int32>

Initial timeframe number of last days. Used by widgets with the GLOBALLY_SYNCED timeframe type. Mandatory when the timeframe type is LAST_DAYS.

initialGranularity
string (EAnalyticsKpiFixedGranularity)
Enum: "MINUTE" "HOUR" "DAY" "WEEK" "MONTH" "WHOLE_TIMEFRAME"
enum-descriptions: ["MINUTE: Minute.","HOUR: Hour.","DAY: Day.","WEEK: Week.","MONTH: Month.","WHOLE_TIMEFRAME: Whole timeframe."]
enabledGlobalFilters
Array of strings (EAnalyticsGlobalFilterType)
Items Enum: "CONVERSATION_TEMPLATE_ID" "CONVERSATION_LOCALE" "INITIAL_ENGAGEMENT_TYPE" "RECIPIENT_ID" "ASSIGNED_AGENT_PERSON_ID" "ASSIGNED_AGENT_TEAM_ID"

Enabled global filters for filtering all widgets of the dashboard simultaneously.

object

A map of localized versions of the dashboard's name and description.

Responses

Request samples

Content type
application/json

update analytics dashboard

{
  • "$_type": "AnalyticsDashboard",
  • "id": "D60Uit_ARVWSrAvBEm0q1g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "my-analytics-dashboard-test",
  • "description": null,
  • "initialTimeFrameType": "TIME_SPAN",
  • "initialTimeFrameSpan": "YEAR_TO_DATE",
  • "initialTimeFrameLastDays": null,
  • "initialGranularity": "MONTH",
  • "enabledGlobalFilters": [ ],
  • "translations": { }
}

Response samples

Content type
application/json

create analytics dashboard

{
  • "$_type": "AnalyticsDashboard",
  • "id": "D60Uit_ARVWSrAvBEm0q1g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "my-analytics-dashboard-test",
  • "description": null,
  • "initialTimeFrameType": "TIME_SPAN",
  • "initialTimeFrameSpan": "MONTH_TO_DATE",
  • "initialTimeFrameLastDays": null,
  • "initialGranularity": "DAY",
  • "enabledGlobalFilters": [ ],
  • "translations": { }
}

AnalyticsWidgets

Service for managing analytics widgets

create

This endpoint is in preview mode.

Creates the specified analytics widget. The widget's ID is generated automatically, therefore any ID provided in the analytics widget entity is ignored.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
status: PREVIEW
Authorizations:
Request Body schema: application/json

The analytics widget to create.

$_type
string
Default: "AvgHandlingTimeAnalyticsWidgetData"
Value: "AvgHandlingTimeAnalyticsWidgetData"
id
string

Widget ID.

accountId
string

Account ID the widget belongs to.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity, incremented on each change. Updates must always be based on the latest version or they're rejected. When creating an object, the version can be omitted.

analyticsDashboardId
string

Dashboard ID the widget belongs to.

name
string

Name of the widget. Maximum length of 250 characters. Mandatory.

description
string

Description of the widget. Maximum length of 500 characters. Optional.

kpiType
required
string (EAnalyticsKpiType)
enum-descriptions: ["AVG_WAITING_TIME: KPI for the average waiting time of a visitor.","AVG_HANDLING_TIME: KPI for the average handling time of an agent.","CONVERSATIONS_ENDED_COUNT: KPI for the number of ended conversations.","MESSAGES_COUNT: KPI for the number of messages.","COLLABORATION_LAYERS_COUNT: KPI for the number of collaboration layers.","CALLS_COUNT: KPI for the number of calls."]
row
integer <int32>

Row number where the widget is displayed. Integer value from 1 to 100 (inclusive). Widget placement must be within a 100x6 grid and must not overlap with another widget. Mandatory.

rowSpan
integer <int32>

Displayed row span of the widget. Widget placement must be within a 100x6 grid and must not overlap with another widget. Mandatory.

column
integer <int32>

Column number where the widget is displayed. Integer value from 1 to 6 (inclusive). Widget placement must be within a 100x6 grid and must not overlap with another widget. Mandatory.

columnSpan
integer <int32>

Displayed column span of the widget. Widget placement must be within a 100x6 grid and must not overlap with another widget. Mandatory.

displaySingleValueAggregation
string (EAnalyticsKpiDisplaySingleValueAggregation)
Enum: "SUM" "AVG" "NONE"
enum-descriptions: ["SUM: Summary.","AVG: Average value calculation. If the KPI is count-based, the result is the average per selected granularity (total count divided by the number of time units). If the KPI is value-based, the result is calculated over the entire selected time range.","NONE: No aggregation."]
displaySingleValuePreviousPeriodComparison
boolean

Flag indicating whether a single KPI value for the previous period is displayed for comparison with the current period.

The timeframe used for the previous period depends on the aggregation type:

  • If @code{ displaySingleValueAggregation} is @code{ SUM}, the previous period timeframe is proportional to the elapsed portion of the current timeframe.
  • If @code{ displaySingleValueAggregation} is @code{ AVG}, the entire previous period timeframe is used.

The same filters used for chart data calculation are applied. Grouping is not applied.

displayChart
string (EAnalyticsKpiDisplayChart)
Enum: "LINE" "BAR_VERTICAL" "NONE"
enum-descriptions: ["LINE: Line chart.","BAR_VERTICAL: Vertical bar chart.","NONE: No chart."]
initialTimeFrameType
string (EAnalyticsKpiTimeFrameType)
Enum: "GLOBALLY_SYNCED" "TIME_SPAN" "LAST_DAYS" "CUSTOM"
enum-descriptions: ["GLOBALLY_SYNCED: The timeframe is calculated based on dashboard configuration. Available only on widgets.","TIME_SPAN: A fixed time span, ending at the present time.","LAST_DAYS: A fixed number of last days, ending at the present time.","CUSTOM: A custom timeframe specified by a start timestamp and an end timestamp. Available on widgets and data requests."]
initialTimeFrameSpan
string (EAnalyticsKpiFixedTimeFrameSpan)
Enum: "CURRENT_DAY" "WEEK_TO_DATE" "MONTH_TO_DATE" "QUARTER_TO_DATE" "YEAR_TO_DATE"
enum-descriptions: ["CURRENT_DAY: The current day, starting at 00:00, up to the present time.","WEEK_TO_DATE: The current week, starting at 00:00 on Monday, up to the present time.","MONTH_TO_DATE: The current month, starting at 00:00 on the first day of the month, up to the present time.","QUARTER_TO_DATE: The current quarter, starting at 00:00 on the first day of the quarter, up to the present time.","YEAR_TO_DATE: The current year, starting at 00:00 on the first day of the year, up to the present time."]
initialTimeFrameLastDays
integer <int32>

Initial number of last days for the timeframe. Mandatory if the timeframe type is set to LAST_DAYS.

granularityType
string (EAnalyticsKpiGranularityType)
Enum: "GLOBALLY_SYNCED" "FIXED"
enum-descriptions: ["GLOBALLY_SYNCED: Granularity is calculated based on the dashboard configuration.","FIXED: Widget uses its own fixed granularity configuration."]
fixedGranularity
string (EAnalyticsKpiFixedGranularity)
Enum: "MINUTE" "HOUR" "DAY" "WEEK" "MONTH" "WHOLE_TIMEFRAME"
enum-descriptions: ["MINUTE: Minute.","HOUR: Hour.","DAY: Day.","WEEK: Week.","MONTH: Month.","WHOLE_TIMEFRAME: Whole timeframe."]
object

A map of localized versions of the widget's name and description.

Array of objects (AnalyticsKpiReferenceLine) [ items ]

A list of reference lines displayed on the chart. Must be null if display chart is set to NONE.

filtersType
string (EAnalyticsKpiFiltersType)
Enum: "FIXED" "GLOBALLY_SYNCED"
enum-descriptions: ["FIXED: Only the filters configured for the widget are used for KPI calculation. Global dashboard filters are ignored.","GLOBALLY_SYNCED: Only filters present in both the widget and the global dashboard filters are used for the KPI calculation. Filters not in both sets are ignored."]
groupBy
Array of strings (EAvgHandlingTimeGroupBy)
Items Enum: "CONVERSATION_RECIPIENT_ID" "CONVERSATION_TEMPLATE_ID" "CONVERSATION_LOCALE" "INITIAL_ENGAGEMENT_TYPE" "ASSIGNED_AGENT_PERSON_ID" "ASSIGNED_AGENT_TEAM_ID" "RESOLUTION_TYPE"

Specifies how results are grouped for the average handling time KPI. Currently only the first value of the list is used.

object (AvgHandlingTimeAnalyticsKpiFilterData)

Data model object representing filters for the KPI calculation of average handling time

Filter logic:

  • startTimestamp AND
  • endTimestamp AND
  • conversationTemplateIds AND
  • conversationLocales AND
  • initialEngagementTypes AND
  • (recipientAgentIds OR recipientTeamIds OR recipientNamedAreaIds OR recipientAccountId)
  • resolutionTypes AND
  • usedFeatures AND
  • assignedAgentPersonIds AND
  • assignedAgentTeamIds

Responses

Request samples

Content type
application/json

create analytics widget

{
  • "$_type": "AvgWaitingTimeAnalyticsWidgetData",
  • "id": null,
  • "accountId": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "analyticsDashboardId": "D60Uit_ARVWSrAvBEm0q1g",
  • "name": "my-analytics-widget",
  • "description": null,
  • "kpiType": "AVG_WAITING_TIME",
  • "row": 1,
  • "rowSpan": 1,
  • "column": 1,
  • "columnSpan": 1,
  • "displaySingleValueAggregation": "NONE",
  • "displaySingleValuePreviousPeriodComparison": false,
  • "displayChart": "LINE",
  • "initialTimeFrameType": "TIME_SPAN",
  • "initialTimeFrameSpan": "MONTH_TO_DATE",
  • "initialTimeFrameLastDays": null,
  • "granularityType": "FIXED",
  • "fixedGranularity": "DAY",
  • "translations": null,
  • "referenceLines": [
    ],
  • "filtersType": "FIXED",
  • "groupBy": [
    ],
  • "filters": {
    }
}

Response samples

Content type
application/json

create analytics widget

{
  • "$_type": "AvgWaitingTimeAnalyticsWidgetData",
  • "id": "D60Uit_ARVWSrAvBEm0q1g",
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "analyticsDashboardId": "D60Uit_ARVWSrAvBEm0q1g",
  • "name": "my-analytics-widget",
  • "description": null,
  • "kpiType": "AVG_WAITING_TIME",
  • "row": 1,
  • "rowSpan": 1,
  • "column": 1,
  • "columnSpan": 1,
  • "displaySingleValueAggregation": "NONE",
  • "displaySingleValuePreviousPeriodComparison": false,
  • "displayChart": "LINE",
  • "initialTimeFrameType": "TIME_SPAN",
  • "initialTimeFrameSpan": "MONTH_TO_DATE",
  • "initialTimeFrameLastDays": null,
  • "granularityType": "FIXED",
  • "fixedGranularity": "DAY",
  • "translations": { },
  • "referenceLines": [
    ],
  • "filtersType": "FIXED",
  • "groupBy": [
    ],
  • "filters": {
    }
}

delete

This endpoint is in preview mode.

Deletes the analytics widget with the specified ID.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
status: PREVIEW
Authorizations:
path Parameters
id
required
string

The ID of the analytics widget to delete.

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

read

This endpoint is in preview mode.

Returns the analytics widget with the specified ID.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
status: PREVIEW
Authorizations:
path Parameters
id
required
string

The ID of the analytics widget to return.

Responses

Response samples

Content type
application/json
Example
{
  • "$_type": "AvgHandlingTimeAnalyticsWidgetData",
  • "id": "string",
  • "accountId": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "analyticsDashboardId": "string",
  • "name": "string",
  • "description": "string",
  • "kpiType": "AVG_HANDLING_TIME",
  • "row": 0,
  • "rowSpan": 0,
  • "column": 0,
  • "columnSpan": 0,
  • "displaySingleValueAggregation": "SUM",
  • "displaySingleValuePreviousPeriodComparison": true,
  • "displayChart": "LINE",
  • "initialTimeFrameType": "GLOBALLY_SYNCED",
  • "initialTimeFrameSpan": "CURRENT_DAY",
  • "initialTimeFrameLastDays": 0,
  • "granularityType": "GLOBALLY_SYNCED",
  • "fixedGranularity": "MINUTE",
  • "translations": {
    },
  • "referenceLines": [
    ],
  • "filtersType": "FIXED",
  • "groupBy": [
    ],
  • "filters": {
    }
}

readMultiple

This endpoint is in preview mode.

Returns multiple analytics widgets matching the specified IDs.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
status: PREVIEW
Authorizations:
Request Body schema: application/json

The list of IDs of the analytics widgets to return.

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
{
  • "$_type": "AnalyticsWidgetList",
  • "items": [
    ]
}

search

This endpoint is in preview mode.

Searches for analytics widgets matching the specified query.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
status: PREVIEW
Authorizations:
Request Body schema: application/json

The query used for the search.

$_type
string
Default: "AnalyticsWidgetQuery"
Value: "AnalyticsWidgetQuery"
Array of any (AnalyticsWidgetSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (AnalyticsWidgetOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json

search analytics widgets order by name ascending

{
  • "$_type": "AnalyticsWidgetQuery",
  • "searchFilters": null,
  • "orderBy": [
    ],
  • "offset": null,
  • "limit": null
}

Response samples

Content type
application/json

search analytics widgets order by name ascending

{
  • "$_type": "AnalyticsWidgetResult",
  • "hasMoreItems": false,
  • "nextOffset": null,
  • "items": [
    ]
}

update

This endpoint is in preview mode.

Updates the analytics widget in the system with the provided entity. The update fails if no analytics widget exists with the specified ID.
allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
status: PREVIEW
Authorizations:
Request Body schema: application/json

The details to update the analytics widget with.

$_type
string
Default: "AvgHandlingTimeAnalyticsWidgetData"
Value: "AvgHandlingTimeAnalyticsWidgetData"
id
string

Widget ID.

accountId
string

Account ID the widget belongs to.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity, incremented on each change. Updates must always be based on the latest version or they're rejected. When creating an object, the version can be omitted.

analyticsDashboardId
string

Dashboard ID the widget belongs to.

name
string

Name of the widget. Maximum length of 250 characters. Mandatory.

description
string

Description of the widget. Maximum length of 500 characters. Optional.

kpiType
required
string (EAnalyticsKpiType)
enum-descriptions: ["AVG_WAITING_TIME: KPI for the average waiting time of a visitor.","AVG_HANDLING_TIME: KPI for the average handling time of an agent.","CONVERSATIONS_ENDED_COUNT: KPI for the number of ended conversations.","MESSAGES_COUNT: KPI for the number of messages.","COLLABORATION_LAYERS_COUNT: KPI for the number of collaboration layers.","CALLS_COUNT: KPI for the number of calls."]
row
integer <int32>

Row number where the widget is displayed. Integer value from 1 to 100 (inclusive). Widget placement must be within a 100x6 grid and must not overlap with another widget. Mandatory.

rowSpan
integer <int32>

Displayed row span of the widget. Widget placement must be within a 100x6 grid and must not overlap with another widget. Mandatory.

column
integer <int32>

Column number where the widget is displayed. Integer value from 1 to 6 (inclusive). Widget placement must be within a 100x6 grid and must not overlap with another widget. Mandatory.

columnSpan
integer <int32>

Displayed column span of the widget. Widget placement must be within a 100x6 grid and must not overlap with another widget. Mandatory.

displaySingleValueAggregation
string (EAnalyticsKpiDisplaySingleValueAggregation)
Enum: "SUM" "AVG" "NONE"
enum-descriptions: ["SUM: Summary.","AVG: Average value calculation. If the KPI is count-based, the result is the average per selected granularity (total count divided by the number of time units). If the KPI is value-based, the result is calculated over the entire selected time range.","NONE: No aggregation."]
displaySingleValuePreviousPeriodComparison
boolean

Flag indicating whether a single KPI value for the previous period is displayed for comparison with the current period.

The timeframe used for the previous period depends on the aggregation type:

  • If @code{ displaySingleValueAggregation} is @code{ SUM}, the previous period timeframe is proportional to the elapsed portion of the current timeframe.
  • If @code{ displaySingleValueAggregation} is @code{ AVG}, the entire previous period timeframe is used.

The same filters used for chart data calculation are applied. Grouping is not applied.

displayChart
string (EAnalyticsKpiDisplayChart)
Enum: "LINE" "BAR_VERTICAL" "NONE"
enum-descriptions: ["LINE: Line chart.","BAR_VERTICAL: Vertical bar chart.","NONE: No chart."]
initialTimeFrameType
string (EAnalyticsKpiTimeFrameType)
Enum: "GLOBALLY_SYNCED" "TIME_SPAN" "LAST_DAYS" "CUSTOM"
enum-descriptions: ["GLOBALLY_SYNCED: The timeframe is calculated based on dashboard configuration. Available only on widgets.","TIME_SPAN: A fixed time span, ending at the present time.","LAST_DAYS: A fixed number of last days, ending at the present time.","CUSTOM: A custom timeframe specified by a start timestamp and an end timestamp. Available on widgets and data requests."]
initialTimeFrameSpan
string (EAnalyticsKpiFixedTimeFrameSpan)
Enum: "CURRENT_DAY" "WEEK_TO_DATE" "MONTH_TO_DATE" "QUARTER_TO_DATE" "YEAR_TO_DATE"
enum-descriptions: ["CURRENT_DAY: The current day, starting at 00:00, up to the present time.","WEEK_TO_DATE: The current week, starting at 00:00 on Monday, up to the present time.","MONTH_TO_DATE: The current month, starting at 00:00 on the first day of the month, up to the present time.","QUARTER_TO_DATE: The current quarter, starting at 00:00 on the first day of the quarter, up to the present time.","YEAR_TO_DATE: The current year, starting at 00:00 on the first day of the year, up to the present time."]
initialTimeFrameLastDays
integer <int32>

Initial number of last days for the timeframe. Mandatory if the timeframe type is set to LAST_DAYS.

granularityType
string (EAnalyticsKpiGranularityType)
Enum: "GLOBALLY_SYNCED" "FIXED"
enum-descriptions: ["GLOBALLY_SYNCED: Granularity is calculated based on the dashboard configuration.","FIXED: Widget uses its own fixed granularity configuration."]
fixedGranularity
string (EAnalyticsKpiFixedGranularity)
Enum: "MINUTE" "HOUR" "DAY" "WEEK" "MONTH" "WHOLE_TIMEFRAME"
enum-descriptions: ["MINUTE: Minute.","HOUR: Hour.","DAY: Day.","WEEK: Week.","MONTH: Month.","WHOLE_TIMEFRAME: Whole timeframe."]
object

A map of localized versions of the widget's name and description.

Array of objects (AnalyticsKpiReferenceLine) [ items ]

A list of reference lines displayed on the chart. Must be null if display chart is set to NONE.

filtersType
string (EAnalyticsKpiFiltersType)
Enum: "FIXED" "GLOBALLY_SYNCED"
enum-descriptions: ["FIXED: Only the filters configured for the widget are used for KPI calculation. Global dashboard filters are ignored.","GLOBALLY_SYNCED: Only filters present in both the widget and the global dashboard filters are used for the KPI calculation. Filters not in both sets are ignored."]
groupBy
Array of strings (EAvgHandlingTimeGroupBy)
Items Enum: "CONVERSATION_RECIPIENT_ID" "CONVERSATION_TEMPLATE_ID" "CONVERSATION_LOCALE" "INITIAL_ENGAGEMENT_TYPE" "ASSIGNED_AGENT_PERSON_ID" "ASSIGNED_AGENT_TEAM_ID" "RESOLUTION_TYPE"

Specifies how results are grouped for the average handling time KPI. Currently only the first value of the list is used.

object (AvgHandlingTimeAnalyticsKpiFilterData)

Data model object representing filters for the KPI calculation of average handling time

Filter logic:

  • startTimestamp AND
  • endTimestamp AND
  • conversationTemplateIds AND
  • conversationLocales AND
  • initialEngagementTypes AND
  • (recipientAgentIds OR recipientTeamIds OR recipientNamedAreaIds OR recipientAccountId)
  • resolutionTypes AND
  • usedFeatures AND
  • assignedAgentPersonIds AND
  • assignedAgentTeamIds

Responses

Request samples

Content type
application/json

update analytics widget

{
  • "$_type": "AvgWaitingTimeAnalyticsWidgetData",
  • "id": "D60Uit_ARVWSrAvBEm0q1g",
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "analyticsDashboardId": "D60Uit_ARVWSrAvBEm0q1g",
  • "name": "my-analytics-widget",
  • "description": null,
  • "kpiType": "AVG_WAITING_TIME",
  • "row": 1,
  • "rowSpan": 1,
  • "column": 1,
  • "columnSpan": 1,
  • "displaySingleValueAggregation": "NONE",
  • "displaySingleValuePreviousPeriodComparison": false,
  • "displayChart": "LINE",
  • "initialTimeFrameType": "TIME_SPAN",
  • "initialTimeFrameSpan": "MONTH_TO_DATE",
  • "initialTimeFrameLastDays": null,
  • "granularityType": "FIXED",
  • "fixedGranularity": "DAY",
  • "translations": { },
  • "referenceLines": [
    ],
  • "filtersType": "FIXED",
  • "groupBy": [
    ],
  • "filters": {
    }
}

Response samples

Content type
application/json

update analytics widget

{
  • "$_type": "AvgWaitingTimeAnalyticsWidgetData",
  • "id": "D60Uit_ARVWSrAvBEm0q1g",
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "analyticsDashboardId": "D60Uit_ARVWSrAvBEm0q1g",
  • "name": "my-analytics-widget",
  • "description": null,
  • "kpiType": "AVG_WAITING_TIME",
  • "row": 1,
  • "rowSpan": 1,
  • "column": 1,
  • "columnSpan": 1,
  • "displaySingleValueAggregation": "NONE",
  • "displaySingleValuePreviousPeriodComparison": false,
  • "displayChart": "LINE",
  • "initialTimeFrameType": "TIME_SPAN",
  • "initialTimeFrameSpan": "MONTH_TO_DATE",
  • "initialTimeFrameLastDays": null,
  • "granularityType": "FIXED",
  • "fixedGranularity": "DAY",
  • "translations": { },
  • "referenceLines": [
    ],
  • "filtersType": "FIXED",
  • "groupBy": [
    ],
  • "filters": {
    }
}

ApiKeys

With this service the api keys can be managed

create

Creates the given entity in the system. The ID of the entity is ignored for create operations, a new one is generated.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The entity to create

$_type
string
Default: "ApiKey"
Value: "ApiKey"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

apiKey
string

Api key string. When creating the entity it can be set to a specific value or omitted (in the second case a random value will be generated by the server). Can not be updated.

name
string

Name of the api key. Maximum of 250 characters. Can be omitted, but should not.

description
string

Description of the api key. E.g. where or for what it is used. Maximum of 500 characters. Can be omitted.

object
expand-query-key: configuration
type: Map

The entity's configuration properties. Only contains values when the 'expand' query parameter is used with the value 'configuration'. Not filled in webhook events.

object
expand-query-key: text
type: Map

The entity's text properties. Only contains values when the 'expand' query parameter is used with the value 'text'. Not filled in webhook events.

object
expand-query-key: metadata
type: Map

The entity's metadata properties. Only contains values when the 'expand' query parameter is used with the value 'metadata'. Not filled in webhook events.

Responses

Request samples

Content type
application/json
{
  • "$_type": "ApiKey",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "apiKey": "string",
  • "name": "string",
  • "description": "string",
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "$_type": "ApiKey",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "apiKey": "string",
  • "name": "string",
  • "description": "string",
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

delete

Deletes the API key with the given ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
apiKeyId
required
string

The ID of the API key which should be deleted

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

getByKey

Returns the api key object for the given api key string in the current account

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
apiKey
string

The api key for which the object should be returned

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "ApiKey",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "apiKey": "string",
  • "name": "string",
  • "description": "string",
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

getDefault

Returns the default API key for the current account

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "ApiKey",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "apiKey": "string",
  • "name": "string",
  • "description": "string",
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

read

Returns the API key with the given ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
apiKeyId
required
string

ID of the API key which should be returned

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "ApiKey",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "apiKey": "string",
  • "name": "string",
  • "description": "string",
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

readMultiple

Gets a list of API keys with the given IDs. IDs that can't be found are ignored.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The IDs of the API keys to fetch

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
{
  • "$_type": "ApiKeyList",
  • "items": [
    ]
}

search

Search for api keys in the current account

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
$_type
string
Default: "ApiKeyQuery"
Value: "ApiKeyQuery"
Array of any (ApiKeySearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (ApiKeyOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "ApiKeyQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "ApiKeyResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

update

Updates the entity in the system with the given entity.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The entity to update

$_type
string
Default: "ApiKey"
Value: "ApiKey"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

apiKey
string

Api key string. When creating the entity it can be set to a specific value or omitted (in the second case a random value will be generated by the server). Can not be updated.

name
string

Name of the api key. Maximum of 250 characters. Can be omitted, but should not.

description
string

Description of the api key. E.g. where or for what it is used. Maximum of 500 characters. Can be omitted.

object
expand-query-key: configuration
type: Map

The entity's configuration properties. Only contains values when the 'expand' query parameter is used with the value 'configuration'. Not filled in webhook events.

object
expand-query-key: text
type: Map

The entity's text properties. Only contains values when the 'expand' query parameter is used with the value 'text'. Not filled in webhook events.

object
expand-query-key: metadata
type: Map

The entity's metadata properties. Only contains values when the 'expand' query parameter is used with the value 'metadata'. Not filled in webhook events.

Responses

Request samples

Content type
application/json
{
  • "$_type": "ApiKey",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "apiKey": "string",
  • "name": "string",
  • "description": "string",
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "$_type": "ApiKey",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "apiKey": "string",
  • "name": "string",
  • "description": "string",
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

Audit

Service to search the audit log entries.

search

Search for audit log entries

  • of database entities in the current account for ADMIN role user.
  • of global owner type entities and account entities for SUPERADMIN role user.

required-entry-path: INTERNAL
required-role: ["ADMIN","SUPER_ADMIN"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "AuditChangeQuery"
Value: "AuditChangeQuery"
Array of any (AuditChangeSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (AuditChangeOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "AuditChangeQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "AuditChangeResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

Authenticator

Service to log in with a user or to switch to other accounts/users by impersonating them

authenticateWithToken

Authentication using a previously created authentication token from (createAuthenticationToken). Will create an authentication session if authentication succeeds (includes setting an authentication cookie)

allow-impersonated-access: true
required-entry-path: PUBLIC
required-role: ["ANONYMOUS_USER"]
Authorizations:
query Parameters
authenticationToken
string

token to login with

redirectOnSuccess
string

redirection URL when the operation is successful

redirectOnFailure
string

redirection URL when the operation is not successful

Responses

Response samples

Content type
application/json
{
  • "$_type": "LoginResult",
  • "success": true
}

createAuthenticationToken

Creates a new authentication token, which can later be used for login.

allow-impersonated-access: true
required-entry-path: PUBLIC
required-role: ["ANONYMOUS_USER"]
Authorizations:
Request Body schema: application/json
username
string

The username for which the token is created

password
string

The password of the user to authenticate

tokenTtl
string (EAuthenticationTokenTtl)
Enum: "STANDARD" "EXTENDED"
enum-descriptions: ["STANDARD: Standard authentication token TTL (short-lived default)","EXTENDED: Extended authentication token TTL (longer duration for trusted devices)"]

Responses

Request samples

Content type
application/json

Create a token for a given username and password

{
  • "username": "r@email.com",
  • "password": "L0remPf18!",
  • "tokenTtl": null
}

Response samples

Content type
application/json
{
  • "$_type": "AuthenticationTokenCreationResult",
  • "token": "string",
  • "deviceIdentifier": "string",
  • "cookiePrefix": "string"
}

createAuthenticationTokenForCurrentUser

Creates a new authentication token for the current logged in user.

required-entry-path: PUBLIC
required-role: ["WEBUSER"]
Authorizations:

Responses

Response samples

Content type
application/json
{
  • "$_type": "AuthenticationTokenCreationResult",
  • "token": "string",
  • "deviceIdentifier": "string",
  • "cookiePrefix": "string"
}

getCurrentPerson

Returns the current person

allow-impersonated-access: true
required-entry-path: PUBLIC
required-role: ["ANONYMOUS_USER"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "PersonData",
  • "id": "string",
  • "accountId": "string",
  • "personSource": "USER_DB",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "sourceData": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "username": "string",
  • "nickname": "string",
  • "displayName": "string",
  • "displayNameForAgent": "string",
  • "displayNameForVisitor": "string",
  • "personType": "AGENT",
  • "authorizationRole": "SUPER_ADMIN",
  • "email": "string",
  • "phone": "string",
  • "teamId": "string",
  • "labels": [
    ],
  • "note": "string",
  • "noteLastEditedTimestamp": 0,
  • "noteLastEditedPersonId": "string",
  • "links": [
    ],
  • "avatar": "string",
  • "metadata": {
    }
}

impersonate

Impersonates with another user either via username or userid (one of the two may be null).

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
Request Body schema: application/json
username
string

If set and userid is set to null, the user is searched by the name

userId
string

If set, the username is ignored and the user for the given id is impersonated

keepRole
boolean

If true, the impersonated user keeps the SUPER_ADMIN role even if they don't normally have it.

redirectOnSuccess
string

redirection URL when the operation is successful

redirectOnFailure
string

redirection URL when the operation is not successful

Responses

Request samples

Content type
application/json

Impersonate as user 'admin' without keeping the superadmin rights

{
  • "username": "admin",
  • "userId": null,
  • "keepRole": false,
  • "redirectOnSuccess": null,
  • "redirectOnFailure": null
}

Response samples

Content type
application/json
{
  • "$_type": "LoginResult",
  • "success": true
}

login

Login using username and password credentials. Will create an authentication session if login succeeds (includes setting an authentication cookie)

allow-impersonated-access: true
required-entry-path: PUBLIC
required-role: ["ANONYMOUS_USER"]
Authorizations:
Request Body schema: application/json
username
string

user to use for login

password
string

password to use for login

redirectOnSuccess
string

redirection URL when the operation is successful

redirectOnFailure
string

redirection URL when the operation is not successful

Responses

Request samples

Content type
application/json

Login with username and password

{
  • "username": "r@email.com",
  • "password": "L0remPf18!",
  • "redirectOnSuccess": null,
  • "redirectOnFailure": null
}

Response samples

Content type
application/json
{
  • "$_type": "LoginResult",
  • "success": true
}

loginWithSecureToken

Start a session using a signed JWT as the login credentials. A logout token can be provided in the claim set of the signed JWT. This logout token is stored in the authentication session to be used later for the logoutWithSecureToken call. A new user with the role WEBUSER is created automatically. If authentication is successful, the response includes an authentication cookie; the response body is empty. x-unblu-apikey is a mandatory GET parameter for this operation, even though it is not part of the OpenAPI specification.

allow-impersonated-access: true
required-entry-path: PUBLIC
required-role: ["ANONYMOUS_USER"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "SecureTokenRequest"
Value: "SecureTokenRequest"
token
string
type
string (ESecureTokenType)
Enum: "JWT" "OIDC_ACCESS_TOKEN"
enum-descriptions: ["JWT","OIDC_ACCESS_TOKEN"]

Token type

Responses

Request samples

Content type
application/json
{
  • "$_type": "SecureTokenRequest",
  • "token": "string",
  • "type": "JWT"
}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

logout

Call this to log out the current user and terminate all connections between the calling device and the Collaboration Server pods.

For locally authenticated users, the authentication cookie is removed from the response.

In the case of ID propagation, this endpoint can be used by a proxy or firewall when the user logs out from the webpage that integrates Unblu. The proxy or firewall can use it to terminate all connections between the Collaboration Server and the device being logged out. This also causes the user to no longer appear as online in Unblu. If the endpoint isn't called, the connections are terminated after they time out.
When called for ID propagation, this request should be the last one for the user. No further requests should reach the Unblu server or they may result in the user appearing to be online again.

Be sure to send all of the user's cookies and authentication parameters in the request. This ensures that the device whose connections should be terminated can be identified correctly.

allow-impersonated-access: true
required-entry-path: PUBLIC
required-role: ["ANONYMOUS_USER"]
Authorizations:
Request Body schema: application/json
redirectOnSuccess
string

redirection URL when the operation is successful

Responses

Request samples

Content type
application/json

Logout with a redirection to unblu.com

{}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

logoutWithSecureToken

Call this to log out using a signed JWT containing the logout token in the claim set. Use this to allow backend server(s) to log out from visitor SSO. x-unblu-apikey is a mandatory GET parameter for this operation, even though it is not part of the OpenAPI specification.

allow-impersonated-access: true
required-entry-path: PUBLIC
required-role: ["ANONYMOUS_USER"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "SecureTokenRequest"
Value: "SecureTokenRequest"
token
string
type
string (ESecureTokenType)
Enum: "JWT" "OIDC_ACCESS_TOKEN"
enum-descriptions: ["JWT","OIDC_ACCESS_TOKEN"]

Token type

Responses

Request samples

Content type
application/json
{
  • "$_type": "SecureTokenRequest",
  • "token": "string",
  • "type": "JWT"
}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

resetImpersonation

Resets the current impersonation. Will do nothing if there is no impersonation.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json
redirectOnSuccess
string

redirection URL when the operation is successful. Also if nothing needed to be done.

redirectOnFailure
string

redirection URL when the operation is not successful

Responses

Request samples

Content type
application/json

Reset impersonation and redirect to the Global Configuration page on success

{
  • "redirectOnSuccess": "/app/config-global",
  • "redirectOnFailure": null
}

Response samples

Content type
application/json
{
  • "$_type": "LoginResult",
  • "success": true
}

setDefaultLocale

Changes the language of the current user. It is stored also in the returned cookies
Note: A reload should be done afterwards.

allow-impersonated-access: true
required-entry-path: PUBLIC
required-role: ["ANONYMOUS_USER"]
Authorizations:
Request Body schema: application/json
locale
string

The new locale in the language-tag format (as defined in the IETF BCP 47) which should be used (e.g. en - english, de - german, fr - french, it - italian)

Responses

Request samples

Content type
application/json

Change the default locale to french

{
  • "locale": "fr"
}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

switchToAccount

Switches the account in a given authentication session. If successful, the user is treated, as if he/she was a member of the target account.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
Request Body schema: application/json
accountId
string

the account id to impersonate on

redirectOnSuccess
string

redirection URL when the operation is successful

redirectOnFailure
string

redirection URL when the operation is not successful

Responses

Request samples

Content type
application/json

Switch to account with a redirect to the Account Configuration page on success

{
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "redirectOnSuccess": "/app/config-account",
  • "redirectOnFailure": null
}

Response samples

Content type
application/json
{
  • "$_type": "LoginResult",
  • "success": true
}

Availability

getAgentAvailability

Returns the current availability state for a given user, account, named area, and locale.

required-entry-path: PUBLIC
required-role: ["ANONYMOUS_USER"]
Authorizations:
query Parameters
userId
string

If specified, the availability will be returned for the specified user only

locale
string

The locale in form of a BCP 47 language tag (including the region if available) to check the availability for. If omitted, the service will check the availability of agents who did not filter the queue by language.

namedAreaSiteId
string

The site ID (meta tag or domain) of the named area to check the availability for. If omitted, the service will check the availability of agents who did not filter the queue by named area.

apiKey
string

API key to specify the account; mandatory when called as an anonymous user

ignoreAgentAvailabilityOverride
boolean

If true, the configuration property "com.unblu.agentavailability.availabilityOverride" will be ignored when evaluating agent availability. Defaults to false.

Responses

Response samples

Content type
application/json
{
  • "$_type": "AgentAvailabilityStateData",
  • "availabilityState": "AVAILABLE",
  • "isAvailable": true
}

Avatars

With this service, the avatar pictures can be managed.

read

Returns the avatar with the given ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
avatarId
required
string

ID of the avatar which should be returned

Responses

Response samples

Content type
application/json
{
  • "$_type": "Avatar",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "accountId": "string",
  • "imageZoomFactor": 0,
  • "imageXPositionRatio": 0,
  • "imageYPositionRatio": 0,
  • "imageRotationAngle": 0,
  • "imageData": "string"
}

Bots

Service to manage all kind of bots. Additionally the bots use this service to interact with a conversation/dialog.

cancelDialogBotTypingIndicator

Hides the typing indicator for the dialog bot.
If the typing indicator wasn't displayed, calling the endpoint has no effect.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
dialogToken
string

The token that belongs to the bot's dialog

Responses

Request samples

Content type
application/json
{
  • "dialogToken": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

cancelPendingDialogQuestions

Cancels all pending questions in a bot dialog.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
dialogToken
string

The token belonging to the dialog

Responses

Request samples

Content type
application/json
{
  • "dialogToken": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

cancelPendingQuestion

Cancels a bot's question message. If the message is not from a bot, the call will throw an error.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
conversationId
string

The ID of the conversation the question message was sent to

questionMessageId
string

The ID of the question message that will be canceled

Responses

Request samples

Content type
application/json
{
  • "conversationId": "string",
  • "questionMessageId": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

create

Creates a new dialog bot that can be used for conversation onboarding, reboarding and offboarding.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json

The dialog bot to create.

$_type
string
Default: "CopilotDialogBotData"
Value: "CopilotDialogBotData"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

name
string

Name of the dialog bot. Maximum length of 250 characters. Can not be omitted.

description
string

Description of the dialog bot. Maximum length of 500 characters. Can be omitted.

botPersonId
string

ID of the person representing the bot

onboardingOrder
integer <int32>

Defines the onboarding order of this bot.

If more than one bots want to participate in an onboarding, the one with the lowest order value will go first.

reboardingOrder
integer <int32>

Defines the reboarding order of this bot.

If more than one bots want to participate in an reboarding, the one with the lowest order value will go first.

offboardingOrder
integer <int32>

Defines the offboarding priority of this bot.

If more than one bots want to participate in an offboarding, the one with the lowest order value will go first.

onboardingFilter
string (EBotDialogFilter)
Enum: "VISITORS" "AGENTS" "BOTH" "NONE"
enum-descriptions: ["VISITORS: Only handle dialogs that with visitors as the counterpart.","AGENTS: Only handle dialogs with agents as the counterpart","BOTH: Handle dialogs with both agents and visitors as the counterpart","NONE: Don't handle any dialogs."]
reboardingEnabled
boolean

Defines if this bot can reboard.

A reboarding offer will be sent only if this flag is enabled, giving the bot the chance to be part of the reboarding.

offboardingFilter
string (EBotDialogFilter)
Enum: "VISITORS" "AGENTS" "BOTH" "NONE"
enum-descriptions: ["VISITORS: Only handle dialogs that with visitors as the counterpart.","AGENTS: Only handle dialogs with agents as the counterpart","BOTH: Handle dialogs with both agents and visitors as the counterpart","NONE: Don't handle any dialogs."]
needsCounterpartPresence
boolean

Defines if the counterpart has to be online for the onboarding to start. E.g. if questions have to be answered live.

onTimeoutBehavior
string (EBotDialogTimeoutBehavior)
Enum: "ABORT" "HAND_OFF"
enum-descriptions: ["ABORT: Abort on-boarding the conversation when it comes to timeout. Default for internal bots.","HAND_OFF: Proceed further in on-boarding the conversation when it comes to timeout. Default for external bots."]

Defines what should happen with the conversation when it comes to timeout during on-boarding.
When omitted the default for external bots is set to HAND_OFF.

retryCount
integer <int64>

Defines the number of retries for failed outbound requests. If omitted, the default is 0.

retryDelay
integer <int64>

Defines the delay between retries for failed outbound requests. If omitted, the default is 0.

type
required
string (EBotType)
enum-descriptions: ["COPILOT","CUSTOM"]

Type of a dialog bot

authToken
string

The Authentication Token for the Microsoft Copilot Agent. Maximum length: 2000 characters

copilotId
string

The Copilot Agent ID for selecting the correct copilot. Maximum length: 36 characters

copilotEnvironmentId
string

The Microsoft environment ID. Used by Microsoft Copilot. Maximum length: 2000 characters

active
boolean

Specifies whether the bot is active

outboundEndpoint
string

The endpoint url of the webhook registration. To this url the requests for the webhook events are done. Maximum length of 4000 characters.

Based on the configured filters/flags the following events will be sent to the endpoint:

  • TypedEvent.BOT_ONBOARDING_OFFER: When a person matching the onboarding filter joins a conversation.
  • TypedEvent.BOT_REBOARDING_OFFER: When a person writes a message to an unassigned conversation and the reboardingEnabled flag is set to true.
  • TypedEvent.BOT_OFFBOARDING_OFFER: When a person matching the offboarding filter leaves a conversation or the conversation ends.
  • TypedEvent.BOT_DIALOG_OPENED: When a preaviously accepted bot dialog starts
  • TypedEvent.BOT_DIALOG_MESSAGE: On each message of a previously accepted bot dialog.
  • TypedEvent.BOT_DIALOG_MESSAGE_STATE: On each message state update of a previously accepted bot dialog.
  • TypedEvent.BOT_DIALOG_COUNTERPART_CHANGED: When the counterpart person of dialog changes during a dialog.
  • TypedEvent.BOT_DIALOG_CLOSED: When a previously accepted bot dialog closes.

outboundTimeoutMillis
integer <int64>

The timeout for the requests sent to the outbound endpoint. Mandatory for webhookApiVersion greater than 3.

outboundApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3" "V4"
enum-descriptions: ["V1: Version 1 of the Web-API. Introduced with Unblu 4.x.","V2: Version 2 of the Web-API. Introduced with Unblu 5.","V3: Version 3 of the Web-API. Introduced with Unblu 6.","V4: Version 4 of the Web-API. Introduced with Unblu 8."]

Version of the Web-API. Version of API corresponds to a path element of the request URL. E.g.: /rest/v3/<service>/...

Responses

Callbacks

Request samples

Content type
application/json
Example

Create a new copilot dialog bot

{
  • "$_type": "CopilotDialogBotData",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "name": "adminApi_createBot_botCreated_",
  • "description": null,
  • "botPersonId": "BoL9zZSbQeGGXMfCLxWZ4g",
  • "onboardingOrder": 10,
  • "reboardingOrder": 10,
  • "offboardingOrder": 10,
  • "onboardingFilter": "VISITORS",
  • "reboardingEnabled": false,
  • "offboardingFilter": "NONE",
  • "needsCounterpartPresence": false,
  • "onTimeoutBehavior": "HAND_OFF",
  • "retryCount": null,
  • "retryDelay": null,
  • "type": "COPILOT",
  • "authToken": "some auth token",
  • "copilotId": "Some copilot id",
  • "copilotEnvironmentId": "eaaz3AiSRp6wIB2wGq6L0g",
  • "active": true,
  • "outboundEndpoint": "https://test.unblu.com",
  • "outboundTimeoutMillis": 5000,
  • "outboundApiVersion": "V4"
}

Response samples

Content type
application/json
Example

New copilot dialog bot

{
  • "$_type": "CopilotDialogBotData",
  • "id": "c1a-ED06Dbat9daFBtC4l85",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "adminApi_createBot_botCreated_",
  • "description": null,
  • "botPersonId": "BoL9zZSbQeGGXMfCLxWZ4g",
  • "onboardingOrder": 10,
  • "reboardingOrder": 10,
  • "offboardingOrder": 10,
  • "onboardingFilter": "VISITORS",
  • "reboardingEnabled": false,
  • "offboardingFilter": "NONE",
  • "needsCounterpartPresence": false,
  • "onTimeoutBehavior": "HAND_OFF",
  • "retryCount": 0,
  • "retryDelay": 0,
  • "type": "COPILOT",
  • "authToken": "some auth token",
  • "copilotId": "Some copilot id",
  • "copilotEnvironmentId": "eaaz3AiSRp6wIB2wGq6L0g",
  • "active": true,
  • "outboundEndpoint": "https://test.unblu.com",
  • "outboundTimeoutMillis": 5000,
  • "outboundApiVersion": "V4"
}

Callback payload samples

Callback
Content type
application/json
{
  • "$_type": "BotDialogClosedEvent",
  • "timestamp": 0,
  • "eventType": "string",
  • "accountId": "string",
  • "dialogToken": "string",
  • "conversationId": "string",
  • "counterpartPersonId": "string"
}

delete

Deletes an existing dialog bot

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
dialogBotId
required
string

The ID of the dialog bot which should be deleted

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

dialogMessageDelivered

Marks a message as delivered to the bot.

Note: If the message is also read use the dialogMessageRead end point directly as it will also mark the message as delivered.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
dialogToken
string

The token that belongs to the bot's dialog

messageId
string

The ID of the delivered message

Responses

Request samples

Content type
application/json

Mark a message as delivered

{
  • "dialogToken": "AcviDb210C5BoFd6e_79oan-c-daOogO9iQmqUbgNzZN4X2A",
  • "messageId": "mGesYagET_2GipaDGinA9A"
}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

dialogMessageRead

Marks a message as read to the bot.

Note: This will also mark the message as delivered, if this hasn't happened yet.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
dialogToken
string

The token that belongs to the bot's dialog

messageId
string

The ID of the message that was read

Responses

Request samples

Content type
application/json

Mark a message as read

{
  • "dialogToken": "AcviDb210C5BoFd6e_79oan-c-daOogO9iQmqUbgNzZN4X2A",
  • "messageId": "mGesYagET_2GipaDGinA9A"
}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

finishDialog

Ends the dialog. Depending on the reason given and whether the dialog takes place during onboarding, reboarding, or offboarding, this will have specific effects. See the list below.

Reason: EBotDialogFinishReason.HAND_OFF:

  • Onboarding:
    • Next Bot: a further bot takes over the onboarding.
    • Activate Participation: If no further bots are in the queue the participation is activated. For inbound requests this is the point where the conversation is added to the queue. For PIN conversation and invitations the person is simply placed into the conversation and can actively participate.
  • Reboarding:
    • Next Bot: a further bot takes over the reboarding.
    • Requeue Conversation: If no further bots are in the queue the conversation is put back into the queue.
  • Offboarding:
    • Next Bot: a further bot takes over the offboarding.
    • End Participation: If no further bots are in the queue the participation is ended and the offboarding person can no longer access it.
Reason: EBotDialogFinishReason.SOLVED:
  • Onboarding:
    • Unassign Conversation: The conversation will be put in unassigned state and therefore will not be added to the queue as the problem is solved. New messages to the conversation will start reboarding.
    Reboarding:
    • Unassign Conversation: The conversation will be put in unassigned state and therefore will not be added to the queue as the problem is solved. New messages to the conversation will start reboarding again.
    Offboarding:
    • End Participation: Independent if there are further bots in the queue the participation is ended and the offboarding person can no longer access it.
Reason: EBotDialogFinishReason.ABORTED:
  • Onboarding:
    • Offboard Participant: The participant is directly moved to the offboarding phase and won't be allowed to enter the conversation.
    Reboarding:
    • Unassign Conversation: The participant is directly moved to the offboarding phase and won't be allowed to enter the conversation.
    Offboarding:
    • End Participation: Independent if there are further bots in the queue the participation is ended and the offboarding person can no longer access the conversation.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
dialogToken
string

The dialog token contained in each bot dialog webhook.

reason
string (EBotDialogFinishReason)
Enum: "HAND_OFF" "SOLVED" "ABORTED"
enum-descriptions: ["HAND_OFF: The bot is done with his part and the next bot can to the on-, re- or offboarding.","SOLVED: The problem of the dialog was solved and therefore no further bots are invoked.","ABORTED: The dialog was not successful and the on-, re- or offboarding has to be aborted."]

Reason why a bot finished a dialog.

Responses

Request samples

Content type
application/json

Hand off the dialog to an agent

{
  • "dialogToken": "AcviDb210C5BoFd6e_79oan-c-daOogO9iQmqUbgNzZN4X2A",
  • "reason": "HAND_OFF"
}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

getByName

Searches for an existing dialog bot with the given name.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
name
string

Name of the dialog bot.

Responses

Response samples

Content type
application/json
Example

Dialog bot

{
  • "$_type": "CustomDialogBotData",
  • "id": "c1a-ED06Dbat9daFBtC4l85",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-bot-disabled-",
  • "description": null,
  • "botPersonId": "BoL9zZSbQeGGXMfCLxWZ4g",
  • "onboardingOrder": 10,
  • "reboardingOrder": 10,
  • "offboardingOrder": 10,
  • "onboardingFilter": "NONE",
  • "reboardingEnabled": false,
  • "offboardingFilter": "NONE",
  • "needsCounterpartPresence": false,
  • "onTimeoutBehavior": "HAND_OFF",
  • "retryCount": 0,
  • "retryDelay": 0,
  • "type": "CUSTOM",
  • "webhookStatus": "INACTIVE",
  • "webhookEndpoint": "http://test.webhook.com",
  • "outboundTimeoutMillis": 3000,
  • "webhookApiVersion": "V4",
  • "webhookSecret": null,
  • "messageStateHandledExternally": false,
  • "automaticTypingStateHandlingEnabled": true
}

read

Reads an existing dialog bot.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
dialogBotId
required
string

The ID of the dialog bot.

Responses

Response samples

Content type
application/json
Example

Dialog bot

{
  • "$_type": "CustomDialogBotData",
  • "id": "c1a-ED06Dbat9daFBtC4l85",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-bot-disabled-",
  • "description": null,
  • "botPersonId": "BoL9zZSbQeGGXMfCLxWZ4g",
  • "onboardingOrder": 10,
  • "reboardingOrder": 10,
  • "offboardingOrder": 10,
  • "onboardingFilter": "NONE",
  • "reboardingEnabled": false,
  • "offboardingFilter": "NONE",
  • "needsCounterpartPresence": false,
  • "onTimeoutBehavior": "HAND_OFF",
  • "retryCount": 0,
  • "retryDelay": 0,
  • "type": "CUSTOM",
  • "webhookStatus": "INACTIVE",
  • "webhookEndpoint": "http://test.webhook.com",
  • "outboundTimeoutMillis": 3000,
  • "webhookApiVersion": "V4",
  • "webhookSecret": null,
  • "messageStateHandledExternally": false,
  • "automaticTypingStateHandlingEnabled": true
}

restrictDialogCounterpart

Limits the length of a message the counterpart can send to the bot in a dialog.

The value is reset automatically when the bot hands off the dialog.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
dialogToken
string

The dialog token included in each bot dialog webhook

maxChatInputLength
integer <int32>

The maximum number of characters in a message

Responses

Request samples

Content type
application/json
{
  • "dialogToken": "string",
  • "maxChatInputLength": 0
}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

search

Search for dialog bots in the current account

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "DialogBotQuery"
Value: "DialogBotQuery"
Array of any (DialogBotSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (DialogBotOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "DialogBotQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "DialogBotResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

sendDialogMessage

Sends a message as a bot into an ongoing dialog.

It can only be used after the bot received the BotDialogOpenEvent webhook for this dialog.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json

The message to send

$_type
string
Default: "BotDialogPostMessage"
Value: "BotDialogPostMessage"
dialogToken
string

The token belonging to the dialog the bot wants the message to

any (PostMessageData)

Base class for all conversation messages sent to the collaboration server.

Can be one of CardPostMessageData, FilePostMessageData, ListPostMessageData, MultichoiceQuestionPostMessageData,RatingQuestionPostMessageData, ReplyPostMessageData, TextPostMessageData, TextQuestionPostMessageData orWhatsAppTemplatePostMessageData

Responses

Request samples

Content type
application/json
{
  • "$_type": "BotDialogPostMessage",
  • "dialogToken": "string",
  • "messageData": {
    }
}

Response samples

Content type
application/json
{
  • "$_type": "SendMessageResult",
  • "messageId": "string"
}

sendMessage

Sends a message to a conversation as a bot.

This can be used at any time during a conversation. It is not related to bot dialogs.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json

The message to send

$_type
string
Default: "BotPostMessage"
Value: "BotPostMessage"
conversationId
string

The id of the conversation to which this message belongs to

senderPersonId
string

ID of the bot person that sent the message.

recipientPersonIds
Array of strings

Person IDs of the recipients of the message. If it is null, all active participations are recipients

internal
boolean

Flag indicating whether the message is internal and only visible to agents. If 'false', the message is public and visible for everyone. Cannot be set for REPLY message type.

replyToMessageId
string

Optional ID that identifies the message that this message is replying to

any (PostMessageData)

Base class for all conversation messages sent to the collaboration server.

Can be one of CardPostMessageData, FilePostMessageData, ListPostMessageData, MultichoiceQuestionPostMessageData,RatingQuestionPostMessageData, ReplyPostMessageData, TextPostMessageData, TextQuestionPostMessageData orWhatsAppTemplatePostMessageData

Responses

Request samples

Content type
application/json
Example

Send card message from the bot

{
  • "$_type": "BotPostMessage",
  • "conversationId": "AcviDb210C5BoFd6e_79oan",
  • "senderPersonId": "nta30CBa-6d1a89cE57Db_F",
  • "recipientPersonIds": [
    ],
  • "internal": false,
  • "replyToMessageId": null,
  • "messageData": {
    }
}

Response samples

Content type
application/json
{
  • "$_type": "SendMessageResult",
  • "messageId": "string"
}

sendPing

Emits a WebhookPingEvent or PingRequest on the configured webhook/outbound endpoint for the dialog bot.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
dialogBotId
required
string

The ID of the dialog bot

Responses

Response samples

Content type
application/json
{
  • "$_type": "PingResponse",
  • "pingId": "string"
}

startDialogBotTypingIndicator

Displays a typing indicator for the dialog bot, to show the counterpart person that something is happening.
The typing indicator is removed automatically after four seconds or when the bot sends a message, whichever occurs sooner. If the typing indicator is already displayed, calling this endpoint resets the four second timer.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
dialogToken
string

The token that belongs to the bot's dialog

Responses

Request samples

Content type
application/json
{
  • "dialogToken": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

update

Updates an existing dialog bot.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "CopilotDialogBotData"
Value: "CopilotDialogBotData"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

name
string

Name of the dialog bot. Maximum length of 250 characters. Can not be omitted.

description
string

Description of the dialog bot. Maximum length of 500 characters. Can be omitted.

botPersonId
string

ID of the person representing the bot

onboardingOrder
integer <int32>

Defines the onboarding order of this bot.

If more than one bots want to participate in an onboarding, the one with the lowest order value will go first.

reboardingOrder
integer <int32>

Defines the reboarding order of this bot.

If more than one bots want to participate in an reboarding, the one with the lowest order value will go first.

offboardingOrder
integer <int32>

Defines the offboarding priority of this bot.

If more than one bots want to participate in an offboarding, the one with the lowest order value will go first.

onboardingFilter
string (EBotDialogFilter)
Enum: "VISITORS" "AGENTS" "BOTH" "NONE"
enum-descriptions: ["VISITORS: Only handle dialogs that with visitors as the counterpart.","AGENTS: Only handle dialogs with agents as the counterpart","BOTH: Handle dialogs with both agents and visitors as the counterpart","NONE: Don't handle any dialogs."]
reboardingEnabled
boolean

Defines if this bot can reboard.

A reboarding offer will be sent only if this flag is enabled, giving the bot the chance to be part of the reboarding.

offboardingFilter
string (EBotDialogFilter)
Enum: "VISITORS" "AGENTS" "BOTH" "NONE"
enum-descriptions: ["VISITORS: Only handle dialogs that with visitors as the counterpart.","AGENTS: Only handle dialogs with agents as the counterpart","BOTH: Handle dialogs with both agents and visitors as the counterpart","NONE: Don't handle any dialogs."]
needsCounterpartPresence
boolean

Defines if the counterpart has to be online for the onboarding to start. E.g. if questions have to be answered live.

onTimeoutBehavior
string (EBotDialogTimeoutBehavior)
Enum: "ABORT" "HAND_OFF"
enum-descriptions: ["ABORT: Abort on-boarding the conversation when it comes to timeout. Default for internal bots.","HAND_OFF: Proceed further in on-boarding the conversation when it comes to timeout. Default for external bots."]

Defines what should happen with the conversation when it comes to timeout during on-boarding.
When omitted the default for external bots is set to HAND_OFF.

retryCount
integer <int64>

Defines the number of retries for failed outbound requests. If omitted, the default is 0.

retryDelay
integer <int64>

Defines the delay between retries for failed outbound requests. If omitted, the default is 0.

type
required
string (EBotType)
enum-descriptions: ["COPILOT","CUSTOM"]

Type of a dialog bot

authToken
string

The Authentication Token for the Microsoft Copilot Agent. Maximum length: 2000 characters

copilotId
string

The Copilot Agent ID for selecting the correct copilot. Maximum length: 36 characters

copilotEnvironmentId
string

The Microsoft environment ID. Used by Microsoft Copilot. Maximum length: 2000 characters

active
boolean

Specifies whether the bot is active

outboundEndpoint
string

The endpoint url of the webhook registration. To this url the requests for the webhook events are done. Maximum length of 4000 characters.

Based on the configured filters/flags the following events will be sent to the endpoint:

  • TypedEvent.BOT_ONBOARDING_OFFER: When a person matching the onboarding filter joins a conversation.
  • TypedEvent.BOT_REBOARDING_OFFER: When a person writes a message to an unassigned conversation and the reboardingEnabled flag is set to true.
  • TypedEvent.BOT_OFFBOARDING_OFFER: When a person matching the offboarding filter leaves a conversation or the conversation ends.
  • TypedEvent.BOT_DIALOG_OPENED: When a preaviously accepted bot dialog starts
  • TypedEvent.BOT_DIALOG_MESSAGE: On each message of a previously accepted bot dialog.
  • TypedEvent.BOT_DIALOG_MESSAGE_STATE: On each message state update of a previously accepted bot dialog.
  • TypedEvent.BOT_DIALOG_COUNTERPART_CHANGED: When the counterpart person of dialog changes during a dialog.
  • TypedEvent.BOT_DIALOG_CLOSED: When a previously accepted bot dialog closes.

outboundTimeoutMillis
integer <int64>

The timeout for the requests sent to the outbound endpoint. Mandatory for webhookApiVersion greater than 3.

outboundApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3" "V4"
enum-descriptions: ["V1: Version 1 of the Web-API. Introduced with Unblu 4.x.","V2: Version 2 of the Web-API. Introduced with Unblu 5.","V3: Version 3 of the Web-API. Introduced with Unblu 6.","V4: Version 4 of the Web-API. Introduced with Unblu 8."]

Version of the Web-API. Version of API corresponds to a path element of the request URL. E.g.: /rest/v3/<service>/...

Responses

Request samples

Content type
application/json
Example
{
  • "$_type": "CopilotDialogBotData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "botPersonId": "string",
  • "onboardingOrder": 0,
  • "reboardingOrder": 0,
  • "offboardingOrder": 0,
  • "onboardingFilter": "VISITORS",
  • "reboardingEnabled": true,
  • "offboardingFilter": "VISITORS",
  • "needsCounterpartPresence": true,
  • "onTimeoutBehavior": "ABORT",
  • "retryCount": 0,
  • "retryDelay": 0,
  • "type": "COPILOT",
  • "authToken": "string",
  • "copilotId": "string",
  • "copilotEnvironmentId": "string",
  • "active": true,
  • "outboundEndpoint": "string",
  • "outboundTimeoutMillis": 0,
  • "outboundApiVersion": "V1"
}

Response samples

Content type
application/json
Example
{
  • "$_type": "CopilotDialogBotData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "botPersonId": "string",
  • "onboardingOrder": 0,
  • "reboardingOrder": 0,
  • "offboardingOrder": 0,
  • "onboardingFilter": "VISITORS",
  • "reboardingEnabled": true,
  • "offboardingFilter": "VISITORS",
  • "needsCounterpartPresence": true,
  • "onTimeoutBehavior": "ABORT",
  • "retryCount": 0,
  • "retryDelay": 0,
  • "type": "COPILOT",
  • "authToken": "string",
  • "copilotId": "string",
  • "copilotEnvironmentId": "string",
  • "active": true,
  • "outboundEndpoint": "string",
  • "outboundTimeoutMillis": 0,
  • "outboundApiVersion": "V1"
}

BranchClientStates

Service to manage branch client states

read

Returns the branch client state for the given branch client ID

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
branchClientId
required
string

Responses

Response samples

Content type
application/json
{
  • "$_type": "BranchClientStateData",
  • "branchClientId": "string",
  • "accountId": "string",
  • "key": "string",
  • "name": "string",
  • "state": "AVAILABLE",
  • "activeConversationId": "string",
  • "clientIssues": [
    ]
}

search

Search for branch client states in the current account

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "BranchClientStateDataQuery"
Value: "BranchClientStateDataQuery"
Array of any (BranchClientStateDataSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (BranchClientStateDataOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "BranchClientStateDataQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "BranchClientStateDataResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

BranchClients

Service to manage branch clients

create

Creates a new branch client

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json

The branch client to create

$_type
string
Default: "BranchClientData"
Value: "BranchClientData"
id
string

ID of the branch client

accountId
string

Account ID that the branch client belongs to

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity, incremented on each change. Updates must always be based on the latest version or they're rejected. When creating an object, the version can be omitted.

name
string

Name of the branch client. Maximum of 250 characters. Mandatory.

description
string

Description of the branch client. Maximum of 500 characters. Optional.

object

A Map of localized versions of the name and description of the branch client

branchId
string

The branch ID that the branch client belongs to

branchClientKey
string

Branch Client Key

publicKey
string

Public key for JWT token validation

mainCameraMediaDeviceLabel
string

Media device label of the main branch client camera. The name is provided by the device. Maximum of 250 characters. Optional.

microphoneMediaDeviceLabel
string

Media device label of the branch client microphone. The name is provided by the device. Maximum of 250 characters. Optional.

type
string (EBranchClientType)
Enum: "RECEPTION" "SELF_SERVICE" "MEETING_ROOM" "OTHER"
enum-descriptions: ["RECEPTION","SELF_SERVICE","MEETING_ROOM","OTHER"]
iconId
string

File ID of the icon

x
integer <int32>

X coordinate of the client's icon on the floor plan. 0 marks the left edge of the plan.

y
integer <int32>

Y coordinate of the client's icon on the floor plan. 0 marks the top edge of the plan.

size
integer <int32>

Size of the client's icon on the floor plan

rotation
integer <int32>

Rotation, in degrees, of the client's icon on the floor plan. 0 degree is to the right and the rotation is clockwise.

Array of objects (BranchClientDeviceData) [ items ]

List of all branch client devices that belong to the branch client

Array of objects (BranchClientAuxiliaryCameraData) [ items ]

List of all branch client auxiliary cameras that belong to the branch client

Array of objects (BranchClientLinkData) [ items ]

List of all branch client links that belong to the branch client

Responses

Request samples

Content type
application/json

create branch client

{
  • "$_type": "BranchClientData",
  • "id": null,
  • "accountId": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "name": "my-branch-client",
  • "description": null,
  • "translations": null,
  • "branchId": "C7UoOAHoSEudeCp7La7SpQ",
  • "branchClientKey": "sCNM3bmbTESRtJjrfcxdxg",
  • "publicKey": null,
  • "mainCameraMediaDeviceLabel": "main-camera-device-label",
  • "microphoneMediaDeviceLabel": "microphone-device-label",
  • "type": null,
  • "iconId": null,
  • "x": 0,
  • "y": 0,
  • "size": 20,
  • "rotation": 0,
  • "branchClientDevices": null,
  • "branchClientAuxiliaryCameras": [
    ],
  • "branchClientLinks": [
    ]
}

Response samples

Content type
application/json

create branch client

{
  • "$_type": "BranchClientData",
  • "id": "ZRoWTG9nQAGTniY0eeeqcw",
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "name": "my-branch-client",
  • "description": null,
  • "translations": { },
  • "branchId": "C7UoOAHoSEudeCp7La7SpQ",
  • "branchClientKey": "sCNM3bmbTESRtJjrfcxdxg",
  • "publicKey": "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAo...c8kCAwEAAQ==",
  • "mainCameraMediaDeviceLabel": "main-camera-device-label",
  • "microphoneMediaDeviceLabel": "microphone-device-label",
  • "type": "OTHER",
  • "iconId": null,
  • "x": 0,
  • "y": 0,
  • "size": 20,
  • "rotation": 0,
  • "branchClientDevices": [ ],
  • "branchClientAuxiliaryCameras": [
    ],
  • "branchClientLinks": [
    ]
}

delete

Deletes a branch client

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
branchClientId
required
string

The ID of the branch client to delete

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

generateToken

Generates a new branch client token

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
branchClientId
required
string

The ID of the branch client

Request Body schema: application/json
expiresAt
integer <int64>

Expiration date as a Unix timestamp. Set to 0 if the token shouldn't expire.

Responses

Request samples

Content type
application/json
{
  • "expiresAt": 0
}

Response samples

Content type
application/json
{
  • "$_type": "BranchClientTokenResult",
  • "token": "string",
  • "expiresAt": 0
}

getByBranchId

Gets all the branch clients currently assigned to the given branch

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
branchId
string

The branch ID the branch clients are assigned to

Responses

Request samples

Content type
application/json
{
  • "branchId": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "BranchClientDataList",
  • "items": [
    ]
}

invalidateTokens

Invalidates all tokens that were generated for the given Branch client

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
branchClientId
required
string

The branch client ID for which the tokens should be invalidated

Responses

Response samples

Content type
application/json
{
  • "$_type": "BranchClientData",
  • "id": "string",
  • "accountId": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "name": "string",
  • "description": "string",
  • "translations": {
    },
  • "branchId": "string",
  • "branchClientKey": "string",
  • "publicKey": "string",
  • "mainCameraMediaDeviceLabel": "string",
  • "microphoneMediaDeviceLabel": "string",
  • "type": "RECEPTION",
  • "iconId": "string",
  • "x": 0,
  • "y": 0,
  • "size": 0,
  • "rotation": 0,
  • "branchClientDevices": [
    ],
  • "branchClientAuxiliaryCameras": [
    ],
  • "branchClientLinks": [
    ]
}

read

Returns the branch client for the given ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
branchClientId
required
string

ID of the branch client

Responses

Response samples

Content type
application/json
{
  • "$_type": "BranchClientData",
  • "id": "string",
  • "accountId": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "name": "string",
  • "description": "string",
  • "translations": {
    },
  • "branchId": "string",
  • "branchClientKey": "string",
  • "publicKey": "string",
  • "mainCameraMediaDeviceLabel": "string",
  • "microphoneMediaDeviceLabel": "string",
  • "type": "RECEPTION",
  • "iconId": "string",
  • "x": 0,
  • "y": 0,
  • "size": 0,
  • "rotation": 0,
  • "branchClientDevices": [
    ],
  • "branchClientAuxiliaryCameras": [
    ],
  • "branchClientLinks": [
    ]
}

readMultiple

Returns a list of branch clients for the given branch IDs

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json

The branch IDs to fetch the branch clients for

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
{
  • "$_type": "BranchClientDataList",
  • "items": [
    ]
}

search

Searches for branch clients in the current account

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "BranchClientQuery"
Value: "BranchClientQuery"
Array of any (BranchClientSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (BranchClientOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "BranchClientQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "BranchClientResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

update

Updates a branch client

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json

The branch client to update

$_type
string
Default: "BranchClientData"
Value: "BranchClientData"
id
string

ID of the branch client

accountId
string

Account ID that the branch client belongs to

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity, incremented on each change. Updates must always be based on the latest version or they're rejected. When creating an object, the version can be omitted.

name
string

Name of the branch client. Maximum of 250 characters. Mandatory.

description
string

Description of the branch client. Maximum of 500 characters. Optional.

object

A Map of localized versions of the name and description of the branch client

branchId
string

The branch ID that the branch client belongs to

branchClientKey
string

Branch Client Key

publicKey
string

Public key for JWT token validation

mainCameraMediaDeviceLabel
string

Media device label of the main branch client camera. The name is provided by the device. Maximum of 250 characters. Optional.

microphoneMediaDeviceLabel
string

Media device label of the branch client microphone. The name is provided by the device. Maximum of 250 characters. Optional.

type
string (EBranchClientType)
Enum: "RECEPTION" "SELF_SERVICE" "MEETING_ROOM" "OTHER"
enum-descriptions: ["RECEPTION","SELF_SERVICE","MEETING_ROOM","OTHER"]
iconId
string

File ID of the icon

x
integer <int32>

X coordinate of the client's icon on the floor plan. 0 marks the left edge of the plan.

y
integer <int32>

Y coordinate of the client's icon on the floor plan. 0 marks the top edge of the plan.

size
integer <int32>

Size of the client's icon on the floor plan

rotation
integer <int32>

Rotation, in degrees, of the client's icon on the floor plan. 0 degree is to the right and the rotation is clockwise.

Array of objects (BranchClientDeviceData) [ items ]

List of all branch client devices that belong to the branch client

Array of objects (BranchClientAuxiliaryCameraData) [ items ]

List of all branch client auxiliary cameras that belong to the branch client

Array of objects (BranchClientLinkData) [ items ]

List of all branch client links that belong to the branch client

Responses

Request samples

Content type
application/json

update branch client

{
  • "$_type": "BranchClientData",
  • "id": null,
  • "accountId": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "name": "my-branch-client",
  • "description": null,
  • "translations": null,
  • "branchId": "C7UoOAHoSEudeCp7La7SpQ",
  • "branchClientKey": "sCNM3bmbTESRtJjrfcxdxg",
  • "publicKey": null,
  • "mainCameraMediaDeviceLabel": "main-camera-device-label",
  • "microphoneMediaDeviceLabel": "microphone-device-label",
  • "type": null,
  • "iconId": null,
  • "x": 0,
  • "y": 0,
  • "size": 20,
  • "rotation": 0,
  • "branchClientDevices": null,
  • "branchClientAuxiliaryCameras": [
    ],
  • "branchClientLinks": [
    ]
}

Response samples

Content type
application/json

update branch client

{
  • "$_type": "BranchClientData",
  • "id": "ZRoWTG9nQAGTniY0eeeqcw",
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "name": "my-branch-client",
  • "description": null,
  • "translations": { },
  • "branchId": "C7UoOAHoSEudeCp7La7SpQ",
  • "branchClientKey": "sCNM3bmbTESRtJjrfcxdxg",
  • "publicKey": "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAo...c8kCAwEAAQ==",
  • "mainCameraMediaDeviceLabel": "main-camera-device-label",
  • "microphoneMediaDeviceLabel": "microphone-device-label",
  • "type": "OTHER",
  • "iconId": null,
  • "x": 0,
  • "y": 0,
  • "size": 20,
  • "rotation": 0,
  • "branchClientDevices": [ ],
  • "branchClientAuxiliaryCameras": [
    ],
  • "branchClientLinks": [ ]
}

Branches

Service to manage branches

create

Creates a new branch

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The branch to create

$_type
string
Default: "BranchData"
Value: "BranchData"
id
string

ID of the branch

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

accountId
string

Account ID the branch belongs to

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity, incremented on each change. Updates must always be based on the latest version or they're rejected. When creating an object, the version can be omitted.

name
string

Name of the branch. Maximum of 250 characters. Mandatory.

description
string

Description of the branch. Maximum of 500 characters. Optional.

streetAddress
string

Street address including the street number. Maximum of 250 characters. Optional.

zip
string

Zip code. Maximum of 20 characters. Optional.

city
string

City. Maximum of 250 characters. Optional.

region
string

Region. Maximum of 250 characters. Optional.

country
string

Country. Maximum of 250 characters. Optional.

object

A Map of localized versions of the name, description and info of the branch

state
string (EBranchState)
Enum: "ACTIVE" "MAINTENANCE" "INACTIVE"
enum-descriptions: ["ACTIVE: Branch is fully active and can be used","MAINTENANCE: Branch is currently under maintenance and isn't fully accessible for agents. Technicians can access the branch to configure it and to test functionality.","INACTIVE: Branch is inactive and cannot be used"]
string or Image (object)
expand-query-key: floorPlanImage
type: ExpandableField

Image of the entity: ID that can be expanded.

width
integer <int32>

Width of the floor plan. Derived from the uploaded image if not set.

height
integer <int32>

Height of the floor plan. Derived from the uploaded image if not set.

displayLabelsOnFloorPlan
boolean

Display the labels of branch elements inside the floor plan. False if not explicitly set.

Array of objects (BranchClientData) [ items ]

List of all branch clients that are assigned to the branch

Array of objects (BranchDeviceData) [ items ]

List of all branch devices that belong to the branch

Array of objects (BranchTextBoxData) [ items ]

List of all branch text boxes that belong to the branch

Array of objects (BranchLinkData) [ items ]

List of all branch links that belong to the branch

Responses

Request samples

Content type
application/json

create branch

{
  • "$_type": "BranchData",
  • "id": null,
  • "creationTimestamp": null,
  • "accountId": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "name": "my-branch",
  • "description": null,
  • "streetAddress": "Gartenstrasse 143",
  • "zip": "4052",
  • "city": "Basel",
  • "region": "Basel-Stadt",
  • "country": "Schweiz",
  • "translations": null,
  • "state": "ACTIVE",
  • "floorPlanImage": null,
  • "width": 1000,
  • "height": 1000,
  • "displayLabelsOnFloorPlan": null,
  • "branchClients": [
    ],
  • "branchDevices": [
    ],
  • "branchTextBoxes": [
    ],
  • "branchLinks": [
    ]
}

Response samples

Content type
application/json

create branch

{
  • "$_type": "BranchData",
  • "id": "C7UoOAHoSEudeCp7La7SpQ",
  • "creationTimestamp": 1546300800000,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "name": "my-branch",
  • "description": null,
  • "streetAddress": "Gartenstrasse 143",
  • "zip": "4052",
  • "city": "Basel",
  • "region": "Basel-Stadt",
  • "country": "Schweiz",
  • "translations": { },
  • "state": "ACTIVE",
  • "floorPlanImage": null,
  • "width": 1000,
  • "height": 1000,
  • "displayLabelsOnFloorPlan": false,
  • "branchClients": [
    ],
  • "branchDevices": [
    ],
  • "branchTextBoxes": [
    ],
  • "branchLinks": [
    ]
}

delete

Deletes a branch. This will also delete all related branch clients.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
branchId
required
string

The ID of the branch to delete

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

read

Returns the branch for the given branch ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
branchId
required
string

ID of the branch

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "BranchData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "accountId": "string",
  • "modificationTimestamp": 0,
  • "version": 0,
  • "name": "string",
  • "description": "string",
  • "streetAddress": "string",
  • "zip": "string",
  • "city": "string",
  • "region": "string",
  • "country": "string",
  • "translations": {
    },
  • "state": "ACTIVE",
  • "floorPlanImage": "string",
  • "width": 0,
  • "height": 0,
  • "displayLabelsOnFloorPlan": true,
  • "branchClients": [
    ],
  • "branchDevices": [
    ],
  • "branchTextBoxes": [
    ],
  • "branchLinks": [
    ]
}

readMultiple

Gets a list of branches for the given IDs

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json

The IDs to fetch the branches for

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
{
  • "$_type": "BranchDataList",
  • "items": [
    ]
}

search

Searches for branches in the current account

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "BranchQuery"
Value: "BranchQuery"
Array of any (BranchSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (BranchOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "BranchQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "BranchResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

update

Updates a branch

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The branch to update

$_type
string
Default: "BranchData"
Value: "BranchData"
id
string

ID of the branch

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

accountId
string

Account ID the branch belongs to

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity, incremented on each change. Updates must always be based on the latest version or they're rejected. When creating an object, the version can be omitted.

name
string

Name of the branch. Maximum of 250 characters. Mandatory.

description
string

Description of the branch. Maximum of 500 characters. Optional.

streetAddress
string

Street address including the street number. Maximum of 250 characters. Optional.

zip
string

Zip code. Maximum of 20 characters. Optional.

city
string

City. Maximum of 250 characters. Optional.

region
string

Region. Maximum of 250 characters. Optional.

country
string

Country. Maximum of 250 characters. Optional.

object

A Map of localized versions of the name, description and info of the branch

state
string (EBranchState)
Enum: "ACTIVE" "MAINTENANCE" "INACTIVE"
enum-descriptions: ["ACTIVE: Branch is fully active and can be used","MAINTENANCE: Branch is currently under maintenance and isn't fully accessible for agents. Technicians can access the branch to configure it and to test functionality.","INACTIVE: Branch is inactive and cannot be used"]
string or Image (object)
expand-query-key: floorPlanImage
type: ExpandableField

Image of the entity: ID that can be expanded.

width
integer <int32>

Width of the floor plan. Derived from the uploaded image if not set.

height
integer <int32>

Height of the floor plan. Derived from the uploaded image if not set.

displayLabelsOnFloorPlan
boolean

Display the labels of branch elements inside the floor plan. False if not explicitly set.

Array of objects (BranchClientData) [ items ]

List of all branch clients that are assigned to the branch

Array of objects (BranchDeviceData) [ items ]

List of all branch devices that belong to the branch

Array of objects (BranchTextBoxData) [ items ]

List of all branch text boxes that belong to the branch

Array of objects (BranchLinkData) [ items ]

List of all branch links that belong to the branch

Responses

Request samples

Content type
application/json

update branch

{
  • "$_type": "BranchData",
  • "id": null,
  • "creationTimestamp": null,
  • "accountId": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "name": "my-branch",
  • "description": null,
  • "streetAddress": "Gartenstrasse 143",
  • "zip": "4052",
  • "city": "Basel",
  • "region": "Basel-Stadt",
  • "country": "Schweiz",
  • "translations": null,
  • "state": "ACTIVE",
  • "floorPlanImage": null,
  • "width": 1000,
  • "height": 1000,
  • "displayLabelsOnFloorPlan": null,
  • "branchClients": [
    ],
  • "branchDevices": [
    ],
  • "branchTextBoxes": [
    ],
  • "branchLinks": [
    ]
}

Response samples

Content type
application/json

update branch

{
  • "$_type": "BranchData",
  • "id": "C7UoOAHoSEudeCp7La7SpQ",
  • "creationTimestamp": 1546300800000,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "name": "my-branch",
  • "description": null,
  • "streetAddress": "Gartenstrasse 143",
  • "zip": "4052",
  • "city": "Basel",
  • "region": "Basel-Stadt",
  • "country": "Schweiz",
  • "translations": { },
  • "state": "ACTIVE",
  • "floorPlanImage": null,
  • "width": 1000,
  • "height": 1000,
  • "displayLabelsOnFloorPlan": false,
  • "branchClients": [ ],
  • "branchDevices": [
    ],
  • "branchTextBoxes": [
    ],
  • "branchLinks": [
    ]
}

Calls

Manages all Calls

read

Returns the call with the given ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
callId
required
string

Responses

Response samples

Content type
application/json
{
  • "$_type": "Call",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "accountId": "string",
  • "conversationId": "string",
  • "serviceProviderCallId": "string",
  • "serviceProviderType": "ACS",
  • "initiatorPersonId": "string",
  • "callType": "AUDIO",
  • "initiationTimestamp": 0,
  • "acceptTimestamp": 0,
  • "establishedTimestamp": 0,
  • "endTimestamp": 0,
  • "endReason": "NOT_ANSWERED",
  • "participations": [
    ]
}

search

Search for call logs in the current account

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "CallQuery"
Value: "CallQuery"
Array of any (CallSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (CallOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "CallQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "CallResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

CannedResponses

Service to manage canned responses.
The canned responses a user can edit and the ones they can use in chats can differ. The ones they can edit depend on their role. The ones they can use in a chat depend on their role as well as the team setup. Refer to the following policies for the list of canned responses available for chat:

  • All canned responses of the own user.
  • All canned responses of the team cascade (the user's team and all of its parent teams)
  • All canned responses of the subteams if role is: SUPERVISOR or higher.
  • All canned responses of all teams if role is: ADMIN or higher.
  • All canned responses of the users account.
Compare that to list of policies for creating, editing, and deleting canned responses:
  • All canned responses of the own user.
  • All canned responses of the subteams if role is: SUPERVISOR or higher.
  • All canned responses of all teams if role is: ADMIN or higher.
  • All canned responses of the users account if role is: ADMIN or higher.

create

Creates the given entity in the system. The ID of the entity is ignored for create operations, a new one is generated.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json

The entity to create

$_type
string
Default: "CannedResponse"
Value: "CannedResponse"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

ownerId
string

Id of the owner of the entity. Can not be omitted.

ownerType
string (EPropertyOwnerType)
Enum: "GLOBAL" "ACCOUNT" "TEAM" "USER" "AREA" "APIKEY" "PERSON" "CONVERSATION" "CONVERSATION_TEMPLATE" "EXTERNAL_MESSENGER_CHANNEL" "CUSTOM_ACTION"
enum-descriptions: ["GLOBAL: Global system is owner","ACCOUNT: Account is owner","TEAM: Team is owner","USER: User is owner","AREA: NamedArea is owner","APIKEY: ApiKey is owner","PERSON: Person","CONVERSATION: Conversation","CONVERSATION_TEMPLATE: Conversation template","EXTERNAL_MESSENGER_CHANNEL: External messenger channel","CUSTOM_ACTION: Custom action"]

Type of an owner of an entity

Array of objects (Placeholder) [ items ]
title
string

The title of a canned response as unique identifier. Maximum of 250 characters.

text
string

The text of a canned response. Can be omitted, but should not.

language
string

The language of a canned response, specified using the language tag format as defined in IETF BCP 47. This field can be omitted, but doing so may lead to behavior that doesn't matches users' expectations.

Only canned responses matching a conversation's language are displayed in the UI.
The following rules apply:

  • Canned response with no language defined are displayed for all conversations.
  • If the conversation language (e.g. "en-us") is more specific than the language of the canned response (e.g. "en"), the canned response is also displayed.
  • If the language of the canned response (e.g. "en-us") is more specific than the conversation language (e.g. "en"), the canned response isn't displayed.

Responses

Request samples

Content type
application/json
Example

Create a new canned response for the account

{
  • "$_type": "CannedResponse",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "ownerId": null,
  • "ownerType": "ACCOUNT",
  • "placeholders": [ ],
  • "title": "Have a nice day",
  • "text": "It was great chatting with you, have a nice day!",
  • "language": "en"
}

Response samples

Content type
application/json
Example

New canned response for the account

{
  • "$_type": "CannedResponse",
  • "id": "EasFde6CRn83pnBCec_4Ds0",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "ownerId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "ownerType": "ACCOUNT",
  • "placeholders": [ ],
  • "title": "Have a nice day",
  • "text": "It was great chatting with you, have a nice day!",
  • "language": "en"
}

delete

Deletes the canned response with the given ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
cannedResponseId
required
string

The ID of the canned response to delete

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

read

Returns the canned response with the given ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
cannedResponseId
required
string

ID of the canned response to return

Responses

Response samples

Content type
application/json
{
  • "$_type": "CannedResponse",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "ownerId": "string",
  • "ownerType": "GLOBAL",
  • "placeholders": [
    ],
  • "title": "string",
  • "text": "string",
  • "language": "string"
}

readMultiple

Gets a list of canned responses for the given IDs

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json

The IDs for which the canned responses should be fetched

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
{
  • "$_type": "CannedResponseList",
  • "items": [
    ]
}

search

Search for canned responses according to the policy that applies to the user making the API call

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "CannedResponseQuery"
Value: "CannedResponseQuery"
Array of any (CannedResponseSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (CannedResponseOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "CannedResponseQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "CannedResponseResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

update

Updates the entity in the system with the given entity.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json

The entity to update

$_type
string
Default: "CannedResponse"
Value: "CannedResponse"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

ownerId
string

Id of the owner of the entity. Can not be omitted.

ownerType
string (EPropertyOwnerType)
Enum: "GLOBAL" "ACCOUNT" "TEAM" "USER" "AREA" "APIKEY" "PERSON" "CONVERSATION" "CONVERSATION_TEMPLATE" "EXTERNAL_MESSENGER_CHANNEL" "CUSTOM_ACTION"
enum-descriptions: ["GLOBAL: Global system is owner","ACCOUNT: Account is owner","TEAM: Team is owner","USER: User is owner","AREA: NamedArea is owner","APIKEY: ApiKey is owner","PERSON: Person","CONVERSATION: Conversation","CONVERSATION_TEMPLATE: Conversation template","EXTERNAL_MESSENGER_CHANNEL: External messenger channel","CUSTOM_ACTION: Custom action"]

Type of an owner of an entity

Array of objects (Placeholder) [ items ]
title
string

The title of a canned response as unique identifier. Maximum of 250 characters.

text
string

The text of a canned response. Can be omitted, but should not.

language
string

The language of a canned response, specified using the language tag format as defined in IETF BCP 47. This field can be omitted, but doing so may lead to behavior that doesn't matches users' expectations.

Only canned responses matching a conversation's language are displayed in the UI.
The following rules apply:

  • Canned response with no language defined are displayed for all conversations.
  • If the conversation language (e.g. "en-us") is more specific than the language of the canned response (e.g. "en"), the canned response is also displayed.
  • If the language of the canned response (e.g. "en-us") is more specific than the conversation language (e.g. "en"), the canned response isn't displayed.

Responses

Request samples

Content type
application/json
{
  • "$_type": "CannedResponse",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "ownerId": "string",
  • "ownerType": "GLOBAL",
  • "placeholders": [
    ],
  • "title": "string",
  • "text": "string",
  • "language": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "CannedResponse",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "ownerId": "string",
  • "ownerType": "GLOBAL",
  • "placeholders": [
    ],
  • "title": "string",
  • "text": "string",
  • "language": "string"
}

CannedResponsesUsage

Service for Canned Response Usage

count

Retrieve the number of canned response usages according to the search filter provided

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json

to use for the search

$_type
string
Default: "CannedResponseUsageCountQuery"
Value: "CannedResponseUsageCountQuery"
Array of any (CannedResponseUsageSearchFilter) [ items ]

List of filters to narrow the search of entities

Responses

Request samples

Content type
application/json
{
  • "$_type": "CannedResponseUsageCountQuery",
  • "searchFilters": [
    ]
}

Response samples

Content type
application/json
{
  • "$_type": "CountResult",
  • "count": 0
}

search

Search for usages of canned responses

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
Request Body schema: application/json

to use for the search

$_type
string
Default: "CannedResponseUsageQuery"
Value: "CannedResponseUsageQuery"
Array of any (CannedResponseUsageSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (CannedResponseUsageOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "CannedResponseUsageQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "CannedResponseUsageResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

CollaborationLayerEvents

search

Search for collaboration layer events in the current account

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "CollaborationLayerEventQuery"
Value: "CollaborationLayerEventQuery"
Array of any (CollaborationLayerEventSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (CollaborationLayerEventOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
Example

Search for Collaboration Layer Event with all possible filters

{
  • "$_type": "CollaborationLayerEventQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 1
}

Response samples

Content type
application/json
{
  • "$_type": "CollaborationLayerEventResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

CollaborationLayerLogs

Service to manage all kind of collaboration layer log entries.

search

Search for CollaborationLayerLogEntry in the current account

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
$_type
string
Default: "CollaborationLayerLogEntryQuery"
Value: "CollaborationLayerLogEntryQuery"
Array of any (CollaborationLayerLogEntrySearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (CollaborationLayerLogEntryOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
Example

Search for Collaboration Layer Log Entry with all possible filters

{
  • "$_type": "CollaborationLayerLogEntryQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 1
}

Response samples

Content type
application/json
{
  • "$_type": "CollaborationLayerLogEntryResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

ConversationAccessInterceptors

Service to manage conversation access interceptors

create

Creates a new conversation access interceptor

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "ConversationAccessInterceptorData"
Value: "ConversationAccessInterceptorData"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

name
string

A model representing a conversation access interceptor. These interceptors are used to approve or reject an attempt to join a conversation. Mandatory.

description
string

Description of the conversation access interceptor. Maximum length of 500 characters.

timeoutBehavior
string (EConversationAccessInterceptorTimeoutBehavior)
Enum: "REJECT" "CONTINUE"
enum-descriptions: ["REJECT: Reject the access attempt when a timeout occurs","CONTINUE: Grant access to the conversation when a timeout occurs"]

What should happen with a message when a timeout occurs during interception.
If omitted, the value REJECT is used.

interceptedOpeningTypes
Array of strings (EConversationAccessType)
Items Enum: "ACCESS_AS_VISITOR_PARTICIPANT" "ACCESS_AS_AGENT_PARTICIPANT" "ACCESS_AS_GHOST_PARTICIPANT" "ACCESS_AS_GHOST_WITHOUT_PARTICIPATION"

Defines the different ways in which a conversation can be opened and which of these are intercepted. Mandatory.

outboundEndpoint
string

The URL of the outbound request registration endpoint. Requests for outbound request events are sent to this URL. Maximum length of 4000 characters. Mandatory.

The following event is sent to the endpoint:

  • The OutboundRequest.ServiceNameConstants#CONVERSATION_ACCESS_INTERCEPTOR_ACCESS_CONVERSATION event is sent to the endpoint every time a conversation is opened in an Unblu UI.

outboundStatus
string (EOutboundEndpointStatus)
Enum: "ENABLED" "DISABLED"
enum-descriptions: ["ENABLED: The endpoint is enabled and calls are allowed.","DISABLED: The endpoint is disabled and calls should be avoided, since they won't work."]

The status of an Outbound Web-API endpoint.

outboundSecret
string

Optional secret sent with each outbound event. Mandatory.

Maximum length of 4000 characters.

outboundApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3" "V4"
enum-descriptions: ["V1: Version 1 of the Web-API. Introduced with Unblu 4.x.","V2: Version 2 of the Web-API. Introduced with Unblu 5.","V3: Version 3 of the Web-API. Introduced with Unblu 6.","V4: Version 4 of the Web-API. Introduced with Unblu 8."]

Version of the Web-API. Version of API corresponds to a path element of the request URL. E.g.: /rest/v3/<service>/...

retryCount
integer <int64>

Defines the number of retries for failed outbound requests. If omitted, it defaults to 0.

retryDelay
integer <int64>

Defines the delay between retries for failed outbound requests. If omitted, it defaults to 0.

order
integer <int64>

Order of execution of the file upload interceptor among all the file upload interceptors configured in the account. Mandatory.

timeoutMillis
integer <int64>

A long for the amount of miliseconds until the timeout of the interceptor occurs.

Responses

Request samples

Content type
application/json

Create a new conversation access interceptor

{
  • "$_type": "ConversationAccessInterceptorData",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "name": "test-conversation-access-interceptor-",
  • "description": null,
  • "timeoutBehavior": "CONTINUE",
  • "interceptedOpeningTypes": [
    ],
  • "outboundEndpoint": "https://test.unblu.com",
  • "outboundStatus": "DISABLED",
  • "outboundSecret": null,
  • "outboundApiVersion": "V4",
  • "retryCount": null,
  • "retryDelay": null,
  • "order": 3,
  • "timeoutMillis": 5000
}

Response samples

Content type
application/json

New conversation access interceptor

{
  • "$_type": "ConversationAccessInterceptorData",
  • "id": "03NX1BKHQhGg5MxxXUvUog",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-conversation-access-interceptor-",
  • "description": null,
  • "timeoutBehavior": "CONTINUE",
  • "interceptedOpeningTypes": [
    ],
  • "outboundEndpoint": "https://test.unblu.com",
  • "outboundStatus": "DISABLED",
  • "outboundSecret": null,
  • "outboundApiVersion": "V4",
  • "retryCount": 0,
  • "retryDelay": 0,
  • "order": 3,
  • "timeoutMillis": 5000
}

delete

Deletes an existing conversation access interceptor. If the interceptor to be deleted can't be found, the HTTP status code 204 is returned.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
interceptorId
required
string

The ID of the conversation access interceptor which should be deleted

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

getByName

Searches for a conversation access interceptor with the given name

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
name
string

The name of the conversation access interceptor

Responses

Response samples

Content type
application/json

Conversation access interceptor

{
  • "$_type": "ConversationAccessInterceptorData",
  • "id": "03NX1BKHQhGg5MxxXUvUog",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-conversation-access-interceptor-",
  • "description": null,
  • "timeoutBehavior": "CONTINUE",
  • "interceptedOpeningTypes": [
    ],
  • "outboundEndpoint": "http://test.outbound.com",
  • "outboundStatus": "DISABLED",
  • "outboundSecret": null,
  • "outboundApiVersion": "V4",
  • "retryCount": 0,
  • "retryDelay": 0,
  • "order": 1,
  • "timeoutMillis": 5000
}

read

Reads an existing conversation access interceptor

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
interceptorId
required
string

The ID of the conversation access interceptor to read

Responses

Response samples

Content type
application/json

Conversation access interceptor

{
  • "$_type": "ConversationAccessInterceptorData",
  • "id": "03NX1BKHQhGg5MxxXUvUog",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-conversation-access-interceptor-",
  • "description": null,
  • "timeoutBehavior": "CONTINUE",
  • "interceptedOpeningTypes": [
    ],
  • "outboundEndpoint": "http://test.outbound.com",
  • "outboundStatus": "DISABLED",
  • "outboundSecret": null,
  • "outboundApiVersion": "V4",
  • "retryCount": 0,
  • "retryDelay": 0,
  • "order": 1,
  • "timeoutMillis": 5000
}

search

Searches for conversation access interceptor in the current account

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "ConversationAccessInterceptorQuery"
Value: "ConversationAccessInterceptorQuery"
Array of any (ConversationAccessInterceptorSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (ConversationAccessInterceptorOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationAccessInterceptorQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationAccessInterceptorResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

sendPing

Emits a PingRequest on the configured outbound endpoint for the conversation access interceptor.


required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
interceptorId
required
string

The ID of a conversation access interceptor

Responses

Response samples

Content type
application/json
{
  • "$_type": "PingResponse",
  • "pingId": "string"
}

update

Updates an existing conversation access interceptor

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json

The conversation access interceptor to update

$_type
string
Default: "ConversationAccessInterceptorData"
Value: "ConversationAccessInterceptorData"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

name
string

A model representing a conversation access interceptor. These interceptors are used to approve or reject an attempt to join a conversation. Mandatory.

description
string

Description of the conversation access interceptor. Maximum length of 500 characters.

timeoutBehavior
string (EConversationAccessInterceptorTimeoutBehavior)
Enum: "REJECT" "CONTINUE"
enum-descriptions: ["REJECT: Reject the access attempt when a timeout occurs","CONTINUE: Grant access to the conversation when a timeout occurs"]

What should happen with a message when a timeout occurs during interception.
If omitted, the value REJECT is used.

interceptedOpeningTypes
Array of strings (EConversationAccessType)
Items Enum: "ACCESS_AS_VISITOR_PARTICIPANT" "ACCESS_AS_AGENT_PARTICIPANT" "ACCESS_AS_GHOST_PARTICIPANT" "ACCESS_AS_GHOST_WITHOUT_PARTICIPATION"

Defines the different ways in which a conversation can be opened and which of these are intercepted. Mandatory.

outboundEndpoint
string

The URL of the outbound request registration endpoint. Requests for outbound request events are sent to this URL. Maximum length of 4000 characters. Mandatory.

The following event is sent to the endpoint:

  • The OutboundRequest.ServiceNameConstants#CONVERSATION_ACCESS_INTERCEPTOR_ACCESS_CONVERSATION event is sent to the endpoint every time a conversation is opened in an Unblu UI.

outboundStatus
string (EOutboundEndpointStatus)
Enum: "ENABLED" "DISABLED"
enum-descriptions: ["ENABLED: The endpoint is enabled and calls are allowed.","DISABLED: The endpoint is disabled and calls should be avoided, since they won't work."]

The status of an Outbound Web-API endpoint.

outboundSecret
string

Optional secret sent with each outbound event. Mandatory.

Maximum length of 4000 characters.

outboundApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3" "V4"
enum-descriptions: ["V1: Version 1 of the Web-API. Introduced with Unblu 4.x.","V2: Version 2 of the Web-API. Introduced with Unblu 5.","V3: Version 3 of the Web-API. Introduced with Unblu 6.","V4: Version 4 of the Web-API. Introduced with Unblu 8."]

Version of the Web-API. Version of API corresponds to a path element of the request URL. E.g.: /rest/v3/<service>/...

retryCount
integer <int64>

Defines the number of retries for failed outbound requests. If omitted, it defaults to 0.

retryDelay
integer <int64>

Defines the delay between retries for failed outbound requests. If omitted, it defaults to 0.

order
integer <int64>

Order of execution of the file upload interceptor among all the file upload interceptors configured in the account. Mandatory.

timeoutMillis
integer <int64>

A long for the amount of miliseconds until the timeout of the interceptor occurs.

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationAccessInterceptorData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "timeoutBehavior": "REJECT",
  • "interceptedOpeningTypes": [
    ],
  • "outboundEndpoint": "string",
  • "outboundStatus": "ENABLED",
  • "outboundSecret": "string",
  • "outboundApiVersion": "V1",
  • "retryCount": 0,
  • "retryDelay": 0,
  • "order": 0,
  • "timeoutMillis": 0
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationAccessInterceptorData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "timeoutBehavior": "REJECT",
  • "interceptedOpeningTypes": [
    ],
  • "outboundEndpoint": "string",
  • "outboundStatus": "ENABLED",
  • "outboundSecret": "string",
  • "outboundApiVersion": "V1",
  • "retryCount": 0,
  • "retryDelay": 0,
  • "order": 0,
  • "timeoutMillis": 0
}

ConversationHistory

Service to get the history of conversations

exportMessageLog

Export messages belonging to a specific conversation

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

id of the conversation

Request Body schema: application/json
$_type
string
Default: "MessageExportQuery"
Value: "MessageExportQuery"
Array of any (MessageExportFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (MessageExportOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "MessageExportQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "MessageExportResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

getConversationRecordings

Gets the list of conversation recordings belonging to a specific conversation

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
conversationId
required
string

ID of the conversation

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationRecordingHistoryDataList",
  • "items": [
    ]
}

read

Returns the conversation history data for a given conversation.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
conversationId
required
string

id of the conversation

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationHistoryData",
  • "id": "string",
  • "recipient": {
    },
  • "endPerson": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "createdTimestamp": 0,
  • "assigneeJoinTimestamp": 0,
  • "endTimestamp": 0,
  • "lastMessageTimestamp": 0,
  • "lastCompletedRecordingTimestamp": 0,
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "endComment": "string",
  • "tokboxSessionId": "string",
  • "conversationTemplateId": "string",
  • "externalMessengerChannelIconId": "string",
  • "externalMessengerChannelName": "string",
  • "topic": "string",
  • "sourceUrl": "string",
  • "scheduledTimestamp": 0,
  • "dueDeletionTimestamp": 0,
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "conversationVisibility": "PRIVATE",
  • "stateChanges": [
    ]
}

search

Generic conversation history search.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The Conversation history query.

$_type
string
Default: "ConversationHistoryQuery"
Value: "ConversationHistoryQuery"
Array of any (ConversationHistorySearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (ConversationHistoryOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationHistoryQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationHistoryDataResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

ConversationSummaries

Service to manage conversation summary.

getAvailableTranslations

getAvailableTranslations operation

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationSummaryId
required
string

The ID of the conversation summary used for the research

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationSummaryAvailableTranslations",
  • "conversationSummaryId": "string",
  • "languages": [
    ]
}

getByConversationId

Searches for a conversation summary with the given conversationId

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
conversationId
string

The conversationId of the conversation

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationSummaryResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

read

Reads an existing conversation summary.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationSummaryId
required
string

The ID of the conversation summary to read

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationSummaryData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "accountId": "string",
  • "summaryTriggerType": "CONVERSATION_OFFBOARDING",
  • "conversationSummaryTemplateId": "string",
  • "summarizationState": "PENDING",
  • "requestingAgentPersonId": "string",
  • "reviewingAgentPersonId": "string",
  • "reviewTimestamp": 0,
  • "rejectingReason": "string",
  • "failReason": "TIMEOUT",
  • "conversationId": "string",
  • "firstMessageId": "string",
  • "lastMessageId": "string",
  • "summarizedMessagesCount": 0,
  • "firstCallTranscriptId": "string",
  • "lastCallTranscriptId": "string",
  • "participatingPersonIds": [
    ],
  • "startTimestamp": 0,
  • "endTimestamp": 0,
  • "processingTime": 0,
  • "summaryServiceProvider": "NATIVE_LLM",
  • "summaryServiceDetails": "string",
  • "summarizedContentLength": 0,
  • "generatedSummary": "string",
  • "reviewedSummary": "string",
  • "summaryLanguage": "string",
  • "reviewRequired": true,
  • "reviewableBy": [
    ],
  • "visibleTo": [
    ],
  • "summarizationTimeFrame": "WHOLE_CONVERSATION",
  • "includeInternalMessages": true,
  • "includeOnboardingMessages": true,
  • "includeOffboardingMessages": true,
  • "includeReboardingMessages": true
}

search

Searches for conversation summaries in the current account

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "ConversationSummaryQuery"
Value: "ConversationSummaryQuery"
Array of any (ConversationSummarySearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (ConversationSummaryOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationSummaryQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationSummaryResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

ConversationSummaryTemplates

Service to manage conversation summary template.

create

Creates a new conversation summary template

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json

The conversation summary template to create

$_type
string
Default: "ConversationSummaryTemplateData"
Value: "ConversationSummaryTemplateData"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

name
string

Name of the conversation summary template. Maximum length of 250 characters. Mandatory.

description
string

Description of the conversation summary template. Maximum length of 500 characters.

reviewRequired
boolean

Specify whether summaries created with this template require reviewing. Mandatory.

reviewableBy
Array of strings (EConversationAgentParticipationType)
Items Enum: "ASSIGNED_AGENT" "SECONDARY_AGENT" "GHOST"

Conversation participation types allowed to review summaries created with this template. Mandatory if reviewRequired is "true", ignored otherwise.

visibleTo
Array of strings (EConversationAgentParticipationType)
Items Enum: "ASSIGNED_AGENT" "SECONDARY_AGENT" "GHOST"

Conversation participation types allowed to see summaries created with this template. Mandatory.

summarizationLanguageConfiguration
string (ESummarizationLanguageConfiguration)
Enum: "CONVERSATION_LANGUAGE" "DEFINED_LANGUAGE"
enum-descriptions: ["CONVERSATION_LANGUAGE: Summary will be generated using the conversation language.","DEFINED_LANGUAGE: Summary will be generated using the language defined with the `ConversationSummaryTemplate` specificGenerationLanguage field."]
specificGenerationLanguage
string

The language used for all summaries created with this template. Mandatory if summarizationLanguageConfiguration is set to DEFINED_LANGUAGE, ignored otherwise.

promptStructure
string

Customizable part of the prompt used to generate summaries. It describes the expected output structure of the summary. Maximum length of 2000 characters. Optional.

promptCustomization
string

Customizable part of the prompt used to generate summaries. It describes specific behavior the model should have when generating the summary. Maximum length of 2000 characters. Optional.

minCharacterCountFilter
integer <int64>

Minimum character count to generate a summary. If the number of characters is smaller than this value, no summary is created. Mandatory.

summarizationTimeFrame
string (ESummarizationTimeFrame)
Enum: "WHOLE_CONVERSATION" "UNTIL_LAST_SUMMARY" "UNTIL_LAST_UNASSIGNED" "TRIGGER_SPECIFIC"
enum-descriptions: ["WHOLE_CONVERSATION: The entire conversation will be used to generate the summary","UNTIL_LAST_SUMMARY: All the messages sent in the conversation, after last summary was generated, will be used to generate the summary","UNTIL_LAST_UNASSIGNED: All the messages sent in the conversation, after the second last time the conversation moved to the `EConversationState.UNASSIGNED`, and before the last time the conversation moved to the `EConversationState.UNASSIGNED`, will be used to generate the summary","TRIGGER_SPECIFIC: The time frame of the messages used to generate the summary will depend on the `EConversationSummaryTriggerType` triggering the summary generation"]
includeInternalMessages
boolean

Specify whether internal messages should be used when generating summaries with this template. Mandatory.

includeOnboardingMessages
boolean

Specify whether messages sent during onboarding should be used when generating summaries with this template. Mandatory.

includeOffboardingMessages
boolean

Specify whether messages sent during offboarding should be used when generating summaries with this template. Mandatory.

includeReboardingMessages
boolean

Specify whether messages sent during reboarding are taken into account for the summary. Mandatory.

object

A map of localized versions of the name and description of this entity

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationSummaryTemplateData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "reviewRequired": true,
  • "reviewableBy": [
    ],
  • "visibleTo": [
    ],
  • "summarizationLanguageConfiguration": "CONVERSATION_LANGUAGE",
  • "specificGenerationLanguage": "string",
  • "promptStructure": "string",
  • "promptCustomization": "string",
  • "minCharacterCountFilter": 0,
  • "summarizationTimeFrame": "WHOLE_CONVERSATION",
  • "includeInternalMessages": true,
  • "includeOnboardingMessages": true,
  • "includeOffboardingMessages": true,
  • "includeReboardingMessages": true,
  • "translations": {
    }
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationSummaryTemplateData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "reviewRequired": true,
  • "reviewableBy": [
    ],
  • "visibleTo": [
    ],
  • "summarizationLanguageConfiguration": "CONVERSATION_LANGUAGE",
  • "specificGenerationLanguage": "string",
  • "promptStructure": "string",
  • "promptCustomization": "string",
  • "minCharacterCountFilter": 0,
  • "summarizationTimeFrame": "WHOLE_CONVERSATION",
  • "includeInternalMessages": true,
  • "includeOnboardingMessages": true,
  • "includeOffboardingMessages": true,
  • "includeReboardingMessages": true,
  • "translations": {
    }
}

delete

Deletes an existing conversation summary template

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationSummaryTemplateId
required
string

The ID of the conversation summary template which should be deleted

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

findByName

Searches for a conversation summary template with the given name

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
name
string

The name of the conversation summary template

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationSummaryTemplateData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "reviewRequired": true,
  • "reviewableBy": [
    ],
  • "visibleTo": [
    ],
  • "summarizationLanguageConfiguration": "CONVERSATION_LANGUAGE",
  • "specificGenerationLanguage": "string",
  • "promptStructure": "string",
  • "promptCustomization": "string",
  • "minCharacterCountFilter": 0,
  • "summarizationTimeFrame": "WHOLE_CONVERSATION",
  • "includeInternalMessages": true,
  • "includeOnboardingMessages": true,
  • "includeOffboardingMessages": true,
  • "includeReboardingMessages": true,
  • "translations": {
    }
}

read

Reads an existing conversation summary template.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationSummaryTemplateId
required
string

The ID of the conversation summary template to read

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationSummaryTemplateData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "reviewRequired": true,
  • "reviewableBy": [
    ],
  • "visibleTo": [
    ],
  • "summarizationLanguageConfiguration": "CONVERSATION_LANGUAGE",
  • "specificGenerationLanguage": "string",
  • "promptStructure": "string",
  • "promptCustomization": "string",
  • "minCharacterCountFilter": 0,
  • "summarizationTimeFrame": "WHOLE_CONVERSATION",
  • "includeInternalMessages": true,
  • "includeOnboardingMessages": true,
  • "includeOffboardingMessages": true,
  • "includeReboardingMessages": true,
  • "translations": {
    }
}

search

Searches for conversation summary templates in the current account

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
$_type
string
Default: "ConversationSummaryTemplateQuery"
Value: "ConversationSummaryTemplateQuery"
Array of any (ConversationSummaryTemplateSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (ConversationSummaryTemplateOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationSummaryTemplateQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationSummaryTemplateResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

update

Updates an existing conversation summary template

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json

The conversation summary template to update

$_type
string
Default: "ConversationSummaryTemplateData"
Value: "ConversationSummaryTemplateData"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

name
string

Name of the conversation summary template. Maximum length of 250 characters. Mandatory.

description
string

Description of the conversation summary template. Maximum length of 500 characters.

reviewRequired
boolean

Specify whether summaries created with this template require reviewing. Mandatory.

reviewableBy
Array of strings (EConversationAgentParticipationType)
Items Enum: "ASSIGNED_AGENT" "SECONDARY_AGENT" "GHOST"

Conversation participation types allowed to review summaries created with this template. Mandatory if reviewRequired is "true", ignored otherwise.

visibleTo
Array of strings (EConversationAgentParticipationType)
Items Enum: "ASSIGNED_AGENT" "SECONDARY_AGENT" "GHOST"

Conversation participation types allowed to see summaries created with this template. Mandatory.

summarizationLanguageConfiguration
string (ESummarizationLanguageConfiguration)
Enum: "CONVERSATION_LANGUAGE" "DEFINED_LANGUAGE"
enum-descriptions: ["CONVERSATION_LANGUAGE: Summary will be generated using the conversation language.","DEFINED_LANGUAGE: Summary will be generated using the language defined with the `ConversationSummaryTemplate` specificGenerationLanguage field."]
specificGenerationLanguage
string

The language used for all summaries created with this template. Mandatory if summarizationLanguageConfiguration is set to DEFINED_LANGUAGE, ignored otherwise.

promptStructure
string

Customizable part of the prompt used to generate summaries. It describes the expected output structure of the summary. Maximum length of 2000 characters. Optional.

promptCustomization
string

Customizable part of the prompt used to generate summaries. It describes specific behavior the model should have when generating the summary. Maximum length of 2000 characters. Optional.

minCharacterCountFilter
integer <int64>

Minimum character count to generate a summary. If the number of characters is smaller than this value, no summary is created. Mandatory.

summarizationTimeFrame
string (ESummarizationTimeFrame)
Enum: "WHOLE_CONVERSATION" "UNTIL_LAST_SUMMARY" "UNTIL_LAST_UNASSIGNED" "TRIGGER_SPECIFIC"
enum-descriptions: ["WHOLE_CONVERSATION: The entire conversation will be used to generate the summary","UNTIL_LAST_SUMMARY: All the messages sent in the conversation, after last summary was generated, will be used to generate the summary","UNTIL_LAST_UNASSIGNED: All the messages sent in the conversation, after the second last time the conversation moved to the `EConversationState.UNASSIGNED`, and before the last time the conversation moved to the `EConversationState.UNASSIGNED`, will be used to generate the summary","TRIGGER_SPECIFIC: The time frame of the messages used to generate the summary will depend on the `EConversationSummaryTriggerType` triggering the summary generation"]
includeInternalMessages
boolean

Specify whether internal messages should be used when generating summaries with this template. Mandatory.

includeOnboardingMessages
boolean

Specify whether messages sent during onboarding should be used when generating summaries with this template. Mandatory.

includeOffboardingMessages
boolean

Specify whether messages sent during offboarding should be used when generating summaries with this template. Mandatory.

includeReboardingMessages
boolean

Specify whether messages sent during reboarding are taken into account for the summary. Mandatory.

object

A map of localized versions of the name and description of this entity

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationSummaryTemplateData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "reviewRequired": true,
  • "reviewableBy": [
    ],
  • "visibleTo": [
    ],
  • "summarizationLanguageConfiguration": "CONVERSATION_LANGUAGE",
  • "specificGenerationLanguage": "string",
  • "promptStructure": "string",
  • "promptCustomization": "string",
  • "minCharacterCountFilter": 0,
  • "summarizationTimeFrame": "WHOLE_CONVERSATION",
  • "includeInternalMessages": true,
  • "includeOnboardingMessages": true,
  • "includeOffboardingMessages": true,
  • "includeReboardingMessages": true,
  • "translations": {
    }
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationSummaryTemplateData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "reviewRequired": true,
  • "reviewableBy": [
    ],
  • "visibleTo": [
    ],
  • "summarizationLanguageConfiguration": "CONVERSATION_LANGUAGE",
  • "specificGenerationLanguage": "string",
  • "promptStructure": "string",
  • "promptCustomization": "string",
  • "minCharacterCountFilter": 0,
  • "summarizationTimeFrame": "WHOLE_CONVERSATION",
  • "includeInternalMessages": true,
  • "includeOnboardingMessages": true,
  • "includeOffboardingMessages": true,
  • "includeReboardingMessages": true,
  • "translations": {
    }
}

ConversationTemplates

Service to manage all conversation templates.

create

Creates the given entity in the system. The ID of the entity is ignored for create operations, a new one is generated.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The entity to create

$_type
string
Default: "ConversationTemplate"
Value: "ConversationTemplate"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

name
string

Name of the conversation template. Maximum of 250 characters. Mandatory.

description
string

Description of the conversation template. Maximum of 500 characters. Optional.

defaultTemplate
boolean

If true, this will be the default template for the initial engagement Type

conversationVisibility
string (EConversationVisibility)
Enum: "PRIVATE" "RULE_BASED"
enum-descriptions: ["PRIVATE: Conversation can only be seen by participants","RULE_BASED: Conversation can be seen by participants as well as non-participating agents who can see the conversation's context person based on their visibility rules"]

The visibility of a conversation. The visibility used at creation time determines who is allowed to see the conversation.

initialEngagementType
string (EInitialEngagementType)
Enum: "CHAT_REQUEST" "OFFLINE_CHAT_REQUEST" "VIDEO_REQUEST" "AUDIO_REQUEST" "HEADLESS_BROWSER_REQUEST" "DOMCAP_BROWSER_REQUEST" "MOBILE_COBROWSING_REQUEST" "WHITEBOARD_REQUEST" "SCREEN_SHARING_REQUEST" "VISITOR_COBROWSING" "BRANCH_CLIENT_REQUEST" "HEADLESS_PIN" "DOMCAP_PIN" "MOBILE_PIN" "WHITEBOARD_PIN" "SCREEN_SHARING_PIN" "CHAT_PIN" "CHAT_INVITE" "EMBEDDED_COBROWSING_INVITE" "HEADLESS_INVITE" "MOBILE_COBROWSING_INVITE" "WHITEBOARD_INVITE" "SCREEN_SHARING_INVITE" "SCHEDULED_CONVERSATION" "BRANCH_CLIENT_PREVIEW"
enum-descriptions: ["CHAT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming chat conversation.","OFFLINE_CHAT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming chat conversation while all agents are offline.","VIDEO_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming video conversation.","AUDIO_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming audio conversation.","HEADLESS_BROWSER_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming universal co-browsing conversation.","DOMCAP_BROWSER_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming embedded co-browsing conversation.","MOBILE_COBROWSING_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming mobile co-browsing conversation.","WHITEBOARD_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming whiteboard conversation.","SCREEN_SHARING_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming screen sharing conversation.","VISITOR_COBROWSING: (Api initiated, visitor centered) A visitor creates a conversation via API which is not added to the queue and where he can invite other visitor to do embedded","BRANCH_CLIENT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming conversation from a branch client.","HEADLESS_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join an universal co-browsing conversation.","DOMCAP_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join an embedded co-browsing conversation.","MOBILE_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a mobile co-browsing conversation.","WHITEBOARD_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a whiteboard conversation.","SCREEN_SHARING_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a screen sharing conversation.","CHAT_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a chat conversation.","CHAT_INVITE: (Web-API initiated, agent centered) A chat conversation is created for a visitor to join a chat conversation.","EMBEDDED_COBROWSING_INVITE: (Agent initiated, agent centered) An agent creates an embedded co-browsing conversation and invites customer later.","HEADLESS_INVITE: (Agent initiated, agent centered) An agent creates universal co-browsing conversation and invites customer later.","MOBILE_COBROWSING_INVITE: (Agent initiated, agent centered) An agent creates a mobile co-browsing conversation and invites customer later.","WHITEBOARD_INVITE: (Agent initiated, agent centered) An agent creates whiteboard conversation and invites customer later.","SCREEN_SHARING_INVITE: (Agent initiated, agent centered) An agent creates screen sharing conversation and invites customer later.","SCHEDULED_CONVERSATION: (Agent initiated, agent centered) Conversation created with a certain topic and scheduled for some point in time.","BRANCH_CLIENT_PREVIEW: (Agent initiated, agent centered) Conversation created by an agent to view a branch client."]

The initial type of a conversation. The type used at creation time of the conversation determines the conversation template that is used.

object

A map of localized versions of the name and description of this entity

inheritConfigurationAndTexts
boolean

True if conversations, created from this template, inherit all configuration and texts. If omitted, the property is set to false. New conversations receive a copy of this conversation template's configuration and texts.

object
expand-query-key: configuration
type: Map

The entity's configuration properties. Only contains values when the 'expand' query parameter is used with the value 'configuration'. Not filled in webhook events.

object
expand-query-key: text
type: Map

The entity's text properties. Only contains values when the 'expand' query parameter is used with the value 'text'. Not filled in webhook events.

object
expand-query-key: metadata
type: Map

The entity's metadata properties. Only contains values when the 'expand' query parameter is used with the value 'metadata'. Not filled in webhook events.

Responses

Request samples

Content type
application/json

Create a ConversationTemplate with translations of the name and description for it

{
  • "$_type": "ConversationTemplate",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "name": "with-translations-test",
  • "description": "The Conversation Template",
  • "defaultTemplate": false,
  • "conversationVisibility": "PRIVATE",
  • "initialEngagementType": "CHAT_INVITE",
  • "translations": {
    },
  • "inheritConfigurationAndTexts": true,
  • "configuration": null,
  • "text": null,
  • "metadata": null
}

Response samples

Content type
application/json

Create a ConversationTemplate with translations of the name and description for it

{
  • "$_type": "ConversationTemplate",
  • "id": "ab32em6Be-5le_48rE1F9Ad",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "with-translations-test",
  • "description": "The Conversation Template",
  • "defaultTemplate": false,
  • "conversationVisibility": "PRIVATE",
  • "initialEngagementType": "CHAT_INVITE",
  • "translations": {
    },
  • "inheritConfigurationAndTexts": true,
  • "configuration": null,
  • "text": null,
  • "metadata": null
}

delete

Deletes the template with the given ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
templateId
required
string

The ID of the template which should be deleted

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

getDefaultTemplateByEngagementType

Gets the default conversation template for a given initial engagement type

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
initialEngagementType
string (EInitialEngagementType)
Enum: "CHAT_REQUEST" "OFFLINE_CHAT_REQUEST" "VIDEO_REQUEST" "AUDIO_REQUEST" "HEADLESS_BROWSER_REQUEST" "DOMCAP_BROWSER_REQUEST" "MOBILE_COBROWSING_REQUEST" "WHITEBOARD_REQUEST" "SCREEN_SHARING_REQUEST" "VISITOR_COBROWSING" "BRANCH_CLIENT_REQUEST" "HEADLESS_PIN" "DOMCAP_PIN" "MOBILE_PIN" "WHITEBOARD_PIN" "SCREEN_SHARING_PIN" "CHAT_PIN" "CHAT_INVITE" "EMBEDDED_COBROWSING_INVITE" "HEADLESS_INVITE" "MOBILE_COBROWSING_INVITE" "WHITEBOARD_INVITE" "SCREEN_SHARING_INVITE" "SCHEDULED_CONVERSATION" "BRANCH_CLIENT_PREVIEW"
enum-descriptions: ["CHAT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming chat conversation.","OFFLINE_CHAT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming chat conversation while all agents are offline.","VIDEO_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming video conversation.","AUDIO_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming audio conversation.","HEADLESS_BROWSER_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming universal co-browsing conversation.","DOMCAP_BROWSER_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming embedded co-browsing conversation.","MOBILE_COBROWSING_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming mobile co-browsing conversation.","WHITEBOARD_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming whiteboard conversation.","SCREEN_SHARING_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming screen sharing conversation.","VISITOR_COBROWSING: (Api initiated, visitor centered) A visitor creates a conversation via API which is not added to the queue and where he can invite other visitor to do embedded","BRANCH_CLIENT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming conversation from a branch client.","HEADLESS_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join an universal co-browsing conversation.","DOMCAP_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join an embedded co-browsing conversation.","MOBILE_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a mobile co-browsing conversation.","WHITEBOARD_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a whiteboard conversation.","SCREEN_SHARING_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a screen sharing conversation.","CHAT_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a chat conversation.","CHAT_INVITE: (Web-API initiated, agent centered) A chat conversation is created for a visitor to join a chat conversation.","EMBEDDED_COBROWSING_INVITE: (Agent initiated, agent centered) An agent creates an embedded co-browsing conversation and invites customer later.","HEADLESS_INVITE: (Agent initiated, agent centered) An agent creates universal co-browsing conversation and invites customer later.","MOBILE_COBROWSING_INVITE: (Agent initiated, agent centered) An agent creates a mobile co-browsing conversation and invites customer later.","WHITEBOARD_INVITE: (Agent initiated, agent centered) An agent creates whiteboard conversation and invites customer later.","SCREEN_SHARING_INVITE: (Agent initiated, agent centered) An agent creates screen sharing conversation and invites customer later.","SCHEDULED_CONVERSATION: (Agent initiated, agent centered) Conversation created with a certain topic and scheduled for some point in time.","BRANCH_CLIENT_PREVIEW: (Agent initiated, agent centered) Conversation created by an agent to view a branch client."]

The initial type of a conversation. The type used at creation time of the conversation determines the conversation template that is used.

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationTemplate",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "defaultTemplate": true,
  • "conversationVisibility": "PRIVATE",
  • "initialEngagementType": "CHAT_REQUEST",
  • "translations": {
    },
  • "inheritConfigurationAndTexts": true,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

read

Returns the template with the given ID

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
templateId
required
string

ID of the template which should be returned

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationTemplate",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "defaultTemplate": true,
  • "conversationVisibility": "PRIVATE",
  • "initialEngagementType": "CHAT_REQUEST",
  • "translations": {
    },
  • "inheritConfigurationAndTexts": true,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

readMultiple

Gets a list of conversation templates with the given IDs. IDs that can't be found are ignored.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The IDs of the conversation templates to fetch

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
{
  • "$_type": "ConversationTemplateList",
  • "items": [
    ]
}

search

Search for conversation-templates in the current account

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
$_type
string
Default: "ConversationTemplateQuery"
Value: "ConversationTemplateQuery"
Array of any (ConversationTemplateSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (ConversationTemplateOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationTemplateQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationTemplateResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

update

Updates the entity in the system with the given entity.

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The entity to update

$_type
string
Default: "ConversationTemplate"
Value: "ConversationTemplate"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

name
string

Name of the conversation template. Maximum of 250 characters. Mandatory.

description
string

Description of the conversation template. Maximum of 500 characters. Optional.

defaultTemplate
boolean

If true, this will be the default template for the initial engagement Type

conversationVisibility
string (EConversationVisibility)
Enum: "PRIVATE" "RULE_BASED"
enum-descriptions: ["PRIVATE: Conversation can only be seen by participants","RULE_BASED: Conversation can be seen by participants as well as non-participating agents who can see the conversation's context person based on their visibility rules"]

The visibility of a conversation. The visibility used at creation time determines who is allowed to see the conversation.

initialEngagementType
string (EInitialEngagementType)
Enum: "CHAT_REQUEST" "OFFLINE_CHAT_REQUEST" "VIDEO_REQUEST" "AUDIO_REQUEST" "HEADLESS_BROWSER_REQUEST" "DOMCAP_BROWSER_REQUEST" "MOBILE_COBROWSING_REQUEST" "WHITEBOARD_REQUEST" "SCREEN_SHARING_REQUEST" "VISITOR_COBROWSING" "BRANCH_CLIENT_REQUEST" "HEADLESS_PIN" "DOMCAP_PIN" "MOBILE_PIN" "WHITEBOARD_PIN" "SCREEN_SHARING_PIN" "CHAT_PIN" "CHAT_INVITE" "EMBEDDED_COBROWSING_INVITE" "HEADLESS_INVITE" "MOBILE_COBROWSING_INVITE" "WHITEBOARD_INVITE" "SCREEN_SHARING_INVITE" "SCHEDULED_CONVERSATION" "BRANCH_CLIENT_PREVIEW"
enum-descriptions: ["CHAT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming chat conversation.","OFFLINE_CHAT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming chat conversation while all agents are offline.","VIDEO_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming video conversation.","AUDIO_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming audio conversation.","HEADLESS_BROWSER_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming universal co-browsing conversation.","DOMCAP_BROWSER_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming embedded co-browsing conversation.","MOBILE_COBROWSING_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming mobile co-browsing conversation.","WHITEBOARD_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming whiteboard conversation.","SCREEN_SHARING_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming screen sharing conversation.","VISITOR_COBROWSING: (Api initiated, visitor centered) A visitor creates a conversation via API which is not added to the queue and where he can invite other visitor to do embedded","BRANCH_CLIENT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming conversation from a branch client.","HEADLESS_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join an universal co-browsing conversation.","DOMCAP_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join an embedded co-browsing conversation.","MOBILE_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a mobile co-browsing conversation.","WHITEBOARD_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a whiteboard conversation.","SCREEN_SHARING_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a screen sharing conversation.","CHAT_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a chat conversation.","CHAT_INVITE: (Web-API initiated, agent centered) A chat conversation is created for a visitor to join a chat conversation.","EMBEDDED_COBROWSING_INVITE: (Agent initiated, agent centered) An agent creates an embedded co-browsing conversation and invites customer later.","HEADLESS_INVITE: (Agent initiated, agent centered) An agent creates universal co-browsing conversation and invites customer later.","MOBILE_COBROWSING_INVITE: (Agent initiated, agent centered) An agent creates a mobile co-browsing conversation and invites customer later.","WHITEBOARD_INVITE: (Agent initiated, agent centered) An agent creates whiteboard conversation and invites customer later.","SCREEN_SHARING_INVITE: (Agent initiated, agent centered) An agent creates screen sharing conversation and invites customer later.","SCHEDULED_CONVERSATION: (Agent initiated, agent centered) Conversation created with a certain topic and scheduled for some point in time.","BRANCH_CLIENT_PREVIEW: (Agent initiated, agent centered) Conversation created by an agent to view a branch client."]

The initial type of a conversation. The type used at creation time of the conversation determines the conversation template that is used.

object

A map of localized versions of the name and description of this entity

inheritConfigurationAndTexts
boolean

True if conversations, created from this template, inherit all configuration and texts. If omitted, the property is set to false. New conversations receive a copy of this conversation template's configuration and texts.

object
expand-query-key: configuration
type: Map

The entity's configuration properties. Only contains values when the 'expand' query parameter is used with the value 'configuration'. Not filled in webhook events.

object
expand-query-key: text
type: Map

The entity's text properties. Only contains values when the 'expand' query parameter is used with the value 'text'. Not filled in webhook events.

object
expand-query-key: metadata
type: Map

The entity's metadata properties. Only contains values when the 'expand' query parameter is used with the value 'metadata'. Not filled in webhook events.

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationTemplate",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "defaultTemplate": true,
  • "conversationVisibility": "PRIVATE",
  • "initialEngagementType": "CHAT_REQUEST",
  • "translations": {
    },
  • "inheritConfigurationAndTexts": true,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationTemplate",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "defaultTemplate": true,
  • "conversationVisibility": "PRIVATE",
  • "initialEngagementType": "CHAT_REQUEST",
  • "translations": {
    },
  • "inheritConfigurationAndTexts": true,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

Conversations

Service to manage conversations

addExternalParticipant

Adds a participant connected through an external messenger to the given conversation.

For participants that will write messages directly through Unblu, use addParticipant instead.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

The conversation to update

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
externalMessengerContactId
string

The ID of the ExternalMessengerContact to add

Responses

Request samples

Content type
application/json
{
  • "externalMessengerContactId": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

addParticipant

Adds a participant to the given conversation.

This can only be used for participants who send messages through Unblu. Use addExternalParticipant for participants who send messages through an external messenger channel.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
personId
string

Id of the person to add

hidden
boolean

If the person should be hidden or not. Note: only secondary agents and bots may be hidden.

conversationStarred
boolean

If this conversation should be marked as starred for the person. If null, the default value is false

Responses

Request samples

Content type
application/json

Add a participant to a conversation

{
  • "personId": "nta30CBa-6d1a89cE57Db_F",
  • "hidden": false,
  • "conversationStarred": false
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

changeParticipantVisibility

Changes the visibility of a conversation's participant.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
personId
string
hidden
boolean

Responses

Request samples

Content type
application/json

Mark an agent as visible

{
  • "personId": "nta30CBa-6d1a89cE57Db_F",
  • "hidden": false
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

create

Creates the conversation in the system. The conversation ID mustn't be set as a new one will be generated.
If called with the authorization role SUPERVISOR or REGISTERED_USER, there are a number of restrictions regarding the conversation to be created:

  • The initialEngagementType or the referenced conversationTemplateId must be a conversation type initiated by agents
  • The assigneePersonId must refer to the person entity of the agent making the call
  • The agent making the call must be the only participant in the conversation
If sourceId and externalMessengerChannelId are set they have to be unique for any active conversations. Ended conversations are ignored.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
$_type
string
Default: "ConversationCreationData"
Value: "ConversationCreationData"
topic
string

Topic of the conversation. Optional unless the initial engagement type is EInitialEngagementType.SCHEDULED_CONVERSATION, in which case it's mandatory.

scheduledTimestamp
integer <int64>

Unix timestamp (ms) when the conversation is scheduled. Can only be set for conversations with the initial engagement typeEInitialEngagementType.SCHEDULED_CONVERSATION.

object (ConversationCreationRecipientData)

The recipient of a conversation when creating a new conversation

Array of objects (ConversationCreationParticipantData) [ items ]

Participants taking part in the conversation through Unblu. There must be at least one participant in this list or in the externalParticipants list.

Array of objects (ConversationCreationExternalParticipantData) [ items ]

Participants taking part in the conversation through an external messenger. There must be at least one participant in this list or in theparticipants list. It must be omitted if externalMessengerChannelId is not set.

Array of objects (ConversationCreationBotParticipantData) [ items ]

Bots taking part in the conversation. Optional.

initialEngagementType
string (EInitialEngagementType)
Enum: "CHAT_REQUEST" "OFFLINE_CHAT_REQUEST" "VIDEO_REQUEST" "AUDIO_REQUEST" "HEADLESS_BROWSER_REQUEST" "DOMCAP_BROWSER_REQUEST" "MOBILE_COBROWSING_REQUEST" "WHITEBOARD_REQUEST" "SCREEN_SHARING_REQUEST" "VISITOR_COBROWSING" "BRANCH_CLIENT_REQUEST" "HEADLESS_PIN" "DOMCAP_PIN" "MOBILE_PIN" "WHITEBOARD_PIN" "SCREEN_SHARING_PIN" "CHAT_PIN" "CHAT_INVITE" "EMBEDDED_COBROWSING_INVITE" "HEADLESS_INVITE" "MOBILE_COBROWSING_INVITE" "WHITEBOARD_INVITE" "SCREEN_SHARING_INVITE" "SCHEDULED_CONVERSATION" "BRANCH_CLIENT_PREVIEW"
enum-descriptions: ["CHAT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming chat conversation.","OFFLINE_CHAT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming chat conversation while all agents are offline.","VIDEO_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming video conversation.","AUDIO_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming audio conversation.","HEADLESS_BROWSER_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming universal co-browsing conversation.","DOMCAP_BROWSER_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming embedded co-browsing conversation.","MOBILE_COBROWSING_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming mobile co-browsing conversation.","WHITEBOARD_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming whiteboard conversation.","SCREEN_SHARING_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming screen sharing conversation.","VISITOR_COBROWSING: (Api initiated, visitor centered) A visitor creates a conversation via API which is not added to the queue and where he can invite other visitor to do embedded","BRANCH_CLIENT_REQUEST: (Visitor initiated, visitor centered) A visitor creates an incoming conversation from a branch client.","HEADLESS_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join an universal co-browsing conversation.","DOMCAP_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join an embedded co-browsing conversation.","MOBILE_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a mobile co-browsing conversation.","WHITEBOARD_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a whiteboard conversation.","SCREEN_SHARING_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a screen sharing conversation.","CHAT_PIN: (Agent initiated, visitor centered) An agent creates a conversation with a PIN invitation for the visitor to join a chat conversation.","CHAT_INVITE: (Web-API initiated, agent centered) A chat conversation is created for a visitor to join a chat conversation.","EMBEDDED_COBROWSING_INVITE: (Agent initiated, agent centered) An agent creates an embedded co-browsing conversation and invites customer later.","HEADLESS_INVITE: (Agent initiated, agent centered) An agent creates universal co-browsing conversation and invites customer later.","MOBILE_COBROWSING_INVITE: (Agent initiated, agent centered) An agent creates a mobile co-browsing conversation and invites customer later.","WHITEBOARD_INVITE: (Agent initiated, agent centered) An agent creates whiteboard conversation and invites customer later.","SCREEN_SHARING_INVITE: (Agent initiated, agent centered) An agent creates screen sharing conversation and invites customer later.","SCHEDULED_CONVERSATION: (Agent initiated, agent centered) Conversation created with a certain topic and scheduled for some point in time.","BRANCH_CLIENT_PREVIEW: (Agent initiated, agent centered) Conversation created by an agent to view a branch client."]

The initial type of a conversation. The type used at creation time of the conversation determines the conversation template that is used.

conversationVisibility
string (EConversationVisibility)
Enum: "PRIVATE" "RULE_BASED"
enum-descriptions: ["PRIVATE: Conversation can only be seen by participants","RULE_BASED: Conversation can be seen by participants as well as non-participating agents who can see the conversation's context person based on their visibility rules"]

The visibility of a conversation. The visibility used at creation time determines who is allowed to see the conversation.

locale
string

The locale of the conversation language as a BCP 47 language tag, including the region if available. Optional, if not provided, the account default locale will be used.

visitorData
string

Custom data for the visitor. This has no specific format. Optional.

conversationTemplateId
string

Template ID of the conversation. If omitted, the default conversation template is retrieved based on the initial engagement type. If provided the value ofinitialEngagementType has to match the initial engagement type of the template.

inheritConfigurationAndTexts
boolean

True if the conversation inherits all configuration and text properties from its conversation template. If omitted, the valueConversationTemplate.inheritConfigurationAndTexts from its conversation template is used.

externalMessengerChannelId
string

ID of the external messenger channel the conversation should be linked to. If this property is null the conversation is an Unblu conversation and not linked to an external messenger channel.

sourceId
string

Custom ID to identify the source of the conversation. Typically used in connection with an external messenger to create a link to the external conversation.
If this ID is specified, it has to be unique for each external channel. Even if the external channel is not used (null), the custom ID must be unique for this "null".

sourceUrl
string

URL identifying the system where the conversation was created, for example a CRM. Optional.

initialEngagementUrl
string

The URL where the conversation originated. Optional.

object
expand-query-key: metadata
type: Map

The entity's metadata properties. Only contains values when the 'expand' query parameter is used with the value 'metadata'. Not filled in webhook events.

object
expand-query-key: configuration
type: Map

The entity's configuration properties. Only contains values when the 'expand' query parameter is used with the value 'configuration'. Not filled in webhook events.

object
expand-query-key: text
type: Map

The entity's text properties. Only contains values when the 'expand' query parameter is used with the value 'text'. Not filled in webhook events.

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationCreationData",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "initialEngagementUrl": "string",
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

Response samples

Content type
application/json

New conversation created

{
  • "$_type": "ConversationData",
  • "creationTimestamp": 1546300800000,
  • "endTimestamp": null,
  • "id": "AcviDb210C5BoFd6e_79oan",
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "topic": null,
  • "scheduledTimestamp": null,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [ ],
  • "botParticipants": [ ],
  • "state": "QUEUED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "en",
  • "tokboxSessionId": null,
  • "visitorData": "test-visitorData-1234",
  • "conversationTemplateId": "ab32em6Be-5le_48rE1F9Ad",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": null,
  • "sourceId": null,
  • "sourceUrl": "http://some.url/conv1",
  • "endReason": null,
  • "initialEngagementUrl": null,
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": null,
  • "metadata": null,
  • "configuration": null,
  • "text": null
}

delete

Deletes the conversation with the given ID.
Calls with the authorization role SUPERVISOR or REGISTERED_USER are only permissible if:

  • The agent making the call is the only participant in the conversation
  • The conversation never had any participants other than the agent calling the endpoint
  • The conversation contains no messages except system messages and messages sent by bots

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
conversationId
required
string

The ID of the conversation to be deleted

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

end

Ends a conversation. If called with the authorization role SUPERVISOR or REGISTERED_USER, the agent making the call must have the necessary permissions to end a conversation.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
reason
string (EConversationEndReason)
Enum: "ENDED_BY_PARTICIPANT" "MANDATORY_PARTICIPANT_GONE" "REQUEST_DECLINED" "REQUEST_NOT_ANSWERED" "EXTERNAL_CHANNEL_CLOSED" "SOLVED_BY_BOT" "CANCELED" "CALL_ENDED" "NO_AGENT_AVAILABLE" "OTHER"
enum-descriptions: ["ENDED_BY_PARTICIPANT","MANDATORY_PARTICIPANT_GONE","REQUEST_DECLINED","REQUEST_NOT_ANSWERED","EXTERNAL_CHANNEL_CLOSED","SOLVED_BY_BOT","CANCELED","CALL_ENDED","NO_AGENT_AVAILABLE","OTHER"]

Closing reason of a conversation

comment
string

Responses

Request samples

Content type
application/json

End a conversation

{
  • "reason": "OTHER",
  • "comment": "Some comment"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

getBySourceIdAndChannelId

Returns the active conversation for the given source ID and channel ID. When called with the authorization role REGISTERED_USER, the agent making the call must be a participant in the conversation matching the search criteria. If they aren't, the call will fail. When called with the authorization role SUPERVISOR, the conversation matching the search criteria must include a participant who is an agent in their team (or one of their teams). If it doesn't, the call will fail.

Ended conversations for the same sourceId and channel are ignored. These can be retrieved using the /search service.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
sourceId
string

The source ID the conversation was created with

externalMessengerChannelId
string

The messenger channel ID the conversation is connected to. Can be null for internal conversations.

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

getConversationFiles

Returns a list of all files that have been shared/sent within the specified conversation.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the id of conversation, for which the file list should be retrieved

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationFileDataList",
  • "items": [
    ]
}

getRecordingState

Retrieve the current recording state of the given conversation

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
conversationId
required
string

The conversation to retrieve the recording state for

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationRecordingState",
  • "conversationId": "string",
  • "recordingState": "IDLE",
  • "recordingType": "AUDIO",
  • "recordingStartTimestamp": 0
}

offboardParticipant

Offboards a participant from a conversation.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
personId
string
reason
string (EConversationLeftReason)
Enum: "FORWARDED" "PARTICIPANT_LEFT" "REMOVED_AFTER_TIMEOUT" "ONBOARDING_DECLINED" "ONBOARDING_IDLE_TIMEOUT" "ONBOARDING_TIMEOUT" "USER_CHANGED" "KICKED" "CONVERSATION_UNASSIGNED" "CONVERSATION_REQUEUED" "PUBLIC_DIALIN_ENDED" "EXTERNAL_CONTACT_UNLINKED" "ASSISTANT_SYNCHRONIZATION" "DEPUTY_REMOVAL" "OTHER"
enum-descriptions: ["FORWARDED","PARTICIPANT_LEFT","REMOVED_AFTER_TIMEOUT","ONBOARDING_DECLINED","ONBOARDING_IDLE_TIMEOUT","ONBOARDING_TIMEOUT","USER_CHANGED","KICKED","CONVERSATION_UNASSIGNED","CONVERSATION_REQUEUED","PUBLIC_DIALIN_ENDED","EXTERNAL_CONTACT_UNLINKED","ASSISTANT_SYNCHRONIZATION","DEPUTY_REMOVAL","OTHER"]

Participation left reason of a conversation

comment
string

Responses

Request samples

Content type
application/json

Offboard a participant

{
  • "personId": "nta30CBa-6d1a89cE57Db_F",
  • "reason": "OTHER",
  • "comment": "Some other important reason"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

read

Returns the conversation with the given ID. If called with the authorization role SUPERVISOR or REGISTERED_USER, the agent making the call must be a participant in the conversation.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
conversationId
required
string

ID of the conversation which should be returned

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

search

Search for conversations in the current account. If called with the authorization role REGISTERED_USER, the call only returns conversations matching the search criteria where the agent making a call is the participant. If the agent making the call has the user role SUPERVISOR, the results only include conversations of the agents in their team or teams.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
$_type
string
Default: "ConversationQuery"
Value: "ConversationQuery"
Array of any (ConversationSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (ConversationOrderBy) [ items ]

List of criteria to order the search result list

offset
integer <int32>

Offset position in the result set to start pagination

limit
integer <int32>

Maximal amount of items returned

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationResult",
  • "hasMoreItems": true,
  • "nextOffset": 0,
  • "items": [
    ]
}

setAssigneePerson

Sets an agent as assignee to a conversation.

Note: The person has to have an active participation in the conversation

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
personId
string

Responses

Request samples

Content type
application/json

Set the assigned agent

{
  • "personId": "nta30CBa-6d1a89cE57Db_F"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

setAwaitedPersonType

Sets the awaited person type in a conversation

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
awaitedPersonType
string (EAwaitedPersonType)
Enum: "NONE" "VISITOR" "AGENT"
enum-descriptions: ["NONE","VISITOR","AGENT"]

Indicates which type of person the conversation is waiting for

Responses

Request samples

Content type
application/json

Set the conversation awaited person

{
  • "awaitedPersonType": "VISITOR"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

setContextPerson

Sets a visitor as context person of a conversation.

Note: The person has to have an active participation in the conversation

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
personId
string

Responses

Request samples

Content type
application/json

Set the primary visitor

{
  • "personId": "nta30CBa-6d1a89cE57Db_F"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

setInheritConfigurationAndTexts

Manually modify the inheritance of configuration and text properties for a specific conversation

  • When enabled, all configuration and text properties explicitly set on the conversation are removed, and the values from the conversation template are applied.
  • When disabled, all configuration and text properties from the conversation template are copied to the conversation, and the conversation no longer inherits them. If any configurations and/or text properties are already set on the conversation, they are removed, and only the values from the corresponding conversation template are used.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

The conversation for which the configuration and text property inheritance are updated.

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
inherit
boolean

Whether to inherit the configuration and text properties from the conversation template or not.

Responses

Request samples

Content type
application/json
{
  • "inherit": true
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

setLocale

Sets the locale of the conversation language (as BCP 47 language tag form including region if available).

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
locale
string

the new locale

Responses

Request samples

Content type
application/json

Set the conversation locale to german

{
  • "locale": "de"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

setRecipient

Sets a person, named area, team or account as the recipient of a conversation.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
$_type
required
string
Default: "AccountData"
id
string

Unique id of the account.

displayName
string

Display-Name of the account

object

Localized Display-Name of the account

string or Avatar (object)
expand-query-key: avatar
type: ExpandableField

Avatar of the account: id that can be expanded.

Responses

Request samples

Content type
application/json
Example
{
  • "$_type": "AccountData",
  • "id": "string",
  • "displayName": "string",
  • "displayNameTranslations": {
    },
  • "avatar": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

setScheduledTimestamp

Sets the scheduled time of the conversation. The timestamp is the Unix timestamp (ms) when the conversation is scheduled for, rounded to the nearest minute. Can only be set for conversations with initialEngagementType = "SCHEDULED_CONVERSATION".
When called with the authorization role SUPERVISOR or REGISTERED_USER, the behavior of the call depends on the configuration property com.unblu.conversation.message.allowNonAdminUsersChangeConversationScheduledTimeViaWebApi:

  • If the configuration property is true, the agent making the call can only change the conversation's scheduledTimestamp if they're a participant in the conversation.
  • If the configuration property is false, the agent making the call can change the scheduledTimestamp provided their participation type in the conversation is listed in the configuration property com.unblu.conversation.allowChangeConversationScheduledTime.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
scheduledTimestamp
integer <int64>

the new scheduledTimestamp rounded to nearest minute

Responses

Request samples

Content type
application/json

Set the conversation scheduledTimestamp

{
  • "scheduledTimestamp": 1551398400000
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

setSourceUrl

Sets the sourceUrl for the specified conversation. Passing null deletes the existing sourceUrl.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the ID of the conversation to update

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
sourceUrl
string

the URL to set, or null to remove it

Responses

Request samples

Content type
application/json
{
  • "sourceUrl": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

setStarred

Sets the starred status of a conversation for a particular person

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation to be starred/unstarred

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
personId
string

the person for whom the starred status will be set

starred
boolean

the starred status to be set

Responses

Request samples

Content type
application/json
{
  • "personId": "string",
  • "starred": true
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

setTopic

Sets the topic of the conversation. Setting it to null deletes the topic, provided it isn't mandatory to specify a topic for the conversation type (e.g. SCHEDULED_CONVERSATION).
When called with the authorization role SUPERVISOR or REGISTERED_USER, the behavior of the call depends on the configuration property com.unblu.conversation.message.allowNonAdminUsersChangeConversationTopicViaWebApi:

  • If the configuration property is true, the agent making the call can only change the conversation's topic if they're a participant in the conversation.
  • If the configuration property is false, the agent making the call can change the topic provided their participation type in the conversation is listed in the configuration property com.unblu.conversation.message.allowChangeConversationTopic.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
topic
string

the new topic

Responses

Request samples

Content type
application/json

Set the conversation topic

{
  • "topic": "Topic of the conversation"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

setVisibility

Sets the conversation visibility

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json
conversationVisibility
string (EConversationVisibility)
Enum: "PRIVATE" "RULE_BASED"
enum-descriptions: ["PRIVATE: Conversation can only be seen by participants","RULE_BASED: Conversation can be seen by participants as well as non-participating agents who can see the conversation's context person based on their visibility rules"]

The visibility of a conversation. The visibility used at creation time determines who is allowed to see the conversation.

Responses

Request samples

Content type
application/json

Set the conversation visibility

{
  • "conversationVisibility": "RULE_BASED"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

setVisitorData

Sets custom visitor data. The data is readable on the visitor side. Don't include any confidential information. Security-related data should be stored in the conversation metadata.

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation where the custom data should be added

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

the custom visitor data

$_type
string
Default: "ConversationsSetVisitorDataBody"
Value: "ConversationsSetVisitorDataBody"
visitorData
string

Custom visitor data in any format.

Responses

Request samples

Content type
application/json
{
  • "$_type": "ConversationsSetVisitorDataBody",
  • "visitorData": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [
    ],
  • "botParticipants": [
    ],
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "metadata": {
    },
  • "configuration": {
    },
  • "text": {
    }
}

startRecording

Manually start a conversation recording. The recording is only started if:

  • A compatible blob store is configured
  • Manually starting and stopping a recording is allowed
  • There is an active call or collaboration layer
  • There isn't already a conversation recording running
The recording is started asynchronously, and there may be a brief delay before it starts. The type of the recording (audio only or audio and video) is determined by the configuration. If an error occurs, a conversation.recording_failed webhook is triggered.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
conversationId
required
string

The conversation for which a recording should be started

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

stopRecording

Manually stop a conversation recording. The recording is stopped if:

  • There is a running conversation recording
  • Manually starting and stopping the recording is allowed

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
conversationId
required
string

The conversation for which a recording should be stopped

Responses

Response samples

Content type
application/json
{
  • "$_type": "Error",
  • "statusCode": 0,
  • "statusDescription": "string",
  • "errorMessage": "string"
}

updateConfiguration

Updates the configuration map for a specific conversation

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

the key-value map of settings that will be updated. The source for this map has to be the configuration attribute when you read the conversation using configuration in the expand query parameter.

property name*
string

Responses

Request samples

Content type
application/json

Map to update the translations

{
  • "$_version": "3854d16accc07ea25ddcca42924d5096",
  • "com.unblu.conversation.concierge.conciergeHandleVisitorOnboarding": "false",
  • "com.unblu.conversation.feature.callEnabled": "true",
  • "com.unblu.conversation.feature.textChatEnabled": "false",
  • "com.unblu.conversation.invitation.allowPublicLinkAccess": "false",
  • "com.unblu.conversation.lifecycle.autoEndOnLeave": "SECONDARY_AGENT"
}

Response samples

Content type
application/json

Conversation after the settings update (loaded with expanded configuration)

{
  • "$_type": "ConversationData",
  • "creationTimestamp": 1546300800000,
  • "endTimestamp": null,
  • "id": "AcviDb210C5BoFd6e_79oan",
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "topic": null,
  • "scheduledTimestamp": null,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [ ],
  • "botParticipants": [ ],
  • "state": "QUEUED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "en",
  • "tokboxSessionId": null,
  • "visitorData": null,
  • "conversationTemplateId": "ab32em6Be-5le_48rE1F9Ad",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": null,
  • "sourceId": null,
  • "sourceUrl": null,
  • "endReason": null,
  • "initialEngagementUrl": null,
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": null,
  • "metadata": null,
  • "configuration": {
    },
  • "text": null
}

updateMetadata

Updates the metadata map for a specific conversation

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

the key-value map of metadata that will be updated. The source for this map has to be the metadata attribute when you read the conversation using metadata in the expand query parameter.

property name*
string

Responses

Request samples

Content type
application/json

Map to update the medata

{
  • "$_version": "d41d8cd98f00b204e9800998ecf8427e",
  • "foo": "bar",
  • "lorem": "ipsum"
}

Response samples

Content type
application/json

Conversation after the metadata update (loaded with expanded metadata)

{
  • "$_type": "ConversationData",
  • "creationTimestamp": 1546300800000,
  • "endTimestamp": null,
  • "id": "AcviDb210C5BoFd6e_79oan",
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "topic": null,
  • "scheduledTimestamp": null,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [ ],
  • "botParticipants": [ ],
  • "state": "QUEUED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "en",
  • "tokboxSessionId": null,
  • "visitorData": null,
  • "conversationTemplateId": "ab32em6Be-5le_48rE1F9Ad",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": null,
  • "sourceId": null,
  • "sourceUrl": null,
  • "endReason": null,
  • "initialEngagementUrl": null,
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": null,
  • "metadata": {
    },
  • "configuration": null,
  • "text": null
}

updateText

Updates the text map for a specific conversation

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string

the conversation that is updated

query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

the key-value map of translations that will be updated. The source for this map has to be the text attribute when you read the conversation using text in the expand query parameter.

object

Responses

Request samples

Content type
application/json

Map to update the translations

{
  • "$_version": {
    },
  • "com.unblu.conversation.concierge.visitorOnboardingDoneMessage": {
    },
  • "com.unblu.conversation.concierge.visitorOnboardingWelcomeMessage": {
    }
}

Response samples

Content type
application/json

Conversation after the translations update (loaded with expanded text)

{
  • "$_type": "ConversationData",
  • "creationTimestamp": 1546300800000,
  • "endTimestamp": null,
  • "id": "AcviDb210C5BoFd6e_79oan",
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "topic": null,
  • "scheduledTimestamp": null,
  • "recipient": {
    },
  • "participants": [
    ],
  • "externalParticipants": [ ],
  • "botParticipants": [ ],
  • "state": "QUEUED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "conversationVisibility": "PRIVATE",
  • "locale": "en",
  • "tokboxSessionId": null,
  • "visitorData": null,
  • "conversationTemplateId": "ab32em6Be-5le_48rE1F9Ad",
  • "inheritConfigurationAndTexts": true,
  • "links": [
    ],
  • "externalMessengerChannelId": null,
  • "sourceId": null,
  • "sourceUrl": null,
  • "endReason": null,
  • "initialEngagementUrl": null,
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": null,
  • "metadata": null,
  • "configuration": null,
  • "text": {
    }
}

CustomActions

Service for Custom Actions

create

Creates a new custom action. You must specify the expanded parameter "actionIcon".

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "affFile" "avatar" "channelIcon" "configuration" "dicFile" "floorPlanImage" "metadata" "text"
Request Body schema: application/json

The custom action to create

$_type
string
Default: "CustomConversationActionData"
Value: "CustomConversationActionData"
id
string

Unique ID of the entity. When creating an entity, this property can be omitted; it's generated by the server.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is first stored in Unblu. Any value sent to the Unblu server is ignored, so it can be omitted. Note: If you set this property, Unblu returns the same value, but it isn't written to storage and doesn't affect data consistency.

modificationTimestamp
integer <int64>

Timestamp of the last modification. This property is always optional and can be omitted when sending data to the server. If sent to the server, it is ignored. It is only informational in character. Note: If you set this property, it returns the same value but it isn't written to storage and doesn't affect the data consistency.

version
integer <int64>

Version of the entity. Will be incremented on each change. New updates must always be based on the newest version, if not updates will be rejected. When creating an object, the version can be omitted.

accountId
string

ID of the account the entity belongs to. When creating an entity, the account ID can be omitted. It will be filled by the server with the account ID of the user currently logged in. When editing an entity, you must include the account ID.

key
string

The unique key of the action

name
string

The name of the custom action. Maximum of 250 characters. Can not be omitted.

description
string

The description of the custom action. Maximum of 500 characters. Can be omitted.

object

A map of localized versions of the name and description of this custom action

string or Avatar (object)
expand-query-key: actionIcon
type: ExpandableField

The avatar ID of the avatar used as the action's icon. The ID can be expanded.

state
string (ECustomActionState)
Enum: "ACTIVE" "INACTIVE" "INACTIVE_UNAVAILABLE"
enum-descriptions: ["ACTIVE: State when a custom action is manually enabled","INACTIVE: State when a custom action is manually disabled","INACTIVE_UNAVAILABLE: State when a custom action is automatically disabled because it's webhook registration got automatically disabled"]

Possible Custom Action State

object (CustomActionWebhookRegistration)

Holds information about the optional webhook registration or outbound request triggered by the invocation of a custom action.

  • For EWebApiVersion.V3 a webhook is triggered.
  • For newer versions an outbound request is triggered.

invocableFromFrontends
Array of strings (EFrontend)
Items Enum: "VISITOR_SITE_INTEGRATION" "VISITOR_SITE_EMBEDDED" "VISITOR_DESK" "VISITOR_MOBILE" "VISITOR_POPOUT" "AGENT_DESK" "TEAMS_AGENT_DESK" "AGENT_SINGLE_CONVERSATION_DESK" "AGENT_MOBILE" "BRANCH_CLIENT"

The frontends that the action may be invoked from

invocableForConversationStates
Array of strings (EConversationState)
Items Enum: "CREATED" "ONBOARDING" "REBOARDING" "QUEUED" "ACTIVE" "UNASSIGNED" "OFFBOARDING" "ENDED"

The conversation states the action may be invoked in

invocableForParticipationStates
Array of strings (EConversationParticipationState)
Items Enum: "CREATED" "ONBOARDING" "ACTIVE" "OFFBOARDING" "ENDED"

The participation states a person may invoke the action in

invocableBy
Array of strings (EConversationImpactingParticipationType)
Items Enum: "ASSIGNED_AGENT" "CONTEXT_PERSON" "SECONDARY_AGENT" "SECONDARY_VISITOR" "GHOST"

The types of participant who may invoke the action

triggerSystemMessage
boolean

A flag indicating whether the action should trigger a system message. The default value is true.

triggerVisitorMobileSdkEvent
boolean

A flag indicating whether the action should trigger a visitor mobile SDK event. The default value is false.

triggerVisitorEmbeddedApiEvent
boolean

A flag indicating whether the action should trigger an Embedded JS API event. The default value is false.

triggerVisitorFloatingApiEvent
boolean

A flag indicating whether the action should trigger a Visitor JS API event. The default value is false.

triggerAgentMobileSdkEvent
boolean

A flag indicating whether the action should trigger an agent mobile SDK event. The default value is false.

sortingOrder
integer <int32>

The sorting order within the custom actions when displayed in the action bar. The default value is 5.

type
required
string (ECustomActionType)
enum-descriptions: ["CONVERSATION: Conversation custom action type","PERSON: Person custom action type","MESSAGE: Message custom action type"]

The type of the custom action

actionBarPosition
string (EActionBarItemPosition)
Enum: "ALWAYS_VISIBLE" "ALWAYS_IN_OVERFLOW" "SHOW_IF_POSSIBLE"
enum-descriptions: ["ALWAYS_VISIBLE: Action is always displayed in the action bar","ALWAYS_IN_OVERFLOW: Action is always displayed in the overflow section of the action bar","SHOW_IF_POSSIBLE: Action is displayed in the action bar if there is enough space"]

The position of an item within an action bar

apiEventTriggerFilter
string (ECustomConversationActionEventTriggerFilter)
Enum: "SELF" "OTHERS" "ALL"
enum-descriptions: ["SELF: Trigger the custom action API event only for the person who invoked it","OTHERS: Trigger the custom action API event for everyone except the person who invoked it","ALL: Trigger the custom action API event for everyone"]

Who a custom conversation action API event should be triggered for

Responses

Callbacks

Request samples

Content type
application/json

Create a new custom action

{
  • "$_type": "CustomConversationActionData",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "key": "conv1-custom-action",
  • "name": "conv1-custom-action-name",
  • "description": "Custom action to be triggered on conversation level",
  • "translations": {
    },
  • "actionIcon": {
    },
  • "state": "ACTIVE",
  • "triggerWebhook": {},
  • "invocableFromFrontends": [
    ],
  • "invocableForConversationStates": [
    ],
  • "invocableForParticipationStates": [
    ],
  • "invocableBy": [
    ],
  • "triggerSystemMessage": true,
  • "triggerVisitorMobileSdkEvent": true,
  • "triggerVisitorEmbeddedApiEvent": true,
  • "triggerVisitorFloatingApiEvent": true,
  • "triggerAgentMobileSdkEvent": false,
  • "sortingOrder": 3,
  • "type": "CONVERSATION",
  • "actionBarPosition": "ALWAYS_VISIBLE",
  • "apiEventTriggerFilter": "ALL"
}

Response samples

Content type
application/json

New custom action

{
  • "$_type": "CustomConversationActionData",
  • "id": "qIzXjL9hRx-aIQVADZdq7Q",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "key": "conv1-custom-action",
  • "name": "conv1-custom-action-name",
  • "description": "Custom action to be triggered on conversation level",
  • "translations": {