Chats API
Chats¶
A chat represents a single conversation. In practice, there is usually zero or one visitor member and an arbitrary number of user ("operator") members.
A chat has the following attributes:
Attribute | Type | Editable | Description |
---|---|---|---|
id |
UUID | read-only | Unique identifier for the chat. |
created_at |
datetime | read-only | When the chat conversation started. |
updated_at |
datetime | read-only | When the chat conversation was last time updated. |
waiting_started_at |
datetime | read-only | When the chat became waiting. This is is the timestamp when the is_waiting attribute changed true . It does not change when the is_waiting becomes false . Default value for this is null and it stays so if the chat never became waiting. |
is_ended |
boolean | optional | Whether or not the chat has ended. Once ended, messages and members of the chat cannot be altered any more. Updating this to true immediately and permanently locks the chat. Defaults to false . |
ended_at |
datetime | read-only | When the chat conversation ended (or null if not ended). |
room_id |
UUID | read-only | ID of the room in which the chat occurred. |
room_name |
string | read-only | Name of the room in which the chat occurred. |
room_organization_id |
UUID | read-only | ID of the organization which owns the room in which the chat occurred. |
chat_type |
string | read-only | Whether the chat's type is operator (operator ), visitor (visitor ), group (group ), task (task ) or from some external source (external ). When POSTing a new chat with new chat with a visitor in a room endpoint this will automatically be set as visitor and when using create a new empty chat endpoint this be set as operator . Chats with type operator and group are chat sessions between only users. Chats with type visitor are chat sessions that has a visitor membership. Chats with type task will be closed automaticaly by room options ttl. Chats with type external are chat sessions that are from external source (e.g. some integration). These chat's do not close automatically. |
is_private |
boolean | read-only | Whether or not the chat is marked as private for its operators. |
is_real_conversation |
boolean | read-only | Whether or not the chat is an actual conversation. |
is_autosuggested |
boolean | read-only | Whether or not the chat started with an automatic autosuggestion message. |
is_encrypted |
boolean | read-only | Whether or not the messages of this chat are stored encrypted. |
encrypted_symmetric_key |
string | read-only | The encrypted symmetric key (AES) with which all the chat messages in this chat are encrypted. This attribute is available only if is_encrypted is true . |
message_count |
integer | read-only | How many chat messages there are in total in this chat at the moment. NOTE that this only includes messages with type msg , so this does not include autosuggestions, or join/leave messages. |
user_message_count |
integer | read-only | How many chat messages there were by operators in this chat. |
visitor_message_count |
integer | read-only | How many chat messages there were by visitors in this chat. |
has_messages |
boolean | read-only | Whether or not there are any messages in chat. |
has_user_messages |
boolean | read-only | Whether or not there are any user messages in chat. |
has_visitor_messages |
boolean | read-only | Whether or not there are any visitor messages in chat. |
first_visitor_message_url |
string | read-only | Full URL of the page that the visitor was on when they sent their first message to this chat, or null if contains no message from the visitor. |
first_visitor_message_url_title |
string | read-only | Title of the page that the visitor was on when they sent their first message, or null if contains no message from the visitor. |
autosuggest_url |
string | read-only | Full URL of the page that the visitor was on when they received an autosuggest, or null if this chat does not contain an autosuggestion. |
autosuggest_url_title |
string | read-only | Title of the page that the visitor was on when they received an autosuggest, or null if this chat does not contain an autosuggestion. |
tag_count |
integer | read-only | How many tags there are associated with this chat. |
is_waiting |
boolean | optional | This is true for new chats that are started by a visitor and they require a response by a user (and the chat has not ended yet). Otherwise this is false . |
is_pending |
boolean | read-only | This is true if is_waiting is true and the chat has no present user members (i.e. present_user_participant_count is 0 ). Otherwise this is false . |
member_count |
integer | read-only | How many people (visitor and users) have attended or sent messages to this chat. |
user_member_count |
integer | read-only | How many users have sent at least one message to the chat. |
visitor_member_count |
integer | read-only | How many visitors have attended this chat. |
present_participant_count |
integer | read-only | How many people (visitor and users) there are currently participating and present at this chat. |
present_user_participant_count |
integer | read-only | How many users there are currently participating and present at this chat. |
present_visitor_participant_count |
integer | read-only | How many visitor there are currently participating and present at this chat. |
visitor_wait_time |
float | read-only | How many seconds the visitor had to wait for an answer to the first sent message. This is null if the visitor has not got an answer yet. |
duration |
float | read-only | Duration of the chat in seconds. This is time difference from first message time to last message time in chat. This value is null until the chat has ended. |
active_duration |
float | read-only | How many seconds of the chat duration was considered to be active time. This is calculated so that after each message chat is assumed to be active for 60 seconds and idle after that if no new messages are received. This value is null until the chat has ended. |
Warning
The following attributes also exists but they are deprecated, so you should avoid using them.
Attribute | Type | Editable | Description |
---|---|---|---|
token |
string | read-only | A legacy Giosg-signed encoded unique string for the chat. You probably won't need this in new implementations! |
legacy_conversation_state |
string | read-only | A legacy conversation state of the chat. You probably won't need this in new implementations! |
legacy_room_id |
string | read-only | A legacy ID of the chat's room. You probably won't need this in new implementations! |
List chats at a room¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
|
You can list chats for a room:
GET /api/v5/orgs/<organization_id>/rooms/<room_id>/chats
This API endpoint returns a paginated collection. They are sorted by the creation time of the chats, in descending order.
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
ordering |
ordering | created_at |
Ordering of results with options created_at or -created_at . |
is_waiting |
boolean | (none) | If true , then return only waiting chats. If false , return only chats that are not waiting. You may usually want to list pending chats instead of using this. |
is_ended |
boolean | (none) | If true , only return ended chats. If false , only return open chats. |
has_messages |
boolean | (none) | If true , only return chats which have messages. If false , only return chats without messages. |
has_user_messages |
boolean | (none) | If true , only return chats which have messages from user. If false , only return chats without messages from user. |
has_visitor_messages |
boolean | (none) | If true , only return chats which have messages from visitor. If false , only return chats without messages from visitor. |
created_at_after |
datetime | (none) | Returns chats created after the given datetime (ISO 8601) |
created_at_before |
datetime | (none) | Returns chats created before the given datetime (ISO 8601) |
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission - 404 if room was not found
List organization's owned chats¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
You can list owned chats for an organization:
GET /api/v5/orgs/<organization_id>/owned_chats
This API endpoint returns a paginated collection of owned chats. These are chats that belong to rooms owned by the organization. They are sorted by the creation time of the chats, in descending order.
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
ordering |
ordering | created_at |
Ordering of results with options created_at or -created_at . |
is_waiting |
boolean | (none) | If true , then return only waiting chats. If false , return only chats that are not waiting. You may usually want to list pending chats instead of using this. |
is_ended |
boolean | (none) | If true , only return ended chats. If false , only return open chats. |
has_messages |
boolean | (none) | If true , only return chats which have messages. If false , only return chats without messages. |
has_user_messages |
boolean | (none) | If true , only return chats which have messages from user. If false , only return chats without messages from user. |
has_visitor_messages |
boolean | (none) | If true , only return chats which have messages from visitor. If false , only return chats without messages from visitor. |
created_at_after |
datetime | (none) | Returns chats created after the given datetime (ISO 8601) |
created_at_before |
datetime | (none) | Returns chats created before the given datetime (ISO 8601) |
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled
Retrieve details of organization's owned chat¶
You can retrieve details of organization's owned chat:
GET /api/v5/orgs/<organization_id>/owned_chats/<chat_id>
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
End organization's owned chat¶
Example request that closes a chat
1 |
|
Example payload
1 2 3 |
|
Conversations between users and visitors usually end automatically when no one has sent any messages to the chat after a certain time. However, users and bots may also explicitly end the chat conversation.
Once ended, no new chat messages or chat memberships can be added to the chat anymore! Chat cannot be reopened. You should create a new chat if you want to continue conversation with the other person. Ending a chat also changes the chat's is_waiting
status to false
.
Organization user can explicitly end a chat which their organization own by updating the is_ended
attribute to true
:
PUT /api/v5/orgs/<organization_id>/owned_chats/<chat_id>
or
PATCH /api/v5/orgs/<organization_id>/owned_chats/<chat_id>
You need to define the is_ended
attribute with value true
as a payload.
This endpoint returns:
- 200 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Change organization's owned chat to not waiting status¶
Example request that changes waiting status of a chat to not waiting
1 |
|
Example payload
1 2 3 |
|
Organization user can change waiting status of a chat which their organization own by updating the is_waiting
attribute to false
:
PUT /api/v5/orgs/<organization_id>/owned_chats/<chat_id>
or
PATCH /api/v5/orgs/<organization_id>/owned_chats/<chat_id>
You need to define the is_waiting
attribute with value false
as a payload.
This endpoint returns:
- 200 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 400 chat has already been ended
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
List organization's involved chats¶
You can list chats where users of an organization are members of:
GET /api/v5/orgs/<organization_id>/involved_chats
This API endpoint returns a paginated collection of involved chats, chats that have at least one chat membership of a user that belongs to the organization. They are sorted by the creation time of the chats, in descending order.
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
ordering |
ordering | created_at |
Ordering of results with options created_at or -created_at . |
is_waiting |
boolean | (none) | If true , then return only waiting chats. If false , return only chats that are not waiting. You may usually want to list pending chats instead of using this. |
is_ended |
boolean | (none) | If true , only return ended chats. If false , only return open chats. |
has_messages |
boolean | (none) | If true , only return chats which have messages. If false , only return chats without messages. |
has_user_messages |
boolean | (none) | If true , only return chats which have messages from user. If false , only return chats without messages from user. |
has_visitor_messages |
boolean | (none) | If true , only return chats which have messages from visitor. If false , only return chats without messages from visitor. |
created_at_after |
datetime | (none) | Returns chats created after the given datetime (ISO 8601) |
created_at_before |
datetime | (none) | Returns chats created before the given datetime (ISO 8601) |
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled
Retrieve details of organization's involved chat¶
You can retrieve details of organization's involved chat:
GET /api/v5/orgs/<organization_id>/involved_chats/<chat_id>
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
List organization's routed chats¶
You can list chats that are routed to your organization:
GET /api/v5/orgs/<organization_id>/routed_chats
This API endpoint returns a paginated collection of routed chats. Routed chats include chats that are owned by your organization and chats from rooms that have been shared to your organization. They are sorted by the creation time of the chats, in descending order.
For users with reports
permission, this API returns chats from all shared rooms, while for others it only returns chats from those organization's shared rooms that have the private_chat_history
organization setting disabled. If your organization has private_chat_history
organization setting enabled, users without reports
permission do not have access to owned chats nor any chats from shared rooms.
Both routed_chats
and owned_chats
APIs are very similar. Generally, if something works with owned_chats
API, then it likely works with routed_chats
API too.
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
ordering |
ordering | created_at |
Ordering of results with options created_at or -created_at . |
is_waiting |
boolean | (none) | If true , then return only waiting chats. If false , return only chats that are not waiting. You may usually want to list pending chats instead of using this. |
is_ended |
boolean | (none) | If true , only return ended chats. If false , only return open chats. |
has_messages |
boolean | (none) | If true , only return chats which have messages. If false , only return chats without messages. |
has_user_messages |
boolean | (none) | If true , only return chats which have messages from user. If false , only return chats without messages from user. |
has_visitor_messages |
boolean | (none) | If true , only return chats which have messages from visitor. If false , only return chats without messages from visitor. |
created_at_after |
datetime | (none) | Returns chats created after the given datetime (ISO 8601) |
created_at_before |
datetime | (none) | Returns chats created before the given datetime (ISO 8601) |
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled
Retrieve details of organization's routed chat¶
You can retrieve details of organization's routed chat:
GET /api/v5/orgs/<organization_id>/routed_chats/<chat_id>
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
List pending chats of a room¶
One of the most important use cases is that the users (chat "agents" or "operators") want to serve visitors that have started a new chat. You can get a paginated collection of pending chats for a specific room that the user has permission:
GET /api/v5/orgs/<organization_id>/rooms/<room_id>/pending_chats
This is a small subset of all the chats of the room, with the following differences:
- Only includes chats where
is_pending
istrue
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission - 404 if room was not found
List visitors chats in a room¶
You can find out all chats that visitor has in the room with this api.
GET /api/v5/orgs/<organization_id>/rooms/<room_id>/visitors/<visitor_id>/chats
This API endpoint returns a paginated collection of visitor chats. These are chats that belong to room owned by the organization. They are sorted by the creation time of the chats, in descending order.
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
ordering |
ordering | created_at |
Ordering of results with options created_at or -created_at . |
is_waiting |
boolean | (none) | If true , then return only waiting chats. If false , return only chats that are not waiting. You may usually want to list pending chats instead of using this. |
is_ended |
boolean | (none) | If true , only return ended chats. If false , only return open chats. |
has_messages |
boolean | (none) | If true , only return chats which have messages. If false , only return chats without messages. |
has_user_messages |
boolean | (none) | If true , only return chats which have messages from user. If false , only return chats without messages from user. |
has_visitor_messages |
boolean | (none) | If true , only return chats which have messages from visitor. If false , only return chats without messages from visitor. |
created_at_after |
datetime | (none) | Returns chats created after the given datetime (ISO 8601) |
created_at_before |
datetime | (none) | Returns chats created before the given datetime (ISO 8601) |
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled
List pending chats of a user¶
You usually want to just show pending chats for all rooms the user has access to. One approach is to first list the user's rooms and then get the pending chats for each room. However, there is a more convenient shortcut to get a paginated collection of pending chats of each room the user has access:
GET /api/v5/users/<user_id>/pending_chats
Please note that because this lists pending chats, whether or not the user is a member (chat membership) of the chat does not affect the listed chats.
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
List routed chats of a user¶
This will list all the chats for every room where the user has been linked to using a router. This returns an ordered paginated collection of routed chats.
GET /api/v5/users/<user_id>/routed_chats
Please note that because this lists routed chats, whether or not the user is a member (chat membership) of the chat does not affect the listed chats.
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
Retrieve details of user's routed chat¶
You can retrieve details of user's routed chat:
GET /api/v5/users/<user_id>/routed_chats/<chat_id>
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
List chats of a user¶
You can get a collection of chats where user is a member:
GET /api/v5/users/<user_id>/chats
This returns a paginated collection. It is sorted by the creation time of the chat, in descending order.
Parameter | Type | Default | Description |
---|---|---|---|
ordering |
ordering | created_at |
Ordering of results with options created_at or updated_at (- for descending results). |
is_participating |
boolean | (none) | If true , only return chats where <user_id> is participating. If false , exclude chats where <user_id> is currently participating. |
is_ended |
boolean | (none) | If true , only return ended chats. If false , only return open chats. |
has_messages |
boolean | (none) | If true , only return chats which have messages. If false , only return chats without messages. |
has_user_messages |
boolean | (none) | If true , only return chats which have messages from user. If false , only return chats without messages from user. |
has_visitor_messages |
boolean | (none) | If true , only return chats which have messages from visitor. If false , only return chats without messages from visitor. |
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the users
Create a new chat with a visitor in a room¶
Start a new chat with a visitor in the given room.
POST /api/v5/users/<user_id>/rooms/<room_id>/visitors/<visitor_id>/chats
Creating a new chat using this endpoint does not require any attributes and therefore the payload is not required. This endpoint will attempt to get an existing recent chat where the given user can join, instead of creating a new chat. In addition, we will automatically (and atomically) create a membership for this user and chat. NOTE: The “private chats” setting affects the decision whether to create or resume a chat.
This endpoint returns:
- 200 if existing chat was found
- 201 if a new chat was created
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 403 if user does not have access to the room
- 404 if visitor was not found
- 409 if some else has already a chat with the visitor
Create a new empty chat for user¶
Start a new chat without a visitor for user. Other users/teams/partner organizations can be invited to this chat by using chat invitations.
POST /api/v5/users/<user_id>/chats
Creating a new chat using this endpoint does not require any attributes and therefore the payload is not required.
This endpoint returns:
- 201 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
List visitor's chats in a room¶
You can get a collection of chats where the visitor is a member, in the given room:
GET /api/v5/users/<user_id>/rooms/<room_id>/visitors/<visitor_id>/chats
This returns paginated collection. It is sorted by the creation time of the chat, in descending order.
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if room was not found
- 404 if visitor was not found
End a chat¶
Example request that closes a chat
1 |
|
Example payload
1 2 3 |
|
Conversations between users and visitors usually end automatically when no one has sent any messages to the chat after a certain time. However, users may also explicitly end the chat conversation.
Once ended, no new chat messages or chat memberships can be added to the chat anymore! Chat cannot be reopened. You should create a new chat if you want to continue conversation with the other person. Ending a chat also changes the chat's is_waiting
status to false
.
You can end explicitly a chat in which you are a member by updating the is_ended
attribute to true
:
PUT /api/v5/users/<user_id>/chats/<chat_id>
or
PATCH /api/v5/users/<user_id>/chats/<chat_id>
You need to define the is_ended
attribute with value true
as a payload.
This endpoint returns:
- 200 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if the user was not a member of the chat
Change a chat to not waiting status¶
Example request that changes waiting status of a chat to not waiting
1 |
|
Example payload
1 2 3 |
|
You can explicitly change waiting status of a chat in which you are a member by updating the is_waiting
attribute to false
:
PUT /api/v5/users/<user_id>/chats/<chat_id>
or
PATCH /api/v5/users/<user_id>/chats/<chat_id>
You need to define the is_waiting
attribute with value false
as a payload.
This endpoint returns:
- 200 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 400 chat has already been ended
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if the user was not a member of the chat
Chat memberships¶
The visitor as well as each user who have attended to the chat (i.e. they are "chat members") are represented with a chat membership objects.
Attribute | Format | Editable | Description |
---|---|---|---|
member_id |
UUID/string | read-only | ID of the user or visitor being present at the chat. |
member_type |
string | read-only | Either visitor or user . |
member_name |
string | read-only | The name of the user/visitor as it would be displayed for the operator. For users this the actual name. For visitors this is any custom name, or null . |
member_public_name |
string | read-only | The name of the user/visitor as it would be displayed for the visitor. This is user's alias if they have one, otherwise it is their real name. For visitors, this is any custom username (e.g. set by API data) or null |
member_avatar |
object | read-only | If the user/visitor has an avatar image, then this is is an object with id and url attributes. Otherwise this is null . |
member_organization_id |
UUID | read-only | ID of the member's organization. |
room_id |
UUID | read-only | ID of the room where the chat takes place. |
room_organization_id |
UUID | read-only | ID of the room's organization where the chat takes place. |
chat_id |
UUID | read-only | ID of the chat. |
created_at |
datetime | read-only | When the user/visitor was added as a chat member. |
last_seen_at |
datetime | optional | When the user/visitor was last seen at. This field may be updated by clients to let other clients know that user has seen the conversation and messages were read. This field may be null if the value was not set yet. |
updated_at |
datetime | read-only | When the this membership was updated. |
chat_created_at |
datetime | read-only | When the chat started. |
message_count |
integer | read-only | How many messages the user/visitor has sent to the chat. This may be 0, e.g. when operator has joined the chat but has not sent any message yet. |
is_bot |
boolean | read-only | Whether the participating user is bot user or not. |
is_user_deleted |
boolean | read-only | Whether the participating user is deleted or not. The changes to this field are not broadcasted from the websocket. |
is_participating |
boolean | required | Whether or not the user/visitor has the chat "open". In practise this reflects the state of the chat window. When the user/visitor closes the chat window, it is supposed that he is no more participating the chat (but the membership still remains) |
is_present |
boolean | read-only | Whether or not the user/visitor is currently present. Equals the is_present attribute of the member except if user's is_participating is false then the is_present will be also false. |
composing_status |
string | required | One of the following: idle , typing , typed . The typing status will be automatically downgraded to typed if the composing status has not been refreshed for a while. |
Warning
The following attributes also exists but they are deprecated, so you should avoid using them.
Attribute | Type | Editable | Description |
---|---|---|---|
legacy_member_id |
string | read-only | A legacy ID of the user. You probably won't need this in new implementations! |
List chat memberships¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
|
You can get a paginated collection of all the memberships of the chat:
GET /api/v5/orgs/<organization_id>/rooms/<room_id>/chats/<chat_id>/memberships
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission - 404 if room was not found
- 404 if chat was not found
Or alternatively:
GET /api/v5/users/<user_id>/chats/<chat_id>/memberships
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
Or alternatively you can list memberships of a routed chat of the user:
/api/v5/users/<user_id>/routed_chats/<chat_id>/memberships
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if the related chat does not exist or it is not routed to the user
Or list organization's owned chat's memberships:
GET /api/v5/orgs/<organization_id>/owned_chats/<chat_id>/memberships
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Or list organization's involved chat's memberships:
GET /api/v5/orgs/<organization_id>/involved_chats/<chat_id>/memberships
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Or list organization's routed chat's memberships:
GET /api/v5/orgs/<organization_id>/routed_chats/<chat_id>/memberships
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Also, as an alternative to list a user's chats, you may list their own chat memberships. Each result is a chat member resource for each of the chat of the user:
GET /api/v5/users/<user_id>/chat_memberships
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
is_participating |
boolean | (none) | If true , then return only chats where user is participating. If false , return only chats where user is not participating. |
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
List visitor's chat memberships¶
You can get a paginated collection of all the memberships of the visitor by chat:
GET /api/v5/users/<user_id>/chats/<chat_id>/visitors/<visitor_id>/chat_memberships
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if visitor was not found
List pending chat's memberships¶
You can get a paginated collection of pending chat's memberships:
GET /api/v5/users/<user_id>/pending_chats/<chat_id>/memberships
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if the chat was not pending anymore
Join user to a pending chat¶
Example request for joining a user to a chat
1 |
|
Example request payload
1 2 3 4 |
|
You can add your user as a member (chat membership) to one of their pending chats:
POST /api/v5/users/<user_id>/pending_chats/<chat_id>/memberships
You should define whether you want to be participating the chat with is_participating
. You usually want to set this true
when creating a new membership. Also, the composing_status
is required, but may usually want to set it initially to idle
.
Notice
This endpoint returns 404 if the chat is no more considered "pending" at the moment, effectively preventing multiple users adding themselves as members to the same pending chat.
If you want to prevent other users "taking" this pending chat, then ensure that
- you set
is_participating
totrue
- you have made your user present with "user clients".
The chat will then be marked as "non-pending" and the chat is removed from "pending chats" of other users. However, if your user becomes absent before sending any messages to the chat, then the chat is returned to "pending chats" (but your user will still remain a chat member).
This endpoint returns:
- 201 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if the chat was not pending not anymore
- 404 if the chat has ended
- 409 if the user was not present
Join user to a routed chat¶
Example request for joining a user to a routed chat
1 |
|
Example request payload
1 2 3 4 |
|
You can add your user as a member (chat membership) to one of their routed chats:
POST /api/v5/users/<user_id>/routed_chats/<chat_id>/memberships
You should define whether you want to be participating the chat with is_participating
. You usually want to set this true
when creating a new membership. Also, the composing_status
is required, but may usually want to set it initially to idle
.
This endpoint returns:
- 201 if the request was successful and the new membership was created
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if the related chat does not exist or it is not routed to the user
- 404 if the chat has ended
- 409 if there is already a present user member in the chat AND the organization has "private chats" enabled AND the joining user does not have the
reports
permission
Join user to a organization's chat¶
Example request for joining a organization's user to a chat
1 |
|
Example request payload
1 2 3 4 5 |
|
You can add your organization's user as a member (chat membership) to a organization's owned chats:
POST /api/v5/orgs/<organization_id>/owned_chats/<chat_id>/memberships
This endpoint returns:
- 200 if an existing membership was found
- 201 if a new membership was created
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Or you may join to your organization's involved chat:
POST /api/v5/orgs/<organization_id>/involved_chats/<chat_id>/memberships
This endpoint returns:
- 200 if an existing membership was found
- 201 if a new membership was created
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Or you can add your organization's user as a member to a routed chat:
POST /api/v5/orgs/<organization_id>/routed_chats/<chat_id>/memberships
This endpoint returns:
- 200 if an existing membership was found
- 201 if a new membership was created
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
You should define whether you want to be participating the chat with is_participating
. You usually want to set this true
when creating a new membership. Also, the composing_status
is required, but may usually want to set it initially to idle
. Note that the member_id
is required field for this endpoint.
If is_participating
is set as true
and the chat was pending, then this will remove this chat from pending chats for all users.
Update a chat membership of a user¶
Example request for making the operator typing at the chat
1 |
|
Example request payload
1 2 3 4 5 |
|
The chat membership's is_participating
attribute should be refreshed when the user opens or closes a chat.
In addition, you should frequently notify the backend about the composing status of the user. For example, you should make a request when the user starts typing a message for the chat (and more requests frequently if the user keeps typing, stops typing or clears the composition area).
Also it is highly recommended that clients update last_seen_at
field whenever user interface displays chat to user. This allows other clients to know if messages have been received and read/seen by the other users.
You can change the chat status of the user similarly than described in the previous session:
PUT /api/v5/users/<user_id>/chat_memberships/<chat_id>
You should provide the is_participating
attribute with either true
or false
value, indicating whether or not the user should be currently present at the chat. Also, you need to provide the composing_status
attribute describing whether or not the user is typing or has typed a message.
This endpoint returns:
- 200 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the chat has ended
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 409 if the user was not present
Chat messages¶
Chat consists of a number of messages. Some of them are actual typed messages from either operator or visitor, and some of them are automatically added events about the chat, especially when an operator has joined or leaved the chat.
If you want to get link previews for each link, you need to call the link preview api. You need to parse the link urls from the messages by yourself.
Attribute | Type | Editable | Description |
---|---|---|---|
id |
UUID | read-only | Unique identifier for the message |
type |
string | read-only | Whether the message is an actual message (msg ), autosuggest (autosuggest ), a join event (join ), a leave event (leave ), a shopping cart locked event (shoppingcart_locked ), an action event (action ) from attachment reaction, a call request (call_request ), a call information (call_ended ), a interaction data (interaction_submit ), a tag created (tag_created ), a tag deleted (tag_deleted ), or a message from system (system ). When POSTing a message, this will automatically be set to msg . |
chat_id |
UUID | read-only | ID of the chat. |
room_id |
UUID | read-only | ID of the room in which the chat occurred. |
created_at |
datetime | read-only | When the message was sent. |
sender_type |
string | read-only | Whether the sender is operator (user ), visitor (visitor ), or triggered by rule (rule ). When POSTing a new message with these endpoints, this will automatically be set to user . |
sender_id |
UUID/string | read-only | Identifier for the sender. If the sender is a user, then this is the user's ID. For visitor this is an unique string. If the sender was a rule, it is the ID of the rule which triggered this message. |
sender_public_name |
string | read-only | A display name for the sender as the visitor would see him. This value might change if the sender type was rule . |
sender_name |
string | read-only | A display name for the sender as an operator would see him. This value might change if the sender type was rule . |
sender_avatar |
object | read-only | If the sender has an avatar image, then this is an object with id and url attributes. Otherwise this is null . |
message |
string | required | Content text of the message. The maximum length is 2000 characters. This will always be the decrypted if the decryption key is still being stored at the server. Otherwise, this will be null if the server cannot decrypt the message any more. In this case your client needs to decrypt the chiphertext in encrypted_message . In cases where the chat message's type was action , this can be either the text of the chosen attachment action or title of the attachment . If neither are provided, this is null . |
is_encrypted |
boolean | read-only | Whether or not the message is stored encrypted. When true , the encrypted_message attribute contains the encrypted chiphertext of the message. |
encrypted_message |
string | read-only | The encrypted chiphertext of the message, if encryption is used for the chat. This attribute is only present if is_encrypted is true . |
sensitive_data_purged_at |
datetime | read-only | When the message's sensitive data was purged. This means that the message and visitor's sender_name and sender_public_name are set as null . This is null if the data was not purged. |
selected_reply_suggestion_id |
UUID | optional | The chat reply suggestion that was selected as a basis for this message. NOTE: the message may differ from the suggestion of the related suggestion, if the user has edited the selected suggestion message before sending it! This is null if the message is not based on any chat reply suggestion. |
selected_reply_suggestion |
object | read-only | The selected chat reply suggestion as a nested object, containing attributes id , suggestion , and relevancy_score . This is null if the message is not based on any chat reply suggestion. |
attachments |
list of objects | optional | List of chat message attachments for this chat message. These represent rich or interactive content provided in this message. These are explained in next section. Note that only one attachment can be specified in this list if attachment_template is set to interaction . |
attachment_template |
string | optional | Type of chat message attachment template, either null , "generic" , "interaction" or "external" . These are explained in next section. |
response_to_message_id |
UUID | read-only | Unique identifier of the message this was a response to. null if it wasn't a response. |
response_to_attachment_id |
UUID | read-only | Unique identifier of the chosen attachment this was a response to. null if it wasn't a response. |
response_to_attachment |
object | read-only | The chosen attachment of the response. null if it wasn't a response. |
response_to_action_id |
UUID | read-only | Unique identifier of the chosen attachment action this was a response to. null if it wasn't a response. |
response_to_action |
object | read-only | The chosen attachment action of the response. null if it wasn't a response. |
response_value |
string | read-only | The chosen attachment value of the response. If the chosen attachment was an action , then this is the value of the action. Otherwise this may be the attachment 's title_link_url , image_url , image_link_url or a link provided in text field (Markdown). null if it wasn't a response. |
response_text |
string | read-only | Response text of the attachment response. This field may be null if response was to generic attachment or free form text if this message was response to interaction attachment. This field is required for interaction attachment response. |
List chat messages¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
|
Get the collection of all chat messages in the given chat if it's organization's owned chat.
GET /api/v5/orgs/<organization_id>/owned_chats/<chat_id>/messages
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
type__in |
list | (none) | Filter messages with a type found in the list provided. List should be comma separated (msg,leave,join,etc) |
type__not_in |
list | (none) | Exclude messages with a type found in the list provided. List should be comma separated (msg,leave,join,etc) |
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Or if the organization is involved in the chat:
GET /api/v5/orgs/<organization_id>/involved_chats/<chat_id>/messages
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
type__in |
list | (none) | Filter messages with a type found in the list provided. List should be comma separated (msg,leave,join,etc) |
type__not_in |
list | (none) | Exclude messages with a type found in the list provided. List should be comma separated (msg,leave,join,etc) |
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Or you can get messages of a routed chat:
GET /api/v5/orgs/<organization_id>/routed_chats/<chat_id>/messages
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
type__in |
list | (none) | Filter messages with a type found in the list provided. List should be comma separated (msg,leave,join,etc) |
type__not_in |
list | (none) | Exclude messages with a type found in the list provided. List should be comma separated (msg,leave,join,etc) |
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Or alternatively:
GET /api/v5/users/<user_id>/chats/<chat_id>/messages
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
type__in |
list | (none) | Filter messages with a type found in the list provided. List should be comma separated (msg,leave,join,etc) |
type__not_in |
list | (none) | Exclude messages with a type found in the list provided. List should be comma separated (msg,leave,join,etc) |
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
Or alternatively list messages of user's routed chat:
GET /api/v5/users/<user_id>/routed_chats/<chat_id>/messages
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
The response is a paginated collection, ordered by the creation date in descending order.
Send a chat message¶
1 |
|
1 2 3 |
|
Send a new chat message to a user's chat with type msg
to a chat:
POST /api/v5/users/<user_id>/chats/<chat_id>/messages
The <user_id>
will be set as the sender of the message.
Warning
The user must be a member of the chat in order to send a message. Otherwise a 404 response is returned, as the chat was not found in the chats of the user.
If the chat was previously in waiting state, then is_waiting
of the chat is automatically changed to false
.
You may also include the chat_reply_suggestion_id
attribute with an ID of any chat reply suggestion in the same chat.
This endpoint returns:
- 200 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 409 if the chat is ended
Chat message attachments¶
Chat message attachments represent rich or interactive content for chat message. You may provide images, buttons etc. as attachment with actions for different scenarios. You might want to consider reading the chat message attachment guide before using these. An attachment object consists:
Attribute | Format | Editable | Description |
---|---|---|---|
id |
UUID | read-only | ID of the attachment. |
title |
string | optional | The title of this attachment. When attachment_template is set to generic , this is shown to the visitor. When attachment_template is interaction or external , this is only shown to the operator. |
title_link_url |
string | optional | The URL of the title. If provided, then title will show as clickable link which will open in the given URL. This field can be used when attachment_template field of message was set to generic . |
text |
string | optional | The text part of this attachment. This may serve as description. This can also be Markdown (bold , cursive or link ). When attachment_template is set to generic , this is shown to the visitor. When attachment_template is interaction or external , this is only shown to the operator. |
image_url |
string | optional | The URL of image. This field can be used when attachment_template field of message was set to generic . |
image_link_url |
string | optional | The URL of image link. If provided, then the image will show as clickable image which will open in the given URL. This field can be used when attachment_template field of message was set to generic . |
link_target |
string | optional | The target window of the image_link_url and title_link_url . This value is omitted if no links are provided, otherwise this defines whether the link is opened in a new tab or redirects current tab to a new URL. Valid choices for this are _blank (open new tab) and _parent (redirect in current tab). Defaults to _blank . This field can be used when attachment_template field of message was set to generic . |
actions |
list of objects | optional | List of possible actions for this attachment. These are explained in next section. This field can be used when attachment_template field of message was set to generic . |
interaction_id |
UUID | optional | ID of interaction to attach. If provided, then the interaction will be attached to chat conversation. This field can be used when attachment_template field of message was set to interaction . |
attachment_url |
string | optional | Url of an external page to attach. If provided, then the page will be iframed to chat conversation. This field can be used when attachment_template field of message was set to external . |
parameters |
object | optional | Free form JSON to be used as parameters for interaction attachment. This field can be used when attachment_template field of message was set to interaction or external . For external attachments, these values are appended to the attachment_url as get parameters. |
NOTE: Validation of fields depend on the type of attachment_template
selected for message. For generic attachments if none of the fields; title
, text
, image_url
or actions
is provided, then 400 is returned. For interaction attachments interaction_id
is required. For external attachments attachment_url
is required. With interaction
or external
templates, you can optionally also provide title
, text
and parameters
fields.
A generic attachment may have multiple actions. For example you might want to provide feedback survey as an attachment and have multiple different buttons as answer options. For now actions are always buttons with different kind of outcomes. An attachment action object consists:
Attribute | Format | Editable | Description |
---|---|---|---|
id |
UUID | read-only | ID of the action. |
text |
string | required | The text of this action. The text will be shown inside the button when rendered to the user interface. |
type |
string | required | The type of this action. This can be button or link_button . |
link_target |
string | optional | The target window of the link_button . This value is omitted if the type of this action is not link_button , otherwise this defines whether the link is opened in a new tab or redirects current tab to a new URL. Valid choices for this are _blank (open new tab) and _parent (redirect in current tab). Defaults to _blank . |
value |
string | required | The value for this action. For action with type of link_button this should be either a valid URL (For example: https://giosg.com/contact-us) where the button should redirect or an anchor link (For example: #contact-us) that navigates to an anchor inside the current page. Otherwise, the value can be any string. |
style |
string | optional | Style of the action. This can be primary , secondary , info , success , warning , danger , link , brand_primary or brand_secondary . This defines color of the button. If omitted, defaults to secondary . Brand colors defined for a Room can be used aswell. |
is_disabled_on_selection |
boolean | required | Defines whether the actions are disabled after selection. If true then all of the attachment's actions with true for is_disabled_on_selection are disabled after selection of one. If false then the action remains enabled after selection. |
is_disabled_on_visitor_message |
boolean | required | Defines whether the actions are disabled after visitor sends a new message to chat conversation. This message's type has to be msg (a real message). If true then all of the attachment's actions with true for is_disabled_on_visitor_message are disabled after the visitor's message. If false then the action remains enabled after visitor message. |
Send a chat message with generic attachments¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
Sending a chat message with attachments is not much different than sending chat message normally. You can provide additional attachments
list (optionally with desired actions
too) along the message
in the payload.
Send a chat message with interaction attachment¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
-
Sending a chat message with interaction attachments is not much different than sending chat message normally. You need to provide additional
attachments
list along themessage
in the payload. Alsoattachment_template
field of message needs to be set tointeraction
. The attachment itself has to have theinteraction_id
defined. Note that with interaction attachment there can only one attachment inattachments
list per message. -
The parameters field contains information that is passed down to the interaction. Note that you can send any amount of key value pairs in the parameters. These values are passed to the interaction. There are two special parameters that the chat window reacts to:
-
initial_height
is used to set the iframe height before the interaction has loaded. Once the interaction has loaded, it sends its current height. Ifinitial_height
is not specified, the default value is 150px. If your interaction has very different actual height than theinitial_height
or the 150px default value, the iframe changes its size a lot after loading and it might look weird for the visitor. So settinginitial_height
correctly will prevent those big size changes. -
mode
can be used by giosg staff to change what url is used in the iframe. Settingmode
tostaging
, the iframe tries to load the interaction from the staging environment. Setting it tolocalhost
, the iframe tries to load the interaction from the interaction designer server that is running locally on your computer.
Send a chat message with external attachment¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Sending a chat message with external attachment is not much different than sending chat message normally. You need to provide additional attachments
list along the message
in the payload. Also attachment_template
field of message needs to be set to external
. The attachment itself has to have the attachment_url
defined. Note that with external attachment there can only one attachment in attachments
per message.
The parameters field contains information that is passed down to the external attachment by appending them to the attachment_url
as get parameters. Note that you can send any amount of key value pairs in the parameters. There is one special parameter that the chat window reacts to:
initial_height
is used to set the iframe height. This height can then be changed by sending messages from the embedded site to the chat window.
Chat message response actions¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
In most cases you might want to know which attachment the visitor selected. These responses can be done by using public API for sending chat message. For now these responses can be requested by using the list API of chat messages. The message type
of these are action
and they contain additional info about the selected attachment/action.
Chat invitations¶
User may invite users, their own teams, teams shared by partner organizations or partner organizations to an ongoing chat. This is done with invitation objects. When sending and managing chat invitations, we use chat invitations.
An chat invitation object has the following attributes::
Attribute | Type | Editable | Description |
---|---|---|---|
id |
UUID | read-only | Unique identifier of this invitation |
is_accepted |
boolean | optional | Whether or not the chat invitation has been accepted. |
is_expired |
boolean | optional | Whether or not the chat invitation has been expired. Chat invitation will expire if it's not accepted before chat ends. |
invited_by_user_id |
UUID | read-only | ID of the user who invited. |
invited_by_user |
object | read-only | The user(s) who invited. |
chat_id |
UUID | read-only | ID of the Chat. |
room_id |
UUID | read-only | ID of the room in which the chat occurred. |
invited_user_id |
UUID | required | ID of the user who was invited to the chat. |
invited_team_id |
UUID | required | ID of your own team or a team shared by a partner organization which was invited. |
invited_organization_id |
UUID | required | ID of the organization that was invited for this chat. |
invitee_name |
string | read-only | Name of the invitee. This is either full name of the user, name of the team, or name of the organization depending on which party was invited. |
accepted_by_user_id |
UUID | read-only | ID of the user who accepted invite. |
accepted_by_user |
object | read-only | The user(s) who accepted invite. |
user_member_count |
integer | read-only | How many user(s) are in this chat. |
visitor_member_count |
integer | read-only | How many visitors are in this chat. |
created_at |
datetime | read-only | When the chat invitation was sent. |
updated_at |
datetime | read-only | When the chat invitation was last time updated. |
accepted_at |
datetime | read-only | When the chat invitation was accepted (or null if not accepted). |
expired_at |
datetime | read-only | When the chat invitation was expired (or null if it has been accepted). |
NOTE: Only one of the invited_user_id
, invited_team_id
or invited_organization_id
can be defined per chat invitation object. Other two attributes should be either null
or omitted. When accepting chat invitation, is_accepted
is required field. Also, is_expired
field can only be defined when using the update API for outgoing chat invitations.
List outgoing chat invitations for user¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
You can get a paginated collection of all the outgoing chat invitations for the user in current chat. They are sorted by the creation time of the invitation, in ascending order.
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
is_accepted |
boolean | (none) | If true , then return only accepted chat invitations. If false , return only chat invitations which are pending but are not expired. |
is_expired |
boolean | (none) | If true , then return only expired chat invitations. If false , return only chat invitations which has not expire. |
GET /api/v5/users/<user_id>/chats/<chat_id>/outgoing_chat_invitations
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
List chat invitations for organization¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
You can get a paginated collection of all the chat invitations for the organization. They are sorted by the creation time of the invitation, in ascending order.
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
is_accepted |
boolean | (none) | If true , then return only accepted chat invitations. If false , return only chat invitations which are pending but are not expired. |
is_expired |
boolean | (none) | If true , then return only expired chat invitations. If false , return only chat invitations which has not expire. |
GET /api/v5/orgs/<org_id>/chat_invitations
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 404 if organization was not found
Send a chat invitation¶
Example request that send a chat invitation for a user from own organization
1 |
|
1 2 3 |
|
Example response
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
You may send a chat invitation to your organization's users, teams, teams shared by partner organizations or partner organizations by creating a new chat invitation object.
POST /api/v5/users/<user_id>/chats/<chat_id>/outgoing_chat_invitations
You need to define only one of the invited_user_id
, invited_team_id
or invited_organization_id
attributes as a payload.
This endpoint returns:
- 200 if invited party already has a pending chat invitation to this chat
- 201 if a chat invitation was successfully sent
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if the invited user, team, or organization is not found
Expire a chat invitation¶
Example request that expires an outgoing chat invitation
1 |
|
1 2 3 |
|
Example response
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
You may expire a chat invitation by updating your existing invitation.
PUT /api/v5/users/<user_id>/chats/<chat_id>/outgoing_chat_invitations/<invitation_id>
Or
PATCH /api/v5/users/<user_id>/chats/<chat_id>/outgoing_chat_invitations/<invitation_id>
You need to define is_expired
attribute as a payload. The value has to be true
. All other attributes in payload are omitted.
This endpoint returns:
- 200 if the invitation was expired successfully
- 400 if required attribute is missing from the request
- 400 if the request payload is in wrong format
- 400 if the invitation has already expired
- 400 if the invitation has already been accepted by some party
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if the invitation is not found
List incoming chat invitations for the user¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
You can get a paginated collection of all the incoming chat invitations for the user. They are sorted by the creation time of the invitation, in ascending order.
This endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
is_accepted |
boolean | (none) | If true , then return only accepted chat invitations. If false , return only chat invitations which are pending but are not expired. |
is_expired |
boolean | (none) | If true , then return only expired chat invitations. If false , return only chat invitations which has not expire. |
GET /api/v5/users/<user_id>/incoming_chat_invitations
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
Accept incoming chat invitation¶
Example request that accepts the chat invitation for user
1 |
|
1 2 3 |
|
You may accept your user's incoming chat invitations.
PUT /api/v5/users/<user_id>/incoming_chat_invitations/<invitation_id>
PATCH /api/v5/users/<user_id>/incoming_chat_invitations/<invitation_id>
This endpoint returns:
- 200 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 400 if the chat was not in "pending state" i.e. the invitation has expired, other user from team or organization already responded to invitation.
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat invitation was not found
Chat tags¶
Chats may be tagged with any number of keywords, or simply put "tags".
A chat tag has the following attributes:
Attribute | Type | Editable | Description |
---|---|---|---|
name |
string | required | The name of the tag. |
created_at |
datetime | read-only | When the chat was tagged with this tag. |
hashed_name |
string | read-only | Sha1 hash of this tag. This is the only information that the visitor and goals generated have about the tag. |
room_id |
UUID | read-only | ID of the room to which this tag belongs to. |
List tags of a chat¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
You can get a paginated collection of all the tags for one of a user's chats:
GET /api/v5/users/<user_id>/chats/<chat_id>/tags
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if the user was not a member of the chat
Alternatively you may want to retrieve tags by using the organization:
You can get all the tags for a organization's owned chat:
GET /api/v5/orgs/<organization_id>/owned_chats/<chat_id>/tags
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
And for the organization's involved chat:
GET /api/v5/orgs/<organization_id>/involved_chats/<chat_id>/tags
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
And for the organization's routed chat:
GET /api/v5/orgs/<organization_id>/routed_chats/<chat_id>/tags
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
List allowed tags for a chat¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
You can get a paginated collection of all the tags that are allowed for one of a user's chats. The allowed tags are defined by the room to which the chat belongs.
GET /api/v5/users/<user_id>/chats/<chat_id>/allowed_tags
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if the user was not a member of the chat
Alternatively you may want to retrieve allowed tags by using the organization:
You can get all the allowed tags for a organization's owned chat:
GET /api/v5/orgs/<organization_id>/owned_chats/<chat_id>/allowed_tags
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
And for the organization's involved chat:
GET /api/v5/orgs/<organization_id>/involved_chats/<chat_id>/allowed_tags
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
And for the organization's routed chat:
GET /api/v5/orgs/<organization_id>/routed_chats/<chat_id>/allowed_tags
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Add a tag to a chat¶
Example request that adds a tag to a chat
1 |
|
1 2 3 |
|
Example response
1 2 3 4 5 |
|
You can add a tag to one of the user's chats:
POST /api/v5/users/<user_id>/chats/<chat_id>/tags
This endpoint returns:
- 200 if an existing tag was found with given
name
- 201 a new tag was successfully created for the chat
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if the user was not a member of the chat
Alternatively you may want to add tags by using the organization:
You can add a tag for a organization's owned chat:
POST /api/v5/orgs/<organization_id>/owned_chats/<chat_id>/tags
This endpoint returns:
- 200 if an existing tag was found with given
name
- 201 a new tag was successfully created for the chat
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
And for the organization's involved chat:
POST /api/v5/orgs/<organization_id>/involved_chats/<chat_id>/tags
This endpoint returns:
- 200 if an existing tag was found with given
name
- 201 a new tag was successfully created for the chat
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
And for the organization's routed chat:
POST /api/v5/orgs/<organization_id>/routed_chats/<chat_id>/tags
This endpoint returns:
- 200 if an existing tag was found with given
name
- 201 a new tag was successfully created for the chat
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Also, you need to define the name
attribute as a payload.
Remove a tag from a chat¶
1 |
|
You can remove a tag from one of the user's chats:
DELETE /api/v5/users/<user_id>/chats/<chat_id>/tags/<tag_name>
This endpoint returns:
- 204 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if the user was not a member of the chat
Alternatively you may want to remove tags by using the organization:
You can remove a tag for a organization's owned chat:
DELETE /api/v5/orgs/<organization_id>/owned_chats/<chat_id>/tags/<tag_name>
This endpoint returns:
- 204 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
And for the organization's involved chat:
DELETE /api/v5/orgs/<organization_id>/involved_chats/<chat_id>/tags/<tag_name>
This endpoint returns:
- 204 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
And for the organization's routed chat:
DELETE /api/v5/orgs/<organization_id>/routed_chats/<chat_id>/tags/<tag_name>
This endpoint returns:
- 204 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the organization
- 403 if you do not have
reports
permission and the organization has private history enabled - 404 if chat was not found
Also, the <tag_name>
must be a URL-encoded name of the tag to be removed.
Chat conversation starters¶
user(s) may have none or multiple chat conversation starters with limitation of one per language.
A chat conversation starter has the following attributes:
Attribute | Type | Editable | Description |
---|---|---|---|
language_code |
string | required | Language of this message as a RFC 3066 code. It must be one of the supported languages. |
message |
string | required | The conversation starter message. |
created_at |
datetime | read-only | When the chat conversation starter was created. |
updated_at |
datetime | read-only | When the chat conversation starter was last time updated. |
List chat conversation starters for user¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
You can get a paginated collection of all the chat conversation starters for the user. They are sorted by the creation time of the conversation starters, in ascending order.
GET /api/v5/users/<user_id>/chat_conversation_starters
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
Add a chat conversation starter for user¶
Example request that adds a chat conversation starter for the user
1 |
|
1 2 3 4 |
|
Example response
1 2 3 4 5 6 |
|
You can add a chat conversation starter for the user:
POST /api/v5/users/<user_id>/chat_conversation_starters
You need to define the message
and language_code
attributes as a payload.
This endpoint returns:
- 201 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 400 if the user already has a conversation starter with given
language_code
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
Update a chat conversation starter¶
Example request that updates the chat conversation starter for user
1 |
|
1 2 3 |
|
You may update the editable attributes of your user's chat conversation starters.
PUT /api/v5/users/<user_id>/chat_conversation_starters/<language_code>
PATCH /api/v5/users/<user_id>/chat_conversation_starters/<language_code>
This endpoint returns:
- 200 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if conversation starter was not found
Remove a chat conversation starter from user¶
1 |
|
You can remove a chat conversation starter from user:
DELETE /api/v5/users/<user_id>/chat_conversation_starters/<language_code>
This endpoint returns:
- 204 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if conversation starter was not found
Chat reply suggestions¶
Chat messages may have reply suggestions tied to them. These are handy e.g. when creating a Bot user which only suggests replies for user by analyzing the corresponding message. Chat reply suggestions are shown to chat agents in real time in the giosg Console user interface. A chat reply suggestion object consists:
Attribute | Format | Editable | Description |
---|---|---|---|
id |
UUID/string | read-only | ID of the reply suggestion |
suggestion |
string | required | The message of this suggestion. |
relevancy_score |
float | optional | How "good" reply suggestion is this for the message. The value should be a float between 0 and 1 or null . |
created_by_user_id |
UUID/string | read-only | ID of the user which added this reply suggestion. |
created_by_user |
object | read-only | User which added this reply suggestion. |
updated_by_user_id |
UUID/string | read-only | ID of the user which updated this reply suggestion. |
updated_by_user |
object | read-only | Last user which updated this reply suggestion. |
room_id |
UUID | read-only | ID of the room where the chat takes place. |
chat_id |
UUID | read-only | ID of the chat. |
message_id |
UUID | read-only | ID of the chat message which this suggestion is tied to. |
organization_id |
UUID | read-only | ID of the user's organization. |
created_at |
datetime | read-only | When the reply suggestion was created. |
updated_at |
datetime | read-only | When the this reply suggestion was updated. |
List reply suggestions of a chat¶
You can get a paginated collection of all the reply suggestions for the chat:
GET /api/v5/users/<user_id>/chats/<chat_id>/reply_suggestions
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if the user was not a member of the chat
Or alternatively you may list user's chat reply suggestions for a routed chat, to which the use may not have joined yet:
GET /api/v5/users/<user_id>/routed_chats/<chat_id>/reply_suggestions
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if the related chat does not exist or it is not routed to the user
These endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
ordering |
ordering | created_at |
Ordering of results with options created_at or -created_at . |
List reply suggestions of a message¶
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
You can get a paginated collection of all the reply suggestions for the corresponding message:
GET /api/v5/users/<user_id>/chats/<chat_id>/messages/<message_id>/reply_suggestions
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if the user was not a member of the chat
Or alternatively you may list user's chat reply suggestions for a routed chat, to which the use may not have joined yet:
GET /api/v5/users/<user_id>/routed_chats/<chat_id>/messages/<message_id>/reply_suggestions
This endpoint returns:
- 200 if the request was successful
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if the related chat does not exist or it is not routed to the user
These endpoint takes the following GET-parameters:
Parameter | Type | Default | Description |
---|---|---|---|
ordering |
ordering | created_at |
Ordering of results with options created_at or -created_at . |
Update a chat reply suggestion¶
You may update the editable attributes of your reply suggestions:
PUT/PATCH /api/v5/users/<user_id>/chats/<chat_id>/messages/<message_id>/reply_suggestions/<reply_suggestion_id>
This endpoint returns:
- 200 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if message was not found
- 404 if reply suggestion was not found
- 404 if the user was not a member of the chat
Or alternatively you may list user's chat reply suggestions for a routed chat, to which the use may not have joined yet:
PUT/PATCH /api/v5/users/<user_id>/routed_chats/<chat_id>/messages/<message_id>/reply_suggestions/<reply_suggestion_id>
This endpoint returns:
- 200 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if message was not found
- 404 if reply suggestion was not found
- 404 if the related chat does not exist or it is not routed to the user
Add a chat reply suggestion for a message¶
You can add a chat reply suggestion for the message:
POST /api/v5/users/<user_id>/chats/<chat_id>/messages/<message_id>/reply_suggestions
This endpoint returns:
- 201 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if chat was not found
- 404 if message was not found
- 404 if the user was not a member of the chat
Or alternatively you may list user's chat reply suggestions for a routed chat, to which the use may not have joined yet:
POST /api/v5/users/<user_id>/routed_chats/<chat_id>/messages/<message_id>/reply_suggestions
This endpoint returns:
- 201 if the request was successful
- 400 if required attributes are missing from the request
- 400 if the request payload is in wrong format
- 401 if you are not authenticated
- 403 if you do not have active subscription
- 403 if you do not have access to the user
- 404 if message was not found
- 404 if the related chat does not exist or it is not routed to the user
You need to define the suggestion
attribute as a payload. If you pass relevancy_score
with float value, then it will be shown in console.