Data Contract — iGaming
Auto-generated by
npx tsx scripts/runner/cli.ts generate-contractLast updated: 2026-04-06 Suppliers analysed: 24
The data contract lists every canonical field used across OneHazel's 24 iGaming supplier integrations. Providing all fields listed here ensures full compatibility with any supplier in the marketplace.
How to send this data
All fields are sent via the Operator Data API:
- Player fields —
POST /entitieswithentityType: "player" - Transaction fields —
POST /entities/{id}/eventswitheventType: "transaction" - KYC fields —
POST /entities/{id}/eventswitheventType: "kyc" - Compliance / Risk / Wallet —
PUT /entities/{id}/state/{key}
Fields marked PII are encrypted at rest with AES-256-GCM and only decrypted on single-entity reads.
Player Fields
| Field | Type | Required By | PII | Description |
|---|---|---|---|---|
player.id | string | Nuvei, Paysafe, Jumio, Sumsub +3 more | No | Unique player identifier |
player.country | string | Scaleo, Shufti Pro | No | Player country code |
player.dateOfBirth | string | Onfido, Shufti Pro | Yes | Date of birth (ISO 8601) |
player.email | string | Paysafe, Onfido, Sumsub, Shift4 +2 more | Yes | Player email address |
player.firstName | string | Paysafe, Onfido, OneSignal, Shufti Pro | Yes | Player first name |
player.language | string | Paysafe, Betfair, Sumsub, Shufti Pro | No | Preferred language code |
player.lastName | string | Paysafe, Onfido | Yes | Player last name |
player.phone | string | Sumsub | Yes | Player phone number |
Transaction Fields
| Field | Type | Required By | PII | Description |
|---|---|---|---|---|
transaction.id | string | Nuvei, Shift4 | No | Unique transaction identifier |
transaction.amount | number | Nuvei, Paysafe, NOWPayments, Shift4 | No | Amount in minor currency units (pence, cents) |
transaction.currency | string | Nuvei, Paysafe, Betfair, NOWPayments +2 more | No | ISO 4217 currency code |
transaction.reference | string | Nuvei, Paysafe, NOWPayments, Shufti Pro | No | Provider's reference / external ID |
KYC / Verification Fields
| Field | Type | Required By | PII | Description |
|---|---|---|---|---|
kyc.playerId | string | Onfido, Sumsub | No | Reference to player |
kyc.documentType | string | Onfido, Sumsub, Veriff | No | passport |
Compliance Fields
| Field | Type | Required By | PII | Description |
|---|---|---|---|---|
compliance.playerId | string | ComplyAdvantage, Shufti Pro | No | Reference to player |
Risk Fields
| Field | Type | Required By | PII | Description |
|---|---|---|---|---|
risk.score | number | ComplyAdvantage | No | Risk score 0-100 |
Additional Canonical Fields
These fields are defined in the canonical model but are not directly extracted from any current supplier spec. They are populated by the operator's own data or derived by OneHazel during processing.
| Field | Type | PII | Description |
|---|---|---|---|
player.status | string | No | Account status: active |
player.jurisdiction | string | No | Regulatory jurisdiction code (GB, MT, SE, ...) |
player.registeredAt | string | No | Account creation timestamp |
transaction.playerId | string | No | Reference to player |
transaction.type | string | No | deposit |
transaction.status | string | No | pending |
transaction.timestamp | string | No | Transaction timestamp |
kyc.status | string | No | pending |
kyc.provider | string | No | KYC provider name (Onfido, Jumio, Sumsub, ...) |
kyc.completedAt | string | No | Verification completion timestamp |
kyc.expiresAt | string | No | Document expiry date |
compliance.selfExcluded | boolean | No | Player has self-excluded |
compliance.exclusionSources | array | No | Exclusion sources (GAMSTOP, CRUKS, ...) |
compliance.depositLimit | number | No | Active deposit limit amount |
compliance.sessionLimit | number | No | Active session time limit in minutes |
compliance.coolingOff | boolean | No | Player is in a cooling-off period |
compliance.checkedAt | string | No | Last compliance check timestamp |
risk.playerId | string | No | Reference to player |
risk.level | string | No | low |
risk.factors | array | No | Contributing risk factor strings |
risk.provider | string | No | Risk assessment provider (Mindway, GamCare, ...) |
risk.assessedAt | string | No | Assessment timestamp |
wallet.playerId | string | No | Reference to player |
wallet.balance | number | No | Current real-money balance in minor currency units |
wallet.bonusBalance | number | No | Bonus balance in minor currency units |
wallet.currency | string | No | ISO 4217 currency code |
wallet.updatedAt | string | No | Last balance update timestamp |
Dashboard Fields
These fields are required by OneHazel analytics dashboards. All are a subset of the canonical model above.
| Field | Type | Used In | Description |
|---|---|---|---|
player.id | string | All dashboards | Player identifier |
player.status | string | Player KPIs | Account status for active/churn metrics |
player.registeredAt | string | Player KPIs | Registration date for cohort analysis |
player.jurisdiction | string | Player KPIs | Jurisdiction for regional breakdown |
transaction.amount | number | Revenue dashboard | Transaction amount (minor units) |
transaction.currency | string | Revenue dashboard | Currency for multi-currency aggregation |
transaction.type | string | Revenue dashboard | Transaction type for deposit/withdrawal split |
transaction.status | string | Revenue dashboard | Status filter for completed transactions |
transaction.timestamp | string | Revenue dashboard | Time-series aggregation key |
transaction.playerId | string | Revenue dashboard | Player link for per-player revenue |
kyc.status | string | Compliance dashboard | Verification status distribution |
kyc.playerId | string | Compliance dashboard | Player link for verification rate |
compliance.selfExcluded | boolean | Compliance dashboard | Self-exclusion tracking |
risk.score | number | Risk dashboard | Risk distribution histogram |
risk.level | string | Risk dashboard | Risk tier breakdown |
wallet.balance | number | Player KPIs | Current wallet balance |
wallet.currency | string | Player KPIs | Balance currency |
Supplier Coverage
Which canonical domains each iGaming supplier covers:
| Supplier | Subdomain | Domains Covered |
|---|---|---|
| API-Football | Sports Data & Odds | Sports/Odds data (read-only) |
| Betfair | Sports Data & Odds | player, transaction |
| ComplyAdvantage | Compliance / AML | compliance, risk |
| Jumio | KYC / Identity | player |
| NOWPayments | Payments | transaction |
| Nuvei | Payments | player, transaction |
| OneSignal | Engagement / Messaging | player |
| Onfido | KYC / Identity | kyc, player |
| OpenSanctions | Compliance / AML | Sports/Odds data (read-only) |
| Optimove | CRM / Marketing | Sports/Odds data (read-only) |
| PandaScore | Sports Data & Odds | Sports/Odds data (read-only) |
| Partnerize | Affiliate / Partners | Sports/Odds data (read-only) |
| Paysafe | Payments | player, transaction |
| Persona | KYC / Identity | Sports/Odds data (read-only) |
| Pinnacle | Sports Data & Odds | Sports/Odds data (read-only) |
| Scaleo | Affiliate / Partners | player, transaction |
| Shift4 | Payments | player, transaction |
| Shufti Pro | KYC / Identity | compliance, player, transaction |
| Sportradar | Sports Data & Odds | Sports/Odds data (read-only) |
| Sumsub | KYC / Identity | kyc, player |
| The Odds API | Sports Data & Odds | Sports/Odds data (read-only) |
| Trustly | Payments | Sports/Odds data (read-only) |
| Veriff | KYC / Identity | kyc |
| Xtremepush | Engagement / Messaging | player |