Semua endpoint (kecuali login) membutuhkan header Authorization: Bearer <token>. Token berlaku selama 24 jam.
/api/v1/auth/loginLogin dan dapatkan Bearer token untuk mengakses API lainnya.
| Field | Keterangan |
|---|---|
email | string โ wajib. Email akun. |
password | string โ wajib. Password akun. |
| Field | Keterangan |
|---|---|
token | string โ Bearer token (HS256 JWT). |
user | { id, name, email, role } |
expiresIn | number โ durasi token dalam detik (86400 = 24 jam). |
400email atau password tidak disertakan401email atau password salah, atau akun tidak aktifcurl -X POST /api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"rahasia123"}'{
"token": "eyJhbGciOiJIUzI1NiJ9...",
"user": {
"id": "clx...",
"name": "Budi Santoso",
"email": "[email protected]",
"role": "STAFF"
},
"expiresIn": 86400
}/api/v1/email/sendrequires tokenKirim email menggunakan konfigurasi SMTP central inbox. Pengirim disesuaikan dengan domainEmail user yang login.
| Field | Keterangan |
|---|---|
to | string โ wajib. Alamat penerima (bisa multiple dipisah koma). |
subject | string โ wajib. Subjek email. |
body | string โ wajib. Isi email. |
cc | string โ opsional. Alamat CC. |
isHtml | boolean โ opsional. Jika true, body dikirim sebagai HTML (default: false). |
| Field | Keterangan |
|---|---|
ok | boolean โ true jika berhasil. |
message | string โ pesan konfirmasi. |
400to, subject, atau body tidak disertakan401token tidak ada, tidak valid, atau sudah kadaluarsa503central inbox belum dikonfigurasi oleh admin500gagal mengirim email (error SMTP)curl -X POST /api/v1/email/send \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"to": "[email protected]",
"subject": "Penawaran Harga",
"body": "<p>Halo, berikut penawaran kami...</p>",
"isHtml": true
}'{
"ok": true,
"message": "Email berhasil dikirim"
}Untuk sistem eksternal (POS/kasir/CRM) mengambil data member digital WhatsApp dan mencatat transaksi belanja beserta poinnya. Poin dihitung sepenuhnya oleh sistem Anda โ API ini hanya menyimpan apa yang dikirim. Autentikasi pakai header X-API-Key: <key> (atau Authorization: Bearer <key>), bukan token login biasa โ ambil/generate API key di aplikasi: Plugin โ WhatsApp โ Member Digital โ Setup โ Integrasi API.
/api/v1/member-digital/membersrequires X-API-KeyAmbil data member. Pakai memberId atau waId untuk 1 member, atau tanpa query untuk daftar semua member (paginasi).
| Field | Keterangan |
|---|---|
memberId | string โ opsional. ID member (angka di kartu/barcode). Ambil 1 member. |
waId | string โ opsional. Nomor WhatsApp pendaftar (format 62xxxx). Ambil 1 member. |
page | number โ opsional. Dipakai saat tanpa memberId/waId (daftar semua member). Default 1. |
limit | number โ opsional. Maks 200, default 50. |
| Field | Keterangan |
|---|---|
member | { memberId, waId, name, birthDate, address, provinsi, kabupatenKota, points, totalSpend, status, cardImageUrl, createdAt, updatedAt } โ jika query memberId/waId |
members | array of member โ jika tanpa query |
pagination | { page, limit, total, totalPages } โ jika tanpa query |
401API key kosong atau salah404member dengan memberId/waId tersebut tidak ditemukancurl -H "X-API-Key: <api-key>" \ "/api/v1/member-digital/members?memberId=12345678901234"
{
"member": {
"memberId": "12345678901234",
"waId": "628123456789",
"name": "IRWAN HERMAWAN",
"birthDate": "1990-08-17",
"address": "Jl. Contoh No. 1, RT 01/RW 02",
"provinsi": { "kode": "31", "nama": "DKI Jakarta" },
"kabupatenKota": { "kode": "3171", "nama": "Kota Jakarta Selatan" },
"points": 120,
"totalSpend": 1250000,
"status": "active",
"cardImageUrl": "https://.../cards/xxxx.png",
"createdAt": "2026-01-10T03:12:00.000Z",
"updatedAt": "2026-02-01T09:00:00.000Z"
}
}/api/v1/member-digital/transactionsrequires X-API-KeyCatat 1 transaksi belanja beserta poinnya untuk seorang member. Nominal & poin langsung ditambahkan ke saldo member.
| Field | Keterangan |
|---|---|
memberId | string โ salah satu wajib (memberId atau waId). ID member tujuan. |
waId | string โ salah satu wajib. Nomor WA member tujuan (dipakai jika tidak kirim memberId). |
amount | number โ wajib. Nominal belanja (Rp), harus > 0. |
points | number โ wajib. Poin untuk transaksi ini (boleh negatif untuk koreksi/redeem). |
note | string โ opsional. Catatan bebas, mis. nomor invoice. |
| Field | Keterangan |
|---|---|
ok | boolean โ true jika berhasil. |
transaction | { id, amount, points, note, createdAt } |
member | { memberId, waId, name, points, totalSpend } โ saldo terbaru setelah transaksi |
400amount โค 0, points bukan angka, atau memberId & waId dua-duanya kosong401API key kosong atau salah404member dengan memberId/waId tersebut tidak ditemukancurl -X POST /api/v1/member-digital/transactions \
-H "X-API-Key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"memberId": "12345678901234",
"amount": 150000,
"points": 15,
"note": "Order #INV-2026-0001"
}'{
"ok": true,
"transaction": {
"id": "cmxxxxxx",
"amount": 150000,
"points": 15,
"note": "Order #INV-2026-0001",
"createdAt": "2026-02-01T09:00:00.000Z"
},
"member": {
"memberId": "12345678901234",
"waId": "628123456789",
"name": "IRWAN HERMAWAN",
"points": 135,
"totalSpend": 1400000
}
}