Формат данных
Доска питается четырьмя JSON-файлами. Ниже — их схема и назначение каждого поля. Набор демонстрационный: имена, задачи и сроки в нём вымышлены.
Доска — board.json
Единственный объект верхнего уровня. Содержит описание спринта, колонки и все задачи разом — пагинации здесь нет, набор маленький.
{
"object": "board",
"url": "/api/v1/board",
"id": "brd_main",
"name": "Продуктовая доска",
"sprint": {
"id": "spr_31",
"name": "Спринт 31",
"starts_at": "2026-07-13",
"ends_at": "2026-07-26"
},
"updated_at": "2026-07-21T09:14:52Z",
"columns": [ … 4 объекта … ],
"tasks": [ … 22 объекта … ]
}
| Поле | Тип | Назначение |
|---|---|---|
object | строка | Тип сущности. Всегда board. |
url | строка | Канонический путь ресурса. |
sprint | объект | Название и границы периода. Показывается в шапке. |
updated_at | ISO 8601 | Момент снимка. Служит «сегодняшним днём» при расчёте просрочки. |
columns | массив | Колонки в порядке отрисовки. |
tasks | массив | Все задачи доски. |
Колонка
{ "id": "doing", "name": "В работе", "color": "#3b5bdb", "wip_limit": 6 }
wip_limit равен null, если ограничения нет — тогда счётчик показывает просто число задач без дроби.
Задача
{
"id": "tsk_4c1",
"key": "ENG-412",
"title": "Вынести обработку вебхуков в отдельную очередь",
"column": "doing",
"department": "dep_eng",
"assignee": "usr_ds",
"priority": 1,
"tags": ["backend", "инфра"],
"due": "2026-07-24",
"estimate": 8
}
| Поле | Тип | Назначение |
|---|---|---|
key | строка | Человекочитаемый номер. Префикс совпадает с key отдела. |
column | строка | Ссылка на columns[].id. Определяет, в какой колонке карточка. |
department | строка | Ссылка на departments[].id. По нему работает фильтр отделов. |
assignee | строка | Ссылка на members[].id. Неизвестный идентификатор рисуется как «не назначен». |
priority | 1 · 2 · 3 | Высокий, средний, низкий. Других значений в наборе нет. |
tags | массив строк | Свободные метки. В наборе 20 различных, регистр не нормализуется. |
due | дата | Срок. Сравнивается с updated_at доски, не с текущей датой. |
estimate | число | Оценка в часах. Хранится, но в интерфейсе пока не показывается. |
Отделы — departments.json
Коллекция в конверте со счётчиком продолжения. Четыре отдела.
{
"object": "list",
"url": "/api/v1/departments",
"has_more": false,
"data": [
{ "id": "dep_eng", "key": "ENG", "name": "Разработка", "members": 9, "lead": "usr_ak" },
…
]
}
lead ссылается на участника. Поле members — размер отдела; в members.json перечислены только те, на кого назначены задачи, поэтому список короче суммы.
Участники — members.json
Тот же конверт. Девять записей.
{ "id": "usr_ak", "name": "Анна Ковалёва", "initials": "АК",
"color": "#3b5bdb", "department": "dep_eng", "role": "Тимлид" }
Аватар собирается на лету из initials и color — изображений в наборе нет.
Карточка задачи — tasks/<id>.json
Отдельный файл на каждую задачу. Базовые поля повторяют запись из доски, к ним добавляются описание, чек-лист, обсуждение и история. Дублирование не ручное: карточки собираются из board.json, поэтому разъехаться источники не могут.
{
"object": "task",
"url": "/api/v1/tasks/tsk_4c1",
… базовые поля задачи …,
"column_name": "В работе",
"description": "Обработка входящих вебхуков сейчас идёт синхронно…",
"checklist": [
{ "id": "chk_4c1_1", "text": "Схема очереди и формат сообщения", "done": true }
],
"checklist_done": 2,
"checklist_total": 5,
"comments": [
{ "id": "cmt_4c1_1", "author": "usr_ak",
"at": "2026-07-15T11:02:00Z", "body": "Давай сразу заложим dead-letter…" }
],
"comment_count": 4,
"activity": [
{ "at": "2026-07-15T09:20:00Z", "actor": "usr_ds", "action": "moved",
"from": "backlog", "from_name": "Бэклог", "to": "doing", "to_name": "В работе" }
]
}
| Поле | Назначение |
|---|---|
column_name | Название колонки строкой — чтобы карточку можно было отрисовать, не загружая доску. |
checklist[].done | Отметка выполнения. Счётчики checklist_done и checklist_total посчитаны заранее. |
comments[].author | Ссылка на members[].id. Имя и роль подставляются на клиенте. |
activity[].action | created, assigned, moved или commented. У moved есть from/to с готовыми названиями колонок. |