Skip to main content

API Reference

Health Checks

GET /api/health/ready
GET /api/health/live

Health endpoints are unauthenticated and return a simple readiness or liveness payload.

Member Lookup

POST /api/v1/pos/partners/members/lookup

Look up a member by card number or member reference.

Request

{
"requestId": "req-001",
"clubCode": "randpark",
"lookupType": "card_number",
"cardNumber": "6037990000000001"
}

Balance

GET /api/v1/pos/partners/balance?clubCode=randpark&cardNumber=6037990000000001

Returns the current wallet balance for a resolved member.

POST /api/v1/pos/partners/tables/link

Associates a POS table with a member wallet session before settlement.

Wallet Top-Up

POST /api/v1/pos/partners/topups

Creates an idempotent wallet top-up request.

Request

{
"requestId": "topup-001",
"clubCode": "randpark",
"partnerTransactionId": "pos-topup-001",
"amount": 5000,
"currency": "ZAR",
"memberRef": "123456"
}

Settlement

POST /api/v1/pos/partners/settlements

Creates an idempotent settlement request against a linked member wallet.

Business Semantics

  • Disabled club:
    • member lookup returns 200 with status=BLOCKED and reasonCode=club_pos_disabled
    • balance returns 403
  • Invalid or missing x-partner-key returns 403

Smoke Validation

Use the live smoke script to validate the supported contract:

POS_BASE_URL=https://pos-partner-api.uat.digiwedge.com \
POS_PARTNER_KEY=<key> \
bash tools/scripts/smoke/pos-partner-api.sh

Example business response

{
"requestId": "smoke-001",
"status": "BLOCKED",
"tableOpenAllowed": false,
"reasonCode": "club_pos_disabled",
"message": "POS partner integration is not enabled for this club"
}