Crie uma cópia completa de um projeto existente com opções configuráveis sobre o que incluir.
Copiar um Projeto
A mutação de copiar projeto permite que você duplique um projeto existente dentro da mesma empresa ou para uma empresa diferente. Isso é útil para criar modelos de projeto, configurar projetos semelhantes ou mover projetos entre empresas. A operação de cópia é executada de forma assíncrona para lidar com grandes projetos de forma eficiente.
Exemplo Básico
mutation CopyProject {
copyProject(
input: {
projectId: "proj_123abc"
name: "New Project Copy"
options: {
todos: true
todoLists: true
people: true
}
}
)
}
Exemplo Avançado
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
}
}
)
}
Parâmetros de Entrada
CopyProjectInput
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
projectId |
String! | ✅ Sim | O ID do projeto a ser copiado |
name |
String! | ✅ Sim | O nome para o novo projeto (máx. 50 caracteres) |
description |
String | Não | A descrição para o novo projeto (máx. 500 caracteres) |
imageURL |
String | Não | A URL da imagem para o novo projeto |
companyId |
String | Não | O ID da empresa onde o novo projeto deve ser criado. Se não fornecido, usa a empresa do projeto de origem |
options |
CopyProjectOptionsInput! | ✅ Sim | Configuração sobre quais elementos copiar |
CopyProjectOptionsInput
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
assignees |
Boolean | Não | Copiar responsáveis por tarefas (requer people: true ) |
automations |
Boolean | Não | Copiar automações e fluxos de trabalho do projeto |
checklists |
Boolean | Não | Copiar listas de verificação de tarefas |
customFields |
Boolean | Não | Copiar definições e valores de campos personalizados |
discussions |
Boolean | Não | Copiar discussões do projeto |
discussionComments |
Boolean | Não | Copiar comentários em discussões (requer discussions: true ) |
dueDates |
Boolean | Não | Copiar datas de vencimento em tarefas |
files |
Boolean | Não | Copiar anexos de arquivos |
forms |
Boolean | Não | Copiar formulários do projeto |
people |
Boolean | Não | Copiar membros do projeto |
projectUserRoles |
Boolean | Não | Copiar funções e permissões de usuário (requer people: true ) |
statusUpdates |
Boolean | Não | Copiar atualizações de status do projeto |
statusUpdateComments |
Boolean | Não | Copiar comentários sobre atualizações de status (requer statusUpdates: true ) |
tags |
Boolean | Não | Copiar tags do projeto |
todoActions |
Boolean | Não | Copiar ações/subtarefas de tarefas |
todoComments |
Boolean | Não | Copiar comentários de tarefas |
todoLists |
Boolean | Não | Copiar listas/seções de tarefas |
todos |
Boolean | Não | Copiar tarefas |
coverConfig |
Boolean | Não | Copiar configuração da imagem de capa do todo |
Resposta
A mutação retorna um Boolean
valor:
true
- O trabalho de cópia foi enfileirado com sucessofalse
- O trabalho de cópia não pôde ser iniciado
Verificando o Status da Cópia
Como a cópia é assíncrona, use a consulta copyProjectStatus
para verificar o progresso:
Campos de Status da Cópia
Campo | Tipo | Descrição |
---|---|---|
queuePosition |
Int | Posição na fila de cópia |
totalQueues |
Int | Número total de itens na fila |
isActive |
Boolean | Se a operação de cópia está atualmente ativa |
oldProject |
Project | O projeto de origem sendo copiado |
newProjectName |
String | Nome do novo projeto sendo criado |
isTemplate |
Boolean | Se isso está copiando como um modelo |
oldCompany |
Company | Empresa de origem |
newCompany |
Company | Empresa de destino |
query CheckCopyStatus {
copyProjectStatus {
queuePosition
totalQueues
isActive
oldProject {
id
name
}
newProjectName
isTemplate
oldCompany {
id
name
}
newCompany {
id
name
}
}
}
Permissões Necessárias
Para copiar um projeto, você precisa de permissões apropriadas tanto na origem quanto no destino:
Cenário | Permissões Necessárias |
---|---|
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 |
O projeto de origem deve estar ativo (não arquivado) para ser copiado.
Respostas de Erro
Projeto Não Encontrado
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "PROJECT_NOT_FOUND"
}
}]
}
Ocorre quando o projeto de origem não existe ou você não tem acesso.
Empresa Não Encontrada
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "COMPANY_NOT_FOUND"
}
}]
}
Ocorre quando a empresa de destino não existe ou você não tem acesso.
Projeto Muito Grande
{
"errors": [{
"message": "Project is too large to copy",
"extensions": {
"code": "CREATE_PROJECT_LIMIT"
}
}]
}
Ocorre quando o projeto tem mais de 250.000 tarefas.
Cópia Já em Andamento
{
"errors": [{
"message": "Oops!"
}]
}
Ocorre quando você já tem uma operação de cópia em andamento.
Notas Importantes
- Operação Assíncrona: A mutação enfileira um trabalho em segundo plano e retorna imediatamente. Use
copyProjectStatus
para acompanhar o progresso. - Uma Cópia por Vez: Apenas uma operação de cópia por usuário pode estar ativa a qualquer momento.
- Limitações de Tamanho: Projetos com mais de 250.000 tarefas não podem ser copiados.
- Dependências Lógicas: Algumas opções funcionam melhor juntas:
assignees
funciona compeople: true
(responsáveis não serão copiados sem pessoas)discussionComments
funciona comdiscussions: true
statusUpdateComments
funciona comstatusUpdates: true
projectUserRoles
funciona compeople: true
- Processamento de Nome: Os nomes dos projetos são cortados e quaisquer URLs são removidas automaticamente.
- Prioridade na Fila: Clientes empresariais recebem prioridade maior na fila de cópia.
- Cache de Status: O status da cópia é armazenado em cache por 6 horas após a conclusão.