Package google.rpc

Indeks

BadRequest

Menjelaskan pelanggaran dalam permintaan klien. Jenis error ini berfokus pada aspek sintaksis permintaan.

Kolom
field_violations[]

FieldViolation

Menjelaskan semua pelanggaran dalam permintaan klien.

FieldViolation

Jenis pesan yang digunakan untuk mendeskripsikan satu kolom permintaan yang buruk.

Kolom
field

string

Jalur yang mengarah ke kolom dalam isi permintaan. Nilainya akan berupa urutan ID yang dipisahkan titik yang mengidentifikasi kolom buffering protokol.

Pertimbangkan hal berikut:

message CreateContactRequest {
  message EmailAddress {
    enum Type {
      TYPE_UNSPECIFIED = 0;
      HOME = 1;
      WORK = 2;
    }

    optional string email = 1;
    repeated EmailType type = 2;
  }

  string full_name = 1;
  repeated EmailAddress email_addresses = 2;
}

Dalam contoh ini, di proto, field dapat mengambil salah satu nilai berikut:

  • full_name untuk pelanggaran dalam nilai full_name
  • email_addresses[1].email untuk pelanggaran di kolom email pada pesan email_addresses pertama
  • email_addresses[3].type[2] untuk pelanggaran pada nilai type kedua di pesan email_addresses ketiga.

Di JSON, nilai yang sama direpresentasikan sebagai:

  • fullName untuk pelanggaran dalam nilai fullName
  • emailAddresses[1].email untuk pelanggaran di kolom email pada pesan emailAddresses pertama
  • emailAddresses[3].type[2] untuk pelanggaran pada nilai type kedua di pesan emailAddresses ketiga.
description

string

Deskripsi alasan elemen permintaan buruk.

Code

Kode error kanonis pada gRPC API.

Terkadang beberapa kode error dapat terjadi. Layanan seharusnya menampilkan kode error paling spesifik yang berlaku. Misalnya, lebih memilih menampilkan OUT_OF_RANGE daripada FAILED_PRECONDITION jika kedua kode berlaku. Demikian pula, untuk lebih memilih menampilkan NOT_FOUND atau ALREADY_EXISTS daripada FAILED_PRECONDITION.

Enum
OK

Bukan error; ditampilkan jika berhasil.

Pemetaan HTTP: 200 OK

CANCELLED

Operasi dibatalkan, biasanya oleh pemanggil.

Pemetaan HTTP: 499 Client Closed Request

UNKNOWN

Error tidak diketahui. Misalnya, error ini dapat ditampilkan jika nilai Status yang diterima dari ruang alamat lain yang berada di ruang error yang tidak diketahui di ruang alamat ini. Selain itu, error yang dilaporkan oleh API yang tidak menampilkan informasi error yang mencukupi dapat dianggap sebagai error ini.

Pemetaan HTTP: Error Server Internal 500

INVALID_ARGUMENT

Klien menetapkan argumen yang tidak valid. Perhatikan bahwa ini berbeda dengan FAILED_PRECONDITION. INVALID_ARGUMENT menyatakan argumen yang bermasalah, terlepas dari keadaannya di dalam sistem (misalnya, nama file yang salah format).

Pemetaan HTTP: 400 Permintaan Tidak Valid

DEADLINE_EXCEEDED

Batas waktu berakhir sebelum operasi selesai. Untuk operasi yang mengubah keadaan sistem, error ini mungkin ditampilkan, bahkan jika, operasi tersebut telah selesai. Sebagai contoh, respons berhasil dari suatu server dapat tertunda selama waktu yang cukup lama hingga tenggat waktu berakhir.

Pemetaan HTTP: 504 Gateway Timeout

NOT_FOUND

Beberapa entity yang diminta (misalnya, file atau direktori) tidak ditemukan.

Catatan bagi developer server: apabila suatu permintaan ditolak pada seluruh kelas pengguna, seperti peluncuran bertahap, atau daftar yang diberi akses, NOT_FOUND dapat digunakan. Jika permintaan ditolak pada beberapa pengguna di dalam suatu kelas pengguna, seperti pada kontrol akses basis pengguna, maka, PERMISSION_DENIED harus digunakan.

Pemetaan HTTP: 404 Not Found

ALREADY_EXISTS

Entitas yang coba dibuat oleh klien (misalnya, file atau direktori) sudah ada.

Pemetaan HTTP: 409 Conflict

PERMISSION_DENIED

Pemanggil tidak memiliki izin untuk menjalankan operasi yang ditentukan. PERMISSION_DENIED tidak boleh digunakan untuk penolakan yang disebabkan oleh kehabisan beberapa resource (gunakan RESOURCE_EXHAUSTED untuk error tersebut). PERMISSION_DENIED tidak boleh digunakan apabila pemanggil tidak dapat diidentifikasi (gunakan UNAUTHENTICATED untuk error tersebut). Kode error ini tidak menyatakan bahwa suatu permintaan valid atau entitas yang diminta ada atau memenuhi prakondisi lainnya.

Pemetaan HTTP: 403 Forbidden

UNAUTHENTICATED

Permintaan tidak memiliki kredensial autentikasi operasi yang valid.

Pemetaan HTTP: 401 Tidak Sah

RESOURCE_EXHAUSTED

Beberapa resource telah habis, kemungkinan adalah kuota per pengguna, atau kemungkinan seluruh sistem file kehabisan ruang.

Pemetaan HTTP: 429 Too Many Requests

FAILED_PRECONDITION

Operasi tersebut ditolak karena sistem tidak dalam keadaan dibutuhkan untuk menjalankan operasi. Misalnya, direktori yang akan dihapus tidak kosong, operasi rmdir diterapkan pada non-direktori, dll.

Pelaksana layanan dapat menggunakan panduan berikut untuk menentukan manakah yang paling sesuai di antara FAILED_PRECONDITION, ABORTED, dan UNAVAILABLE: (a) Gunakan UNAVAILABLE apabila klien dapat mencoba kembali panggilan yang gagal sesegera mungkin. (b) Gunakan ABORTED jika klien harus mencoba lagi di tingkat yang lebih tinggi. Misalnya, saat pengujian dan set yang ditentukan klien gagal, yang menunjukkan bahwa klien harus memulai ulang urutan baca-ubah-tulis. (c) Gunakan FAILED_PRECONDITION jika klien tidak diizinkan untuk mencoba kembali hingga status sistem diperbaiki secara eksplisit. Misalnya, jika "rmdir" gagal karena direktori tidak kosong, FAILED_PRECONDITION harus ditampilkan karena klien tidak boleh mencoba lagi kecuali jika file dihapus dari direktori.

Pemetaan HTTP: 400 Permintaan Tidak Valid

ABORTED

Operasi dibatalkan, umumnya karena masalah konkurensi seperti kegagalan pemeriksaan pengurut atau pembatalan transaksi.

Lihat panduan di atas untuk menentukan manakah yang sesuai antara FAILED_PRECONDITION, ABORTED, dan UNAVAILABLE.

Pemetaan HTTP: 409 Conflict

OUT_OF_RANGE

Upaya operasi dilakukan melampaui rentang yang valid. Mis., mencari tahu atau membaca melampaui akhir file.

Tidak seperti INVALID_ARGUMENT, error ini menunjukkan masalah yang dapat diperbaiki jika status sistem berubah. Misalnya, sistem file 32-bit akan menghasilkan INVALID_ARGUMENT jika diminta untuk membaca pada offset yang tidak berada dalam rentang [0,2^32-1], tetapi akan menghasilkan OUT_OF_RANGE jika diminta untuk membaca dari offset melewati ukuran file saat ini.

Terdapat sedikit tumpang-tindih antara FAILED_PRECONDITION dengan OUT_OF_RANGE. Sebaiknya gunakan OUT_OF_RANGE (error yang lebih spesifik) jika memang sesuai, sehingga pemanggil yang melakukan iterasi melalui ruang dapat dengan mudah mencari error OUT_OF_RANGE untuk dideteksi ketika selesai.

Pemetaan HTTP: 400 Permintaan Tidak Valid

UNIMPLEMENTED

Operasi tidak diterapkan atau tidak didukung/diaktifkan dalam layanan ini.

Pemetaan HTTP: 501 Not Implemented

INTERNAL

Error internal. Artinya beberapa invarian yang diperlukan oleh sistem pokok telah rusak. Kode error ini disediakan untuk error yang bersifat serius.

Pemetaan HTTP: Error Server Internal 500

UNAVAILABLE

Saat ini layanan tidak tersedia. Kemungkinan besar ini hanya kondisi sementara, yang dapat diperbaiki dengan mencoba kembali menggunakan backoff. Perlu diketahui bahwa mencoba kembali operasi non-idempoten tidak selalu aman.

Lihat panduan di atas untuk menentukan manakah yang sesuai antara FAILED_PRECONDITION, ABORTED, dan UNAVAILABLE.

Pemetaan HTTP: 503 Layanan Tidak Tersedia

DATA_LOSS

Data hilang atau rusak yang tidak dapat dipulihkan.

Pemetaan HTTP: Error Server Internal 500

Status

Jenis Status menentukan model error logis yang cocok untuk berbagai lingkungan pemrograman, meliputi REST API dan RPC API. Jenis error ini digunakan oleh gRPC. Setiap pesan Status berisi tiga bagian data: kode error, pesan error, dan detail error.

Anda dapat mencari tahu lebih lanjut tentang model error ini dan cara penanganannya di Panduan Desain API.

Kolom
code

int32

Kode status, harus berupa nilai enum dari google.rpc.Code.

message

string

Pesan error yang ditampilkan ke developer dan seharusnya dalam bahasa Inggris. Setiap pesan error yang ditampilkan kepada pengguna harus dilokalkan dan dikirim di kolom google.rpc.Status.details, atau dilokalkan oleh klien.

details[]

Any

Daftar pesan yang membawa detail error. Ada seperangkat jenis pesan umum untuk digunakan API.