Crea una copia completa de un proyecto existente con opciones configurables sobre qué incluir.
Copiar un Proyecto
La mutación de copiar proyecto te permite duplicar un proyecto existente dentro de la misma empresa o a una empresa diferente. Esto es útil para crear plantillas de proyectos, configurar proyectos similares o mover proyectos entre empresas. La operación de copia se ejecuta de manera asíncrona para manejar proyectos grandes de manera eficiente.
Ejemplo Básico
mutation CopyProject {
  copyProject(
    input: {
      projectId: "proj_123abc"
      name: "New Project Copy"
      options: {
        todos: true
        todoLists: true
        people: true
      }
    }
  )
}
Ejemplo Avanzado
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 | Requerido | Descripción | 
|---|---|---|---|
projectId | 
String! | ✅ Sí | El ID del proyecto a copiar | 
name | 
String! | ✅ Sí | El nombre para el nuevo proyecto (máx. 50 caracteres) | 
description | 
String | No | La descripción para el nuevo proyecto (máx. 500 caracteres) | 
imageURL | 
String | No | La URL de la imagen para el nuevo proyecto | 
companyId | 
String | No | El ID de la empresa donde se debe crear el nuevo proyecto. Si no se proporciona, utiliza la empresa del proyecto fuente | 
options | 
CopyProjectOptionsInput! | ✅ Sí | Configuración sobre qué elementos copiar | 
CopyProjectOptionsInput
| Parámetro | Tipo | Requerido | Descripción | 
|---|---|---|---|
assignees | 
Boolean | No | Copiar asignaciones de tareas (requiere people: true) | 
automations | 
Boolean | No | Copiar automatizaciones y flujos de trabajo del proyecto | 
checklists | 
Boolean | No | Copiar listas de verificación de tareas | 
customFields | 
Boolean | No | Copiar definiciones y valores de campos personalizados | 
discussions | 
Boolean | No | Copiar discusiones del proyecto | 
discussionComments | 
Boolean | No | Copiar comentarios en discusiones (requiere discussions: true) | 
dueDates | 
Boolean | No | Copiar fechas de vencimiento en tareas | 
files | 
Boolean | No | Copiar archivos adjuntos | 
forms | 
Boolean | No | Copiar formularios del proyecto | 
people | 
Boolean | No | Copiar miembros del proyecto | 
projectUserRoles | 
Boolean | No | Copiar roles y permisos de usuario (requiere people: true) | 
statusUpdates | 
Boolean | No | Copiar actualizaciones de estado del proyecto | 
statusUpdateComments | 
Boolean | No | Copiar comentarios sobre actualizaciones de estado (requiere statusUpdates: true) | 
tags | 
Boolean | No | Copiar etiquetas del proyecto | 
todoActions | 
Boolean | No | Copiar acciones/subtareas de tareas | 
todoComments | 
Boolean | No | Copiar comentarios de tareas | 
todoLists | 
Boolean | No | Copiar listas/secciones de tareas | 
todos | 
Boolean | No | Copiar tareas | 
coverConfig | 
Boolean | No | Copiar configuración de imagen de portada de todo | 
Respuesta
La mutación devuelve un valor Boolean:
true- El trabajo de copia ha sido encolado exitosamentefalse- No se pudo iniciar el trabajo de copia
Verificando el Estado de la Copia
Dado que la copia es asíncrona, utiliza la consulta copyProjectStatus para verificar el progreso:
Campos del Estado de Copia
| Campo | Tipo | Descripción | 
|---|---|---|
queuePosition | 
Int | Posición en la cola de copia | 
totalQueues | 
Int | Número total de elementos en la cola | 
isActive | 
Boolean | Si la operación de copia está actualmente activa | 
oldProject | 
Project | El proyecto fuente que se está copiando | 
newProjectName | 
String | Nombre del nuevo proyecto que se está creando | 
isTemplate | 
Boolean | Si esto se está copiando como una plantilla | 
oldCompany | 
Company | Empresa fuente | 
newCompany | 
Company | Empresa objetivo | 
query CheckCopyStatus {
  copyProjectStatus {
    queuePosition
    totalQueues
    isActive
    oldProject {
      id
      name
    }
    newProjectName
    isTemplate
    oldCompany {
      id
      name
    }
    newCompany {
      id
      name
    }
  }
}
Permisos Requeridos
Para copiar un proyecto, necesitas permisos apropiados tanto en la ubicación fuente como en la ubicación objetivo:
| Escenario | Permisos Requeridos | 
|---|---|
| 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  | 
El proyecto fuente debe estar activo (no archivado) para ser copiado.
Respuestas de Error
Proyecto No Encontrado
{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}
Ocurre cuando el proyecto fuente no existe o no tienes acceso.
Empresa No Encontrada
{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "COMPANY_NOT_FOUND"
    }
  }]
}
Ocurre cuando la empresa objetivo no existe o no tienes acceso.
Proyecto Demasiado Grande
{
  "errors": [{
    "message": "Project is too large to copy",
    "extensions": {
      "code": "CREATE_PROJECT_LIMIT"
    }
  }]
}
Ocurre cuando el proyecto tiene más de 250,000 tareas.
Copia Ya En Progreso
{
  "errors": [{
    "message": "Oops!"
  }]
}
Ocurre cuando ya tienes una operación de copia en progreso.
Notas Importantes
- Operación Asíncrona: La mutación encola un trabajo en segundo plano y devuelve inmediatamente. Utiliza 
copyProjectStatuspara rastrear el progreso. - Una Copia a la Vez: Solo se puede tener una operación de copia activa por usuario en cualquier momento.
 - Limitaciones de Tamaño: Los proyectos con más de 250,000 tareas no pueden ser copiados.
 - Dependencias Lógicas: Algunas opciones funcionan mejor juntas:
assigneesfunciona conpeople: true(los asignados no se copiarán sin personas)discussionCommentsfunciona condiscussions: truestatusUpdateCommentsfunciona constatusUpdates: trueprojectUserRolesfunciona conpeople: true
 - Procesamiento de Nombres: Los nombres de los proyectos se recortan y cualquier URL se elimina automáticamente.
 - Prioridad en la Cola: Los clientes empresariales reciben mayor prioridad en la cola de copia.
 - Caché de Estado: El estado de la copia se almacena en caché durante 6 horas después de la finalización.