---
metadata:
  - name: generator
    content: Diplodoc Platform v5.70.0
  - property: og:type
    content: article
  - property: article:section
    content: Справочник API
  - property: og:title
    content: Объекты условий срабатывания триггера
  - property: article:tag
    content: Техническая инструкция
alternate:
  - https://yandex.ru/support/tracker/en/api/queues/change-trigger-conditions.md
  - https://yandex.ru/support/tracker/ru/api/queues/change-trigger-conditions.md
  - href: https://yandex.ru/support/tracker/ru/api/queues/change-trigger-conditions.md
    type: text/markdown
    title: Markdown version
  - href: https://yandex.ru/support/tracker/ru/llms.txt?revision=r22105730
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/support/tracker/ru/llms.txt?revision=r22105730


# Объекты условий срабатывания триггера

Чтобы задать условия срабатывания триггера, укажите один или несколько объектов.

## События {#events}

Параметр | Описание | Допустимые значения | Тип данных
----- | ----- | ----- | -----
type | Тип условия | Одно из значений:<ul><li>`Event.update` — Задача изменилась;</li><li>`CalculationFormulaWatch` — Поля формулы изменились;</li><li>`Event.comment-create` — Создан комментарий;</li><li>`Event.create` — Создана задача;</li></ul> | Строка

> Пример: Триггер сработает, если задача изменилась.
> ```json translate=no
> {"type": "Event.update"}
> ```


## Чеклист {#checklist}

Параметр | Описание | Допустимые значения | Тип данных
----- | ----- | ----- | -----
type | Тип условия | `ChecklistDone` | Строка

> Пример: Триггер сработает, если все пункты чеклиста были выполнены.
> ```json translate=no
> {"type": "ChecklistDone"}
> ```


## Текст комментария {#comment-text}

Параметр | Описание | Допустимые значения | Тип данных
----- | ----- | ----- | -----
type | Тип условия | Одно из значений:<ul><li>`CommentNoneMatchCondition` — Не содержит ни одного из фрагментов;</li><li>`CommentStringNotMatchCondition` — Не содержит фрагмент;</li><li>`CommentFullyMatchCondition` — Совпадает с;</li><li>`CommentAnyMatchCondition` — Содержит любой из фрагментов;</li><li>`CommentStringMatchCondition` — Содержит фрагмент;</li></ul> | Строка
word | Текст комментария | Строки для поиска | Строка или Массив строк
ignoreCase | Игнорировать регистр | `true` или `false` | Логический
removeMarkup | Игнорировать разметку | `true` или `false` | Логический
noMatchBefore | Параметр изменился | `true` или `false` | Логический

**Тип данных в зависимости от типа условия**

Тип условия | Тип данных
----- | ----- 
`CommentNoneMatchCondition` | Массив строк
`CommentStringNotMatchCondition` | Строка
`CommentFullyMatchCondition` | Строка
`CommentAnyMatchCondition` | Массив строк
`CommentStringMatchCondition` | Строка

> Пример: Триггер сработает, если комментарий не содержит текстов `Version 0.1` или `Version 0.2` в любых регистре и разметке.
> ```json translate=no
> {
> 	"type": "CommentNoneMatchCondition", 
> 	"words": ["Version 0.1", "Version 0.2"], 
> 	"ignoreCase": true, 
> 	"removeMarkup": true, 
> 	"noMatchBefore": false 
> }
> ```

 
## Автор комментария {#comment-author}

Чтобы проверить авторов новых комментариев, укажите тип условия в параметре `type` и добавьте параметр, указанный для этого типа.

#|
|| **Тип условия** | **Когда условие выполняется** | **Параметр** ||
|| `CommentAuthor` | Есть новый комментарий от указанного пользователя | `user` ||
|| `CommentAuthorNot` | Есть новый комментарий от другого пользователя | `user` ||
|| `CommentAuthorInGroups` | Есть новый комментарий от пользователя, который входит хотя бы в одну из указанных групп | `groups` ||
|| `CommentAuthorNotInGroups` | Есть новый комментарий от пользователя, который не входит ни в одну из указанных групп | `groups` ||
|| `CommentAuthorContainsAll` | Среди авторов новых комментариев есть все указанные пользователи | `authors` ||
|| `CommentAuthorContainsAny` | Среди авторов новых комментариев есть хотя бы один из указанных пользователей | `authors` ||
|| `CommentAuthorContainsNone` | Среди авторов новых комментариев нет ни одного из указанных пользователей | `authors` ||
|#

> Пример: условие выполняется, если хотя бы один новый комментарий оставил пользователь с логином `user1`.
> ```json translate=no
> {
>   "type": "CommentAuthor",
>   "user": "user1"
> }
> ```

Типы `CommentAuthor` и `CommentAuthorNot`, а также `CommentAuthorInGroups` и `CommentAuthorNotInGroups` проверяют комментарии по отдельности. Условие выполняется, если ему соответствует хотя бы один новый комментарий. Типы `CommentAuthorContainsAll`, `CommentAuthorContainsAny` и `CommentAuthorContainsNone` сравнивают набор авторов новых комментариев текущего изменения с пользователями из параметра `authors`.

#|
|| **Параметр** | **Описание** | **Тип данных** ||
|| type | Тип условия из таблицы выше | Строка ||
|| user | Логин или идентификатор пользователя. В объекте можно указать, например, поле `id` или `login` | Строка, число или объект ||
|| authors | Пользователи для сравнения с набором авторов. Каждый элемент задается так же, как параметр `user` | Массив строк, чисел или объектов ||
|| groups | Идентификаторы или URL групп. В объекте можно указать поле `id` или `url`. Массив должен содержать хотя бы одну группу | Массив строк, чисел или объектов ||
|#

> Пример: условие выполняется, если среди авторов новых комментариев текущего изменения есть оба пользователя — `user1` и `user2`.
> ```json translate=no
> {
>   "type": "CommentAuthorContainsAll",
>   "authors": ["user1", "user2"]
> }
> ```

В ответах на запросы [Получить параметры триггера](https://yandex.ru/support/tracker/ru/api/queues/get-trigger.md) условия с типами `CommentAuthorContainsAll`, `CommentAuthorContainsAny` и `CommentAuthorContainsNone` возвращаются с типом `CommentAuthorContainerConditionProto`. Выбранный вариант указывается в поле `subtype`. Подробнее — в [описании полей условия](https://yandex.ru/support/tracker/ru/api/queues/get-trigger.md#comment-author-condition).

## Тип комментария {#comment-type}

Параметр | Описание | Допустимые значения | Тип данных
----- | ----- | ----- | -----
type | Тип условия | Одно из значений:<ul><li>`CommentMessageInternal` — Комментарий в Трекере;</li><li>`CommentMessageExternal` — Письмо на почту.</li></ul> | Строка
user | Автор комментария | Идентификатор пользователя | Строка

> Примеры
> 1. Триггер сработает, если тип комментария — `Комментарий в Трекере`.
>       ```json translate=no
>       { "type": "CommentMessageInternal" }
>       ```
> 1. Триггер сработает, если тип комментария — `Письмо на почту`.
>       ```json translate=no
>       { "type": "CommentMessageExternal" }
>       ```

## Действие со связью {#relationship}

Параметр | Описание | Допустимые значения | Тип данных
----- | ----- | ----- | -----
type | Тип условия | Одно из значений:<ul><li>`UpdatedLinkCondition` — Связь обновлена;</li><li>`CreatedLinkCondition` — Связь создана;</li><li>`RemovedLinkCondition` — Связь удалена.</li></ul> | Строка
relationship | Тип связи между задачами | Список связей | Массив строк

{% cut "Типы связей" %}

* `relates` — простая связь.
* `is dependent by` — текущая задача является блокером.
* `depends on` — текущая задача зависит от связываемой.
* `is subtask for` — текущая задача является подзадачей связываемой.
* `is parent task for` — текущая задача является родительской для связываемой задачи.
* `duplicates` — текущая задача дублирует связываемую.
* `is duplicated by` — связываемая задача дублирует текущую.
* `is epic of` — текущая задача является эпиком связываемой. Связь такого типа можно установить только для задач типа "Эпик".
* `has epic` — связываемая задача является эпиком текущей. Связь такого типа можно установить только для задач типа "Эпик".

{% endcut %}

> Пример: Триггер сработает, если связи с родительской задачей и эпиком удалены.
> ```json translate=no
> { "type": "RemovedLinkCondition", "relationship": ["is parent task for", "is epic of"] }
> ```


## Поля задачи {#task-fields}

В общем случае условие срабатывания триггера, связанное с полем задачи, может быть описано объектом с двумя обязательными параметрами:

Параметр | Описание | Допустимые значения | Тип данных
----- | ----- | ----- | -----
type | Тип условия | ИДЕНТИФИКАТОР_УСЛОВИЯ | Строка
field | Поле задачи | ИДЕНТИФИКАТОР_ПОЛЯ | Строка

Объект может также содержать дополнительные параметры.

Доступные значения типа условия зависят от конкретного поля задачи. Дополнительные параметры объекта зависят от комбинации обязательных параметров. 

### Значение поля

Для большинства полей доступны следующие три типа условий, связанных со значением поля:

Тип условия | Описание | Дополнительные параметры | Тип данных 
----- | ----- | ----- | -----
`FieldChangedCondition` | Значение поля изменилось | Без параметров |  
`FieldEquals` | равно | `value` | Строка 
`FieldBecameEqual` | стало равно | `value` | Строка. Для полей, которые могут содержать несколько значений, например «Нужен ответ пользователя», — массив. См. [Поле «Нужен ответ пользователя»](#pending-reply-from)

{% cut "Список полей, для которых применимы условия" %}

Поле | Идентификатор 
----- | ----- 
Очередь | queue
Тип | type
Приоритет | priority
Ключ | key
Задача | summary
Описание \* | description
Статус | status
Резолюция | resolution
Статус изменен | statusStartTime
Создано | createdAt
Обновлено | updatedAt
Разрешен | resolvedAt
Последний комментарий | lastCommentUpdatedAt
Дедлайн | deadline
Дата начала | start
Дата завершения | end
Автор | createdBy
Исполнитель | assignee
Наблюдатели | followers
Доступ | access
Изменил | updatedBy
Решивший | resolvedBy
Рассылки | followingMaillists
Проект | project
Теги | tags
Компоненты | components
Найдено в версиях | affectedVersions
Исправить в версиях | fixVersions
Родительский тикет | parent
Старая очередь | previousQueue
Проголосовали | votedBy
Проголосовало | votes
Комментариев без сообщения | commentWithoutExternalMessageCount
Комментариев с сообщением | commentWithExternalMessageCount
Доски | boards
Нужен ответ пользователя | pendingReplyFrom
Предыдущая очередь | lastQueue
Суммарный процент участия | participantPercentsTotal
Возможно спам | possibleSpam
Тип статуса | statusType
QA-инженер | qaEngineer
Первоначальная оценка | originalEstimation
Оценка | estimation
Затрачено времени | spent
Epic | epic
Story Points | storyPoints
Спринт | sprint
От \* | emailFrom
Кому | emailTo
Копия | emailCc
Создано по письму на адрес \* | emailCreatedBy

\* Для полей, отмеченных звездочкой, вместо типа условия **равно** (`FieldEquals`) используется **Равно строке** (`FieldEqualsString`).

{% endcut %}

Примеры:
> 1. Триггер сработает, если значение поля «Приоритет» изменилось.
>       ```json translate=no
>       { "type": "FieldChangedCondition", "field": "priority" }
>       ```
> 1. Триггер сработает, если значение поля «Приоритет» — `Блокер`. 
>       ```json translate=no
>       { "type": "FieldEquals", "field": "priority", "value": "blocker" }
>       ```
> 1. Триггер сработает, если значение поля «Приоритет» изменилось на `Блокер`.
>       ```json translate=no
>       { "type": "FieldBecameEqual", "field": "priority", "value": "blocker" }
>       ```

### Состояние поля

Условия, связанные с наличием в поле значения:

Тип условия | Описание | Дополнительные параметры  
----- | ----- | ----- 
`FieldIsNotEmpty` | Значение поля не пусто | Без параметров
`FieldIsEmpty` | Значение поля пусто | Без параметров 
`FieldBecameEmpty` | Значение поля удалено | Без параметров  
`FieldBecameNotEmpty` | Значение поля установлено | Без параметров  

{% cut "Список полей, для которых применимы условия" %}

Поле | Идентификатор 
----- | ----- 
Описание | description
Резолюция | resolution
Статус изменен | statusStartTime
Разрешен | resolvedAt
Последний комментарий | lastCommentUpdatedAt
Дедлайн | deadline
Дата начала | start
Дата завершения | end
Исполнитель | assignee
Наблюдатели | followers
Доступ | access
Решивший | resolvedBy
Рассылки | followingMaillists
Проект | project
Теги | tags
Компоненты | components
Найдено в версиях | affectedVersions
Исправить в версиях | fixVersions
Родительский тикет | parent
Старая очередь | previousQueue
Проголосовали | votedBy
Доски | boards
Нужен ответ пользователя | pendingReplyFrom
Предыдущая очередь | lastQueue
Суммарный процент участия | participantPercentsTotal
Возможно спам | possibleSpam
Тип статуса | statusType
QA-инженер | qaEngineer
Первоначальная оценка | originalEstimation
Оценка | estimation
Затрачено времени | spent
Epic | epic
Story Points | storyPoints
Спринт | sprint
От | emailFrom
Кому | emailTo
Копия | emailCc
Создано по письму на адрес | emailCreatedBy

{% endcut %}

Примеры:
> 1. Триггер сработает, если исполнитель уже назначен.
>       ```json translate=no
>       { "type": "FieldIsNotEmpty", "field": "assignee" }
>       ```
> 1. Триггер сработает, если исполнитель не назначен.
>       ```json translate=no
>       { "type": "FieldIsEmpty", "field": "assignee" }
>       ```
> 1. Триггер сработает, если поле «Исполнитель» стало пустым.
>       ```json translate=no
>       { "type": "FieldBecameEmpty", "field": "assignee" } 
>       ```
> 1. Триггер сработает, если поле «Исполнитель» стало непустым.
>       ```json translate=no
>       { "type": "FieldBecameNotEmpty", "field": "assignee" } 
>       ```

### Поле «Нужен ответ пользователя» {#pending-reply-from}

Поле «Нужен ответ пользователя» (`pendingReplyFrom`) может содержать несколько пользователей. Для него доступны условия состояния поля и условие `FieldBecameEqual`.

В обоих условиях в параметре `field` передается строка `"pendingReplyFrom"`. Объект с полями `self`, `id` и `display`, как в ответе на запрос [Получить параметры триггера](https://yandex.ru/support/tracker/ru/api/queues/get-trigger.md), в `field` не передавайте.

#|
|| **Условие** | **Когда срабатывает** | **Параметры** ||
|| `FieldBecameNotEmpty` | В поле появилось хотя бы одно значение | `field` ||
|| `FieldBecameEqual` | Набор пользователей в поле стал равен набору из параметра `value` | `field`, `value` ||
|#

Параметр `value` условия `FieldBecameEqual` для этого поля — массив пользователей. Каждый элемент массива — логин пользователя или объект с логином в поле `id`. Порядок пользователей не важен, но набор в поле должен совпадать с массивом полностью: если в `value` указан один пользователь, а в поле стало два, условие не выполнится.

> Примеры:
> 1. Триггер сработает, если поле «Нужен ответ пользователя» стало непустым.
>       ```json translate=no
>       { "type": "FieldBecameNotEmpty", "field": "pendingReplyFrom" }
>       ```
> 1. Триггер сработает, когда набор пользователей в поле «Нужен ответ пользователя» станет равен набору из одного пользователя `user1`. Если до изменения в поле были другие пользователи, а после изменения остался только `user1`, условие выполнится. Если набор уже был таким же, условие не выполнится.
>       ```json translate=no
>       { "type": "FieldBecameEqual", "field": "pendingReplyFrom", "value": ["user1"] }
>       ```
> 1. Триггер сработает, когда набор пользователей в поле «Нужен ответ пользователя» станет равен набору из двух пользователей `user1` и `user2`. Если до изменения набор был другим, а после изменения в поле указаны только эти два пользователя, условие выполнится. Если набор уже был таким же, условие не выполнится.
>       ```json translate=no
>       { "type": "FieldBecameEqual", "field": "pendingReplyFrom", "value": [{"id": "user1"}, {"id": "user2"}] }
>       ```

### Дата

Условия, связанные с датами:

Тип условия | Описание | Дополнительные параметры | Тип данных 
----- | ----- | ----- | -----
`DateEqualCondition` | Дата совпадает | `value` | Строка в формате даты
`DateGreaterCondition` | Позднее | `value` | Строка в формате даты
`DateGreaterOrEqualCondition` | Позднее или равно | `value` | Строка в формате даты
`DateLessCondition` | Раньше | `value` | Строка в формате даты
`DateLessOrEqualCondition` | Раньше или равно | `value` | Строка в формате даты

{% cut "Список полей, для которых применимы условия" %}

Поле | Идентификатор 
----- | ----- 
Статус изменен | statusStartTime
Создано | createdAt
Обновлено | updatedAt
Разрешен | resolvedAt
Последний комментарий | lastCommentUpdatedAt
Дедлайн | deadline
Дата начала | start
Дата завершения | end

{% endcut %}

> Примеры:
> 1. Триггер сработает, если в поле «Создано» указана дата позднее 28 октября 2023.
>       ```json translate=no
>       { "type": "DateGreaterCondition", "field": "createdAt", "value": "2023-10-28T09:25:00"}
>       ```
> 1. Триггер сработает, если в поле «Дата завершения» указана дата раньше либо равная 28 октября 2023.
>       ```json translate=no
>       { "type": "DateLessOrEqualCondition", "field": "end", "value": "2023-10-28T09:25:00"}
>       ```

### Группы пользователей

Условия, связанные с группами пользователей:

Тип условия | Описание | Дополнительные параметры | Тип данных 
----- | ----- | ----- | -----
`UserInGroups` | Пользователь входит в одну из групп | `value` | Строка или Массив строк
`UserNotInGroups` | Пользователь не входит ни в одну из групп | `value` | Строка или Массив строк

{% cut "Список полей, для которых применимы условия" %}

Поле | Идентификатор 
----- | ----- 
Автор | createdBy
Исполнитель | assignee
Изменил | updatedBy
Решивший | resolvedBy
QA-инженер | qaEngineer

{% endcut %}

Примеры:
> 1. Триггер сработает, если пользователь, создавший задачу, входит в группу c идентификатором `1`.
>       ```json translate=no
>       {"type": "UserInGroups", "field": "createdBy","value": "1"}
>       ```
> 1. Триггер сработает, если пользователь, создавший задачу, не входит в группу c идентификатором `1`.
>       ```json translate=no
>       {"type": "UserNotInGroups", "field": "createdBy","value": ["1", "4"]}
>       ```

### Количество элементов

Условия, связанные с количеством элементов:

Тип условия | Описание | Дополнительные параметры | Тип данных 
----- | ----- | ----- | ----- 
`Container.SizeGreater` | Количество элементов больше | `value` | Число
`Container.SizeGreaterOrEquals` | Количество элементов больше или равно | `value` | Число
`Container.SizeLess` | Количество элементов меньше | `value` | Число
`Container.SizeLessOrEquals` | Количество элементов меньше или равно | `value` | Число
`Container.SizeNotEquals` | Количество элементов не равно | `value` | Число
`Container.SizeEquals` | Количество элементов равно | `value` | Число
`ContainerContainsNone` | Не содержит ни одного элемента | <ul><li>`value`</li><li>`noMatchBefore`</li></ul> | <ul><li>Массив</li><li>Логический</li></ul>
`ContainerContainsAll` | Содержит все элементы | <ul><li>`value`</li><li>`noMatchBefore`</li></ul> | <ul><li>Массив</li><li>Логический</li></ul>
`ContainerContainsAny` | Содержит любой из элементов | <ul><li>`value`</li><li>`noMatchBefore`</li></ul> | <ul><li>Массив</li><li>Логический</li></ul>

{% cut "Список полей, для которых применимы условия" %}

Поле | Идентификатор 
----- | ----- 
Наблюдатели | followers
Доступ | access
Теги | tags
Компоненты | components
Найдено в версиях | affectedVersions
Исправить в версиях | fixVersions
Проголосовали | votedBy
Доски | boards
Нужен ответ пользователя | pendingReplyFrom
Спринт | sprint
Копия | emailCc
Кому | emailTo
Рассылки | followingMaillists

{% endcut %}

Примеры:
> 1. Триггер сработает, если количество голосов больше либо равно пяти.
>       ```json translate=no
>       { "type": "Container.SizeGreaterOrEquals", "field": "votedBy", "value": 5 }
>       ```
> 1. Триггер сработает, если компонентов ровно пять.
>       ```json translate=no
>       { "type": "Container.SizeEquals", "field": "components", "value": 5 }
>       ```
> 1. Триггер сработает, если поле «Наблюдатели» когда-либо содержало любое из значений `user11` или `user12`.
>       ```json translate=no
>       { "type": "ContainerContainsAll", "field": "followers", "value": ["user11", "user22"], "noMatchBefore": true }
>       ```


### Числовые значения

Условия, связанные с числовыми значениями:

Тип условия | Описание | Дополнительные параметры | Тип данных 
----- | ----- | ----- | ----- 
`GreaterCondition` | больше | `value` | Число
`GreaterOrEqualCondition` | больше или равно | `value` | Число
`LessCondition` | меньше | `value` | Число
`LessOrEqualCondition` | меньше или равно | `value` | Число
`BecameGreaterCondition` | стало больше | `value` | Число
`BecameGreaterOrEqualCondition` | стало больше или равно | `value` | Число
`BecameLessCondition` | стало меньше | `value` | Число
`BecameLessOrEqualCondition` | стало меньше или равно | `value` | Число

{% cut "Список полей, для которых применимы условия" %}

Поле | Идентификатор 
----- | ----- 
Проголосовало | votes
Комментариев без сообщения | commentWithoutExternalMessageCount
Комментариев с сообщением | commentWithExternalMessageCount
Суммарный процент участия | participantPercentsTotal
Возможно спам | possibleSpam
Первоначальная оценка | originalEstimation
Оценка | estimation
Затрачено времени | spent
Story Points | storyPoints

{% endcut %}

Примеры:
> 1. Триггер сработает, если значение поля «Story Points» меньше или равно пяти.
>       ```json translate=no
>       { "type": "LessOrEqualCondition", "field": "storyPoints", "value": 5 }
>       ```
> 1. Триггер сработает, если значение поля «Проголосовало» стало больше пяти.
>       ```json translate=no
>       { "type": "BecameGreaterCondition", "field": "votes", "value": 6 }
>       ```


### Строковые значения

Условия, связанные со строковыми значениями:

Тип условия | Описание | Дополнительные параметры | Тип данных 
----- | ----- | ----- | ----- 
`ContainsNoneOfStrings` | Не содержит ни одного из фрагментов | <ul><li>`value`</li><li>`ignoreCase`</li></ul> | <ul><li>Массив</li><li>Логический</li></ul>
`FieldEqualsString` | Равно строке | <ul><li>`value`</li><li>`ignoreCase`</li></ul> | <ul><li>Строка</li><li>Логический</li></ul>
`ContainsAnyOfStrings` | Содержит любой из фрагментов | <ul><li>`value`</li><li>`ignoreCase`</li></ul> | <ul><li>Массив</li><li>Логический</li></ul>

{% cut "Список полей, для которых применимы условия" %}

Поле | Идентификатор 
----- | ----- 
Ключ | key
Задача | summary
Описание | description
От | emailFrom
Создано по письму на адрес | emailCreatedBy

{% endcut %}

Примеры:
> 1. Триггер сработает, если описание задачи не содержит значений `Test task` и `12345` в любых регистре и разметке.
>       ```json translate=no
>       { "type": "ContainsNoneOfStrings", "field": "description", "value": ["Test task", "12345"], "ignoreCase": true }
>       ```
> 1. Триггер сработает, если название задачи — `New-Task`.
>       ```json translate=no
>       { "type": "FieldEqualsString", "field": "summary", "value": "New-Task", "ignoreCase": false }
>       ```
