SocialHub.AI
Pusat Pengembang · REST API

Kustomisasi: Bidang & Modul

Flash dibentuk untuk setiap merek dengan dua cara, keduanya pada satu basis kode bersama — tidak pernah bercabang. Bidang kustom menambahkan data Anda sendiri ke catatan anggota dan diatur melalui v2 REST API. Modul adalah kemampuan opsional yang diaktifkan per ruang kerja dan diberlakukan oleh server. Panduan ini mencakup keduanya.

Langkah 1 — tentukan bidang (dalam aplikasi)

Bidang dideklarasikan sebelum diatur

Pemilik atau admin membuat bidang di bawah Pengaturan → Bidang Kustom. Setiap bidang memiliki kunci (nama mesinnya, misalnya cf_membership_no), tipe, dan — untuk tipe tertentu — daftar opsi. Kunci dan tipe tetap setelah dibuat. API tidak pernah membuat bidang; Ini hanya menetapkan nilai untuk bidang yang sudah ada, dan menolak kunci yang tidak dikenal — tabel definisi adalah daftar yang diizinkan.

Langkah 2 — tetapkan nilai melalui API

Lewatkan customAttributes saat membuat atau memperbarui

Baik POST /api/v2/members (buat) dan PATCH /api/v2/members/{id} (perbarui) menerima customAttributes object yang dikunci oleh kunci bidang Anda. Otentikasi dengan kunci Bearer fl_live_ yang memiliki cakupan members:write.

curl -X POST https://flash.socialhub.ai/api/v2/members \
  -H "Authorization: Bearer fl_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "email": "ada@example.com",
    "fullName": "Ada Lovelace",
    "customAttributes": {
      "cf_membership_no": "A-10023",
      "cf_preferred_store": "flagship",
      "cf_child_birthday": "2018-05-01"
    }
  }'

Saat pembaruan, kirim hanya kunci yang ingin Anda ubah. Mengatur kunci ke null akan menghapusnya.

curl -X PATCH https://flash.socialhub.ai/api/v2/members/{id} \
  -H "Authorization: Bearer fl_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "customAttributes": { "cf_preferred_store": "airport" } }'
Bentuk nilai berdasarkan jenis

Apa yang diterima setiap jenis bidang

TipeContoh nilai JSONMenerima
text"A-10023"string
number42number (atau numerik string)
date"2018-05-01"Tanggal ISO (YYYY-MM-DD)
booleantruebenar / salah
enum"flagship"salah satu opsi bidang
list["running","tennis"]subset dari opsi bidang

Validasi sangat ketat: nilai harus sesuai dengan tipe bidangnya, nilai enum/list harus salah satu opsi yang ditentukan, dan kunci yang tidak dikenal ditolak dengan 400. Bidang untuk data pribadi sensitif (PII) belum diterima — pertahankan atribut khusus untuk nilai bisnis yang tidak sensitif.

Apa yang Anda dapatkan di hilir

Satu nilai, digunakan di seluruh platform

Segmen

Memfilter anggota berdasarkan bidang kustom apa pun dengan operator yang sesuai dengan tipenya — bidang yang sama yang Anda tetapkan di API.

Personalisasi Email

Referensikan nilai dalam salinan sebagai {{cf_membership_no}} atau {{member.cf_membership_no}}.

Anggota membaca

Nilai khusus dikembalikan pada anggota object di bawah customAttributes.

② Modul

Kemampuan opsional, diaktifkan per ruang kerja

Jika sebuah field kustom menambahkan sebuah nilai, sebuah modul menambahkan keseluruhan kemampuan — misalnya modul tiket layanan, janji temu, atau log perbaikan. Modul dinonaktifkan secara default dan diaktifkan per ruang kerja. Setiap ruang kerja menjalankan basis kode yang sama; status modul aktif atau nonaktif adalah data (hak akses), bukan build pribadi.

Cara kerja gating

Diterapkan oleh server, di satu tempat

Setiap modul memiliki kunci tetap (misalnya tickets). Apakah suatu ruang kerja dapat menggunakannya adalah saklar tunggal per ruang kerja, diperiksa pada satu titik penilaian dan diterapkan di mana pun modul tersebut muncul — fail-closed: jika saklar tidak aktif, kemampuan tersebut tidak ada.

API

Endpoint modul yang dinonaktifkan menolak panggilan dengan 403. Akses tidak pernah dibiarkan begitu saja di UI.

Navigasi & halaman

Entri menu dan halaman modul hanya muncul saat diaktifkan untuk ruang kerja — dan menghilang dengan bersih saat dimatikan.

Terisolasi oleh penyewa

Hak akses berlaku per ruang kerja. Modul dan data satu merek tidak pernah terlihat oleh merek lain.

Memperluas tanpa melakukan fork

Bagaimana modul baru diperkenalkan

Ketika suatu kemampuan benar-benar dapat digunakan kembali, kemampuan tersebut dibangun sekali sebagai modul — terdaftar dalam katalog modul di bawah kuncinya, dengan datanya sendiri, API yang diatur hak aksesnya sendiri, dan halamannya sendiri. Ruang kerja pertama yang membutuhkannya akan segera dibangun; Yang berikutnya hanya membalik sakelar. Inilah inti dari model ini: perbedaan pelanggan diekspresikan sebagai pengaturan, sehingga satu peningkatan atau perbaikan menjangkau setiap ruang kerja sekaligus.

  1. Modul tersebut terdaftar dalam katalog dengan kunci dan deskripsi yang stabil.
  2. Data dan rute API-nya dibatasi oleh kunci tersebut (fail-closed).
  3. Navigasi dan halamannya hanya ditampilkan saat kunci diaktifkan.
  4. Pemilik mengaktifkannya untuk ruang kerja; ruang kerja kedua adalah saklar, bukan pembangunan ulang.
Mengelola modul

Aktifkan atau nonaktifkan modul

Pemilik ruang kerja mengelola modul dari Pengaturan → Modul. Setiap tombol akan langsung berlaku di API dan UI.

Aturan pengambilan keputusan: gunakan konfigurasi terlebih dahulu; tambahkan kolom kustom jika Anda perlu menyimpan nilai; buat modul jika suatu kemampuan benar-benar dapat digunakan kembali — dan jangan pernah melakukan fork produk untuk satu pelanggan saja.

Membutuhkan jenis catatan yang sama sekali baru, bukan hanya bidang tambahan? Lihat Objek Kustom — bangun bisnis object tanpa kode Anda sendiri, lalu telusuri catatan dan segmentasikan berdasarkan catatan tersebut. Untuk menjaga agar sisa tumpukan Anda tetap sinkron, lihat Konektor & Notifikasi.