Lưu hội viên

Tạo hoặc cập nhật bản ghi hội viên. API xác định việc tạo mới hay cập nhật dựa trên member_id.

Tham số

  • members array bắt buộc

    Mảng các đối tượng Member cần lưu. Khuyến nghị tối đa: 1000 mục mỗi yêu cầu để đạt hiệu suất tối ưu. API tự động chia lô các mục để xử lý. Mỗi mục phải có facility_id (bắt buộc nếu không dùng linking_identifier) hoặc linking_identifier (bắt buộc nếu không dùng facility_id).

    Khi một hội viên có access_time_windows, hội viên đó cũng phải có access_time_windows_revision. Mảng này là ảnh chụp nhanh đầy đủ từ nguồn, không phải bản vá. Bỏ qua mảng để giữ nguyên ảnh chụp nhanh hiện có, hoặc gửi [] với phiên bản mới hơn để thu hồi mọi khung thời gian thuộc nguồn. Hãy đọc hướng dẫn Access Time Windows trước khi bật trường này.

Giá trị trả về

Trả về một thông báo đơn giản xác nhận thao tác đồng bộ.

Các trường hồ sơ hội viên vẫn được upsert bình thường ngay cả khi ảnh chụp nhanh khung thời gian được báo cáo là phát lại idempotent hoặc bị bỏ qua do đã cũ. Một ảnh chụp nhanh xung đột cùng phiên bản/khác payload không thể thử lại mà không thay đổi; hãy đối soát trạng thái nguồn và gửi phiên bản mới hơn.

Yêu cầu

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

Phản hồi

Trả về thông báo thành công kèm siêu dữ liệu về thao tác đồng bộ.

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

Các trường siêu dữ liệu:

  • success - Số hội viên đã được xử lý thành công
  • skipped - Số hội viên bị bỏ qua (nếu có)
  • skipped_items - Mảng các hội viên bị bỏ qua kèm lý do (nếu có)
  • dry-run - Cờ boolean nếu sử dụng loại khóa dryrun (nếu áp dụng)