Auth API dalam Format Duo
Setiap kegagalan menjawab {"stat": "FAIL", "code": …, "message": …} dengan status HTTP sama dengan tiga digit pertama code. message_detail menyebut parameter yang bermasalah bila ada.
| Kode | HTTP | message | Arti |
|---|---|---|---|
40001 | 400 | Missing required request parameters | Parameter wajib tidak ada. message_detail menyebut namanya. |
40002 | 400 | Invalid request parameters | Nilai parameter tidak sah, pengguna tidak dikenal, atau factor sms/phone. message_detail menyebut parameternya. |
40101 | 401 | Missing request credentials | Header Authorization tidak ada atau bukan Basic ikey:tanda_tangan. |
40102 | 401 | Invalid integration key in request credentials | Integration key tidak dikenal, atau integrasinya sudah dicabut. |
40103 | 401 | Invalid signature in request credentials | Tanda tangan tidak cocok. Lihat halaman Menandatangani Permintaan. |
40104 | 401 | Missing request timestamp | Header Date tidak ada atau bukan tanggal RFC 2822. |
40105 | 401 | Request timestamp is too far from the server time | Header Date berbeda lebih dari 5 menit dari jam server. Sinkronkan jam (NTP). |
40106 | 401 | Invalid content type in request | POST harus application/x-www-form-urlencoded (v2) atau application/json (v5). |
40401 | 404 | Resource not found | Alamat tidak dikenal. |
40501 | 405 | Method not allowed | Metode HTTP salah untuk alamat ini (header Allow menyebut yang benar). |
41301 | 413 | Request entity too large | Badan permintaan lebih dari 128 KiB. |
42901 | 429 | Too many requests | Batas permintaan tercapai. Tunggu sesuai header Retry-After. |
50001 | 500 | Internal server error | Kesalahan tak terduga di server. Coba lagi nanti. |
50301 | 503 | Service temporarily unavailable | Database atau kunci enkripsi server sedang tidak tersedia. |
Hasil dan Status Autentikasi
Jawaban auth tanpa async dan jawaban auth_status:
| result | status | Arti |
|---|---|---|
waiting | pushed | Permintaan sudah dikirim, pengguna belum menjawab. Panggil auth_status lagi. |
allow | allow | Disetujui di HP, atau kode cadangan benar. Izinkan masuk. |
deny | deny | Ditolak, dibatalkan, kode salah, tidak ada HP yang masuk ke WiraPass, atau sedang dijeda. status_msg menjelaskan. |
deny | fraud | Pengguna menekan "Bukan saya". Tolak masuk dan beri tahu admin Anda. |
deny | timeout | Tidak dijawab dalam 60 detik. |
deny | locked_out | Kode cadangan terkunci setelah terlalu banyak percobaan salah. |
Hanya allow yang berarti ya. Perlakukan nilai yang tidak dikenal sebagai deny.
API JSON Sederhana
Kegagalan menjawab {"error": "<CODE>", "message": "…"}.
| Kode | HTTP | Arti |
|---|---|---|
UNAUTHORIZED | 401 | Kunci API tidak dikenal, salah bentuk, atau dicabut. |
INVALID_EMAIL | 400 | Email tidak sah. |
NOT_FOUND | 404 | Permintaan tidak dikenal atau milik integrasi lain. |
NOT_ENROLLED | 404 | Pengguna belum punya HP penyetuju aktif. |
NO_SIGNED_IN_DEVICE | 409 | Tidak ada HP penyetuju yang sedang masuk ke WiraPass. Pakai kode cadangan. |
FROZEN | 429 | Pengguna menekan "Bukan saya"; permintaan dijeda sampai until. |
TOO_MANY_PENDING | 429 | Sudah ada 3 permintaan yang belum dijawab. |
RATE_LIMITED | 429 | Batas permintaan tercapai; lihat retryAfterSec dan Retry-After. |
WRONG_CODE | 401 | Kode cadangan salah atau sudah dipakai. |
CODE_LOCKED | 423 | Kode cadangan terkunci setelah 10 kali salah; pengguna membuat kode baru di HP aktif. |
Status permintaan: pending, approved, denied, reported, expired, cancelled. Hanya approved yang berarti ya; reported berarti Bukan saya.