Alur aplikasi
Halaman ini menunjukkan bagaimana endpoint yang terdokumentasi saling terhubung. Fokusnya adalah dependensi antarpanggilan: nilai mana yang perlu disimpan dan tempat menggunakannya pada langkah berikutnya.
Ringkasan alur
Masuk
│
├─► Validasi sesi / lihat profil
│
└─► Periksa kuota
│
▼
Buat proyek
│
└─ simpan response.data.id
│
▼
Aktifkan listening
(`islisten = 1`)
│
▼
Mulai scraping
│
├─► Baca mention / jumlah konten
├─► Ubah status listening
│ └─ jika diaktifkan kembali,
│ jalankan scraping lagi
└─► Hapus proyek
Selesai: keluar dari sesi saat ini atau keluar dari semua perangkat
1. Masuk
Panggil POST /api/auth/login dengan username dan password.
Simpan nilai respons berikut:
| Nilai | Digunakan untuk |
|---|---|
token | Authorization: Bearer <token> pada endpoint yang dilindungi |
expires_at | Menentukan kapan klien harus memperbarui atau mengakhiri sesi |
user dan roles | Menampilkan identitas dan otorisasi di sisi klien |
Anda dapat memvalidasi token dengan GET /api/auth/session atau membaca profil saat ini dengan GET /api/auth/me.
2. Opsional: periksa kuota
Panggil GET /api/user-quota ketika klien perlu menampilkan atau memeriksa sisa kuota. Endpoint ini mengembalikan id dan kuota milik pengguna yang terautentikasi.
3. Buat proyek
Panggil POST /api/project dengan keenam field wajib:
{
"categoryId": "umum",
"endDate": "2026-07-31",
"group": "Acme July Monitoring",
"keyword": "acme",
"startDate": "2026-07-01",
"type": "manual"
}
Nilai categoryId yang diizinkan dan tercantum dalam deskripsi operasi:
sosial-budaya
ideologi
politik
ekonomi
pertahanan-keamanan
semua
umum
olahraga
sosial
budaya
teknologi
hiburan
kesehatan
pendidikan
agama
Simpan data.id dari respons 201. Endpoint pengelolaan proyek menggunakannya sebagai ID proyek.
Gunakan GET /api/project?page=1&limit=10 untuk mengambil proyek yang sudah ada.
4. Mulai pengumpulan data
Pengumpulan data memerlukan dua panggilan API yang dijalankan secara berurutan.
4.1 Aktifkan listening
Panggil PATCH /api/project/listen-status dengan islisten bernilai 1:
{
"id": "<data.id from project creation>",
"islisten": 1
}
4.2 Jalankan scraping
Setelah listening aktif, panggil POST /api/ai-service/scrap-project-keywords:
{
"keyword_id": "<data.id from project creation>"
}
Mengubah islisten menjadi 1 hanya mengaktifkan status listening. Scraping tetap harus dipicu dengan memanggil POST /api/ai-service/scrap-project-keywords.
Respons Swagger berisi success dan result tanpa tipe, tetapi tidak menjelaskan apakah respons menandakan proses dikirim atau selesai serta tidak mendefinisikan ID tugas atau endpoint status. Jangan membuat mekanisme polling ke rute /status yang tidak terdokumentasi.
5. Baca hasil
Gunakan ID yang disimpan pada panggilan berikut:
| Tujuan | Permintaan |
|---|---|
| Baca mention | GET /api/mentions?keywordId=<id>&page=1&limit=10 |
| Hitung semua konten yang terkumpul | GET /api/project/content-count?id=<id> |
| Hitung konten dari satu sumber | GET /api/project/content-count?id=<id>&sosmedId=<source> |
keywordId wajib digunakan untuk mengambil mention. sentimen dan sosmedId adalah filter opsional.
Nilai sosmedId yang didukung:
twitterfacebookyoutubetiktokinstagramnews
6. Buat ringkasan AI
Setelah mention tersedia:
- Panggil
POST /api/project/generate-summary/<id>untuk membuat ringkasan. - Panggil
GET /api/project/summary/<id>untuk mengambil kembali ringkasan yang tersimpan.
Endpoint pembuatan ringkasan mengembalikan sentiment_distribution yang terstruktur. Endpoint pengambilan mengembalikan sentiment_distribution sebagai string; uraikan sebagai JSON hanya jika nilai runtime merupakan JSON terserialisasi yang valid.
7. Kelola atau hapus proyek
- Atur status listening dengan
PATCH /api/project/listen-status:- gunakan
islisten: 1untuk mengaktifkan listening; - gunakan
islisten: 0untuk menonaktifkan listening.
- gunakan
- Jika listening diaktifkan kembali dari
0menjadi1, panggil kembaliPOST /api/ai-service/scrap-project-keywordsuntuk memulai scraping. - Hapus proyek dengan
DELETE /api/project?id=<id>.
Dari sudut pandang konsumen API, penghapusan bersifat permanen. Konfirmasikan ID sebelum mengirim permintaan.
8. Akhiri sesi
Pilih endpoint berdasarkan cakupannya:
| Tujuan | Autentikasi | Payload |
|---|---|---|
| Akhiri sesi yang disertakan/saat ini | POST /api/auth/logout | Body JSON yang berisi token |
| Cabut semua sesi pengguna | POST /api/auth/logout-all | Bearer token, tanpa body |