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èsfalse
- 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 avecpeople: true
(les assignés ne seront pas copiés sans personnes)discussionComments
fonctionne avecdiscussions: true
statusUpdateComments
fonctionne avecstatusUpdates: true
projectUserRoles
fonctionne avecpeople: 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.