Repository ini berisi source code untuk generate (REST) API statis berisi data wilayah Indonesia serta perintah untuk mendeploynya ke static hosting Github Page.
Demo: https://semyluase.github.io/api-indonesia/
API statis adalah API yang endpoint-nya terdiri dari file statis.
data
berupa file csv
(agar mudah diedit).generate.php
dijalankan. Script ini akan membaca file csv
didalam folder data
, kemudian men-generate ribuan endpoint (file) kedalam folder static/api
.GET https://semyluase.github.io/api-indonesia/static/api/provinces.json
Contoh Response:
[
{
"id": "11",
"name": "ACEH"
},
{
"id": "12",
"name": "SUMATERA UTARA"
},
...
]
GET https://semyluase.github.io/api-indonesia/static/api/regencies/{provinceId}.json
Contoh untuk mengambil daftar kab/kota di provinsi Jawa Tengah (ID = 33):
GET https://semyluase.github.io/api-indonesia/static/api/regencies/33.json
Contoh Response:
[
{
"id": "3301",
"province_id": "33",
"name": "KABUPATEN CILACAP"
},
{
"id": "3302",
"province_id": "33",
"name": "KABUPATEN BANYUMAS"
},
...
]
GET https://semyluase.github.io/api-indonesia/static/api/districts/{regencyId}.json
Contoh untuk mengambil daftar kecamatan di Kota Semarang (ID = 3374):
GET https://semyluase.github.io/api-indonesia/static/api/districts/3374.json
Contoh Response:
[
{
"id": "3374010",
"regency_id": "3374",
"name": "MIJEN"
},
{
"id": "3374020",
"regency_id": "3374",
"name": "GUNUNG PATI"
},
...
]
GET https://semyluase.github.io/api-indonesia/static/api/villages/{districtId}.json
Contoh untuk mengambil daftar kelurahan di Mijen (ID = 3374010):
GET https://semyluase.github.io/api-indonesia/static/api/villages/3374010.json
Contoh Response:
[
{
"id": "3374010001",
"district_id": "3374010",
"name": "CANGKIRAN",
"postal_code": "50216"
},
{
"id": "3374010002",
"district_id": "3374010",
"name": "BUBAKAN",
"postal_code": "57683"
},
...
]
GET https://semyluase.github.io/api-indonesia/static/api/province/{provinceId}.json
Contoh untuk mengambil data provinsi Jawa Tengah (ID = 33):
GET https://semyluase.github.io/api-indonesia/static/api/province/33.json
Contoh Response:
{
"id": "33",
"name": "JAWA TENGAH"
}
GET https://semyluase.github.io/api-indonesia/static/api/regency/{regencyId}.json
Contoh untuk mengambil data kabupaten Kota Semarang (ID = 3374):
GET https://semyluase.github.io/api-indonesia/static/api/regency/3374.json
Contoh Response:
{
"id": "3374",
"province_id": "33",
"name": "KOTA SEMARANG"
}
GET https://semyluase.github.io/api-indonesia/static/api/district/{districtId}.json
Contoh untuk mengambil data kecamatan Mijen (ID = 3374010):
GET https://semyluase.github.io/api-indonesia/static/api/district/3374010.json
Contoh Response:
{
"id": "3374010",
"regency_id": "3374",
"name": "MIJEN"
}
GET https://semyluase.github.io/api-indonesia/static/api/village/{villageId}.json
Contoh untuk mengambil data kelurahan Jatibarang (ID = 3374010009):
GET https://semyluase.github.io/api-indonesia/static/api/village/3374010009.json
Contoh Response:
{
"id": "3374010009",
"district_id": "3374010",
"name": "JATIBARANG",
"postal_code": "50219"
}
Karena API ini dihosting di Github Page, Github Page sendiri memberikan batasan bandwith 100GB/bulan. Rata-rata endpoint disini memiliki ukuran 1KB/endpoint, jadi kurang lebih request yang dapat digunakan adalah 100.000.000 request per bulan, atau sekitar 3.000.000 request/hari.
Karena limitasi ini, disarankan untuk hosting API ini di github kamu sendiri.
Untuk lebih detail tentang limitasi Github Page, bisa dilihat disini.