goalsmanagement.goalitem.upsert
Scope:
goalsmanagementКто может вызывать: Сотрудник (своя карточка) / руководитель / админ. Подробнее: Права доступа
Сохранить/обновить набор целей карточки (WAF-безопасное имя вместо *.save)
HTTP: POST
Побочные эффекты: перезаписывает цели карточки
Параметры метода
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
cardId |
int |
да | ID карточки целей |
goals |
array |
да | Полный набор целей карточки. Свои строки с id, которых нет в массиве, удаляются (кроме ещё невидимых pending-каскадов) |
Поля элемента goals[]
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
id |
int |
нет | HL-id строки. Нет — создать, есть — обновить. Чужой id — VALIDATION_ERROR |
type_goal |
int |
да | Числовой id из goal.type.list, не xmlId. Без id и без типа строка пропускается. У подцелей/внешних каскадных строк валидация не проверяет |
goal |
int |
условно | ID цели каталога того же типа. Обязателен для strategy (1-й уровень). Одних task/weight недостаточно |
task |
string |
условно | Текст задачи. Обязателен для любого не-strategy типа (обычно operational/informational) |
weight |
number |
да | Число 0–100 в payload (валидация без подстановки из HL). Плюс min/step из каталога/настроек. Сумма 1-го уровня ≈ 100. У подцелей не проверяется |
criterion |
string |
условно | Критерий. Обязателен и должен быть числом, если цель количественная |
commentGeneral |
string |
нет | Комментарий |
file |
object |
нет | { "id": <fileId> } |
depend |
array |
нет | ID отделов |
related |
array |
нет | Связи { "id", "entityType": "task"|"project" } |
cascadeOnEmployees |
array |
нет | ID сотрудников для каскада |
cascadeOnBosses |
array |
нет | ID руководителей для каскада |
quantitative |
bool |
нет | Количественная цель |
allowToConvert |
bool |
нет | Разрешить перевод в количественную |
isSubgoal |
bool |
нет | Подцель (не входит в сумму весов) |
part |
number |
нет | Доля подцели |
relatedCardId |
int |
нет | Карточка, на которой живёт строка |
cascadeParentGoal |
int |
нет | Родительская цель каскада |
Возвращаемые данные
Ответ в конверте модуля: result.result — результат сохранения / карточка; result.error. Ключи total/next для не-list методов могут отсутствовать в сериализации, если не переданы.
Обработка ошибок
Справочник кодов: error-codes.md.
| Код | Описание |
|---|---|
UNAUTHORIZED |
Пользователь не авторизован |
VALIDATION_ERROR |
Некорректные или неполные параметры |
ACCESS_DENIED |
Нет прав на операцию (общий запрет) |
INTERNAL_ERROR |
Внутренняя ошибка сервера |
Пример запроса (POST)
curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/goalsmanagement.goalitem.upsert.json" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--data '{
"cardId": 501,
"goals": [
{
"id": 1001,
"goal": 1049,
"type_goal": 62,
"criterion": "Рост выручки на 15%",
"commentGeneral": "Согласовано с руководителем",
"weight": 100
}
]
}'
Пример ответа
{
"result": {
"result": {
"cardId": 501,
"saved": true
},
"error": null
}
}
См. также
Предыдущая
Следующая