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
copyProjectStatus
para 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:
assignees
funciona conpeople: true
(los asignados no se copiarán sin personas)discussionComments
funciona condiscussions: true
statusUpdateComments
funciona constatusUpdates: true
projectUserRoles
funciona 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.