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 
copyProjectStatuspara 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:
assigneesfunciona compeople: true(responsáveis não serão copiados sem pessoas)discussionCommentsfunciona comdiscussions: truestatusUpdateCommentsfunciona comstatusUpdates: trueprojectUserRolesfunciona 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.