You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

Типы данных

Response

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

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

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

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

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

{
  "OK": true,
  "Error": null,
  "Result": null,
  "Rels": null
}

Пример успешного ответа с данными и графом зависимых объектов:

{
  "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
      }
    ]
  }
}

Пример ответа с ошибкой:

{
  "OK": false,
  "Error": {
    "Code": "not_found",
    "Text": "Объект не найден"
  }
}

Сервисы

Клиенты

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

ПараметрЗначениеКомментарий
МетодPOST
Путь/public/api/v1/clients/me
ЗапросПустой
ОтветClient

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

{
  "OK": true,
  "Error": null,
  "Result": {
    "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": 1518167008390,
    "SeenAt": 1518167008390,
    "MessagedAt": null,
    "IntegrationId": "10"
  },
  "Rels": {}
}


Авторизация пользователя по сессии

ПараметрЗначениеКомментарии
МетодPOST
Путь/public/api/v1/clients/auth
Запрос
ПолеТипОбязательноеКомментарий
TokenstringДаТокен внутренний сессии на сервере чата

ОтветClientAuth

Пример запроса:

{"Token": "e71539abc4e000626c34bf981892b9acf84b84ed.f23e085bdd5d2b46e87b36fd79654727"}

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

{
  "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": {}
}

Регистрация анонимного пользователя

ПараметрЗначениеКомментарий
МетодPOST
Путь/public/api/v1/clients/signup
Запрос
ПолеТипОбязательноеКомментарий
NamestringДаИмя клиента

ОтветClientAuth

Пример запроса:

{"Name": "John Doe"}

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

{
  "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.

ПараметрЗначениеКомментарий
МетодPOST
Путь/public/api/v1/clients/integration_auth
Запрос
ПолеТипОбязательноеКомментарий
CredentialsstringДаЛюбая безопасная строка, по которой внешняя система сможет авторизовать пользователя.

ОтветClientAuth

Пример запроса:

{"Credentials": "super-secure-token"}

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

{
  "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": {}
}

Пуши

Регистрация APNS пуш-токена

ПараметрЗначениеКомментарий
МетодPOST
Путь/public/api/v1/push/channel/apns/:channelName
Запрос
ПолеТипОбязательноеКомментарий
TokenstringДа

ОтветПустой

Регистрация GCM/FCM пуш-токена

ПараметрЗначениеКомментарий
МетодPOST
Путь/public/api/v1/push/channel/apns/:channelName
Запрос
ПолеТипОбязательноеКомментарий
TokenstringДа

Чаты

Информация о чате

ПараметрЗначениеКомментарии
МетодPOST
Путь/public/api/v1/chats/channel/chat/:channelName
ЗапросПустое
ОтветChat

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

{
  "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"
      }
    ]
  }
}

Отправка уведомления о том, что пользователь печатает сообщение

ПараметрЗначениеКомментарии
МетодPOST
Путь/public/api/v1/chats/channel/typing/:channelName
ЗапросПустой
ОтветПустой

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

{
  "OK": true,
  "Error": null,
  "Result": null,
  "Rels": null
}

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

Сообщения в чате возвращаются в обратном порядке по дате, сначала новые.

ПараметрЗначениеКомментарии
МетодPOST
Путь/public/api/v1/chats/channel/messages/:channelName
Запрос
ПараметрТипОбязательныйКомментарий
Limitint32ДаКоличество сообщений
MaxIdint64НетАйди последнего сообщения в прошлом ответе истории

ОтветChatMessage[]

Пример запроса:

{
  "Limit": 10,
  "MaxId": 1234
}

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

{
  "OK": true,
  "Error": null,
  "Result": [
    {
      "Id": 504,
      "ChatId": 10,
      "LocalId": 1500970393387,
      "EventId": 3614,
      "TicketMessageId": null,
      "Author": "user",
      "ClientId": null,
      "UserId": 12,
      "Payload": "text",
      "Text": "Добрый день!",
      "Received": false,
      "Read": false,
      "Pushed": true,
      "CreatedAt": 1500970393387,
      "ReceivedAt": null,
      "ReadAt": null,
      "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": 1518165344742,
        "SeenAt": 1518165344742,
        "MessagedAt": null,
        "IntegrationId": "10"
      }
    ],
    "Users": [
      {
        "Id": 12,
        "Name": "Оператор",
        "Email": "operator@iqstore.ru",
        "Position": "Оператор",
        "RoleId": 2,
        "AvatarId": null,
        "Online": false,
        "Deleted": false,
        "TotalAssignedTickets": 0,
        "CreatedAt": 1500970142322,
        "UpdatedAt": 1507204200866,
        "LastSeenAt": 1500970417675,
        "DisplayName": "Оператор"
      }
    ]
  }
}

Отправка сообщения в чат

ПараметрЗначениеКомментарий
МетодPOST
Путь/public/api/v1/chats/channel/send/:channelName
Запрос
ПолеТипОбязательноеКомментарии
LocalIdint64ДаУникальное айди сообщения на стороне клиента, как правило, можно использовать UTC в миллисекундах.
PayloadChatMessagePayloadTypeДаТип сообщения.
TextstringЗависит от PayloadТекст сообщения.
FileIdstringЗависит от PayloadАйди загруженного файла.

ОтветПустойНовое сообщение придет в SSE подключении.

Пример запроса:

{
  "LocalId": 1518166402407,
  "Payload": "text",
  "Text": "Привет"
}

Подтверждение получения сообщений

ПараметрЗначениеКомментарий
МетодPOST
Путь/public/api/v1/chats/messages/received
Запросint64[]Айди сообщений, которые нужно пометить как полученные
ОтветПустой

Пример запроса:

[1, 2, 3, 4, 5]

Подтверждение прочтения сообщений

ПараметрЗначениеКомментарий
МетодPOST
Путь/public/api/v1/chats/messages/read
Запросint64[]Айди сообщений, которые нужно пометить как прочтенные
ОтветПустой

Пример запроса:

[1, 2, 3, 4, 5]

Файлы

Ссылка на файл

ПараметрЗначениеКомментарий
МетодGET
Путь/public/api/v1/files/get/:fileId
ОтветФайл с правильным Content-Type

Ссылка на изображение

В отличии от ссылки на файл позволяет получить изображение в уменьшенном размере.

ПараметрЗначениеКомментарий
МетодGET
Путь/public/api/v1/files/image/:fileId?size=:size
Запрос
ПараметрТипОбязательноеКомментарий
sizeFileImageSizeДа

ОтветФайл с изображением в нужном размере

Информация о файле

ПараметрЗначениеКомментарий
МетодGET
Путь/public/api/v1/files/meta/:fileId
ОтветFile

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

{
  "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": {}
}

Загрузка файла

ПараметрЗначениеКомментарий
МетодPOST
Content-Typemultipart/form-data
Запрос
ПолеТипОбязательноеКомментарий
FileMultipart fileДа
TypeFileTypeДа

ОтветFile

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

{
  "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": {}
}

WebSockets

Сервис событий позволяет подписываться и получать события в реальном времени. В качестве протокола используется HTML5 SSE и WebSockets.

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

ПараметрЗначениеКомментарий
МетодGET
Путь/public/api/v1/ws/chats/channel/events/:channelName?FromId=:fromId&Limit=:limit
Запрос
ПолеТипОбязательноеКомментарий
FromIdint64НетАйди последнего полученного события
Limitint32НетМаксимальное количество событий, которое можно вернуть в одном сообщении

СообщениеChatEvent[]

Пример сообщения с двумя событиями:

{
  "OK": true,
  "Error": null,
  "Result": [
    {
      "Id": 0,
      "Type": "typing",
      "ChatId": 10,
      "MessageId": null,
      "Actor": "user",
      "ClientId": null,
      "UserId": 1,
      "CreatedAt": 1518168819924,
      "Transitive": true
    },
    {
      "Id": 4648,
      "Type": "message_created",
      "ChatId": 10,
      "MessageId": 869,
      "Actor": "user",
      "ClientId": null,
      "UserId": 1,
      "CreatedAt": 1518168820897,
      "Transitive": false
    }
  ],
  "Rels": {
    "Chats": [
      {
        "Id": 10,
        "ProjectId": 1,
        "ClientId": 11,
        "ChannelId": 1,
        "TicketId": 68,
        "EventId": 3645,
        "ClientUnread": 5,
        "CreatedAt": 1498085875177,
        "ChangedAt": 1518168808785
      }
    ],
    "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": 1518168816421,
        "SeenAt": 1518168816421,
        "MessagedAt": null,
        "IntegrationId": "10"
      }
    ],
    "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": 1518168818121,
        "LastSeenAt": 1518168818121,
        "AssignedAt": 1518166787715,
        "DisplayName": "Иван Коробков"
      }
    ]
  }
}

Количество непрочитанных сообщений

ПараметрЗначениеКомментарий
МетодGET
Путь/public/api/v1/ws/chats/channel/unread/:channelName
Сообщениеint32

Пример сообщения:

{
  "OK": true,
  "Error": null,
  "Result": 13
}

HTML5 Server-Sent Events

Сервис событий позволяет подписываться и получать события в реальном времени. В качестве протокола используется HTML5 SSE и WebSockets.

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

ПараметрЗначениеКомментарий
МетодGET
Путь/public/api/v1/sse/chats/channel/events/:channelName?FromId=:fromId&Limit=:limit
Запрос
ПолеТипОбязательноеКомментарий
FromIdint64НетАйди последнего полученного события
Limitint32НетМаксимальное количество событий, которое можно вернуть в одном сообщении

СообщениеChatEvent[]

Пример сообщения с двумя событиями:

{
  "OK": true,
  "Error": null,
  "Result": [
    {
      "Id": 0,
      "Type": "typing",
      "ChatId": 10,
      "MessageId": null,
      "Actor": "user",
      "ClientId": null,
      "UserId": 1,
      "CreatedAt": 1518168819924,
      "Transitive": true
    },
    {
      "Id": 4648,
      "Type": "message_created",
      "ChatId": 10,
      "MessageId": 869,
      "Actor": "user",
      "ClientId": null,
      "UserId": 1,
      "CreatedAt": 1518168820897,
      "Transitive": false
    }
  ],
  "Rels": {
    "Chats": [
      {
        "Id": 10,
        "ProjectId": 1,
        "ClientId": 11,
        "ChannelId": 1,
        "TicketId": 68,
        "EventId": 3645,
        "ClientUnread": 5,
        "CreatedAt": 1498085875177,
        "ChangedAt": 1518168808785
      }
    ],
    "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": 1518168816421,
        "SeenAt": 1518168816421,
        "MessagedAt": null,
        "IntegrationId": "10"
      }
    ],
    "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": 1518168818121,
        "LastSeenAt": 1518168818121,
        "AssignedAt": 1518166787715,
        "DisplayName": "Иван Коробков"
      }
    ]
  }
}

Количество непрочитанных сообщений

ПараметрЗначениеКомментарий
МетодGET
Путь/public/api/v1/sse/chats/channel/unread/:channelName
Сообщениеint32

Пример сообщения:

{
  "OK": true,
  "Error": null,
  "Result": 13
}
  • No labels