Создайте полную копию существующего проекта с настраиваемыми параметрами для включения.


Копирование проекта

Мутация копирования проекта позволяет вам дублировать существующий проект в рамках одной компании или в другую компанию. Это полезно для создания шаблонов проектов, настройки аналогичных проектов или перемещения проектов между компаниями. Операция копирования выполняется асинхронно для эффективной обработки крупных проектов.

Простой пример

mutation CopyProject {
  copyProject(
    input: {
      projectId: "proj_123abc"
      name: "New Project Copy"
      options: {
        todos: true
        todoLists: true
        people: true
      }
    }
  )
}

Расширенный пример

mutation CopyProject {
  copyProject(
    input: {
      projectId: "proj_123abc"
      name: "Q2 Marketing Campaign"
      description: "Copy of Q1 campaign with updated timeline"
      imageURL: "https://example.com/campaign-logo.png"
      companyId: "comp_789xyz"
      options: {
        assignees: true
        automations: true
        checklists: true
        customFields: true
        discussions: false
        discussionComments: false
        dueDates: true
        files: true
        forms: true
        people: true
        projectUserRoles: true
        statusUpdates: false
        statusUpdateComments: false
        tags: true
        todoActions: true
        todoComments: false
        todoLists: true
        todos: true
      }
    }
  )
}

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

CopyProjectInput

Параметр Тип Обязательный Описание
projectId String! ✅ Да Идентификатор проекта, который необходимо скопировать
name String! ✅ Да Название для нового проекта (макс. 50 символов)
description String Нет Описание для нового проекта (макс. 500 символов)
imageURL String Нет URL изображения для нового проекта
companyId String Нет Идентификатор компании, в которой должен быть создан новый проект. Если не указано, используется компания исходного проекта
options CopyProjectOptionsInput! ✅ Да Конфигурация для того, какие элементы копировать

CopyProjectOptionsInput

Параметр Тип Обязательный Описание
assignees Boolean Нет Копировать назначенных задач (требуется people: true)
automations Boolean Нет Копировать автоматизации и рабочие процессы проекта
checklists Boolean Нет Копировать контрольные списки задач
customFields Boolean Нет Копировать определения и значения пользовательских полей
discussions Boolean Нет Копировать обсуждения проекта
discussionComments Boolean Нет Копировать комментарии к обсуждениям (требуется discussions: true)
dueDates Boolean Нет Копировать сроки выполнения задач
files Boolean Нет Копировать вложения файлов
forms Boolean Нет Копировать формы проекта
people Boolean Нет Копировать участников проекта
projectUserRoles Boolean Нет Копировать роли и разрешения пользователей (требуется people: true)
statusUpdates Boolean Нет Копировать обновления статуса проекта
statusUpdateComments Boolean Нет Копировать комментарии к обновлениям статуса (требуется statusUpdates: true)
tags Boolean Нет Копировать теги проекта
todoActions Boolean Нет Копировать действия/подзадачи задач
todoComments Boolean Нет Копировать комментарии к задачам
todoLists Boolean Нет Копировать списки/разделы задач
todos Boolean Нет Копировать задачи
coverConfig Boolean Нет Копировать конфигурацию обложки задачи

Ответ

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

  • true - Задача копирования успешно поставлена в очередь
  • false - Задача копирования не может быть начата

Проверка статуса копирования

Поскольку копирование выполняется асинхронно, используйте запрос copyProjectStatus для проверки прогресса:

Поля статуса копирования

Поле Тип Описание
queuePosition Int Позиция в очереди копирования
totalQueues Int Общее количество элементов в очереди
isActive Boolean Активна ли операция копирования в данный момент
oldProject Project Исходный проект, который копируется
newProjectName String Название нового проекта, который создается
isTemplate Boolean Является ли это копированием в качестве шаблона
oldCompany Company Исходная компания
newCompany Company Целевая компания
query CheckCopyStatus {
  copyProjectStatus {
    queuePosition
    totalQueues
    isActive
    oldProject {
      id
      name
    }
    newProjectName
    isTemplate
    oldCompany {
      id
      name
    }
    newCompany {
      id
      name
    }
  }
}

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

Чтобы скопировать проект, вам нужны соответствующие разрешения как в исходном, так и в целевом местах:

Сценарий Необходимые разрешения
Copy within same company OWNER, ADMIN, or MEMBER role in the source project
Copy to different company OWNER, ADMIN, or MEMBER role in the source project
• Must be a member of the target company

Исходный проект должен быть активным (не архивированным), чтобы его можно было скопировать.

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

Проект не найден

{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}

Происходит, когда исходный проект не существует или у вас нет доступа.

Компания не найдена

{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "COMPANY_NOT_FOUND"
    }
  }]
}

Происходит, когда целевая компания не существует или у вас нет доступа.

Проект слишком большой

{
  "errors": [{
    "message": "Project is too large to copy",
    "extensions": {
      "code": "CREATE_PROJECT_LIMIT"
    }
  }]
}

Происходит, когда проект содержит более 250 000 задач.

Копирование уже в процессе

{
  "errors": [{
    "message": "Oops!"
  }]
}

Происходит, когда у вас уже есть операция копирования в процессе.

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

  • Асинхронная операция: Мутация ставит задачу в фоновую очередь и возвращает результат немедленно. Используйте copyProjectStatus для отслеживания прогресса.
  • Одна копия за раз: В любой момент может быть активна только одна операция копирования для пользователя.
  • Ограничения по размеру: Проекты с более чем 250 000 задач не могут быть скопированы.
  • Логические зависимости: Некоторые параметры лучше работают вместе:
    • assignees работает с people: true (назначенные не будут скопированы без людей)
    • discussionComments работает с discussions: true
    • statusUpdateComments работает с statusUpdates: true
    • projectUserRoles работает с people: true
  • Обработка имен: Имена проектов обрезаются, и любые URL автоматически удаляются.
  • Приоритет очереди: Клиенты корпоративного уровня получают более высокий приоритет в очереди копирования.
  • Кэширование статуса: Статус копирования кэшируется на 6 часов после завершения.

AI Ассистент

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

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

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

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