Utwórz pełną kopię istniejącego projektu z konfigurowalnymi opcjami dotyczącymi tego, co ma być uwzględnione.
Skopiuj projekt
Mutacja kopiowania projektu pozwala na duplikację istniejącego projektu w tej samej firmie lub w innej firmie. Jest to przydatne do tworzenia szablonów projektów, konfigurowania podobnych projektów lub przenoszenia projektów między firmami. Operacja kopiowania działa asynchronicznie, aby efektywnie obsługiwać duże projekty.
Podstawowy przykład
mutation CopyProject {
  copyProject(
    input: {
      projectId: "proj_123abc"
      name: "New Project Copy"
      options: {
        todos: true
        todoLists: true
        people: true
      }
    }
  )
}
Zaawansowany przykład
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
      }
    }
  )
}
Parametry wejściowe
CopyProjectInput
| Parametr | Typ | Wymagany | Opis | 
|---|---|---|---|
projectId | 
String! | ✅ Tak | ID projektu do skopiowania | 
name | 
String! | ✅ Tak | Nazwa nowego projektu (maks. 50 znaków) | 
description | 
String | Nie | Opis nowego projektu (maks. 500 znaków) | 
imageURL | 
String | Nie | URL obrazu dla nowego projektu | 
companyId | 
String | Nie | ID firmy, w której powinien zostać utworzony nowy projekt. Jeśli nie podano, używa firmy projektu źródłowego | 
options | 
CopyProjectOptionsInput! | ✅ Tak | Konfiguracja dotycząca tego, jakie elementy mają być kopiowane | 
CopyProjectOptionsInput
| Parametr | Typ | Wymagany | Opis | 
|---|---|---|---|
assignees | 
Boolean | Nie | Kopiuj przypisania zadań (wymaga people: true) | 
automations | 
Boolean | Nie | Kopiuj automatyzacje i przepływy pracy projektu | 
checklists | 
Boolean | Nie | Kopiuj listy kontrolne zadań | 
customFields | 
Boolean | Nie | Kopiuj definicje i wartości pól niestandardowych | 
discussions | 
Boolean | Nie | Kopiuj dyskusje projektu | 
discussionComments | 
Boolean | Nie | Kopiuj komentarze do dyskusji (wymaga discussions: true) | 
dueDates | 
Boolean | Nie | Kopiuj terminy zadań | 
files | 
Boolean | Nie | Kopiuj załączniki plików | 
forms | 
Boolean | Nie | Kopiuj formularze projektu | 
people | 
Boolean | Nie | Kopiuj członków projektu | 
projectUserRoles | 
Boolean | Nie | Kopiuj role i uprawnienia użytkowników (wymaga people: true) | 
statusUpdates | 
Boolean | Nie | Kopiuj aktualizacje statusu projektu | 
statusUpdateComments | 
Boolean | Nie | Kopiuj komentarze do aktualizacji statusu (wymaga statusUpdates: true) | 
tags | 
Boolean | Nie | Kopiuj tagi projektu | 
todoActions | 
Boolean | Nie | Kopiuj działania/subzadania zadań | 
todoComments | 
Boolean | Nie | Kopiuj komentarze do zadań | 
todoLists | 
Boolean | Nie | Kopiuj listy/sekcje zadań | 
todos | 
Boolean | Nie | Kopiuj zadania | 
coverConfig | 
Boolean | Nie | Kopiuj konfigurację okładki zadania | 
Odpowiedź
Mutacja zwraca wartość Boolean:
true- Zadanie kopiowania zostało pomyślnie dodane do kolejkifalse- Nie udało się rozpocząć zadania kopiowania
Sprawdzanie statusu kopiowania
Ponieważ kopiowanie jest asynchroniczne, użyj zapytania copyProjectStatus, aby sprawdzić postęp:
Pola statusu kopiowania
| Pole | Typ | Opis | 
|---|---|---|
queuePosition | 
Int | Pozycja w kolejce kopiowania | 
totalQueues | 
Int | Łączna liczba elementów w kolejce | 
isActive | 
Boolean | Czy operacja kopiowania jest obecnie aktywna | 
oldProject | 
Project | Projekt źródłowy, który jest kopiowany | 
newProjectName | 
String | Nazwa nowego projektu, który jest tworzony | 
isTemplate | 
Boolean | Czy to kopiowanie jako szablon | 
oldCompany | 
Company | Firma źródłowa | 
newCompany | 
Company | Firma docelowa | 
query CheckCopyStatus {
  copyProjectStatus {
    queuePosition
    totalQueues
    isActive
    oldProject {
      id
      name
    }
    newProjectName
    isTemplate
    oldCompany {
      id
      name
    }
    newCompany {
      id
      name
    }
  }
}
Wymagane uprawnienia
Aby skopiować projekt, potrzebujesz odpowiednich uprawnień w obu lokalizacjach źródłowej i docelowej:
| Scenariusz | Wymagane uprawnienia | 
|---|---|
| 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  | 
Projekt źródłowy musi być aktywny (niearchiwalny), aby mógł zostać skopiowany.
Odpowiedzi błędów
Projekt nie znaleziony
{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}
Występuje, gdy projekt źródłowy nie istnieje lub brakuje dostępu.
Firma nie znaleziona
{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "COMPANY_NOT_FOUND"
    }
  }]
}
Występuje, gdy firma docelowa nie istnieje lub brakuje dostępu.
Projekt zbyt duży
{
  "errors": [{
    "message": "Project is too large to copy",
    "extensions": {
      "code": "CREATE_PROJECT_LIMIT"
    }
  }]
}
Występuje, gdy projekt ma więcej niż 250 000 zadań.
Kopiowanie już w toku
{
  "errors": [{
    "message": "Oops!"
  }]
}
Występuje, gdy masz już w toku operację kopiowania.
Ważne uwagi
- Operacja asynchroniczna: Mutacja dodaje zadanie w tle do kolejki i natychmiast zwraca wynik. Użyj 
copyProjectStatus, aby śledzić postęp. - Jedna kopia na raz: Tylko jedna operacja kopiowania na użytkownika może być aktywna w danym czasie.
 - Ograniczenia rozmiaru: Projekty z więcej niż 250 000 zadań nie mogą być kopiowane.
 - Zależności logiczne: Niektóre opcje najlepiej działają razem:
assigneesdziała zpeople: true(przypisania nie będą kopiowane bez osób)discussionCommentsdziała zdiscussions: truestatusUpdateCommentsdziała zstatusUpdates: trueprojectUserRolesdziała zpeople: true
 - Przetwarzanie nazw: Nazwy projektów są przycinane, a wszelkie adresy URL są automatycznie usuwane.
 - Priorytet kolejki: Klienci korporacyjni otrzymują wyższy priorytet w kolejce kopiowania.
 - Buforowanie statusu: Status kopiowania jest buforowany przez 6 godzin po zakończeniu.