Buat salinan lengkap dari proyek yang ada dengan opsi yang dapat dikonfigurasi untuk apa yang akan disertakan.
Salin Proyek
Mutasi salin proyek memungkinkan Anda untuk menduplikasi proyek yang ada dalam perusahaan yang sama atau ke perusahaan yang berbeda. Ini berguna untuk membuat template proyek, menyiapkan proyek serupa, atau memindahkan proyek antar perusahaan. Operasi salin berjalan secara asinkron untuk menangani proyek besar dengan efisien.
Contoh Dasar
mutation CopyProject {
  copyProject(
    input: {
      projectId: "proj_123abc"
      name: "New Project Copy"
      options: {
        todos: true
        todoLists: true
        people: true
      }
    }
  )
}
Contoh Lanjutan
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
      }
    }
  )
}
Parameter Masukan
CopyProjectInput
| Parameter | Tipe | Diperlukan | Deskripsi | 
|---|---|---|---|
projectId | 
String! | ✅ Ya | ID proyek yang akan disalin | 
name | 
String! | ✅ Ya | Nama untuk proyek baru (maks 50 karakter) | 
description | 
String | Tidak | Deskripsi untuk proyek baru (maks 500 karakter) | 
imageURL | 
String | Tidak | URL gambar untuk proyek baru | 
companyId | 
String | Tidak | ID perusahaan tempat proyek baru harus dibuat. Jika tidak disediakan, menggunakan perusahaan proyek sumber | 
options | 
CopyProjectOptionsInput! | ✅ Ya | Konfigurasi untuk elemen apa yang akan disalin | 
CopyProjectOptionsInput
| Parameter | Tipe | Diperlukan | Deskripsi | 
|---|---|---|---|
assignees | 
Boolean | Tidak | Salin penugasan tugas (memerlukan people: true) | 
automations | 
Boolean | Tidak | Salin otomatisasi dan alur kerja proyek | 
checklists | 
Boolean | Tidak | Salin daftar periksa tugas | 
customFields | 
Boolean | Tidak | Salin definisi dan nilai bidang kustom | 
discussions | 
Boolean | Tidak | Salin diskusi proyek | 
discussionComments | 
Boolean | Tidak | Salin komentar pada diskusi (memerlukan discussions: true) | 
dueDates | 
Boolean | Tidak | Salin tanggal jatuh tempo pada tugas | 
files | 
Boolean | Tidak | Salin lampiran file | 
forms | 
Boolean | Tidak | Salin formulir proyek | 
people | 
Boolean | Tidak | Salin anggota proyek | 
projectUserRoles | 
Boolean | Tidak | Salin peran dan izin pengguna (memerlukan people: true) | 
statusUpdates | 
Boolean | Tidak | Salin pembaruan status proyek | 
statusUpdateComments | 
Boolean | Tidak | Salin komentar pada pembaruan status (memerlukan statusUpdates: true) | 
tags | 
Boolean | Tidak | Salin tag proyek | 
todoActions | 
Boolean | Tidak | Salin tindakan/subtugas tugas | 
todoComments | 
Boolean | Tidak | Salin komentar tugas | 
todoLists | 
Boolean | Tidak | Salin daftar/section tugas | 
todos | 
Boolean | Tidak | Salin tugas | 
coverConfig | 
Boolean | Tidak | Salin konfigurasi gambar sampul todo | 
Respons
Mutasi mengembalikan nilai Boolean:
true- Pekerjaan salin telah berhasil dijadwalkanfalse- Pekerjaan salin tidak dapat dimulai
Memeriksa Status Salin
Karena penyalinan bersifat asinkron, gunakan kueri copyProjectStatus untuk memeriksa kemajuan:
Bidang Status Salin
| Bidang | Tipe | Deskripsi | 
|---|---|---|
queuePosition | 
Int | Posisi dalam antrean salin | 
totalQueues | 
Int | Total jumlah item dalam antrean | 
isActive | 
Boolean | Apakah operasi salin saat ini aktif | 
oldProject | 
Project | Proyek sumber yang sedang disalin | 
newProjectName | 
String | Nama proyek baru yang sedang dibuat | 
isTemplate | 
Boolean | Apakah ini menyalin sebagai template | 
oldCompany | 
Company | Perusahaan sumber | 
newCompany | 
Company | Perusahaan target | 
query CheckCopyStatus {
  copyProjectStatus {
    queuePosition
    totalQueues
    isActive
    oldProject {
      id
      name
    }
    newProjectName
    isTemplate
    oldCompany {
      id
      name
    }
    newCompany {
      id
      name
    }
  }
}
Izin yang Diperlukan
Untuk menyalin proyek, Anda memerlukan izin yang sesuai di kedua lokasi sumber dan target:
| Skenario | Izin yang Diperlukan | 
|---|---|
| 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  | 
Proyek sumber harus aktif (tidak diarsipkan) untuk dapat disalin.
Respons Kesalahan
Proyek Tidak Ditemukan
{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}
Terjadi ketika proyek sumber tidak ada atau Anda tidak memiliki akses.
Perusahaan Tidak Ditemukan
{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "COMPANY_NOT_FOUND"
    }
  }]
}
Terjadi ketika perusahaan target tidak ada atau Anda tidak memiliki akses.
Proyek Terlalu Besar
{
  "errors": [{
    "message": "Project is too large to copy",
    "extensions": {
      "code": "CREATE_PROJECT_LIMIT"
    }
  }]
}
Terjadi ketika proyek memiliki lebih dari 250.000 tugas.
Salin Sudah Dalam Proses
{
  "errors": [{
    "message": "Oops!"
  }]
}
Terjadi ketika Anda sudah memiliki operasi salin yang sedang berlangsung.
Catatan Penting
- Operasi Asinkron: Mutasi menjadwalkan pekerjaan latar belakang dan segera mengembalikan. Gunakan 
copyProjectStatusuntuk melacak kemajuan. - Satu Salinan Sekaligus: Hanya satu operasi salin per pengguna yang dapat aktif pada satu waktu.
 - Batas Ukuran: Proyek dengan lebih dari 250.000 tugas tidak dapat disalin.
 - Ketergantungan Logis: Beberapa opsi bekerja paling baik bersama:
assigneesbekerja denganpeople: true(penugasan tidak akan disalin tanpa orang)discussionCommentsbekerja dengandiscussions: truestatusUpdateCommentsbekerja denganstatusUpdates: trueprojectUserRolesbekerja denganpeople: true
 - Pemrosesan Nama: Nama proyek dipangkas dan URL apa pun secara otomatis dihapus.
 - Prioritas Antrean: Pelanggan enterprise menerima prioritas lebih tinggi dalam antrean salin.
 - Caching Status: Status salin disimpan dalam cache selama 6 jam setelah penyelesaian.