Dokumentasi spesifikasi rute & endpoint backend
Deskripsi: Mengirim pesan chat AI (RAG semantik) tanpa streaming.
{
"message": "bagaimana cara melapor ke KPAI?",
"sessionId": "session_xxx" // opsional
}
{
"content": "Langkah melapor ke KPAI adalah...",
"sessionId": "session_xxx",
"timestamp": "2026-06-30T12:00:00.000Z"
}
Deskripsi: Obrolan asisten AI menggunakan streaming Server-Sent Events (SSE) dengan media gambar.
{
"message": "pola spasial banjir bandang",
"sessionId": "session_xxx",
"image": "base64...", // opsional
"mimeType": "image/jpeg" // opsional
}
data: {"type": "token", "content": "..."}
data: {"type": "search_progress", "phase": "..."}
data: {"type": "done", "sessionId": "..."}
Deskripsi: Mengecek sisa kuota harian AI untuk IP/User terkait.
?sessionId=session_xxx
{
"remaining": 15,
"limit": 20,
"resetAt": "2026-07-01T12:00:00.000Z"
}
Deskripsi: Membaca teks dokumen fisik via AI Vision OCR.
{
"image": "base64...",
"mimeType": "image/png"
}
{
"text": "[Hasil Ekstraksi Teks]"
}
Deskripsi: Verifikasi validitas klaim informasi lewat web search grounding.
{
"claim": "Bansos tunai dibagikan lewat WA"
}
{
"isValid": false,
"explanation": "Klaim tersebut palsu/hoaks...",
"source": "TurnBackHoax.id"
}
Deskripsi: Meringkas berkas aturan/konsep birokrasi dan merancang diagram Mermaid.js.
{
"text": "[Aturan Panjang]"
}
{
"summary": "[Hasil Ringkasan + Diagram]"
}
Deskripsi: Mengambil riwayat percakapan sesi AI.
Path: sessionId (string)
{
"history": [
{ "role": "user", "content": "..." }
]
}
Deskripsi: Membuat aduan/pengaduan insiden terintegrasi lokasi GPS koordinat.
{
"reporterName": "Budi",
"reporterContact": "+6281234567890",
"category": "Infrastruktur",
"description": "Jalan amblas...",
"latitude": -6.2088,
"longitude": 106.8456,
"province": "Jawa Barat",
"city": "Bandung",
"district": "Coblong"
}
{
"id": "report-uuid",
"status": "Menunggu",
"message": "Laporan berhasil disimpan."
}
Deskripsi: Mengambil semua daftar laporan warga dengan filter wilayah dan status (Khusus Staf/Admin).
?status=Menunggu&province=Jawa Barat&page=1
{
"reports": [...],
"total": 5
}
Deskripsi: Mengubah status penanganan aduan warga.
{
"status": "Diproses",
"adminNote": "Petugas meluncur..."
}
{
"message": "Status laporan berhasil diubah ke Diproses"
}
Deskripsi: Mengambil riwayat pesan diskusi aduan antara warga dan petugas.
Path: id (UUID Laporan)
{
"success": true,
"data": [
{
"sender_name": "Petugas Fikri",
"message": "Sedang kami periksa...",
"created_at": "..."
}
]
}
Deskripsi: Menambahkan data layanan publik RAG (otomatis text-embedding vektor).
{
"name": "Layanan BPJS",
"institution": "BPJS Kesehatan",
"category": "Kesehatan",
"description": "Pendaftaran...",
"requirements": ["KTP"],
"procedures": ["Daftar..."]
}
{
"id": "service-uuid",
"message": "Layanan publik berhasil ditambahkan."
}
Deskripsi: Mengambil katalog daftar layanan RAG.
?category=Kesehatan
{
"services": [...]
}
Deskripsi: Membuat akun staf/petugas baru (hanya boleh dibuat oleh superadmin).
{
"email": "petugas@komunitas.id",
"password": "kataSandiKuat",
"role": "petugas",
"nama_lengkap": "Alif",
"nama_panggilan": "Alif",
"tanggal_lahir": "2000-01-01",
"nomor_telepon": "+628..."
}
{
"success": true,
"message": "User baru berhasil dibuat."
}
Deskripsi: Mengambil isi database klarifikasi kata kunci hoaks WhatsApp Bot.
?search=keyword&page=1
{
"hoaxes": [...],
"total": 12
}
Deskripsi: Saluran koneksi WebSocket real-time aduan warga.
reportId=aduan-uuid userId=warga-atau-petugas-uuid role=user|petugas name=Budi
{
"type": "message",
"text": "Apakah aduan saya sudah dibaca?",
"senderId": "user-uuid",
"senderName": "Budi",
"senderType": "user"
}
Deskripsi: Mengecek status runtime server.
{
"status": "ok",
"timestamp": "2026-06-30T12:00:00.000Z",
"uptime": 12.5,
"version": "1.0.0"
}