---
metadata:
  - name: generator
    content: Diplodoc Platform v5.54.5
  - 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-ref/dashboards/create-widget.md
  - https://yandex.ru/support/tracker/ru/api-ref/dashboards/create-widget.md
  - href: ru/api-ref/dashboards/create-widget.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/support/tracker/ru/llms.txt


# Создать виджет «Время цикла»

Запрос позволяет добавить виджет с [диаграммой «Время цикла»](https://yandex.ru/support/tracker/user/cycle-time.html) на уже существующий дашборд.

<div class="request_example method_post yfm-clipboard">
    <p>POST</p>
    <pre><code>https://api.tracker.yandex.net/v3/dashboards/&lt;id_дашборда>/widgets/cycleTime</code></pre>
    <button class="yfm-clipboard-button"><svg width="16" height="16" viewBox="0 0 24 24" class="yfm-clipboard-icon" data-animation="15">
    <path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path>
    <path stroke="currentColor" fill="transparent" strokewidth="1.5" d="M9.5 13l3 3l5 -5" visibility="hidden">
        <animate id="visibileAnimation-15" attributeName="visibility" from="hidden" to="visible" dur="0.2s" fill="freeze" begin=""></animate>
        <animate id="hideAnimation-15" attributeName="visibility" from="visible" to="hidden" dur="1s" begin="visibileAnimation-15.end+1" fill="freeze"></animate>
    </path>
</svg>
</button>
</div>

<!-- source: ru/api-ref/_assets/style/methods.md -->

<!-- endsource: ru/api-ref/_assets/style/methods.md -->

## Формат запроса {#query}

Перед выполнением запроса [получите доступ к API](https://yandex.ru/support/tracker/ru/api-ref/access.md).

Чтобы создать виджет, используйте HTTP-запрос с методом `POST`. В теле запроса укажите параметры в формате JSON.

```json translate=no
POST /v3/dashboards/<id_дашборда>/widgets/cycleTime
Host: api.tracker.yandex.net
Authorization: OAuth <OAuth-токен>
Content-Type: application/json
X-Org-ID или X-Cloud-Org-ID: <идентификатор_организации>

{
    "description": "<название_виджета>",
    "query": "Assignee: username1@",
    "filter": {"queue": "TEST", "assignee": "username2"}
    "filterId" : 1234,
    "fromStatuses": [
        {
            "key": "open"
        }
    ],
    "toStatuses": [
        {
            "key": "closed"
        }
    ],
    "excludedStatuses": [<исключаемые_статусы>],
    "includedStatuses": [<включаемые_статусы>],
    "bucket": {
        "unit": "days",
        "count": 1
    },
    "calendar": 123,
    "lines": {
        "movingAverage": true,
        "standardDeviation": true,
        "percentile": [75, 83, 90],
        "cakePercentile": 85
    },
    "start": "now()-2w",
    "end": "now()-2d",
    "mode": "common-lines",
    "autoUpdatable": true
}
```

<!-- source: ru/api-ref/_includes/headings.md -->
{% cut "Заголовки" %}

* `Host`: адрес узла, предоставляющего API.

* <!-- source: ru/api-ref/_includes/authorization.md -->
  `Authorization`: токен для авторизации в одном из форматов:

    - `OAuth <OAuth-токен>` при авторизации по протоколу OAuth 2.0. [Читать подробнее](https://yandex.ru/support/tracker/ru/api-ref/access.md#about_OAuth)

    - `Bearer <IAM-токен>` при авторизации с помощью IAM-токена — если к Трекеру привязана организация Yandex Identity Hub. [Читать подробнее](https://yandex.ru/support/tracker/ru/api-ref/access.md#iam-token)
  <!-- endsource: ru/api-ref/_includes/authorization.md -->

* <!-- source: ru/api-ref/_includes/content-type-json.md -->
  `Content-Type`: формат тела запроса. Должен иметь значение `application/json`.
  <!-- endsource: ru/api-ref/_includes/content-type-json.md -->


* <!-- source: ru/api-ref/_includes/org-id.md -->
  `X-Org-ID` или `X-Cloud-Org-ID`: идентификатор организации.

  - если к Трекеру привязана организация Яндекс 360 для бизнеса, используйте заголовок `X-Org-ID`,

  - если к Трекеру привязана организация Yandex Identity Hub, используйте заголовок `X-Cloud-Org-ID`.
  <!-- endsource: ru/api-ref/_includes/org-id.md -->

  <!-- source: ru/api-ref/_includes/org-id.md -->
  Чтобы узнать идентификатор организации, перейдите на страницу **Администрирование** → [**Организации**](https://tracker.yandex.ru/admin/orgs) и скопируйте значение поля **идентификатор**.
  <!-- endsource: ru/api-ref/_includes/org-id.md -->


{% endcut %}
<!-- endsource: ru/api-ref/_includes/headings.md -->

{% cut "Параметры тела запроса" %}

Тело запроса содержит параметры виджета с диаграммой «Время цикла».

**Обязательные параметры**

Параметр | Описание | Тип данных
-------- | -------- | ----------
description | Название виджета. | Строка

**Дополнительные параметры**

{% note info "" %}

Если в теле запроса одновременно указаны параметры `filterId`, `query` или `filter`, то приоритетный источник задач для виджета будет установлен в следующем порядке: `filterId` (сохраненный фильтр), `query` (язык запросов), `filter` (фильтр по параметрам).

{% endnote %}

Параметр | Описание | Тип данных
-------- | -------- | ----------
query | Фильтр задач на [языке запросов](https://yandex.ru/support/tracker/user/query-filter.html). | Строка
filter | Фильтр задач по параметрам в формате `{"<поле>": "<значение>"}`. | Строка
filterId | Идентификатор [сохраненного фильтра](*filter). | Число
fromStatuses | Ключ статуса, с которого началась работа над задачей. Время в указанном статусе не учитывается. По умолчанию расчет начинается с первого статуса в истории задачи. | Массив
toStatuses | Ключ статуса, на котором работа над задачей завершилась. Если задано несколько статусов, то будет использован самый поздний, в который переходила задача. По умолчанию расчет выполняется до последнего статуса в истории задачи. | Массив
excludedStatuses | Статусы, время нахождения в которых необходимо убрать из расчетов. | Массив
includedStatuses | статусы, время нахождения в которых необходимо добавить в расчеты. | Массив
[bucket](#bucket) | Величина шага. Значение по умолчанию — 7 дней. | Объект
calendar | Идентификатор [календаря](https://yandex.ru/support/tracker/manager/schedule.html) для учета только рабочего времени. Если не задан, используется обычный календарь. | Число
[lines](#lines) | Настройки отображения оси времени. | Объект
start | Формула для начала расчета. Например, расчет за две последние недели: `now() - 2w`. Значение по умолчанию — 2 года. | Строка
end | Формула для окончания расчета. Например, для окончания расчета за два дня до текущей даты: `now() - 2d`. Значение по умолчанию — `now()`.| Строка
mode | Режим отображения данных: <ul><li>`common-lines` — показывать выбранные графики (перцентиль, стандартное отклонение, скользящее среднее);</li><li>`common-lines-and-points` — показывать для выбранных графиков точки, соответствующие задачам;</li><li>`status-lines` — показывать выбранные графики для каждого из статусов.</li> | Строка
autoUpdatable | Признак автоматического обновления диаграммы. | Логический

**Поля объекта** `bucket` {#bucket}

Параметр | Описание | Тип данных
-------- | -------- | ----------
unit | Период группировки дат: <ul><li>`days` — дни;</li><li>`weeks` — недели;</li><li>`months` — месяцы;</li><li>`sprints` — спринты.</li></ul> | Строка
count | Количество периодов с выбранной группировкой. Если в поле `unit` выбрано `sprints`, то количество периодов всегда равно 1. | Число
boardId | Идентификатор доски задач. Доступно, если в поле `unit` выбрано `sprints`. | Строка

**Поля объекта** `lines` {#lines}

Параметр | Описание | Тип данных
-------- | -------- | ----------
movingAverage | Скользящее среднее. Опция, которая добавляет на график линию усредненного значения времени. С ее помощью можно увидеть, как задача проходит цикл по медиане. | Логический
standardDeviation | Стандартное отклонение. Опция, которая добавляет на график полосу среднеквадратичного отклонения. С ее помощью вы можете оценить, насколько широко значения рассеяны от среднего значения. | Логический
percentile | Процент значений в выборке данных, относительно которого вычисляется перцентиль. | Массив
cakePercentile | Значение перцентиля для построения диаграммы, в которой каждый статус отображается отдельно. | Число

{% endcut %}

## Формат ответа {#answer}

{% list tabs %}

- Запрос выполнен успешно

    <!-- source: ru/api-ref/_includes/answer-201.md -->
    В случае успешного выполнения запроса API возвращает ответ с кодом `201 Created`.
    <!-- endsource: ru/api-ref/_includes/answer-201.md -->

    Тело ответа содержит JSON-объект с параметрами нового виджета.

    ```json translate=no
    {
        "id": 123456,
        "version": 1,
        "createdBy": {
            "self": "https://api.tracker.yandex.net/v3/users/11********",
            "id": "11********",
            "display": "Имя Фамилия",
            "cloudUid": "ajeppa7dgp53********",
            "passportUid": 11********
        },
        "description": "My widget",
        "color": 0,
        "dashboard": {
            "self": "https://api.tracker.yandex.net/v3/dashboards/118899",
            "id": "118899",
            "display": "My dashboard"
        },
        "fromStatuses": [
            {
                "self": "https://api.tracker.yandex.net/v3/statuses/1",
                "id": "1",
                "key": "open",
                "display": "Открыт"
            }
        ],
        "toStatuses": [
            {
                "self": "https://api.tracker.yandex.net/v3/statuses/3",
                "id": "3",
                "key": "resolved",
                "display": "Решен"
            }
        ],
        "bucket": {
            "type": "days",
            "count": 2
        },
        "calendar": {
            "id": "1",
            "display": "Moscow, 11:00−20:00"
        },
        "query": "Queue: TEST Assignee: me()",
        "datasetInfo": {
            "status": "created",
            "buildStartedAt": "2024-04-15T20:58:07.957+0000",
            "builtBy": {
                "self": "https://api.tracker.yandex.net/v3/users/11********",
                "id": "11********",
                "display": "Имя Фамилия",
                "cloudUid": "ajeppa7dgp53********",
                "passportUid": 11********
            }
        },
        "lines": {
            "standardDeviation": true,
            "movingAverage": true,
            "percentile": [
                83.0,
                90.0,
                75.0
            ],
            "cakePercentile": 85.0
        },
        "start": "now()-2w",
        "end": "now()-2d",
        "mode": "common-lines-and-points",
        "self": "https://api.tracker.yandex.net/v3/widgets/123456"
    }
    ```

    {% cut "Параметры ответа" %}

    Параметр | Описание | Тип данных
    -------- | -------- | ----------
    id | Идентификатор виджета. | Число
    version | Версия виджета. Каждое изменение виджета увеличивает номер версии. | Число
    [createdBy](#user) | Объект с информацией о создателе виджета. | Объект
    description | Название виджета. | Строка
    color | Служебный параметр. | Число
    [dashboard](#dashboard) | Объект с информацией о дашборде, на котором размещен виджет. | Объект
    [fromStatuses](#statuses) | Объект с информацией о статусе, с которого началась работа над задачей. | Объект
    [toStatuses](#statuses) | Объект с информацией о статусе, на котором работа над задачей завершилась. | Объект
    [bucket](#bucket-answer) | Объект с информацией о величине шага. | Объект
    [calendar](#calendar) | Объект с информацией о [графике рабочего времени](https://yandex.ru/support/tracker/manager/schedule.html). | Объект
    query \| filter \| filterId | Фильтр задач в выбранном формате. | Строка
    [datasetInfo](#datasetInfo) | Объект с информацией о расчете. | Объект
    [lines](#lines) | Объект с информацией об оси времени. | Объект
    start | Формула для начала расчета. | Строка
    end | Формула для окончания расчета. | Строка
    mode | Режим отображения данных. | Строка
    self | Адрес ресурса API, который содержит параметры виджета. | Строка

    **Поля объекта** `createdBy` и `builtBy` {#user}

    <!-- source: ru/api-ref/_includes/user.md -->
    Параметр | Описание | Тип данных
    ----- | ----- | -----
    self | Адрес ресурса API, который содержит информацию о пользователе. | Строка
    id | Идентификатор пользователя. | Строка
    display | Отображаемое имя пользователя. | Строка
    passportUid | Уникальный идентификатор аккаунта пользователя в организации Яндекс 360 для бизнеса и Яндекс ID. | Число
    cloudUid | Уникальный идентификатор пользователя в Yandex Identity Hub. | Строка
    <!-- endsource: ru/api-ref/_includes/user.md -->

    **Поля объекта** `dashboard` {#dashboard}

    Параметр | Описание | Тип данных
    -------- | -------- | ----------
    self | Адрес ресурса API, который содержит параметры дашборда. | Строка
    id | Идентификатор дашборда. | Строка
    display | Название дашборда. | Строка

    **Поля объекта** `bucket` {#bucket-answer}

    Параметр | Описание | Тип данных
    -------- | -------- | ----------
    type | Период группировки дат: <ul><li>`days` — дни;</li><li>`weeks` — недели;</li><li>`months` — месяцы;</li><li>`sprints` — спринты.</li></ul> | Строка
    count | Количество периодов с выбранной группировкой. Если в поле `unit` выбрано `sprints`, то количество периодов всегда равно 1.| Число
    boardId | Идентификатор доски задач. Доступно, если в поле `unit` выбрано `sprints`. | Строка

    **Поля объекта** `calendar` {#calendar}

    Параметр | Описание | Тип данных
    -------- | -------- | ----------
    id | Идентификатор графика рабочего времени. | Строка
    display | Название графика рабочего времени. | Строка

    **Поля объекта** `datasetInfo` {#datasetInfo}

    Параметр | Описание | Тип данных
    -------- | -------- | ----------
    status | Статус расчета. | Строка
    buildStartedAt | Дата и время запуска расчета в формате: ```YYYY-MM-DDThh:mm:ss.sss±hhmm```. | Строка
    [builtBy](#user) | Объект с информацией о пользователе, создавшем виджет. | Объект

    **Поля объекта** `lines` {#lines}

    Параметр | Описание | Тип данных
    -------- | -------- | ----------
    standardDeviation | Признак отображения графика стандартного отклонения. | Логический
    movingAverage | Признак отображения графика скользящего среднего. | Логический
    percentile | Список значений в выборке данных в процентах, относительно которых вычисляется перцентиль. | Массив
    cakePercentile | Значение перцентиля для построения диаграммы, в которой каждый статус отображается отдельно. | Число

    {% endcut %}

- Запрос выполнен с ошибкой

    Если запрос не был успешно обработан, API возвращает ответ с кодом ошибки:

    <!-- source: ru/api-ref/_includes/answer-error-400.md -->
    400
    :   Один или несколько параметров запроса имеют недопустимое значение.
    <!-- endsource: ru/api-ref/_includes/answer-error-400.md -->

    <!-- source: ru/api-ref/_includes/answer-error-403.md -->
    403
    :   У вас не хватает прав на выполнение этого действия. Наличие прав можно перепроверить в интерфейсе Трекера — для выполнения действия при помощи API и через интерфейс требуются одинаковые права.
    <!-- endsource: ru/api-ref/_includes/answer-error-403.md -->

    <!-- source: ru/api-ref/_includes/answer-error-404.md -->
    404
    :   Запрошенный объект не был найден. Возможно, вы указали неверное значение идентификатора или ключа объекта.
    <!-- endsource: ru/api-ref/_includes/answer-error-404.md -->

    <!-- source: ru/api-ref/_includes/answer-error-422.md -->
    422 
    :   Ошибка валидации JSON, запрос отклонен.
    <!-- endsource: ru/api-ref/_includes/answer-error-422.md -->

    <!-- source: ru/api-ref/_includes/answer-error-500.md -->
    500
    :   Внутренняя ошибка сервиса. Попробуйте повторно отправить запрос через некоторое время.
    <!-- endsource: ru/api-ref/_includes/answer-error-500.md -->

    <!-- source: ru/api-ref/_includes/answer-error-503.md -->
    503
    :   Сервис API временно недоступен.    
    <!-- endsource: ru/api-ref/_includes/answer-error-503.md -->

{% endlist %}

[*filter]: Фильтр — это инструмент для поиска задач по условиям. Например, можно найти задачи в нужной очереди, где вы автор или исполнитель.