Ein Mitglied speichern

Erstellt oder aktualisiert Mitgliederdatensätze. Die API entscheidet anhand der member_id, ob ein Datensatz erstellt oder aktualisiert wird.

Parameter

  • members array erforderlich

    Array der zu speichernden Mitgliederobjekte. Empfohlenes Maximum für optimale Leistung: 1000 Elemente pro Anfrage. Die API fasst Elemente für die Verarbeitung automatisch in Batches zusammen. Jedes Element muss entweder facility_id (erforderlich, wenn linking_identifier nicht verwendet wird) oder linking_identifier (erforderlich, wenn facility_id nicht verwendet wird) enthalten.

    Wenn ein Mitglied access_time_windows enthält, muss es auch access_time_windows_revision enthalten. Das Array ist ein vollständiger Quell-Snapshot, kein Patch. Lassen Sie es weg, um den vorhandenen Snapshot beizubehalten, oder senden Sie [] mit einer neueren Revision, um alle quelleigenen Zeitfenster zu widerrufen. Lesen Sie den Leitfaden zu Access Time Windows, bevor Sie dieses Feld aktivieren.

Rückgabe

Gibt eine einfache Meldung zurück, die den Synchronisierungsvorgang bestätigt.

Die Profilfelder des Mitglieds werden weiterhin normal per Upsert verarbeitet, auch wenn ein Zeitfenster-Snapshot als idempotente Wiederholung oder als veraltet übersprungen gemeldet wird. Ein widersprüchlicher Snapshot mit gleicher Revision und abweichender Payload kann nicht unverändert wiederholt werden; gleichen Sie den Quellzustand ab und senden Sie eine neuere Revision.

Anfrage

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

Antwort

Gibt eine Erfolgsmeldung mit Metadaten zum Synchronisierungsvorgang zurück.

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

Metadatenfelder:

  • success - Anzahl der erfolgreich verarbeiteten Mitglieder
  • skipped - Anzahl der übersprungenen Mitglieder (falls vorhanden)
  • skipped_items - Array der übersprungenen Mitglieder mit Gründen (falls vorhanden)
  • dry-run - Boolesches Flag bei Verwendung des Schlüsseltyps dryrun (falls zutreffend)