Core concepts

Tenants, brands, players, service modes, and the money model. Read this once.

Tenants vs brands

A tenant is your commercial account on WOWsino. A tenant owns one or more brands. Most operators have one brand per tenant (matching their public-facing site); white-label launchers can run several brands under one tenant.

ConceptWhat it is
tenantThe commercial entity (your company). Owns API keys, billing, contracts.
brandThe player-facing identity (logo, domain, copy). One tenant → ≥1 brand.
playerA real human account, scoped to a brand. Identified by (brand, username).
operatorA user of your admin console — a member of your team.

Service modes

ModeWhat you ownWhat we own
plug_in Player accounts, real-money wallet, PSP, KYC, game aggregator, licensing Engagement engines (bonuses, lootbox, raffles, jackpots, journeys, etc.), CRM, VIP, gamification
white_label Licensing, PSP credentials, KYC vendor, marketing Everything else — PAM, wallet, ledger, engines, compliance gate, audit, operator admin

API keys: live vs test

Every tenant has two key families:

Keys carry scopes. Default scope * grants the full surface; restrict per integration as you mature.

The money model

Every monetary movement on WOWsino is a balanced, idempotent ledger entry. Balances are derived; the ledger is the source of truth.

Four asset rails:

RailWhat it isConvertible?
realCash equivalent (USD, EUR, BTC, USDC, …)Withdrawable per your PSP rules
bonusLocked promotional balance. Convertible to real after wageringConvertible on fulfillment
winzOperator points granted by lootboxes, quests, campaigns, mini-gamesOff-ledger by default; convert via your own redemption rules
xpVIP progression points. Daily-capped from real play onlyNever withdrawable; drives level + cashback

Idempotency

Every write endpoint accepts an idempotency_key in the body (or auto-generates one when you don't supply one). Re-sending the same request — for any reason, including network retries — returns the original result, never a duplicate side-effect.

POST /v1/lootbox/<id>/open
{
  "user_id": "StarlordV7",
  "idempotency_key": "open-2025-05-19-uniq-abc"
}
# First call: 201 with new reward
# Second call (same key): 200 with the SAME reward + "deduped": true

Player resolution

Identify players by username within your brand. Your own internal UUID can be passed as external_ref on upsert and recovered from the player dossier later.