Zapisywanie członka

Tworzy lub aktualizuje rekordy członków. API określa, czy utworzyć, czy zaktualizować rekord, na podstawie member_id.

Parametry

  • members array wymagany

    Tablica obiektów Member do zapisania. Zalecane maksimum: 1000 elementów na żądanie w celu zapewnienia optymalnej wydajności. API automatycznie dzieli elementy na partie do przetworzenia. Każdy element musi zawierać facility_id (wymagany, jeśli nie używasz linking_identifier) lub linking_identifier (wymagany, jeśli nie używasz facility_id).

    Jeśli członek zawiera access_time_windows, musi również zawierać access_time_windows_revision. Tablica jest kompletną migawką źródła, a nie poprawką. Pomiń ją, aby zachować istniejącą migawkę, lub wyślij [] z nowszą wersją, aby odwołać wszystkie okna należące do źródła. Przed włączeniem tego pola przeczytaj przewodnik po Access Time Windows.

Zwracane wartości

Zwraca prosty komunikat potwierdzający operację synchronizacji.

Pola profilu członka pozostają zwykłymi operacjami upsert nawet wtedy, gdy migawka okien zostanie zgłoszona jako idempotentne ponowne odtworzenie lub pominięcie nieaktualnych danych. Konfliktowej migawki (ta sama wersja, inny ładunek) nie można ponowić bez zmian; uzgodnij stan źródła i wyślij nowszą wersję.

Żądanie

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

Odpowiedź

Zwraca komunikat o powodzeniu z metadanymi operacji synchronizacji.

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

Pola metadanych:

  • success — liczba pomyślnie przetworzonych członków
  • skipped — liczba pominiętych członków (jeśli występują)
  • skipped_items — tablica pominiętych członków wraz z przyczynami (jeśli występują)
  • dry-run — flaga logiczna ustawiana przy użyciu klucza typu dryrun (jeśli dotyczy)