01Overview
Base URL dan bentuk response
Semua endpoint tersimpan di bawah prefix berikut. Ganti host dengan alamat tempat API ini di-deploy.
http://localhost:8080/api/v1
Semua response memakai envelope yang sama, baik sukses maupun gagal:
{ "status": "ok", "data": [ ... ] }
{ "status": "error", "message": "..." }
kode_bps
atau kode_dagri, keduanya diterima. Karena di level
provinsi kedua sistem kebetulan memakai kode 2 digit yang bisa kembar
(contoh: 95 di BPS berarti Papua Selatan, sedangkan di
Kemendagri berarti Papua Pegunungan), pencocokan default mengutamakan
kode_bps. Kalau kode yang dipakai dari Kemendagri,
tambahkan ?by=dagri (atau ?by=bps
untuk memaksa BPS) supaya hasilnya tidak ambigu. Data bersifat
statis sehingga response aman di-cache harian.02Authentication
Token akses
Semua endpoint /api/v1/* wajib menyertakan token
lewat salah satu dari dua header berikut (cukup pakai salah satu):
X-API-Key: <token> Authorization: Bearer <token>
Token dikeluarkan oleh admin YSS. Tiap aplikasi boleh memakai token
masing-masing, jadi saat perlu rotate tinggal ganti satu aplikasi tanpa
mengganggu yang lain. Tanpa token yang valid, request dibalas
401.
03Endpoints
Empat endpoint, alur dropdown sampai search
Tiga endpoint pertama dipakai berantai mengikuti pilihan user, endpoint terakhir untuk kotak pencarian lintas level.
Semua provinsi di Indonesia (38). Biasanya dipakai untuk mengisi dropdown level pertama.
curl -H "X-API-Key: <token>" \
http://localhost:8080/api/v1/provinces
{
"status": "ok",
"data": [
{
"kode_bps": "11",
"nama_bps": "ACEH",
"kode_dagri": "11",
"nama_dagri": "ACEH"
},
{
"kode_bps": "12",
"nama_bps": "SUMATERA UTARA",
"kode_dagri": "12",
"nama_dagri": "SUMATERA UTARA"
}
]
}
Kabupaten/kota di dalam satu provinsi. Dipanggil saat user memilih provinsi.
| Param | Tipe | Keterangan | |
|---|---|---|---|
code | path | Wajib | Kode provinsi: kode_bps atau kode_dagri |
by | query | Opsional | Maksa sumber kode: bps atau dagri. Default mengutamakan kode_bps |
curl -H "X-API-Key: <token>" \
http://localhost:8080/api/v1/provinces/11/regencies
{
"status": "ok",
"data": [
{
"kode_bps": "1101",
"nama_bps": "SIMEULUE",
"kode_dagri": "11.09",
"nama_dagri": "KAB. SIMEULUE"
}
]
}
Kecamatan di dalam satu kabupaten/kota. Dipanggil saat user memilih kabupaten/kota.
| Param | Tipe | Keterangan | |
|---|---|---|---|
code | path | Wajib | Kode kabupaten/kota: kode_bps atau kode_dagri |
by | query | Opsional | Maksa sumber kode: bps atau dagri. Default mengutamakan kode_bps |
curl -H "X-API-Key: <token>" \
http://localhost:8080/api/v1/regencies/1101/districts
{
"status": "ok",
"data": [
{
"kode_bps": "1101010",
"nama_bps": "TEUPAH SELATAN",
"kode_dagri": "11.09.07",
"nama_dagri": "TEUPAH SELATAN"
}
]
}
Cari wilayah lintas level berdasarkan nama atau awalan kode. Cocok untuk kotak pencarian; hasil yang diawali kata kunci diurutkan paling atas.
| Param | Tipe | Keterangan | |
|---|---|---|---|
q | query | Wajib | Kata kunci minimal 1 karakter, contoh: simeulue |
limit | query | Opsional | Jumlah hasil maksimal. Default 20, maksimal 100 |
Beda dengan endpoint dropdown, tiap hasil search menyertakan field
level plus kode induknya
(kode_provinsi, kode_kabupaten)
supaya aplikasi langsung tahu posisinya di hierarki:
{
"status": "ok",
"data": [
{
"kode_bps": "1102",
"nama_bps": "ACEH SINGKIL",
"kode_dagri": "11.10",
"nama_dagri": "KAB. ACEH SINGKIL",
"level": "kabupaten/kota",
"kode_provinsi": "11"
},
{
"kode_bps": "1102020",
"nama_bps": "SINGKIL",
"kode_dagri": "11.10.04",
"nama_dagri": "SINGKIL",
"level": "kecamatan",
"kode_provinsi": "11",
"kode_kabupaten": "1102"
}
]
}
04Live Demo
Coba alur dropdown berantai
Isi token dulu, lalu ketik untuk mencari di tiap kolom. Setiap pilihan langsung memanggil endpoint yang sama seperti dipakai aplikasi, dan hasil mentahnya tampil di panel bawah.
Menunggu interaksi pertama...
Response akan tampil di sini.
05Errors
Penanganan error
Semua error memakai envelope yang sama, ditambah field
message:
{ "status": "error", "message": "token tidak valid" }
| Status | Arti | Penyebab |
|---|---|---|
400 | Bad Request | Parameter q kosong atau limit bukan angka |
401 | Unauthorized | Token tidak ada atau tidak valid |
404 | Not Found | Kode provinsi atau kabupaten/kota tidak dikenal |