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 
copyProjectStatusper 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:
assigneesfunziona conpeople: true(gli assegnatari non verranno copiati senza persone)discussionCommentsfunziona condiscussions: truestatusUpdateCommentsfunziona constatusUpdates: trueprojectUserRolesfunziona 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.