포함할 항목에 대한 구성 가능한 옵션으로 기존 프로젝트의 완전한 복사본을 생성합니다.
프로젝트 복사
프로젝트 복사 변형은 동일한 회사 내에서 또는 다른 회사로 기존 프로젝트를 복제할 수 있게 해줍니다. 이는 프로젝트 템플릿을 생성하거나 유사한 프로젝트를 설정하거나 회사 간에 프로젝트를 이동하는 데 유용합니다. 복사 작업은 대규모 프로젝트를 효율적으로 처리하기 위해 비동기적으로 실행됩니다.
기본 예제
mutation CopyProject {
  copyProject(
    input: {
      projectId: "proj_123abc"
      name: "New Project Copy"
      options: {
        todos: true
        todoLists: true
        people: true
      }
    }
  )
}
고급 예제
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
      }
    }
  )
}
입력 매개변수
CopyProjectInput
| 매개변수 | 유형 | 필수 | 설명 | 
|---|---|---|---|
projectId | 
String! | ✅ 예 | 복사할 프로젝트의 ID | 
name | 
String! | ✅ 예 | 새 프로젝트의 이름 (최대 50자) | 
description | 
String | 아니오 | 새 프로젝트의 설명 (최대 500자) | 
imageURL | 
String | 아니오 | 새 프로젝트의 이미지 URL | 
companyId | 
String | 아니오 | 새 프로젝트가 생성될 회사의 ID. 제공되지 않으면 소스 프로젝트의 회사를 사용합니다. | 
options | 
CopyProjectOptionsInput! | ✅ 예 | 복사할 요소에 대한 구성 | 
CopyProjectOptionsInput
| 매개변수 | 유형 | 필수 | 설명 | 
|---|---|---|---|
assignees | 
Boolean | 아니오 | 작업 담당자 복사 (requires people: true) | 
automations | 
Boolean | 아니오 | 프로젝트 자동화 및 워크플로우 복사 | 
checklists | 
Boolean | 아니오 | 작업 체크리스트 복사 | 
customFields | 
Boolean | 아니오 | 사용자 정의 필드 정의 및 값 복사 | 
discussions | 
Boolean | 아니오 | 프로젝트 토론 복사 | 
discussionComments | 
Boolean | 아니오 | 토론에 대한 댓글 복사 (requires discussions: true) | 
dueDates | 
Boolean | 아니오 | 작업의 마감일 복사 | 
files | 
Boolean | 아니오 | 파일 첨부 복사 | 
forms | 
Boolean | 아니오 | 프로젝트 양식 복사 | 
people | 
Boolean | 아니오 | 프로젝트 구성원 복사 | 
projectUserRoles | 
Boolean | 아니오 | 사용자 역할 및 권한 복사 (requires people: true) | 
statusUpdates | 
Boolean | 아니오 | 프로젝트 상태 업데이트 복사 | 
statusUpdateComments | 
Boolean | 아니오 | 상태 업데이트에 대한 댓글 복사 (requires statusUpdates: true) | 
tags | 
Boolean | 아니오 | 프로젝트 태그 복사 | 
todoActions | 
Boolean | 아니오 | 작업 작업/하위 작업 복사 | 
todoComments | 
Boolean | 아니오 | 작업 댓글 복사 | 
todoLists | 
Boolean | 아니오 | 작업 목록/섹션 복사 | 
todos | 
Boolean | 아니오 | 작업 복사 | 
coverConfig | 
Boolean | 아니오 | 할 일 커버 이미지 구성 복사 | 
응답
변형은 Boolean 값을 반환합니다:
true- 복사 작업이 성공적으로 큐에 추가되었습니다.false- 복사 작업을 시작할 수 없습니다.
복사 상태 확인
복사가 비동기적이므로 copyProjectStatus 쿼리를 사용하여 진행 상황을 확인합니다:
복사 상태 필드
| 필드 | 유형 | 설명 | 
|---|---|---|
queuePosition | 
Int | 복사 대기열에서의 위치 | 
totalQueues | 
Int | 대기열의 총 항목 수 | 
isActive | 
Boolean | 복사 작업이 현재 활성인지 여부 | 
oldProject | 
Project | 복사 중인 소스 프로젝트 | 
newProjectName | 
String | 생성 중인 새 프로젝트의 이름 | 
isTemplate | 
Boolean | 템플릿으로 복사 중인지 여부 | 
oldCompany | 
Company | 소스 회사 | 
newCompany | 
Company | 대상 회사 | 
query CheckCopyStatus {
  copyProjectStatus {
    queuePosition
    totalQueues
    isActive
    oldProject {
      id
      name
    }
    newProjectName
    isTemplate
    oldCompany {
      id
      name
    }
    newCompany {
      id
      name
    }
  }
}
필요한 권한
프로젝트를 복사하려면 소스 및 대상 위치 모두에서 적절한 권한이 필요합니다:
| 시나리오 | 필요한 권한 | 
|---|---|
| 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  | 
소스 프로젝트는 복사되기 위해 활성 상태(보관되지 않음)이어야 합니다.
오류 응답
프로젝트를 찾을 수 없음
{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}
소스 프로젝트가 존재하지 않거나 접근 권한이 없을 때 발생합니다.
회사를 찾을 수 없음
{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "COMPANY_NOT_FOUND"
    }
  }]
}
대상 회사가 존재하지 않거나 접근 권한이 없을 때 발생합니다.
프로젝트가 너무 큼
{
  "errors": [{
    "message": "Project is too large to copy",
    "extensions": {
      "code": "CREATE_PROJECT_LIMIT"
    }
  }]
}
프로젝트에 250,000개 이상의 작업이 있을 때 발생합니다.
복사가 이미 진행 중임
{
  "errors": [{
    "message": "Oops!"
  }]
}
이미 복사 작업이 진행 중일 때 발생합니다.
중요한 노트
- 비동기 작업: 변형은 백그라운드 작업을 큐에 추가하고 즉시 반환합니다. 진행 상황을 추적하려면 
copyProjectStatus를 사용하세요. - 한 번에 하나의 복사: 사용자당 한 번에 하나의 복사 작업만 활성화될 수 있습니다.
 - 크기 제한: 250,000개 이상의 작업이 있는 프로젝트는 복사할 수 없습니다.
 - 논리적 종속성: 일부 옵션은 함께 사용할 때 가장 잘 작동합니다:
assignees는people: true와 함께 작동합니다 (사람 없이는 담당자가 복사되지 않습니다).discussionComments는discussions: true와 함께 작동합니다.statusUpdateComments는statusUpdates: true와 함께 작동합니다.projectUserRoles는people: true와 함께 작동합니다.
 - 이름 처리: 프로젝트 이름은 잘리며 모든 URL은 자동으로 제거됩니다.
 - 큐 우선 순위: 엔터프라이즈 고객은 복사 대기열에서 더 높은 우선 순위를 받습니다.
 - 상태 캐싱: 복사 상태는 완료 후 6시간 동안 캐시됩니다.