helpdesk.ticket.update
Scope:
helpdeskКто может вызывать: Автор / ответственный / support / admin (
TicketAccessHelper::canChangeTicketState). Наблюдатели —FORBIDDEN.
Обновить поля обращения через CAllTicketHelpdesk::SetTicket (уведомления автору/ТП включены: sendEmailToAuthor/sendEmailToTechsupport = Y).
HTTP: POST
Побочные эффекты: изменяет переданные поля обращения; при смене статуса/закрытии срабатывают обработчики модуля (OnBeforeTicketUpdate / OnAfterTicketUpdate и т.п.)
Параметры метода
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
id |
int |
да | ID обращения |
title / TITLE |
string |
нет | Заголовок (на update также проставляется CHANGE_TITLE) |
message / MESSAGE |
string |
нет | Текст нового сообщения (если передан — добавляется сообщение к обращению) |
categoryId / CATEGORY_ID |
int |
нет | Категория |
criticalityId / CRITICALITY_ID |
int |
нет | Критичность |
priority |
int |
нет | Алиас criticalityId (то же поле БД) |
statusId / STATUS_ID |
int |
нет | ID статуса из словаря (C_TYPE=S) |
markId / MARK_ID |
int |
нет | Оценка |
responsibleId / RESPONSIBLE_USER_ID |
int |
нет | Ответственный |
ownerId / OWNER_USER_ID |
int |
нет | Автор обращения |
slaId / SLA_ID |
int |
нет | SLA |
siteId / SITE_ID |
string |
нет | LID сайта |
sourceId / SOURCE_ID |
int |
нет | Источник |
difficultyId / DIFFICULTY_ID |
int |
нет | Сложность |
supportComments / SUPPORT_COMMENTS |
string |
нет | Внутренний комментарий поддержки |
autoCloseDays / AUTO_CLOSE_DAYS |
int |
нет | Дней до автозакрытия |
files / FILES |
array |
нет | Вложения (формат ядра support / SetTicket) |
close / CLOSE |
string (Y | N) |
нет | Флаг закрытия/переоткрытия ядра (см. ниже) |
Нужно передать хотя бы одно поле кроме id, иначе VALIDATION_ERROR.
Поле close vs ticket.close / ticket.reopen
ticket.update + close |
ticket.close / ticket.reopen |
|
|---|---|---|
| Что делает | Кладёт CLOSE в тот же SetTicket вместе с другими полями |
Отдельный метод: только смена состояния |
| Значение | Строка Y или N (как в ядре). JSON-boolean true/false не нормализуется и не рекомендуется |
Внутри всегда ставит CLOSE = Y или N |
| Статус из настроек модуля | Не подставляется автоматически | Да: close → HELPDESK_GENERAL_OPTIONS_CHANGE_CLOSE_TICKET_STATUS, reopen → HELPDESK_GENERAL_OPTIONS_CHANGE_RESUME_TICKET_STATUS (если заданы) |
| Минует ли ядро | Нет — тот же SetTicket / события support |
Нет — тот же путь |
Зачем два способа: ticket.close / reopen — явный lifecycle с статусом из опций модуля. close в update — низкоуровневый флаг ядра, удобен, если в одном запросе меняете поля и закрываете/открываете.
Поведение значений
close: "Y"— закрытие: выставляетсяDATE_CLOSE(логика ядра приCLOSE == "Y").close: "N"— переоткрытие, если обращение было закрыто (DATE_CLOSEбыл заполнен): ядро сбрасываетDATE_CLOSE, ставитREOPEN.close: false/true(boolean) — не используйте: REST не приводит bool кY/N; сравнение в ядре идёт как== "Y"/== "N"и для bool даёт неоднозначный результат.
close и statusId вместе
Оба поля уходят в один вызов SetTicket и применяются независимо:
CLOSEуправляет закрытием/переоткрытием (DATE_CLOSE/ reopen);STATUS_IDпишется как обычное поле статуса.
Приоритета «одно отменяет другое» нет. Если нужны и закрытие, и конкретный статус — передайте оба, например { "close": "Y", "statusId": 45 }.
Если передать только close: "Y" без statusId — тикет закроется без автоподстановки статуса из HELPDESK_GENERAL_OPTIONS_CHANGE_CLOSE_TICKET_STATUS (в отличие от ticket.close).
Возвращаемые данные
Ответ в конверте модуля: result.result — обращение после обновления (как ticket.get).
Обработка ошибок
Справочник кодов: error-codes.md.
| Код | Описание |
|---|---|
UNAUTHORIZED |
Пользователь не авторизован |
INVALID_ID |
Некорректный id |
TICKET_NOT_FOUND |
Обращение не найдено |
FORBIDDEN |
Наблюдатель или нет прав на изменение |
VALIDATION_ERROR |
Нет полей для обновления или ошибка сохранения |
INTERNAL |
Внутренняя ошибка |
Пример запроса (POST)
curl -X POST "https://76575.dev.wehive.digital/rest/1/lus1tijk9ll7mg7h/helpdesk.ticket.update.json" \
-H "Content-Type: application/json" \
--data '{"id":2,"title":"Обновлённый заголовок","priority":5}'
Закрытие вместе с полями (без автостатуса из опций):
curl -X POST "https://76575.dev.wehive.digital/rest/1/lus1tijk9ll7mg7h/helpdesk.ticket.update.json" \
-H "Content-Type: application/json" \
--data '{"id":2,"close":"Y","statusId":45}'
Пример ответа
{
"result": {
"result": {
"id": 2,
"title": "Обновлённый заголовок",
"priority": 5,
"criticalityId": 5
},
"error": null
}
}