1. Authentication & Login
Endpoint autentikasi akun user ke sistem. Pendaftaran user dilakukan oleh Admin di User Management CRUD.
/api/v1/auth/login
Autentikasi email & password. Mengembalikan JWT Token dan daftar permission codes (Mendukung `application/json` & `multipart/form-data`).
2. Profile Management
Kelola data profil, edit nama/email, ubah password, dan upload foto profil avatar.
/api/v1/auth/me
Mengambil data detail profil user terautentikasi (termasuk Full Avatar URL & list permissions).
/api/v1/auth/profile
Mengedit nama dan email user (Mendukung `application/json` & `multipart/form-data`).
/api/v1/auth/change-password
Mengubah password user setelah verifikasi password lama (`old_password` & `new_password`).
/api/v1/auth/avatar
Upload file foto profil (`multipart/form-data` key: `file`). Mengembalikan **Full Avatar URL**.
3. Events Kampanye (CRUD)
Aturan kampanye: 1 email 1x, batasan toko Jabodetabek, & aturan expired (`events.read` / `events.write`).
/api/v1/events
Menampilkan daftar event kampanye dengan **filter query**: `search`/`q`, `code`, `building_category`, `is_active`, `page`, & `limit`.
/api/v1/events/:id
Menampilkan detail spesifik 1 Event Kampanye berdasarkan ID.
/api/v1/events
Membuat Event Kampanye promo baru dengan aturan area Jabodetabek & pembatasan email.
/api/v1/events/:id
Mengubah tanggal atau aturan event kampanye.
/api/v1/events/:id
Menghapus Event Kampanye (Soft Delete).
/api/v1/events/:id/vouchers
Menampilkan semua voucher yang terkait dengan event tertentu (filter: status, search, page, limit) + statistik agregat (UNUSED / LIVE / USED / EXPIRED).
/api/v1/events/:id/settings
Menampilkan detail pengaturan kampanye event (toggle aktif, aturan expiry, Jabodetabek only, 1 email per periode) beserta statistik voucher per status.
/api/v1/events/:id/settings
PARTIAL UPDATE
Update parsial pengaturan kampanye tanpa harus mengirim ulang seluruh data event. Kirim hanya field yang ingin diubah. Fields: is_active, only_jabodetabek, one_email_per_period, expire_type, expire_days, expire_fixed_date, start_date, end_date.
4. Kupon & Voucher Digital (Live Timer 10 Min)
Klaim voucher customer (UTM) & aktivasi kasir (Jabodetabek verification & timer 10 menit countdown).
/api/v1/claim
Customer klaim voucher dengan memasukkan data nama, email, hp, dan parameter UTM (Mendukung JSON / Form-Data).
/api/v1/vouchers/token/:token
Menampilkan status voucher & sisa waktu timer 10 menit (jika status LIVE).
/api/v1/vouchers/token/:token/activate
Aktivasi slider voucher oleh Kasir di toko Jabodetabek. Memulai **Timer Expiry 10 Menit Realtime**.
/api/v1/vouchers/token/:token/use
Menandai voucher sebagai **USED** (Telah Terpakai) oleh Kasir di POS.
/api/v1/vouchers
Menampilkan laporan seluruh klaim voucher terdaftar dengan **filter query**: `event_id`, `status`, `search`/`q`, `page`, & `limit`.
5. UTM Tracking & Analytics
Log tracking UTM dan statistik analitik efektivitas kampanye pemasaran (`utm.read`).
/api/v1/utm/analytics
Ringkasan statistik perfomansi kampanye berdasarkan UTM Source, Medium, dan Campaign.
/api/v1/utm/logs
Daftar log raw tracking UTM dari klaim customer dengan **filter query**: `event_id`, `source`, `medium`, `campaign`, `search`/`q`, `page`, & `limit`.
6. User Management CRUD & Suspend Status
Kelola user sistem, buat user Admin/Staff, ubah role, dan fitur **Suspend / Nonaktifkan User** (`rbac.manage`).
/api/v1/auth/users
Daftar semua user terdaftar dengan **filter query**: `role_id`, `search`/`q`, `is_active`, `page`, & `limit`.
/api/v1/auth/users/:id
Menampilkan detail 1 user spesifik berdasarkan ID beserta role & permissions.
/api/v1/auth/users
Admin membuat user baru (Admin/Manager/Staff) dengan menentukan `role_id` dan `is_active`.
/api/v1/auth/users/:id/status
SUSPEND TOGGLE
Ubah status user. Jika `is_active: false`, user di-suspend dan ditolak saat login (HTTP 403 Forbidden).
/api/v1/auth/users/:id
Menghapus user dari sistem (Soft Delete).
7. Master List Toko Jabodetabek
Daftar toko dan flag verifikasi wilayah Jabodetabek (`stores.read` / `stores.write`).
/api/v1/stores
Menampilkan daftar master toko MR.D.I.Y. dengan **filter query**: `search`/`q`, `is_jabodetabek`, `city`, `region`, `page`, & `limit`.
/api/v1/stores
Menambahkan Toko Master baru ke sistem.
/api/v1/stores/:id
Menghapus Toko dari master data.
8. Roles Management (RBAC)
CRUD Role relasional, menyinkronkan array ID permissions, dan merubah role user (`rbac.manage`).
/api/v1/rbac/roles
Menampilkan daftar role sistem dengan **filter query**: `search`/`q`, `code`, `page`, & `limit` beserta array `permissions` relasional.
/api/v1/rbac/roles/:id
Menampilkan detail spesifik 1 Role berdasarkan ID beserta relasi permissions.
/api/v1/rbac/roles
Membuat Role baru dan mendaftarkan array `permission_ids` yang berhak diakses.
/api/v1/rbac/roles/:id
Mengubah nama, deskripsi, atau menyinkronkan ulang array `permission_ids` milik suatu Role.
/api/v1/auth/users/:id/role
Mengganti `role_id` user tertentu secara langsung.
/api/v1/rbac/roles/:id
Menghapus Role dari sistem (Soft Delete).
9. Master Permissions Sistem
Daftar lengkap master permissions sistem dengan filter modul, pencarian kata kunci, dan paginasi.
/api/v1/rbac/permissions
Menampilkan master permissions dengan **filter query**: `module`, `search`/`q`, `code`, `page`, & `limit`.
10. Multi-Provider SMTP Manager (Daily Limit)
Konfigurasi SMTP, rotasi load-balancing, kuota harian (`daily_limit`), tracking pemakaian (`daily_usage`), & **Reset Limit Harian** (`smtp.manage`).
/api/v1/smtp/configs
Daftar provider SMTP terdaftar dengan **filter query**: `search`/`q`, `provider`, `is_active`, `page`, & `limit` beserta kuota harian & sisa kuota.
/api/v1/smtp/configs/:id
Menampilkan detail spesifik 1 Provider SMTP berdasarkan ID Path Param.
/api/v1/smtp/configs
Menambahkan Provider SMTP baru ke dalam pool rotasi dengan `daily_limit`.
/api/v1/smtp/configs/:id
Mengedit detail konfigurasi SMTP dan `daily_limit` kuota perhari.
/api/v1/smtp/configs/:id/reset-usage
RESET LIMIT 1 PROVIDER
Mereset hitungan pengiriman harian (`daily_usage = 0`) untuk 1 provider SMTP spesifik.
/api/v1/smtp/reset-all-usage
RESET ALL SMTP
Mereset hitungan pengiriman harian (`daily_usage = 0`) untuk **semua provider SMTP sekaligus**.
/api/v1/smtp/test-rotation
Uji rotasi email ke alamat tujuan dan otomatis menambah counter `daily_usage` +1 pada provider terpilih.
/api/v1/smtp/configs/:id
Menghapus provider SMTP dari pool rotasi sistem.