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
copyProjectStatus
untuk 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:
assignees
bekerja denganpeople: true
(penugasan tidak akan disalin tanpa orang)discussionComments
bekerja dengandiscussions: true
statusUpdateComments
bekerja denganstatusUpdates: true
projectUserRoles
bekerja 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.