Запросы к серверу

Все запросы отправляются как POST запросы с содержанием "application/json". В ответ сервер всегда возвращает HTTP 200 OK и с содержанием "application/json". Единственное исключение — это методы, которые работают с файлам. В теле ответа содержится информация об успешности запроса, результат или ошибка. Для результата может быть приложен граф связанных объектов. Например, если в результате вернулось сообщение в чате, в графе связанных объектов будет пользователь, который отправил это сообщение. Данных подход позволяет снизить объем дублируемых данных в ответах.

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

POST /api/tickets/create_message HTTP/1.1
Host: app.iqstore.ru
Connection: keep-alive
Content-Length: 65
Origin: http://app.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: user-session=7b6ea6627729db70414da6518561ddc2e07a320e.00000000000000000

{"TicketId":103,"Message":{"LocalId":1548142724904,"Type":"text","Text":"Hello"}}



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

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,
"Ping": false,
"Data": {
"Message": {
"Id": 1632,
"UID": "a75247b226787bc7fc2e337e28d898c2eb46da14",
"TicketId": 103,
"LocalId": 1548142724904,
"Author": "user",
"ClientId": null,
"UserId": 1,
"Type": "text",
"Text": "Hello",
"Received": false,
"Read": false,
"CreatedAt": 1548142724951,
"UpdatedAt": 1548142724951,
"ReceivedAt": null,
"ReadAt": null,
"My": true
},
"Graph": {
"Users": [
{
"Id": 1,
"Name": "Иван Коробков",
"Email": "i.korobkov@iqstore.ru",
"Position": "Технический директор",
"RoleId": 1,
"AvatarId": "baac46c4-c475-11e7-999e-fb4e907475d9.jpg",
"Online": true,
"Active": true,
"Deleted": false,
"TotalAssignedTickets": 1,
"CreatedAt": 1508308102244,
"UpdatedAt": 1548142724569,
"LastSeenAt": 1548142724569,
"AssignedAt": 1548142706408,
"DisplayName": "Иван Коробков",
"Permissions": null
}
]
}
}
}

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

Для авторизации пользовательских запросов используется токен сессии, который пользователь получает после авторизации. Токен автоматически проставляется в Cookie. 

Cookie: user-session ${session-token}

POST /api/tickets/create_message HTTP/1.1
Host: app.iqstore.ru
Connection: keep-alive
Content-Length: 65
Origin: http://app.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: user-session=7b6ea6627729db70414da6518561ddc2e07a320e.00000000000000000
 
{"TicketId":103,"Message":{"LocalId":1548142724904,"Type":"text","Text":"Hello"}}

Авторизация сервисных запросов

Для авторизации запросов сервисных аккаунтов используется заголовок Authorization: Bearer <token>, который система генерирует автоматически при создании нового сервисного аккаунта в разделе Пользователи. 

Authorization: Bearer ${service-account-token}

POST /api/tickets/create_message HTTP/1.1
Host: app.iqstore.ru
Connection: keep-alive
Content-Length: 65
Content-Type: application/json
Authorization: Bearer 3dd194ed5b5f6302fdd02170751126232440979c57102b8c14da9dd3126f7037
 
{"TicketId":103,"Message":{"LocalId":1548142724904,"Type":"text","Text":"Hello"}}

Типы данных

Response

Поле

Тип

Обязательное

Комментарий

OKboolДа

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

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

Error

Ошибка.

Поле

Тип

Nullable

Описание

CodeErrorCode
Код ошибки
Textstring
Описание ошибки

ErrorCode

Константа

Значение

Описание

ErrorCodeNotFound"not_found"Объект не найден
ErrorCodeForbidden"forbidden"Доступ запрещен
ErrorCodeUnauthorized"unauthorized"Ошибка авторизации
ErrorCodeInvalid"invalid"Ошибка валидации данных
  • No labels