Создайте полную копию существующего проекта с настраиваемыми параметрами для включения.
Копирование проекта
Мутация копирования проекта позволяет вам дублировать существующий проект в рамках одной компании или в другую компанию. Это полезно для создания шаблонов проектов, настройки аналогичных проектов или перемещения проектов между компаниями. Операция копирования выполняется асинхронно для эффективной обработки крупных проектов.
Простой пример
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 часов после завершения.