API Qoder Cloud Agents CN mengembalikan error dalam envelope yang konsisten. Setiap respons error berisi bidang terstruktur yang cocok untuk penanganan dan debugging secara terprogram.
Selubung Error
Semua respons error mengikuti struktur JSON berikut:
{
"type": "error",
"error": {
"type": "[error_type]",
"message": "[deskripsi yang dapat dibaca manusia]",
"param": "[nama parameter yang bermasalah, opsional]"
}
}
Deskripsi bidang
| Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
|
|
string | Ya | Selalu |
|
|
string | Ya | Identifier jenis error |
|
|
string | Ya | Deskripsi error yang dapat dibaca manusia |
|
|
string | Tidak | Nama parameter permintaan yang menyebabkan error |
Jenis Kesalahan
| Status HTTP |
|
Deskripsi |
|---|---|---|
| 400 |
|
Parameter permintaan tidak valid atau tidak ada |
| 401 |
|
Otentikasi gagal; token tidak ada atau tidak valid |
| 403 |
|
Telah terotentikasi tetapi tidak memiliki izin untuk mengakses resource tersebut |
| 404 |
|
Resource target tidak ada |
| 409 |
|
Konflik status resource (misalnya, pembuatan duplikat) |
| 500 |
|
Kesalahan internal server |
Detail jenis kesalahan
400 — invalid_request_error
Format permintaan atau parameter tidak valid.
Pemicu Umum:
- Bidang wajib tidak ditemukan (misalnya,
name) - Ketidakcocokan tipe bidang (misalnya, angka diberikan padahal string yang diharapkan)
- Body melebihi batas 4 MB
- JSON tidak valid
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "Missing required field: name",
"param": "name"
}
}# Contoh pemicu: tidak menyertakan bidang nama
curl -X POST https://api.qoder.com.cn/api/v1/cloud/agents \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{}'401 — authentication_error
Autentikasi gagal.
Pemicu Umum:
- Header
Authorizationtidak ditemukan - PAT tidak valid
- PAT telah kedaluwarsa atau dicabut
x-api-keydigunakan alih-alih token bearer
{
"type": "error",
"error": {
"type": "authentication_error",
"message": "Kunci API atau token tidak valid."
}
}# Contoh pemicu: token tidak valid
curl -s https://api.qoder.com.cn/api/v1/cloud/agents \
-H "Authorization: Bearer pt-invalid-token"403 — permission_error
Terautentikasi tetapi tidak diizinkan.
Pemicu Umum:
- PAT tidak memiliki akses ke Agent target (pengguna atau organisasi berbeda)
- Cakupan PAT tidak mencakup operasi ini
- Mencoba melakukan operasi pada resource yang telah diarsipkan dan terkunci
{
"type": "error",
"error": {
"type": "permission_error",
"message": "Anda tidak memiliki izin untuk mengakses agen ini."
}
}# Contoh pemicu: mengakses Agen pengguna lain
curl -s https://api.qoder.com.cn/api/v1/cloud/agents/agent_other_user_123 \
-H "Authorization: Bearer $QODER_PAT"404 — not_found_error
Sumber daya tujuan tidak ditemukan.
Pemicu Umum:
- ID Agent, Session, atau Environment tidak ditemukan
- Sumber daya telah dihapus
- Kesalahan pengetikan pada path URL
{
"type": "error",
"error": {
"type": "not_found_error",
"message": "Agen tidak ditemukan: agent_nonexistent_123"
}
}# Contoh pemicu: Agen yang tidak ada
curl -s https://api.qoder.com.cn/api/v1/cloud/agents/agent_nonexistent_123 \
-H "Authorization: Bearer $QODER_PAT"409 — conflict_error
Konflik status sumber daya mencegah operasi.
Pemicu Umum:
- Kunci idempotensi yang sama digunakan kembali dengan badan permintaan yang berbeda
- Mengoperasikan Session yang telah dihentikan tugasnya
- Membuat duplikat sumber daya dengan nama unik
{
"type": "error",
"error": {
"type": "conflict_error",
"message": "Permintaan dengan kunci idempotensi ini telah diproses dengan parameter yang berbeda."
}
}500 — api_error
Kesalahan server internal.
Pemicu Umum:
- Layanan sementara tidak tersedia
- Kegagalan komponen internal
- Timeout koneksi database
{
"type": "error",
"error": {
"type": "api_error",
"message": "An internal error occurred. Please try again later."
}
}
Catatan Untuk error 500, coba lagi dengan exponential backoff (misalnya, 1 s → 2 s → 4 s).
Praktik terbaik penanganan error
- Buat branch berdasarkan
error.typealih-alih kode status HTTP. - Catat
error.messageuntuk keperluan diagnostik. - Periksa
error.paramuntuk menemukan bidang yang bermasalah. - Jangan lakukan retry terhadap error 4xx kecuali jika permintaan telah dimodifikasi.
- Lakukan retry terhadap error 5xx dengan exponential backoff (maksimal 3 kali percobaan).
# Permintaan dengan penanganan kesalahan
response=$(curl -s -w "\n%{http_code}" \
https://api.qoder.com.cn/api/v1/cloud/agents \
-H "Authorization: Bearer $QODER_PAT")
http_code=$(echo "$response" | tail -1)
body=$(echo "$response" | sed '$d')
if [ "$http_code" -ge 400 ]; then
error_type=$(echo "$body" | python3 -c "import sys,json; print(json.load(sys.stdin)['error']['type'])")
echo "API error: $error_type"
fi