Публичное 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
В ответ придёт 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 выбранным уникальным идентификатором на платформе)
Пример:
В случае успешного запроса (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
– сообщение об успешном удалении цели
Баллы
Изменение баланса баллов пользователя
Чтобы изменить баланс баллов пользователя, нужно сделать POST запрос на адрес:
POST
/public/api/v1/points/
в заголовках запроса можно передать параметрLocale
, который будет использоваться для выбора языка при подстановке формулировки начисления баллов по умолчанию, если в теле запроса не был передан параметрmessage
В body запроса нужно отправить обязательный JSON массив, который содержит следующие параметры:
userId
– уникальный идентификатор пользователя, должен совпадать c выбранным уникальным идентификатором на платформе, STRING. Обязательный параметр.balanceType
– тип баланса, который необходимо изменить. Допустимые значения:score
,karma
,payment
, STRING. Обязательный параметр.amount
– значение, на которое необходимо изменить баланс, целое число, отрицательное или положительное, INT. Обязательный параметр.message
– формулировка для отображения в личном кабинете, до 80 символов, STRING. Необязательный параметр. Если параметр не передаётся, используется формулировка по умолчанию на языке, переданном в заголовке или установленном для платформы как язык по умолчанию.
Пример:
В случае успешного запроса (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
:
В случае успешного запроса (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
– общее количество страниц с записями по запросу с выбранными фильтрами
Получение информации об ответе пользователя на задание
Чтобы получить информацию об ответе пользователя на конкретное задание в конкретном квесте, нужно сделать 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
Отправка ответа на задание пользователя
Чтобы загрузить ответ от наставника на задание, нужно сделать 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