Skapa en fullständig kopia av ett befintligt projekt med konfigurerbara alternativ för vad som ska ingå.
Kopiera ett projekt
Mutation för att kopiera projekt tillåter dig att duplicera ett befintligt projekt inom samma företag eller till ett annat företag. Detta är användbart för att skapa projektmallar, ställa in liknande projekt eller flytta projekt mellan företag. Kopieringsoperationen körs asynkront för att hantera stora projekt effektivt.
Grundläggande exempel
mutation CopyProject {
copyProject(
input: {
projectId: "proj_123abc"
name: "New Project Copy"
options: {
todos: true
todoLists: true
people: true
}
}
)
}
Avancerat exempel
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
}
}
)
}
Indata parametrar
CopyProjectInput
Parameter | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
projectId |
String! | ✅ Ja | ID för projektet som ska kopieras |
name |
String! | ✅ Ja | Namnet för det nya projektet (max 50 tecken) |
description |
String | Nej | Beskrivningen för det nya projektet (max 500 tecken) |
imageURL |
String | Nej | Bildens URL för det nya projektet |
companyId |
String | Nej | ID för företaget där det nya projektet ska skapas. Om det inte anges, används källprojektets företag |
options |
CopyProjectOptionsInput! | ✅ Ja | Konfiguration för vilka element som ska kopieras |
CopyProjectOptionsInput
Parameter | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
assignees |
Boolean | Nej | Kopiera uppgiftstilldelningar (kräver people: true ) |
automations |
Boolean | Nej | Kopiera projektautomatiseringar och arbetsflöden |
checklists |
Boolean | Nej | Kopiera uppgiftschecklistor |
customFields |
Boolean | Nej | Kopiera anpassade fältdefinitioner och värden |
discussions |
Boolean | Nej | Kopiera projektdiskussioner |
discussionComments |
Boolean | Nej | Kopiera kommentarer på diskussioner (kräver discussions: true ) |
dueDates |
Boolean | Nej | Kopiera förfallodatum på uppgifter |
files |
Boolean | Nej | Kopiera filbilagor |
forms |
Boolean | Nej | Kopiera projektformulär |
people |
Boolean | Nej | Kopiera projektmedlemmar |
projectUserRoles |
Boolean | Nej | Kopiera användarroller och behörigheter (kräver people: true ) |
statusUpdates |
Boolean | Nej | Kopiera projektstatusuppdateringar |
statusUpdateComments |
Boolean | Nej | Kopiera kommentarer på statusuppdateringar (kräver statusUpdates: true ) |
tags |
Boolean | Nej | Kopiera projektetiketter |
todoActions |
Boolean | Nej | Kopiera uppgiftsåtgärder/deluppgifter |
todoComments |
Boolean | Nej | Kopiera uppgiftskommentarer |
todoLists |
Boolean | Nej | Kopiera uppgiftslistor/sektioner |
todos |
Boolean | Nej | Kopiera uppgifter |
coverConfig |
Boolean | Nej | Kopiera konfiguration för uppgiftens omslagsbild |
Svar
Mutation returnerar ett Boolean
värde:
true
- Kopieringsjobbet har framgångsrikt köatsfalse
- Kopieringsjobbet kunde inte startas
Kontrollera kopieringsstatus
Eftersom kopiering är asynkront, använd copyProjectStatus
frågan för att kontrollera framsteg:
Kopieringsstatusfält
Fält | Typ | Beskrivning |
---|---|---|
queuePosition |
Int | Position i kopieringskön |
totalQueues |
Int | Totalt antal objekt i kön |
isActive |
Boolean | Om kopieringsoperationen för närvarande är aktiv |
oldProject |
Project | Källprojektet som kopieras |
newProjectName |
String | Namnet på det nya projektet som skapas |
isTemplate |
Boolean | Om detta kopieras som en mall |
oldCompany |
Company | Källföretag |
newCompany |
Company | Målföretag |
query CheckCopyStatus {
copyProjectStatus {
queuePosition
totalQueues
isActive
oldProject {
id
name
}
newProjectName
isTemplate
oldCompany {
id
name
}
newCompany {
id
name
}
}
}
Nödvändiga behörigheter
För att kopiera ett projekt behöver du lämpliga behörigheter i både käll- och målplatser:
Scenario | Nödvändiga behörigheter |
---|---|
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 |
Källprojektet måste vara aktivt (inte arkiverat) för att kunna kopieras.
Felmeddelanden
Projektet hittades inte
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "PROJECT_NOT_FOUND"
}
}]
}
Uppstår när källprojektet inte finns eller du saknar åtkomst.
Företaget hittades inte
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "COMPANY_NOT_FOUND"
}
}]
}
Uppstår när målföretaget inte finns eller du saknar åtkomst.
Projektet är för stort
{
"errors": [{
"message": "Project is too large to copy",
"extensions": {
"code": "CREATE_PROJECT_LIMIT"
}
}]
}
Uppstår när projektet har mer än 250 000 uppgifter.
Kopiering pågår redan
{
"errors": [{
"message": "Oops!"
}]
}
Uppstår när du redan har en kopieringsoperation som pågår.
Viktiga anteckningar
- Asynkron operation: Mutation köar ett bakgrundsjobb och returnerar omedelbart. Använd
copyProjectStatus
för att spåra framsteg. - En kopia åt gången: Endast en kopieringsoperation per användare kan vara aktiv åt gången.
- Större begränsningar: Projekt med mer än 250 000 uppgifter kan inte kopieras.
- Logiska beroenden: Vissa alternativ fungerar bäst tillsammans:
assignees
fungerar medpeople: true
(tilldelningar kommer inte att kopieras utan personer)discussionComments
fungerar meddiscussions: true
statusUpdateComments
fungerar medstatusUpdates: true
projectUserRoles
fungerar medpeople: true
- Namnbehandling: Projektnamn trimmas och eventuella URL:er tas automatiskt bort.
- Köprioritet: Företagskunder får högre prioritet i kopieringskön.
- Statuscache: Kopieringsstatus cachas i 6 timmar efter slutförande.