assessment360.task.makeAssessment

Scope: assessment360

Кто может вызывать: Владелец карточки респондента; либо администратор портала / группа HR-отдела из настроек модуля (тогда проверка владельца пропускается). См. Права доступа

Сохраняет заполненную респондентом анкету оценки (баллы, индикаторы, комментарии, ответы на вопросы).

Для обычного пользователя доступна только своя карточка респондента (ASSESSMENT_EMPLOYEES = текущий REST-пользователь). Администратор портала и группа HR из настроек модуля могут сохранять анкету по чужой карточке: REST сам снимает проверку владельца (отдельного параметра в запросе для этого нет).

HTTP: POST

Побочные эффекты: Изменяет HL-баллы/ответы и карточку респондента.

Параметры метода

Параметр Тип Обяз. Описание
data object да* Данные анкеты (см. ниже). Если data не передан — используется всё тело запроса как объект анкеты

*Либо обёртка data, либо плоское тело с теми же полями.

Структура data (анкета)

Поле Тип Обяз. Описание
id int да ID карточки респондента (оценивающего), не оценки
assessmentCardId int да ID карточки оценки (оцениваемого)
assessmentUserId int да ID оцениваемого пользователя (для проверки userIds)
competencies object да Карта оцениваемых компетенций: { "<compId>": <compId>, ... }
indicators object усл. Значения индикаторов по компетенциям (см. ниже)
rating object усл. Оценка по шкале, если у компетенции нет индикаторов: { "<compId>": <scaleValueId> }
comments object да* Комментарии по компетенциям: { "<compId>": "текст" }
comment string нет Общий комментарий → PREVIEW_TEXT карточки респондента
userIds int[] нет Коллеги, которых сотрудник добавляет в оценку (лимит colUsersChoice)
questions object[] нет Ответы на открытые вопросы (см. ниже)
indicatorsIdsValues object нет Для режима баллов: { "<compId>": { "<indicatorId>": <points> } }

*Комментарии обязательны при включённой настройке «комментарий к незаполненным».

Ключи карт компетенций — строковые ID ("1049").

Формы indicators[<compId>]

Зависит от настроек компетенции:

Режим Форма значения
Без индикаторов используйте rating[<compId>] = ID значения шкалы
Шкала по индикаторам (INDICATORS_SCALE_SCORE) { "<indicatorId>": <grade>, ... }
Баллы (INDICATORS_ENABLE_POINTS) { "<indicatorId>": <points>, ... }
Мультивыбор индикаторов { "<indicatorId>": <indicatorId>, ... }

Структура questions[]

Поле Тип Обяз. Описание
questionIdFirst int да ID вопроса (UF_QUESTIONS)
answerValue string усл. Текст ответа (обязателен, если isAnswerRequired)
isAnswerRequired bool нет Требовать непустой ответ
id int нет ID существующей HL-записи ответа
name string нет Отображаемое имя

Возвращаемые данные

При успехе:

{ "success": true, "data": [] }
        

data — массив/объект из Bitrix\Main\Result::getData() доменного Tasks::makeAssessment. Если домен ничего не кладёт в Result — будет пустой массив [].

Ответ в конверте модуля: result.result, result.error.

Обработка ошибок

Справочник кодов: error-codes.md.

Код Описание
UNAUTHORIZED Пользователь не авторизован
INTERNAL_ERROR Внутренняя ошибка сервера
VALIDATION_ERROR Не заполнен процент компетенций / обязательные комментарии / ответы

Пример запроса (POST)

curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/assessment360.task.makeAssessment.json"
          -H "Content-Type: application/json"
          -H "Accept: application/json"
          --data '{
          "data": {
            "id": 1177,
            "assessmentCardId": 1301,
            "assessmentUserId": 15,
            "competencies": { "1049": 1049, "1051": 1051 },
            "rating": { "1049": 4 },
            "indicators": {
              "1051": { "201": 4, "202": 5 }
            },
            "comments": {
              "1049": "Хорошая коммуникация",
              "1051": "Сильная аналитика"
            },
            "comment": "В целом положительно",
            "userIds": [],
            "questions": [
              {
                "questionIdFirst": 15,
                "answerValue": "Лидерство в проектах",
                "isAnswerRequired": true
              }
            ]
          }
        }'
        

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

{
          "result": {
            "result": {
              "success": true,
              "data": []
            },
            "error": null
          }
        }
        

См. также