Перейти к содержимому

Фильтрация задач

GET /public/v1/tasks возвращает все задачи в рамках доступа (тот же набор, что и табличный вид проекта в веб-приложении) и сужает выборку query-фильтрами. На этой странице — как фильтры комбинируются и готовые рецепты типовых запросов.

Во всех примерах:

Terminal window
BASE="https://api.bordio.com/public/v1"
AUTH='Authorization: Bearer brd_sk_live_...'
PROJECT="proj_6594a1b2c3d4e5f6a7b8c9d1"
  • Разные параметры → AND. Каждый добавленный параметр сужает результат.
  • Несколько значений в одном параметре → OR. Значения через запятую: priority=high,critical совпадает с любым из двух.
  • Не переданные параметры ничего не ограничивают — без фильтров вернутся все задачи.
Параметр Значения Примечания
priority CSV из lowest, low, medium, high, critical и/или none none = задачи без приоритета
task_status_id CSV из id task_status_… Id берутся из Definitions
state open | closed Группирует статусы по состоянию — не нужно перечислять их поимённо. С view=by_task означает «есть ли работа»
task_type_id CSV из id task_type_…
assignee_id CSV из id user_… и/или none none = задачи без исполнителя
date_from YYYY-MM-DD или ISO-8601 datetime Нижняя граница (включительно) по дню, на который назначена задача, — поле date, а не дедлайн
date_to YYYY-MM-DD или ISO-8601 datetime Верхняя граница того же дня. Любая из границ переводит список в порядок по дате, от ранних к поздним
due_date_from YYYY-MM-DD или ISO-8601 datetime Нижняя граница диапазона дедлайна (включительно)
due_date_to YYYY-MM-DD или ISO-8601 datetime Верхняя граница диапазона дедлайна (включительно)
due_date none Только задачи без дедлайна; несовместим с границами диапазона
tag_id CSV из id tag_… Совпадают задачи, у которых есть любой из тегов
view by_task | by_date Меняет то, что считается одной записью — см. Повторяющиеся задачи в списке
closed_since YYYY-MM-DD или ISO-8601 datetime Только задачи, выполненные не раньше указанного момента; свежевыполненные первыми

Спец-значение none совпадает с задачами, у которых нет исполнителя:

Terminal window
curl "$BASE/tasks?project_id=$PROJECT&assignee_id=none" -H "$AUTH"

none можно смешивать с id пользователей в одном CSV; внутри параметра значения объединяются по OR:

Terminal window
curl "$BASE/tasks?project_id=$PROJECT&assignee_id=user_6594a1b2c3d4e5f6a7b8c9d1,none" -H "$AUTH"

Приоритет опционален, поэтому priority принимает спец-значение none для задач, где он не задан. Как и любое CSV-значение, оно объединяется с остальными по OR — «нет приоритета или low» выражается одним параметром:

Terminal window
curl "$BASE/tasks?project_id=$PROJECT&priority=none,low" -H "$AUTH"

Открытые задачи с высоким или критичным приоритетом

Заголовок раздела «Открытые задачи с высоким или критичным приоритетом»
Terminal window
curl "$BASE/tasks?project_id=$PROJECT&state=open&priority=high,critical" -H "$AUTH"

state — простейший способ разделить открытую и закрытую работу. Если нужны конкретные статусы («В работе», но не «Новая») — используйте task_status_id с id из эндпоинтов definitions.

Обе границы включительны; date-only значения разворачиваются в начало / конец суток (UTC):

Terminal window
curl "$BASE/tasks?project_id=$PROJECT&due_date_from=2026-07-01&due_date_to=2026-07-31" -H "$AUTH"

Можно передать и одну границу — например, всё с дедлайном от сегодня (due_date_from без второй границы) или «просроченные» — открытые задачи, чей срок уже прошёл:

Terminal window
curl "$BASE/tasks?project_id=$PROJECT&state=open&due_date_to=2026-07-17" -H "$AUTH"

Диапазон никогда не совпадёт с задачей, у которой дедлайна нет, поэтому это отдельный фильтр:

Terminal window
curl "$BASE/tasks?project_id=$PROJECT&due_date=none" -H "$AUTH"
Terminal window
curl "$BASE/tasks?project_id=$PROJECT&tag_id=tag_65dcc9c66f2e4e001ab18859,tag_66446ff2dc01cb59f6cbf7a6" -H "$AUTH"

Открытые, высокоприоритетные, ничьи, с дедлайном в этом месяце:

Terminal window
curl "$BASE/tasks?project_id=$PROJECT&state=open&priority=high&assignee_id=none&due_date_from=2026-07-01&due_date_to=2026-07-31" -H "$AUTH"

Фильтры сочетаются с пагинацией как обычно — limit и cursor применяются к отфильтрованному результату (см. Соглашения).

По умолчанию список возвращает разовые задачи плюс отдельные вхождения повторяющихся, которые уже существуют, — те, что кто-то редактировал, завершил или перенёс. Поэтому одна повторяющаяся задача может дать несколько строк, а вхождение, которого никто не касался, не появится вовсе.

Передайте view=by_task, чтобы получить список задач: повторяющаяся задача придёт одной строкой с её правилом и ближайшим вхождением, которым предстоит заняться, а её вхождения отдельными строками выводиться не будут.

Terminal window
curl "$BASE/tasks?project_id=$PROJECT&view=by_task" -H "$AUTH"

В ответе появятся kind, series_id, series_chain_id, recurrence_summary и current_occurrence; см. Повторяющиеся задачи. Без view состав записей не меняется, поэтому существующие интеграции продолжают работать — но новым стоит передавать его явно.

Передайте view=by_date вместе с диапазоном дат, чтобы получить список вхождений: каждый день, на который выпадает повторяющаяся задача, станет отдельной строкой рядом с разовыми задачами этих дней.

Terminal window
curl "$BASE/tasks?project_id=$PROJECT&view=by_date&date_from=2026-09-01&date_to=2026-09-30" -H "$AUTH"

Диапазон здесь обязателен и не может превышать 31 день, порядок — от начала диапазона, а closed_since с этим разрезом не сочетается (400). Подробности и полный список правил: Список вхождений по дням.

Terminal window
curl "$BASE/tasks?project_id=$PROJECT&view=by_task&state=open" -H "$AUTH"

В этом разрезе state отвечает на вопрос «есть ли работа»: разовая задача — по собственному статусу, повторяющаяся — по своим вхождениям: открыта, пока есть открытое, и закрыта, когда их не осталось. Повторяющаяся задача, у которой вхождения закончились, выпадает из списка, даже если статус, с которого начинается каждое её вхождение, — обычный «To do».

Terminal window
curl "$BASE/tasks?project_id=$PROJECT&closed_since=2026-07-28" -H "$AUTH"

Выполненное — другой вопрос, поэтому и запрос другой. Каждое выполненное вхождение это отдельная запись — именно это значит «мы провели стендап во вторник», — поэтому такой список не сочетается с view=by_task: вместе они вернут 400 validation_error. Порядок — по моменту выполнения, свежие первыми; пагинация обычная.

closed_since так же отклоняет state=open с 400, и по той же причине: запрос противоречит сам себе, а пустая страница читалась бы как «ничего не выполнено», а не как «вы попросили невозможное».

due_date_from / due_date_to / due_date — почему три параметра?

Заголовок раздела «due_date_from / due_date_to / due_date — почему три параметра?»

Они отвечают на два разных вопроса:

  • due_date_from / due_date_to выбирают задачи, чей дедлайн попадает в диапазон. Используйте одну границу или обе.
  • due_date=none выбирает задачи, у которых дедлайна нет вовсе. Никаким диапазоном «поле пустое» не выразить, поэтому это отдельный параметр, а не магическое значение диапазона.

Поскольку «нет дедлайна» и «дедлайн в диапазоне» взаимоисключающи, сочетание due_date=none с любой границей вернёт 400 validation_error.

  • Некорректное значение (неизвестный приоритет, кривой формат id, не-дата) → 400 validation_error.
  • Корректный id, которому ничего не соответствует (тег из чужого workspace, удалённый статус) → не ошибка: просто не совпадёт ни одна задача, вернётся пустая страница.
  • Исключение — project_id: проект вне доступа вашего ключа → 404 not_found_error.