حفظ عضو

ينشئ سجلات الأعضاء أو يحدّثها. وتحدد API ما إذا كانت ستُنشئ السجل أو تحدّثه بناءً على member_id.

المعلمات

  • members array مطلوب

    مصفوفة من كائنات الأعضاء المراد حفظها. الحد الأقصى الموصى به: 1000 عنصر لكل طلب لتحقيق أفضل أداء. تقسّم API العناصر إلى دفعات تلقائيًا لمعالجتها. يجب أن يتضمن كل عنصر إما facility_id (مطلوب إذا لم تستخدم linking_identifier) أو linking_identifier (مطلوب إذا لم تستخدم facility_id).

    عندما يتضمن العضو access_time_windows، يجب أن يتضمن أيضًا access_time_windows_revision. والمصفوفة لقطة كاملة من المصدر، وليست تصحيحًا جزئيًا. احذفها للحفاظ على اللقطة الحالية، أو أرسل [] بمراجعة أحدث لإلغاء جميع النوافذ التي يملكها المصدر. اقرأ دليل Access Time Windows قبل تفعيل هذا الحقل.

القيم المُرجعة

يُرجع رسالة بسيطة تؤكد عملية المزامنة.

تظل حقول الملف الشخصي للعضو عمليات إدراج أو تحديث عادية حتى عندما يُبلَّغ عن لقطة النوافذ بوصفها إعادة إرسال آمنة من التكرار أو لقطة قديمة تم تخطيها. ولا يمكن إعادة محاولة لقطة متعارضة (المراجعة نفسها مع حمولة مختلفة) دون تغيير؛ قم بتسوية حالة المصدر وأرسل مراجعة أحدث.

الطلب

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 (إن انطبق ذلك)