Pengantar
Tentang API Satu Data Luwu Timur
API Satu Data Luwu Timur menyediakan akses programatik ke seluruh dataset yang dipublikasikan di portal satudata.luwutimurkab.go.id. API ini bersifat terbuka dan tidak memerlukan autentikasi untuk mengakses data publik.
Accept: application/json.
| Versi | v1.0 |
| Format | JSON |
| Autentikasi | Tidak diperlukan |
| Rate Limit | Tidak dibatasi |
| Protocol | HTTPS |
| Method | GET |
| Encoding | UTF-8 |
| CORS | Diizinkan |
Format Response
Struktur Response
Semua response API mengembalikan objek JSON dengan field
status dan
message
sebagai indikator keberhasilan request.
{
"status": 200,
"message": "OK",
"data": [...]
}
Endpoint
Mengembalikan daftar seluruh urusan (kategori) yang tersedia di portal.
Gunakan id dari response ini sebagai parameter pada endpoint
/dataset/by-urusan/{id}.
curl -X GET \ "https://satudata.luwutimurkab.go.id/api/urusan" \ -H "Accept: application/json"
fetch('https://satudata.luwutimurkab.go.id/api/urusan') .then(res => res.json()) .then(data => console.log(data)) .catch(err => console.error(err));
$response = file_get_contents('https://satudata.luwutimurkab.go.id/api/urusan'); $data = json_decode($response, true); print_r($data);
{
"status": 200,
"message": "OK",
"data": [
{ "id": 1, "urusan": "Pertanian" },
{ "id": 2, "urusan": "Pendidikan" },
{ "id": 3, "urusan": "Kesehatan" }
]
}
Mengembalikan daftar seluruh organisasi perangkat daerah (OPD) yang menjadi
produsen data. Gunakan id dari response ini sebagai parameter pada endpoint
/dataset/by-organisasi/{id}.
curl -X GET "https://satudata.luwutimurkab.go.id/api/organisasi"
fetch('https://satudata.luwutimurkab.go.id/api/organisasi') .then(res => res.json()) .then(data => console.log(data));
{
"status": 200,
"message": "OK",
"data": [
{ "id": 1, "skpd": "Dinas Pertanian Luwu Timur" },
{ "id": 2, "skpd": "Dinas Kesehatan Luwu Timur" },
{ "id": 3, "skpd": "Dinas Pendidikan Luwu Timur" }
]
}
Mengembalikan daftar seluruh dataset yang berstatus sudah proses, diurutkan berdasarkan tanggal update terbaru. Setiap item menyertakan URL langsung untuk mengakses detail data melalui API.
curl -X GET "https://satudata.luwutimurkab.go.id/api/daftar_dataset"
fetch('https://satudata.luwutimurkab.go.id/api/daftar_dataset') .then(res => res.json()) .then(data => console.log(data));
$response = file_get_contents('https://satudata.luwutimurkab.go.id/api/daftar_dataset'); $data = json_decode($response, true); print_r($data);
{
"status": 200,
"message": "OK",
"data": [
{
"id": "abc123",
"kode": "LUTU-2025-001",
"judul": "Produksi Tanaman Pangan Luwu Timur",
"deskripsi": "Data produksi tanaman pangan...",
"organisasi": "Dinas Pertanian Luwu Timur",
"tgl_buat": "2025-01-15",
"tgl_update": "2025-05-28",
"url": "https://satudata.luwutimurkab.go.id/api/dataset/abc123"
}
]
}
Mengembalikan daftar dataset berdasarkan ID urusan/kategori tertentu.
Gunakan endpoint /urusan untuk mendapatkan daftar ID yang valid.
Mengembalikan 404 jika ID urusan tidak ditemukan.
| Parameter | Tipe | Keterangan | Status |
|---|---|---|---|
| id_kategori | integer | ID urusan dari endpoint /urusan |
Wajib |
curl -X GET "https://satudata.luwutimurkab.go.id/api/dataset/by-urusan/1"
fetch('https://satudata.luwutimurkab.go.id/api/dataset/by-urusan/1') .then(res => res.json()) .then(data => console.log(data));
{
"status": 200,
"message": "OK",
"data": [
{
"id": "abc123",
"kode": "LUTU-2025-001",
"judul": "Produksi Tanaman Pangan Luwu Timur",
"deskripsi": "Data produksi tanaman pangan...",
"organisasi": "Dinas Pertanian Luwu Timur",
"tgl_buat": "2025-01-15",
"tgl_update": "2025-05-28",
"url": "https://satudata.luwutimurkab.go.id/api/dataset/abc123"
}
]
}
Mengembalikan daftar dataset berdasarkan ID organisasi/OPD tertentu.
Gunakan endpoint /organisasi untuk mendapatkan daftar ID yang valid.
Mengembalikan 404 jika ID organisasi tidak ditemukan.
| Parameter | Tipe | Keterangan | Status |
|---|---|---|---|
| id_skpd | integer | ID organisasi dari endpoint /organisasi |
Wajib |
curl -X GET "https://satudata.luwutimurkab.go.id/api/dataset/by-organisasi/1"
fetch('https://satudata.luwutimurkab.go.id/api/dataset/by-organisasi/1') .then(res => res.json()) .then(data => console.log(data));
{
"status": 200,
"message": "OK",
"data": [
{
"id": "abc123",
"kode": "LUTU-2025-001",
"judul": "Produksi Tanaman Pangan Luwu Timur",
"deskripsi": "Data produksi tanaman pangan...",
"organisasi": "Dinas Pertanian Luwu Timur",
"tgl_buat": "2025-01-15",
"tgl_update": "2025-05-28",
"url": "https://satudata.luwutimurkab.go.id/api/dataset/abc123"
}
]
}
Mencari dataset berdasarkan kata kunci judul. Parameter judul harus
di-encode terlebih dahulu menggunakan URL encoding. Mengembalikan
404 jika tidak ada dataset yang cocok.
| Parameter | Tipe | Keterangan | Status |
|---|---|---|---|
| judul | string | Kata kunci pencarian judul dataset (URL encoded) | Wajib |
# Cari dataset dengan kata kunci "tanaman pangan" curl -X GET \ "https://satudata.luwutimurkab.go.id/api/find/tanaman%20pangan"
const keyword = 'tanaman pangan'; const url = `https://satudata.luwutimurkab.go.id/api/find/${encodeURIComponent(keyword)}`; fetch(url) .then(res => res.json()) .then(data => console.log(data)) .catch(err => console.error(err));
$keyword = 'tanaman pangan'; $url = 'https://satudata.luwutimurkab.go.id/api/find/' . urlencode($keyword); $response = file_get_contents($url); $data = json_decode($response, true); print_r($data);
{
"status": 200,
"message": "OK",
"data": [
{
"id": "abc123",
"judul": "Produksi Tanaman Pangan Luwu Timur",
"organisasi": "Dinas Pertanian Luwu Timur",
"url": "https://satudata.luwutimurkab.go.id/api/dataset/abc123"
}
]
}
{
"status": 404,
"message": "Resource tidak ditemukan"
}
Mengembalikan isi lengkap data dari sebuah dataset berdasarkan ID. Data dikembalikan dalam format array dua dimensi dengan header kolom tersedia secara terpisah. Mendukung file Excel dengan merged cells dan baris kosong dihilangkan otomatis.
| Parameter | Tipe | Keterangan | Status |
|---|---|---|---|
| id | string | ID unik dataset. Gunakan endpoint /daftar_dataset untuk mendapatkan daftar ID. |
Wajib |
curl -X GET \ "https://satudata.luwutimurkab.go.id/api/dataset/abc123" \ -H "Accept: application/json"
fetch('https://satudata.luwutimurkab.go.id/api/dataset/abc123') .then(res => res.json()) .then(data => console.log(data)) .catch(err => console.error(err));
$response = file_get_contents( 'https://satudata.luwutimurkab.go.id/api/dataset/abc123' ); $data = json_decode($response, true); print_r($data);
import requests url = "https://satudata.luwutimurkab.go.id/api/dataset/abc123" response = requests.get(url) data = response.json() print(data)
{
"status": 200,
"id": "abc123",
"judul": "Produksi Tanaman Pangan Luwu Timur",
"total": 12,
"headers": ["No", "Kecamatan", "Tanam (Ha)", "Produksi (Ton)"],
"data": [
["1", "Malili", "4250", "24600"],
["2", "Wotu", "7381", "49515"],
["3", "Mangkutana", "4581", "30652"]
]
}
Error Handling
Kode Error
status pada response sebelum memproses data.
| Kode | Status | Keterangan |
|---|---|---|
| 200 | OK | Request berhasil, data tersedia |
| 400 | Bad Request | Parameter tidak valid atau tidak lengkap |
| 404 | Not Found | Resource tidak ditemukan — ID tidak valid atau data tidak ada |
| 500 | Server Error | Kesalahan internal server, coba beberapa saat lagi |
Contoh Penggunaan
Alur Penggunaan API (Step by Step)
Contoh alur lengkap: ambil daftar urusan → pilih urusan → ambil dataset → tampilkan data.
const baseUrl = 'https://satudata.luwutimurkab.go.id/api'; // Step 1: Ambil daftar urusan const urusan = await fetch(`${baseUrl}/urusan`).then(r => r.json()); console.log(urusan.data); // [{id:1, urusan:"Pertanian"}, ...] // Step 2: Ambil dataset berdasarkan urusan id=1 const list = await fetch(`${baseUrl}/dataset/by-urusan/1`).then(r => r.json()); const firstId = list.data[0].id; // Step 3: Ambil detail data dari dataset pertama const detail = await fetch(`${baseUrl}/dataset/${firstId}`).then(r => r.json()); // Step 4: Render ke tabel HTML const thead = detail.headers.map(h => `<th>${h}</th>`).join(''); const tbody = detail.data.map(row => `<tr>${row.map(cell => `<td>${cell}</td>`).join('')}</tr>` ).join(''); document.getElementById('output').innerHTML = `<table><thead><tr>${thead}</tr></thead><tbody>${tbody}</tbody></table>`;