บันทึกสมาชิก

สร้างหรืออัปเดตเรคคอร์ดสมาชิก API จะพิจารณาว่าจะสร้างหรืออัปเดตโดยอิงจาก member_id

พารามิเตอร์

  • members array จำเป็น

    อาร์เรย์ของออบเจ็กต์ Member ที่จะบันทึก จำนวนสูงสุดที่แนะนำ: 1000 รายการต่อคำขอเพื่อประสิทธิภาพสูงสุด API จะแบ่งรายการเป็นกลุ่มเพื่อประมวลผลโดยอัตโนมัติ แต่ละรายการต้องมี facility_id (จำเป็นหากไม่ใช้ linking_identifier) หรือ linking_identifier (จำเป็นหากไม่ใช้ facility_id)

    เมื่อสมาชิกมี access_time_windows ต้องมี access_time_windows_revision ด้วย อาร์เรย์นี้เป็นสแนปช็อตที่สมบูรณ์ของแหล่งข้อมูล ไม่ใช่การแก้ไขบางส่วน เว้นไว้เพื่อคงสแนปช็อตที่มีอยู่ หรือส่ง [] พร้อมเวอร์ชันที่ใหม่กว่าเพื่อเพิกถอนช่วงเวลาทั้งหมดที่แหล่งข้อมูลเป็นเจ้าของ โปรดอ่านคู่มือ Access Time Windows ก่อนเปิดใช้ฟิลด์นี้

ค่าที่ส่งคืน

ส่งคืนข้อความสั้น ๆ ที่ยืนยันการดำเนินการซิงค์

ฟิลด์โปรไฟล์ของสมาชิกยังคงเป็นการ upsert ตามปกติ แม้สแนปช็อตช่วงเวลาจะถูกรายงานว่าเป็นการส่งซ้ำแบบ Idempotent หรือถูกข้ามเพราะเป็นข้อมูลเก่า สแนปช็อตที่ขัดแย้งกัน (เวอร์ชันเดิม/เพย์โหลดต่างกัน) ไม่สามารถลองใหม่โดยไม่เปลี่ยนแปลงได้ ให้กระทบยอดสถานะของแหล่งข้อมูลแล้วส่งเวอร์ชันที่ใหม่กว่า

คำขอ

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
          }
        ]
      }
    ]
  }'

การตอบกลับ

ส่งคืนข้อความแสดงความสำเร็จพร้อมข้อมูลเมตาเกี่ยวกับการดำเนินการซิงค์

{
  "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"
      }
    ]
  }
}

ฟิลด์ข้อมูลเมตา:

  • success - จำนวนสมาชิกที่ประมวลผลสำเร็จ
  • skipped - จำนวนสมาชิกที่ถูกข้าม (ถ้ามี)
  • skipped_items - อาร์เรย์ของสมาชิกที่ถูกข้ามพร้อมเหตุผล (ถ้ามี)
  • dry-run - แฟล็กบูลีนเมื่อใช้คีย์ประเภท dryrun (ถ้ามี)