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 |
Пример успешного пустого ответа:
Пример ответа:
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, "UpdatedAtChatId": 150720420086610, }"LocalId": 1498085875116, ] } } |
Пример ответа с ошибкой:
Code Block |
---|
{ "OKEventId": false1649, "ErrorTicketMessageId": {null, "CodeAuthor": "not_foundclient", "TextClientId": 11, "Объект не найден" } } |
Сервисы
Клиенты
Информация о текущем клиенте
...
Пример ответа:
Code Block |
---|
{ "OK "UserId": null, "Payload": "text", "Text": "Здравствуйте!", "Received": true, "Error": null, "ResultRead": {true, "IdPushed": 11false, "ProjectIdCreatedAt": 11498085875206, "CompanyIdReceivedAt": 21498085920218, "TypeReadAt": "crm"1498085920218, "Name": "Дмитрий Менделеев", "Online"My": true, "CustomerId": 5}, "ChannelId": null, { "TelegramIdId": null253, "FacebookIdChatId": null10, "VKIdLocalId": null1498085875247, "TotalTicketsEventId": 21626, "TotalOpenTicketsTicketMessageId": 1null, "CreatedAtAuthor": 1498085866873"system", "UpdatedAtClientId": 1518167008390null, "SeenAtUserId": 1518167008390null, "MessagedAtPayload": null"notice", "IntegrationIdText": "10", }"Received": false, "RelsRead": {} } |
Авторизация пользователя по сессии
...
Поле | Тип | Обязательное | Комментарий |
---|---|---|---|
Token | string | Да | Токен внутренний сессии на сервере чата |
...
Пример запроса:
Code Block |
---|
{"Token": "e71539abc4e000626c34bf981892b9acf84b84ed.f23e085bdd5d2b46e87b36fd79654727"} |
Пример ответа:
Code Block |
---|
{
"OK": true,
"Error": null,
"Result": {
"Client": {
"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": 1518167109406,
"SeenAt": 1518167109406,
"MessagedAt": null,
"IntegrationId": "10"
},
"Session": {
"Id": 92,
"ClientId": 11,
"Token": "e71539abc4e000626c34bf981892b9acf84b84ed.f23e085bdd5d2b46e87b36fd79654727",
"CreatedAt": 1518164878551,
"Integration": false,
"IntegrationHash": null,
"IntegrationCredentials": null
}
},
"Rels": {}
} |
Регистрация анонимного пользователя
...
Поле | Тип | Обязательное | Комментарий |
---|---|---|---|
Name | string | Да | Имя клиента |
...
Пример запроса:
Code Block |
---|
{"Name": "John Doe"} |
Пример ответа:
Code Block |
---|
{
"OK": true,
"Error": null,
"Result": {
"Client": {
"Id": 18,
"ProjectId": 1,
"CompanyId": null,
"Type": "internal",
"Name": "John Doe",
"Online": false,
"CustomerId": null,
"ChannelId": null,
"TelegramId": null,
"FacebookId": null,
"VKId": null,
"TotalTickets": 0,
"TotalOpenTickets": 0,
"CreatedAt": 1518167345813,
"UpdatedAt": 1518167345813,
"SeenAt": null,
"MessagedAt": null,
"IntegrationId": null
},
"Session": {
"Id": 94,
"ClientId": 18,
"Token": "9f0ccd578394c9ef56c660de0f6c4614cbfe9a35.a07b3b3359e0d3943e074656dcda5d28",
"CreatedAt": 1518167345815,
"Integration": false,
"IntegrationHash": null,
"IntegrationCredentials": null
}
},
"Rels": {}
} |
Авторизация клиента через внешнюю систему
Например, авторизация клиента, информация о котором есть в ДБО или CRM.
...
Поле | Тип | Обязательное | Комментарий |
---|---|---|---|
Credentials | string | Да | Любая безопасная строка, по которой внешняя система сможет авторизовать пользователя. |
...
Пример запроса:
Code Block |
---|
{"Credentials": "super-secure-token"} |
Пример ответа:
Code Block |
---|
{
"OK": true,
"Error": null,
"Result": {
"Client": {
"Id": 1,
"ProjectId": 1,
"CompanyId": null,
"Type": "crm",
"Name": "Мартин Лютер Кинг",
"Online": false,
"CustomerId": 7,
"ChannelId": null,
"TelegramId": null,
"FacebookId": null,
"VKId": null,
"TotalTickets": 15,
"TotalOpenTickets": 0,
"CreatedAt": 1491678852327,
"UpdatedAt": 1517989811064,
"SeenAt": 1516117515977,
"MessagedAt": null,
"IntegrationId": "1"
},
"Session": {
"Id": 95,
"ClientId": 1,
"Token": "cd0f8d5b81358ec76db6aa50ec0424d7fd4fccc7.da3df153848575972de2e8b3ca187f2f",
"CreatedAt": 1518167539961,
"Integration": false,
"IntegrationHash": null,
"IntegrationCredentials": null
}
},
"Rels": {}
} |
Чаты
Информация о чате
...
Пример ответа:
Code Block | ||
---|---|---|
| ||
{
"OK": true,
"Error": null,
"Result": {
"Id": 10,
"ProjectId": 1,
"ClientId": 11,
"ChannelId": 1,
"TicketId": 68,
"EventId": 3645,
"ClientUnread": 5,
"CreatedAt": 1498085875177,
"ChangedAt": 1518091061880
},
"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": 1518164918835,
"SeenAt": 1518164918835,
"MessagedAt": null,
"IntegrationId": "10"
}
]
}
} |
Отправка уведомления о том, что пользователь печатает сообщение
...
Пример ответа:
Code Block | ||
---|---|---|
| ||
{
"OK": true,
"Error": null,
"Result": null,
"Rels": null
} |
Получение истории сообщений в чате
Сообщения в чате возвращаются в обратном порядке по дате, сначала новые.
...
Параметр | Тип | Обязательный | Комментарий |
---|---|---|---|
Limit | int32 | Да | Количество сообщений |
MaxId | int64 | Нет | Айди последнего сообщения в прошлом ответе истории |
...
Пример запроса:
Code Block | ||
---|---|---|
| ||
{
"Limit": 10,
"MaxId": 1234
} |
Пример ответа:
Code Block | ||
---|---|---|
| ||
{ "OK": true, "Error": null, "Result": [ { "Id": 504, "ChatId": 10, "LocalId": 1500970393387, "EventId": 3614, "TicketMessageId": null, "Author": "user"false, "Pushed": false, "CreatedAt": 1498085875247, "ReceivedAt": null, "ClientIdReadAt": null, "UserIdMy": 12,false }, "Payload": "text", { "TextId": "Добрый день!"254, "ReceivedChatId": false10, "ReadLocalId": false1498085879130, "PushedEventId": true1633, "CreatedAtTicketMessageId": 1500970393387null, "ReceivedAtAuthor": null"user", "ReadAtClientId": null, "MyUserId": false4, } ], "RelsPayload": { "text", "ClientsText": [ "Добрый день!", { "Received": true, "IdRead": 11true, "ProjectIdPushed": 1false, "CompanyIdCreatedAt": 21498085879130, "TypeReceivedAt": "crm"1498085879272, "NameReadAt": "Дмитрий Менделеев"1498085879302, "OnlineMy": true,false } ], "CustomerIdRels": 5,{ "ChannelIdClients": null,[ "TelegramId": null,{ "FacebookIdId": null11, "VKIdProjectId": null1, "TotalTicketsCompanyId": 2, "TotalOpenTickets": 1Type": "crm", "CreatedAtName": "Дмитрий 1498085866873Менделеев", "UpdatedAtOnline": 1518165344742true, "SeenAtCustomerId": 15181653447425, "MessagedAtChannelId": null, "IntegrationIdTelegramId": "10"null, } ]"FacebookId": null, "Users": [ {"VKId": null, "IdTotalTickets": 122, "NameTotalOpenTickets": "Оператор"1, "EmailCreatedAt": "operator@iqstore.ru"1498085866873, "PositionUpdatedAt": "Оператор"1518171379854, "RoleIdSeenAt": 21518171379854, "AvatarIdMessagedAt": null, "OnlineIntegrationId": false,"10" } "Deleted": false ], "TotalAssignedTicketsFiles": 0,[ { "CreatedAt": 1500970142322, "UpdatedAt": 1507204200866"Id": "1705a928-0d7a-11e8-b187-13b6ccbb5d10.txt", "LastSeenAtType": 1500970417675"file", "DisplayNameOwner": "Операторclient", } ] } } |
Отправка сообщения в чат
...
Поле | Тип | Обязательное | Комментарии |
---|---|---|---|
LocalId | int64 | Да | Уникальное айди сообщения на стороне клиента, как правило, можно использовать UTC в миллисекундах. |
Payload | ChatMessagePayloadType | Да | Тип сообщения. |
Text | string | Зависит от Payload | Текст сообщения. |
FileId | string | Зависит от Payload | Айди загруженного файла. |
...
Пример запроса:
Code Block |
---|
{
"LocalId": 1518166402407,
"Payload": "text",
"Text": "Привет"
} |
Подтверждение получения сообщений
...
Пример запроса:
Code Block |
---|
[1, 2, 3, 4, 5] |
Подтверждение прочтения сообщений
...
Пример запроса:
Code Block |
---|
[1, 2, 3, 4, 5] |
Файлы
Ссылка на файл
...
Информация о файле
...
Пример ответа:
Code Block |
---|
{
"OK": true,
"Error": null,
"Result": {
"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
},
"Rels": {}
} |
Загрузка файла
...
"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": "Иван Коробков"
}
]
}
} |
Авторизация запросов
Для авторизации запросов к серверу используется токен сессии, который клиент получает после авторизации во внешней системе. Токен автоматически проставляется в Cookie. Если нужно, его также можно передавать отдельным заголовком Authorization.
Cookie: client-session ${session-token}
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":"Привет!"} |
Authorization: Client ${session-token}
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
Authorization: Client 973b38b354a508bf13244b2655077895c78f1e86.aaaa7e84433b0901c502a5f7d38c71ee
{"LocalId":1518171256447,"Payload":"text","Text":"Привет!" |
...
Пример ответа:
Code Block |
---|
{
"OK": true,
"Error": null,
"Result": {
"Id": "9a9cef3d-0d7a-11e8-b188-9def95b467fb.jpg",
"Type": "image",
"Owner": "client",
"OwnerClientId": 11,
"ClientId": 11,
"UserId": null,
"Name": "1.jpg",
"Path": "clients/11/11/9a9cef3d-0d7a-11e8-b188-9def95b467fb.jpg",
"Size": 1039999,
"ImageWidth": 3024,
"ImageHeight": 4032,
"ContentType": "image/jpeg",
"CreatedAt": 1518168086597
},
"Rels": {}
} |