Верстак

Документация → Формат данных

Формат данных

Доска питается четырьмя 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_atISO 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. Неизвестный идентификатор рисуется как «не назначен».
priority1 · 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[].actioncreated, assigned, moved или commented. У moved есть from/to с готовыми названиями колонок.

Обновлено 5 августа 2026 года.