Een lid opslaan

Maakt ledenrecords aan of werkt ze bij. De API bepaalt op basis van member_id of een record wordt aangemaakt of bijgewerkt.

Parameters

  • members array verplicht

    Array van Member-objecten om op te slaan. Aanbevolen maximum: 1000 items per verzoek voor optimale prestaties. De API verdeelt items automatisch in batches voor verwerking. Elk item moet facility_id (verplicht als je linking_identifier niet gebruikt) of linking_identifier (verplicht als je facility_id niet gebruikt) bevatten.

    Wanneer een lid access_time_windows bevat, moet het ook access_time_windows_revision bevatten. De array is een volledige momentopname van de bron, geen patch. Laat de array weg om de bestaande momentopname te behouden, of stuur [] met een nieuwere revisie om alle vensters van de bron in te trekken. Lees de handleiding voor Access Time Windows voordat je dit veld inschakelt.

Retourwaarde

Retourneert een eenvoudig bericht dat de synchronisatie bevestigt.

Profielvelden van leden blijven gewone upserts, ook wanneer een momentopname van vensters wordt gemeld als idempotente herhaling of als verouderd en overgeslagen. Een conflicterende momentopname met dezelfde revisie en een andere payload kan niet ongewijzigd opnieuw worden geprobeerd; reconcilieer de status bij de bron en stuur een nieuwere revisie.

Verzoek

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

Reactie

Retourneert een succesbericht met metadata over de synchronisatie.

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

Metadatavelden:

  • success - Aantal leden dat met succes is verwerkt
  • skipped - Aantal overgeslagen leden (indien van toepassing)
  • skipped_items - Array van overgeslagen leden met de redenen (indien van toepassing)
  • dry-run - Booleaanse vlag bij gebruik van een sleutel van het type dryrun (indien van toepassing)