Lewati ke konten

Kode galat

Galat selalu berbentuk:

{ "code": "validation_failed", "message": "input tidak valid", "fieldErrors": { "route": "channel.route_invalid" } }

code stabil dan aman diproses program. message hanya untuk dibaca manusia. fieldErrors (opsional) memetakan nama field ke kode galat.

Status code (contoh) Arti
401 unauthorized Header kosong atau bukan Bearer tpat_….
401 auth.invalid_token Token tidak dikenal, dicabut, atau kedaluwarsa.
403 forbidden Token tidak punya izin untuk aksi atau objek itu.
403 pat.not_allowed Rute di luar /api/v1/workspaces/....
403 quota.channels_exceeded, quota.devices_exceeded, quota.workspaces_exceeded Kuota pemilik workspace tercapai.
404 channel.not_found, device.not_found, … Tidak ada, atau tidak boleh dibaca oleh token (tidak dibedakan).
409 config.not_deliverable, dashboard.version_conflict, … Bentrok keadaan, misalnya rule penyimpanan sudah ada atau versi dashboard usang.
422 validation_failed Input tidak valid; lihat fieldErrors.
429 rate_limited Terlalu sering (batas laju).
503 backend_unreachable Web tidak bisa menjangkau backend.
Kode Penyebab dan penanganan
workspace.last_admin Workspace wajib punya minimal satu Admin aktif. Jadikan anggota lain Admin dulu.
rule.cannot_enable Rule belum lengkap atau tidak valid; perbaiki galat per node, lalu aktifkan.
rule.lua_missing_logic_function Skrip Lua harus berbentuk function logicFunction() … end dan return logicFunction().
config.no_channel / config.not_deliverable Tidak ada channel tujuan yang diikuti (subscribe) device atau gateway-nya.
config.serial_required Device belum punya Serial; isi dulu.
device.gateway_has_children Gateway masih dipakai device lain; lepaskan dulu.
group.cycle, group.too_deep, group.has_children Hierarki group tidak valid atau group masih punya anak.
invitation.email_mismatch Pendaftaran lewat undangan harus memakai e-mail yang sama dengan undangan.
bootstrap.invalid_proof, bootstrap.disabled Proof salah (atau workspace/External ID/nonce salah), atau konfigurasi dinonaktifkan.
report.busy, report.rows_limit, report.pdf_unavailable Report sedang berjalan, data melebihi batas baris, atau layanan PDF tidak tersedia.
workspace.delete_not_owner, workspace.confirm_mismatch Hanya pemilik yang bisa menghapus, dan konfirmasi harus berupa route.

Tip: tampilkan message kepada pengguna akhir, tetapi percabangan logika program Anda pada code.