Buat rekaman baru (todo) di Blue dengan bidang kustom opsional, tag, dan penugasan.


Buat Rekaman

Mutasi createTodo memungkinkan Anda untuk membuat rekaman baru di Blue dengan opsi konfigurasi yang komprehensif termasuk bidang kustom, tag, penugasan, dan lainnya. Rekaman dapat dibuat dalam daftar tertentu atau secara otomatis ditempatkan di daftar default.

Contoh Dasar

Buat rekaman sederhana hanya dengan judul:

mutation CreateRecord {
  createTodo(
    input: {
      title: "New Task"
    }
  ) {
    id
    title
    position
  }
}

Contoh Lanjutan

Buat rekaman dengan semua opsi yang tersedia:

mutation CreateRecordAdvanced {
  createTodo(
    input: {
      todoListId: "clm4n8qwx000008l0g4oxdqn7"
      title: "Product Launch Planning"
      placement: TOP
      description: "<p>Complete product launch preparation including marketing materials and documentation.</p>"
      startedAt: "2025-01-15T09:00:00Z"
      duedAt: "2025-02-01T17:00:00Z"
      notify: true
      assigneeIds: ["user_123", "user_456"]
      tags: [
        { id: "tag_existing_123" }
        { title: "Priority", color: "#ff4b4b" }
        { title: "Marketing" }
      ]
      customFields: [
        {
          customFieldId: "cf_budget_123"
          value: "50000 USD"
        }
        {
          customFieldId: "cf_status_456"
          value: "In Progress"
        }
      ]
      checklists: [
        {
          title: "Pre-launch Checklist"
          position: 1
        }
      ]
    }
  ) {
    id
    uid
    title
    position
    startedAt
    duedAt
    todoList {
      id
      title
    }
    users {
      id
      fullName
    }
    tags {
      id
      title
      color
    }
  }
}

Parameter Input

CreateTodoInput

Parameter Tipe Diperlukan Deskripsi
todoListId String Tidak ID daftar todo untuk menambahkan rekaman. Jika tidak disediakan, menggunakan daftar todo pertama dalam proyek
title String! ✅ Ya Judul rekaman (diperlukan)
position Float Tidak Posisi kustom dalam daftar. Jika tidak disediakan, menggunakan parameter penempatan
placement CreateTodoInputPlacement Tidak Di mana menempatkan rekaman jika posisi tidak ditentukan (ATAS atau BAWAH)
startedAt DateTime Tidak Tanggal/waktu mulai untuk rekaman
duedAt DateTime Tidak Tanggal/waktu jatuh tempo untuk rekaman
notify Boolean Tidak Apakah mengirim notifikasi untuk pembuatan rekaman ini
description String Tidak Konten deskripsi HTML (akan disanitasi)
assigneeIds [String!] Tidak Array ID pengguna untuk ditugaskan ke rekaman ini
checklists [CreateChecklistWithoutTodoInput!] Tidak Array checklist untuk dibuat dengan rekaman
customFields [CreateTodoInputCustomField] Tidak Array nilai bidang kustom
tags [CreateTodoTagInput!] Tidak Array tag untuk dilampirkan ke rekaman

Nilai CreateTodoInputPlacement

Nilai Deskripsi
TOP Tempatkan di bagian atas daftar (posisi tertinggi)
BOTTOM Tempatkan di bagian bawah daftar (posisi terendah)

CreateTodoTagInput

Parameter Tipe Diperlukan Deskripsi
id String Tidak* ID tag yang ada untuk dihubungkan
title String Tidak* Judul tag (membuat baru jika tidak ada)
color String Tidak Warna hex untuk tag baru (default #4a9fff)

*Catatan: Anda harus memberikan baik id (untuk tag yang ada) ATAU title (untuk membuat/mencari berdasarkan judul)

CreateTodoInputCustomField

Parameter Tipe Diperlukan Deskripsi
customFieldId String Tidak ID bidang kustom
value String Tidak Nilai untuk bidang kustom (lihat panduan format di bawah)

CreateChecklistWithoutTodoInput

Parameter Tipe Diperlukan Deskripsi
title String! ✅ Ya Judul checklist
position Float Tidak Posisi checklist dalam rekaman

Format Nilai Bidang Kustom

Saat mengatur nilai bidang kustom, gunakan format ini berdasarkan tipe bidang:

Tipe Bidang Format Contoh
CHECKBOX "true", "1", or "checked" for checked "true"
COUNTRY Country name or ISO code "United States" or "US"
CURRENCY Amount with optional currency "50000 USD"
DATE YYYY-MM-DD or date range "2025-01-15" or "2025-01-15,2025-01-20"
NUMBER Numeric value "42"
PERCENT Numeric value (% optional) "75" or "75%"
RATING Numeric value within range "4" (if max is 5)
PHONE International phone format "+1234567890"
SELECT_SINGLE Custom field option ID "option_123"
SELECT_MULTI Comma-separated option IDs "option_1,option_2"
LOCATION Latitude,longitude "40.7128,-74.0060"
EMAIL Valid email address "user@example.com"
URL Valid URL "https://example.com"
TEXT Plain text value "Any text content"

Bidang Respons

Mutasi mengembalikan objek Todo dengan detail rekaman yang komprehensif:

Bidang Tipe Deskripsi
id String! Pengidentifikasi unik untuk rekaman
uid String! Pengidentifikasi unik alternatif
title String! Judul rekaman
position Float! Posisi dalam daftar
done Boolean! Status penyelesaian
startedAt DateTime Tanggal/waktu mulai
duedAt DateTime Tanggal/waktu jatuh tempo
todoList TodoList Detail daftar todo yang terkait
users [User!] Pengguna yang ditugaskan
tags [Tag!] Tag yang terkait
checklists [Checklist!] Checklist yang terkait
customFields [CustomFieldValue!] Nilai bidang kustom

Izin yang Diperlukan

Pengguna harus memiliki akses proyek yang sesuai untuk membuat rekaman:

Tingkat Akses Dapat Membuat Rekaman
OWNER ✅ Ya
ADMIN ✅ Ya
MEMBER ✅ Ya
CLIENT ✅ Ya
COMMENT_ONLY ❌ Tidak
VIEW_ONLY ❌ Tidak

Mutasi ini memerlukan tingkat akses proyek pengguna untuk menjadi OWNER, ADMIN, MEMBER, atau CLIENT. Pengguna dengan peran VIEW_ONLY atau COMMENT_ONLY tidak dapat membuat rekaman.

Respons Kesalahan

ProjectNotFoundError

{
  "errors": [{
    "message": "Project was not found.",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}

Kapan: Tidak ada konteks proyek yang tersedia untuk pengguna.

TodoListCreateTodoLimitError

{
  "errors": [{
    "message": "Todo list has reached the maximum number of todos.",
    "extensions": {
      "code": "TODO_LIST_CREATE_TODO_LIMIT_ERROR"
    }
  }]
}

Kapan: Daftar todo sudah berisi 100.000 rekaman (batas maksimum).

TodoListNotFoundError

{
  "errors": [{
    "message": "Todo list was not found.",
    "extensions": {
      "code": "TODO_LIST_NOT_FOUND"
    }
  }]
}

Kapan: todoListId yang ditentukan tidak ada atau pengguna tidak memiliki akses.

CustomFieldValueParseError

{
  "errors": [{
    "message": "Invalid phone number format",
    "extensions": {
      "code": "CUSTOM_FIELD_VALUE_PARSE_ERROR"
    }
  }]
}

Kapan: Nilai bidang kustom gagal validasi (misalnya, telepon tidak valid, penilaian di luar jangkauan).

Catatan Penting

Kinerja

  • Setiap daftar todo dapat berisi hingga 100.000 rekaman
  • Membuat rekaman memicu beberapa proses latar belakang (webhook, otomatisasi, pengindeksan pencarian)
  • Operasi batch lebih efisien daripada membuat rekaman satu per satu

Logika Bisnis

  • Penanganan Posisi: Posisi default adalah 65535.0 ketika position maupun placement tidak ditentukan
  • Logika Tanggal:
    • Jika hanya duedAt yang disediakan, startedAt diatur ke awal hari itu
    • Jika hanya startedAt yang disediakan, duedAt diatur ke nilai yang sama
  • Pembuatan Tag: Tag baru secara otomatis dibuat jika tidak ada dengan judul/warnanya yang ditentukan
  • Pemilihan Daftar: Jika tidak ada todoListId yang disediakan, daftar todo pertama dalam proyek akan digunakan

Efek Samping

Membuat rekaman memicu:

  • Pembuatan entri log aktivitas
  • Notifikasi webhook
  • Pembaruan indeks pencarian
  • Eksekusi aturan otomatisasi (jika dikonfigurasi)
  • Notifikasi email/push (jika notify: true)
  • Perhitungan bidang kustom formula dan durasi waktu
  • Pembaruan analitik dan grafik

Endpoint Terkait

  • Daftar Rekaman: Kuery todos untuk mengambil rekaman yang ada
  • Perbarui Rekaman: Gunakan mutasi updateTodo untuk memodifikasi rekaman
  • Daftar Bidang Kustom: Kuery untuk mendapatkan ID bidang kustom yang tersedia
  • Daftar Tag: Kuery untuk mendapatkan ID tag yang ada
  • Daftar Daftar Todo: Kuery untuk mendapatkan ID daftar todo yang tersedia

Asisten AI

Respon dihasilkan menggunakan AI dan mungkin mengandung kesalahan.

Bagaimana saya bisa membantu Anda?

Tanyakan apa saja tentang Blue atau dokumentasi ini.

Masukkan untuk mengirim • Shift+Masukkan untuk baris baru • ⌘I untuk membuka