update_task
Метод unit/update_task позволяет редактировать задачи. Чтобы создать новую задачу, используйте unit/create_task. Информация о том, как работают задачи в системе мониторинга, приведена в разделе Задачи.
Конечная точка
svc=unit/update_task¶ms={
"itemId": <long>,
"taskId": <text>,
"props": {
"key1": <long>,
"key2": <text>,
.....
}
}
Пример запроса:
https://hst-api.wialon.com/wialon/ajax.html?
svc=unit/update_task&
params={
"itemId": 1514,
"taskId": "6f6aeeebad9ebe64bda86924f8d379d8e6b06bd690c53da4aab526c5e221bdb266b52a50",
"props": {
"task_status": 2,
"task_priority": 3
}
}&
sid=SESSION_IDENTIFIER
Параметры
Запрос должен содержать следующие параметры:
| Параметр | Описание |
|---|---|
itemId |
Идентификатор объекта. |
taskId |
Идентификатор задачи: строковый хеш длиной ровно 72 символа. Возвращается в поле task_id методом messages/get_task_messages. |
props |
Объект свойств, которые необходимо обновить (пары «ключ — значение»). Указывайте только те свойства, которые вы хотите отредактировать, поскольку каждое обновление полностью заменяет соответствующее существующее свойство. Единственное исключение — task_params: этот объект объединяется с параметрами, которые уже есть у задачи. Список доступных свойств приведен ниже. |
Свойства задачи
| Свойство | Описание |
|---|---|
task_status |
Статус задачи. Допустимые значения:
Если вы изменяете статус задачи с Выполнено или Отклонено на любой другой статус, а также с любого другого статуса на Выполнено, Отклонено или Приостановлено, необходим комментарий. Подробнее о статусах задач в системе мониторинга — в разделе Изменение статуса задачи. |
task_priority |
Приоритет задачи. Допустимые значения:
|
task_assignee |
Идентификатор пользователя, на которого назначена задача. |
task_comments |
Массив комментариев к задаче. Поле комментария не должно быть пустым и не должно содержать более 500 символов. |
task_params |
JSON-объект с дополнительными параметрами задачи. Поддерживаемые ключи:
Ключи, которые вы не передали, сохраняют прежние значения. Это значит, что уже заданное значение можно изменить, но нельзя удалить. |
Права доступа
Для работы с задачами объекта необходимы следующие права доступа на него:
| Право доступа | Для чего необходимо |
|---|---|
| Просмотр элемента и его основных свойств | Доступ к объекту для просмотра его задач. |
| Запрос сообщений и отчетов | Просмотр задач, созданных для объекта, поскольку задачи хранятся в системе в виде сообщений. Без этого права задачи объекта не возвращаются методом messages/get_task_messages, поэтому получить taskId невозможно. |
| Редактирование статусов задач и управление комментариями | Изменение статуса задачи, а также добавление, редактирование и удаление комментариев. Методу unit/update_task это право необходимо для любого обновления. |
| Редактирование задач | Изменение task_priority, а в совокупности с правом доступа Выполнение действий от имени пользователя на пользователей — изменение task_assignee. Кроме того, включает возможности, которые дает право доступа Редактирование статусов задач и управление комментариями. |
Управление комментариями
Массив task_comments должен содержать все комментарии, которые будут у задачи после обновления. Передавайте существующие комментарии с их id, а новый комментарий — без него:
[
{ "id": 1, "comment": "Unit delivered to the service station." },
{ "id": 2, "comment": "Oil and filters replaced." },
{ "comment": "Spare parts ordered, waiting for delivery." }
]
Если комментарий был ранее добавлен к задаче, но его id не указан в массиве, комментарий удаляется.
Для нового комментария система присваивает следующий id (комментарии задачи нумеруются начиная с 1) и указывает в качестве автора текущего пользователя. Вы также можете передать поле timestamp со временем комментария в формате UNIX timestamp. По умолчанию система использует текущее время сервера.
У существующего комментария можно изменить только текст. Если вы измените его, система запишет, кто и когда отредактировал комментарий.
О тех же действиях в системе мониторинга — в разделе Комментарии.
Добавление комментария
Чтобы добавить комментарий, передайте в массиве task_comments объект следующего формата:
{ "comment": "Spare parts ordered, waiting for delivery." }
Редактирование комментария
Чтобы отредактировать комментарий, укажите его идентификатор в массиве task_comments и передайте новый текст комментария:
{ "id": 2, "comment": "Oil and filters replaced. Next service due at 140000 km." }
Удаление комментария
Чтобы удалить комментарий, уберите его из массива task_comments.
Добавление и редактирование дополнительных параметров
Чтобы добавить или отредактировать дополнительные параметры задачи, укажите в параметре props объект task_params с необходимыми парами «ключ — значение»:
{
"itemId": 1514,
"taskId": "6f6aeeebad9ebe64bda86924f8d379d8e6b06bd690c53da4aab526c5e221bdb266b52a50",
"props": {
"task_params": {
"filled": 50.5,
"mileage": 125.8,
"cost": 150
}
}
}
Значения filled и mileage указывайте в текущей системе измерения объекта (СИ, американской, имперской или метрической с галлонами). Система измерения задается в свойстве mu объекта. Подробнее — в разделе Основные свойства. Значения charged, cost и engine_hours сохраняются в том виде, в котором переданы.
Обновление нескольких задач одновременно
Метод unit/update_task обновляет одну задачу. Чтобы обновить несколько задач одновременно (например, назначить их на одного пользователя или изменить их статус или приоритет), объедините запросы unit/update_task в запрос core/batch.
Каждый элемент массива params — это отдельный запрос unit/update_task со своими itemId и taskId.
svc=core/batch¶ms={
"params": [
{
"svc": "unit/update_task",
"params": {
"itemId": 1514,
"taskId": "6f6aeeebad9ebe64bda86924f8d379d8e6b06bd690c53da4aab526c5e221bdb266b52a50",
"props": {
"task_status": 6,
"task_comments": [
{ "comment": "Checked by the operator." }
]
}
}
},
{
"svc": "unit/update_task",
"params": {
"itemId": 1515,
"taskId": "8a21bcb0ad9ebe64bda86924f8d379d8e6b06bd690c53da4aab526c5e221ff416a8d46d0",
"props": {
"task_status": 6,
"task_comments": [
{ "comment": "Checked by the operator." }
]
}
}
}
],
"flags": 0
}
Обратите внимание на следующее:
| Правило | Описание |
|---|---|
| Комментарии | Если вы изменяете статус на Выполнено (6), Отклонено (5) или Приостановлено (4), а также с Выполнено или Отклонено на любой другой статус, передайте комментарий в task_comments для каждой задачи. В противном случае соответствующий запрос возвращает ошибку 4 с причиной COMMENT_IS_REQUIRED, а у задачи сохраняются предыдущие свойства. |
| Существующие комментарии | task_comments заменяет весь массив комментариев задачи. Если у задачи уже есть комментарии, а вы передаете только новый, предыдущие комментарии удаляются. Чтобы сохранить их, передайте их вместе с их идентификаторами, как описано в разделе Управление комментариями. |
| Права доступа | Права доступа проверяются для каждой задачи отдельно. При "flags": 0 не выполняется только запрос к объекту, на который у вас нет прав, а остальные запросы выполняются. При "flags": 1 все запросы, следующие за невыполненным, возвращают ошибку 10. |
| Возвращаемый результат | Возвращается массив с результатом каждого запроса в том же порядке, в котором запросы были отправлены. |
| Ограничения | Запрос core/batch ограничен размером возвращаемого результата и временем выполнения. Если результат слишком большой, запрос возвращает ошибку 6. Если превышено время выполнения, остальные запросы возвращают ошибку 10. |
Описание параметра flags приведено в разделе core/batch.
Возвращаемый результат
При успешном выполнении запроса возвращается пустой результат.
{}
В противном случае возвращается код ошибки. Пример:
{
"error": 5,
"reason": "TASK_NOT_FOUND"
}
Коды ошибок
| Код ошибки | Описание | Значение поля reason |
|---|---|---|
| 4 | Невалидные входные параметры. Отсутствует обязательный параметр или он имеет неверный тип, taskId не является строкой из 72 символов, либо свойства в props невозможно применить (например, указанный исполнитель не существует).Этот же код возвращается, если для изменения статуса необходим комментарий, но в task_comments не передан новый комментарий. |
INVALID_INPUT_PARAMSCOMMENT_IS_REQUIRED |
| 5 | У объекта нет задачи с указанным taskId. |
TASK_NOT_FOUND |
| 6 | Указанный идентификатор комментария не найден среди комментариев задачи, либо массив содержит один и тот же идентификатор дважды. Причина UNKNOWN_ERROR означает, что задачи не поддерживаются для объекта. |
INVALID_COMMENT_IDUNKNOWN_ERROR |
| 7 | Доступ запрещен. Одна из следующих причин:
|
NO_ACCESS_TO_UNITNO_ACCESS_TO_USER |
Общие коды ошибок приведены в разделе Коды ошибок.