# Создать регулярную задачу

> Создаёт правило и сразу первую задачу со сроком startsOn. Следующие задачи получают сроки по правилу rrule и появляются в 8:00 по времени команды за leadDays дней до срока; исполнители получают уведомления как обычно.

export default function Layout(props) {
  const { OpenAPIPage } = props.components ?? {};
  return (
    <>
      {props.children}
      ## Создать регулярную задачу

`POST /api/v1/tasks/recurrences`

Создаёт правило и сразу первую задачу со сроком startsOn. Следующие задачи получают сроки по правилу rrule и появляются в 8:00 по времени команды за leadDays дней до срока; исполнители получают уведомления как обычно.

**Авторизация:** dpop или oauth2: `tasks:write`

**Тело запроса** (`application/json`, обязательное): object
- `acceptance`: string, nullable — Критерии приёмки
- `assignees`: массив object или object — Исполнители будущих задач: люди и агент
- `description`: string, nullable — Описание будущих задач
- `goal`: string, nullable — Цель
- `leadDays`: integer — За сколько дней до срока создавать задачу; 0 — в день срока
- `observers`: массив object — Наблюдатели
  - `observerId`: string, обязательное — Идентификатор наблюдателя
  - `observerName`: string, обязательное — Отображаемое имя наблюдателя
- `priority`: "low" | "medium" | "high" | "urgent" — Приоритет задачи
- `rrule`: string, обязательное — Правило повторения RRULE (RFC 5545) без DTSTART, как у событий календаря: FREQ=DAILY\|WEEKLY\|MONTHLY\|YEARLY, INTERVAL, BYDAY, UNTIL, COUNT. Даты повторов — сроки задач
- `startsOn`: string, обязательное — Срок первой задачи — точка отсчёта повторов, YYYY-MM-DD
- `tags`: массив string — Теги
- `taskType`: string, nullable — Тип задачи
- `timezone`: string — Часовой пояс команды, IANA
- `title`: string, обязательное — Название будущих задач

**Ответы**

- `201` — Создано (`application/json`, object)
  - `recurrence`: TaskRecurrence, обязательное
    - `acceptance`: string, nullable, обязательное — Критерии приёмки
    - `assignees`: массив object или object, обязательное — Исполнители будущих задач
    - `createdAt`: string, обязательное — Создано, ISO 8601
    - `createdBy`: string, обязательное — Автор правила; от его имени создаются задачи
    - `createdCount`: integer, обязательное — Сколько задач уже создано
    - `description`: string, nullable, обязательное — Описание
    - `goal`: string, nullable, обязательное — Цель
    - `id`: string (uuid), обязательное — Идентификатор регулярной задачи
    - `lastCreatedAt`: string, nullable, обязательное — Когда создана последняя задача, ISO 8601
    - `lastDueOn`: string, nullable, обязательное — Срок последней созданной задачи, YYYY-MM-DD
    - `leadDays`: integer, обязательное — За сколько дней до срока создаётся задача; 0 — в день срока
    - `nextCreateAt`: string, nullable, обязательное — Когда появится следующая задача, ISO 8601
    - `nextDueOn`: string, nullable, обязательное — Срок следующей задачи, YYYY-MM-DD; null — повторы закончились
    - `observers`: массив object, обязательное — Наблюдатели
      - `observerId`: string, обязательное — Идентификатор наблюдателя
      - `observerName`: string, обязательное — Отображаемое имя наблюдателя
    - `priority`: "low" | "medium" | "high" | "urgent", обязательное — Приоритет задачи
    - `rrule`: string, обязательное — Правило повторения RRULE, как у событий календаря; даты повторов — сроки задач
    - `startsOn`: string, обязательное — Срок первой задачи, YYYY-MM-DD
    - `state`: "active" | "paused" | "finished", обязательное — active — задачи создаются по правилу, paused — правило на паузе, finished — повторы закончились
    - `tags`: массив string, обязательное — Теги
    - `taskType`: string, nullable, обязательное — Тип задачи
    - `teamId`: string, обязательное — Команда
    - `timezone`: string, обязательное — Часовой пояс команды
    - `title`: string, обязательное — Название будущих задач
    - `upcoming`: массив string, обязательное — Сроки ближайших задач, YYYY-MM-DD; пусто на паузе и после окончания
    - `updatedAt`: string, обязательное — Обновлено, ISO 8601
  - `task`: Task, обязательное
    - `acceptance`: string, nullable, обязательное — Критерии приёмки, по которым результат проверяют
    - `assignees`: массив TaskAssignee — Исполнители
      - `agentId`: string, nullable, обязательное — Идентификатор агента-исполнителя; null — исполнитель человек
      - `assigneeName`: string, обязательное — Отображаемое имя исполнителя
      - `createdAt`: string, обязательное — Когда назначен, ISO 8601
      - `id`: string (uuid), обязательное — Идентификатор записи назначения
      - `taskId`: string, обязательное — Идентификатор задачи
      - `userId`: string, nullable, обязательное — Идентификатор пользователя-исполнителя
    - `attachments`: массив TaskAttachment — Вложения
      - `createdAt`: string, обязательное — Когда загружено, ISO 8601
      - `fileName`: string, обязательное — Имя файла
      - `fileSize`: number, обязательное — Размер в байтах
      - `id`: string (uuid), обязательное — Идентификатор вложения
      - `mimeType`: string, обязательное — MIME-тип
      - `taskId`: string, обязательное — Идентификатор задачи
      - `uploadedBy`: string, обязательное — Кто загрузил
    - `awaitingResponse`: boolean, обязательное — Флаг «ожидает ответа»
    - `comments`: массив TaskComment — Комментарии
      - `authorAgentId`: string, nullable, обязательное — Агент, написавший комментарий; null — комментарий человека
      - `authorUserId`: string, обязательное — Автор комментария или тот, по чьему поручению писал агент
      - `createdAt`: string, обязательное — Когда добавлен, ISO 8601
      - `id`: string (uuid), обязательное — Идентификатор комментария
      - `mentionedUserIds`: массив string, обязательное — Упомянутые пользователи
      - `taskId`: string, обязательное — Идентификатор задачи
      - `text`: string, обязательное — Текст
    - `createdAt`: string, обязательное — Создана, ISO 8601
    - `createdBy`: string, обязательное — Автор задачи
    - `description`: string, nullable, обязательное — Описание
    - `dueDate`: string, nullable, обязательное — Срок выполнения: дата YYYY-MM-DD
    - `goal`: string, nullable, обязательное — Цель: какой результат считается выполнением
    - `id`: string (uuid), обязательное — Идентификатор задачи (UUID)
    - `links`: массив TaskLink — Ссылки
      - `createdAt`: string, обязательное — Когда добавлена, ISO 8601
      - `createdBy`: string, обязательное — Кто добавил
      - `id`: string (uuid), обязательное — Идентификатор ссылки
      - `taskId`: string, обязательное — Идентификатор задачи
      - `title`: string, nullable, обязательное — Подпись; null — не задана
      - `url`: string, обязательное — Адрес
    - `observers`: массив TaskObserver — Наблюдатели
      - `id`: string (uuid), обязательное — Идентификатор записи наблюдателя
      - `observerName`: string, обязательное — Имя наблюдателя
      - `taskId`: string, обязательное — Идентификатор задачи
    - `parentId`: string, nullable, обязательное — Родительская задача
    - `position`: string, обязательное — Позиция в колонке (лексикографический порядок)
    - `priority`: string, обязательное — Приоритет: low \| medium \| high \| urgent
    - `recurrenceId`: string, nullable, обязательное — Регулярная задача, по правилу которой создана; null — обычная
    - `status`: string, обязательное — Статус: request \| queue \| inProgress \| approval \| completed
    - `subtasks`: массив TaskSubtask — Подзадачи в порядке позиции
      - `acceptance`: string, nullable, обязательное — Критерии приёмки, по которым результат проверяют
      - `assignees`: массив TaskAssignee — Исполнители
      - `attachments`: массив TaskAttachment — Вложения
      - `awaitingResponse`: boolean, обязательное — Флаг «ожидает ответа»
      - `comments`: массив TaskComment — Комментарии
      - `completed`: boolean, обязательное — Выполнена: статус completed
      - `createdAt`: string, обязательное — Создана, ISO 8601
      - `createdBy`: string, обязательное — Автор задачи
      - `description`: string, nullable, обязательное — Описание
      - `dueDate`: string, nullable, обязательное — Срок выполнения: дата YYYY-MM-DD
      - `goal`: string, nullable, обязательное — Цель: какой результат считается выполнением
      - `id`: string (uuid), обязательное — Идентификатор задачи (UUID)
      - `links`: массив TaskLink — Ссылки
      - `observers`: массив TaskObserver — Наблюдатели
      - `parentId`: string, nullable, обязательное — Родительская задача
      - `position`: string, обязательное — Позиция в колонке (лексикографический порядок)
      - `priority`: string, обязательное — Приоритет: low \| medium \| high \| urgent
      - `recurrenceId`: string, nullable, обязательное — Регулярная задача, по правилу которой создана; null — обычная
      - `status`: string, обязательное — Статус: request \| queue \| inProgress \| approval \| completed
      - `tags`: массив TaskTag — Теги
      - `taskType`: string, nullable, обязательное — Тип задачи
      - `teamId`: string, обязательное — Команда-владелец
      - `text`: string, обязательное — Текст пункта чек-листа, совпадает с title
      - `title`: string, обязательное — Название
      - `updatedAt`: string, обязательное — Обновлена, ISO 8601
      - `userId`: string, nullable, обязательное — Основной исполнитель
    - `tags`: массив TaskTag — Теги
      - `createdAt`: string, обязательное — Когда добавлен, ISO 8601
      - `id`: string (uuid), обязательное — Идентификатор записи тега
      - `tag`: string, обязательное — Тег
      - `taskId`: string, обязательное — Идентификатор задачи
    - `taskType`: string, nullable, обязательное — Тип задачи
    - `teamId`: string, обязательное — Команда-владелец
    - `title`: string, обязательное — Название
    - `updatedAt`: string, обязательное — Обновлена, ISO 8601
    - `userId`: string, nullable, обязательное — Основной исполнитель
- `400` — Некорректный запрос: не прошла валидация параметров или тела (`application/problem+json`, ProblemDetails)
- `401` — Токен отсутствует, недействителен или истёк (`application/problem+json`, ProblemDetails)
- `403` — Недостаточно прав или scope (`application/problem+json`, ProblemDetails)

    </>
  );
}
