Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
maxLevel3

Типы данных

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

ПолеТипОбязательноеКомментарий
OKboolДа

true – успешный ответ
false – ошибка

ErrorErrorНетИнформация об ошибке.
ResultAnyНетУспешный результат, тип зависит от вызываемого метода.
RelsGraphНетГраф зависимых объектов, на которые ссылается результат.

Пример успешного пустого ответа:

Пример ответа:

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

ПолеТипОбязательноеКомментарий
Idint64Да
ProjectIdint64Да
ClientIdint64Да
ChannelIdint64Да




EventIdint64НетАйди последнего события в чате
ClientUnreadint32ДаКоличество непрочитанных сообщений в чате




CreatedAtTimestampДаДата создания
ChangedAtTimestampДаДата изменения

ChatMessage

ПолеТипОбязательноеКомментарий
Idint64Да
ChatIdint64Да
LocalIdint64Да
EventIdint64Да




AuthorActorTypeДа
ClientIdint64Зависит от Author
UserIdint64Зависит от Author




PayloadChatMessagePayloadTypeДа
TextstringДаЕсть всегда, но может быть пустой строкой, если тип сообщения — файл.
FileIdstringЗависит от Payload




ReceivedboolДаСообщение доставлено получателю.
ReadboolДаСообщение прочитанно получателем.
PushedboolДаОтправлено пуш-уведомление о сообщении.




CreatedAtTimestampДа

Дата создания.

ReceivedAtTimestampДаДата получения.
ReadAtTimestampДаДата прочтения.




MyboolДаТекущий пользователь автор этого сообщения.

ChatMessagePayloadType

Перечисление типов сообщений в чате.

ЗначениеКомментарий
textТекстовое сообщение
fileСообщение с приложенным файлом

ChatEvent

Событие в чате.

ПолеТипОбязательноеКомментарий
Idint64trueМожет быть 0, если событие транзитивное, т.е. не хранится в базе данных.
TypeChatEventTypetrueТип события




ChatIdint64trueАйди чата, в котором произошло событие
MessageIdint64falseАйди сообщения, с которым связано событие




ActorActorTypetrueТип актора, который совершил действие.
ClientIdint64falseАйди клиента, который совершил действие.
UserIdint64falseАйди пользователя, который совершил действие.




CreatedAtTimestamptrueДата создания
TransitiveboolfalseТранзитивное событие, не хранится в базе данных, пример, что пользователь печатает в чате.

ChatEventType

Перечисление типов событий в чате.

ЗначениеКомментарий
typingКлиент или пользователь печатает в чате.
message_createdНовое сообщение в чате.
message_receivedПолучатель подтвердил, что сообщение доставлено.
message_readПолучатель подтвердил, что сообщение прочитанно.

Client

ПолеТипОбязательноеКомментарий
Idint64true
ProjectIdint64true




TypeClientTypetrueТип клиента.
NamestringtrueИмя клиента.
OnlinebooltrueКлиент сейчас онлайн.




CreatedAtTimestamptrueДата создания.
UpdatedAtTimestamptrueДата обновления.
SeenAtTimestampfalseДата, когда клиент был онлайн последний раз.

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": "Объект не найден"
  }
}

...

ПолеТипОбязательноеКомментарий
Idstringint64true
ДаTypeProjectIdFileTypeint64trueДаТип файла
ClientIdOwnerint64FileOwnerTypeДаChannelIdint64Да
EventIdint64НетАйди последнего события в чате
ClientUnreadint32ДаКоличество непрочитанных сообщений в чате
CreatedAtTimestampДаДата создания
ChangedAtTimestampДаДата изменения

ChatMessage

...

Дата создания.

...

true

Тип владельца файла:

  • public — Публичный файл, виден всем.
  • client — Файл в чате клиента.
OwnerClientIdint64Зависит от OwnerАйди клиента, в чате которого находится этот файл.
ClientIdint64falseАйди клиента, который загрузил этот файл.
UserIdint64falseАйди пользователя, который загрузил этот файл.




NamestringtrueОригинальное имя файла.
PathstringtrueВнутренний путь к файлу.
Sizeint64trueРазмер файла в байтах




ImageWidthint64falseШирина изображения.
ImageHeightint64falseВысота изображения




ContentTypestringtrueТип содержания файла.
CreatedAtTimestamptrueДата создания файла.

FileType

Перечисление типов файла

ЗначениеКомментарий
fileФайл или документ.
imageИзображение.

User

ПолеТипОбязательноеКомментарий
Idint64true
NamestringtrueИмя пользователя
PositionstringtrueДолжность пользователя
AvatarIdstringfalseАйди аватарки пользователя
Onlinebooltrue




CreatedAtTimestamptrue
UpdatedAtTimestamptrue
LoggedInAtTimestampfalse




DisplayNamestringtrueИмя, которое нужно показывать клиентам

Client

Комментарий
ПолеТипОбязательное


Сервисы

Клиенты

Информация о текущем клиенте

...