Переместите запись в другой список в рамках одного проекта или между проектами с полным копированием и валидацией.


Перемещение записи в список

Мутация moveTodo позволяет вам переместить запись в другой список. Эта операция создает полную копию записи в целевом списке и удаляет ее из исходного списка. Записи могут перемещаться в рамках одного проекта или между разными проектами (при наличии соответствующих прав).

Основной пример

mutation MoveTodo {
  moveTodo(
    input: {
      todoId: "todo_123abc"
      todoListId: "list_456def"
    }
  )
}

Пример перемещения между проектами

mutation MoveTodoAcrossProjects {
  moveTodo(
    input: {
      todoId: "todo_123abc"
      todoListId: "different-project-list_789xyz"
    }
  )
}

Входные параметры

MoveTodoInput

Параметр Тип Обязательный Описание
todoId String! ✅ Да ID записи для перемещения
todoListId String! ✅ Да ID целевого списка

Ответ

Мутация возвращает значение Boolean!:

  • true - Запись была успешно перемещена
  • Ошибки возникают при неудаче, а не возвращают false

Что перемещается

Когда запись перемещается, следующие элементы копируются в новое место:

  • Ответственные - Все назначенные пользователи
  • Чек-листы - Все элементы чек-листа и их статус выполнения
  • Комментарии - Все комментарии и ответы
  • Пользовательские поля - Все значения пользовательских полей
  • Описание - Полное описание записи и форматирование
  • Срок - Исходная дата и время выполнения
  • Теги - Все связанные теги
  • Действия Todo - Все подзадачи и элементы действий
  • Файлы - Все вложения файлов (с особым обращением для перемещений между проектами)

Обработка позиции

  • Записи автоматически располагаются в конце целевого списка
  • Вы не можете указать пользовательскую позицию - она рассчитывается автоматически
  • Позиция устанавливается на текущее максимальное значение позиции + 65,535

Необходимые разрешения

Разные уровни разрешений имеют разные возможности:

Роль пользователя В одном проекте Между проектами Доступ к файлам
OWNER ✅ Да ✅ Да All files
ADMIN ✅ Да ✅ Да All files
MEMBER ✅ Да ❌ Нет Own files only

Требования к разрешениям

  • Вы должны иметь доступ к OWNER, ADMIN или MEMBER исходному проекту
  • Вы должны иметь доступ к целевому проекту
  • Пользователи MEMBER не могут перемещать записи между разными проектами
  • Оба проекта должны быть активными (не архивированными)

Ответы на ошибки

Запись не найдена

{
  "errors": [{
    "message": "Todo was not found.",
    "extensions": {
      "code": "TODO_NOT_FOUND"
    }
  }]
}

Список не найден

{
  "errors": [{
    "message": "Todo list was not found.",
    "extensions": {
      "code": "TODO_LIST_NOT_FOUND"
    }
  }]
}

Отказ в разрешении на перемещение между проектами

{
  "errors": [{
    "message": "You are not authorized.",
    "extensions": {
      "code": "FORBIDDEN"
    }
  }]
}

Обработка файлов

Перемещения в одном проекте

  • Файлы перемещаются напрямую без создания копий
  • Все разрешения на файлы сохраняются

Перемещения между проектами

  • Создаются новые копии файлов в хранилище целевого проекта
  • Исходные файлы удаляются асинхронно после успешного копирования
  • Разрешения на файлы могут быть обновлены в зависимости от настроек целевого проекта
  • Пользователи MEMBER могут перемещать только файлы, которыми они владеют

Побочные эффекты

Перемещение записи вызывает несколько автоматических действий:

  1. Логирование активности - Создает запись активности, показывающую перемещение
  2. Уведомления - Уведомляет соответствующих участников проекта
  3. Webhook - Запускает событие webhook handleTodoMoved
  4. Автоматизация - Запускает автоматизации, настроенные для перемещений записей
  5. Обновления в реальном времени - Публикует живые обновления для всех подключенных клиентов
  6. Обновления графиков - Обновляет графики и статистику проекта

Важные заметки

  • Полная копия: Все данные записи копируются - вы не можете выборочно перемещать только определенные элементы
  • Автоматическая позиция: Записи всегда размещаются в конце целевого списка
  • Ограничения на перемещение между проектами: Пользователи MEMBER не могут перемещать записи между проектами
  • Асинхронная очистка: Очистка файлов происходит в фоновом режиме для перемещений между проектами
  • Сохраняет историю: Комментарии, активность и аудиторские следы сохраняются
  • События Webhook: Операции перемещения вызывают как события удаления, так и создания для синхронизации в реальном времени

Сценарии использования

Реорганизация работы

Перемещайте записи между списками, чтобы реорганизовать структуру проекта или этапы рабочего процесса.

Переводы между проектами

Переводите записи между проектами, когда работа должна перейти к другой команде или фазе.

Консолидация списков

Перемещайте записи при объединении или реструктуризации списков проекта.

AI Ассистент

Ответы генерируются с использованием ИИ и могут содержать ошибки.

Как я могу вам помочь?

Спросите меня о чем угодно, связанном с Blue или этой документацией.

Введите для отправки • Shift+Enter для новой строки • ⌘I для открытия