Публичное API
- 1 Какова схема авторизации
- 2 Заголовки запросов
- 3 Какие запросы можно использовать
- 3.1 Отчеты
- 3.1.1 Получение списка всех доступных отчётов
- 3.1.2 Получение метаданных
- 3.1.3 Генерация и получение отчёта
- 3.1.3.1 Обычный режим
- 3.1.3.2 Режим потокового скачивания
- 3.2 Бейджи
- 3.3 План развития
- 3.4 Баллы
- 3.5 Файлы
- 3.6 Квесты
- 3.1 Отчеты
Какова схема авторизации
Для публичных методов API реализована авторизация через публичный ключ API – при отправке запросов по урлам вида api/public/* идёт проверка на наличие заголовка (Header) X-Auth-Token
. Если заголовок присутствует, и соответствует указанному в конфиге, то авторизация проходит успешно
Публичный ключ API хранится в .env под названием PUBLIC_API_TOKEN
В панели администрирования публичный ключ API отображается в разделе Настройки → Лицензия.
При отсутствии публичного ключа API, либо если он указан неверно, в запросах возвращается ошибка 401 Authorization Required
Заголовки запросов
Header | Описание | Механика |
---|---|---|
X-Auth-Token | Заголовок авторизации | Обязательный заголовок При каждом обращении, не важно, POST или GET, в заголовках запроса нужно указывать параметр |
Locale | Язык запроса, на котором должен быть возвращён контент |
При этом если в теле запроса нет ошибок и если в описании метода не указано иное, запрос должен быть успешно выполнен и вернуть статус 200 с соответствующим сообщением. |
Какие запросы можно использовать
Отчеты
Получение списка всех доступных отчётов
Чтобы получить список всех доступных отчётов, нужно сделать GET запрос на адрес:
GET
/public/api/v1/reports/list
В ответ придёт JSON массив объектов, каждый из которых будет содержать Название (title
) и Системное имя (type
).
Получение метаданных
Чтобы получить метаданные о конкретном отчёте, нужно сделать GET запрос на адрес:
GET
/public/api/v1/reports/metadata/{type}
заменив в адресеtype
на нужное Системное имя, полученное на предыдущем этапе.
В ответ придёт JSON объект с двумя полями:
headersList
— объект, содержащий предполагаемые заголовки отчёта;
Количество полей может быть любое, зависит от отчёта, т.к каждый отчёт содержит различные поля;
Ключами являются Системные имена полей, а значениями являются Названия полей (например,"email": "Почта"
);
В сформированном отчёте может быть другое количество полей или их названия (например, в отчёте по тестированию могут быть поля, отвечающие за вопросы выбранного тестирования, но мы не можем знать эти вопросы (поля) до выбора самого тестирования, поэтому в метаданных этих полей заранее быть не может).filtersList
— объект, содержащий фильтры данного отчёта;
Ключами являются Системные имена, а значениями объекты, с информацией о фильтре (пример полей:type
— тип,label
— название,values
— значения,url
— адрес, на который нужно делать запрос для получения списка значений и поиска по нему);
Генерация и получение отчёта
Обычный режим
Чтобы сгенерировать и получить отчёт, нужно отправить POST запрос на адрес:
post
/public/api/v1/reports/generate/{type}
заменив в адресеtype
на нужное Системное имя, полученное на этапе Получения списка всех доступных отчётов.
В body запроса нужно отправить JSON объект с полем filters
, в котором будут поля, ключами которых будут Системные имена фильтров, полученных на этапе Получения метаданных, а значениями непосредственно значения фильтров (цифра, строка, массив и тд)
Если данные по фильтру Статус пользователя (user_status
) не были переданы в body при запросе или был передан пустой массив, тогда отчёт будет сформирован только по активным сотрудникам, при этом в массиве объектов data
, который придет в ответ, будет отсутствовать параметр user_status
В ответ придёт JSON объект со следующими полями:
title
— строка с названием отчёта;
Может не совпадать со значением, полученным на первом этапе, т.к может содержать дополнительные данные вроде даты и других значений.isMultiple
— булево значение;
Если значениеtrue
, то в поляхheaders
иdata
будет не объект, а массив объектов — каждый объект это отдельная страница отчёта.headers
— объект, содержащий заголовки таблицы отчёта, где ключи это Системные имена полей, а значения это Названия полей.data
— массив объектов, содержащий данные отчёта;
Каждый объект в массиве — это одна строка;
Каждый объект содержет поля, ключами которого являются Системные имена полей, а значениями являются данные (например,"status": "Активен"
).metadata
— объект, содержащий дополнительные данные об отчёте, например, выбранные фильтры;
Ключами объекта являются Системные имена полей, а значениями сами данные (например,"metadataFieldName": "Тестовый пользователь"
).hasErrors
— булево значение;
Были ли ошибки при попытке сформировать отчёт;
Если значениеtrue
, значит отчёт не сформирован и нужно смотреть ошибки в полеerrors
.errors
— объект, содержащий ошибки;
Ключами являются Системные имена полей, а значениями Текст ошибки.
Режим потокового скачивания
Чтобы сгенерировать отчёт, для дальнейшего его скачивания в потоковом режиме, нужно отправить POST запрос на адрес:
post
/public/api/v1/reports/create/{type}
заменив в адресеtype
на нужное Системное имя, полученное на этапе Получения списка всех доступных отчётов.
В body запроса нужно отправить JSON объект с полем filters
, в котором будут поля, ключами которых будут Системные имена фильтров, полученных на этапе Получения метаданных, а значениями непосредственно значения фильтров (цифра, строка, массив и тд)
Если данные по фильтру Статус пользователя (user_status
) не были переданы в body при запросе или был передан пустой массив, тогда отчёт будет сформирован только по активным сотрудникам, при этом в массиве объектов data
, который придет в ответ, будет отсутствовать параметр user_status
В ответ придёт JSON объект с полем id
, он же Идентификатор сгенерированного отчета.
Чтобы получить JSON данные отчёта, сгенерированного в предыдущем шаге, нужно отправить GET запрос на адрес:
GET
/public/api/v1/reports/data/{id}
заменив в адресеid
на нужный Идентификатор, полученный в предыдущем шаге
Администратору платформы для обработки json необходимо включить на своей стороне поддержку потокового скачивания в принимаемом ПО
Описание режима потоковой передачи данных приведено на сайте Handle large messages in workflows using chunking - Azure Logic Apps
Важно:
В потоковом режиме данные передаются дольше
После запроса отчёта в потоковом режиме API не становится заблокированным, можно обратиться к другим методом или за формированием другого отчёта
В ответ придёт JSON объект со следующими полями:
title
— строка с названием отчёта;
Может не совпадать со значением, полученным на первом этапе, т.к может содержать дополнительные данные вроде даты и других значений.isMultiple
— булево значение;
Если значениеtrue
, то в поляхheaders
иdata
будет не объект, а массив объектов — каждый объект это отдельная страница отчёта.headers
— объект, содержащий заголовки таблицы отчёта, где ключи это Системные имена полей, а значения это Названия полей.data
— массив объектов, содержащий данные отчёта;
Каждый объект в массиве — это одна строка;
Каждый объект содержит поля, ключами которого являются Системные имена полей, а значениями являются данные (например,"status": "Активен"
).metadata
— объект, содержащий дополнительные данные об отчёте, например, выбранные фильтры;
Ключами объекта являются Системные имена полей, а значениями сами данные (например,"metadataFieldName": "Тестовый пользователь"
).hasErrors
— булево значение;
Были ли ошибки при попытке сформировать отчёт;
Если значениеtrue
, значит отчёт не сформирован и нужно смотреть ошибки в полеerrors
.errors
— объект, содержащий ошибки;
Ключами являются Системные имена полей, а значениями Текст ошибки.
Бейджи
Получение информации об имеющихся на платформе бейджах
Информация передается по всем неудаленным бейджам
Чтобы получить информацию об имеющихся на платформе бейджах, нужно сделать GET запрос на адрес:
GET
/public/api/v1/badge
Если требуется получить ответ на определенном языке, в заголовках запроса можно передать параметрLocale
В случае успешного запроса (200) в ответ придёт JSON объект со следующими полями:
id
– идентификатор бейджа, INTtitle
– название бейджа (на запрашиваемом или языке, установленном по умолчанию), varcharimage
– ссылка на загруженное изображение для бейджа, stringdescription
– описание бейджа илиNULL
в случае его отсутствия, stringpopupDescription
– сообщение при получении бейджа, stringcolor
– значение цвета для бейджа илиNULL
, если цвет не установлен, varcharactive
– статус активности бейджа,0
или1
, booleansystem
–1
если бейдж системный,0
если бейдж пользовательский, booleanchildren
– массив с уровнями бейджей, если бейдж содержит уровни, или пустой массив:Для каждого дочернего бейджа отображаются все значения выше (кроме
children
) и дополнительное значениеgrade
grade
– грейд бейджа, INT
Начисление бейджа пользователю
Бейдж начисляется пользователю, если:
Пользователь существует и не удалён, статус активности не важен
Бейдж существует, активен, не удалён
Бейдж не является системным
Бейдж не является родительским для многоуровнего бейджа
Бейдж не является более низким грейдом уже назначенного грейда многоуровневого бейджа
Если бейдж существует и может быть назначен, запрос считается успешным, даже если были найдены не все пользователи из запроса. По каждому пользователю приходит информация со статусом начисления бейджа для него.
Если назначаемый бейдж относится к многоуровневому бейджу, ранее назначенный бейдж другого уровня снимается при назначении нового бейджа.
Чтобы начислить бейдж пользователю, нужно сделать POST запрос на адрес:
post
/public/api/v1/badge/{badgeId}/assign
в {badgeId} должен передаваться ID бейджа, который необходимо назначить пользователю или пользователям
В body запроса нужно отправить обязательный JSON объект userId
, в котором перечислены уникальные идентификаторы пользователей (массив, должны совпадать c выбранным уникальным идентификатором на платформе)
Пример:
{
"userId": [
"example@example.ru",
"example2@example.ru"
]
}
В случае успешного запроса (200) в ответ придёт JSON объект со следующими полями:
result
– значениеtrue
data
– массив данных по каждому пользователю, который был передан в запросе:id
– идентификатор пользователяsuccess
false
– если пользователь не существует или удалён, и ему не был начислен бейджtrue
– если пользователь существует, не удалён, ему был начислен бейдж (или он уже был начислен ранее)
error
"User not found"
– если пользователь не существует или удалён"User already has a higher grade badge, remove it first"
– если у пользователю пытаются назначить многоуровневый бейдж более низкого уровня при наличии у него более высокогоnull
– для статусаtrue
, при успешном начислении бейджа
Снятие бейджа с пользователя
Бейдж снимается с пользователя, если:
Пользователь существует и не удален, статус активности пользователя не важен
Бейдж не является системным
Если бейдж существует и может быть снят (не системный), запрос считается успешным, даже если были найдены не все пользователи из запроса. По каждому пользователю приходит информация со статусом снятия бейджа для него.
Если снимаемый бейдж относится к многоуровневому бейджу, бейджи другого уровня при снятии не назначаются.
Чтобы снять бейдж пользователю, нужно сделать POST запрос на адрес:
post
/public/api/v1/badge/{badgeId}/remove
в {badgeId} должен передаваться ID бейджа, который необходимо снять с пользователя или с пользователей
В body запроса нужно отправить обязательный JSON объект userId
, в котором перечислены уникальные идентификаторы пользователей (массив, должны совпадать c выбранным уникальным идентификатором на платформе)
Пример:
{
"userId": [
"example@example.ru",
"example2@example.ru",
"example3@example.ru"
]
}
В случае успешного запроса (200) в ответ придёт JSON объект со следующими полями:
result
– значениеtrue
data
– массив данных по каждому пользователю, который был передан в запросе:id
– идентификатор пользователяsuccess
false
– если пользователь не существует или удалён, и с него не был снят бейджtrue
– если пользователь существует, не удалён, бейдж был с него снят (или этого бейджа у него и не было)
error
"User not found"
– если пользователь не существует или удалёнnull
– для статусаtrue
, при успешном снятии бейджа
План развития
Получение информации о текущем состоянии целей пользователя
Чтобы получить информацию о текущем состоянии целей пользователя, нужно сделать GET запрос на адрес:
GET
/public/api/v1/goals/user/{userId}(?type=active|completed|all)
в адресе метода должны быть указаны следующие параметры:userId
– уникальный идентификатор пользователя, должен совпадать c выбранным уникальным идентификатором на платформе, STRING. Обязательный параметрtype
– тип цели, информацию по которой надо вернуть. Необязательный параметр, при отсутствии возвращаются все цели пользователя. Возможные значения:active
– все незавершённые цели пользователя (значения completedAt и completedBy в базе данных Null)completed
– все завершённые цели пользователяall
– все цели пользователя (кроме удалённых)
В случае успешного запроса (200) в ответ придёт JSON со следующими параметрами:
result
– должно вернуться значение trueitems
– массив всех целей пользователя указанного типа. Может вернуться пустой массив, если у пользователя нет неудалённых целейid
– уникальный идентификатор цели, по которому можно обратиться к ней для изменения, STRINGtitle
– название цели, STRINGvalue
– целевое значение цели, INTprogress
– текущее значение цели, INTpriority
– приоритет, установленный для цели, возможные значения -high
,medium
,low
, STRINGdeadlineAt
– дедлайн цели с указанием даты наступления дела в формате ISO 8601 с указанием таймзоны, DATETIMEvalueUnit
– единица измерения значений цели, возможные значения –percents
,numbers
,roubles
,dollars
,euros
,hours
, STRINGinRisk
– находится ли цель в зоне риска, возможные значение –true
илиfalse
, boolean. Для ключевых результатов – наследуется из родительской целиapprovedAt
:Дата и время подтверждения цели в формате ISO 8601 с указанием таймзоны, если руководитель или HR-сотрудник подтвердил цель, DATETIME
null
– если цель не была подтверждена руководителем или HR-сотрудникомДля ключевых результатов – наследуется из родительской цели
approvedById
:Идентификатор сотрудника, который подтвердил цель, если она подтверждена, STRING
null
– если цель не была подтверждена руководителем или HR-сотрудникомДля ключевых результатов – наследуется из родительской цели
completedAt
:Дата и время завершения цели в формате ISO 8601 с указанием таймзоны, если цель завершена, DATETIME
null
– если цель не завершенаДля ключевых результатов – наследуется из родительской цели
completedById
:Идентификатор сотрудника, который завершил цель, если она завершена, STRING
null
– если цель не была завершенаДля ключевых результатов – наследуется из родительской цели
keyResults
:Массив всех ключевых результатов, если они заданы. Структура каждого элемента массива результатов повторяет структуру элемента массива цели
null
– если для цели не заданы ключевые результаты или цель сама является ключевым результатом
limit
– максимальное количество активных целей, которое может быть создано для одного пользователяcountActive
– количество текущих активных целей пользователя. Значение должно возвращаться даже если в запросе запрашивается информация только по завершённым целям пользователя.
Cоздания новых целей для пользователей
Цель должна создаваться, если:
Количество активных целей указанного пользователя < лимита целей
Все параметры заполнены корректно
Если хотя бы одно из этих условий не выполняется, цель не должна создаваться, возвращается ошибка
Чтобы создать новую цель для пользователя, нужно сделать POST запрос на адрес:
post
/public/api/v1/goals/user/{userId}
в адресе метода должен быть указан параметрuserId
– уникальный идентификатор пользователя, должен совпадать c выбранным уникальным идентификатором на платформе, STRING. Обязательный параметр
В body запроса нужно отправить обязательный JSON, каждый элемент которого должен содержать следующие параметры:
Если для одного пользователя необходимо создать несколько целей, необходимо перечислять их в массиве отдельными элементами.
authorId
– уникальный идентификатор пользователя, от имени которого должна быть создана цель, STRING. Обязательный параметр. Возможные значения:Совпадает с
userId
, если цель должна быть создана от имени пользователяСовпадает с
id
руководителя пользователя или пользователя с разрешением План развития \ Управление целями и планами. Если цель создаётся от руководителя или пользователя с указанным разрешением, она сразу должна создаваться подтверждённой
title
– название цели, STRING, до 3000 символов. Обязательный параметрvalue
– целевое значение цели, целое положительное число больше 0, до 10 символов, INTEGERОбязательное, если для цели нет ключевых значений
null
, если для цели есть ключевые значенияДругие значения
value
для цели будут игнорироваться, для цели устанавливается значение 100
valueUnit
– единица измерения значений цели, возможные значения –percents
,numbers
,roubles
,dollars
,euros
,hours
, STRINGОбязательное, если для цели нет ключевых значений.
null
, если для цели есть ключевые значенияДругие значения
valueUnit
для цели будут игнорируется, для цели устанавливается значениеpercents
priority
– приоритет цели, возможные значения -high
,medium
,low
, STRING. Обязательный параметрdeadlineAt
– дедлайн цели в формате ISO 8601 с указанием таймзоны, должен быть больше текущего дня, DATETIME. Обязательный параметр. Время учитывается только для выставление корректной даты в соответствии с таймзонами, все уведомления о дедлайнах будут отправляться пользователю относительно 00:00 указанной даты.keyResults
– массив объектов для указания ключевых результатов цели. Обязательный:null
, если для цели не должны быть заданы ключевые параметрыЕсли передаётся массив, то для каждого элемента массива должны быть указаны следующие параметры (требования к ним см. выше):
title
value
valueUnit
В случае успешного запроса (200) в ответ придёт JSON со следующими полями:
result
– должно вернуться значение trueuserId
– идентификатор пользователя, для которого производились измененияdata
– массив данных по каждому элементу, который был передан в запросе:success
:true
, если цель была успешно созданаfalse
, если цель не удалось создать
goal
–null
, если цель не была создана, иначе массив всех созданных целей пользователя:id
– уникальный идентификатор цели, по которому можно обратиться к ней для изменения, STRINGtitle
– название цели, STRINGvalue
– целевое значение цели, INTprogress
– текущее значение цели, INTpriority
– приоритет, установленный для цели, возможные значения -high
,medium
,low
, STRINGdeadlineAt
– дедлайн цели с указанием даты наступления дела в формате ISO 8601 с указанием таймзоны, DATETIMEvalueUnit
– единица измерения значений цели, возможные значения –percents
,numbers
,roubles
,dollars
,euros
,hours
, STRINGinRisk
– находится ли цель в зоне риска, возможные значение –true
илиfalse
, boolean. Для ключевых результатов – наследуется из родительской целиapprovedAt
:Дата и время подтверждения цели в формате ISO 8601 с указанием таймзоны, если руководитель или HR-сотрудник подтвердил цель, DATETIME
null
– если цель не была подтверждена руководителем или HR-сотрудникомДля ключевых результатов – наследуется из родительской цели
approvedById
:Идентификатор сотрудника, который подтвердил цель, если она подтверждена, STRING
null
– если цель не была подтверждена руководителем или HR-сотрудникомДля ключевых результатов – наследуется из родительской цели
completedAt
:Дата и время завершения цели в формате ISO 8601 с указанием таймзоны, если цель завершена, DATETIME
null
– если цель не завершенаДля ключевых результатов – наследуется из родительской цели
completedById
:Идентификатор сотрудника, который завершил цель, если она завершена, STRING
null
– если цель не была завершенаДля ключевых результатов – наследуется из родительской цели
keyResults
:Массив всех ключевых результатов, если они заданы. Структура каждого элемента массива результатов повторяет структуру элемента массива цели
null
– если для цели не заданы ключевые результаты или цель сама является ключевым результатом
errors
–null
, если цель была создана успешно, массив ошибок, если цель создать не удалось. Возможные ошибки:Обязательный параметр не заполнен или заполнен некорректно (если таких параметров несколько, по каждому должна вернуться своя ошибка. Для ошибки параметра внутри ключевого результата должен возвращаться путь до параметра внутри структуры в JSON в формате
keyResults.0.title)
"message": "Required parameters are not filled in",
"cause" : "идентификатор_параметра"
Например:Если в поле
deadlineAt
некорректные данные (не тот формат, дата в прошлом)"message": "Invalid date. You can only specify the current and future date"
"cause": "deadlineAt"
Если в поле
priority
некорректные данные"message": "Invalid value. Allowed values: high, medium, low"
"cause": "priority"
Если в поле
value
= 0"message": "Invalid value. Value should be greater than 0"
"cause": "keyResults[0].value"
Если в поле
value
илиkeyResults[0].value
больше 10 символов"message": "Value is too long. Allowed length 10 characters"
"cause": "value"
Пользователь (userId или authorId) деактивирован, не существует или удалён:
"message": "User not found",
"cause" : "userId или authorId"
Лимит целей для пользователя достигнут, новые цели создать нельзя:
"message": "Goal limit reached",
"cause" : "значение_limit"
В качестве автора указан пользователь, который не может создавать цели данному сотруднику:
"message": "Author has no rights to create goals",
"cause" : "authorId"
Изменение созданной цели пользователя
Изменения доступны только для незавершённой и неудалённой цели и контрольного значения
Чтобы изменить созданную цель пользователя, нужно сделать PUT запрос на адрес:
pUt
/public/api/v1/goals/{goalId}
в адресе метода должен быть указан параметрgoalId
– уникальный идентификатор цели, должен совпадать c выбранным уникальным идентификатором на платформе, STRING. Обязательный параметр
В body запроса нужно отправить обязательный JSON, каждый элемент которого должен содержать следующие параметры:
authorId
– уникальный идентификатор пользователя, от имени которого должна быть изменена цель, STRING. Обязательный параметр. Возможные значения:Совпадает с
id
пользователя, цель которого редактируется. Изменения будут применены только для неподтверждённых целейСовпадает с
id
руководителя пользователя или пользователя с разрешением План развития \ Управление целями и планами
title
– название цели, STRING, до 3000 символов:Новое значение, если
title
необходимо изменитьnull
, если title менять не нужно
value
– целевое значение цели, целое положительное число больше 0, до 10 символов, INTEGERНовое значение, если
value
необходимо изменитьnull
, еслиvalue
менять не нужно или для цели есть ключевые значенияЕсли для цели есть ключевые значения, указанные значения игнорируются
progress
– текущее значение цели, которое необходимо установить. Целое положительное число больше 0, INTEGERНовое значение, если
progress
необходимо изменитьnull
, еслиprogress
менять не нужно или для цели есть ключевые значенияЕсли для цели есть ключевые значения, указанные значения игнорируются
valueUnit
– единица измерения значений цели, возможные значения –percents
,numbers
,roubles
,dollars
,euros
,hours
, STRINGНовое значение, если
valueUnit
необходимо изменитьnull
, еслиvalueUnit
менять не нужно или для цели есть ключевые значенияЕсли для цели есть ключевые значения, указанные значения игнорируются
priority
– приоритет цели, возможные значения –high
,medium
,low
, STRINGНовое значение, если
priority
необходимо изменитьnull
, еслиpriority
менять не нужно или для цели, которая является ключевым значениемЕсли для цель является ключевым значением, указанные значения игнорируются
deadlineAt
– дедлайн цели в формате ISO 8601 с указанием таймзоны, должен быть больше текущего дня, DATETIMEНовое значение, если
deadlineAt
необходимо изменитьnull
, еслиdeadlineAt
менять не нужно или для цели является ключевым значениемЕсли для цель является ключевым значением, указанные значения игнорируются
keyResults
– массив объектов для указания ключевых результатов цели. Необходим если нужно добавить в цель новые ключевые результаты. Если необходимо отредактировать созданные ключевые результаты, необходимо обращаться к ним поgoalId
. Игнорируется для ключевых результатов целиnull
, если в цель не надо добавлять ключевые значенияЕсли заполнен, то для каждого элемента массива должны быть указаны следующие параметры (требования к ним см. выше):
title
value
valueUnit
В случае успешного запроса (200) в ответ придёт JSON со следующими полями:
result
– должно вернуться значение truegoal
:id
– уникальный идентификатор цели, STRINGtitle
– название цели, STRINGvalue
– целевое значение цели, INTprogress
– текущее значение цели, INTpriority
– приоритет, установленный для цели, возможные значения -high
,medium
,low
, STRINGdeadlineAt
– дедлайн цели с указанием даты наступления дела в формате ISO 8601 с указанием таймзоны, DATETIMEvalueUnit
– единица измерения значений цели, возможные значения –percents
,numbers
,roubles
,dollars
,euros
,hours
, STRINGinRisk
– находится ли цель в зоне риска, возможные значение –true
илиfalse
, boolean. Для ключевых результатов – наследуется из родительской целиapprovedAt
:Дата и время подтверждения цели в формате ISO 8601 с указанием таймзоны, если руководитель или HR-сотрудник подтвердил цель, DATETIME
null
– если цель не была подтверждена руководителем или HR-сотрудникомДля ключевых результатов – наследуется из родительской цели
approvedById
:Идентификатор сотрудника, который подтвердил цель, если она подтверждена, STRING
null
– если цель не была подтверждена руководителем или HR-сотрудникомДля ключевых результатов – наследуется из родительской цели
completedAt
:Дата и время завершения цели в формате ISO 8601 с указанием таймзоны, если цель завершена, DATETIME
null
– если цель не завершенаДля ключевых результатов – наследуется из родительской цели
completedById
:Идентификатор сотрудника, который завершил цель, если она завершена, STRING
null
– если цель не была завершенаДля ключевых результатов – наследуется из родительской цели
keyResults
:Массив всех ключевых результатов, если они заданы. Структура каждого элемента массива результатов повторяет структуру элемента массива цели
null
– если для цели не заданы ключевые результаты или цель сама является ключевым результатом
Подтверждение цели пользователя
Можно подтвердить только неподтвержденную, незавершённую и неудалённую цель неудалённого пользователя
Чтобы подтвердить цель, нужно сделать POST запрос на адрес:
post
/public/api/v1/goals/{goalId}/approve
в адресе метода должен быть указан параметрgoalId
– уникальный идентификатор цели, должен совпадать c выбранным уникальным идентификатором на платформе, STRING. Обязательный параметр
В body запроса нужно отправить обязательный JSON, который содержит следующий параметр:
authorId
– уникальный идентификатор пользователя, от имени которого должна быть подтверждена цель, STRING. Обязательный параметр. Должен совпадать сid
руководителя пользователя или пользователя с разрешением План развития \ Управление целями и планами.
В случае успешного запроса (200) в ответ придёт JSON со следующими полями:
result
– должно вернуться значение truegoal
:id
– уникальный идентификатор цели, STRINGtitle
– название цели, STRINGvalue
– целевое значение цели, INTprogress
– текущее значение цели, INTpriority
– приоритет, установленный для цели, возможные значения -high
,medium
,low
, STRINGdeadlineAt
– дедлайн цели с указанием даты наступления дела в формате ISO 8601 с указанием таймзоны, DATETIMEvalueUnit
– единица измерения значений цели, возможные значения –percents
,numbers
,roubles
,dollars
,euros
,hours
, STRINGinRisk
– находится ли цель в зоне риска, возможные значение –true
илиfalse
, boolean. Для ключевых результатов – наследуется из родительской целиapprovedAt
:Дата и время подтверждения цели в формате ISO 8601 с указанием таймзоны, если руководитель или HR-сотрудник подтвердил цель, DATETIME
null
– если цель не была подтверждена руководителем или HR-сотрудникомДля ключевых результатов – наследуется из родительской цели
approvedById
:Идентификатор сотрудника, который подтвердил цель, если она подтверждена, STRING
null
– если цель не была подтверждена руководителем или HR-сотрудникомДля ключевых результатов – наследуется из родительской цели
completedAt
:Дата и время завершения цели в формате ISO 8601 с указанием таймзоны, если цель завершена, DATETIME
null
– если цель не завершенаДля ключевых результатов – наследуется из родительской цели
completedById
:Идентификатор сотрудника, который завершил цель, если она завершена, STRING
null
– если цель не была завершенаДля ключевых результатов – наследуется из родительской цели
keyResults
:Массив всех ключевых результатов, если они заданы. Структура каждого элемента массива результатов повторяет структуру элемента массива цели
null
– если для цели не заданы ключевые результаты или цель сама является ключевым результатом
Завершение цели пользователя
Можно завершить только незавершённую и неудалённую цель неудалённого пользователя
Чтобы завершить цель, нужно сделать POST запрос на адрес:
post
/public/api/v1/goals/{goalId}/complete
в адресе метода должен быть указан параметрgoalId
– уникальный идентификатор цели, должен совпадать c выбранным уникальным идентификатором на платформе, STRING. Обязательный параметр
В body запроса нужно отправить обязательный JSON, который содержит следующий параметр:
authorId
– уникальный идентификатор пользователя, от имени которого должна быть завершена цель, STRING. Обязательный параметр. Должен совпадать сid
руководителя пользователя или пользователя с разрешением План развития \ Управление целями и планами.
В случае успешного запроса (200) в ответ придёт JSON со следующими полями:
result
– должно вернуться значение truegoal
:id
– уникальный идентификатор цели, STRINGtitle
– название цели, STRINGvalue
– целевое значение цели, INTprogress
– текущее значение цели, INTpriority
– приоритет, установленный для цели, возможные значения -high
,medium
,low
, STRINGdeadlineAt
– дедлайн цели с указанием даты наступления дела в формате ISO 8601 с указанием таймзоны, DATETIMEvalueUnit
– единица измерения значений цели, возможные значения –percents
,numbers
,roubles
,dollars
,euros
,hours
, STRINGinRisk
– находится ли цель в зоне риска, возможные значение –true
илиfalse
, boolean. Для ключевых результатов – наследуется из родительской целиapprovedAt
:Дата и время подтверждения цели в формате ISO 8601 с указанием таймзоны, если руководитель или HR-сотрудник подтвердил цель, DATETIME
null
– если цель не была подтверждена руководителем или HR-сотрудникомДля ключевых результатов – наследуется из родительской цели
approvedById
:Идентификатор сотрудника, который подтвердил цель, если она подтверждена, STRING
null
– если цель не была подтверждена руководителем или HR-сотрудникомДля ключевых результатов – наследуется из родительской цели
completedAt
:Дата и время завершения цели в формате ISO 8601 с указанием таймзоны, если цель завершена, DATETIME
null
– если цель не завершенаДля ключевых результатов – наследуется из родительской цели
completedById
:Идентификатор сотрудника, который завершил цель, если она завершена, STRING
null
– если цель не была завершенаДля ключевых результатов – наследуется из родительской цели
keyResults
:Массив всех ключевых результатов, если они заданы. Структура каждого элемента массива результатов повторяет структуру элемента массива цели
null
– если для цели не заданы ключевые результаты или цель сама является ключевым результатом
Удаление созданной цели пользователя
Действие не может быть отменено. Если ключевой результат или цель были удалены некорректно, необходимо будет создавать новый ключевой результат или цель, восстановить удалённые результаты и цели нельзя
Изменения доступны только для незавершённой и неудалённой цели, но руководитель и пользователь с разрешением План развития \ Управление целями и планами могут удалить завершенную цель
Чтобы удалить цель, нужно сделать POST запрос на адрес:
post
/public/api/v1/goals/{goalId}/delete
в адресе метода должен быть указан параметрgoalId
– уникальный идентификатор цели, должен совпадать c выбранным уникальным идентификатором на платформе, STRING. Обязательный параметр
В body запроса нужно отправить обязательный JSON, который содержит следующий параметр:
authorId
– уникальный идентификатор пользователя, от имени которого должна быть удалена цель, STRING. Обязательный параметр. Должен совпадать сid
руководителя пользователя или пользователя с разрешением План развития \ Управление целями и планами.
В случае успешного запроса (200) в ответ придёт JSON со следующими полями:
result
– должно вернуться значение truemessage
– сообщение об успешном удалении цели
Баллы
Изменение баланса баллов пользователя
Баллы пользователя могут быть изменены, если:
Пользователь существует и не удалён, статус активности при этом не важен
Модуль Каталог призов подключен (для баланса с типом
payment
) – есть лицензия и она не истеклаСоблюдаются ограничения по типу и длине полей
При уменьшении баланса – баланс не уходит в минус
Чтобы изменить баланс баллов пользователя, нужно сделать POST запрос на адрес:
POST
/public/api/v1/points/
в заголовках запроса можно передать параметрLocale
, который будет использоваться для выбора языка при подстановке формулировки начисления баллов по умолчанию, если в теле запроса не был передан параметрmessage
В body запроса нужно отправить обязательный JSON массив, который содержит следующие параметры:
userId
– уникальный идентификатор пользователя, должен совпадать c выбранным уникальным идентификатором на платформе, STRING. Обязательный параметр.balanceType
– тип баланса, который необходимо изменить. Допустимые значения:score
,karma
,payment
, STRING. Обязательный параметр.amount
– значение, на которое необходимо изменить баланс, целое число, отрицательное или положительное, INT. Обязательный параметр.message
– формулировка для отображения в личном кабинете, до 80 символов, STRING. Необязательный параметр. Если параметр не передаётся, используется формулировка по умолчанию на языке, переданном в заголовке или установленном для платформы как язык по умолчанию.
userId
может быть одинаковым в нескольких элементах массива. В этом случае для пользователя должны быть последовательно произведены изменения баллов, указанные во всех элементах массива.
Пример:
[
{
"userId": "example@example.ru",
"balanceType": "karma",
"amount": "200",
"message": "За активности на субботнике"
},
{
"userId": "example2@example.ru",
"balanceType": "score",
"amount": "-200",
"message": "За выявленные нарушения при прохождении тестирований"
}
]
В случае успешного запроса (200) в ответ придёт JSON со следующими параметрами:
result
– со значениемtrue
data
– массив данных по каждому элементу, который был передан в запросе:userId
– идентификатор пользователя, для которого производились измененияbalanceType
– тип баланса, с которым производились измененияsuccess
:true
если баланс баллов был изменён успешноfalse
если баланс баллов изменить не удалось
balance
:Значение баланса после изменения, если он был изменён успешно, или его текущее значение, если баланс баллов изменить не удалось
null
, если пользователь не найден или был указан некорректныйbalanceType
errors
–null
, если баланс баллов был изменён успешно, массив ошибок, если баланс баллов изменить не удалось. Возможные ошибки:Пользователь деактивирован, не существует или удалён:
"message": "User not found",
"cause" : "userId"
Обязательный параметр не заполнен или заполнен некорректно (если таких параметров несколько, по каждому должна вернуться своя ошибка):
"message": "Required parameters are not filled in",
"cause" : "идентификатор_параметра"
Значение баланса не является целым числом
"message": "The "amount" field must contain an integer value",
"cause" : "amount"
При попытке вычесть из баланса больше баллов, чем есть у пользователя
"message": "Attempting to deduct more than the available points",
"cause" : "amount"
Тип баланса не совпадает с возможными значениями или в методе указан баланс каталога призов
payment
при неподключенном модуле Каталог призов"message": "Balance not found",
"cause" : "balanceType"
Длина формулировки превышает 80 символов
"message": "The length of the "message" field cannot exceed 80 characters",
"cause" : "message"
Если данные содержат несколько ошибок (например, дробные баллы пытаются начислить несуществующему пользователю в неподключенный баланс), должен отображаться текст, соответствующий первой найденной ошибке.
Файлы
Скачивание файла по его уникальному идентификатору
Для скачивания файла по его идентификатору, нужно сделать POST запрос на адрес:
post
/public/api/v1/file/{fileId}
в адресе метода должен быть указан следующий параметр:fileId
– внутренний идентификатор файла, используемого на платформе Мотивити (прикреплённые к заданию, комментарию, записи в пульсе, элементу в библиотеке и пр.), INT
В случае успешного запроса (200) в ответ придёт JSON со следующими параметрами:
result
– со значениемtrue
fileId
– идентификатор файла из запроса, INTfile
– данные файла, STRING
Загрузка файла и получение его уникального идентификатора
Для загрузки файла и получения его идентификатора, нужно сделать POST запрос на адрес:
post
/public/api/v1/file/upload
В header запроса требуется указать заголовки, гдеfile_name
– название файла,file_type
– формат файла, например,file=@new.jpg;type=image\jpg
:Content-Type: multipart/form-data file=@file_name;type=file_type
Ответ будет успешным, если заголовок указан корректно и был передан один файл допустимого формата (bmp, doc, docx, epub, flv, gif, heic, jfi, jfif, jpeg, jpg, jpg_large, m4a, mov, mp4, pdf, png, ppt, pptx, svg, webp, xls, xlsx), размер до 10 Гб
В случае успешного запроса (200) в ответ придёт JSON со следующими параметрами:
result
– со значениемtrue
file
– ключ структуры информации о файле со следующими элементами:id
– уникальный идентификатор файла, INTname
– полное название файла с расширением, STRINGsize
– размер файла в байтах, INT
Квесты
Получение информации о заданиях, назначенных на пользователей в рамках квеста
Чтобы получить информацию по заданиям, назначенных на пользователей в рамках необходимого квеста, нужно сделать GET запрос на адрес:
GET /public/api/v1/quest/{questId}/task
в адресе метода должен быть указан следующий параметр:
questId
– уникальный идентификатор неудалённого активного квеста, доступного в публичной части по датам видимости, INT. Обязательный параметр
дополнительно в query-параметрах могут быть указаны следующие фильтры:
studentId
– уникальный идентификатор пользователя, задания которого необходимо вернуть, STRING. Необязательный параметр, при отсутствии возвращаются задания для всех неудалённых активных студентов указанного квестаtaskId
– уникальный идентификатор задания, информацию по которому необходимо вернуть, INT. Необязательный параметр, при отсутствии возвращаются все заданияstatus
– статус задания, информацию по которому надо вернуть. Необязательный параметр, можно передавать массив статусов, при отсутствии должны быть возвращены все задания, назначенные в рамках квеста на неудалённых активных пользователей. Возможные значения:in_progress
– работа по заданию не проводилась или задание было переназначеноchecking
– задание отправлено на проверку наставникуredo
– задание было возвращено на доработкуcomplete
– задание было успешно завершеноfail
– задание было провалено
page
– номер страницы с результатами, которую необходимо вернуть. Необязательный параметр, при отсутствии возвращается первая страница, INTpageSize
– количество результатов на одной странице, целое значение от 1 до 100, INT. Необязательный параметр, при отсутствии возвращается 20 результатов на странице
В случае успешного запроса (200) в ответ придёт JSON со следующими параметрами:
result
– со значениемtrue
quest
– ключ структуры информации по квесту со следующими элементами:id
– уникальный идентификатор квеста, INTtitle
– заголовок квеста, STRINGtextForMentor
– текст для наставника, STRINGurlForMentor
– ссылка для наставника, может бытьnull
, STRINGtextForStudent
– текст для студента, может бытьnull
, STRINGpreviewImage
– ключ структуры информации о файле со следующими элементами:id
– уникальный идентификатор файла, INTname
– полное название файла с расширением, STRINGsize
– размер файла в байтах, INT
mentors
– массив уникальных идентификатор пользователей, ответственных за квест, может бытьnull
, каждый элемент STRINGopen
– дата начала доступности квеста, может бытьnull
, DATETIMEclose
– дата окончания доступности квеста, может бытьnull
, DATETIMEdeadlineType
– тип дедлайна, возможные значения: 'date
' (до определённой даты), 'delay
' (спустя установленное количество дней после назначения), 'none
' (не установлен)deadlineDelay
– количество дней, за которые надо пройти квест после назначения, для delay, иначеnull
, INTdeadlineDate
– дата, до которой надо пройти квест, для date, иначеnull
, DATETIMEthreshold
– порог, за прохождение которого студент получит баллы, может бытьnull
, INTscoreThreshold
– количество баллов, которые студент получает при прохождении квеста на пороговом значении, может бытьnull
, INTscore
– баллы за прохождение квеста на 100 процентов, может бытьnull
, INTcertificate
– уникальный идентификатор сертификата за прохождение квеста на указанное количество процентов, может бытьnull
, INTcertificateCompleted
– уникальный идентификатор сертификата за прохождение квеста на 100 процентов, может бытьnull
, INTmentorScore
– баллы для наставника за прохождение его студентом квеста на 100 процентов, может бытьnull
, INTscoreInTime
– баллы за прохождение квеста в дедлайн, может бытьnull
, INTcertificateDeadline
– уникальный идентификатор сертификата за прохождение квеста в дедлайн, может бытьnull
, INTquizId
– идентификатор прикреплённого опроса, может бытьnull
, INT
items
– массив всех заданий, которые назначены пользователям в рамках указанного квестаtask
– ключ структуры информации по заданию со следующими элементами:id
– уникальный идентификатор задания, INTtitle
– заголовок задания, STRINGsummary
– краткое описание задания, может бытьnull
, STRINGtext
– полное описание задания, STRINGmentorTip
– заметки для наставника, может бытьnull
, STRINGscore
– количество баллов за успешное прохождение задания, может бытьnull
, INTpreviewImage
– ключ структуры информации о файле со следующими элементами:id
– уникальный идентификатор файла, INTname
– полное название файла с расширением, STRINGsize
– размер файла в байтах, INT
quizId
– идентификатор прикреплённого опроса, может бытьnull
, INT
studentId
– пользователь, которому было назначено задание в рамках указанного квеста, STRINGtaskStatus
– статус, в котором в настоящий момент находится задание у указанного пользователя. Возможные значения:in_progress
– работа по заданию не проводилась или задание было переназначеноchecking
– задание отправлено на проверку наставникуredo
– задание было возвращено на доработкуcomplete
– задание было успешно завершеноfail
– задание было провалено
pagination
– стандартный элемент с данными следующей структуры:currentPage
– номер текущей страницы с данными, возвращённой в запросеrecordsPerPage
– количество записей на страницеtotalRecords
– общее количество записей по запросу с выбранными фильтрамиtotalPages
– общее количество страниц с записями по запросу с выбранными фильтрами
Массив items
может вернуться пустым, если:
В квесте нет заданий
Квест не назначен ни одному активному неудалённому пользователю
Нет элементов, соответствующих установленным фильтрам
Нет элементов на указанной странице пагинации
Результаты должны сортироваться по возрастанию сначала по идентификатору задания в квесте, затем по идентификатору студента.
Получение информации об ответе пользователя на задание
Чтобы получить информацию об ответе пользователя на конкретное задание в конкретном квесте, нужно сделать GET запрос на адрес:
GET
/public/api/v1/quest/{questId}/task/{taskId}/student/{studentId}
в адресе метода должны быть указаны следующие параметры:questId
– идентификатор неудалённого активного квеста, доступного в публичной части по датам видимости, в котором находится необходимое задание, INT,studentId
– уникальный идентификатор неудалённого активного пользователя, которому назначен квест, STRING,taskId
– идентификатор задания, для которого запрашивается информация, INT
Чтобы запрос был выполнен успешно, в указанный квест должно быть добавлено задание с указанными идентификатором, и указанный пользователь должен быть его студентом
В случае успешного запроса (200) в ответ придёт JSON со следующими параметрами:
result
– со значениемtrue
quest
– ключ структуры информации по квесту со следующими элементами:id
– уникальный идентификатор квеста, INTtitle
– заголовок квеста, STRINGtextForMentor
– текст для наставника, STRINGurlForMentor
– ссылка для наставника, может бытьnull
, STRINGtextForStudent
– текст для студента, может бытьnull
, STRINGpreviewImage
– ключ структуры информации о файле со следующими элементами:id
– уникальный идентификатор файла, INTname
– полное название файла с расширением, STRINGsize
– размер файла в байтах, INT
mentors
– массив уникальных идентификатор пользователей, ответственных за квест, может бытьnull
, каждый элемент STRINGopen
– дата начала доступности квеста, может бытьnull
, DATETIMEclose
– дата окончания доступности квеста, может бытьnull
, DATETIMEdeadlineType
– тип дедлайна, возможные значения: 'date
' (до определённой даты), 'delay
' (спустя установленное количество дней после назначения), 'none
' (не установлен)deadlineDelay
– количество дней, за которые надо пройти квест после назначения, для delay, иначеnull
, INTdeadlineDate
– дата, до которой надо пройти квест, для date, иначеnull
, DATETIMEthreshold
– порог, за прохождение которого студент получит баллы, может бытьnull
, INTscoreThreshold
– количество баллов, которые студент получает при прохождении квеста на пороговом значении, может бытьnull
, INTscore
– баллы за прохождение квеста на 100 процентов, может бытьnull
, INTcertificate
– уникальный идентификатор сертификата за прохождение квеста на указанное количество процентов, может бытьnull
, INTcertificateCompleted
– уникальный идентификатор сертификата за прохождение квеста на 100 процентов, может бытьnull
, INTmentorScore
– баллы для наставника за прохождение его студентом квеста на 100 процентов, может бытьnull
, INTscoreInTime
– баллы за прохождение квеста в дедлайн, может бытьnull
, INTcertificateDeadline
– уникальный идентификатор сертификата за прохождение квеста в дедлайн, может бытьnull
, INTquizId
– идентификатор прикреплённого опроса, может бытьnull
, INT
data
:messages
– массив ответов на задание (как со стороны студента, так и со стороны его наставника). Если на задание ещё не было дано ни одного ответа, вместо массива возвращаетсяnull
. Каждый элемент массива должен содержать следующие поля:authorId
– уникальный идентификатор пользователя, который оставил сообщение для задания, STRINGdate
– дата и время оставления сообщения, DATETIMEtext
– текст оставленного сообщения, STRINGstatus
– статус, в который было переведено задание после отправки сообщенияfiles
– массив данных по файлам, прикреплённых к сообщению, илиnull
, если файлы не были прикреплены. Для каждого элемента массива должна быть передана следующая информация:id
– идентификатор файла, который можно использовать для его скачивания в отдельном методе, INTname
– полное название файла с расширением, STRINGsize
– размер файла в байтах, INT
studentId
– идентификатор студента из запроса, STRINGtask
– ключ структуры информации по заданию со следующими элементами:id
– уникальный идентификатор задания, INTtitle
– заголовок задания, STRINGsummary
– краткое описание задания, может бытьnull
, STRINGtext
– полное описание задания, STRINGmentorTip
– заметки для наставника, может бытьnull
, STRINGscore
– количество баллов за успешное прохождение задания, может бытьnull
, INTpreviewImage
– ключ структуры информации о файле со следующими элементами:id
– уникальный идентификатор файла, INTname
– полное название файла с расширением, STRINGsize
– размер файла в байтах, INT
quizId
– идентификатор прикреплённого опроса, может бытьnull
, INT
taskStatus
– текущий статус выполнения задания, возможные значения -in_progress, checking, redo, complete, fail
Отправка ответа на задание пользователя
Отправить ответ на задание можно только при соблюдении следующих параметров:
Квест активен, не удалён, доступен по датам видимости
Студент активен, не удалён, ему назначен квест
В квесте существует задание с указанным идентификатором и для указанного студента оно находится в статусе checking
Автор ответа является наставником студента в указанном квесте или ответственным за квест, активен и не удалён
В других случаях ответ не отправляется, статус не меняется, возвращается сообщение об ошибке.
Чтобы загрузить ответ от наставника на задание, нужно сделать POST запрос на адрес:
post
/public/api/v1/quest/{questId}/task/{taskId}/student/{studentId}
в адресе метода должны быть указаны следующие параметры:questId
– идентификатор неудалённого активного квеста, доступного в публичной части по датам видимости, в котором находится необходимое задание, INT,studentId
– уникальный идентификатор неудалённого активного пользователя, которому назначен квест, STRING,taskId
– идентификатор задания, для которого запрашивается информация, INT
В body запроса нужно отправить обязательный JSON, который содержит следующие параметры:
mentorId
– уникальный идентификатор пользователя, от имени которого должен быть оставлен ответ на задание, обязательное, STRINGtext
– текст ответа, который необходимо оставить пользователю, до 6000 символов, необязательное, STRINGfiles
– массив идентификаторов файлов, которые необходимо прикрепить к ответу, необязательноеstatus
– статус, который необходимо установить для задания, обязательное, возможные варианты:redo
– задание необходимо доработатьcomplete
– задание пройдено успешноfail
– задание не пройдено
В случае успешного запроса (200) в ответ придёт JSON со следующими параметрами:
result
– со значениемtrue
quest
– ключ структуры информации по квесту со следующими элементами:id
– уникальный идентификатор квеста, INTtitle
– заголовок квеста, STRINGtextForMentor
– текст для наставника, STRINGurlForMentor
– ссылка для наставника, может бытьnull
, STRINGtextForStudent
– текст для студента, может бытьnull
, STRINGpreviewImage
– ключ структуры информации о файле со следующими элементами:id
– уникальный идентификатор файла, INTname
– полное название файла с расширением, STRINGsize
– размер файла в байтах, INT
mentors
– массив уникальных идентификатор пользователей, ответственных за квест, может бытьnull
, каждый элемент STRINGopen
– дата начала доступности квеста, может бытьnull
, DATETIMEclose
– дата окончания доступности квеста, может бытьnull
, DATETIMEdeadlineType
– тип дедлайна, возможные значения: 'date
' (до определённой даты), 'delay
' (спустя установленное количество дней после назначения), 'none
' (не установлен)deadlineDelay
– количество дней, за которые надо пройти квест после назначения, для delay, иначеnull
, INTdeadlineDate
– дата, до которой надо пройти квест, для date, иначеnull
, DATETIMEthreshold
– порог, за прохождение которого студент получит баллы, может бытьnull
, INTscoreThreshold
– количество баллов, которые студент получает при прохождении квеста на пороговом значении, может бытьnull
, INTscore
– баллы за прохождение квеста на 100 процентов, может бытьnull
, INTcertificate
– уникальный идентификатор сертификата за прохождение квеста на указанное количество процентов, может бытьnull
, INTcertificateCompleted
– уникальный идентификатор сертификата за прохождение квеста на 100 процентов, может бытьnull
, INTmentorScore
– баллы для наставника за прохождение его студентом квеста на 100 процентов, может бытьnull
, INTscoreInTime
– баллы за прохождение квеста в дедлайн, может бытьnull
, INTcertificateDeadline
– уникальный идентификатор сертификата за прохождение квеста в дедлайн, может бытьnull
, INTquizId
– идентификатор прикреплённого опроса, может бытьnull
, INT
data
:messages
– массив ответов на задание (как со стороны студента, так и со стороны его наставника). Если на задание ещё не было дано ни одного ответа, вместо массива возвращаетсяnull
. Каждый элемент массива должен содержать следующие поля:authorId
– уникальный идентификатор пользователя, который оставил сообщение для задания, STRINGdate
– дата и время оставления сообщения, DATETIMEtext
– текст оставленного сообщения, STRINGstatus
– статус, в который было переведено задание после отправки сообщенияfiles
– массив данных по файлам, прикреплённых к сообщению, илиnull
, если файлы не были прикреплены. Для каждого элемента массива должна быть передана следующая информация:id
– идентификатор файла, который можно использовать для его скачивания в отдельном методе, INTname
– полное название файла с расширением, STRINGsize
– размер файла в байтах, INT
studentId
– идентификатор студента из запроса, STRINGtask
– ключ структуры информации по заданию со следующими элементами:id
– уникальный идентификатор задания, INTtitle
– заголовок задания, STRINGsummary
– краткое описание задания, может бытьnull
, STRINGtext
– полное описание задания, STRINGmentorTip
– заметки для наставника, может бытьnull
, STRINGscore
– количество баллов за успешное прохождение задания, может бытьnull
, INTpreviewImage
– ключ структуры информации о файле со следующими элементами:id
– уникальный идентификатор файла, INTname
– полное название файла с расширением, STRINGsize
– размер файла в байтах, INT
quizId
– идентификатор прикреплённого опроса, может бытьnull
, INT
taskStatus
– текущий статус выполнения задания, возможные значения -in_progress, checking, redo, complete, fail