Маршруты плана проекта, задач, приемки, комментариев, досок, импорта из Битрикс24 и MS Project в volrix.pm: права, тела запросов и примеры.
Обновлено 16.10.2026
Группа описывает работу внутри проекта: задачи плана (диаграмма Ганта) с датами, связями и прогрессом, назначения исполнителей, сдачу и приемку результата, чек-листы, комментарии и вложения, доски (в том числе загрузка задач из Битрикс24 на доску) и перенос плана из MS Project.
**Что принимает API-ключ.** Доски, связи карточек с CRM и импорт из Битрикс24 (скоупы boards:...) и карточка задачи с чек-листом (/project-tasks, скоуп project_tasks:read). Задачи плана, назначения, приемка, комментарии и импорт проверяют участие в проекте и работают только в сессии пользователя.
Базовый адрес, формат ответов и коды ошибок описаны в статье API: адрес, первый запрос и ответы, выпуск ключа и вход под пользователем - в статье API: вход, токен и API-ключи. В примерах ключ лежит в переменной окружения VOLRIX_API_KEY, токен пользователя - в VOLRIX_TOKEN.
Для сдачи результата используйте маршруты приемки, а не PATCH .../status: переходы приемки попадают в журнал acceptance-log.
Комментарии и вложения общие для нескольких сущностей: /api/v1/{target_type}/{target_id}/comments и /attachments, где target_type - project_task, order, board_card, storage_node или deal.
Мои задачи по всем проектам (сессия). Каждый элемент содержит проект, статус с подписью, плановые даты и признак is_overdue:
curl --fail-with-body -sS \ -H "Authorization: Bearer $VOLRIX_TOKEN" \ "https://ваш-адрес/api/v1/me/tasks-flat"
Импорт плана из MS Project в два шага (сессия): предпросмотр принимает файл .xml (MS Project XML) или .mpp и возвращает preview_token, подтверждение применяет его. strategy - replace (по умолчанию) или append:
curl --fail-with-body -sS -X POST \ -H "Authorization: Bearer $VOLRIX_TOKEN" \ -F "file=@plan.xml" \ "https://ваш-адрес/api/v1/projects/{project_id}/tasks/import-msproject/preview" curl --fail-with-body -sS -X POST \ -H "Authorization: Bearer $VOLRIX_TOKEN" \ -H "Content-Type: application/json" \ -d '{"preview_token": "...", "strategy": "append"}' \ "https://ваш-адрес/api/v1/projects/{project_id}/tasks/import-msproject/confirm"
Доски проекта по ключу (скоуп boards:read):
curl --fail-with-body -sS \ -H "X-Api-Key: $VOLRIX_API_KEY" \ "https://ваш-адрес/api/v1/boards?project_id=7b1e..."
Загрузка задач из Битрикс24 на доску в два шага (скоуп boards:update, у сотрудника - право boards.update и роль «редактор» на доске). Оба запроса получают один и тот же файл выгрузки «Экспорт в Excel»: предпросмотр ничего не пишет и возвращает, как сервер сопоставил статусы, людей и записи CRM, а загрузка применяет решения из поля options (JSON). Чего в options нет, сервер подбирает так же, как в предпросмотре:
curl --fail-with-body -sS -X POST \ -H "X-Api-Key: $VOLRIX_API_KEY" \ -F "file=@tasks.xls" \ "https://ваш-адрес/api/v1/boards/{board_id}/import/bitrix/preview" curl --fail-with-body -sS -X POST \ -H "X-Api-Key: $VOLRIX_API_KEY" \ -F "file=@tasks.xls" \ -F 'options={"statuses": [{"status": "В работе", "new_column_name": "В работе"}], "project_labels": true}' \ "https://ваш-адрес/api/v1/boards/{board_id}/import/bitrix"
Как читать колонку «Доступ»: **скоуп вида users:read** - маршрут принимает API-ключ, если в ключе есть этот скоуп, а у сотрудника, выпустившего ключ, есть такое же право в роли (users.read). Если скоупов несколько через «+», нужны все. **Только сессия** - нужен заголовок Authorization: Bearer, API-ключ получит 403. **Без авторизации** - заголовки не нужны. Доступ к конкретному объекту (участие в проекте, права на папку Диска) сервер проверяет дополнительно. Пути в таблицах указаны полностью, от корня сервера.
**Как работает импорт.** Принимается выгрузка Битрикс24 «Экспорт в Excel»: HTML-таблица с расширением .xls, файл .xlsx или CSV, до 10 МБ. Формат сервер определяет по содержимому. В доску сделок задачи не загружаются (ответ 400): ее карточки - это сделки. Предпросмотр возвращает total (сколько задач в файле), existing (сколько уже есть на доске), columns_found и unknown_headers (какие колонки распознаны), первые rows, а также списки statuses (статус -> колонка), people (ФИО -> сотрудник, с candidates), crm (названия компаний, контактов и сделок -> записи CRM), projects, flows, tags, warnings и problems. Поле can_create_people показывает, можно ли создавать сотрудников без входа (нужно право employees.create).
Загрузка возвращает created, updated, skipped, построчный отчет rows и списки созданного: created_columns, created_people, created_labels. Задачи опознаются по номеру из Битрикс24 (external_id у карточки), поэтому повторная загрузка той же выгрузки обновляет карточки, а не плодит дубли.
**Поиск записи CRM для связи.** GET /board-crm-lookup возвращает до 20 элементов {id, label} и показывает ровно то, что видно человеку в самом разделе: организации - при праве на справочник заказчиков или контрагентов, сделки - по видимости сделок, контакты - общие и личные свои. Значение kind=lead выбирает сделки, ранние стадии идут первыми: отдельной сущности «лид» нет, связь с лидом хранится как связь со сделкой. POST /board-cards/{card_id}/links связывает карточку с найденной записью (повтор той же связи ничего не меняет), DELETE /board-card-links/{link_id} снимает связь. Нет записи - 404 «Запись CRM не найдена», запись вам не видна - 403 «Нет доступа к этой записи CRM».
Поля JSON и форм multipart из схемы сервера. «Да» - поле обязательно. Ссылка на другую схему (например, array[QCApproverInput]) означает вложенный объект с теми же полями.
Поля ниже появились в версиях 0.111.1 и 0.111.2. В запросах на запись их передают только те, что перечислены в CardUpdate.
Правила приватной доски (0.111.2) проверяет сервер. Если редактор переводит чужую общую доску в приватную (PATCH /boards/{board_id}, visibility=private), он в том же запросе становится участником с правом редактирования, иначе доска пропала бы из его списка. Участник приватной доски не может убрать себя (DELETE /boards/{board_id}/members/{person_id}) или снять с себя право редактирования (PUT /boards/{board_id}/members с can_edit=false): ответ 400 «Нельзя ...: вы потеряете доступ к приватной доске. Это может сделать владелец доски». Владельца это не касается.
Задачи, сроки и базовый план
Как исполнитель сдает результат
Командная очередь работы