Crea una copia completa di un progetto esistente con opzioni configurabili per cosa includere.
Copia un Progetto
La mutazione di copia del progetto consente di duplicare un progetto esistente all'interno della stessa azienda o in un'altra azienda. Questo è utile per creare modelli di progetto, impostare progetti simili o spostare progetti tra aziende. L'operazione di copia viene eseguita in modo asincrono per gestire progetti di grandi dimensioni in modo efficiente.
Esempio di Base
mutation CopyProject {
copyProject(
input: {
projectId: "proj_123abc"
name: "New Project Copy"
options: {
todos: true
todoLists: true
people: true
}
}
)
}
Esempio Avanzato
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
}
}
)
}
Parametri di Input
CopyProjectInput
Parametro | Tipo | Richiesto | Descrizione |
---|---|---|---|
projectId |
String! | ✅ Sì | L'ID del progetto da copiare |
name |
String! | ✅ Sì | Il nome per il nuovo progetto (max 50 caratteri) |
description |
String | No | La descrizione per il nuovo progetto (max 500 caratteri) |
imageURL |
String | No | L'URL dell'immagine per il nuovo progetto |
companyId |
String | No | L'ID dell'azienda in cui dovrebbe essere creato il nuovo progetto. Se non fornito, utilizza l'azienda del progetto sorgente |
options |
CopyProjectOptionsInput! | ✅ Sì | Configurazione per quali elementi copiare |
CopyProjectOptionsInput
Parametro | Tipo | Richiesto | Descrizione |
---|---|---|---|
assignees |
Boolean | No | Copia gli assegnatari delle attività (richiede people: true ) |
automations |
Boolean | No | Copia automazioni e flussi di lavoro del progetto |
checklists |
Boolean | No | Copia checklist delle attività |
customFields |
Boolean | No | Copia definizioni e valori dei campi personalizzati |
discussions |
Boolean | No | Copia discussioni del progetto |
discussionComments |
Boolean | No | Copia commenti sulle discussioni (richiede discussions: true ) |
dueDates |
Boolean | No | Copia le scadenze delle attività |
files |
Boolean | No | Copia allegati di file |
forms |
Boolean | No | Copia moduli del progetto |
people |
Boolean | No | Copia membri del progetto |
projectUserRoles |
Boolean | No | Copia ruoli e permessi degli utenti (richiede people: true ) |
statusUpdates |
Boolean | No | Copia aggiornamenti sullo stato del progetto |
statusUpdateComments |
Boolean | No | Copia commenti sugli aggiornamenti di stato (richiede statusUpdates: true ) |
tags |
Boolean | No | Copia tag del progetto |
todoActions |
Boolean | No | Copia azioni/sottotask delle attività |
todoComments |
Boolean | No | Copia commenti delle attività |
todoLists |
Boolean | No | Copia liste/sezioni delle attività |
todos |
Boolean | No | Copia attività |
coverConfig |
Boolean | No | Copia configurazione dell'immagine di copertura delle attività |
Risposta
La mutazione restituisce un valore Boolean
:
true
- Il lavoro di copia è stato messo in coda con successofalse
- Il lavoro di copia non è stato avviato
Controllo dello Stato di Copia
Poiché la copia è asincrona, utilizza la query copyProjectStatus
per controllare i progressi:
Campi di Stato di Copia
Campo | Tipo | Descrizione |
---|---|---|
queuePosition |
Int | Posizione nella coda di copia |
totalQueues |
Int | Numero totale di elementi nella coda |
isActive |
Boolean | Se l'operazione di copia è attualmente attiva |
oldProject |
Project | Il progetto sorgente in fase di copia |
newProjectName |
String | Nome del nuovo progetto in fase di creazione |
isTemplate |
Boolean | Se si sta copiando come modello |
oldCompany |
Company | Azienda sorgente |
newCompany |
Company | Azienda di destinazione |
query CheckCopyStatus {
copyProjectStatus {
queuePosition
totalQueues
isActive
oldProject {
id
name
}
newProjectName
isTemplate
oldCompany {
id
name
}
newCompany {
id
name
}
}
}
Permessi Richiesti
Per copiare un progetto, è necessario avere i permessi appropriati sia nella posizione sorgente che in quella di destinazione:
Scenario | Permessi Richiesti |
---|---|
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 |
Il progetto sorgente deve essere attivo (non archiviato) per essere copiato.
Risposte di Errore
Progetto Non Trovato
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "PROJECT_NOT_FOUND"
}
}]
}
Si verifica quando il progetto sorgente non esiste o non si ha accesso.
Azienda Non Trovata
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "COMPANY_NOT_FOUND"
}
}]
}
Si verifica quando l'azienda di destinazione non esiste o non si ha accesso.
Progetto Troppo Grande
{
"errors": [{
"message": "Project is too large to copy",
"extensions": {
"code": "CREATE_PROJECT_LIMIT"
}
}]
}
Si verifica quando il progetto ha più di 250.000 attività.
Copia Già In Corso
{
"errors": [{
"message": "Oops!"
}]
}
Si verifica quando si ha già un'operazione di copia in corso.
Note Importanti
- Operazione Asincrona: La mutazione mette in coda un lavoro in background e restituisce immediatamente. Usa
copyProjectStatus
per monitorare i progressi. - Una Copia alla Volta: Solo un'operazione di copia per utente può essere attiva in qualsiasi momento.
- Limitazioni di Dimensione: I progetti con più di 250.000 attività non possono essere copiati.
- Dipendenze Logiche: Alcune opzioni funzionano meglio insieme:
assignees
funziona conpeople: true
(gli assegnatari non verranno copiati senza persone)discussionComments
funziona condiscussions: true
statusUpdateComments
funziona constatusUpdates: true
projectUserRoles
funziona conpeople: true
- Elaborazione dei Nomi: I nomi dei progetti vengono trimmati e eventuali URL vengono rimossi automaticamente.
- Priorità nella Coda: I clienti enterprise ricevono una priorità maggiore nella coda di copia.
- Caching dello Stato: Lo stato di copia è memorizzato nella cache per 6 ore dopo il completamento.