Menyimpan anggota
Membuat atau memperbarui catatan anggota. API menentukan apakah akan membuat atau memperbarui berdasarkan member_id.
Parameter
-
members
arraywajibArray objek Member yang akan disimpan. Maksimum yang disarankan: 1000 item per permintaan untuk kinerja optimal. API secara otomatis mengelompokkan item ke dalam batch untuk diproses. Setiap item harus menyertakan
facility_id(wajib jika tidak menggunakanlinking_identifier) ataulinking_identifier(wajib jika tidak menggunakanfacility_id).Jika anggota menyertakan
access_time_windows, anggota tersebut juga harus menyertakanaccess_time_windows_revision. Array ini merupakan snapshot sumber yang lengkap, bukan patch. Hilangkan untuk mempertahankan snapshot yang ada, atau kirim[]dengan revisi yang lebih baru untuk mencabut semua jendela milik sumber. Baca panduan Access Time Windows sebelum mengaktifkan bidang ini.
Hasil
Mengembalikan pesan sederhana yang mengonfirmasi operasi sinkronisasi.
Bidang profil anggota tetap diproses sebagai upsert biasa meskipun snapshot jendela dilaporkan sebagai pemutaran ulang idempoten atau dilewati karena usang. Snapshot yang bertentangan (revisi sama/payload berbeda) tidak dapat dicoba ulang tanpa perubahan; rekonsiliasikan status sumber dan kirim revisi yang lebih baru.
Permintaan
curl -X POST https://partner-api.performancehub.co/partner/v1/members \
-u sk_live_YOUR_PARTNER_SECRET_KEY: \
-H "Content-Type: application/json" \
-d '{
"members": [
{
"member_id": "member_11111",
"facility_id": "550e8400-e29b-41d4-a716-446655440000",
// "linking_identifier": "branch_downtown", // If using linking identifier
"first_name": "John",
"last_name": "Smith",
"email": "john.smith@example.com",
"mobile_phone": "+61 412 345 678",
"date_of_birth": "1985-06-15",
"gender": "male",
"type": "member",
"tags": ["vip", "personal-training"],
"profile_picture": "/9j/4AAQSkZJRgABAQAAAQ...",
"membership_status": "current",
"created": "2024-01-15T10:30:00Z",
"updated": "2024-01-20T14:45:00Z",
"access_time_windows_revision": 1842,
"access_time_windows": [
{
"external_id": "access-4b1782",
"kind": "absolute",
"from": 1792053000,
"to": 1792058400,
"timezone": "Australia/Perth",
"scope_key": "after_hours_entry",
"label": "Temporary site access"
}
],
"address": {
"address_line_1": "456 Bourke Street",
"address_line_2": "Apt 12",
"city": "Melbourne",
"state": "VIC",
"postal_code": "3000",
"country": "AU",
"country_name": "Australia"
},
"membership_plans": [
{
"membership_plan_id": "plan_99999",
"name": "Unlimited Monthly",
"start_date": "2024-01-01T00:00:00Z",
"status": "current",
"is_current": true,
"end_date": null
}
]
}
]
}'
Respons
Mengembalikan pesan keberhasilan beserta metadata tentang operasi sinkronisasi.
{
"message": "Member sync successful.",
"metadata": {
"success": 245,
"skipped": 5,
"skipped_items": [
{
"member_id": "member_123",
"facility_id": null,
"reason": "Facility integration is disabled in facility-partner-config"
}
]
}
}
Bidang metadata:
- success - Jumlah anggota yang berhasil diproses
- skipped - Jumlah anggota yang dilewati (jika ada)
- skipped_items - Array anggota yang dilewati beserta alasannya (jika ada)
- dry-run - Penanda boolean jika menggunakan jenis kunci dryrun (jika berlaku)