MR.D.I.Y.

API Administrative Console v1.0.0

Raw URL
Bearer Token:
MR.D.I.Y. System Admin Console Navigation
Server Online (Port 9006)

1. Authentication & Login

Endpoint autentikasi akun user ke sistem. Pendaftaran user dilakukan oleh Admin di User Management CRUD.

1 Endpoint
POST /api/v1/auth/login
Public ยท Login User

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.

4 Endpoints
GET /api/v1/auth/me
Bearer Auth

Mengambil data detail profil user terautentikasi (termasuk Full Avatar URL & list permissions).

PUT /api/v1/auth/profile
Bearer Auth

Mengedit nama dan email user (Mendukung `application/json` & `multipart/form-data`).

POST /api/v1/auth/change-password
Bearer Auth

Mengubah password user setelah verifikasi password lama (`old_password` & `new_password`).

POST /api/v1/auth/avatar
Bearer Auth

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`).

8 Endpoints
GET /api/v1/events
Perm: events.read

Menampilkan daftar event kampanye dengan **filter query**: `search`/`q`, `code`, `building_category`, `is_active`, `page`, & `limit`.

GET /api/v1/events/:id
Perm: events.read

Menampilkan detail spesifik 1 Event Kampanye berdasarkan ID.

POST /api/v1/events
Perm: events.write

Membuat Event Kampanye promo baru dengan aturan area Jabodetabek & pembatasan email.

PUT /api/v1/events/:id
Perm: events.write

Mengubah tanggal atau aturan event kampanye.

DELETE /api/v1/events/:id
Perm: events.write

Menghapus Event Kampanye (Soft Delete).

GET /api/v1/events/:id/vouchers
Perm: events.read

Menampilkan semua voucher yang terkait dengan event tertentu (filter: status, search, page, limit) + statistik agregat (UNUSED / LIVE / USED / EXPIRED).

GET /api/v1/events/:id/settings
Perm: events.write

Menampilkan detail pengaturan kampanye event (toggle aktif, aturan expiry, Jabodetabek only, 1 email per periode) beserta statistik voucher per status.

PATCH /api/v1/events/:id/settings PARTIAL UPDATE
Perm: events.write

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).

6 Endpoints
POST /api/v1/claim
Public Endpoint

Customer klaim voucher dengan memasukkan data nama, email, hp, dan parameter UTM (Mendukung JSON / Form-Data).

GET /api/v1/vouchers/token/:token
Public Page View

Menampilkan status voucher & sisa waktu timer 10 menit (jika status LIVE).

POST /api/v1/vouchers/token/:token/activate
Kasir Toko / Slider Swipe

Aktivasi slider voucher oleh Kasir di toko Jabodetabek. Memulai **Timer Expiry 10 Menit Realtime**.

POST /api/v1/vouchers/token/:token/use
Finalisasi Kasir

Menandai voucher sebagai **USED** (Telah Terpakai) oleh Kasir di POS.

GET /api/v1/vouchers
Perm: vouchers.read

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`).

2 Endpoints
GET /api/v1/utm/analytics
Perm: utm.read

Ringkasan statistik perfomansi kampanye berdasarkan UTM Source, Medium, dan Campaign.

GET /api/v1/utm/logs
Perm: utm.read

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`).

6 Endpoints
GET /api/v1/auth/users
Perm: rbac.manage

Daftar semua user terdaftar dengan **filter query**: `role_id`, `search`/`q`, `is_active`, `page`, & `limit`.

GET /api/v1/auth/users/:id
Perm: rbac.manage

Menampilkan detail 1 user spesifik berdasarkan ID beserta role & permissions.

POST /api/v1/auth/users
Perm: rbac.manage

Admin membuat user baru (Admin/Manager/Staff) dengan menentukan `role_id` dan `is_active`.

PUT /api/v1/auth/users/:id/status SUSPEND TOGGLE
Perm: rbac.manage

Ubah status user. Jika `is_active: false`, user di-suspend dan ditolak saat login (HTTP 403 Forbidden).

DELETE /api/v1/auth/users/:id
Perm: rbac.manage

Menghapus user dari sistem (Soft Delete).

7. Master List Toko Jabodetabek

Daftar toko dan flag verifikasi wilayah Jabodetabek (`stores.read` / `stores.write`).

3 Endpoints
GET /api/v1/stores
Perm: stores.read

Menampilkan daftar master toko MR.D.I.Y. dengan **filter query**: `search`/`q`, `is_jabodetabek`, `city`, `region`, `page`, & `limit`.

POST /api/v1/stores
Perm: stores.write

Menambahkan Toko Master baru ke sistem.

DELETE /api/v1/stores/:id
Perm: stores.write

Menghapus Toko dari master data.

8. Roles Management (RBAC)

CRUD Role relasional, menyinkronkan array ID permissions, dan merubah role user (`rbac.manage`).

6 Endpoints
GET /api/v1/rbac/roles
Perm: rbac.manage

Menampilkan daftar role sistem dengan **filter query**: `search`/`q`, `code`, `page`, & `limit` beserta array `permissions` relasional.

GET /api/v1/rbac/roles/:id
Perm: rbac.manage

Menampilkan detail spesifik 1 Role berdasarkan ID beserta relasi permissions.

POST /api/v1/rbac/roles
Perm: rbac.manage

Membuat Role baru dan mendaftarkan array `permission_ids` yang berhak diakses.

PUT /api/v1/rbac/roles/:id
Perm: rbac.manage

Mengubah nama, deskripsi, atau menyinkronkan ulang array `permission_ids` milik suatu Role.

POST /api/v1/auth/users/:id/role
Perm: rbac.manage

Mengganti `role_id` user tertentu secara langsung.

DELETE /api/v1/rbac/roles/:id
Perm: rbac.manage

Menghapus Role dari sistem (Soft Delete).

9. Master Permissions Sistem

Daftar lengkap master permissions sistem dengan filter modul, pencarian kata kunci, dan paginasi.

1 Endpoint
GET /api/v1/rbac/permissions
Perm: rbac.manage

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`).

8 Endpoints
GET /api/v1/smtp/configs
Perm: smtp.manage

Daftar provider SMTP terdaftar dengan **filter query**: `search`/`q`, `provider`, `is_active`, `page`, & `limit` beserta kuota harian & sisa kuota.

GET /api/v1/smtp/configs/:id
Perm: smtp.manage

Menampilkan detail spesifik 1 Provider SMTP berdasarkan ID Path Param.

POST /api/v1/smtp/configs
Perm: smtp.manage

Menambahkan Provider SMTP baru ke dalam pool rotasi dengan `daily_limit`.

PUT /api/v1/smtp/configs/:id
Perm: smtp.manage

Mengedit detail konfigurasi SMTP dan `daily_limit` kuota perhari.

PUT /api/v1/smtp/configs/:id/reset-usage RESET LIMIT 1 PROVIDER
Perm: smtp.manage

Mereset hitungan pengiriman harian (`daily_usage = 0`) untuk 1 provider SMTP spesifik.

POST /api/v1/smtp/reset-all-usage RESET ALL SMTP
Perm: smtp.manage

Mereset hitungan pengiriman harian (`daily_usage = 0`) untuk **semua provider SMTP sekaligus**.

POST /api/v1/smtp/test-rotation
Perm: smtp.manage

Uji rotasi email ke alamat tujuan dan otomatis menambah counter `daily_usage` +1 pada provider terpilih.

DELETE /api/v1/smtp/configs/:id
Perm: smtp.manage

Menghapus provider SMTP dari pool rotasi sistem.