Salvare un membro

Crea o aggiorna i record dei membri. L'API stabilisce se creare o aggiornare in base al member_id.

Parametri

  • members array obbligatorio

    Array di oggetti Member da salvare. Massimo consigliato: 1000 elementi per richiesta, per prestazioni ottimali. L'API suddivide automaticamente gli elementi in batch per l'elaborazione. Ogni elemento deve includere facility_id (obbligatorio se non usi linking_identifier) oppure linking_identifier (obbligatorio se non usi facility_id).

    Quando un membro include access_time_windows, deve includere anche access_time_windows_revision. L'array è un'istantanea completa della fonte, non una modifica parziale. Omettilo per mantenere l'istantanea esistente oppure invia [] con una revisione più recente per revocare tutte le finestre di proprietà della fonte. Leggi la guida alle Access Time Windows prima di attivare questo campo.

Valore restituito

Restituisce un semplice messaggio di conferma dell'operazione di sincronizzazione.

I campi del profilo del membro restano normali upsert anche quando un'istantanea delle finestre viene segnalata come ripetizione idempotente o come obsoleta e saltata. Un'istantanea in conflitto, con la stessa revisione e un payload diverso, non può essere ripetuta senza modifiche: riconcilia lo stato della fonte e invia una revisione più recente.

Richiesta

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

Risposta

Restituisce un messaggio di esito positivo con i metadati dell'operazione di sincronizzazione.

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

Campi dei metadati:

  • success - Numero di membri elaborati correttamente
  • skipped - Numero di membri saltati (se presenti)
  • skipped_items - Array dei membri saltati con i relativi motivi (se presenti)
  • dry-run - Flag booleano presente se usi il tipo di chiave dryrun (se applicabile)