Hawnan

Hawnan Mobile API Inventory

Inventaris endpoint API yang dipakai aplikasi mobile Flutter Hawnan/MSP, termasuk catatan data yang masih hardcoded, static asset, atau dummy.

36 dari 57 materi Project hawnanflutterapimobileinventorydocumentation

Hawnan Mobile API Inventory

Dokumen ini mencatat API yang sudah dipakai oleh aplikasi mobile Flutter Hawnan/MSP berdasarkan inspeksi code pada service layer dan beberapa presentation flow.

Tanggal inspeksi: 2026-05-28.

Ringkasan Konfigurasi API

Konfigurasi utama berada di lib/env.dart, lib/service_locator_udf.dart, dan lib/core/network/dio_interceptor.dart.

  • Base URL aktif: Env.baseUrl
  • Dev base URL: https://api-dev.hawnan.id/api/v1
  • Production base URL saat ini juga mengarah ke: https://api-dev.hawnan.id/api/v1
  • API key: Env.apiKey
  • HTTP client: Dio
  • Interceptor otomatis menambahkan header:
    • Accept: application/json
    • Content-Type: application/json, kecuali request multipart/form-data
    • API-KEY
    • x-device-id
    • x-device-os
    • x-device-os-version
    • x-device-model
    • x-app-version
    • Authorization: Bearer <token> jika user login

Catatan: beberapa service masih memakai ${Env.baseUrl}/..., sementara service lain memakai path relatif seperti /home. Keduanya tetap memakai base URL yang sama melalui Dio.

Auth, Profile, PIN, dan Akun

Source utama: lib/service/http/auth_service.dart.

MethodEndpointDipakai UntukStatus Data
POST/auth/firebase/verifyVerifikasi Firebase token untuk login Google/Apple/Firebase dan mendapatkan app tokenAPI
GET/auth/profileAmbil profile user loginAPI
PUT/auth/profileUpdate profile userAPI
POST/profile/photoUpload foto profileAPI, multipart
POST/auth/refresh-tokenRefresh access tokenAPI
POST/auth/otp/requestRequest OTP login nomor HPAPI
POST/auth/otp/verifyVerifikasi OTP nomor HPAPI
POST/auth/otp/resendKirim ulang OTP nomor HPAPI
POST/pin/updateCreate/update PIN transaksiAPI
POST/pin/verifyVerifikasi PIN transaksiAPI
POST/pin/reset/requestRequest OTP reset PINAPI
POST/pin/reset/verify-otpVerifikasi OTP reset PINAPI
POST/pin/resetReset PINAPI
DELETE/user/event-registrationsDebug cleanup event registrationAPI, debug/helper
DELETE/v2/enrollmentsDebug cleanup kajian enrollmentAPI, debug/helper
GET/leaderboardLeaderboard/activity statsAPI
GET/user/my-leaderboardPersonal leaderboard/impact summaryAPI
GET/settings/{key}Ambil setting by keyAPI

Yang masih hardcoded/static di area auth:

  • Login nomor HP via Firebase email fallback memakai password konstan hawnanphoneauth.
  • Developer email list masih hardcoded di AuthService.developerEmails.

Home

Source utama: lib/service/http/home_service.dart.

MethodEndpointQuery/Payload UtamaDipakai UntukStatus Data
GET/homelatitude, longitudeData beranda: user, prayer overview, community, fundraising, kajian/event, coffee bar, prayer wall, news, dsbAPI

Catatan: response /home menjadi sumber utama banyak widget beranda.

LMS / Al Quran Pembelajaran / Subscription

Source utama: lib/service/http/subscription_service.dart dan lib/service/http/elearning_home_service.dart.

Subscription LMS

MethodEndpointQuery/Payload UtamaDipakai UntukStatus Data
GET/lms/packagestype=individual atau type=familyList paket subscription Individual/FamilyAPI
GET/lms/subscriptions-Cek subscription aktifAPI
POST/lms/premium/registerpackageCode, paymentMethod, paymentGateway, paymentNoteRegister/beli paket premium LMSAPI

Yang masih hardcoded/static di subscription UI:

  • Badge promo Lebih Hemat 50%.
  • Info Family: Paket family adalah paket yang bisa digunakan untuk 2 - 5 orang sekaligus.
  • List benefit Family di UI:
    • Berbagi hingga 6 orang
    • Nikmati ratusan materi ngaji
    • Cek pelafalan dengan AI
    • Setor hafalanmu ke Ustandz
    • Tanpa Iklan
  • Fallback nama banner subscription: Sahabat jika data user lokal belum tersedia.

Harga, durasi, nama paket, kode paket, dan tipe paket berasal dari API /lms/packages.

Pembelajaran LMS

MethodEndpointQuery/Payload UtamaDipakai UntukStatus Data
POST/lms/partner/registerempty bodyRegister akses partner SIDAQ/LMSAPI
POST/lms/overview/progressempty bodyProgress overview pembelajaranAPI
POST/lms/overview/materialsempty bodyMateri overview pembelajaranAPI
GET/lms/material/{materialId}isVideo=falseDetail materiAPI
POST/lms/material/{materialId}/progresslastPosition, card, completeUpdate progress materiAPI
POST/lms/mini-quiz/submitjawaban quizSubmit mini quizAPI
GET/lms/fasih/home-Home Murajaah/FasihAPI
POST/lms/fasih/start/{id}empty bodyStart/detail sesi MurajaahAPI
POST/lms/fasih/check/{sessionId}/{itemId}audio multipartSubmit rekaman Murajaah untuk dicek AI/APIAPI
GET/lms/fasih/check-status/{jobId}-Poll status pengecekan MurajaahAPI
POST/lms/fasih/submit/{surahId}empty bodySubmit completion MurajaahAPI
POST/lms/overview/setor-ayat-levelsempty bodyOverview level Setor AyatAPI
POST/lms/overview/setor-ayat-surahsuraIndex queryDetail surah Setor AyatAPI
GET/lms/setor-ayat/{suraIndex}/{ayaIndex}/chat-Chat/detail ayat Setor AyatAPI
POST/lms/setor-ayat/{suraIndex}/{ayaIndex}/submitaudio multipartSubmit rekaman Setor AyatAPI

Catatan belum terlihat lengkap di mobile:

  • Family invitation/monitoring belum terlihat sebagai endpoint mobile.
  • Certificate final/end-to-end belum terlihat sebagai endpoint mobile.
  • Unsubscribe/cancel LMS subscription belum terlihat sebagai endpoint mobile.
  • Retry aktivasi package LMS belum terlihat sebagai endpoint mobile.

Payment, Wallet, dan Transaction

Source utama: lib/service/payment_service/payment_service.dart, lib/service/wallet_service/wallet_service.dart, dan lib/service/http/zakat_service.dart.

MethodEndpointDipakai UntukStatus Data
GET/payments/payment-transaction-historyRiwayat transaksi payment gatewayAPI
GET/payments/direct-payment/channel-listList channel iPaymu/XenditAPI
POST/payments/direct-payment/chargeCharge direct payment channelAPI
GET/payments/transaction-statusCek status transaksi by orderIdAPI
POST/payments/charge?method=chargePaymentGeneral/topup chargeAPI
POST/payments/charge?method=chargeInfaqPaymentCharge infaqAPI
POST/payments/charge?method=chargeEventRegistrationCharge event registrationAPI
POST/payments/charge?method=chargeKajianRegistrationCharge kajian registrationAPI
POST/payments/charge?method=chargeDonationPaymentCharge donasi/fundraisingAPI
POST/payments/charge?method=chargeZakatPaymentCharge zakatAPI
POST/payments/charge?method=chargeKajianHadiriCharge hadiri kajian sessionAPI
POST/payments/chargePay zakat via MSPay wallet path lamaAPI
GET/balance-historyRiwayat saldo/walletAPI

External Xendit direct usage di mobile:

MethodEndpointDipakai UntukStatus Data
POSThttps://api.xendit.co/v2/invoicesCreate invoice/link Xendit langsungExternal API
GEThttps://api.xendit.co/v2/invoices/{invoiceId}Cek status invoice Xendit langsungExternal API
POSThttps://api.xendit.co/v3/payment_requests/{gatewayTransactionId}/simulateSimulasi payment Xendit sandboxExternal API/dev

Yang masih hardcoded/sensitif:

  • Xendit secret key masih hardcoded di mobile pada PaymentService.
  • Ada TODO di code untuk memindahkan konfigurasi sensitif ke secure config/environment.
  • Payment method/type string seperti DONASI, ZAKAT, KAJIAN, TOPUP, INFAQ, BUYER, dan default gateway fallback tertentu masih ditentukan di mobile.
  • Reward point banner di payment method masih dummy.

Quran, Doa, Dzikir, Sholawat

Source utama: lib/service/http/quran_service.dart.

MethodEndpoint / SourceDipakai UntukStatus Data
Local assetassets/json/qaraa_surahs.jsonDaftar surahStatic asset
Local assetassets/json/qaraa_surah_details.jsonDetail ayat/surahStatic asset
Local assetassets/json/qaraa_mushaf_pages.jsonQuran image/page modeStatic asset
Local assetassets/json/qaraa_mushaf_highlights.jsonHighlight mushaf/page modeStatic asset
POST/quran/user/progressSimpan progress baca QuranAPI
GET/quran/user/statsStatistik user QuranAPI
GET/quran/user/progressAmbil progress baca QuranAPI
GET/quran/duas-groupsGroup/category doaAPI
GET/quran/duasList doa atau doa by groupAPI
GET/quran/dzikir-typesTipe/category dzikirAPI
GET/quran/dzikirList dzikir by typeAPI
GET/quran/sholawatList sholawatAPI
GET/quran/user/favoritesList favorite ayatAPI
POST/quran/user/favoritesAdd favorite ayatAPI
DELETE/quran/user/favorites/{favoriteId}Delete favorite ayatAPI
GET/quran/user/bookmarksList bookmark ayatAPI
POST/quran/user/bookmarksAdd bookmark ayatAPI
DELETE/quran/user/bookmarks/{bookmarkId}Delete bookmark ayatAPI

Catatan: data teks Quran/surah utama saat ini banyak berasal dari static asset Qaraa, bukan endpoint backend.

Shalat dan Prayer Wall

Source utama: lib/service/http/prayer_service.dart dan lib/service/http/prayer_time_service.dart.

MethodEndpointQuery/Payload UtamaDipakai UntukStatus Data
GET/prayer/wall/latest-Doa terbaru di prayer wallAPI
GET/prayer/timesdate, location_id, latitude, longitudeJadwal shalatAPI
POST/prayer/walltext, phone, dedicatedTo, isHambaAllahSubmit doaAPI
POST/prayer/wall/{prayerId}/amin-Amin doaAPI
GET/prayer-times/todaylat, lon, methodJadwal shalat hari iniAPI

Yang masih static/local:

  • Alarm shalat disimpan/diatur di local service.
  • Nama waktu shalat dan beberapa label display ada di mobile.
  • Default method jadwal shalat di PrayerTimeService adalah 5 (Kemenag/Indonesia).

Event

Source utama: lib/service/http/event_service.dart.

MethodEndpointQuery/Payload UtamaDipakai UntukStatus Data
GET/eventspage, pageSize, categoryIdList eventAPI
GET/events/{eventId}-Detail eventAPI
GET/user/event-registrationspage, pageSizeRiwayat/my event registrationAPI
GET/user/event-registrations/{registrationId}-Detail registrationAPI
GET/user/event-registrations/event/{eventId}-Detail registration by eventAPI

Catatan: submit/registration event mobile saat ini terlihat lewat payment flow chargeEventRegistration, bukan endpoint event registration langsung di service ini.

Kajian dan Kajian Medsos

Source utama: lib/service/http/kajian_service.dart dan lib/service/kajian_medsos_service.dart.

MethodEndpointQuery/Payload UtamaDipakai UntukStatus Data
GET/kajianspage, pageSizeList kajianAPI
GET/kajians/{id}-Detail kajianAPI
GET/kajian-interactions/kajians/{kajianId}/summary-Summary interaction kajianAPI
GET/kajian-interactions/sessions/{sessionId}/summary-Summary interaction sessionAPI
POST/kajian-sessions/checkinkajianSessionIdCheck-in/hadiri kajianAPI
GET/v2/my-enrollmentspage, pageSizeMy kajian/enrollmentsAPI
GET/settingsgroupSettings, termasuk checkin settingsAPI
GET/kajian-interactions/improper-words-Kata terlarang komentarAPI
POST/kajian-interactions/sessions/{sessionId}/commentscontent, imageUrlCreate commentAPI
GET/kajian-interactions/sessions/{sessionId}/commentspage, pageSizeList commentsAPI
GET/kajian-interactions/comments/{commentId}/repliespage, pageSizeList repliesAPI
POST/kajian-interactions/comments/{parentCommentId}/repliescontent, imageUrlCreate replyAPI
PUT/kajian-interactions/kajians/{kajianId}/reactionreactionType, sessionIdLike/dislike session/kajianAPI

Catatan: beberapa action online link dan QR save masih tercatat TODO di codebase.

Community

Source utama: lib/service/http/community_service.dart.

MethodEndpointQuery/Payload UtamaDipakai UntukStatus Data
GET/communities/searchpage, pageSize, searchSearch/list communityAPI
GET/communities/joined-List community yang diikutiAPI
GET/communities/my-Community aktif/default userAPI
POST/communities/{communityId}/join-Join communityAPI
POST/communities/{communityId}/unjoin-Unjoin communityAPI
PUT/communities/switch/{communityId}-Switch active communityAPI

Belum terlihat endpoint mobile untuk:

  • Challenge community.
  • News by community.
  • Top 3 community khusus flow baru MSP.

Fundraising, Donasi, Waqaf, Infaq

Source utama: lib/service/http/fundraising_service.dart dan payment service.

MethodEndpointQuery/Payload UtamaDipakai UntukStatus Data
GET/fundraising/programspage, pageSize, type, searchList program fundraisingAPI
GET/fundraising/programs/{programId}-Detail program fundraisingAPI
GET/fundraising/programs/{programId}/recent-donors-Donatur terbaruAPI
POST/payments/charge?method=chargeDonationPaymentmetadata donasiPembayaran donasi/fundraisingAPI
POST/donations/recurringamount, frequency, executionHour, startDateCreate donasi otomatisAPI
PATCH/donations/recurring/{donationId}amount, frequency, executionHour, endDateUpdate donasi otomatisAPI
DELETE/donations/recurring/{donationId}-Stop donasi otomatisAPI
GET/donations/recurringpage, pageSizeHistory/list donasi otomatisAPI

Zakat

Source utama: lib/service/http/zakat_service.dart dan payment service.

MethodEndpointQuery/Payload UtamaDipakai UntukStatus Data
GET/zakat/programspage, pageSizeList program zakatAPI
POST/payments/chargetype=ZAKAT, amount, paymentGateway=false, pin, metadataPay zakat via MSPayAPI
POST/payments/charge?method=chargeZakatPaymentmetadata zakatPay zakat via payment service flowAPI
GET/zakat/historypageRiwayat zakatAPI

Yang masih hardcoded/static:

  • Kalkulator zakat ada logic/formula di mobile UI.
  • Kategori string seperti PROFESI dan MAAL ditentukan di mobile.

Coffee Bar / POS

Source utama: lib/service/coffeebar_service/coffee_bar_service.dart.

MethodEndpointQuery/Payload UtamaDipakai UntukStatus Data
GET/coffeebar/drinkspage, limit, categoryIdList menu/minumanAPI
GET/coffeebar/categories-Kategori menuAPI
POST/coffeebar/orderstableQrCode, items, with_infaq, infaq_amountCreate order coffee barAPI
GET/coffeebar/my-orderspage, statusHistory order userAPI
GET/coffeebar/my-orders/{orderId}-Detail orderAPI
POST/payments/charge?method=chargeInfaqPaymentorder/infaq metadataPembayaran infaq/order related flowAPI

Notification dan FCM

Source utama: lib/service/http/notification_http_service.dart.

MethodEndpointQuery/Payload UtamaDipakai UntukStatus Data
POST/notifications/fcm-tokentoken, deviceType, deviceIdRegister/update FCM tokenAPI
DELETE/notifications/fcm-tokenfcm_tokenRemove FCM token logoutAPI
GET/notificationspage, pageSize, categoryList notification/messageAPI
GET/notifications/unread-count-Count unread notificationAPI
GET/notifications/{id}-Detail notificationAPI
PATCH/notifications/{id}/read-Mark single notification readAPI
PUT/notifications/read-alloptional categoryMark all notifications readAPI
DELETE/notifications/{id}-Delete notificationAPI
DELETE/notifications/bulk-deleteidsBulk delete notificationAPI

Catatan: routing FCM ke beberapa detail masih ada TODO di router.

News

Source utama: lib/service/http/news_service.dart.

MethodEndpointDipakai UntukStatus Data
GET/news/{newsId}/with-likesDetail berita + likesAPI
POST/news/{newsId}/likesLike beritaAPI

Catatan: list news di home berasal dari /home; service khusus news saat ini hanya detail/like.

Reward

Source utama: lib/presentation/reward/reward_view.dart dan lib/presentation/reward/reward_dummy_data.dart.

Status: masih dummy/static di mobile.

Yang masih dummy:

  • Summary reward.
  • Leaderboard reward.
  • Voucher.
  • Badge.
  • History reward.
  • QR voucher/redeem dummy.

Belum terlihat service/API reward khusus di mobile.

Static Asset dan Hardcoded Data Penting

Berikut daftar area yang perlu diperhatikan saat membedakan API vs hardcode/static.

AreaSumber Static/HardcodedCatatan
Quran core dataassets/json/qaraa_surahs.json, qaraa_surah_details.json, qaraa_mushaf_pages.json, qaraa_mushaf_highlights.jsonData Quran utama tidak semuanya dari backend
RewardRewardDummyDataReward belum API-driven
Subscription Family benefit_FamilyBenefits._items di subscription_view.dartBenefit belum dari package API
Subscription promo badgeLebih Hemat 50%Belum dari API
Subscription Family infoText 2-5 orangBelum dari API
Payment reward banner_getDummyRewardPoints()Masih dummy
Xendit secret keyPaymentService._xenditSecretKeyTidak aman jika tetap di mobile
Phone-as-email passwordhawnanphoneauthFallback Firebase phone login
Developer email listAuthService.developerEmailsHardcoded
Form dummy development_fillDummyData() di beberapa formHanya aktif debug/developer
Zakat calculatorFormula di mobile UIBukan API

Catatan Implementasi LMS Phase 2 MSP

Yang sudah API-driven di mobile:

  • Paket subscription Individual dan Family.
  • Cek active subscription.
  • Register premium package.
  • Overview progress/material LMS.
  • Detail/progress materi.
  • Mini quiz submit.
  • Murajaah/Fasih start, check audio, polling status, submit completion.
  • Setor Ayat overview, detail surah, chat/detail ayat, submit audio.

Yang belum terlihat sebagai endpoint mobile:

  • Family invitation link.
  • Monitoring/kontrol anak oleh orang tua.
  • Certificate list/detail/download.
  • LMS unsubscribe/cancel subscription.
  • Retry push/aktivasi subscription ke SIDAQ.
  • Callback handling khusus dari SIDAQ di mobile.
  • Admin reporting/package management, karena itu domain panel admin/backend.