Публичное API

Какова схема авторизации

Для публичных методов API реализована авторизация через публичный ключ API – при отправке запросов по урлам вида api/public/* идёт проверка на наличие заголовка (Header) X-Auth-Token. Если заголовок присутствует, и соответствует указанному в конфиге, то авторизация проходит успешно

Публичный ключ API хранится в .env под названием PUBLIC_API_TOKEN

В панели администрирования публичный ключ API отображается в разделе НастройкиЛицензия.

При отсутствии публичного ключа API, либо если он указан неверно, в запросах возвращается ошибка 401 Authorization Required

Заголовки запросов

Header

Описание

Механика

Header

Описание

Механика

X-Auth-Token

Заголовок авторизации

Обязательный заголовок

При каждом обращении, не важно, POST или GET, в заголовках запроса нужно указывать параметр X-Auth-Token с предоставленным публичным ключом API в качестве значения

Locale

Язык запроса, на котором должен быть возвращён контент

  • Необязательный заголовок

  • Язык запроса передается с помощью заголовка Locale: <language> (одно значение)

  • Допустимые значения – en, ru, uz, ky. При добавлении на платформу новых языков появляется возможность указывать и их в заголовке.

  • Ответ возвращается на запрашиваемом языке, если:

    • В заголовке передано допустимое значение
      И

    • Для запрашиваемого элемента есть контент на запрашиваемом языке

  • Ответ возвращается на языке, установленном на платформе по умолчанию, если:

    • Заголовок запрашиваемого языка отсутствует
      ИЛИ

    • Значение заголовка не соответствует допустимым (опечатка, множественное значение, несуществующее значение)
      ИЛИ

    • Отсутствует контент на запрашиваемом языке

При этом если в теле запроса нет ошибок и если в описании метода не указано иное, запрос должен быть успешно выполнен и вернуть статус 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, в котором будут поля, ключами которых будут Системные имена фильтров, полученных на этапе Получения метаданных, а значениями непосредственно значения фильтров (цифра, строка, массив и тд). Если данные по фильтру Статус пользователя не были переданы или был передан пустой массив, отчёт формируется только по активным сотрудникам

В ответ придёт 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, в котором будут поля, ключами которых будут Системные имена фильтров, полученных на этапе Получения метаданных, а значениями непосредственно значения фильтров (цифра, строка, массив и тд). Если данные по фильтру Статус пользователя не были переданы или был передан пустой массив, отчёт формируется только по активным сотрудникам

В ответ придёт JSON объект с полем id, он же Идентификатор сгенерированного отчета.

Чтобы получить JSON данные отчёта, сгенерированного в предыдущем шаге, нужно отправить GET запрос на адрес:

  • GET /public/api/v1/reports/data/{id}
    заменив в адресе id на нужный Идентификатор, полученный в предыдущем шаге

Администратору платформы для обработки json необходимо включить на своей стороне поддержку потокового скачивания в принимаемом ПО

Описание режима потоковой передачи данных приведено на сайте https://learn.microsoft.com/en-us/azure/logic-apps/logic-apps-handle-large-messages#download-content-in-chunks

Важно:

  1. В потоковом режиме данные передаются дольше

  2. После запроса отчёта в потоковом режиме 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 – идентификатор бейджа, INT

  • title – название бейджа (на запрашиваемом или языке, установленном по умолчанию), varchar

  • image – ссылка на загруженное изображение для бейджа, string

  • description – описание бейджа или NULL в случае его отсутствия, string

  • popupDescription – сообщение при получении бейджа, string

  • color – значение цвета для бейджа или NULL, если цвет не установлен, varchar

  • active – статус активности бейджа, 0 или 1, boolean

  • system 1 если бейдж системный, 0 если бейдж пользовательский, boolean

  • children – массив с уровнями бейджей, если бейдж содержит уровни, или пустой массив:

    • Для каждого дочернего бейджа отображаются все значения выше (кроме children) и дополнительное значение grade

    • grade – грейд бейджа, INT

[ { “id“: 93, “title“: “Спортивные достижения“, “image“: “https://support.motivationportal.ru/api/file/download/1386/28px-01.svg“, “description“: NULL, “popupDescription“: “Поздравляем!“, “color”: NULL, “active“: “1“, “system“: “0“, “children“: [ { “id“: 98, “title“: “Спортивные достижения 1 уровень“, “image“: “https://support.motivationportal.ru/api/file/download/1386/30px-01.svg“, “description“: “Поздравляем с первым уровнем!“, “popupDescription“: “Поздравляем с первым уровнем!“, “color”: NULL, “active“: “0“, “system“: “0“, “grade“: “1“ }, { “id“: 100, “title“: “Спортивные достижения 2 уровень“, “image“: “https://support.motivationportal.ru/api/file/download/1386/50px-01.svg“, “description“: “Поздравляем со вторым уровнем!“, “popupDescription“: “Поздравляем со вторым уровнем!“, “color”: NULL, “active“: “0“, “system“: “0“, “grade“: “2“ } ] } ]

Возвращается в случае отсутствия или некорректного публичного ключа API при запросе

{ "result": false, "message": "Invalid public API token" }

Начисление бейджа пользователю

Чтобы начислить бейдж пользователю, нужно сделать 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, при успешном начислении бейджа

Возвращается, если бейдж существует и может быть назначен пользователям

В случае неудачного запроса (400), т.е. при попытке назначить пользователям бейдж, который нельзя назначить, или при отсутствии обязательного параметра (идентификаторов пользователей), возвращается ответ, в котором перечисляются все ошибки в виде объектов в массиве errors с сообщением об ошибке и указанием на элемент, в котором возникла ошибка.

В зависимости от конкретной ошибки, message может отличаться.

Возможные ошибки:

  • Обязательный параметр не заполнен или заполнен некорректно

    • "message": "Required parameters are not filled in",

    • "cause" : "userId"

  • Бейдж не существует или удалён

    • "message": "Badge not found",

    • "cause" : "badgeId"

  • Бейдж неактивен

    • "message": "An inactive badge cannot be assigned",

    • "cause" : "badgeId"

  • Бейдж является системным

    • "message": "A system badge cannot be assigned",

    • "cause" : "badgeId"

  • Бейдж является родительским для многоуровневого бейджа

    • "message": "Select the badge grade for the assignment",

    • "cause" : "badgeId"

Возвращается в случае отсутствия или некорректного публичного ключа API при запросе

Снятие бейджа с пользователя

Чтобы снять бейдж пользователю, нужно сделать 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 – должно вернуться значение true

  • items – массив всех целей пользователя указанного типа. Может вернуться пустой массив, если у пользователя нет неудалённых целей

    • id – уникальный идентификатор цели, по которому можно обратиться к ней для изменения, STRING

    • title – название цели, STRING

    • value – целевое значение цели, INT

    • progress – текущее значение цели, INT

    • priority – приоритет, установленный для цели, возможные значения - high, medium, low, STRING

    • deadlineAt – дедлайн цели с указанием даты наступления дела в формате ISO 8601 с указанием таймзоны, DATETIME

    • valueUnit – единица измерения значений цели, возможные значения – percents, numbers, roubles, dollars, euros, hours, STRING

    • inRisk – находится ли цель в зоне риска, возможные значение – 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 – должно вернуться значение true

  • userId – идентификатор пользователя, для которого производились изменения

  • data – массив данных по каждому элементу, который был передан в запросе:

    • success:

      • true, если цель была успешно создана

      • false, если цель не удалось создать

    • goalnull, если цель не была создана, иначе массив всех созданных целей пользователя:

      • id – уникальный идентификатор цели, по которому можно обратиться к ней для изменения, STRING

      • title – название цели, STRING

      • value – целевое значение цели, INT

      • progress – текущее значение цели, INT

      • priority – приоритет, установленный для цели, возможные значения - high, medium, low, STRING

      • deadlineAt – дедлайн цели с указанием даты наступления дела в формате ISO 8601 с указанием таймзоны, DATETIME

      • valueUnit – единица измерения значений цели, возможные значения – percents, numbers, roubles, dollars, euros, hours, STRING

      • inRisk – находится ли цель в зоне риска, возможные значение – true или false, boolean. Для ключевых результатов – наследуется из родительской цели

      • approvedAt:

        • Дата и время подтверждения цели в формате ISO 8601 с указанием таймзоны, если руководитель или HR-сотрудник подтвердил цель, DATETIME

        • null – если цель не была подтверждена руководителем или HR-сотрудником

        • Для ключевых результатов – наследуется из родительской цели

      • approvedById:

        • Идентификатор сотрудника, который подтвердил цель, если она подтверждена, STRING

        • null – если цель не была подтверждена руководителем или HR-сотрудником

        • Для ключевых результатов – наследуется из родительской цели

      • completedAt:

        • Дата и время завершения цели в формате ISO 8601 с указанием таймзоны, если цель завершена, DATETIME

        • null – если цель не завершена

        • Для ключевых результатов – наследуется из родительской цели

      • completedById:

        • Идентификатор сотрудника, который завершил цель, если она завершена, STRING

        • null – если цель не была завершена

        • Для ключевых результатов – наследуется из родительской цели

      • keyResults:

        • Массив всех ключевых результатов, если они заданы. Структура каждого элемента массива результатов повторяет структуру элемента массива цели

        • null – если для цели не заданы ключевые результаты или цель сама является ключевым результатом

    • errorsnull, если цель была создана успешно, массив ошибок, если цель создать не удалось. Возможные ошибки:

      • Обязательный параметр не заполнен или заполнен некорректно (если таких параметров несколько, по каждому должна вернуться своя ошибка. Для ошибки параметра внутри ключевого результата должен возвращаться путь до параметра внутри структуры в 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 – должно вернуться значение true

  • goal :

    • id – уникальный идентификатор цели, STRING

    • title – название цели, STRING

    • value – целевое значение цели, INT

    • progress – текущее значение цели, INT

    • priority – приоритет, установленный для цели, возможные значения - high, medium, low, STRING

    • deadlineAt – дедлайн цели с указанием даты наступления дела в формате ISO 8601 с указанием таймзоны, DATETIME

    • valueUnit – единица измерения значений цели, возможные значения – percents, numbers, roubles, dollars, euros, hours, STRING

    • inRisk – находится ли цель в зоне риска, возможные значение – 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 – должно вернуться значение true

  • goal :

    • id – уникальный идентификатор цели, STRING

    • title – название цели, STRING

    • value – целевое значение цели, INT

    • progress – текущее значение цели, INT

    • priority – приоритет, установленный для цели, возможные значения - high, medium, low, STRING

    • deadlineAt – дедлайн цели с указанием даты наступления дела в формате ISO 8601 с указанием таймзоны, DATETIME

    • valueUnit – единица измерения значений цели, возможные значения – percents, numbers, roubles, dollars, euros, hours, STRING

    • inRisk – находится ли цель в зоне риска, возможные значение – 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 – должно вернуться значение true

  • goal :

    • id – уникальный идентификатор цели, STRING

    • title – название цели, STRING

    • value – целевое значение цели, INT

    • progress – текущее значение цели, INT

    • priority – приоритет, установленный для цели, возможные значения - high, medium, low, STRING

    • deadlineAt – дедлайн цели с указанием даты наступления дела в формате ISO 8601 с указанием таймзоны, DATETIME

    • valueUnit – единица измерения значений цели, возможные значения – percents, numbers, roubles, dollars, euros, hours, STRING

    • inRisk – находится ли цель в зоне риска, возможные значение – true или false, boolean. Для ключевых результатов – наследуется из родительской цели

    • approvedAt:

      • Дата и время подтверждения цели в формате ISO 8601 с указанием таймзоны, если руководитель или HR-сотрудник подтвердил цель, DATETIME

      • null – если цель не была подтверждена руководителем или HR-сотрудником

      • Для ключевых результатов – наследуется из родительской цели

    • approvedById:

      • Идентификатор сотрудника, который подтвердил цель, если она подтверждена, STRING

      • null – если цель не была подтверждена руководителем или HR-сотрудником

      • Для ключевых результатов – наследуется из родительской цели

    • completedAt:

      • Дата и время завершения цели в формате ISO 8601 с указанием таймзоны, если цель завершена, DATETIME

      • null – если цель не завершена

      • Для ключевых результатов – наследуется из родительской цели

    • completedById:

      • Идентификатор сотрудника, который завершил цель, если она завершена, STRING