Players (PAM) reference

Mirror your players, manage lifecycle status, set responsible-gaming limits, read audit timelines.

Upsert player

POST /v1/players

Idempotent on (brand, username). Use this on first signup and any time the player's profile fields change.

FieldTypeRequiredNotes
usernamestringyesMust be unique within your brand.
emailstringyes
external_refstringnoYour internal PAM id. Stored on the player metadata for cross-lookup.
country_codeISO 3166 alpha-2noe.g. "US", "CA"
date_of_birthYYYY-MM-DDnoRequired for KYC + RG age-gating
curl -X POST https://api.wowsino.com/v1/players \
  -H "Authorization: Bearer wsk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "username": "StarlordV7",
    "email": "sv7@example.com",
    "external_ref": "pam-uuid-abc",
    "country_code": "US"
  }'

# 201
{ "player": { "user_id": "…", "username": "StarlordV7", "status": "active", "kyc_status": "none", … } }

Get dossier

GET /v1/players/<key>

key may be the player's UUID or their username. Returns the full dossier including KYC status, risk band, RG limits, flags.

# 200
{
  "player": {
    "user_id":     "…",
    "username":    "StarlordV7",
    "status":      "active",
    "kyc_status":  "approved",
    "kyc_level":   2,
    "risk_band":   "low",
    "is_pep":      false,
    "is_sanctioned": false,
    "tags":        ["vip"],
    "rg":          { "deposit_daily_limit": 250, … }
  }
}

Change lifecycle status

PATCH /v1/players/<key>/status

Audited. The reason is appended as a compliance note on the player dossier.

statusEffect
activeNormal play
suspendedAccount paused (operator decision)
self_excludedPlayer-initiated. Blocks all money + play
fraud_hold / aml_hold / withdrawal_holdCompliance-imposed holds
affordability_reviewPending affordability documents
closedAccount closed
PATCH /v1/players/StarlordV7/status
{ "status": "fraud_hold", "reason": "velocity rule triggered" }

Set RG limits

POST /v1/players/<key>/rg

Partial updates allowed — only fields you send are changed. Pass null to clear.

FieldTypeNotes
deposit_daily_limit / _weekly / _monthlynumberUSD or your brand currency
loss_daily_limit / _weekly / _monthlynumberNet loss caps
wager_daily_limitnumberTotal wager cap
session_duration_limitintMinutes
reality_check_intervalintMinutes between reality-check pop-ups
cooloff_untilISO 8601Short-term cool-off
self_exclusion_untilISO 8601Time-bounded self-exclusion
self_exclusion_permanentboolPermanent self-exclusion (irreversible without manual escalation)

Audit timeline

GET /v1/players/<key>/timeline?limit=N

Combined event log — KYC decisions, RG changes, operator notes — newest first.