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.
Table Link
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
200withstatus=BLOCKEDandreasonCode=club_pos_disabled - balance returns
403
- member lookup returns
- Invalid or missing
x-partner-keyreturns403
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"
}