Referensi komprehensif semua kode kesalahan di API GraphQL Blue, diorganisir berdasarkan kategori


Format Respon Kesalahan

API GraphQL Blue mengembalikan kesalahan dalam format standar yang mengikuti spesifikasi GraphQL. Ketika kesalahan terjadi, respon mencakup array errors dengan informasi rinci tentang apa yang salah.

Contoh Respon Kesalahan

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

Struktur Kesalahan

Setiap objek kesalahan berisi:

  • message: Deskripsi kesalahan yang dapat dibaca manusia
  • extensions.code: Kode kesalahan yang dapat dibaca mesin untuk penanganan programatik

Keamanan Kesalahan Produksi

Blue menerapkan sistem keamanan untuk paparan kesalahan:

  • Kesalahan Aman: Menampilkan kode kesalahan dan pesan yang sebenarnya kepada klien
  • Kesalahan Tidak Aman: Mengembalikan INTERNAL_SERVER_ERROR generik untuk menyembunyikan detail sensitif
  • Sumber Daya Tidak Ditemukan: Semua kesalahan *_NOT_FOUND dianggap aman dan selalu dipaparkan

Kategori Kesalahan

Blue mendefinisikan 108 kode kesalahan kustom yang diorganisir ke dalam kategori berikut:

Kesalahan Autentikasi & Otorisasi

Kode Kesalahan Pesan Deskripsi
UNAUTHENTICATED "Autentikasi diperlukan." Permintaan memerlukan autentikasi tetapi tidak ada yang diberikan
FORBIDDEN "Anda tidak diizinkan." Terautentikasi tetapi tidak memiliki izin yang diperlukan

Kesalahan Sumber Daya Tidak Ditemukan (52 total)

Sumber Daya Inti

Kode Kesalahan Pesan Deskripsi
TODO_NOT_FOUND "Todo tidak ditemukan." Rekaman/todo tidak ada atau pengguna tidak memiliki akses
TODO_LIST_NOT_FOUND "Daftar todo tidak ditemukan." Daftar tidak ada atau pengguna tidak memiliki akses
PROJECT_NOT_FOUND "Proyek tidak ditemukan." Proyek tidak ada atau pengguna tidak memiliki akses
COMPANY_NOT_FOUND "Perusahaan tidak ditemukan." Perusahaan tidak ada atau pengguna tidak memiliki akses
USER_NOT_FOUND "Pengguna tidak ditemukan." Pengguna tidak ada dalam sistem

Bidang Kustom & Formulir

Kode Kesalahan Pesan Deskripsi
CUSTOM_FIELD_NOT_FOUND "Bidang kustom tidak ditemukan." Bidang kustom tidak ada
CUSTOM_FIELD_OPTION_NOT_FOUND "Opsi bidang kustom tidak ditemukan." Opsi bidang pilih tidak ada
FORM_NOT_FOUND "Formulir tidak ditemukan." Template formulir tidak ada
FORM_FIELD_NOT_FOUND "Bidang formulir tidak ditemukan." Bidang formulir tidak ada

Komponen Proyek

Kode Kesalahan Pesan Deskripsi
TAG_NOT_FOUND "Tag tidak ditemukan." Tag tidak ada dalam proyek
AUTOMATION_NOT_FOUND "Automasi tidak ditemukan." Aturan automasi tidak ada
CHART_NOT_FOUND "Grafik tidak ditemukan." Grafik dasbor tidak ada
WEBHOOK_NOT_FOUND "Webhook tidak ditemukan." Konfigurasi webhook tidak ada
TEMPLATE_NOT_FOUND "Template tidak ditemukan." Template proyek tidak ada

Komentar & Aktivitas

Kode Kesalahan Pesan Deskripsi
COMMENT_NOT_FOUND "Komentar tidak ditemukan." Komentar tidak ada
ACTIVITY_NOT_FOUND "Aktivitas tidak ditemukan." Entri log aktivitas tidak ada
REACTION_NOT_FOUND "Reaksi tidak ditemukan." Reaksi komentar tidak ada

Sumber Daya Lainnya

Kode Kesalahan Pesan Deskripsi
FILE_NOT_FOUND "File tidak ditemukan." Lampiran file tidak ada
SUBSCRIPTION_NOT_FOUND "Langganan tidak ditemukan." Langganan penagihan tidak ada
INVOICE_NOT_FOUND "Faktur tidak ditemukan." Rekaman faktur tidak ada
CHECKLIST_NOT_FOUND "Checklist tidak ditemukan." Checklist tidak ada
CHECKLIST_ITEM_NOT_FOUND "Item checklist tidak ditemukan." Item checklist tidak ada
PROJECT_ROLE_NOT_FOUND "Peran proyek tidak ditemukan." Peran proyek kustom tidak ada
PROJECT_ACCESS_NOT_FOUND "Akses proyek tidak ditemukan." Akses proyek pengguna tidak ada
NOTIFICATION_NOT_FOUND "Notifikasi tidak ditemukan." Notifikasi tidak ada
DASHBOARD_NOT_FOUND "Dasbor tidak ditemukan." Dasbor tidak ada
KEY_NOT_FOUND "Kunci tidak ditemukan." Kunci pengaturan tidak ada

Kesalahan Validasi

Kode Kesalahan Pesan Deskripsi
BAD_USER_INPUT "Input tidak valid." Kegagalan validasi input generik
VALIDATION_ERROR "Parameter tidak valid" Parameter permintaan gagal validasi
BAD_EMAIL "Anda perlu memasukkan email yang valid." Format email tidak valid
INVALID_IDS "ID tidak valid." Satu atau lebih ID dalam permintaan tidak valid
PHONE_INVALID "Telepon tidak valid." Format nomor telepon tidak valid
URL_INVALID "URL tidak valid." Format URL tidak valid
INVALID_RECURRING_DUE_DATE "Tanggal jatuh tempo tidak valid untuk tugas berulang" Validasi tanggal tugas berulang gagal
INVALID_COLOR "Warna tidak valid" Nilai warna tidak sesuai dengan format yang diharapkan

Kesalahan Logika Bisnis

Batas & Kuota

Kode Kesalahan Pesan Deskripsi
COMPANY_LIMIT "Anda telah mencapai batas perusahaan untuk akun Anda." Batas maksimum perusahaan tercapai
PROJECT_LIMIT "Anda telah mencapai batas proyek untuk perusahaan Anda." Batas maksimum proyek tercapai
USER_LIMIT "Anda telah mencapai batas pengguna untuk perusahaan Anda." Batas maksimum pengguna tercapai
PROJECT_TEMPLATE_LIMIT "Anda telah mencapai batas template untuk perusahaan Anda." Batas maksimum template tercapai
CUSTOM_FIELD_LIMIT "Batas bidang kustom tercapai." Batas maksimum bidang kustom tercapai
TODO_LIST_LIMIT "Anda telah mencapai batas daftar untuk proyek Anda." Batas maksimum daftar per proyek
TOO_MANY_TODOS "Terlalu banyak todo." Batas rekaman terlampaui
TOO_MANY_OPTIONS "Terlalu banyak opsi." Batas opsi bidang pilih terlampaui
MAX_FILE_SIZE "Ukuran file maksimum adalah 4.8gb" Batas ukuran unggahan file terlampaui

Konflik Sumber Daya

Kode Kesalahan Pesan Deskripsi
TAG_ALREADY_EXISTS "Tag sudah ada." Tag dengan nama yang sama ada dalam proyek
COMPANY_SLUG_ALREADY_EXISTS "Perusahaan sudah ada." Slug/URL perusahaan sudah digunakan
USER_ALREADY_EXISTS "Pengguna sudah ada." Email pengguna sudah terdaftar
ALREADY_INVITED "Pengguna sudah diundang." Pengguna sudah memiliki undangan yang tertunda
USER_ALREADY_IN_PROJECT "Pengguna sudah ada di proyek ini." Pengguna sudah memiliki akses proyek
FILE_TYPE_NOT_ALLOWED "Tipe file tidak diizinkan." Tipe file yang diunggah dibatasi

Kesalahan Izin & Akses

Kode Kesalahan Pesan Deskripsi
UNABLE_TO_DELETE_ONLY_ADMIN "Tidak dapat menghapus satu-satunya Admin di perusahaan." Tidak dapat menghapus admin terakhir
UNABLE_TO_UPDATE_OWNER "Tidak dapat memperbarui PEMILIK." Tidak dapat mengubah izin pemilik
TODO_LIST_IS_HIDDEN "Daftar todo tersembunyi." Daftar tersembunyi dari peran pengguna
COMPANY_NOT_ACTIVE "Perusahaan tidak aktif." Langganan perusahaan tidak aktif
PROJECT_NOT_ACTIVE "Proyek tidak aktif." Proyek diarsipkan/tidak aktif

Kesalahan Integritas Data

Kode Kesalahan Pesan Deskripsi
UNABLE_TO_DELETE_LIST_WITH_TODOS "Tidak dapat menghapus daftar dengan todo." Daftar harus kosong untuk dihapus
UNABLE_TO_DELTE_FILE "Tidak dapat menghapus file." Penghapusan file gagal (kesalahan ketik dalam kode)
UNABLE_TO_MOVE_TODO "Tidak dapat memindahkan todo." Tidak dapat memindahkan rekaman antar daftar
DEPENDENCY_HAS_DEPENDENCY "Ketergantungan memiliki ketergantungan" Ketergantungan melingkar terdeteksi
TODO_DEPENDS_ON_ITSELF "Todo bergantung pada dirinya sendiri" Ketergantungan referensi diri

Kesalahan Stripe/Pembayaran

Kode Kesalahan Pesan Deskripsi
STRIPE_CREATING_CUSTOMER "Kesalahan saat membuat pelanggan di stripe." Pembuatan pelanggan Stripe gagal
STRIPE_ALREADY_SUBSCRIBED "Sudah berlangganan." Langganan aktif ada
STRIPE_MISSING_PAYMENT_METHOD "Metode pembayaran hilang." Tidak ada metode pembayaran yang terdaftar
STRIPE_CREATING_SUBSCRIPTION "Kesalahan saat membuat langganan di stripe." Pembuatan langganan gagal
STRIPE_UPDATING_SUBSCRIPTION "Kesalahan saat memperbarui langganan di stripe." Pembaruan langganan gagal
STRIPE_CHECKOUT_SESSION "Kesalahan saat membuat sesi checkout di stripe." Pembuatan sesi checkout gagal
STRIPE_CUSTOMER_PORTAL "Kesalahan saat membuat portal pelanggan di stripe." Pembuatan sesi portal gagal
STRIPE_TAX_ID "Tidak dapat menyimpan ID pajak" Validasi/simpan ID pajak gagal
PAYMENT_REQUIRED "Pembayaran diperlukan." Fitur memerlukan langganan aktif
NO_PAYMENT_REQUIRED "Tidak ada pembayaran yang diperlukan." Pembayaran tidak diperlukan untuk operasi

Kesalahan Autentikasi & Sesi

Kode Kesalahan Pesan Deskripsi
INVALID_CREDENTIALS "Kredensial tidak valid." Nama pengguna/kata sandi salah
EXPIRED_RESET_TOKEN "Token reset telah kedaluwarsa." Token reset kata sandi kedaluwarsa
OAUTH_FAILED "Proses OAuth gagal." Autentikasi OAuth gagal
SAML_NOT_ENABLED "SSO (SAML) tidak diaktifkan." SSO SAML tidak dikonfigurasi
SSO_AUTO_PROVISION_DISABLED "Auto provision dinonaktifkan." Tidak dapat membuat pengguna SSO secara otomatis

Pembatasan Laju

Pembatasan laju ditangani oleh paket graphql-rate-limit dengan konfigurasi yang berbeda:

Jenis Batas Jendela Permintaan Maks Diterapkan Pada
Standard 60s 500 Most queries/mutations
Sensitive 300s 10 Password reset, auth operations
Expensive 60s 20 Complex queries, bulk operations
Search 60s 60 Search operations
File Upload 60s 100 File upload operations

Ketika dibatasi, Anda akan menerima kesalahan GraphQL standar dengan pesan yang menunjukkan batas terlampaui.

Kesalahan Sistem & Internal

Kode Kesalahan Pesan Deskripsi
INTERNAL_SERVER_ERROR "Kesalahan server internal." Kesalahan generik untuk kesalahan tidak aman dalam produksi
UNKNOWN_ERROR "Kesalahan tidak dikenal." Kesalahan tak terduga terjadi
RESOLVER_NOT_FOUND "Resolver tidak ditemukan" Resolver GraphQL hilang
FIELD_NOT_IN_SCHEMA "Field tidak ada dalam skema" Field yang diminta tidak ada

Praktik Terbaik Penanganan Kesalahan

Penanganan Sisi Klien

try {
  const result = await client.mutate({
    mutation: CREATE_TODO,
    variables: { input }
  });
} catch (error) {
  if (error.graphQLErrors?.length > 0) {
    const errorCode = error.graphQLErrors[0].extensions?.code;
    
    switch (errorCode) {
      case 'UNAUTHENTICATED':
        // Redirect to login
        break;
      case 'TODO_NOT_FOUND':
        // Show "Record not found" message
        break;
      case 'VALIDATION_ERROR':
        // Display validation errors
        break;
      default:
        // Show generic error message
    }
  }
}

Skenario Kesalahan Umum

  1. Autentikasi Diperlukan: UNAUTHENTICATED - Pengguna perlu masuk
  2. Izin Ditolak: FORBIDDEN - Pengguna tidak memiliki peran/izin yang diperlukan
  3. Sumber Daya Tidak Ditemukan: *_NOT_FOUND - Sumber daya tidak ada atau pengguna tidak dapat mengaksesnya
  4. Validasi Gagal: VALIDATION_ERROR, BAD_USER_INPUT - Periksa parameter input
  5. Pembatasan Laju: Periksa header batas laju dan terapkan penundaan
  6. Pembayaran Diperlukan: PAYMENT_REQUIRED - Fitur memerlukan langganan

Dokumentasi Terkait

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