Créez une copie complète d'un projet existant avec des options configurables sur ce qu'il faut inclure.


Copier un projet

La mutation de copie de projet vous permet de dupliquer un projet existant au sein de la même entreprise ou vers une autre entreprise. Cela est utile pour créer des modèles de projet, configurer des projets similaires ou déplacer des projets entre entreprises. L'opération de copie s'exécute de manière asynchrone pour gérer efficacement les grands projets.

Exemple de base

mutation CopyProject {
  copyProject(
    input: {
      projectId: "proj_123abc"
      name: "New Project Copy"
      options: {
        todos: true
        todoLists: true
        people: true
      }
    }
  )
}

Exemple avancé

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
      }
    }
  )
}

Paramètres d'entrée

CopyProjectInput

Paramètre Type Requis Description
projectId String! ✅ Oui L'ID du projet à copier
name String! ✅ Oui Le nom du nouveau projet (max 50 caractères)
description String Non La description du nouveau projet (max 500 caractères)
imageURL String Non L'URL de l'image pour le nouveau projet
companyId String Non L'ID de l'entreprise où le nouveau projet doit être créé. Si non fourni, utilise l'entreprise du projet source
options CopyProjectOptionsInput! ✅ Oui Configuration des éléments à copier

CopyProjectOptionsInput

Paramètre Type Requis Description
assignees Boolean Non Copier les assignés de tâche (nécessite people: true)
automations Boolean Non Copier les automatisations et workflows du projet
checklists Boolean Non Copier les listes de contrôle des tâches
customFields Boolean Non Copier les définitions et valeurs des champs personnalisés
discussions Boolean Non Copier les discussions de projet
discussionComments Boolean Non Copier les commentaires sur les discussions (nécessite discussions: true)
dueDates Boolean Non Copier les dates d'échéance sur les tâches
files Boolean Non Copier les pièces jointes de fichiers
forms Boolean Non Copier les formulaires de projet
people Boolean Non Copier les membres du projet
projectUserRoles Boolean Non Copier les rôles et permissions des utilisateurs (nécessite people: true)
statusUpdates Boolean Non Copier les mises à jour de statut du projet
statusUpdateComments Boolean Non Copier les commentaires sur les mises à jour de statut (nécessite statusUpdates: true)
tags Boolean Non Copier les étiquettes de projet
todoActions Boolean Non Copier les actions/sous-tâches des tâches
todoComments Boolean Non Copier les commentaires sur les tâches
todoLists Boolean Non Copier les listes/sections de tâches
todos Boolean Non Copier les tâches
coverConfig Boolean Non Copier la configuration de l'image de couverture de la tâche

Réponse

La mutation renvoie une valeur Boolean :

  • true - Le travail de copie a été mis en file d'attente avec succès
  • false - Le travail de copie n'a pas pu être démarré

Vérification de l'état de la copie

Étant donné que la copie est asynchrone, utilisez la requête copyProjectStatus pour vérifier la progression :

Champs de statut de copie

Champ Type Description
queuePosition Int Position dans la file d'attente de copie
totalQueues Int Nombre total d'éléments dans la file d'attente
isActive Boolean Indique si l'opération de copie est actuellement active
oldProject Project Le projet source en cours de copie
newProjectName String Nom du nouveau projet en cours de création
isTemplate Boolean Indique si cela se fait en tant que modèle
oldCompany Company Entreprise source
newCompany Company Entreprise cible
query CheckCopyStatus {
  copyProjectStatus {
    queuePosition
    totalQueues
    isActive
    oldProject {
      id
      name
    }
    newProjectName
    isTemplate
    oldCompany {
      id
      name
    }
    newCompany {
      id
      name
    }
  }
}

Permissions requises

Pour copier un projet, vous devez disposer des permissions appropriées dans les emplacements source et cible :

Scénario Permissions requises
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

Le projet source doit être actif (non archivé) pour être copié.

Réponses d'erreur

Projet non trouvé

{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}

Se produit lorsque le projet source n'existe pas ou que vous n'avez pas accès.

Entreprise non trouvée

{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "COMPANY_NOT_FOUND"
    }
  }]
}

Se produit lorsque l'entreprise cible n'existe pas ou que vous n'avez pas accès.

Projet trop grand

{
  "errors": [{
    "message": "Project is too large to copy",
    "extensions": {
      "code": "CREATE_PROJECT_LIMIT"
    }
  }]
}

Se produit lorsque le projet contient plus de 250 000 tâches.

Copie déjà en cours

{
  "errors": [{
    "message": "Oops!"
  }]
}

Se produit lorsque vous avez déjà une opération de copie en cours.

Notes importantes

  • Opération asynchrone : La mutation met en file d'attente un travail en arrière-plan et renvoie immédiatement. Utilisez copyProjectStatus pour suivre la progression.
  • Une copie à la fois : Une seule opération de copie par utilisateur peut être active à tout moment.
  • Limitations de taille : Les projets contenant plus de 250 000 tâches ne peuvent pas être copiés.
  • Dépendances logiques : Certaines options fonctionnent mieux ensemble :
    • assignees fonctionne avec people: true (les assignés ne seront pas copiés sans personnes)
    • discussionComments fonctionne avec discussions: true
    • statusUpdateComments fonctionne avec statusUpdates: true
    • projectUserRoles fonctionne avec people: true
  • Traitement des noms : Les noms de projet sont tronqués et toutes les URL sont automatiquement supprimées.
  • Priorité de la file d'attente : Les clients d'entreprise reçoivent une priorité plus élevée dans la file d'attente de copie.
  • Mise en cache de l'état : L'état de la copie est mis en cache pendant 6 heures après l'achèvement.

Assistant IA

Les réponses sont générées par l'IA et peuvent contenir des erreurs.

Comment puis-je vous aider ?

Posez-moi toutes vos questions sur Blue ou cette documentation.

Entrez pour envoyer • Maj+Entrée pour une nouvelle ligne • ⌘I pour ouvrir