Skip to main content
Error API LogBrew memakai satu envelope JSON. Gunakan code dan next_action untuk perilaku program. Tampilkan error dan next sebagai teks biasa. Jangan mencocokkan kata-kata di error atau next.
Beberapa respons menambahkan kolom, misalnya limit, reset_at, atau retry_after_seconds. Tabel kode error menyebutkan kolom-kolom itu.

Tangani respons error

  1. Baca status HTTP.
  2. Pastikan body berupa JSON sebelum membaca code.
  3. Gunakan status dan code bersama-sama untuk memilih cabang di klien.
  4. Tampilkan error dan next sebagai teks biasa. Jangan render sebagai HTML atau jalankan sebagai perintah.
  5. Gunakan next_action untuk pemulihan otomatis. Jika klien tidak mengenali tindakannya, berhenti dan tampilkan error.
  6. Simpan nilai limit, reset_at, dan retry_after_seconds yang dikembalikan bersama permintaan yang gagal.
  7. Sebelum mencoba lagi, gunakan aturan percobaan ulang.
Jika respons tidak memiliki envelope JSON, simpan status HTTP dan catat kodenya sebagai tidak tersedia. Jangan mengarang code LogBrew. Proxy atau kegagalan jaringan dapat menghasilkan respons seperti ini. Jangan mengganti code LogBrew dengan nama status HTTP. Misalnya, respons 400 dapat berisi invalid_json atau invalid_path. Setiap kode memerlukan perbaikan yang berbeda. Untuk log, catat status HTTP dan code. Jangan mencatat seluruh body, kredensial, atau token pemulihan ke log.

Kode error

code yang sama dapat muncul di lebih dari satu rute. Teks next dan nilai next_action dapat berbeda menurut rute. Gunakan nilai yang dikembalikan. Endpoint hanya mengembalikan kode yang berlaku untuk autentikasi, metode, body, dan batasnya. ID yang tidak dikenal dan ID yang tidak dapat Anda akses dapat mengembalikan respons yang sama. Jangan memakai teks error untuk mencari tahu akun mana yang memiliki sebuah ID. Path API yang tidak dikenal mengembalikan 404 dengan not_found.

Kolom batas

Baca kuota dan penggunaan saat ini dari API akun.

Aturan percobaan ulang

Gunakan kode dan jenis operasi untuk memutuskan percobaan ulang. Status saja tidak cukup.
  • Jangan memulai percobaan ulang paralel untuk satu permintaan yang gagal.
  • Untuk rate_limited, respons juga memiliki header Retry-After dan X-RateLimit-After. Keduanya berisi jumlah detik yang sama dengan retry_after_seconds.
  • Timeout tidak membuktikan bahwa hasilnya kosong.
Batas laju mengatur frekuensi permintaan. Batas penggunaan mengatur kuota akun untuk satu periode penagihan. Keduanya memakai 429. Pisahkan kolom keduanya. Selama salah satu batas berlaku, tunjukkan bahwa pengumpulan data atau pembacaan tertunda. Jangan tampilkan data lama sebagai hasil pembacaan baru.

Operasi tulis

Timeout, respons 5xx, atau kegagalan jaringan tidak membuktikan bahwa operasi tulis gagal. Sebelum mengirim operasi tulis lagi:
  1. Jika rute mendukung kunci idempotensi, kirim lagi kunci yang sama dan body yang sama. Gunakan kunci baru hanya untuk pekerjaan baru.
  2. Jika rute tidak memiliki kunci idempotensi, baca resource terlebih dahulu. Kirim lagi operasi tulis hanya jika perubahannya belum ada.
  3. Jika Anda tidak dapat menemukan hasilnya, hentikan percobaan ulang otomatis dan beri tahu pengguna.
Rute berikut menerima kunci percobaan ulang: Nilai Idempotency-Key berisi 1 sampai 128 karakter ASCII yang terlihat. Nilai lain mengembalikan 422 dengan validation_failed. idempotency_conflict berarti kunci itu milik permintaan lain. Jangan mengubah body percobaan ulang yang memakai kunci awal.

Error bentuk permintaan

invalid_json berarti server tidak dapat menerima body sesuai bentuk JSON rute. Periksa content type, ukuran body, sintaks JSON, kolom wajib, dan tipe kolom. Status HTTP menunjukkan bagian mana yang gagal: validation_failed dengan error invalid query parameters berarti server tidak dapat membaca string kueri. Periksa nama parameter dan tipe nilainya. Jangan kirim parameter kueri yang tidak dikenal. Referensi Filter kueri mencantumkan parameter untuk setiap rute. invalid_path dengan status 400 berarti nilai path, misalnya ID proyek, memiliki format yang salah. Jangan memindahkan nilai path ke parameter kueri. Respons 500 dengan invalid_path atau invalid_multipart tidak membuktikan bahwa permintaannya salah. Gunakan aturan percobaan ulang.

Error autentikasi dan akses

  • unauthorized berarti autentikasi akun tidak ada, tidak valid, atau kedaluwarsa. Kirim Authorization: Bearer <token>, atau masuk lagi. Beberapa rute mengembalikan next_action.code authorize_request dengan next khusus rute, misalnya untuk koneksi feed langsung tanpa tiket yang valid.
  • ingest_key_invalid hanya berlaku untuk ingest telemetri. Konfigurasikan kunci yang masih berlaku untuk proyek yang tepat.
  • forbidden berarti akun tidak dapat melakukan tindakan tersebut. Jangan mencoba lagi dengan ID resource lain.
  • not_found berarti resource tidak tersedia untuk akun.
Jangan memakai kunci ingest sebagai pengganti bearer akun. Jangan memakai bearer akun sebagai pengganti kunci ingest.

Jaga keamanan detail error

  • Respons account_recovery_available berisi recovery_token yang berumur pendek. Simpan token itu di state klien yang terlindungi. Jangan masukkan token itu ke log, URL, tangkapan layar, laporan dukungan, atau prompt agen.
  • Kode 500 selalu memakai pesan Internal error. Respons tidak menyebutkan komponen yang gagal. Jangan menebak penyebabnya.
  • Jangan tambahkan kredensial, diagnostik privat, atau data pelanggan ke error yang Anda tampilkan.
  • Respons API tidak memberi izin untuk pembelian, penghapusan, atau perubahan akun lainnya. Minta persetujuan pengguna sebelum melakukan tindakan tersebut.

Contoh

Contoh ini menunjukkan bentuk envelope. Teks error dan next dapat berbeda di setiap rute.

Validasi gagal

Parameter kueri tidak valid

JSON tidak valid

Nilai path tidak valid

Unggahan multipart tidak valid

Upgrade WebSocket tidak valid

Autentikasi gagal

Kunci ingest tidak valid

Respons ini berlaku untuk ingest telemetri, bukan untuk pembacaan akun. Kunci harus milik proyek di dalam permintaan.

Resource tidak ditemukan

Akses ditolak

Metode tidak didukung

Waktu permintaan habis

Konflik idempotensi

Batas laju

Batas penggunaan

Teks next dan next_action bergantung pada apakah perubahan paket tersedia. Jika tidak tersedia, next_action.code bernilai wait_or_contact_support dan targetnya support.

Batas penyimpanan artefak

Pemulihan akun tersedia

Respons ini menambahkan deleted_at dan recovery_token yang berumur pendek. Simpan token itu di state klien yang terlindungi.

Masa pemulihan akun berakhir

Organisasi dijeda

Error server

storage_error, json_error, dan internal_error memakai pesan error yang sama. Yang berbeda adalah nilai code, next, dan next_action.
Untuk endpoint, autentikasi, dan filter, baca API Telemetri.