Переместите запись в другой список в рамках одного проекта или между проектами с полным копированием и валидацией.
Перемещение записи в список
Мутация 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
могут перемещать только файлы, которыми они владеют
Побочные эффекты
Перемещение записи вызывает несколько автоматических действий:
- Логирование активности - Создает запись активности, показывающую перемещение
- Уведомления - Уведомляет соответствующих участников проекта
- Webhook - Запускает событие webhook
handleTodoMoved
- Автоматизация - Запускает автоматизации, настроенные для перемещений записей
- Обновления в реальном времени - Публикует живые обновления для всех подключенных клиентов
- Обновления графиков - Обновляет графики и статистику проекта
Важные заметки
- Полная копия: Все данные записи копируются - вы не можете выборочно перемещать только определенные элементы
- Автоматическая позиция: Записи всегда размещаются в конце целевого списка
- Ограничения на перемещение между проектами: Пользователи
MEMBER
не могут перемещать записи между проектами - Асинхронная очистка: Очистка файлов происходит в фоновом режиме для перемещений между проектами
- Сохраняет историю: Комментарии, активность и аудиторские следы сохраняются
- События Webhook: Операции перемещения вызывают как события удаления, так и создания для синхронизации в реальном времени
Сценарии использования
Реорганизация работы
Перемещайте записи между списками, чтобы реорганизовать структуру проекта или этапы рабочего процесса.
Переводы между проектами
Переводите записи между проектами, когда работа должна перейти к другой команде или фазе.
Консолидация списков
Перемещайте записи при объединении или реструктуризации списков проекта.