Enregistrer un membre

Crée ou met à jour des fiches de membres. L'API détermine s'il faut créer ou mettre à jour la fiche en fonction du member_id.

Paramètres

  • members array obligatoire

    Tableau d'objets Member à enregistrer. Maximum recommandé : 1000 éléments par requête pour des performances optimales. L'API regroupe automatiquement les éléments en lots pour leur traitement. Chaque élément doit inclure soit facility_id (obligatoire si vous n'utilisez pas linking_identifier), soit linking_identifier (obligatoire si vous n'utilisez pas facility_id).

    Lorsqu'un membre inclut access_time_windows, il doit également inclure access_time_windows_revision. Le tableau est un instantané complet de la source, et non un correctif partiel. Omettez-le pour conserver l'instantané existant, ou envoyez [] avec une révision plus récente pour révoquer toutes les plages appartenant à la source. Lisez le guide des Access Time Windows avant d'activer ce champ.

Valeur renvoyée

Renvoie un message simple confirmant l'opération de synchronisation.

Les champs du profil du membre restent des upserts normaux, même lorsqu'un instantané de plages est signalé comme une relecture idempotente ou ignoré car obsolète. Un instantané en conflit (même révision, charge utile différente) ne peut pas être renvoyé tel quel ; rapprochez l'état de la source et envoyez une révision plus récente.

Requête

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

Réponse

Renvoie un message de réussite accompagné de métadonnées sur l'opération de synchronisation.

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

Champs de métadonnées :

  • success - Nombre de membres traités avec succès
  • skipped - Nombre de membres ignorés (le cas échéant)
  • skipped_items - Tableau des membres ignorés, avec leurs motifs (le cas échéant)
  • dry-run - Indicateur booléen en cas d'utilisation d'une clé de type dryrun (le cas échéant)