Bagian berikut menjelaskan penanganan kesalahan untuk Open Cloud APIs. Karena perbedaan implementasi di berbagai endpoint dan lapisan validasi, respons kesalahan dapat bervariasi secara signifikan dalam formatnya.
Kesalahan Gerbang
Untuk masalah autentikasi atau routing, baik API Open Cloud v1 maupun v2 dapat mengembalikan kesalahan dalam format ini:
Contoh kesalahan gerbang
{
"errors": [
{
"code": 0,
"message": "Kunci API tidak valid"
}
]
}
Open Cloud v2
API Open Cloud v2 umumnya mengikuti format kesalahan yang konsisten ketika kesalahan terjadi di dalam endpoint API itu sendiri.
Format kesalahan standar v2
API Open Cloud v2 mengembalikan kesalahan dalam format ini:
- code - Sebuah string yang mewakili tipe kesalahan (contoh: INVALID_ARGUMENT, NOT_FOUND).
- message - Pesan yang dapat dibaca manusia yang menjelaskan kesalahan.
- details - Sebuah array opsional yang berisi informasi tambahan yang spesifik untuk kesalahan.
Contoh kesalahan v2
{
"code": "INVALID_ARGUMENT",
"message": "ID Pengguna tidak valid dalam permintaan."
}
Contoh kesalahan v2 dengan detail
{
"code": "INVALID_ARGUMENT",
"message": "Filter yang diberikan tidak valid.",
"details": [
{
...
}
]
}
Kode kesalahan v2
Tabel berikut menjelaskan kemungkinan nilai untuk code dalam respons API v2.
| Kode | Status HTTP | Deskripsi |
|---|---|---|
| INVALID_ARGUMENT | 400 | Anda mengirim argumen yang tidak valid, seperti universeId yang tidak valid. Anda mungkin juga memiliki header yang hilang atau tidak valid, seperti Content-Length dan Content-Type. |
| PERMISSION_DENIED | 403 | Permintaan Anda tidak memiliki izin atau cakupan yang cukup untuk melakukan operasi tersebut. |
| NOT_FOUND | 404 | Sistem tidak dapat menemukan sumber daya yang Anda tentukan, seperti entri data store. |
| ABORTED | 409 | Operasi telah dibatalkan. |
| RESOURCE_EXHAUSTED | 429 | Anda tidak memiliki kuota yang cukup untuk melakukan operasi, biasanya karena mengirim terlalu banyak permintaan. |
| CANCELLED | 499 | Sistem menghentikan permintaan, biasanya karena timeout di sisi klien. |
| INTERNAL | 500 | Kesalahan server internal, biasanya disebabkan oleh bug server. |
| NOT_IMPLEMENTED | 501 | Server tidak mengimplementasikan metode API. |
| UNAVAILABLE | 503 | Layanan tidak tersedia, biasanya dikembalikan ketika server sedang tidak berfungsi. |
Open Cloud v1
API Open Cloud v1 memiliki format respons kesalahan yang tidak konsisten. Format tersebut tergantung pada endpoint spesifik, jenis kesalahan, dan tempat kesalahan terjadi dalam alur pemrosesan permintaan.
Sebagian besar endpoint v1 mengembalikan kesalahan dalam salah satu dari tiga format berikut:
Contoh kesalahan v1 dengan field error
{
"error": "INVALID_ARGUMENT",
"message": "Cursor tidak valid.",
"errorDetails": [
{
"errorDetailType": "DatastoreErrorInfo",
"datastoreErrorCode": "InvalidCursor"
}
]
}
Contoh kesalahan v1 dengan field code
{
"code": "INVALID_ARGUMENT",
"message": "Cursor tidak valid."
}
Contoh kesalahan validasi v1 yang mendetail
{
"errors": {
"assetId": ["Nilai 'a' tidak valid."]
},
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Satu atau lebih kesalahan validasi terjadi.",
"status": 400,
"extensions": {
"traceId": "00-427917f0fc3b8375ee33e4603a7f0693-f3f6ad560ff1a122-00"
}
}
Kode kesalahan v1
Tabel berikut menjelaskan kemungkinan nilai untuk error atau code dalam respons API v1:
| Kode Status HTTP | Kesalahan | Deskripsi |
|---|---|---|
| 400 | INVALID_ARGUMENT | Anda mengirim argumen yang tidak valid, seperti universeId yang tidak valid. Anda mungkin juga memiliki header yang hilang atau tidak valid, seperti Content-Length dan Content-Type. |
| 403 | INSUFFICIENT_SCOPE | Permintaan memerlukan hak istimewa yang lebih tinggi daripada yang diberikan oleh token akses. |
| 403 | PERMISSION_DENIED | Permintaan Anda tidak memiliki cakupan yang cukup untuk melakukan operasi tersebut. |
| 404 | NOT_FOUND | Sistem tidak dapat menemukan sumber daya yang Anda tentukan, seperti data store. |
| 409 | ABORTED | Operasi dibatalkan karena konflik, seperti menerbitkan tempat yang bukan bagian dari universe. |
| 429 | RESOURCE_EXHAUSTED | Anda tidak memiliki kuota yang cukup untuk melakukan operasi, biasanya karena mengirim terlalu banyak permintaan. |
| 499 | CANCELLED | Sistem menghentikan permintaan, biasanya karena timeout di sisi klien. |
| 500 | INTERNAL | Kesalahan server internal. Biasanya bug di server. |
| 501 | NOT_IMPLEMENTED | Server tidak mengimplementasikan metode API. |
| 503 | UNAVAILABLE | Layanan tidak tersedia. Biasanya server sedang turun. |