Zapisywanie członka
Tworzy lub aktualizuje rekordy członków. API określa, czy utworzyć, czy zaktualizować rekord, na podstawie member_id.
Parametry
-
members
arraywymaganyTablica 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żywaszlinking_identifier) lublinking_identifier(wymagany, jeśli nie używaszfacility_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)