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 |
Пример успешного ответа:
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": 12252, "NameChatId": "Оператор"10, "EmailLocalId": "operator@iqstore.ru"1498085875116, "CreatedAtEventId": 15009701423221649, "UpdatedAtTicketMessageId": 1507204200866null, }"Author": "client", ] } } |
Пример ответа с ошибкой:
Code Block |
---|
{ "OKClientId": false11, "ErrorUserId": {null, "CodePayload": "not_foundtext", "Text": "ОбъектЗдравствуйте!", не найден" } } |
Сервисы
Чаты
Информация о чате
...
Пример ответа:
Code Block | ||
---|---|---|
| ||
{ "OKReceived": true, "ErrorRead": nulltrue, "Result": { "IdPushed": 10false, "ProjectIdCreatedAt": 11498085875206, "ClientIdReceivedAt": 111498085920218, "ChannelIdReadAt": 11498085920218, "TicketIdMy": 68,true "EventId": 3645}, { "ClientUnread": 5, "CreatedAtId": 1498085875177253, "ChangedAtChatId": 151809106188010, }, "RelsLocalId": {1498085875247, "ClientsEventId": [1626, { "TicketMessageId": null, "IdAuthor": 11"system", "ProjectIdClientId": 1null, "CompanyIdUserId": 2null, "TypePayload": "crmnotice", "NameText": "Дмитрий Менделеев", "OnlineReceived": truefalse, "CustomerIdRead": 5false, "ChannelIdPushed": nullfalse, "TelegramIdCreatedAt": null1498085875247, "FacebookIdReceivedAt": null, "VKIdReadAt": null, "TotalTicketsMy": 2false }, { "TotalOpenTicketsId": 1254, "CreatedAtChatId": 149808586687310, "UpdatedAtLocalId": 15181649188351498085879130, "SeenAtEventId": 15181649188351633, "MessagedAtTicketMessageId": null, "IntegrationIdAuthor": "10user", }"ClientId": null, ] } } |
Отправка уведомления о том, что пользователь печатает сообщение
...
Пример ответа:
Code Block | ||
---|---|---|
| ||
{ "OK"UserId": true4, "ErrorPayload": null"text", "ResultText": null "Добрый день!", "Rels": null } |
Получение истории сообщений в чате
Сообщения в чате возвращаются в обратном порядке по дате, сначала новые.
...
Параметр | Тип | Обязательный | Комментарий |
---|---|---|---|
Limit | int32 | Да | Количество сообщений |
MaxId | int64 | Нет | Айди последнего сообщения в прошлом ответе истории |
...
Пример запроса:
Code Block | ||
---|---|---|
| ||
{ "LimitReceived": 10true, "MaxId": 1234 } |
Пример ответа:
Code Block | ||
---|---|---|
| ||
{ "OKRead": true, "ErrorPushed": nullfalse, "Result": [ {"CreatedAt": 1498085879130, "IdReceivedAt": 5041498085879272, "ChatIdReadAt": 101498085879302, "LocalIdMy": 1500970393387,false } ], "EventIdRels": 3614,{ "TicketMessageIdClients": null, [ { "AuthorId": "user"11, "ClientIdProjectId": null1, "UserIdCompanyId": 122, "PayloadType": "textcrm", "TextName": "ДобрыйДмитрий день!Менделеев", "ReceivedOnline": falsetrue, "ReadCustomerId": false5, "PushedChannelId": truenull, "CreatedAtTelegramId": 1500970393387null, "ReceivedAtFacebookId": null, "ReadAtVKId": null, "MyTotalTickets": false2, } ], "RelsTotalOpenTickets": {1, "Clients": [ {"CreatedAt": 1498085866873, "IdUpdatedAt": 111518171379854, "ProjectIdSeenAt": 11518171379854, "CompanyIdMessagedAt": 2null, "TypeIntegrationId": "crm",10" } ], "NameFiles": "Дмитрий Менделеев", [ { "OnlineId": true"1705a928-0d7a-11e8-b187-13b6ccbb5d10.txt", "CustomerIdType": 5"file", "ChannelIdOwner": null"client", "TelegramIdOwnerClientId": null11, "FacebookIdClientId": null, "VKIdUserId": null1, "TotalTicketsName": 2"oci8-sigsegv.txt", "TotalOpenTicketsPath": 1"clients/11/11/1705a928-0d7a-11e8-b187-13b6ccbb5d10.txt", "CreatedAtSize": 14980858668735356, "UpdatedAtImageWidth": 1518165344742null, "SeenAtImageHeight": 1518165344742null, "MessagedAtContentType": null"", "IntegrationIdCreatedAt": "10"1518167865822 } ], "Users": [ { "Id": 121, "Name": "ОператорИван Коробков", "Email": "operator@iqstorei.korobkov@iqstore.ru", "Position": "ОператорТехнический директор", "RoleId": 21, "AvatarId": null"e83220a3-56cb-11e7-b21f-6109cf735b0f.png", "Online": falsetrue, "Deleted": false, "TotalAssignedTickets": 01, "CreatedAt": 15009701423221491321126034, "UpdatedAt": 15072042008661518171379292, "LastSeenAt": 1518171379292, "AssignedAt": 15009704176751518166787715, "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":"Привет!"} |