Skip to main content

Providers & Validation

Reference for eligibility providers and how validation feeds benefits.

Supported providers

CodePurposeNotes
SAGA_NETWORKCore reciprocity network (default)Uses MCA validation; home club lookup via mapping
GOLFRSAAssociation data (courses/tees)Validation optional; no direct pricing discount today
DOTGOLFAssociation data (courses/tees)Same as GolfRSA
NEDBANK_GREENTIMECorporate benefitPricing rules live in benefits.service (non-reciprocity)
DISCOVERY_VITALITYCorporate benefitPricing rules live in benefits.service (non-reciprocity)

Unknown providers are logged and ignored (pricing falls back to visitor rates).

Validation flow

  • SAGA: calls fetchSagaValidation (MCA) to verify active membership and read home club. Active membership ⇒ role RECIPROCAL; if home club resolves to the target club, role MEMBER.
  • Corporate providers: rely on provider-specific validation in BenefitsService (outside reciprocity). Eligibility snapshot is stored when available.
  • Snapshots persist to BenefitMembership with status, tier/handicap, expiry, and raw payload (when available).

Request shape to enable benefits

{
"tenantId": "tenant-uuid",
"membershipNumber": "ABC123",
"providerCode": "SAGA_NETWORK",
"homeClubCode": "HOME123", // optional hint for home-club resolution
"handicap": 9, // optional, gates some reciprocity configs
"validationSnapshot": {} // optional cached provider validation
}

Forward this payload to pricing/stream/search calls; without it, benefits are skipped.

Error handling

  • Provider unavailable or validation failure ⇒ log warning, continue with visitor pricing.
  • Missing membershipNumber ⇒ reciprocity short-circuits with MISSING_MEMBERSHIP.
  • Policy fetch failure ⇒ reciprocity assumed enabled (warns) to avoid false negatives.

Audit & reconciliation

  • BenefitApplication: one row per applied discount (booking/slot context, amount/percent, provider, membership, snapshot).
  • BenefitMembership: last-known validation snapshot per provider/member.
  • Use these tables to reconcile applied rates vs. provider entitlements.