Caching & Batasan
Bagaimana API publik melakukan caching terhadap respons yang deterministik, kuantisasi koordinat, dukungan ETag, dan rate limiting.
Semua endpoint perhitungan bersifat deterministik dan stateless, sehingga aman untuk di-cache secara agresif.
Header cache
Respons GET yang berhasil menyertakan:
Cache-Control: public, max-age=86400, stale-while-revalidate=86400
ETag: "f772776d6f178fd3c164ad2cbb5430b8b83e6a7a"Kirim If-None-Match dengan ETag yang dikembalikan sebelumnya untuk mendapatkan 304 Not Modified yang cepat:
curl -H 'If-None-Match: "f7727..."' \
"https://api.housemuslim.org/api/v1/prayer/times?lat=-6.2&lng=106.8"Kuantisasi koordinat
Untuk memaksimalkan cache hit-rate, kunci cache mengkuantisasi koordinat:
lat/lng→ 3 desimal (grid ~110 m)elevation→ kelipatan 50 m terdekat
Dua permintaan dalam sel ~110 m yang sama berbagi satu hasil cache. Perhitungannya sendiri tetap menggunakan presisi persis yang Anda kirimkan.
Sebuah bucket harian disertakan dalam kunci cache, sehingga permintaan "hari ini" (tanpa
date eksplisit) berganti secara otomatis setiap hari.
Rate limiting
Rate limit global per-IP berlaku. Endpoint yang lebih berat (/prayer/times/month,
/calendar/islamic, /events, /ramadan/schedule) memiliki bucket yang lebih ketat.
Melampauinya akan mengembalikan 429 Too Many Requests.
Validasi
Input divalidasi sebelum perhitungan apa pun:
lat∈ [−90, 90],lng∈ [−180, 180];NaN/Infditolakelevation∈ [−500, 9000] m- Hijriah
hy∈ [1, 3000],hm∈ [1, 12],hd∈ [1, 30] - Rentang tanggal dibatasi untuk mencegah payload yang berukuran berlebihan
Input yang tidak valid akan mengembalikan 422 Unprocessable Entity.
Akurasi & Metode
Bagaimana Islamic Time Engine menghitung waktu salat, metode perhitungan yang didukung, aturan lintang tinggi, dan metode konversi Hijriah.
Waktu Salat
Hitung waktu salat harian atau bulanan untuk koordinat mana pun, dengan resolusi zona waktu otomatis, 18+ metode, aturan lintang tinggi, dan elevasi.