Table of Contents | ||
---|---|---|
|
Типы данных
Response
...
true
– успешный ответfalse
– ошибка
...
Запросы к серверу
Все запросы отправляются как POST запросы с содержанием "application/json"
. В ответ сервер всегда возвращает HTTP 200 OK
и с содержанием "application/json"
. Единственное исключение — это методы, которые работают с файлам. В теле ответа содержится информация об успешности запроса, результат или ошибка. Для результата могут быть приложен граф связанных объектов. Например, если в результате вернулось сообщение в чате, в графе связанных объектов будет пользователь, который отправил это сообщение. Данных подход позволяет снизить объем дублируемых данных в ответах.
Пример запроса:
Code Block |
---|
POST /public/api/v1/chats/channel/send/support HTTP/1.1
Host: dev.iqstore.ru
Connection: keep-alive
Content-Length: 65
Origin: http://dev.iqstore.ru
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36
Content-Type: application/json
Cookie: client-session=973b38b354a508bf13244b2655077895c78f1e86.aaaa7e84433b0901c502a5f7d38c71ee
{"LocalId":1518171256447,"Payload":"text","Text":"Привет!"} |
Пример ответа:
Code Block |
---|
HTTP/1.1 200 OK
Server: nginx/1.11.13
Date: Fri, 09 Feb 2018 10:16:21 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Accept, Accept-Encoding, Accept-Language, Access-Control-Request-Headers, Access-Control-Request-Method, Authorization, Cache-Control, Connection, Content-Type, Cookie, Host, Origin, Pragma, Referer, X-Requested-With, User-Agent
Access-Control-Allow-Methods: GET, HEAD, POST, OPTIONS
Access-Control-Allow-Origin: http://dev.iqstore.ru
Pragma: no-cache
Cache-Control: private, must-revalidate
Content-Encoding: gzip
{
"OK": true,
"Error": null,
"Result": [
{
"Id": 252,
"ChatId": 10,
"LocalId": 1498085875116,
"EventId": 1649,
"TicketMessageId": null,
"Author": "client",
"ClientId": 11,
"UserId": null,
"Payload": "text",
"Text": "Здравствуйте!",
"Received": true,
"Read": true,
"Pushed": false,
"CreatedAt": 1498085875206,
"ReceivedAt": 1498085920218,
"ReadAt": 1498085920218,
"My": true
},
{
"Id": 253,
"ChatId": 10,
"LocalId": 1498085875247,
"EventId": 1626,
"TicketMessageId": null,
"Author": "system",
"ClientId": null,
"UserId": null,
"Payload": "notice",
"Text": "",
"Received": false,
"Read": false,
"Pushed": false,
"CreatedAt": 1498085875247,
"ReceivedAt": null,
"ReadAt": null,
"My": false
},
{
"Id": 254,
"ChatId": 10,
"LocalId": 1498085879130,
"EventId": 1633,
"TicketMessageId": null,
"Author": "user",
"ClientId": null,
"UserId": 4,
"Payload": "text",
"Text": "Добрый день!",
"Received": true,
"Read": true,
"Pushed": false,
"CreatedAt": 1498085879130,
"ReceivedAt": 1498085879272,
"ReadAt": 1498085879302,
"My": false
}
],
"Rels": {
"Clients": [
{
"Id": 11,
"ProjectId": 1,
"CompanyId": 2,
"Type": "crm",
"Name": "Дмитрий Менделеев",
"Online": true,
"CustomerId": 5,
"ChannelId": null,
"TelegramId": null,
"FacebookId": null,
"VKId": null,
"TotalTickets": 2,
"TotalOpenTickets": 1,
"CreatedAt": 1498085866873,
"UpdatedAt": 1518171379854,
"SeenAt": 1518171379854,
"MessagedAt": null,
"IntegrationId": "10"
}
],
"Files": [
{
"Id": "1705a928-0d7a-11e8-b187-13b6ccbb5d10.txt",
"Type": "file",
"Owner": "client",
"OwnerClientId": 11,
"ClientId": null,
"UserId": 1,
"Name": "oci8-sigsegv.txt",
"Path": "clients/11/11/1705a928-0d7a-11e8-b187-13b6ccbb5d10.txt",
"Size": 5356,
"ImageWidth": null,
"ImageHeight": null,
"ContentType": "",
"CreatedAt": 1518167865822
}
],
"Users": [
{
"Id": 1,
"Name": "Иван Коробков",
"Email": "i.korobkov@iqstore.ru",
"Position": "Технический директор",
"RoleId": 1,
"AvatarId": "e83220a3-56cb-11e7-b21f-6109cf735b0f.png",
"Online": true,
"Deleted": false,
"TotalAssignedTickets": 1,
"CreatedAt": 1491321126034,
"UpdatedAt": 1518171379292,
"LastSeenAt": 1518171379292,
"AssignedAt": 1518166787715,
"DisplayName": "Иван Коробков"
}
]
}
} |
Типы данных
Response
Поле | Тип | Обязательное | Комментарий |
---|---|---|---|
OK | bool | Да |
|
Error | Error | Нет | Информация об ошибке. |
Result | Any | Нет | Успешный результат, тип зависит от вызываемого метода. |
Rels | Graph | Нет | Граф зависимых объектов, на которые ссылается результат. |
Пример успешного пустого ответа:
Пример ответа:
Code Block |
---|
{
"OK": true,
"Error": null,
"Result": null,
"Rels": null
} |
Пример успешного ответа с данными и графом зависимых объектов:
Code Block |
---|
{
"OK": true,
"Error": null,
"Result": [
{
"Id": 504,
"ChatId": 10,
"EventId": 3614,
"Author": "user",
"UserId": 12,
"Payload": "text",
"Text": "Добрый день!",
"CreatedAt": 1500970393387,
}
],
"Rels": {
"Users": [
{
"Id": 12,
"Name": "Оператор",
"Email": "operator@iqstore.ru",
"CreatedAt": 1500970142322,
"UpdatedAt": 1507204200866
}
]
}
} |
Пример ответа с ошибкой:
Code Block |
---|
{
"OK": false,
"Error": {
"Code": "not_found",
"Text": "Объект не найден"
}
} |
ActorType
Перечисление типов субъектов, которые могут совершать действия.
Значение | Комментарий |
---|---|
"" | Пустая строка, анонимный клиент. |
client | Клиент. |
user | Пользователь. |
system | Система. |
Chat
Поле | Тип | Обязательное | Комментарий |
---|---|---|---|
Id | int64 | Да | |
ProjectId | int64 | Да | |
ClientId | int64 | Да | |
ChannelId | int64 | Да | |
EventId | int64 | Нет | Айди последнего события в чате |
ClientUnread | int32 | Да | Количество непрочитанных сообщений в чате |
CreatedAt | Timestamp | Да | Дата создания |
ChangedAt | Timestamp | Да | Дата изменения |
ChatMessage
Поле | Тип | Обязательное | Комментарий |
---|---|---|---|
Id | int64 | Да | |
ChatId | int64 | Да | |
LocalId | int64 | Да | |
EventId | int64 | Да | |
Author | ActorType | Да | |
ClientId | int64 | Зависит от Author | |
UserId | int64 | Зависит от Author | |
Payload | ChatMessagePayloadType | Да | |
Text | string | Да | Есть всегда, но может быть пустой строкой, если тип сообщения — файл. |
FileId | string | Зависит от Payload | |
Received | bool | Да | Сообщение доставлено получателю. |
Read | bool | Да | Сообщение прочитанно получателем. |
Pushed | bool | Да | Отправлено пуш-уведомление о сообщении. |
CreatedAt | Timestamp | Да | Дата создания. |
ReceivedAt | Timestamp | Да | Дата получения. |
ReadAt | Timestamp | Да | Дата прочтения. |
My | bool | Да | Текущий пользователь автор этого сообщения. |
ChatMessagePayloadType
Перечисление типов сообщений в чате.
Значение | Комментарий |
---|---|
text | Текстовое сообщение |
file | Сообщение с приложенным файлом |
ChatEvent
Событие в чате.
Поле | Тип | Обязательное | Комментарий |
---|---|---|---|
Id | int64 | true | Может быть 0, если событие транзитивное, т.е. не хранится в базе данных. |
Type | ChatEventType | true | Тип события |
ChatId | int64 | true | Айди чата, в котором произошло событие |
MessageId | int64 | false | Айди сообщения, с которым связано событие |
Actor | ActorType | true | Тип актора, который совершил действие. |
ClientId | int64 | false | Айди клиента, который совершил действие. |
UserId | int64 | false | Айди пользователя, который совершил действие. |
CreatedAt | Timestamp | true | Дата создания |
Transitive | bool | false | Транзитивное событие, не хранится в базе данных, пример, что пользователь печатает в чате. |
ChatEventType
Перечисление типов событий в чате.
Значение | Комментарий |
---|---|
typing | Клиент или пользователь печатает в чате. |
message_created | Новое сообщение в чате. |
message_received | Получатель подтвердил, что сообщение доставлено. |
message_read | Получатель подтвердил, что сообщение прочитанно. |
Client
Поле | Тип | Обязательное | Комментарий |
---|---|---|---|
Id | int64 | true | |
ProjectId | int64 | true | |
Type | ClientType | true | Тип клиента. |
Name | string | true | Имя клиента. |
Online | bool | true | Клиент сейчас онлайн. |
CreatedAt | Timestamp | true | Дата создания. |
UpdatedAt | Timestamp | true | Дата обновления. |
SeenAt | Timestamp | false | Дата, когда клиент был онлайн последний раз. |
File
Пример успешного пустого ответа:
Пример ответа:
Code Block |
---|
{
"OK": true,
"Error": null,
"Result": null,
"Rels": null
} |
Пример успешного ответа с данными и графом зависимых объектов:
Code Block |
---|
{
"OK": true,
"Error": null,
"Result": [
{
"Id": 504,
"ChatId": 10,
"EventId": 3614,
"Author": "user",
"UserId": 12,
"Payload": "text",
"Text": "Добрый день!",
"CreatedAt": 1500970393387,
}
],
"Rels": {
"Users": [
{
"Id": 12,
"Name": "Оператор",
"Email": "operator@iqstore.ru",
"CreatedAt": 1500970142322,
"UpdatedAt": 1507204200866
}
]
}
} |
Пример ответа с ошибкой:
Code Block |
---|
{
"OK": false,
"Error": {
"Code": "not_found",
"Text": "Объект не найден"
}
} |
...
Поле | Тип | Обязательное | Комментарий | ||
---|---|---|---|---|---|
Id | string | int64 true | |||
ДаType | ProjectId FileType | int64 true | ДаТип файла | ||
ClientId Owner | int64 FileOwnerType | Да | ChannelId | int64 | Да |
EventId | int64 | Нет | Айди последнего события в чате | ||
ClientUnread | int32 | Да | Количество непрочитанных сообщений в чате | ||
CreatedAt | Timestamp | Да | Дата создания | ||
ChangedAt | Timestamp | Да | Дата изменения |
ChatMessage
...
Дата создания.
...
true | Тип владельца файла:
| ||
OwnerClientId | int64 | Зависит от Owner | Айди клиента, в чате которого находится этот файл. |
ClientId | int64 | false | Айди клиента, который загрузил этот файл. |
UserId | int64 | false | Айди пользователя, который загрузил этот файл. |
Name | string | true | Оригинальное имя файла. |
Path | string | true | Внутренний путь к файлу. |
Size | int64 | true | Размер файла в байтах |
ImageWidth | int64 | false | Ширина изображения. |
ImageHeight | int64 | false | Высота изображения |
ContentType | string | true | Тип содержания файла. |
CreatedAt | Timestamp | true | Дата создания файла. |
FileType
Перечисление типов файла
Значение | Комментарий |
---|---|
file | Файл или документ. |
image | Изображение. |
User
Поле | Тип | Обязательное | Комментарий |
---|---|---|---|
Id | int64 | true | |
Name | string | true | Имя пользователя |
Position | string | true | Должность пользователя |
AvatarId | string | false | Айди аватарки пользователя |
Online | bool | true | |
CreatedAt | Timestamp | true | |
UpdatedAt | Timestamp | true | |
LoggedInAt | Timestamp | false | |
DisplayName | string | true | Имя, которое нужно показывать клиентам |
Client
Поле | Тип | Обязательное | Комментарий
---|
Сервисы
Клиенты
Информация о текущем клиенте
...