+ +

GET /api/v1 / HTTP/1.1 / 200 OK▮

YSS Location
API.

Data wilayah Indonesia dari BPS untuk dropdown berantai di aplikasi YSS. Pilih provinsi, kabupaten/kota muncul. Pilih kabupaten, kecamatan muncul. Tiap wilayah dibekali dua standar kode dan nama sekaligus: BPS dan Kemendagri, jadi aplikasi Dapodik bebas pakai yang mana.

38

Provinsi

514

Kabupaten / Kota

7.291

Kecamatan

01Overview

Base URL dan bentuk response

Semua endpoint tersimpan di bawah prefix berikut. Ganti host dengan alamat tempat API ini di-deploy.

Base URL
http://localhost:8080/api/v1

Semua response memakai envelope yang sama, baik sukses maupun gagal:

Response envelope
{ "status": "ok", "data": [ ... ] }
{ "status": "error", "message": "..." }
Kode wilayah di semua endpoint bisa memakai 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):

Request header
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.

GET /api/v1/provinces public / cached

Semua provinsi di Indonesia (38). Biasanya dipakai untuk mengisi dropdown level pertama.

Request
curl -H "X-API-Key: <token>" \
  http://localhost:8080/api/v1/provinces
Response 200
{
  "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"
    }
  ]
}
GET /api/v1/provinces/{code}/regencies public / cached

Kabupaten/kota di dalam satu provinsi. Dipanggil saat user memilih provinsi.

ParamTipeKeterangan
codepath Wajib Kode provinsi: kode_bps atau kode_dagri
byquery Opsional Maksa sumber kode: bps atau dagri. Default mengutamakan kode_bps
Request
curl -H "X-API-Key: <token>" \
  http://localhost:8080/api/v1/provinces/11/regencies
Response 200
{
  "status": "ok",
  "data": [
    {
      "kode_bps": "1101",
      "nama_bps": "SIMEULUE",
      "kode_dagri": "11.09",
      "nama_dagri": "KAB. SIMEULUE"
    }
  ]
}
GET /api/v1/regencies/{code}/districts public / cached

Kecamatan di dalam satu kabupaten/kota. Dipanggil saat user memilih kabupaten/kota.

ParamTipeKeterangan
codepath Wajib Kode kabupaten/kota: kode_bps atau kode_dagri
byquery Opsional Maksa sumber kode: bps atau dagri. Default mengutamakan kode_bps
Request
curl -H "X-API-Key: <token>" \
  http://localhost:8080/api/v1/regencies/1101/districts
Response 200
{
  "status": "ok",
  "data": [
    {
      "kode_bps": "1101010",
      "nama_bps": "TEUPAH SELATAN",
      "kode_dagri": "11.09.07",
      "nama_dagri": "TEUPAH SELATAN"
    }
  ]
}

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.

demo.dropdown / interactive client-side
activity.log ▮ idle

Menunggu interaksi pertama...

Response akan tampil di sini.

05Errors

Penanganan error

Semua error memakai envelope yang sama, ditambah field message:

Response 401
{ "status": "error", "message": "token tidak valid" }
daftar status code reference
StatusArtiPenyebab
400Bad Request Parameter q kosong atau limit bukan angka
401Unauthorized Token tidak ada atau tidak valid
404Not Found Kode provinsi atau kabupaten/kota tidak dikenal