Logo
Daftar Isi

Bab 13 · Developer API

API Pelanggan (Members)

Endpoint /members: profil pelanggan, level member, saldo dan mutasi poin, serta riwayat belanja per pelanggan.

Data pelanggan berisi informasi pribadi — nama, alamat, nomor telepon, nomor identitas, tanggal lahir. Perlakukan sesuai kebijakan privasi toko Anda: simpan hanya yang perlu, batasi siapa yang bisa membacanya, dan jangan teruskan ke pihak ketiga tanpa dasar yang jelas.

GET /members

curl -H "Authorization: Bearer $KEY" \
  "$BASE/members?updated_since=2026-08-01T00:00:00Z&include_deleted=true"
{
  "id": 511,
  "branch": { "id": 2, "code": "PST", "name": "Cabang Pusat" },
  "name": "Budi Santoso",
  "identity_number": "3173xxxxxxxxxxxx",
  "telephone_number": "0812xxxxxxx",
  "address": "Jl. Merdeka 1",
  "birthday": "17-08-1990",
  "gender": "MALE",
  "email": "budi@example.com",
  "member_level": { "id": 1, "name": "Gold" },
  "point_balance": 1200,
  "memo": null,
  "created_at": "2025-01-10T03:00:00.000Z",
  "updated_at": "2026-08-13T05:30:12.000Z",
  "deleted_at": null
}
FieldTipeCatatan
idintKunci upsert
branchobjek / nullCabang tempat pelanggan didaftarkan
namestringNama pelanggan
identity_numberstring / nullNomor KTP atau identitas lain, apa adanya
telephone_numberstring / nullNomor telepon, apa adanya — belum dinormalkan
addressstring / nullAlamat
birthdaystring / nullString DD-MM-YYYY, bukan tanggal ISO
genderenum / nullMALE, FEMALE, atau null
emailstring / nullSurel
member_levelobjek / nullLevel keanggotaan, misalnya Gold
point_balanceintSaldo poin saat request dijalankan
memostring / nullCatatan bebas

Dua field yang sering bikin bingung:

  • birthday adalah teks, bukan tanggal. Di database memang tersimpan sebagai string DD-MM-YYYY, dan API meneruskannya apa adanya alih-alih berpura-pura itu tanggal. Kalau Anda butuh pengingat ulang tahun, urai sendiri formatnya dan siapkan penanganan untuk nilai yang tidak lengkap.
  • telephone_number belum dinormalkan. Bisa berbentuk 0812..., +62812..., atau mengandung spasi dan tanda hubung, tergantung cara staf mengetiknya. Normalkan di sisi Anda sebelum dipakai untuk WhatsApp blast.

Peringatan penting soal saldo poin

point_balance dihitung ulang setiap request dari penjumlahan mutasi poin — tidak ada kolom saldo di database.

Konsekuensinya: perubahan poin tidak mengubah updated_at pelanggan. Polling updated_since tidak akan mengirim ulang pelanggan yang hanya berubah poinnya. Kalau Anda melacak poin, pilih salah satu:

  • poll /members/{id}/point-logs untuk pelanggan yang Anda pantau, atau
  • lakukan full refresh /members secara berkala, misalnya mingguan, atau
  • jangan simpan saldo poin sama sekali — ambil langsung saat dibutuhkan.

GET /members/{id}

Satu pelanggan, bentuk sama persis. 404 not_found kalau tidak ada atau sudah dihapus.

GET /members/{id}/sales

Riwayat belanja pelanggan tersebut. Bentuk objek, parameter, dan paginasinya sama persis dengan /sales — ini memang /sales yang sudah disaring ke satu pelanggan.

Berguna untuk halaman profil pelanggan di CRM Anda. Untuk analitik massal, lebih hemat menarik /sales sekali lalu mengelompokkan sendiri berdasarkan customer.id.

GET /members/{id}/point-logs

Riwayat mutasi poin. Saldo pelanggan sama dengan jumlah seluruh baris ini.

{
  "id": 8801,
  "amount": 150,
  "is_manual": false,
  "memo": null,
  "sale_payment_id": 44211,
  "branch": { "id": 2, "code": "PST", "name": "Cabang Pusat" },
  "created_at": "2026-08-13T05:30:12.000Z",
  "updated_at": "2026-08-13T05:30:12.000Z",
  "deleted_at": null
}
FieldArti
amountPositif berarti poin bertambah, negatif berarti poin dipakai atau dikurangi
is_manualtrue bila disesuaikan manual oleh staf, false bila otomatis dari transaksi
sale_payment_idPembayaran yang memicu mutasi; null untuk penyesuaian manual
memoAlasan penyesuaian manual

Yang tidak tersedia di v1

Riwayat pemeriksaan mata, resep kacamata, dan rekam medis pelanggan tidak diekspos — itu data kesehatan, kelas paling sensitif dalam sistem, dan menunggu dukungan scoped key. Begitu juga riwayat pesan WhatsApp atau email dan umpan balik pelanggan. Detailnya di Batasan, Versi & Rencana.

Solusi lengkap untuk toko optik modern dengan teknologi terdepan dan dukungan terbaik.

Fitur

  • Penjualan Optik
  • Faset & QC
  • Inventory & Gudang
  • Membership & After-Service
  • Multi-Cabang & Roles
  • Financial Statement

Solusi

Perusahaan

©Lensiro. All Rights Reserved.

Kebijakan Privasi