Unblu Web API (7.57.3)

Download OpenAPI specification:Download

Unblu Web API v3

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

AccountSecrets

Service to read account secret of current account

getCurrentAccountSecret

getCurrentAccountSecret operation

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

Responses

Response samples

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

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.

The Account object can be expanded. If the query parameter expand is set to contactAddressId and/or billingAddressId (e.g ?expand=contactAddressId,billingAddressId) the address id's will be automatically resolved and wrapped into the object. This can also be done when sending the object

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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 as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 Address (object)
expand-query-key: billingAddress
type: ExpandableField

The id to an address which is used for billing, if the contact address should not be used. Should be null, if only contact address should be used.
When creating the Account object, this property can be omitted as there are not addresses for this account anyway. If it is desired to directly define a billing address for the account while creating it, the expand feature should be used.

string or Address (object)
expand-query-key: contactAddress
type: ExpandableField

The id of the contact address for the account. Is also used for billing if no extra billing address is defined.
When creating the Account object, this property can be omitted as there are not addresses for this account anyway. If it is desired to directly define a contact address for the account while creating it, the expand feature should be used.

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",
  • "billingAddress": null,
  • "contactAddress": null,
  • "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",
  • "billingAddress": null,
  • "contactAddress": null,
  • "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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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. The contact and the billing address can be directly resolved when using the expand feature.

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 entity for the given ID

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

The ID of the entity 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:
Request Body schema: application/json
accountId
string

Responses

Request samples

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

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:
Request Body schema: application/json
accountId
string

Responses

Request samples

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

Response samples

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

getByName

Returns an account by the given name or null, 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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "Account",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "name": "string",
  • "billingAddress": "string",
  • "contactAddress": "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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"

Responses

Response samples

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

isAccountNameAvailable

Checks if the account name is available for the given account id

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

The name which should be checked

accountId
string

The account id of the user for who the account should be set. When changing the name of an existing account, its id should be given. When the name is set to the one of the account, it will then also return true.

Responses

Response samples

Content type
application/json
true

read

Returns the entity for the given ID

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

ID of the entity which should be returned

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"

Responses

Response samples

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

readIngressStatus

readIngressStatus operation

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

Responses

Response samples

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

readMultiple

Gets a list of the entities 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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"
Request Body schema: application/json

The IDs for which to fetch the entities

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
[
  • {
    }
]

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:
Request Body schema: application/json
accountId
string

Responses

Request samples

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

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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 as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 Address (object)
expand-query-key: billingAddress
type: ExpandableField

The id to an address which is used for billing, if the contact address should not be used. Should be null, if only contact address should be used.
When creating the Account object, this property can be omitted as there are not addresses for this account anyway. If it is desired to directly define a billing address for the account while creating it, the expand feature should be used.

string or Address (object)
expand-query-key: contactAddress
type: ExpandableField

The id of the contact address for the account. Is also used for billing if no extra billing address is defined.
When creating the Account object, this property can be omitted as there are not addresses for this account anyway. If it is desired to directly define a contact address for the account while creating it, the expand feature should be used.

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",
  • "billingAddress": "string",
  • "contactAddress": "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",
  • "billingAddress": "string",
  • "contactAddress": "string",
  • "avatar": "string",
  • "translations": {
    },
  • "configuration": {
    },
  • "metadata": {
    },
  • "text": {
    }
}

Addresses

With this service, the addresses of accounts 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. This feature will be removed with Unblu 8

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

The entity to create

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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.

organisationName
string

Name of the organisation. Maximum of 250 characters. Can be omitted.

addressLine1
string

First address line. Maximum of 250 characters. Can be omitted.

addressLine2
string

Second address line. Maximum of 250 characters. Can be omitted.

zip
string

Zip code of the city. Maximum of 20 characters. Can not be omitted.

city
string

City name. Maximum of 250 characters. Can not be omitted.

state
string

Country state. Maximum of 250 characters. Can be omitted.

country
string

Country. Maximum of 250 characters. Can not be omitted.

Responses

Request samples

Content type
application/json
{
  • "$_type": "Address",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "organisationName": "string",
  • "addressLine1": "string",
  • "addressLine2": "string",
  • "zip": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "Address",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "organisationName": "string",
  • "addressLine1": "string",
  • "addressLine2": "string",
  • "zip": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string"
}

delete

Deletes the entity for the given ID. This feature will be removed with Unblu 8

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

The ID of the entity which should be deleted

Responses

Response samples

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

read

Returns the entity for the given ID. This feature will be removed with Unblu 8

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

ID of the entity which should be returned

Responses

Response samples

Content type
application/json
{
  • "$_type": "Address",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "organisationName": "string",
  • "addressLine1": "string",
  • "addressLine2": "string",
  • "zip": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string"
}

readMultiple

Gets a list of the entities with the given IDs. IDs that can't be found are ignored. This feature will be removed with Unblu 8

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

The IDs for which to fetch the entities

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
[
  • {
    }
]

search

Search for addresses in the current account. This feature will be removed with Unblu 8

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

List of filters to narrow the search of entities

Array of objects (AddressOrderBy) [ 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": "AddressQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

update

Updates the entity in the system with the given entity. This feature will be removed with Unblu 8

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

The entity to update

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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.

organisationName
string

Name of the organisation. Maximum of 250 characters. Can be omitted.

addressLine1
string

First address line. Maximum of 250 characters. Can be omitted.

addressLine2
string

Second address line. Maximum of 250 characters. Can be omitted.

zip
string

Zip code of the city. Maximum of 20 characters. Can not be omitted.

city
string

City name. Maximum of 250 characters. Can not be omitted.

state
string

Country state. Maximum of 250 characters. Can be omitted.

country
string

Country. Maximum of 250 characters. Can not be omitted.

Responses

Request samples

Content type
application/json
{
  • "$_type": "Address",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "organisationName": "string",
  • "addressLine1": "string",
  • "addressLine2": "string",
  • "zip": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "Address",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "organisationName": "string",
  • "addressLine1": "string",
  • "addressLine2": "string",
  • "zip": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string"
}

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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 as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 entity for the given ID

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

The ID of the entity 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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": {
    }
}

getDefaultForAccountId

Returns the default api key for the given account id. If the id of the account does not match with the one from the current user, null is returned

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": {
    }
}

getQuotaUsage

Returns the number of entities already existing (for the current account)

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

Responses

Response samples

Content type
application/json
0

read

Returns the entity for the given ID

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

ID of the entity which should be returned

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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 the entities 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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"
Request Body schema: application/json

The IDs for which to fetch the entities

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
[
  • {
    }
]

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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 as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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
true

changePassword

Changes password for currently logged in user, if the old password is currently matching the stored password

allow-impersonated-access: true
legacy-get: true
required-entry-path: PUBLIC
required-role: ["WEBUSER"]
Authorizations:
Request Body schema: application/json
oldPassword
string

The old password for validation

newPassword
string

The new password to set

Responses

Request samples

Content type
application/json

Change password

{
  • "oldPassword": "L0remPf18!",
  • "newPassword": "L1rem_Hq23"
}

Response samples

Content type
application/json
true

checkPasswordAgainstPolicy

checks if a 'potential' password is valid given the current password policy

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

Password to check against policy

Responses

Request samples

Content type
application/json

Check if the password will be accepted or not

{
  • "password": "L0remPf18!"
}

Response samples

Content type
application/json
[
  • "string"
]

checkSuperAdminPasswordFile

checks if a password file for the superadmin exists

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

Responses

Response samples

Content type
application/json
true

createAuthenticationToken

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

allow-impersonated-access: true
legacy-get: 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

Responses

Request samples

Content type
application/json

Create a token for a given username and password

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

Response samples

Content type
application/json
"string"

createAuthenticationTokenForCurrentUser

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

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

Responses

Response samples

Content type
application/json
"string"

getAuthenticatedUserDisplayName

Returns the name of the user which can be displayed somewhere

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

Responses

Response samples

Content type
application/json
"string"

getAuthenticatedUserName

Returns the name of the logged in user

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

Responses

Response samples

Content type
application/json
"string"

getCompactUser

Returns a compact user object, which contains the most important information about the current logged in user.

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

Responses

Response samples

Content type
application/json
{
  • "$_type": "CompactUser",
  • "id": "string",
  • "accountId": "string",
  • "username": "string",
  • "displayName": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "avatar": "string",
  • "teamId": "string",
  • "parentTeamIds": [
    ],
  • "permissions": {
    },
  • "authorizationRole": "SUPER_ADMIN",
  • "passwordDefined": true,
  • "virtual": true,
  • "propagated": true,
  • "impersonatedFromUserId": "string",
  • "impersonatedFromAccountId": "string"
}

getUserId

The user id of the current user

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

Responses

Response samples

Content type
application/json
"string"

getUserPermissions

Returns the permissions of the current user

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

Responses

Response samples

Content type
application/json
{
  • "$_type": "Permissions",
  • "allPermissions": true,
  • "permissions": [
    ],
  • "capacities": {
    }
}

getUserRole

Returns the user role of the current logged in user

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

Responses

Response samples

Content type
application/json
"string"

impersonate

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

allow-impersonated-access: true
legacy-get: 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

superUser
boolean

if true, the impersonated user will have the SUPER_ADMIN role (even if he hasn't normally).

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,
  • "superUser": false,
  • "redirectOnSuccess": null,
  • "redirectOnFailure": null
}

Response samples

Content type
application/json
true

isAuthenticated

Checks if the current client is authenticated and session has not expired

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

Responses

Response samples

Content type
application/json
true

isRegisteredUser

Checks if the user is a registered user and not a web user or anonymous one from the system

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

Responses

Response samples

Content type
application/json
true

isSuperAdmin

Checks if the current user is super admin

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

Responses

Response samples

Content type
application/json
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
legacy-get: 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
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 logout (clear internal session and session cookie on response)

allow-impersonated-access: true
legacy-get: 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
legacy-get: 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
true

sendPasswordResetMail

Sends a reset password link to the user by email only if the user exists

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

The username of the user which receives a password reset mail

Responses

Request samples

Content type
application/json

Reset impersonation and redirect to the Global Configuration page on success

{
  • "username": "r@email.com"
}

Response samples

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

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
legacy-get: 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"
}

setNewPassword

Saves a new password for the user behind the given authentication token. The token can be created withcreateAuthenticationToken. The user needs to be authenticated first.

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

for authentication.

password
string

the new password to be used

Responses

Request samples

Content type
application/json

Set a new password

{
  • "authenticationToken": "Y2w5el...naW77w=",
  • "password": "L0remPf18!"
}

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
legacy-get: 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
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
"AVAILABLE"

isAgentAvailable

Returns true if an agent is available 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 this 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
true

Avatars

With this service, the avatar pictures can be managed.

create

Creates the avatar in the system. The id can not be set for create operation, a new one is generated.

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

The entity to create

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the data consistency.

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.

imageZoomFactor
number <float>

Zoom factor to crop the original image. Must be bigger than 1. If omitted a minimal factor will be computed.

imageXPositionRatio
number <float>

Ratio to determine the horizontal position of the cropping area. Must be between 0 and 1: 0 means moved at the left border, 1 means moved at the right border. If omitted 0.5 will be used.

imageYPositionRatio
number <float>

Ratio to determine the vertical position of the cropping area. Must be between 0 and 1: 0 means moved at the top border, 1 means moved at the bottom border. If omitted 0.5 will be used.

imageRotationAngle
integer <int32>

Clockwise angle in degree (0-380) for rotation. If omitted 0 will be used.

imageData
string

Image content as data URL scheme (RFC2397 - data:[<mediatype>][;base64],<data>)

Responses

Request 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"
}

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"
}

read

Returns the avatar for the given id

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

Id of the entity 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.

acceptDialogOffer

Accepts a dialog offer that was triggered either via a BotOnboardingOfferEvent, BotReboardingOfferEvent or a BotOffboardingOfferEventwebhook.

Accepting the dialog offer will result in the dialog bot participating in the offered dialog. As soon as it is the dialogs turn it will receive aBotDialogOpenEvent webhook.

legacy-get: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
dialogOfferToken
string

the onboarding-, reboarding- or offboarding-offer token contained in the webhook.

Responses

Request samples

Content type
application/json

Accept dialog offer

{
  • "dialogOfferToken": "AcviDb210C5BoFd6e_79oan-c-diOogO6lQerZwXgjGQ1NCQ"
}

Response samples

Content type
application/json
"string"

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: "DialogBotData"
Value: "DialogBotData"
id
string

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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

webhookStatus
string (ERegistrationStatus)
Enum: "ACTIVE" "INACTIVE" "INACTIVE_UNAVAILABLE"
enum-descriptions: ["ACTIVE: Registration is active","INACTIVE: Registration is not active","INACTIVE_UNAVAILABLE: Registration is not active, because it is unavailable"]

Possible Webhook Registration Status

webhookEndpoint
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.

webhookApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3"
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."]

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

webhookSecret
string

Optional secret which is send with each webhook event.

Maximum length of 4000 characters.

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.

messageStateHandledExternally
boolean

Defines if the delivered/read state of messages is handled externally or by the collaboration server.
If the collaboration server handles the state, the messages are marked as delivered and read a soon as the webhook could be successfully dispatched to the configured webhookEndpoint.
If the it is handled externally, the external service has to call the api function to mark the message as delivered/read. Additionally webhook events for the message state of messages from the bot are dispatched.

automaticTypingStateHandlingEnabled
boolean

Defines if the bot should automatically display a typing indicator after receiving a message from the counterpart person. The indication starts 1s after the message is received. The typing state can also be influenced through the web API, independently of this property.

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.

Responses

Callbacks

Request samples

Content type
application/json

Create a new dialog bot

{
  • "$_type": "DialogBotData",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "name": "test-bot-1",
  • "description": null,
  • "botPersonId": "BoL9zZSbQeGGXMfCLxWZ4g",
  • "webhookStatus": "INACTIVE",
  • "webhookEndpoint": "https://test.unblu.com",
  • "webhookApiVersion": "V3",
  • "webhookSecret": null,
  • "onboardingOrder": 10,
  • "reboardingOrder": 10,
  • "offboardingOrder": 10,
  • "onboardingFilter": "VISITORS",
  • "reboardingEnabled": false,
  • "offboardingFilter": "NONE",
  • "needsCounterpartPresence": false,
  • "messageStateHandledExternally": false,
  • "automaticTypingStateHandlingEnabled": true,
  • "onTimeoutBehavior": "HAND_OFF"
}

Response samples

Content type
application/json

New dialog bot

{
  • "$_type": "DialogBotData",
  • "id": "c1a-ED06Dbat9daFBtC4l85",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-bot-1",
  • "description": null,
  • "botPersonId": "BoL9zZSbQeGGXMfCLxWZ4g",
  • "webhookStatus": "INACTIVE",
  • "webhookEndpoint": "https://test.unblu.com",
  • "webhookApiVersion": "V3",
  • "webhookSecret": null,
  • "onboardingOrder": 10,
  • "reboardingOrder": 10,
  • "offboardingOrder": 10,
  • "onboardingFilter": "VISITORS",
  • "reboardingEnabled": false,
  • "offboardingFilter": "NONE",
  • "needsCounterpartPresence": false,
  • "messageStateHandledExternally": false,
  • "automaticTypingStateHandlingEnabled": true,
  • "onTimeoutBehavior": "HAND_OFF"
}

Callback payload samples

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

declineDialogOffer

Declines a dialog offer that was triggered either via a BotOnboardingOfferEvent, BotReboardingOfferEvent or aBotOffboardingOfferEvent webhook.

No further webhooks will be sent for this dialog.

legacy-get: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
dialogOfferToken
string

the onboarding-, reboarding- or offboarding-offer token contained in the webhook.

Responses

Request samples

Content type
application/json

Decline a dialog offer

{
  • "dialogOfferToken": "AcviDb210C5BoFd6e_79oan-c-diOogO6lQerZwXgjGQ1NCQ"
}

Response samples

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

delete

Deletes an existing dialog bot

legacy-get: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
id
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.

legacy-get: true
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.

legacy-get: true
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.

legacy-get: true
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

Dialog bot

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

pingWebhook

Emits a WebhookPingEvent on the configured webhook for the dialog bot.

legacy-get: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
dialogBotId
string

The ID of the dialog bot

Responses

Request samples

Content type
application/json

Send a ping event for the given bot

{
  • "dialogBotId": "c1a-ED06Dbat9daFBtC4l85"
}

Response samples

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

read

Reads an existing dialog bot.

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

The ID of the dialog bot.

Responses

Response samples

Content type
application/json

Dialog bot

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

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 or TextQuestionPostMessageData

Responses

Request samples

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

Response samples

Content type
application/json
"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 or TextQuestionPostMessageData

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
"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: "DialogBotData"
Value: "DialogBotData"
id
string

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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

webhookStatus
string (ERegistrationStatus)
Enum: "ACTIVE" "INACTIVE" "INACTIVE_UNAVAILABLE"
enum-descriptions: ["ACTIVE: Registration is active","INACTIVE: Registration is not active","INACTIVE_UNAVAILABLE: Registration is not active, because it is unavailable"]

Possible Webhook Registration Status

webhookEndpoint
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.

webhookApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3"
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."]

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

webhookSecret
string

Optional secret which is send with each webhook event.

Maximum length of 4000 characters.

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.

messageStateHandledExternally
boolean

Defines if the delivered/read state of messages is handled externally or by the collaboration server.
If the collaboration server handles the state, the messages are marked as delivered and read a soon as the webhook could be successfully dispatched to the configured webhookEndpoint.
If the it is handled externally, the external service has to call the api function to mark the message as delivered/read. Additionally webhook events for the message state of messages from the bot are dispatched.

automaticTypingStateHandlingEnabled
boolean

Defines if the bot should automatically display a typing indicator after receiving a message from the counterpart person. The indication starts 1s after the message is received. The typing state can also be influenced through the web API, independently of this property.

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.

Responses

Request samples

Content type
application/json
{
  • "$_type": "DialogBotData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "botPersonId": "string",
  • "webhookStatus": "ACTIVE",
  • "webhookEndpoint": "string",
  • "webhookApiVersion": "V1",
  • "webhookSecret": "string",
  • "onboardingOrder": 0,
  • "reboardingOrder": 0,
  • "offboardingOrder": 0,
  • "onboardingFilter": "VISITORS",
  • "reboardingEnabled": true,
  • "offboardingFilter": "VISITORS",
  • "needsCounterpartPresence": true,
  • "messageStateHandledExternally": true,
  • "automaticTypingStateHandlingEnabled": true,
  • "onTimeoutBehavior": "ABORT"
}

Response samples

Content type
application/json
{
  • "$_type": "DialogBotData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "botPersonId": "string",
  • "webhookStatus": "ACTIVE",
  • "webhookEndpoint": "string",
  • "webhookApiVersion": "V1",
  • "webhookSecret": "string",
  • "onboardingOrder": 0,
  • "reboardingOrder": 0,
  • "offboardingOrder": 0,
  • "onboardingFilter": "VISITORS",
  • "reboardingEnabled": true,
  • "offboardingFilter": "VISITORS",
  • "needsCounterpartPresence": true,
  • "messageStateHandledExternally": true,
  • "automaticTypingStateHandlingEnabled": true,
  • "onTimeoutBehavior": "ABORT"
}

Call

read

read operation

allow-impersonated-access: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
id
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 once he can use for chat can differ. The once he can edit are depending on his role. The ones he can use in a chat depends on the team setup and his role. See the following policies for the list of chat messages available for chat:

  • All canned responses of the own user.
  • All canned responses of the team cascade (the users team and all of the parent teams)
  • All canned responses of the sub-teams 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.
In comparison to this the creation/editing/deleting of canned responses follow the following policies:
  • All canned responses of the own user.
  • All canned responses of the sub-teams 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 as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 ]
key
string

Unused since Unblu7 and same as title for backward compatibility.

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": [ ],
  • "key": "Have a nice day",
  • "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": [ ],
  • "key": "Have a nice day",
  • "title": "Have a nice day",
  • "text": "It was great chatting with you, have a nice day!",
  • "language": "en"
}

delete

Deletes the entity for the given ID

allow-impersonated-access: true
legacy-get: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
id
string

The ID of the entity which should be deleted

Responses

Response samples

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

getCannedResponsesAvailableForChat

Returns all CannedResponses that are available inside chat sessions for the calling user.
The user may be allowed to edit more than the returned canned responses if he has the rights.

Note: For editing use the getByOwnerTypeAndId or getAll service.


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

Responses

Response samples

Content type
application/json
[
  • {
    }
]

getWritableConfigurationScopes

Returns a list of all configuration scopes for which the calling user may add, delete or edit canned responses. Depending on the permissions of the users, these configuration scopes can be more than the ones which are available for the user in a chat.

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

Responses

Response samples

Content type
application/json
[
  • {
    }
]

getWritableConfigurationScopesAvailableForChat

Returns all configurations scopes available for chat to the calling user that the calling user may add, delete and edit canned responses for.

Note: The returned scopes may be equal to or be a subset of the the scopes returned by getWritableConfigurationScopes depending on the user role.

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

Responses

Response samples

Content type
application/json
[
  • {
    }
]

read

Returns the canned response for the given id

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

Id of the canned response which should be returned

Responses

Response samples

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

readMultiple

Gets a list of canned responses for the given id's

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

The id's for which the canned responses should be fetched

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
[
  • {
    }
]

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 as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 ]
key
string

Unused since Unblu7 and same as title for backward compatibility.

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": [
    ],
  • "key": "string",
  • "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": [
    ],
  • "key": "string",
  • "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": [
    ]
}

Contacts

Service to access the contact data for an account

create

Creates the given entity in the system. The ID of the entity is ignored for create operations, a new one is generated. This feature will be removed with Unblu 8

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

The entity to create

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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

type
string (EContactType)
Enum: "UNKNOWN_PHONE" "MOBILE_PHONE" "FIXNET_PHONE" "EMAIL" "URL"
enum-descriptions: ["UNKNOWN_PHONE: Any phone number (fixnet, mobile,...)","MOBILE_PHONE: Mobile phone number","FIXNET_PHONE: Fixnet phone number","EMAIL: email address","URL: Url (e.g. company homepage url)"]

Type of a contact information

data
string

The data of the contact information. e.g. a phone number. It is used for presentation. Can not be omitted.

rawData
string

The raw data of the contact information. In most cases it is the same as the data field. Can not be omitted.

Responses

Request samples

Content type
application/json
{
  • "$_type": "Contact",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "ownerId": "string",
  • "ownerType": "GLOBAL",
  • "type": "UNKNOWN_PHONE",
  • "data": "string",
  • "rawData": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "Contact",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "ownerId": "string",
  • "ownerType": "GLOBAL",
  • "type": "UNKNOWN_PHONE",
  • "data": "string",
  • "rawData": "string"
}

delete

Deletes the entity for the given ID. This feature will be removed with Unblu 8

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

The ID of the entity which should be deleted

Responses

Response samples

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

read

Returns the entity for the given ID. This feature will be removed with Unblu 8

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

ID of the entity which should be returned

Responses

Response samples

Content type
application/json
{
  • "$_type": "Contact",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "ownerId": "string",
  • "ownerType": "GLOBAL",
  • "type": "UNKNOWN_PHONE",
  • "data": "string",
  • "rawData": "string"
}

readMultiple

Gets a list of the entities with the given IDs. IDs that can't be found are ignored. This feature will be removed with Unblu 8

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

The IDs for which to fetch the entities

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
[
  • {
    }
]

search

Search for contacts in the current account. This feature will be removed with Unblu 8

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

List of filters to narrow the search of entities

Array of objects (ContactOrderBy) [ 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": "ContactQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

update

Updates the entity in the system with the given entity. This feature will be removed with Unblu 8

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

The entity to update

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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

type
string (EContactType)
Enum: "UNKNOWN_PHONE" "MOBILE_PHONE" "FIXNET_PHONE" "EMAIL" "URL"
enum-descriptions: ["UNKNOWN_PHONE: Any phone number (fixnet, mobile,...)","MOBILE_PHONE: Mobile phone number","FIXNET_PHONE: Fixnet phone number","EMAIL: email address","URL: Url (e.g. company homepage url)"]

Type of a contact information

data
string

The data of the contact information. e.g. a phone number. It is used for presentation. Can not be omitted.

rawData
string

The raw data of the contact information. In most cases it is the same as the data field. Can not be omitted.

Responses

Request samples

Content type
application/json
{
  • "$_type": "Contact",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "ownerId": "string",
  • "ownerType": "GLOBAL",
  • "type": "UNKNOWN_PHONE",
  • "data": "string",
  • "rawData": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "Contact",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "ownerId": "string",
  • "ownerType": "GLOBAL",
  • "type": "UNKNOWN_PHONE",
  • "data": "string",
  • "rawData": "string"
}

ConversationHistory

Service to get the history of conversations

getConversationRecordings

Gets the list of conversation recordings belonging to a specific conversation

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

ID of the conversation

Responses

Response samples

Content type
application/json
[
  • {
    }
]

getRecordedMinutes

Returns the length of conversation recording done between the given dates. If account id is specified, the result is restricted to the given account. If there were no recordings done in the given time for the account (if specified), zero is returned.
Dates are rounded to the beginning/end of day.

required-entry-path: INTERNAL
required-role: ["SUPER_ADMIN"]
Authorizations:
query Parameters
fromTime
integer <int64>

date from which to count the conversation recording length. Value is rounded to the beginning of the day.

toTime
integer <int64>

date to which to count the conversation recording length. Value is rounded to the end of the day.

accountId
string

optional

Responses

Response samples

Content type
application/json
0

read

Returns the conversation history data for a given conversation.

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

id of the conversation

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationHistoryData",
  • "id": "string",
  • "recipient": {
    },
  • "assigneePerson": {
    },
  • "contextPerson": {
    },
  • "endPerson": {
    },
  • "participants": [
    ],
  • "createdTimestamp": 0,
  • "onboardingTimestamp": 0,
  • "activationTimestamp": 0,
  • "assigneeJoinTimestamp": 0,
  • "reboardingTimestamp": 0,
  • "offboardingTimestamp": 0,
  • "endTimestamp": 0,
  • "lastMessageTimestamp": 0,
  • "lastCompletedRecordingTimestamp": 0,
  • "queuedTimestamp": 0,
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "tokboxSessionId": "string",
  • "conversationTemplateId": "string",
  • "externalMessengerChannelIconId": "string",
  • "externalMessengerChannelName": "string",
  • "topic": "string",
  • "sourceUrl": "string",
  • "scheduledTimestamp": 0,
  • "deletionTimestamp": 0,
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0
}

search

Generic conversation history search.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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
[
  • {
    }
]

searchMessages

Search messages belonging to a specific conversation

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

id of the conversation

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

List of filters to narrow the search of entities

Array of objects (MessageOrderBy) [ 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": "MessageQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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 as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 named area. Maximum of 250 characters. Can not be omitted.

description
string

Description of the named area. Maximum of 500 characters. Can be omitted.

defaultTemplate
boolean

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

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" "HEADLESS_PIN" "DOMCAP_PIN" "MOBILE_PIN" "WHITEBOARD_PIN" "SCREEN_SHARING_PIN" "CHAT_PIN" "CHAT_INVITE" "HEADLESS_INVITE" "WHITEBOARD_INVITE" "SCREEN_SHARING_INVITE" "SCHEDULED_CONVERSATION"
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","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.","HEADLESS_INVITE: (Agent initiated, agent centered) An agent creates universal 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."]

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

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,
  • "initialEngagementType": "CHAT_INVITE",
  • "translations": {
    },
  • "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,
  • "initialEngagementType": "CHAT_INVITE",
  • "translations": {
    },
  • "configuration": null,
  • "text": null,
  • "metadata": null
}

delete

Deletes the entity for the given ID

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

The ID of the entity 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" "HEADLESS_PIN" "DOMCAP_PIN" "MOBILE_PIN" "WHITEBOARD_PIN" "SCREEN_SHARING_PIN" "CHAT_PIN" "CHAT_INVITE" "HEADLESS_INVITE" "WHITEBOARD_INVITE" "SCREEN_SHARING_INVITE" "SCHEDULED_CONVERSATION"
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","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.","HEADLESS_INVITE: (Agent initiated, agent centered) An agent creates universal 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."]

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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,
  • "initialEngagementType": "CHAT_REQUEST",
  • "translations": {
    },
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

read

Returns the entity for the given ID

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

ID of the entity which should be returned

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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,
  • "initialEngagementType": "CHAT_REQUEST",
  • "translations": {
    },
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

readMultiple

Gets a list of the entities 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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"
Request Body schema: application/json

The IDs for which to fetch the entities

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
[
  • {
    }
]

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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 as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 named area. Maximum of 250 characters. Can not be omitted.

description
string

Description of the named area. Maximum of 500 characters. Can be omitted.

defaultTemplate
boolean

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

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" "HEADLESS_PIN" "DOMCAP_PIN" "MOBILE_PIN" "WHITEBOARD_PIN" "SCREEN_SHARING_PIN" "CHAT_PIN" "CHAT_INVITE" "HEADLESS_INVITE" "WHITEBOARD_INVITE" "SCREEN_SHARING_INVITE" "SCHEDULED_CONVERSATION"
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","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.","HEADLESS_INVITE: (Agent initiated, agent centered) An agent creates universal 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."]

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

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,
  • "initialEngagementType": "CHAT_REQUEST",
  • "translations": {
    },
  • "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,
  • "initialEngagementType": "CHAT_REQUEST",
  • "translations": {
    },
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

Conversations

Service to manage conversations

addParticipant

Adds a participant to a conversation.

legacy-get: true
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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"
Request Body schema: application/json
personId
string

Id of the person to add

connectedViaExternalMessenger
boolean

If the participant is sending messages via a messenger channel, this parameter must be set to true. Otherwise false or do not set.

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",
  • "connectedViaExternalMessenger": false,
  • "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

changeParticipantVisibility

Changes the visibility of a conversation's participant.

legacy-get: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
path Parameters
conversationId
required
string
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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 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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"
Request Body schema: application/json
$_type
string
Default: "ConversationData"
Value: "ConversationData"
creationTimestamp
integer <int64>

Unix timestamp (ms) when the entity was created. It is defined when the entity is stored the first time in the system.

endTimestamp
integer <int64>

Unix timestamp (ms) when the conversation ended, that is, all participants have finished their offboarding.
Null if the conversation hasn't ended yet.

id
string

Unique id of the conversation. When creating an entity this property can be omitted as it will be generated by the server.

accountId
string

Account id to which the conversation belongs to. When creating a conversation, the accountId can be omitted, as it will be filled by the server automatically with the account of the currently logged in user. When editing an entity, you must include the account ID.

topic
string

Topic of the conversation. Optional unless the initial engagement type is SCHEDULED_CONVERSATION, in which case it's mandatory.

scheduledTimestamp
integer <int64>

Unix timestamp (ms) when the conversation is scheduled for. Can only be set for conversations with the initial engagement type SCHEDULED_CONVERSATION.

any (ConversationRecipientData)

Recipient of a conversation: Either a single PersonData, TeamData, NamedAreaData or AccountData. For compatibility reasons,RecipientData is also supported.

Array of objects (ParticipantData) [ items ]

Current participants of the conversation

assigneePersonId
string

PersonId of the assigned agent (the main agent). Must be one of the participants.
May be null.

contextPersonId
string

PersonId of the context person (the main visitor). Must be one of the participants.
May be null.

state
string (EConversationState)
Enum: "CREATED" "ONBOARDING" "REBOARDING" "QUEUED" "ACTIVE" "UNASSIGNED" "OFFBOARDING" "ENDED"
enum-descriptions: ["CREATED: Initial state of a conversation","ONBOARDING: Depending of the engagement type of the conversation, the conversation stays in the onboarding state as long as the person in the center of the conversation is doing his onboarding","REBOARDING: When a message is send to an unassigned conversation, the conversation first is put into the reboarding state as long as the person in the center of the conversation is doing the reboarding.","QUEUED: Depending of the engagement type of the conversation, the conversation is put in the queued state when it is inside the queue.","ACTIVE: Conversation is active","UNASSIGNED: After there is no assignee of a conversation anymore, the conversation goes to unassigned state until a message from a visitor is written to start reboarding again, or until the conversation is requeued.","OFFBOARDING: Conversation is being ended","ENDED: Conversation is ended"]

Life cycle state of the conversation. Following transitions are possible:

  • CREATED --> ONBOARDING, OFFBOARDING
  • ONBOARDING --> QUEUED, ACTIVE, OFFBOARDING, UNASSIGNED
  • REBOARDING --> QUEUED, UNASSIGNED, OFFBOARDING
  • QUEUED --> ACTIVE, OFFBOARDING, UNASSIGNED
  • ACTIVE --> UNASSIGNED, OFFBOARDING, QUEUED
  • UNASSIGNED --> REBOARDING, OFFBOARDING, QUEUED, ACTIVE
  • OFFBOARDING --> ENDED
  • ENDED --> none

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" "HEADLESS_PIN" "DOMCAP_PIN" "MOBILE_PIN" "WHITEBOARD_PIN" "SCREEN_SHARING_PIN" "CHAT_PIN" "CHAT_INVITE" "HEADLESS_INVITE" "WHITEBOARD_INVITE" "SCREEN_SHARING_INVITE" "SCHEDULED_CONVERSATION"
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","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.","HEADLESS_INVITE: (Agent initiated, agent centered) An agent creates universal 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."]

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

locale
string

Locale of the conversation language (as BCP 47 language tag form including region if available)

tokboxSessionId
string

Vonage (formerly TokBox) sessionId. When creating a conversation, this property can be omitted, as it is generated by the Collaboration Server.
May be null.

visitorData
string

Custom data for the visitor. The data is readable and writable on the visitor side. Don't include any confidential information. Security-related data should be stored in the conversation metadata.
May be null.

conversationTemplateId
string

Template ID of the conversation. If omitted, the default conversation template will be retrieved based on the initial engagement type.

Array of objects (ConversationLink) [ items ]

Links to open the conversation. When creating a conversation this property can be omitted as it will be generated by the server.

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 a 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. Also if the external channel is not used (null), it has to be unique for this "null"

sourceUrl
string

URL identifying the system where the conversation was created. Null if created in Unblu.

endReason
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

initialEngagementUrl
string

The URL where the conversation originated. The following conversations always have an initial engagement URL:

  • Conversations initiated by a visitor on a customer's website where Unblu is integrated
  • PIN-based conversations, provided a visitor redeems the PIN on a customer's website where Unblu is integrated
  • Conversations created using the Web API, provided an initial engagement URL was included when the conversation was created
Conversations initiated from the mobile SDK don't have an initial engagement URL.

awaitedPersonType
string (EAwaitedPersonType)
Enum: "NONE" "VISITOR" "AGENT"
enum-descriptions: ["NONE","VISITOR","AGENT"]

Indicates which type of person the conversation is waiting for

awaitedPersonTypeChangeTimestamp
integer <int64>

Unix timestamp (ms) when the awaited person type last changed.
May be null.

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": "ConversationData",
  • "creationTimestamp": 0,
  • "endTimestamp": 0,
  • "id": "string",
  • "accountId": "string",
  • "topic": "string",
  • "scheduledTimestamp": 0,
  • "recipient": {
    },
  • "participants": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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": [
    ],
  • "assigneePersonId": null,
  • "contextPersonId": "nta30CBa-6d1a89cE57Db_F",
  • "state": "QUEUED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "en",
  • "tokboxSessionId": null,
  • "visitorData": "test-visitorData-1234",
  • "conversationTemplateId": "ab32em6Be-5le_48rE1F9Ad",
  • "links": [
    ],
  • "externalMessengerChannelId": null,
  • "sourceId": null,
  • "sourceUrl": "http://some.url/conv1",
  • "endReason": null,
  • "initialEngagementUrl": null,
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": null,
  • "configuration": null,
  • "text": null,
  • "metadata": 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

legacy-get: true
required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
id
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.

legacy-get: true
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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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
[
  • {
    }
]

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.

legacy-get: true
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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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" "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","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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

read

Returns the conversation for 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:
query Parameters
id
string

ID of the conversation which should be returned

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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

legacy-get: true
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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

setContextPerson

Sets a visitor as context person of a conversation.

Note: The person has to have an active participation in the conversation

legacy-get: true
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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

setLocale

Sets the locale of the conversation language (as BCP 47 language tag form including region if available).

legacy-get: true
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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"
Request Body schema: application/json
$_type
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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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.message.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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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 b 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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": "string",
  • "contextPersonId": "string",
  • "state": "CREATED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "string",
  • "tokboxSessionId": "string",
  • "visitorData": "string",
  • "conversationTemplateId": "string",
  • "links": [
    ],
  • "externalMessengerChannelId": "string",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "endReason": "ENDED_BY_PARTICIPANT",
  • "initialEngagementUrl": "string",
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": 0,
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": "4c0a388a98203ce7ffbba74b92d64495",
  • "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": [
    ],
  • "assigneePersonId": null,
  • "contextPersonId": "nta30CBa-6d1a89cE57Db_F",
  • "state": "QUEUED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "en",
  • "tokboxSessionId": null,
  • "visitorData": null,
  • "conversationTemplateId": "ab32em6Be-5le_48rE1F9Ad",
  • "links": [
    ],
  • "externalMessengerChannelId": null,
  • "sourceId": null,
  • "sourceUrl": null,
  • "endReason": null,
  • "initialEngagementUrl": null,
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": null,
  • "configuration": {
    },
  • "text": null,
  • "metadata": 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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": null,
  • "contextPersonId": "nta30CBa-6d1a89cE57Db_F",
  • "state": "QUEUED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "en",
  • "tokboxSessionId": null,
  • "visitorData": null,
  • "conversationTemplateId": "ab32em6Be-5le_48rE1F9Ad",
  • "links": [
    ],
  • "externalMessengerChannelId": null,
  • "sourceId": null,
  • "sourceUrl": null,
  • "endReason": null,
  • "initialEngagementUrl": null,
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": null,
  • "configuration": null,
  • "text": null,
  • "metadata": {
    }
}

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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": [
    ],
  • "assigneePersonId": null,
  • "contextPersonId": "nta30CBa-6d1a89cE57Db_F",
  • "state": "QUEUED",
  • "initialEngagementType": "CHAT_REQUEST",
  • "locale": "en",
  • "tokboxSessionId": null,
  • "visitorData": null,
  • "conversationTemplateId": "ab32em6Be-5le_48rE1F9Ad",
  • "links": [
    ],
  • "externalMessengerChannelId": null,
  • "sourceId": null,
  • "sourceUrl": null,
  • "endReason": null,
  • "initialEngagementUrl": null,
  • "awaitedPersonType": "NONE",
  • "awaitedPersonTypeChangeTimestamp": null,
  • "configuration": null,
  • "text": {
    },
  • "metadata": null
}

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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 as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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)

A web API model entity to hold information about the optional webhook registration triggered by the invocation of a custom action

invokableFromFrontends
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"

The frontends that the action may be invoked from

invokableForConversationStates
Array of strings (EConversationState)
Items Enum: "CREATED" "ONBOARDING" "REBOARDING" "QUEUED" "ACTIVE" "UNASSIGNED" "OFFBOARDING" "ENDED"

The conversation states the action may be invoked in

invokableForParticipationStates
Array of strings (EConversationParticipationState)
Items Enum: "CREATED" "ONBOARDING" "ACTIVE" "OFFBOARDING" "ENDED"

The participation states a person may invoke the action in

invokableBy
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
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": {},
  • "invokableFromFrontends": [
    ],
  • "invokableForConversationStates": [
    ],
  • "invokableForParticipationStates": [
    ],
  • "invokableBy": [
    ],
  • "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": {
    },
  • "actionIcon": {
    },
  • "state": "ACTIVE",
  • "triggerWebhook": {},
  • "invokableFromFrontends": [
    ],
  • "invokableForConversationStates": [
    ],
  • "invokableForParticipationStates": [
    ],
  • "invokableBy": [
    ],
  • "triggerSystemMessage": true,
  • "triggerVisitorMobileSdkEvent": true,
  • "triggerVisitorEmbeddedApiEvent": true,
  • "triggerVisitorFloatingApiEvent": true,
  • "triggerAgentMobileSdkEvent": false,
  • "sortingOrder": 3,
  • "type": "CONVERSATION",
  • "actionBarPosition": "ALWAYS_VISIBLE",
  • "apiEventTriggerFilter": "ALL"
}

Callback payload samples

Callback
Content type
application/json
{
  • "$_type": "CustomConversationActionInvocationEvent",
  • "timestamp": 0,
  • "eventType": "string",
  • "accountId": "string",
  • "actionType": "CONVERSATION",
  • "actionKey": "string",
  • "actionInvocationId": "string",
  • "actionInvocationTimestamp": 0,
  • "executedBy": {
    },
  • "conversation": {
    }
}

delete

Deletes a custom action. If there's a webhook registration connected to the action, the webhook is also deleted.

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

The ID of the custom action to delete

Responses

Response samples

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

pingWebhook

Emits a WebhookPingEvent on the webhook for the custom action

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

The ID of the custom action

Responses

Request samples

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

Response samples

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

read

Returns a CustomActionData by ID

required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
id
string
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"

Responses

Response samples

Content type
application/json

Custom action

{
  • "$_type": "CustomPersonActionData",
  • "id": "ARmohixpSDSj8ypTbyUm-g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "key": "pr1-custom-action",
  • "name": "pr1-custom-action-name",
  • "description": "Custom action to be triggered on person target",
  • "translations": {
    },
  • "actionIcon": "_1dA8a75B-9v3r6Ct4EbADa",
  • "state": "ACTIVE",
  • "triggerWebhook": {},
  • "invokableFromFrontends": [
    ],
  • "invokableForConversationStates": [
    ],
  • "invokableForParticipationStates": [
    ],
  • "invokableBy": [
    ],
  • "triggerSystemMessage": true,
  • "triggerVisitorMobileSdkEvent": false,
  • "triggerVisitorEmbeddedApiEvent": true,
  • "triggerVisitorFloatingApiEvent": true,
  • "triggerAgentMobileSdkEvent": false,
  • "sortingOrder": 5,
  • "type": "PERSON",
  • "availableForTargetPersonTypes": [
    ],
  • "availableForTargetFrontends": [
    ],
  • "apiEventTriggerFilter": "TARGET_PERSON"
}

search

Search for custom actions

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

The query to use for the search

$_type
string
Default: "CustomActionQuery"
Value: "CustomActionQuery"
Array of any (CustomActionSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (CustomActionOrderBy) [ 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": "CustomActionQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

update

Updates a custom action. The parameter "actionIcon" may not be null.

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

The custom action to update

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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)

A web API model entity to hold information about the optional webhook registration triggered by the invocation of a custom action

invokableFromFrontends
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"

The frontends that the action may be invoked from

invokableForConversationStates
Array of strings (EConversationState)
Items Enum: "CREATED" "ONBOARDING" "REBOARDING" "QUEUED" "ACTIVE" "UNASSIGNED" "OFFBOARDING" "ENDED"

The conversation states the action may be invoked in

invokableForParticipationStates
Array of strings (EConversationParticipationState)
Items Enum: "CREATED" "ONBOARDING" "ACTIVE" "OFFBOARDING" "ENDED"

The participation states a person may invoke the action in

invokableBy
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
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

Request samples

Content type
application/json

Update custom action request

{
  • "$_type": "CustomMessageActionData",
  • "id": "j3uz3AiSRp6wIB2wGq6L0g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "key": "msg1-custom-action_v2",
  • "name": "msg1-custom-action-name",
  • "description": "Custom action to be triggered on message target",
  • "translations": {
    },
  • "actionIcon": {
    },
  • "state": "ACTIVE",
  • "triggerWebhook": {},
  • "invokableFromFrontends": [
    ],
  • "invokableForConversationStates": [
    ],
  • "invokableForParticipationStates": [
    ],
  • "invokableBy": [
    ],
  • "triggerSystemMessage": true,
  • "triggerVisitorMobileSdkEvent": false,
  • "triggerVisitorEmbeddedApiEvent": false,
  • "triggerVisitorFloatingApiEvent": false,
  • "triggerAgentMobileSdkEvent": false,
  • "sortingOrder": 5,
  • "type": "MESSAGE",
  • "messageTypes": [
    ],
  • "fileMessageMimeTypeRegex": ".pdf",
  • "invokableForMessagesSentBy": [
    ],
  • "apiEventTriggerFilter": "SENDER"
}

Response samples

Content type
application/json

Updated custom action response

{
  • "$_type": "CustomMessageActionData",
  • "id": "j3uz3AiSRp6wIB2wGq6L0g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 2,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "key": "msg1-custom-action_v2",
  • "name": "msg1-custom-action-name",
  • "description": "Custom action to be triggered on message target",
  • "translations": {
    },
  • "actionIcon": "_1dA8a75B-9v3r6Ct4EbADa",
  • "state": "ACTIVE",
  • "triggerWebhook": {},
  • "invokableFromFrontends": [
    ],
  • "invokableForConversationStates": [
    ],
  • "invokableForParticipationStates": [
    ],
  • "invokableBy": [
    ],
  • "triggerSystemMessage": true,
  • "triggerVisitorMobileSdkEvent": false,
  • "triggerVisitorEmbeddedApiEvent": false,
  • "triggerVisitorFloatingApiEvent": false,
  • "triggerAgentMobileSdkEvent": false,
  • "sortingOrder": 5,
  • "type": "MESSAGE",
  • "messageTypes": [
    ],
  • "fileMessageMimeTypeRegex": ".pdf",
  • "invokableForMessagesSentBy": [
    ],
  • "apiEventTriggerFilter": "SENDER"
}

DeputyRelationships

Service to manage deputy relationships. A deputy relationship is needed if deputy delegation should be executed for unhandled conversation requests.

create

Creates the given deputy relationship in the system. The id of the deputy relationship can not be set for create operation, a new one is generated.

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

The deputy relationship to create

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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.

agentUserId
string

The agent user id to which the defined deputy belongs to

deputyType
string (EDeputyType)
Enum: "AGENT" "TEAM"
enum-descriptions: ["AGENT","TEAM"]
deputyId
string

The id of the user or team which is the deputy of the defined agent user

escalationLevel
string (EDeputyDelegationEscalationLevel)
Enum: "LEVEL_1" "LEVEL_2" "LEVEL_3"
enum-descriptions: ["LEVEL_1","LEVEL_2","LEVEL_3"]

The escalation levels for a deputy delegation

Responses

Request samples

Content type
application/json
{
  • "$_type": "DeputyRelationship",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "agentUserId": "string",
  • "deputyType": "AGENT",
  • "deputyId": "string",
  • "escalationLevel": "LEVEL_1"
}

Response samples

Content type
application/json
{
  • "$_type": "DeputyRelationship",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "agentUserId": "string",
  • "deputyType": "AGENT",
  • "deputyId": "string",
  • "escalationLevel": "LEVEL_1"
}

delete

Deletes the deputy relationship for the given id

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

The id of the deputy relationship which should be deleted

Responses

Response samples

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

read

Returns the deputy relationship for the given id

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

Id of the deputy relationship which should be returned

Responses

Response samples

Content type
application/json
{
  • "$_type": "DeputyRelationship",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "agentUserId": "string",
  • "deputyType": "AGENT",
  • "deputyId": "string",
  • "escalationLevel": "LEVEL_1"
}

readMultiple

Gets a list of deputy relationships for the given id's

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

The id's for which the deputy relationships should be fetched

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
[
  • {
    }
]

search

Search for deputy relationships in the current account

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

List of filters to narrow the search of entities

Array of objects (DeputyRelationshipOrderBy) [ 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": "DeputyRelationshipQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

update

Updates the deputy relationship in the system with the given entity.

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

The deputy relationship to update

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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.

agentUserId
string

The agent user id to which the defined deputy belongs to

deputyType
string (EDeputyType)
Enum: "AGENT" "TEAM"
enum-descriptions: ["AGENT","TEAM"]
deputyId
string

The id of the user or team which is the deputy of the defined agent user

escalationLevel
string (EDeputyDelegationEscalationLevel)
Enum: "LEVEL_1" "LEVEL_2" "LEVEL_3"
enum-descriptions: ["LEVEL_1","LEVEL_2","LEVEL_3"]

The escalation levels for a deputy delegation

Responses

Request samples

Content type
application/json
{
  • "$_type": "DeputyRelationship",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "agentUserId": "string",
  • "deputyType": "AGENT",
  • "deputyId": "string",
  • "escalationLevel": "LEVEL_1"
}

Response samples

Content type
application/json
{
  • "$_type": "DeputyRelationship",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "agentUserId": "string",
  • "deputyType": "AGENT",
  • "deputyId": "string",
  • "escalationLevel": "LEVEL_1"
}

writeAgentDeputies

Batch writes the deputies of an agent. All previous existing deputies of that agent will be replaced.

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

The deputy relationships for that an agent with each escalation level.

$_type
string
Default: "WriteAgentDeputyRelationshipsBody"
Value: "WriteAgentDeputyRelationshipsBody"
agentUserId
string

The agent user ID for which the deputies should be defined

Array of objects (DeputyDefinition) [ items ]

All EDeputyDelegationEscalationLevel.LEVEL_1 deputies

Array of objects (DeputyDefinition) [ items ]

All EDeputyDelegationEscalationLevel.LEVEL_2 deputies

Array of objects (DeputyDefinition) [ items ]

All EDeputyDelegationEscalationLevel.LEVEL_3 deputies

Responses

Request samples

Content type
application/json
{
  • "$_type": "WriteAgentDeputyRelationshipsBody",
  • "agentUserId": "string",
  • "level1": [
    ],
  • "level2": [
    ],
  • "level3": [
    ]
}

Response samples

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

Domains

Service to manage the domains of the account. A domain needs to be defined to use unblu on it.

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:
Request Body schema: application/json

The entity to create

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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.

domainName
string

The name/address of the domain. It should normally contain a protocol (e.g. http:// or https://) and the url of the domain (e.g. www.unblu.com). Maximum of 250 characters. Can not be omitted. 250 characters.

Responses

Request samples

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

Response samples

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

delete

Deletes the entity for the given ID

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

The ID of the entity which should be deleted

Responses

Response samples

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

getAccountDomainsAsString

Returns all configured domains for the current account as strings

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

Responses

Response samples

Content type
application/json
[
  • "string"
]

getQuotaUsage

Returns the number of entities already existing (for the current account)

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

Responses

Response samples

Content type
application/json
0

read

Returns the entity for the given ID

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

ID of the entity which should be returned

Responses

Response samples

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

readMultiple

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

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

The IDs for which to fetch the entities

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
[
  • {
    }
]

search

Search for domains in the current account

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

List of filters to narrow the search of entities

Array of objects (DomainOrderBy) [ 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": "DomainQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "DomainResult",
  • "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:
Request Body schema: application/json

The entity to update

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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.

domainName
string

The name/address of the domain. It should normally contain a protocol (e.g. http:// or https://) and the url of the domain (e.g. www.unblu.com). Maximum of 250 characters. Can not be omitted. 250 characters.

Responses

Request samples

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

Response samples

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

ExternalMessengers

Manages all types of ExternalMessengerChannel and can be used to send messages from external messengers into a collaboration server conversation.

create

Creates a new external messenger channel

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

The channel which should be created

$_type
string
Default: "CustomExternalMessengerChannel"
id
string

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 channel. Needs to be unique in the account.

description
string

Optional description of the channel

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

Channel icon of the entity: id that can be expanded.

sourceId
string

Custom identifier to find the source of the channel.
Has a maximum of 250 characters

type
string (EExternalMessengerChannelType)
Enum: "CUSTOM" "WHATS_APP" "FACEBOOK"
enum-descriptions: ["CUSTOM: Custom channel which is connected via rest and webhooks","WHATS_APP: WhatsApp channel which is managed by the collaboration server","FACEBOOK: Facebook channel which is managed by the collaboration server"]

The type of the external messenger channel

webhookEndpoint
string

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

webhookApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3"
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."]

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

webhookSecret
string

A secret which is send with each webhook event. Maximum length of 4000 characters. Can be omitted.

webhookStatus
string (ERegistrationStatus)
Enum: "ACTIVE" "INACTIVE" "INACTIVE_UNAVAILABLE"
enum-descriptions: ["ACTIVE: Registration is active","INACTIVE: Registration is not active","INACTIVE_UNAVAILABLE: Registration is not active, because it is unavailable"]

Possible Webhook Registration Status

messageStateHandledExternally
boolean

Defines if the delivered/read state of messages is handled externally or by the collaboration server.
If the collaboration server handles the state, the messages are marked as delivered and read a soon as the webhook could be successfully dispatched to the configured webhookEndpoint.
If the it is handled externally, the external service has to call the api function to mark the message as delivered/read. Additionally webhook events for the message state of messages from the external messenger are dispatched.

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

Callbacks

Request samples

Content type
application/json

Create a new external messenger channel

{
  • "$_type": "CustomExternalMessengerChannel",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "name": "custom name",
  • "description": "custom description",
  • "channelIcon": null,
  • "sourceId": "custom-sourceId",
  • "type": "CUSTOM",
  • "webhookEndpoint": "http://custom/endpoint",
  • "webhookApiVersion": "V3",
  • "webhookSecret": "custom-secret",
  • "webhookStatus": "ACTIVE",
  • "messageStateHandledExternally": null,
  • "metadata": null
}

Response samples

Content type
application/json

New external messenger channel

{
  • "$_type": "CustomExternalMessengerChannel",
  • "id": "cne9hsne4rgxa2es6MenC8d",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "custom name",
  • "description": "custom description",
  • "channelIcon": "custom",
  • "sourceId": "custom-sourceId",
  • "type": "CUSTOM",
  • "webhookEndpoint": "http://custom/endpoint",
  • "webhookApiVersion": "V3",
  • "webhookSecret": "custom-secret",
  • "webhookStatus": "ACTIVE",
  • "messageStateHandledExternally": false,
  • "metadata": null
}

Callback payload samples

Callback
Content type
application/json
{
  • "$_type": "ExternalMessengerMessageStateEvent",
  • "timestamp": 0,
  • "eventType": "string",
  • "accountId": "string",
  • "messageId": "string",
  • "state": "DELIVERED",
  • "sourceId": "string",
  • "externalMessengerChannelId": "string",
  • "conversationId": "string"
}

delete

Deletes an external messenger channel. All conversations connected to this channel will be ended as soon as they activated again

legacy-get: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
query Parameters
id
string

The ID of the channel which should be deleted

Responses

Response samples

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

getByName

Returns the channel for the given name

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

The name of the external messenger channel

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"

Responses

Response samples

Content type
application/json

External messenger channel

{
  • "$_type": "CustomExternalMessengerChannel",
  • "id": "cne9hsne4rgxa2es6MenC8d",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "123 name",
  • "description": "123 description",
  • "channelIcon": "custom",
  • "sourceId": "123-sourceId",
  • "type": "CUSTOM",
  • "webhookEndpoint": "http://123/endpoint",
  • "webhookApiVersion": "V3",
  • "webhookSecret": "123-secret",
  • "webhookStatus": "ACTIVE",
  • "messageStateHandledExternally": false,
  • "metadata": null
}

messageDelivered

Marks a message as delivered to the given person. If no person is specified, it will be marked as delivered to all persons which are connected via the external messenger.
If the message is also read, use directly the end point messageRead as it will mark it as delivered too.

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

The id of the conversation

externalMessengerChannelId
string

The id of the custom external messenger channel

messageId
string

The id of the message from the conversation, which should be marked as delivered

personId
string

The id of the person who received the message. If null, it will be assumed that the message has been delivered to all persons which are connected via the external messenger.

Responses

Request samples

Content type
application/json

Mark a message as delivered

{
  • "conversationId": "AcviDb210C5BoFd6e_79oan",
  • "externalMessengerChannelId": "cne9hsne4rgxa2es6MenC8d",
  • "messageId": "mGesYagET_2GipaDGinA9A",
  • "personId": "nta30CBa-6d1a89cE57Db_F"
}

Response samples

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

messageRead

Marks a message as read by the given person. If no person is specified, it will be marked as read by all persons which are connected via the external messenger.
This will also mark the message as delivered, if it was not already.

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

The id of the conversation

externalMessengerChannelId
string

The id of the custom external messenger channel

messageId
string

The id of the message from the conversation, which should be marked as read

personId
string

The id of the person who read the message. If null, it will be assumed that the message has been read by all persons which are connected via the external messenger.

Responses

Request samples

Content type
application/json

Mark a message as delivered

{
  • "conversationId": "AcviDb210C5BoFd6e_79oan",
  • "externalMessengerChannelId": "cne9hsne4rgxa2es6MenC8d",
  • "messageId": "mGesYagET_2GipaDGinA9A",
  • "personId": "nta30CBa-6d1a89cE57Db_F"
}

Response samples

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

messageSendFailed

Indicates that the message could not be sent to the external messenger. There are the following fail state which can be set:

  • ESendFailState.RETRYABLE: if a retry of sending in the future may solve the problem. (e.g. temporary connection failure). In this case the user will be provided with a UI to retry sending the message
  • ESendFailState.TERMINAL: if no amount of retries would solve the problem. (e.g. the underlying conversation no longer exists in the external messenger.)

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

The id of the conversation

externalMessengerChannelId
string

The id of the custom external messenger channel

messageId
string

The id of the message from the conversation, which should be set to the failed state

failedState
string (ESendFailState)
Enum: "RETRYABLE" "TERMINAL"
enum-descriptions: ["RETRYABLE: Message could not be sent, but it is not terminal and can be tried again","TERMINAL: Message could not be sent and it will not be possible to send it again"]

The failed state of a message which was sent to an external messenger

failureText
string

A text which describes why a message could not be sent to the external messenger. This text will be displayed to the user in the UI of the message

Responses

Request samples

Content type
application/json
{
  • "conversationId": "string",
  • "externalMessengerChannelId": "string",
  • "messageId": "string",
  • "failedState": "RETRYABLE",
  • "failureText": "string"
}

Response samples

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

messageSentSuccessfully

Indication that a message was successfully sent to the external messenger.

This will be visualized in the Unblu UI.

Note: This does not mean the message has been delivered to or read by the recipient. These states can be updated using themessageDelivered and messageRead services.

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

The id of the conversation

externalMessengerChannelId
string

The id of the custom external messenger channel

messageId
string

The id of the message from the conversation, which was successfully sent

Responses

Request samples

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

Response samples

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

pingCustomChannel

Emits a WebhookPingEvent on the configured webhook for the custom channel.

legacy-get: true
required-entry-path: INTERNAL
required-role: ["ADMIN"]
Authorizations:
Request Body schema: application/json
externalMessengerChannelId
string

The ID of an external messenger channel of type EExternalMessengerChannelType.CUSTOM

Responses

Request samples

Content type
application/json

Send a ping event for the given External messenger channel

{
  • "externalMessengerChannelId": "cne9hsne4rgxa2es6MenC8d"
}

Response samples

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

read

Returns the channel for the given ID

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

The ID of the external messenger channel

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"

Responses

Response samples

Content type
application/json

External messenger channel

{
  • "$_type": "CustomExternalMessengerChannel",
  • "id": "cne9hsne4rgxa2es6MenC8d",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "custom name",
  • "description": "custom description",
  • "channelIcon": "custom",
  • "sourceId": "custom-sourceId",
  • "type": "CUSTOM",
  • "webhookEndpoint": "http://custom/endpoint",
  • "webhookApiVersion": "V3",
  • "webhookSecret": "custom-secret",
  • "webhookStatus": "ACTIVE",
  • "messageStateHandledExternally": false,
  • "metadata": null
}

search

Search for external messenger channels in the current account

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

List of filters to narrow the search of entities

Array of objects (ExternalMessengerChannelOrderBy) [ 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": "ExternalMessengerChannelQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

sendMessage

Send a message to a conversation. The corresponding conversation has to be connected to the same custom channel.

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

The message to send into the conversation.

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

The id of the conversation to which this message belongs to

externalMessengerChannelId
string

The id of the external messenger channel this message belongs to

senderPersonId
string

ID of the 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

sourceId
string

An id identifying the source of the external message. Typically the id of the message in the other messaging system

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 or TextQuestionPostMessageData

Responses

Request samples

Content type
application/json
Example

Send text message containing fallback text and quick replies to external messenger channel

{
  • "$_type": "ExternalMessengerPostMessage",
  • "conversationId": "AcviDb210C5BoFd6e_79oan",
  • "externalMessengerChannelId": "cne9hsne4rgxa2es6MenC8d",
  • "senderPersonId": "nta30CBa-6d1a89cE57Db_F",
  • "recipientPersonIds": null,
  • "sourceId": "message-source",
  • "replyToMessageId": null,
  • "messageData": {
    }
}

Response samples

Content type
application/json
"string"

update

Updates an external messenger channel

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

The channel which should be updated

$_type
string
Default: "CustomExternalMessengerChannel"
id
string

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 channel. Needs to be unique in the account.

description
string

Optional description of the channel

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

Channel icon of the entity: id that can be expanded.

sourceId
string

Custom identifier to find the source of the channel.
Has a maximum of 250 characters

type
string (EExternalMessengerChannelType)
Enum: "CUSTOM" "WHATS_APP" "FACEBOOK"
enum-descriptions: ["CUSTOM: Custom channel which is connected via rest and webhooks","WHATS_APP: WhatsApp channel which is managed by the collaboration server","FACEBOOK: Facebook channel which is managed by the collaboration server"]

The type of the external messenger channel

webhookEndpoint
string

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

webhookApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3"
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."]

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

webhookSecret
string

A secret which is send with each webhook event. Maximum length of 4000 characters. Can be omitted.

webhookStatus
string (ERegistrationStatus)
Enum: "ACTIVE" "INACTIVE" "INACTIVE_UNAVAILABLE"
enum-descriptions: ["ACTIVE: Registration is active","INACTIVE: Registration is not active","INACTIVE_UNAVAILABLE: Registration is not active, because it is unavailable"]

Possible Webhook Registration Status

messageStateHandledExternally
boolean

Defines if the delivered/read state of messages is handled externally or by the collaboration server.
If the collaboration server handles the state, the messages are marked as delivered and read a soon as the webhook could be successfully dispatched to the configured webhookEndpoint.
If the it is handled externally, the external service has to call the api function to mark the message as delivered/read. Additionally webhook events for the message state of messages from the external messenger are dispatched.

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

Update a external messenger channel

{
  • "$_type": "CustomExternalMessengerChannel",
  • "id": "cne9hsne4rgxa2es6MenC8d",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "Updated Name ",
  • "description": "custom description",
  • "channelIcon": "custom",
  • "sourceId": "custom-sourceId",
  • "type": "CUSTOM",
  • "webhookEndpoint": "http://custom/endpoint",
  • "webhookApiVersion": "V3",
  • "webhookSecret": "custom-secret",
  • "webhookStatus": "ACTIVE",
  • "messageStateHandledExternally": false,
  • "metadata": null
}

Response samples

Content type
application/json

Updated external messenger channel

{
  • "$_type": "CustomExternalMessengerChannel",
  • "id": "cne9hsne4rgxa2es6MenC8d",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "Updated Name ",
  • "description": "custom description",
  • "channelIcon": "custom",
  • "sourceId": "custom-sourceId",
  • "type": "CUSTOM",
  • "webhookEndpoint": "http://custom/endpoint",
  • "webhookApiVersion": "V3",
  • "webhookSecret": "custom-secret",
  • "webhookStatus": "ACTIVE",
  • "messageStateHandledExternally": false,
  • "metadata": null
}

FileUploadInterceptors

Service to manage file upload interceptors. File upload interceptors also use this service to interact with Unblu.

approveFileUpload

Approves a file upload for which approval was requested through a file_upload_interceptor.new_file webhook.

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

The token used to identify the file this action applies to. The token is received when approval is requested through a file_upload_interceptor.new_file webhook. Each file upload approval request contains a unique token.

Responses

Request samples

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

Response samples

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

create

Creates a new file upload interceptor

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

The file upload interceptor to create

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 file upload interceptor. Maximum length of 250 characters. Mandatory.

description
string

Description of the file upload interceptor. Maximum length of 500 characters. Optional.

order
integer <int64>

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

mimeTypeRegex
string

Regular expression used to determine if the interceptor must be used for a particular MIME type. Leave it empty to match all MIME types.

webhookStatus
string (ERegistrationStatus)
Enum: "ACTIVE" "INACTIVE" "INACTIVE_UNAVAILABLE"
enum-descriptions: ["ACTIVE: Registration is active","INACTIVE: Registration is not active","INACTIVE_UNAVAILABLE: Registration is not active, because it is unavailable"]

Possible Webhook Registration Status

webhookEndpoint
string

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

The following event is sent to the endpoint:

  • TypedEvent.FILE_UPLOAD_INTERCEPTOR_NEW_FILE: On each file uploaded to a conversation.

webhookApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3"
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."]

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

webhookSecret
string

Optional secret sent with each webhook event. Maximum length of 4000 characters.

Responses

Callbacks

Request samples

Content type
application/json

Create a new file upload interceptor

{
  • "$_type": "FileUploadInterceptorData",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "name": "test-file-upload-interceptor-1",
  • "description": null,
  • "order": 3,
  • "mimeTypeRegex": null,
  • "webhookStatus": "INACTIVE",
  • "webhookEndpoint": "https://test.unblu.com",
  • "webhookApiVersion": "V3",
  • "webhookSecret": null
}

Response samples

Content type
application/json

New file upload interceptor

{
  • "$_type": "FileUploadInterceptorData",
  • "id": "VhSaA_3wThCuS_AOKxC0VA",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-file-upload-interceptor-1",
  • "description": null,
  • "order": 3,
  • "mimeTypeRegex": null,
  • "webhookStatus": "INACTIVE",
  • "webhookEndpoint": "https://test.unblu.com",
  • "webhookApiVersion": "V3",
  • "webhookSecret": null
}

Callback payload samples

Callback
POST: file_upload_interceptor.new_file
Content type
application/json
{
  • "$_type": "InterceptorNewFileEvent",
  • "timestamp": 0,
  • "eventType": "string",
  • "accountId": "string",
  • "apiToken": "string",
  • "name": "string",
  • "mimeType": "string",
  • "length": 0,
  • "downloadLink": "string",
  • "source": "BOT",
  • "person": {
    },
  • "conversationId": "string"
}

delete

Deletes an existing file upload interceptor

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

The ID of the file upload interceptor which should be deleted

Responses

Response samples

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

getByName

Searches for a file upload interceptor with the given name

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

The name of the file upload interceptor

Responses

Response samples

Content type
application/json

File upload interceptor

{
  • "$_type": "FileUploadInterceptorData",
  • "id": "VhSaA_3wThCuS_AOKxC0VA",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-file-upload-interceptor-1",
  • "description": null,
  • "order": 1,
  • "mimeTypeRegex": null,
  • "webhookStatus": "INACTIVE",
  • "webhookEndpoint": "http://test.webhook.com",
  • "webhookApiVersion": "V3",
  • "webhookSecret": null
}

pingWebhook

Emits a WebhookPingEvent on the configured webhook for the given file upload interceptor

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

The ID of the file upload interceptor

Responses

Request samples

Content type
application/json

Send a ping event for the given file upload interceptor

{
  • "interceptorId": "VhSaA_3wThCuS_AOKxC0VA"
}

Response samples

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

read

Reads an existing file upload interceptor.

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

The ID of the file upload interceptor to read

Responses

Response samples

Content type
application/json

File upload interceptor

{
  • "$_type": "FileUploadInterceptorData",
  • "id": "VhSaA_3wThCuS_AOKxC0VA",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-file-upload-interceptor-1",
  • "description": null,
  • "order": 1,
  • "mimeTypeRegex": null,
  • "webhookStatus": "INACTIVE",
  • "webhookEndpoint": "http://test.webhook.com",
  • "webhookApiVersion": "V3",
  • "webhookSecret": null
}

rejectFileUpload

Rejects a file upload for which approval was requested through a file_upload_interceptor.new_file webhook.

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

The token used to identify the file this action applies to. The token is received when approval is requested through a file_upload_interceptor.new_file webhook. Each file upload approval request contains a unique token.

reason
string

A text explaining why the file upload was rejected. The text is displayed to end users as it was transmitted.

Responses

Request samples

Content type
application/json
{
  • "token": "string",
  • "reason": "string"
}

Response samples

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

search

Searches for file upload interceptors in the current account

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

List of filters to narrow the search of entities

Array of objects (FileUploadInterceptorOrderBy) [ 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": "FileUploadInterceptorQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

update

Updates an existing file upload interceptor

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 file upload interceptor. Maximum length of 250 characters. Mandatory.

description
string

Description of the file upload interceptor. Maximum length of 500 characters. Optional.

order
integer <int64>

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

mimeTypeRegex
string

Regular expression used to determine if the interceptor must be used for a particular MIME type. Leave it empty to match all MIME types.

webhookStatus
string (ERegistrationStatus)
Enum: "ACTIVE" "INACTIVE" "INACTIVE_UNAVAILABLE"
enum-descriptions: ["ACTIVE: Registration is active","INACTIVE: Registration is not active","INACTIVE_UNAVAILABLE: Registration is not active, because it is unavailable"]

Possible Webhook Registration Status

webhookEndpoint
string

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

The following event is sent to the endpoint:

  • TypedEvent.FILE_UPLOAD_INTERCEPTOR_NEW_FILE: On each file uploaded to a conversation.

webhookApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3"
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."]

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

webhookSecret
string

Optional secret sent with each webhook event. Maximum length of 4000 characters.

Responses

Request samples

Content type
application/json
{
  • "$_type": "FileUploadInterceptorData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "order": 0,
  • "mimeTypeRegex": "string",
  • "webhookStatus": "ACTIVE",
  • "webhookEndpoint": "string",
  • "webhookApiVersion": "V1",
  • "webhookSecret": "string"
}

Response samples

Content type
application/json
{
  • "$_type": "FileUploadInterceptorData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "order": 0,
  • "mimeTypeRegex": "string",
  • "webhookStatus": "ACTIVE",
  • "webhookEndpoint": "string",
  • "webhookApiVersion": "V1",
  • "webhookSecret": "string"
}

validateMimeTypeRegex

validateMimeTypeRegex operation

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

Responses

Request samples

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

Response samples

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

Global

With this service the global Unblu system can be managed.

For super-admin the Global object can be expanded to set configuration or translations.

installLicense

Install a new license in the global server.

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

licenseContent

string

Responses

Response samples

Content type
application/json
{
  • "$_type": "GlobalData",
  • "serverIdentifier": "string",
  • "currentLicense": {
    },
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

ping

Checks whether the system is ready to receive requests. If the system is ready, it returns a 200 HTTP status, otherwise it returns a 503 HTTP status.

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

Responses

Response samples

Content type
application/json
{
  • "$_type": "GlobalPingResponse",
  • "status": "string"
}

productVersion

productVersion operation

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

Responses

Response samples

Content type
application/json
{
  • "$_type": "ProductVersion",
  • "productVersion": "string",
  • "productGuid": "string"
}

read

Returns the GlobalData object containing information about the system (license, settings).

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

Responses

Response samples

Content type
application/json
{
  • "$_type": "GlobalData",
  • "serverIdentifier": "string",
  • "currentLicense": {
    },
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

removeLicense

Remove a license from the global server if it was previously added via the UI or the installLicense WebAPI call.

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

Responses

Response samples

Content type
application/json
{
  • "$_type": "GlobalData",
  • "serverIdentifier": "string",
  • "currentLicense": {
    },
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

update

Updates the GlobalData object. Since the properties of the Global object are read-only, this methods only make sense when used with the expand parameter.

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

A unique id identifying an Unblu installation. This is read only information it will be set by the server anyway.

object (LicenseData)

Entity representing the current installed license

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": "GlobalData",
  • "serverIdentifier": "string",
  • "currentLicense": {
    },
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "$_type": "GlobalData",
  • "serverIdentifier": "string",
  • "currentLicense": {
    },
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

Invitations

Service to manage conversation invitations

addSecondaryInvitationTarget

Add a secondary invitation target to the given invitation. This target agent is informed additionally to the main target agent and can accept the invitation in their place.

  • The endpoint may only be called for conversation requests directed at a specific agent.
  • The secondary target must be different from the main target of the invitation.
  • Each secondary invitation target may only added to an invitation to a particular conversation once. The same secondary invitation target can, however, be added to invitations to multiple conversations.
If any of these prerequisites are violated, the call to the endpoint returns an error response code. To cancel a secondary invitation, seecancelSecondaryInvitationTarget

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

The invitation that the secondary target should be added to

Request Body schema: application/json
personId
string

The person who should be informed of the invitation additionally

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

cancelSecondaryInvitationTarget

Cancels the invitation sent to a secondary target. The secondary target agent will no longer be able to accept the invitation.
See also addSecondaryInvitationTarget

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

The invitation the secondary target belongs to

Request Body schema: application/json
personId
string

The person ID of the secondary invitation target for whom to cancel the invitation

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

forwardConversationToAgent

Forwards a conversation to an agent. The current assigned agent stays in the conversation until the invitation is accepted. Once the invited agent accepts the invitation, they join the conversation as the assigned agent, and the previous assigned agent is removed from the conversation.

If there is already a forwarding invitation for the conversation, that invitation is revoked.
If the conversation is in the queue, the assignment request invitation is revoked.

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

Conversation id.

agentPersonId
string

Person ID of the agent.

comment
string

Invitation comment that will be displayed to the invited agent. Optional.

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

forwardConversationToTeam

Forwards a conversation to a team. The current assigned agent remains in the conversation until the invitation is accepted. Once an agent of the invited team or its parent teams accepts the invitation, they join the conversation as its assigned agent, and the previous assigned agent is removed from the conversation.

If there is already a forwarding invitation for the conversation, that invitation is revoked.
If the conversation is in the queue, the assignment request invitation is revoked.

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

Conversation id.

teamId
string

Team id.

comment
string

Invitation comment. Optional.

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

inviteAgentToConversation

Creates an invitation to the given conversation for an agent. If the agent accepts the invitation, they join the conversation as a secondary agent. If a conflicting invitation already exists, an error is returned.

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

Conversation ID

agentPersonId
string

Person ID of the invited agent

comment
string

Invitation comment. Optional.

joinHidden
boolean

Flag deciding whether accepting the invitation resolves into a hidden participation. Optional (false by default).

Responses

Request samples

Content type
application/json
{
  • "conversationId": "string",
  • "agentPersonId": "string",
  • "comment": "string",
  • "joinHidden": true
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

inviteAnonymousVisitorToConversationWithEmail

Invites a visitor to join a conversation by email. Calling this method sends an email to the email address provided containing a link that opens the conversation in the Visitor Desk.

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

Conversation id.

email
string

Email address that will be applied to the visitor who accepts the invitation if they are anonymous and haven't provided an email address. Optional.

nickname
string

Nickname that will be applied to the visitor who accepts the invitation if they are anonymous and don't already have a nickname set. Optional.

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

inviteAnonymousVisitorToConversationWithPin

Invites a visitor to join a conversation using a PIN. The PIN can be found in the "token" field of the returned invitation. It can be redeemed by entering it in the embedded or floating site integration UI.

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

Conversation id.

nickname
string

Nickname that will be applied to the visitor who accepts the invitation if they are anonymous and don't already have a nickname set. Optional.

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

inviteTeamToConversation

Creates an invitation for a team for the given conversation. The invitation can be redeemed once by any agent in either the invited team or one of its parent teams. The agent who redeeems the invitation joins the conversation as a secondary agent. If a conflicting invitation already exists, an error is returned.

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

Conversation ID

teamId
string

Team ID

comment
string

Invitation comment. Optional.

joinHidden
boolean

Flag deciding whether accepting the invitation resolves into a hidden participation. Optional (false by default).

Responses

Request samples

Content type
application/json
{
  • "conversationId": "string",
  • "teamId": "string",
  • "comment": "string",
  • "joinHidden": true
}

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

read

Returns the invitation with the given ID.

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

The ID of the invitation to return

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

renewPin

Renews the PIN of an anonymous visitor PIN invitation. An error is returned if the method is called for any other type of invitation.

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

Invitation id.

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

requeueConversation

Return the given conversation to the queue by creating an assignment request invitation.
This is only possible for conversations that were initiated by the visitor, that is, the conversation's initial engagement type must be a request.

Optionally, existing agent participants can be removed from the conversation.

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

Conversation ID

agentRemovalType
string (EAgentRemovalType)
Enum: "KEEP_AGENTS" "REMOVE_ASSIGNED_AGENT" "REMOVE_ALL_AGENTS"
enum-descriptions: ["KEEP_AGENTS","REMOVE_ASSIGNED_AGENT","REMOVE_ALL_AGENTS"]

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

revoke

Revokes the invitation making it impossible to accept it anymore.

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

Invitation id.

Responses

Response samples

Content type
application/json
{
  • "$_type": "ConversationInvitationData",
  • "accountId": "string",
  • "invitationType": "CONVERSATION_REQUEST",
  • "invitationState": "OPEN",
  • "id": "string",
  • "conversationId": "string",
  • "token": "string",
  • "createdTimestamp": 0,
  • "creatorType": "WEB_API",
  • "creatorPersonId": "string",
  • "targetId": "string",
  • "targetType": "ANONYMOUS",
  • "links": [
    ],
  • "redeemingPersonId": "string",
  • "comment": "string",
  • "joinHidden": true,
  • "email": "string",
  • "nickname": "string",
  • "targetResponseStatus": "PENDING",
  • "secondaryInvitationTargets": [
    ],
  • "expirationTimestamp": 0
}

search

Search for invitations in the current account

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

List of filters to narrow the search of entities

Array of objects (ConversationInvitationOrderBy) [ 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": "ConversationInvitationQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

MessageInterceptors

Service to manage message interceptors. Some operations are only valid for some types of message interceptor. Where that is the case, the operation's documentation states which types it applies to.

approveMessage

Approves a message for which approval was requested through a message_interceptor.new_message webhook.

This operation is only available for ExternalMessageInterceptor entities. Messages sent to InternalMessageInterceptor entities are approved automatically.

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

The action to approve a message

$_type
string
Default: "ApproveMessageAction"
Value: "ApproveMessageAction"
token
string

The token used to identify the message this action applies to. The token is received when approval is requested through a message_interceptor.new_message webhook. Each message approval request contains a unique token.

Responses

Request samples

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

Response samples

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

create

Creates a new message interceptor

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

The message interceptor to create

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 message interceptor. Maximum length of 250 characters. Mandatory.

description
string

Description of the message interceptor. Maximum length of 500 characters. Optional.

messageFilter
string (EMessageInterceptorMessageFilter)
Enum: "AGENT" "VISITOR" "ALL"
enum-descriptions: ["AGENT","VISITOR","ALL"]
timeoutBehavior
string (EMessageInterceptorTimeoutBehavior)
Enum: "REJECT" "CONTINUE"
enum-descriptions: ["REJECT: Reject the message when a timeout occurs","CONTINUE: Proceed with the message when a timeout occurs"]

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

type
string (EMessageInterceptorType)
enum-descriptions: ["EXTERNAL","INTERNAL"]
webhookStatus
string (ERegistrationStatus)
Enum: "ACTIVE" "INACTIVE" "INACTIVE_UNAVAILABLE"
enum-descriptions: ["ACTIVE: Registration is active","INACTIVE: Registration is not active","INACTIVE_UNAVAILABLE: Registration is not active, because it is unavailable"]

Possible Webhook Registration Status

webhookEndpoint
string

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

The following event is sent to the endpoint:

  • TypedEvent.MESSAGE_INTERCEPTOR_NEW_MESSAGE: On each message in the conversation.

webhookApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3"
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."]

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

webhookSecret
string

Optional secret sent with each webhook event

Maximum length of 4000 characters.

Responses

Callbacks

Request samples

Content type
application/json
Example

create a new external message interceptor

{
  • "$_type": "ExternalMessageInterceptorData",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "name": "Test external message interceptor",
  • "description": "Test description",
  • "messageFilter": "VISITOR",
  • "timeoutBehavior": "REJECT",
  • "type": "EXTERNAL",
  • "webhookStatus": "INACTIVE",
  • "webhookApiVersion": null,
  • "webhookSecret": "hash-secret"
}

Response samples

Content type
application/json
Example

create a new external message interceptor

{
  • "$_type": "ExternalMessageInterceptorData",
  • "id": "_LFMquN7Qy-5K9rSWtpL_g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "Test external message interceptor",
  • "description": "Test description",
  • "messageFilter": "VISITOR",
  • "timeoutBehavior": "REJECT",
  • "type": "EXTERNAL",
  • "webhookStatus": "INACTIVE",
  • "webhookApiVersion": "V3",
  • "webhookSecret": "hash-secret"
}

Callback payload samples

Callback
POST: message_interceptor.new_message
Content type
application/json
{
  • "$_type": "InterceptorNewMessageEvent",
  • "timestamp": 0,
  • "eventType": "string",
  • "accountId": "string",
  • "messageApiToken": "string",
  • "conversationMessage": {
    },
  • "conversationLanguage": "string"
}

delete

Deletes an existing message interceptor

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

The ID of the message interceptor which should be deleted

Responses

Response samples

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

getByName

Searches for an existing message interceptor with the given name

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

The name of the message interceptor

Responses

Response samples

Content type
application/json
Example
{
  • "$_type": "ExternalMessageInterceptorData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "messageFilter": "AGENT",
  • "timeoutBehavior": "REJECT",
  • "type": "EXTERNAL",
  • "webhookStatus": "ACTIVE",
  • "webhookEndpoint": "string",
  • "webhookApiVersion": "V1",
  • "webhookSecret": "string"
}

pingWebhook

Emits a WebhookPingEvent on the configured webhook for the specified external message interceptor.

This operation is only available for ExternalMessageInterceptor entities.

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

The ID of an external message interceptor

Responses

Request samples

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

Response samples

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

read

Reads an existing message interceptor

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

The ID of the message interceptor

Responses

Response samples

Content type
application/json
Example
{
  • "$_type": "ExternalMessageInterceptorData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "messageFilter": "AGENT",
  • "timeoutBehavior": "REJECT",
  • "type": "EXTERNAL",
  • "webhookStatus": "ACTIVE",
  • "webhookEndpoint": "string",
  • "webhookApiVersion": "V1",
  • "webhookSecret": "string"
}

rejectMessage

Rejects a message for which approval was requested through a message_interceptor.new_message webhook.

This operation is only available for ExternalMessageInterceptor entities. Messages sent to InternalMessageInterceptor entities are rejected automatically.

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

The action to reject a message

$_type
string
Default: "RejectMessageAction"
Value: "RejectMessageAction"
token
string

The token used to identify the message this action applies to. The token is received when approval is requested through a message_interceptor.new_message webhook. Each message approval request contains a unique token.

reason
string

The reason explaining why the message was rejected. This reason is displayed as-is to end users.

severity
string (ESentRejectionSeverity)
Enum: "HIGH" "MEDIUM" "LOW"
enum-descriptions: ["HIGH: The message was rejected with high severity","MEDIUM: The message was rejected with medium severity","LOW: The message was rejected with low severity"]

The severity of the rejection for messages rejected by a message interceptor. This affects how the rejected message is displayed to different participants.

Responses

Request samples

Content type
application/json
{
  • "$_type": "RejectMessageAction",
  • "token": "string",
  • "reason": "string",
  • "severity": "HIGH"
}

Response samples

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

search

Searches for message interceptors in the current account

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

List of filters to narrow the search of entities

Array of objects (MessageInterceptorOrderBy) [ 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": "MessageInterceptorQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

update

Updates an existing message interceptor

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

The message interceptor to update

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 message interceptor. Maximum length of 250 characters. Mandatory.

description
string

Description of the message interceptor. Maximum length of 500 characters. Optional.

messageFilter
string (EMessageInterceptorMessageFilter)
Enum: "AGENT" "VISITOR" "ALL"
enum-descriptions: ["AGENT","VISITOR","ALL"]
timeoutBehavior
string (EMessageInterceptorTimeoutBehavior)
Enum: "REJECT" "CONTINUE"
enum-descriptions: ["REJECT: Reject the message when a timeout occurs","CONTINUE: Proceed with the message when a timeout occurs"]

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

type
string (EMessageInterceptorType)
enum-descriptions: ["EXTERNAL","INTERNAL"]
webhookStatus
string (ERegistrationStatus)
Enum: "ACTIVE" "INACTIVE" "INACTIVE_UNAVAILABLE"
enum-descriptions: ["ACTIVE: Registration is active","INACTIVE: Registration is not active","INACTIVE_UNAVAILABLE: Registration is not active, because it is unavailable"]

Possible Webhook Registration Status

webhookEndpoint
string

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

The following event is sent to the endpoint:

  • TypedEvent.MESSAGE_INTERCEPTOR_NEW_MESSAGE: On each message in the conversation.

webhookApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3"
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."]

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

webhookSecret
string

Optional secret sent with each webhook event

Maximum length of 4000 characters.

Responses

Request samples

Content type
application/json
Example

update an existing external message interceptor

{
  • "$_type": "ExternalMessageInterceptorData",
  • "id": "_LFMquN7Qy-5K9rSWtpL_g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "Test external message interceptor",
  • "description": "New description",
  • "messageFilter": "VISITOR",
  • "timeoutBehavior": "REJECT",
  • "type": "EXTERNAL",
  • "webhookStatus": "INACTIVE",
  • "webhookApiVersion": "V3",
  • "webhookSecret": "hash-secret"
}

Response samples

Content type
application/json
Example

update an existing external message interceptor

{
  • "$_type": "ExternalMessageInterceptorData",
  • "id": "_LFMquN7Qy-5K9rSWtpL_g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 2,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "Test external message interceptor",
  • "description": "New description",
  • "messageFilter": "VISITOR",
  • "timeoutBehavior": "REJECT",
  • "type": "EXTERNAL",
  • "webhookStatus": "INACTIVE",
  • "webhookApiVersion": "V3",
  • "webhookSecret": "hash-secret"
}

NamedAreas

Service to manage named areas.

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"
Request Body schema: application/json

The entity to create

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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.

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

Avatar of the entity: id that can be expanded.

name
string

Name of the named area. Maximum of 250 characters. Can not be omitted.

description
string

Description of the named area. Maximum of 500 characters. Can be omitted.

type
string (ENamedAreaType)
Enum: "META_TAG" "DOMAIN"
enum-descriptions: ["META_TAG: A meta tag","DOMAIN: a (sub)domain"]

Type of a named area

siteId
string

Meta tag name if the type is META_TAG or domain name if the type is DOMAIN. If the type is META_TAG, it can be omitted during creation and a random ID will generated for it. Modification of this attribute is not allowed. Maximum of 250 characters.

object

A map of localized versions of the name and description 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: 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 NamedArea with translations of the name and description for it

{
  • "$_type": "NamedArea",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "avatar": null,
  • "name": "Name_with-translations-test",
  • "description": "Desc_with-translations-test",
  • "type": "META_TAG",
  • "siteId": "with-translations-test",
  • "translations": {
    },
  • "configuration": null,
  • "text": null,
  • "metadata": null
}

Response samples

Content type
application/json

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

{
  • "$_type": "NamedArea",
  • "id": "6NF_2m71da0DBrA93aedcb5",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "avatar": null,
  • "name": "Name_with-translations-test",
  • "description": "Desc_with-translations-test",
  • "type": "META_TAG",
  • "siteId": "with-translations-test",
  • "translations": {
    },
  • "configuration": null,
  • "text": null,
  • "metadata": null
}

delete

Deletes the entity for the given ID

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

The ID of the entity which should be deleted

Responses

Response samples

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

getQuotaUsage

Returns the number of entities already existing (for the current account)

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

Responses

Response samples

Content type
application/json
0

read

Returns the named area for the given id

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

Id of the named area which should be returned

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"

Responses

Response samples

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

readMultiple

Gets a list of named areas for the given id's

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

The id's for which the named areas should be fetched

Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
[
  • {
    }
]

search

Search for named areas 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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"
Request Body schema: application/json
$_type
string
Default: "NamedAreaQuery"
Value: "NamedAreaQuery"
Array of any (NamedAreaSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (NamedAreaOrderBy) [ 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": "NamedAreaQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

Content type
application/json
{
  • "$_type": "NamedAreaResult",
  • "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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"
Request Body schema: application/json

The entity to update

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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.

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

Avatar of the entity: id that can be expanded.

name
string

Name of the named area. Maximum of 250 characters. Can not be omitted.

description
string

Description of the named area. Maximum of 500 characters. Can be omitted.

type
string (ENamedAreaType)
Enum: "META_TAG" "DOMAIN"
enum-descriptions: ["META_TAG: A meta tag","DOMAIN: a (sub)domain"]

Type of a named area

siteId
string

Meta tag name if the type is META_TAG or domain name if the type is DOMAIN. If the type is META_TAG, it can be omitted during creation and a random ID will generated for it. Modification of this attribute is not allowed. Maximum of 250 characters.

object

A map of localized versions of the name and description 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: 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": "NamedArea",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "avatar": "string",
  • "name": "string",
  • "description": "string",
  • "type": "META_TAG",
  • "siteId": "string",
  • "translations": {
    },
  • "configuration": {
    },
  • "text": {
    },
  • "metadata": {
    }
}

Response samples

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

PersonPresences

Service to access person presences

read

Helper method read a PersonPresenceData by id

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

Responses

Response samples

Content type
application/json
{
  • "$_type": "PersonPresenceData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "accountId": "string",
  • "joinedTimestamp": 0,
  • "leftTimestamp": 0,
  • "personId": "string",
  • "deviceInfo": {
    },
  • "touchTimestamp": 0,
  • "impersonationType": "NONE",
  • "impersonatedFromUserId": "string",
  • "impersonatedFromAccountId": "string",
  • "additionalInfo": "string",
  • "authInfo": "string",
  • "propagated": true
}

search

Search for person presences in the current account

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

List of filters to narrow the search of entities

Array of objects (PersonPresenceOrderBy) [ 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": "PersonPresenceQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

Persons

Service to manage virtual or bot persons

addAutoPauseNotificationsReason

Add an AutoPauseNotificationsReason for a person. By calling this service the notifications for the given user will automatically be paused for the specified amount of time.
If several auto pause reasons are added, the notifications will be automatically paused until the last auto pause reason is removed or times out.
Note: This will only take effect on the pauseNotificationsState if the person's pauseNnotificationsMode is set to AUTO.

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

ID of the person we want to add the auto pause to

Request Body schema: application/json
sourceId
string

The source identifier of the auto-pause reason. This can be used later to remove or change the timeout for this reason.

displayName
string

The name of the auto-pause reason displayed in the UI

timeoutSeconds
integer <int32>

The duration, in seconds, for which notifications should be paused automatically

Responses

Request samples

Content type
application/json
{
  • "sourceId": "string",
  • "displayName": "string",
  • "timeoutSeconds": 0
}

Response samples

Content type
application/json
{
  • "$_type": "PersonStateData",
  • "personId": "string",
  • "onlineState": "ONLINE",
  • "statusMessage": "string",
  • "pauseNotificationsMode": "ON",
  • "pauseNotificationsState": "ON",
  • "pauseNotificationsEndTimestamp": 0,
  • "autoPauseNotificationsReasons": [
    ]
}

autoPauseNotifications

Set a person's pauseNotificationsState automatically, based on their ongoing interactions in Unblu and any AutoPauseNotificationsReasons in place for the person via the Web API.

Calling this endpoint sets the person's pauseNotificationsMode to AUTO. As a result, their pauseNotificationsState will be ON whenever there is at least one active AutoPauseNotificationsReason and OFF otherwise.

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

The ID of the person whose pauseNotificationsMode should be set to AUTO

Responses

Response samples

Content type
application/json
{
  • "$_type": "PersonStateData",
  • "personId": "string",
  • "onlineState": "ONLINE",
  • "statusMessage": "string",
  • "pauseNotificationsMode": "ON",
  • "pauseNotificationsState": "ON",
  • "pauseNotificationsEndTimestamp": 0,
  • "autoPauseNotificationsReasons": [
    ]
}

createOrUpdateBot

Updates and returns an existing bot person or creates and returns a bot person if absent.

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

person data

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

Unique id of the person, when creating a person this property can be omitted as it will be generated by the server anyway.

accountId
string

Account id to which a Person belongs to. When creating an entity, the accountId can be omitted, as it will be filled by the server automatically with the account of the currently logged in user. When editing an entity, you must include the account ID.

personSource
string (EPersonSource)
Enum: "USER_DB" "VIRTUAL"
enum-descriptions: ["USER_DB: The source of the person is the ${link User} entity, so the `Person` is considered to be physical","VIRTUAL: The source of the person is virtual, that is, the individual is either anonymous or their identity was propagated by a single sign-on (SSO) mechanism."]

The source type of a person (participant of a conversation)

sourceId
string

Identifier of the person in its source (defined by personSource). For EPersonSource.USER_DB this is the userId, forEPersonSource.VIRTUAL the propagated user id. Maximum length of 250 characters. Mandatory for virtual persons.

sourceUrl
string

URL identifying the source of the person. Maximum length of 2000 characters. Only available for virtual persons in conversations that were created outside Unblu.

sourceData
string

Vendor specific data.

firstName
string

The first name of the person. Maximum length of 250 characters. Can be omitted.

lastName
string

the last name of the person. Maximum length of 250 characters. Can be omitted.

username
string

The username of the person. When firstName and lastName are unknown, it is recommended to use this value to change the displayName. Depending on the configuration, this is may also be the email of the corresponding user. Maximum length of 250 characters. Can be omitted.

nickname
string

A name that an anonymous person has given itself. Maximum length of 250 characters. Can be omitted.

displayName
string

Display name of the person. This is read only information, it will be set by the server anyway.

personType
string (EPersonType)
Enum: "AGENT" "VISITOR" "SYSTEM" "BOT"
enum-descriptions: ["AGENT: Agent participant","VISITOR: Visitor participant","SYSTEM: System participant","BOT: Bot participant"]

The type of a person (participant of a session)

authorizationRole
string (EAuthorizationRole)
Enum: "SUPER_ADMIN" "PARTNER" "TECHNICAL_ADMIN" "ADMIN" "SUPERVISOR" "REGISTERED_USER" "WEBUSER" "ANONYMOUS_USER"
enum-descriptions: ["SUPER_ADMIN: Super admin role. Only for unblu or system admins","PARTNER: Partner role. (no longer used)","TECHNICAL_ADMIN: Technical admin role.","ADMIN: Admin role. For Admins of the system","SUPERVISOR: Supervisor role. For users which manage teams","REGISTERED_USER: User role. For normal users (agents)","WEBUSER: Webuser role. For internal representation of users from the outside","ANONYMOUS_USER: Anonymous role. For internal representation of unknown users"]

The authorization role is mainly used for access definition of a service

email
string

The email of the person. Optional.

phone
string

The phone of the person. Optional.

teamId
string

Team id of the person. Optional.

teamName
string

Team name of the person, only present when the team id is set. When creating or updating a person this property can be omitted as it will be set by the server anyway.

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

Avatar of the entity: id that can be expanded.

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": "PersonData",
  • "id": null,
  • "accountId": null,
  • "personSource": null,
  • "sourceId": "b",
  • "sourceData": null,
  • "firstName": null,
  • "lastName": null,
  • "username": "Example B",
  • "nickname": null,
  • "displayName": null,
  • "personType": null,
  • "authorizationRole": null,
  • "email": "b@example.com",
  • "phone": null,
  • "teamId": null,
  • "teamName": null,
  • "avatar": null,
  • "metadata": null
}

Response samples

Content type
application/json
{
  • "$_type": "PersonData",
  • "id": "nta30CBa-6d1a89cE57Db_F",
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "personSource": "VIRTUAL",
  • "sourceId": "bot3",
  • "sourceData": null,
  • "firstName": null,
  • "lastName": null,
  • "username": "Example BOT3",
  • "nickname": null,
  • "displayName": "Bot",
  • "personType": "BOT",
  • "authorizationRole": "REGISTERED_USER",
  • "email": "bot3@example.com",
  • "phone": null,
  • "teamId": null,
  • "teamName": null,
  • "avatar": null,
  • "metadata": null
}

createOrUpdateVirtual

Updates and returns an existing virtual person or creates and returns a virtual person if absent.

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

person data

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

Unique id of the person, when creating a person this property can be omitted as it will be generated by the server anyway.

accountId
string

Account id to which a Person belongs to. When creating an entity, the accountId can be omitted, as it will be filled by the server automatically with the account of the currently logged in user. When editing an entity, you must include the account ID.

personSource
string (EPersonSource)
Enum: "USER_DB" "VIRTUAL"
enum-descriptions: ["USER_DB: The source of the person is the ${link User} entity, so the `Person` is considered to be physical","VIRTUAL: The source of the person is virtual, that is, the individual is either anonymous or their identity was propagated by a single sign-on (SSO) mechanism."]

The source type of a person (participant of a conversation)

sourceId
string

Identifier of the person in its source (defined by personSource). For EPersonSource.USER_DB this is the userId, forEPersonSource.VIRTUAL the propagated user id. Maximum length of 250 characters. Mandatory for virtual persons.

sourceUrl
string

URL identifying the source of the person. Maximum length of 2000 characters. Only available for virtual persons in conversations that were created outside Unblu.

sourceData
string

Vendor specific data.

firstName
string

The first name of the person. Maximum length of 250 characters. Can be omitted.

lastName
string

the last name of the person. Maximum length of 250 characters. Can be omitted.

username
string

The username of the person. When firstName and lastName are unknown, it is recommended to use this value to change the displayName. Depending on the configuration, this is may also be the email of the corresponding user. Maximum length of 250 characters. Can be omitted.

nickname
string

A name that an anonymous person has given itself. Maximum length of 250 characters. Can be omitted.

displayName
string

Display name of the person. This is read only information, it will be set by the server anyway.

personType
string (EPersonType)
Enum: "AGENT" "VISITOR" "SYSTEM" "BOT"
enum-descriptions: ["AGENT: Agent participant","VISITOR: Visitor participant","SYSTEM: System participant","BOT: Bot participant"]

The type of a person (participant of a session)

authorizationRole
string (EAuthorizationRole)
Enum: "SUPER_ADMIN" "PARTNER" "TECHNICAL_ADMIN" "ADMIN" "SUPERVISOR" "REGISTERED_USER" "WEBUSER" "ANONYMOUS_USER"
enum-descriptions: ["SUPER_ADMIN: Super admin role. Only for unblu or system admins","PARTNER: Partner role. (no longer used)","TECHNICAL_ADMIN: Technical admin role.","ADMIN: Admin role. For Admins of the system","SUPERVISOR: Supervisor role. For users which manage teams","REGISTERED_USER: User role. For normal users (agents)","WEBUSER: Webuser role. For internal representation of users from the outside","ANONYMOUS_USER: Anonymous role. For internal representation of unknown users"]

The authorization role is mainly used for access definition of a service

email
string

The email of the person. Optional.

phone
string

The phone of the person. Optional.

teamId
string

Team id of the person. Optional.

teamName
string

Team name of the person, only present when the team id is set. When creating or updating a person this property can be omitted as it will be set by the server anyway.

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

Avatar of the entity: id that can be expanded.

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": "PersonData",
  • "id": "string",
  • "accountId": "string",
  • "personSource": "USER_DB",
  • "sourceId": "string",
  • "sourceUrl": "string",
  • "sourceData": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "username": "string",
  • "nickname": "string",
  • "displayName": "string",
  • "personType": "AGENT",
  • "authorizationRole": "SUPER_ADMIN",
  • "email": "string",
  • "phone": "string",
  • "teamId": "string",
  • "teamName": "string",
  • "avatar": "string",
  • "metadata": {
    }
}

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",
  • "personType": "AGENT",
  • "authorizationRole": "SUPER_ADMIN",
  • "email": "string",
  • "phone": "string",
  • "teamId": "string",
  • "teamName": "string",
  • "avatar": "string",
  • "metadata": {
    }
}

getBySource

Returns the person that represents the user identified by the source ID

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
query Parameters
personSource
string (EPersonSource)
Enum: "USER_DB" "VIRTUAL"
enum-descriptions: ["USER_DB: The source of the person is the ${link User} entity, so the `Person` is considered to be physical","VIRTUAL: The source of the person is virtual, that is, the individual is either anonymous or their identity was propagated by a single sign-on (SSO) mechanism."]

The source of the person

sourceId
string

The identifier of the source for the person's information

  • For agents and visitors whose identity is propagated and whose person source is "VIRTUAL", the source ID is the value of the propagated "userId" field which is saved as ${link User.username} in the User entity.
  • For users whose identity is managed in Unblu (and whose person source is therefore "USER_DB"), the source ID is the ${link User.id} of the user represented by the person.
  • For anonymous visitors, the source ID is a random String.
  • For the concierge bot, the source ID is the String "concierge-bot-person-id".

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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",
  • "personType": "AGENT",
  • "authorizationRole": "SUPER_ADMIN",
  • "email": "string",
  • "phone": "string",
  • "teamId": "string",
  • "teamName": "string",
  • "avatar": "string",
  • "metadata": {
    }
}

getNotificationCount

Returns NotificationCountData for a personId

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

Responses

Response samples

Content type
application/json
{
  • "$_type": "NotificationCountData",
  • "personId": "string",
  • "totalNotificationCount": 0
}

getNotificationCountForConversations

Returns The sum of all notifications the given person has across the provided conversations.

Note: Only existing conversations the given person is participating in are taken into account.

required-entry-path: INTERNAL
required-role: ["REGISTERED_USER"]
Authorizations:
path Parameters
personId
required
string
Request Body schema: application/json
$_type
string
Default: "NotificationCountForConversationsRequest"
Value: "NotificationCountForConversationsRequest"
conversationIds
Array of strings

List of the conversation IDs to use when determining the number of notifications for a person

Responses

Request samples

Content type
application/json
{
  • "$_type": "NotificationCountForConversationsRequest",
  • "conversationIds": [
    ]
}

Response samples

Content type
application/json
{
  • "$_type": "NotificationCountForConversationsData",
  • "notificationCount": 0
}

pauseNotifications

Pause notifications for a person. This changes the person's pauseNotificationsMode and pauseNotificationsState to ON for the specified period.

Note: This overrides any automatic pause of notifications in place. Notification auto-pausing resumes once the period specified is over.

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

The ID of the person to pause notifications for

Request Body schema: application/json
timeoutSeconds
integer <int32>

The duration, in seconds, that notifications should be paused for

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "$_type": "PersonStateData",
  • "personId": "string",
  • "onlineState": "ONLINE",
  • "statusMessage": "string",
  • "pauseNotificationsMode": "ON",
  • "pauseNotificationsState": "ON",
  • "pauseNotificationsEndTimestamp": 0,
  • "autoPauseNotificationsReasons": [
    ]
}

read

Returns a PersonData by id

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

the personId

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "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",
  • "personType": "AGENT",
  • "authorizationRole": "SUPER_ADMIN",
  • "email": "string",
  • "phone": "string",
  • "teamId": "string",
  • "teamName": "string",
  • "avatar": "string",
  • "metadata": {
    }
}

readState

Returns a PersonStateData by personId

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

Responses

Response samples

Content type
application/json
{
  • "$_type": "PersonStateData",
  • "personId": "string",
  • "onlineState": "ONLINE",
  • "statusMessage": "string",
  • "pauseNotificationsMode": "ON",
  • "pauseNotificationsState": "ON",
  • "pauseNotificationsEndTimestamp": 0,
  • "autoPauseNotificationsReasons": [
    ]
}

removeAutoPauseNotificationsReason

Remove the AutoPauseNotificationsReason with the given sourceId for a specific person

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

The ID of the person we want to remove the auto-pause reason from

Request Body schema: application/json
sourceId
string

The identifier of the auto-pause reason to remove

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "$_type": "PersonStateData",
  • "personId": "string",
  • "onlineState": "ONLINE",
  • "statusMessage": "string",
  • "pauseNotificationsMode": "ON",
  • "pauseNotificationsState": "ON",
  • "pauseNotificationsEndTimestamp": 0,
  • "autoPauseNotificationsReasons": [
    ]
}

resumeNotifications

Resumes notifications for a person. This changes the person's pauseNotificationsMode and pauseNotificationsState to OFF.

Note: This overrides any automatic pause of notifications.

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

The ID of the person to resume notifications for

Responses

Response samples

Content type
application/json
{
  • "$_type": "PersonStateData",
  • "personId": "string",
  • "onlineState": "ONLINE",
  • "statusMessage": "string",
  • "pauseNotificationsMode": "ON",
  • "pauseNotificationsState": "ON",
  • "pauseNotificationsEndTimestamp": 0,
  • "autoPauseNotificationsReasons": [
    ]
}

search

Search for persons in the current account

required-entry-path: INTERNAL
required-role: ["SUPERVISOR"]
Authorizations:
query Parameters
expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"
Request Body schema: application/json
$_type
string
Default: "PersonQuery"
Value: "PersonQuery"
Array of any (PersonSearchFilter) [ items ]

List of filters to narrow the search of entities

Array of objects (PersonOrderBy) [ 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": "PersonQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

searchByState

Search for persons in the current account by state

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

List of filters to narrow the search of entities

Array of objects (PersonStateOrderBy) [ 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": "PersonStateQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

setAway

Defines if a person should be shown as AWAY or ONLINE when they're logged in.

If the endpoint is called with "true", the person's online state will be set to AWAY, if it's called with "false" the person's online state will be set to ONLINE.

If the person in question is logged in, the change in their online state takes effect immediately. If they're not logged in, their online state will be set when they log in again.

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

The ID of the person to set the online state for

Request Body schema: application/json
away
boolean

Boolean Whether to set the person's online state to AWAY (true) of ONLINE (false)

Responses

Request samples

Content type
application/json
{
  • "away": true
}

Response samples

Content type
application/json
{
  • "$_type": "PersonStateData",
  • "personId": "string",
  • "onlineState": "ONLINE",
  • "statusMessage": "string",
  • "pauseNotificationsMode": "ON",
  • "pauseNotificationsState": "ON",
  • "pauseNotificationsEndTimestamp": 0,
  • "autoPauseNotificationsReasons": [
    ]
}

setStatusMessage

Sets a person's status message. Setting it to null deletes the current status message (if present).

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

The ID of the person we want to set a status message for

Request Body schema: application/json
statusMessage
string

The status message to display in the person's details

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "$_type": "PersonStateData",
  • "personId": "string",
  • "onlineState": "ONLINE",
  • "statusMessage": "string",
  • "pauseNotificationsMode": "ON",
  • "pauseNotificationsState": "ON",
  • "pauseNotificationsEndTimestamp": 0,
  • "autoPauseNotificationsReasons": [
    ]
}

RecordRetention

Service for loading and updating the record retention configuration. The configuration is account-specific.

read

Returns the records retention configuration for the account of the calling user

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

Responses

Response samples

Content type
application/json
{
  • "$_type": "RecordRetentionData",
  • "accountId": "string",
  • "retentionIntervalConversationSeconds": 0,
  • "retentionIntervalPresenceSeconds": 0,
  • "retentionIntervalWebhookCallLogSeconds": 0,
  • "retentionIntervalAuditLogSeconds": 0
}

update

Updates and returns an account's records retention configuration with the settings in RecordRetentionData

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

The new records retention configuration

$_type
string
Default: "RecordRetentionData"
Value: "RecordRetentionData"
accountId
string

ID of the account whose retention configuration properties the object represents

retentionIntervalConversationSeconds
integer <int64>

Retention interval of conversations represented as number of seconds. Conversations are deleted after the interval, counting from when they ended.

retentionIntervalPresenceSeconds
integer <int64>

Retention interval of person presences represented as number of seconds. If a person presence exists without a conversation, the log is deleted after the time set below. Otherwise, it is deleted when the conversation record is deleted.

retentionIntervalWebhookCallLogSeconds
integer <int64>

Retention interval of webhook call logs represented as number of seconds. Webhook logs are deleted after the time set below, counting from when they were created.

retentionIntervalAuditLogSeconds
integer <int64>

Retention interval of audit logs represented as number of seconds. Audit logs are deleted after the time set below, counting from when they were created.

Responses

Request samples

Content type
application/json
{
  • "$_type": "RecordRetentionData",
  • "accountId": "string",
  • "retentionIntervalConversationSeconds": 0,
  • "retentionIntervalPresenceSeconds": 0,
  • "retentionIntervalWebhookCallLogSeconds": 0,
  • "retentionIntervalAuditLogSeconds": 0
}

Response samples

Content type
application/json
{
  • "$_type": "RecordRetentionData",
  • "accountId": "string",
  • "retentionIntervalConversationSeconds": 0,
  • "retentionIntervalPresenceSeconds": 0,
  • "retentionIntervalWebhookCallLogSeconds": 0,
  • "retentionIntervalAuditLogSeconds": 0
}

Services

Service which provides metadata information for all services and used types.

findWebhookEventTypeNamesBy

Returns the webhook event type names matching certain condition. This feature will be removed with Unblu 8

required-entry-path: PUBLIC
required-role: ["ANONYMOUS_USER"]
Authorizations:
query Parameters
apiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3"
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."]

only the events compatible with this version will be returned. If null the newest Web-API version will be used.

registrationLocation
string (ERegistrationLocation)
Enum: "WEBHOOK_REGISTRATION" "BOT" "EXTERNAL_MESSENGER" "EXTERNAL_MESSAGE_INTERCEPTOR" "CUSTOM_ACTION" "SUGGESTION_SOURCE" "FILE_UPLOAD_INTERCEPTOR"
enum-descriptions: ["WEBHOOK_REGISTRATION","BOT","EXTERNAL_MESSENGER","EXTERNAL_MESSAGE_INTERCEPTOR","CUSTOM_ACTION","SUGGESTION_SOURCE","FILE_UPLOAD_INTERCEPTOR"]

only the events having this registration location will be returned. If null all location will be considered

Responses

Response samples

Content type
application/json
[
  • "string"
]

getAllServiceNames

Returns the name of all available services. This feature will be removed with Unblu 8

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

Responses

Response samples

Content type
application/json
[
  • "string"
]

getAllServices

Returns a list of all available services. This feature will be removed with Unblu 8

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

Responses

Response samples

Content type
application/json
[
  • {
    }
]

getAllServicesMetadata

Returns all metadata information available in one batch. This feature will be removed with Unblu 8

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

Responses

Response samples

Content type
application/json
{
  • "$_type": "ServicesContainer",
  • "version": "string",
  • "services": [
    ],
  • "webhookEvents": [
    ],
  • "types": [
    ]
}

getAllTypeNames

Returns A list of all type names used by the services and the webhook events. This feature will be removed with Unblu 8

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

Responses

Response samples

Content type
application/json
[
  • "string"
]

getAllTypes

Returns All available types used by the services and the webhook events. This feature will be removed with Unblu 8

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

Responses

Response samples

Content type
application/json
[
  • {
    }
]

getAllWebhookEventTypeNames

Returns all webhook event type names. This feature will be removed with Unblu 8

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

Responses

Response samples

Content type
application/json
[
  • "string"
]

getAllWebhookEventTypes

Returns all webhook event types. This feature will be removed with Unblu 8

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

Responses

Response samples

Content type
application/json
[
  • {
    }
]

getServiceByName

Returns the metadata for the requested service. This feature will be removed with Unblu 8

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

The name of the service of which the metadata should be returned

Responses

Response samples

Content type
application/json
{
  • "$_type": "WebApiService",
  • "documentation": "string",
  • "name": "string",
  • "implementationName": "string",
  • "resources": [
    ]
}

getTypeByName

Returns a type definition by the given name. This feature will be removed with Unblu 8

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

The name of the type of which the metadata should be returned

Responses

Response samples

Content type
application/json
{
  • "$_type": "ServiceType",
  • "documentation": "string",
  • "name": "string",
  • "implementationName": "string",
  • "isEnum": true,
  • "additionalExpandables": [
    ],
  • "properties": [
    ],
  • "staticProperties": [
    ],
  • "implementationTypes": [
    ],
  • "discriminatorName": "string"
}

getWebhookEventTypeByName

Returns the webhook event type definition for the requested webhook event. This feature will be removed with Unblu 8

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

The name of the webhook event type of which the metadata should be returned

Responses

Response samples

Content type
application/json
{
  • "$_type": "ServiceWebhookEventType",
  • "documentation": "string",
  • "kind": "WEBHOOK",
  • "name": "string",
  • "implementationName": "string",
  • "registrationLocation": "WEBHOOK_REGISTRATION",
  • "since": "V1",
  • "properties": [
    ],
  • "staticProperties": [
    ],
  • "responseClassName": "string"
}

SuggestionSources

Service to manage all kind of suggestion sources.

create

Creates a new suggestion source

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

The suggestion source to create.

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 message interceptor. Maximum length of 250 characters. Mandatory.

description
string

Description of the message interceptor. Maximum length of 500 characters. Optional.

outboundApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3"
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."]

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

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.

outboundEndpoint
string

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

The following requests will be sent to the endpoint:

  • OutboundRequest#ServiceNameConstants#CONVERSATION_CHAT_SUGGESTION: When a suggestion for one or more chat messages is requested.
  • OutboundRequest#ServiceNameConstants#PING: When pinging the endpoint.

outboundSecret
string

Optional secret which is send with each outbound request.

Maximum length of 4000 characters.

outboundTimeoutMillis
integer <int64>

The timeout for the requests sent to the outbound endpoint. Mandatory.

Responses

Callbacks

Request samples

Content type
application/json

Create a new suggestion source

{
  • "$_type": "SuggestionSourceData",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "name": "test-suggestionSource-1",
  • "description": null,
  • "outboundApiVersion": "V3",
  • "outboundStatus": "DISABLED",
  • "outboundEndpoint": "https://test.unblu.com",
  • "outboundSecret": null,
  • "outboundTimeoutMillis": 5000
}

Response samples

Content type
application/json

New suggestion source

{
  • "$_type": "SuggestionSourceData",
  • "id": "eaaz3AiSRp6wIB2wGq6L0g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-suggestionSource-1",
  • "description": null,
  • "outboundApiVersion": "V3",
  • "outboundStatus": "DISABLED",
  • "outboundEndpoint": "https://test.unblu.com",
  • "outboundSecret": null,
  • "outboundTimeoutMillis": 5000
}

Callback payload samples

Callback
POST: outbound.conversation.chat_suggestion
Content type
application/json
{
  • "$_type": "ChatSuggestionRequest",
  • "accountId": "string",
  • "serviceName": "string",
  • "suggestionId": "string",
  • "requestingPerson": {
    },
  • "conversation": {
    },
  • "relatedMessages": [
    ],
  • "capabilities": {
    }
}

delete

Deletes an existing suggestion source

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

The ID of the suggestion source which should be deleted

Responses

Response samples

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

getByName

Searches for an existing suggestion source with the given name.

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

Name of the suggestion source.

Responses

Response samples

Content type
application/json

Suggestion Source

{
  • "$_type": "SuggestionSourceData",
  • "id": "eaaz3AiSRp6wIB2wGq6L0g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-suggestionSource-1",
  • "description": null,
  • "outboundApiVersion": "V3",
  • "outboundStatus": "DISABLED",
  • "outboundEndpoint": "http://test.webhook.com",
  • "outboundSecret": null,
  • "outboundTimeoutMillis": 5000
}

pingOutboundEndpoint

Emits a OutboundPingRequest on the endpoint of the suggestion source.

The endpoint is expected to return a OutboundPingResponse

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

The ID of the suggestion source

Responses

Request samples

Content type
application/json

Send a ping request for the given suggestion source

{
  • "suggestionSourceId": "r1acbAidia_35-tB4o7FbWR"
}

Response samples

Content type
application/json

Ping response from the suggestion source

{
  • "$_type": "OutboundPingResponse",
  • "pingId": "CD-Wj4RyTVOhx0oC_PCX_g"
}

read

Reads an existing suggestion source.

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

The ID of the suggestion source.

Responses

Response samples

Content type
application/json

Suggestion Source

{
  • "$_type": "SuggestionSourceData",
  • "id": "eaaz3AiSRp6wIB2wGq6L0g",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "name": "test-suggestionSource-1",
  • "description": null,
  • "outboundApiVersion": "V3",
  • "outboundStatus": "DISABLED",
  • "outboundEndpoint": "http://test.webhook.com",
  • "outboundSecret": null,
  • "outboundTimeoutMillis": 5000
}

search

Search for suggestion sources in the current account

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

List of filters to narrow the search of entities

Array of objects (SuggestionSourceOrderBy) [ 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": "SuggestionSourceQuery",
  • "searchFilters": [
    ],
  • "orderBy": [
    ],
  • "offset": 0,
  • "limit": 0
}

Response samples

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

update

Updates an existing suggestion source.

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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 message interceptor. Maximum length of 250 characters. Mandatory.

description
string

Description of the message interceptor. Maximum length of 500 characters. Optional.

outboundApiVersion
string (EWebApiVersion)
Enum: "V1" "V2" "V3"
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."]

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

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.

outboundEndpoint
string

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

The following requests will be sent to the endpoint:

  • OutboundRequest#ServiceNameConstants#CONVERSATION_CHAT_SUGGESTION: When a suggestion for one or more chat messages is requested.
  • OutboundRequest#ServiceNameConstants#PING: When pinging the endpoint.

outboundSecret
string

Optional secret which is send with each outbound request.

Maximum length of 4000 characters.

outboundTimeoutMillis
integer <int64>

The timeout for the requests sent to the outbound endpoint. Mandatory.

Responses

Request samples

Content type
application/json
{
  • "$_type": "SuggestionSourceData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "outboundApiVersion": "V1",
  • "outboundStatus": "ENABLED",
  • "outboundEndpoint": "string",
  • "outboundSecret": "string",
  • "outboundTimeoutMillis": 0
}

Response samples

Content type
application/json
{
  • "$_type": "SuggestionSourceData",
  • "id": "string",
  • "creationTimestamp": 0,
  • "modificationTimestamp": 0,
  • "version": 0,
  • "accountId": "string",
  • "name": "string",
  • "description": "string",
  • "outboundApiVersion": "V1",
  • "outboundStatus": "ENABLED",
  • "outboundEndpoint": "string",
  • "outboundSecret": "string",
  • "outboundTimeoutMillis": 0
}

Teams

Service to manage all teams in the system. For each account there is always a default team, which users are assigned to, when no explicit team is set.

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" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"
Request Body schema: application/json

The entity to create

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

Unique id of the entity. When creating an entity this property can be omitted as it will be generated by the server anyway.

creationTimestamp
integer <int64>

Creation timestamp of the entity. It is defined when the entity is stored the first time in the system. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect the 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. It is only of informational character. It is ignored, when sending it to the server and therefore can be omitted. Note: If you set this property it will return the same value but it will not be written to the storage and will not effect 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.

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

Avatar of the entity: id that can be expanded.

name
string

Name of the team. Maximum of 250 characters. Can not be omitted.

parentId
string

Id of the parent team. Only the default team has no parent team. When creating a team and the parentId is omitted, the default team is automatically inserted by the server.

description
string

Description of the team. Maximum of 500 characters. Can be omitted.

externallyManaged
boolean

True if the team is externally managed and cannot be edited in the Unblu user interface. If omitted, the property is set to false.

object

A map of localized versions of the name and description 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.

Responses

Request samples

Content type
application/json

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

{
  • "$_type": "Team",
  • "id": null,
  • "creationTimestamp": null,
  • "modificationTimestamp": null,
  • "version": null,
  • "accountId": null,
  • "avatar": null,
  • "name": "with-translations-test",
  • "parentId": null,
  • "description": "The team",
  • "externallyManaged": null,
  • "translations": {
    },
  • "configuration": null,
  • "metadata": null
}

Response samples

Content type
application/json

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

{
  • "$_type": "Team",
  • "id": "14F-6aDC8e5_cmT3bAa9Bd0",
  • "creationTimestamp": 1546300800000,
  • "modificationTimestamp": 1548979200000,
  • "version": 1,
  • "accountId": "A7d9E_0-c3cC4aoFDb85t6n",
  • "avatar": null,
  • "name": "with-translations-test",
  • "parentId": "JZh4ADRnEeasYZ5xEoyudw",
  • "description": "The team",
  • "externallyManaged": false,
  • "translations": {
    },
  • "configuration": null,
  • "metadata": null
}

delete

Deletes the entity for the given ID

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

The ID of the entity which should be deleted

Responses

Response samples

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

getByParentId

Returns a list of teams, which directly belong to the given parent team.

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

The ID of the parent for which the direct child teams should be returned

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"

Responses

Response samples

Content type
application/json
[
  • {
    }
]

getChildTeamIds

Returns a list of teams ids, which recursively belong to the given parent team. So child teams of a child team are also listed

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

The ID of the parent team for which the child teams should be returned recursively

Responses

Response samples

Content type
application/json
[
  • "string"
]

getChildTeams

Returns a list of teams, which recursively belong to the given parent team. So child teams of a child team are also listed

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

The ID of the parent team for which the child teams should be returned recursively

expand
Array of strings (ExpandFields)
Items Enum: "actionIcon" "avatar" "billingAddress" "channelIcon" "configuration" "contactAddress" "metadata" "text"

Responses

Response samples

Content type
application/json
[
  • {