Вебхуки
Вебхуки — это способ интеграции, который позволяет при запуске какого-либо события в TeamStorm автоматически оправлять данные об этом событии во внешнюю систему.
Вебхуки настраиваются на уровне пространства.
Механизмом выполнения вебхука является HTTP-запрос по методу POST.
Пример
В TeamStorm создается вебхук, который при событиях Добавление списания времени и Изменение списания времени отправляет данные об этих событиях во внешнюю систему. Пользователь внешней системы может в реальном времени видеть и учитывать списания пользователей TeamStorm, сделанные в том пространстве, для которого создан вебхук.
Доступ к разделу Вебхуки в настройках пространства выдается пользователям с разрешением Управление вебхуками.
По умолчанию разрешение Управление вебхуками включено для роли Администратор и отключено для ролей Пользователь и Гость.
Добавление вебхука
- Войдите в систему, используя учетную запись, для которой подключено разрешение Управление вебхуками.
- Перейдите в пространство, для которого вы хотите добавить вебхук.
- Перейдите в настройки пространства и нажмите Вебхуки на панели слева.
- Нажмите Добавить.
- На открывшемся экране добавления вебхука заполните поля:
- Название вебхука;
- Описание вебхука;
- URL (обязательное) — адрес во внешней системе, куда будет отправлен запрос с данными;
- Токен (обязательное) — токен для работы с вебхуками, сформированный во внешней системе. Если внешняя система не предполагает использования токенов, введите в поле любое значение;
- Выберите из списка одно или несколько событий, при наступлении которых будет срабатывать вебхук.
- Добавьте пользовательский заголовок, который будет передаваться во внешнюю систему (опционально):
- Нажмите Добавить заголовок.
- Введите ключ и значение заголовка. Длина каждого параметра не может быть больше 2048 символов. Пара ключ-значение может использоваться для передачи во внешнюю систему какого-либо специфического параметра.
- Настройте SSL-верификацию с помощью переключателя. По умолчанию SSL-верификация разрешена. Если необходимо отключить верификацию, переведите переключатель в неактивное положение.
- Опционально. Нажмите Проверить в правом верхнем углу, а затем в раскрывшемся списке нажмите на название события,
отправку данных которого вы хотите проверить.
Результат проверки выводится в открывшемся окне, где указаны:
- код ответа (
200для успешного завершения запроса); - тело основного запроса с параметрами и переменными;
- тело запроса с передачей заголовков и метаданных.
- код ответа (
- Нажмите Добавить в правом верхнем углу.
Вебхук будет добавлен в систему и на экране Вебхуки будет отображена новая строка, включающая:
- название вебхука;
- тип события, запускающего выполнение вебхука;
- дату создания вебхука;
- переключатель, показывающий состояние вебхука (активное / неактивное) и позволяющее управлять этим состоянием;
- кнопку удаления вебхука.
Активация и деактивация вебхука
- Войдите в систему, используя учетную запись, для которой подключено разрешение Управление вебхуками.
- Перейдите в пространство, вебхуками которого вы хотите управлять.
- Перейдите в настройки пространства.
- На открывшемся экране найдите в таблице нужный вебхук и переведите переключатель в столбце Активен в нужное положение.
Активное положение переключателя выделяется синим цветом.
Неактивные вебхуки не отправляют во внешнюю систему запрос при наступлении события.
Редактирование вебхука
- Войдите в систему, используя учетную запись, для которой подключено разрешение Управление вебхуками.
- Перейдите в пространство, вебхуками которого вы хотите управлять.
- Перейдите в настройки пространства и нажмите Вебхуки на панели слева.
- На открывшемся экране найдите в таблице нужный вебхук и нажмите на его название.
- На открывшемся экране отредактируйте данные как указано в подразделе Добавление вебхука.
- Нажмите Сохранить в правом верхнем углу.
Просмотр результатов выполнения вебхука
В нижней части экрана редактирования вебхука содержится журнал событий, в который записываются результаты выполнения вебхука.
Журнал представлен в виде таблицы, которая содержит:
- статус выполнения;
- тип события, запустившего выполнение вебхука;
- время запуска.
При нажатии на строку с событием открывается окно, в котором содержится:
- код ответа (
200для успешного завершения запроса); - статус ответа — ОК при успешном завершении или название ошибки при неудачном;
- тело основного запроса с параметрами и переменными;
- тело запроса с передачей заголовков, токенов и других специфических данных.
Пример
Событие: добавление списания
Запрос
{
"workitemId": "66030789-d986-4cbe-b2bc-a373d352ff10",
"entryId": "35f98d2e-de65-4467-864d-dcce0e7ca2e6",
"creationDate": "2024-11-04T14:52:49.8289869Z",
"startDate": "2024-11-04T14:52:46.023Z",
"duration": 28800,
"description": null,
"tenantId": "00000000-0000-0000-0000-000000000000",
"eventId": "aaaaaaaa-0004-4001-aaaa-aaaaaaaaaaaa",
"eventName": "TimeTrackingCreated",
"eventType": "TimeTrackingCreated",
"userId": "57edd357-b3b1-496f-b2c5-1d1bbbf7175e",
"workspaceId": "01c7722d-a7ea-4bd9-aaf8-799fb6c7cd6f",
"workspaceKey": "PIS"
}
В правой верхней части журнала находится поле, в котором указаны дата и время, до наступления которого выводятся данные журнала.
Чтобы изменить дату и время:
- Нажмите на поле.
- Выберите новую дату и время из раскрывшегося календаря с часами или нажмите Сейчас, чтобы установить текущие дату и время.
- Нажмите ОК.
Удаление вебхука
- Войдите в систему, используя учетную запись, для которой подключено разрешение Управление вебхуками.
- Перейдите в пространство, вебхуками которого вы хотите управлять.
- Перейдите в настройки пространства и нажмите Вебхуки на панели слева.
- На открывшемся экране найдите в таблице нужный вебхук и нажмите кнопку удаления в правой части строки.
- Нажмите **Да, я хочу удалить вебхук.
Вебхук будет безвозвратно удален вместе со всеми данными о его выполнении.
Список событий вебхуков
| Событие | Описание события |
|---|---|
| WorkitemCreated | Создание задачи |
| WorkitemStatusChanged | Изменение статуса |
| WorkitemDescriptionChanged | Изменение описания |
| WorkitemNameChanged | Изменение имени |
| WorkitemUserAssigned | Изменение ответственного |
| WorkitemParentChanged | Изменение родительской задачи или папки |
| WorkitemStartDateChanged | Изменение даты начала |
| WorkitemDueDateChanged | Изменение даты выполнения |
| WorkitemAddedToPortfolioElement | Добавление задачи в элемент портфеля |
| WorkitemDeletedFromPortfolioElement | Удаление задачи из элемента портфеля |
| TimeTrackingCreated | Добавление списания времени |
| TimeTrackingUpdated | Редактирование списания времени |
| WorkitemWorkflowIdChanged | Изменение процесса |
| WorkitemTypeChanged | Изменение типа задачи |
| SprintCreated | Создание спринта |
| WorkitemQueueIdChanged | Изменение спринта |
| SprintStatusChanged | Изменение статуса спринта |
| WorkitemEstimatedTimeChanged | Изменение оценки в часах |
| WorkitemEstimatedStoryPointsChanged | Изменение оценки в сторипоинтах |
| WorkitemProgressValueChanged | Изменение значения прогресса |
| WorkitemAttributeChanged | Изменение значения пользовательского атрибута |
Поля контекста события создания задачи
| Поле | Описание |
|---|---|
| workitemId | Идентификатор созданной задачи |
| workitemKey | Ключ созданной задачи |
| workitemName | Название созданной задачи |
| workitemDescription | Описание созданной задачи |
| workitemAssigneeId | Идентификатор ответственного на задаче |
| workitemTypeId | Идентификатор типа задачи |
| workitemCreationDate | Дата создания задачи |
| workitemWorkflowId | Идентификатор рабочего процесса задачи |
| workitemQueueId | Идентификатор спринта |
| mentionedUserIds | Список идентификаторов упоминаемых пользователей |
| tenantId | Идентификатор тенанта |
| eventId | Идентификатор события |
| eventName | Название события |
| eventType | Тип события |
| userId | Идентификатор пользователя, инициировавшего событие |
| workspaceId | Идентификатор пространства, в котором произошло событие |
| workspaceKey | Ключ пространства, в котором произошло событие |
Поля контекста события изменения задачи
| Поле | Описание |
|---|---|
| oldValue | Старое значение измененного атрибута |
| newValue | Новое значение измененного атрибута |
| workitemParentId | Идентификатор родительской задачи или папки |
| workitemStatusId | Идентификатор статуса задачи |
| workitemCreatedBy | Идентификатор пользователя, создавшего задачу |
| workitemUpdatedBy | Идентификатор пользователя, изменившего задачу |
| workitemUpdateDate | Дата изменения задачи |
| workitemDueDate | Дата выполнения |
| workitemEndDate | Дата закрытия задачи |
| workitemStartDate | Дата начала |
| workitemAttributesValues | Значение атрибутов задачи |
| workitemProgressType | Тип расчета прогресса |
| workitemProgressName | Название метрики прогресса |
| workitemProgressValue | Значение прогресса |
| workitemEstimatedTime | Оценка во времени (в секундах) |
| workitemSpentTime | Затраченное время (в секундах) |
| workitemLeftTime | Оставшееся от оценки время (в секундах) |
| workitemEstimatedStoryPoints | Оценка в сторипоинтах |
| workitemTicketTypeId | Идентификатор типа заявки по которой создана задача. |
| workitemId | Идентификатор созданной задачи |
| workitemKey | Ключ созданной задачи |
| workitemName | Название созданной задачи |
| workitemDescription | Описание созданной задачи |
| workitemAssigneeId | Идентификатор ответственного на задаче |
| workitemTypeId | Идентификатор типа задачи |
| workitemCreationDate | Дата создания задачи |
| workitemWorkflowId | Идентификатор рабочего процесса задачи |
| workitemQueueId | Идентификатор спринта |
| mentionedUserIds | Список идентификаторов упоминаемых пользователей |
| tenantId | Идентификатор тенанта |
| eventId | Идентификатор события |
| eventName | Название события |
| eventType | Тип события |
| userId | Идентификатор пользователя, инициировавшего событие |
| workspaceId | Идентификатор пространства, в котором произошло событие |
| workspaceKey | Ключ пространства, в котором произошло событие |
Поля контекста события создания или изменения спринта
| Поле | Описание |
|---|---|
| extensionId | Идентификатор расширения Agile |
| sprintId | Идентификатор спринта |
| sprintName | Название спринта |
| sprintStatus | Статус спринта |
| sprintStatus | Статус спринта |
| tenantId | Идентификатор тенанта |
| eventId | Идентификатор события |
| eventName | Название события |
| eventType | Тип события |
| userId | Идентификатор пользователя, инициировавшего событие |
| workspaceId | Идентификатор пространства, в котором произошло событие |
| workspaceKey | Ключ пространства, в котором произошло событие |
Поля контекста события добавления или изменения списания
| Поле | Описание |
|---|---|
| workitemId | Идентификатор задачи, с которой связано списание |
| entryId | Идентификатор списания |
| creationDate | Дата добавления списания |
| startDate | Дата списания |
| duration | Время списания в секундах |
| description | Описание списания |
| tenantId | Идентификатор тенанта |
| eventId | Идентификатор события |
| eventName | Название события |
| eventType | Тип события |
| userId | Идентификатор пользователя, инициировавшего событие |
| workspaceId | Идентификатор пространства, в котором произошло событие |
| workspaceKey | Ключ пространства, в котором произошло событие |
Поля контекста события добавления и удаления связи с элементом портфеля
| Поле | Описание |
|---|---|
| workitemId | Идентификатор задачи |
| portfolioElementId | Идентификатор элемента портфеля |
| portfolioElementName | Название элемента портфеля |
| portfolioElementStatusId | Идентификатор статуса элемента портфеля |
| tenantId | Идентификатор тенанта |
| eventId | Идентификатор события |
| eventName | Название события |
| eventType | Тип события |
| userId | Идентификатор пользователя, инициировавшего событие |
| workspaceId | Идентификатор пространства, в котором произошло событие |
| workspaceKey | Ключ пространства, в котором произошло событие |

