API Complience et Reporting
1) Destination
L'API Complaensa est une interface unique pour :- Collecte et validation d'événements (jeu/paiement/authentification) pour AML/Responsible Gaming (RG).
- Vérification (KYC/KYB, sanctions/RER, sources de fonds, âge).
- Établissement de rapports réglementaires (périodiques et ad hoc) sur les marchés.
- Tenir des registres d'audit et exécuter Legal Hold.
- Échange de données avec les fournisseurs (PSP, KYC-Bourse, listes de sanctions) et les portails gos.
Résultat : la charge de travail est réduite, la préparation des rapports est accélérée, la tracabilité et la conformité aux normes locales sont assurées.
2) Portée (scope)
Identification et vérification : statuts KYC/KYB, niveaux de vérification, documents.
AML/sanctions/PEP : dépistage, suivi des transactions, STR/SAR, alertes.
Jeu responsable (RG) : limites, auto-exclusion, « cool-off », échelles de risque comportementales.
Paiements et transactions : dépôts/retraits, chargeback, mécaniciens bonus.
Rapports : GGR/taxes, registres des joueurs/sessions, restrictions marketing, incidents de sécurité.
Audit et stockage : Logs immuables (WORM), Legal Hold, DSAR/RTBF.
3) Consommateurs et producteurs de données
Consommateurs : Régulateurs, Conformité interne/Risque, BI/DWH, SecOps, Finance.
Fabricants : fronts/backends iGaming, PSP/Aquaring, fournisseurs KYC, antifrod, CRM, réseaux d'affiliation.
4) Référence architecturale
1. Edge/API-шлюз (mTLS, OAuth2/OIDC, rate-limit, WAF).
2. Service de conformité (règles commerciales, orchestration des fournisseurs, normalisation).
3. Le bus des événements (Kafka/Redpanda) est un fan-out du SIEM/DWH/archives.
- En ligne (PostgreSQL/ClickHouse) pour les requêtes/agrégations rapides.
- Archive (Object Storage + WORM) pour les artefacts et rapports immuables.
- 5. Audit et observabilité : OpenTelemetry (trace_id), indexation des logs, dashboards.
- 6. Connecteurs des fournisseurs : KYC, sanctions, modules RG, portails gos avec signature électronique.
5) Endpoints de base (v1)
5. 1 KYC/KYB et sanctions
« POST/v1/kyc/check » est une demande de vérification KYC (idempotent).
« GET/v1/kyc/{ user _ id }/status » est le niveau et la date d'expiration actuels.
« POST/v1/sanctions/screen » - Dépistage des sanctions/RER.
'GET/v1/sanctions/{ user _ id }/hits 'est une correspondance/escalade.
5. 2 AML et suivi des transactions
'POST/v1/aml/transaction '- envoi de l'événement (deposit/withdraw/bet/payout).
`GET /v1/aml/alerts? state = open 'est un alert/case ouvert.
« POST/v1/aml/str » - formation et dépôt de STR/SAR (par marché).
5. 3 Responsible Gaming (RG)
« POST/v1/rg/self-exclusion » - installation/suppression de l'auto-exclusion.
« GET/v1/rg/limits/{ user _ id} » - limites (dépôt/taux/temps).
« POST/v1/rg/assess » - évaluation du risque de comportement.
5. 4 Rapports et registres
« POST/v1/reports/generate » - génération du rapport (type, période, juridiction).
« GET/v1/reports/{ report _ id} » - état, téléchargement de l'artefact (PDF/CSV/JSON), hash.
'GET/v1/registries/{ type} '- registres (joueurs, sessions, bonus, GGR) avec pagination.
5. 5 Audits et opérations juridiques
« GET/v1/audit/events » est un échantillon d'événements (filtre par champs ECS/OCSF).
'POST/v1/legal/hold' - Installation/retrait de Legal Hold par objet/dossier.
'POST/v1/privacy/dsar '- lancement DSAR, statuts, exportation de paquets.
6) Modèles de données (abrégés)
6. 1 Événement de transaction (JSON)
json
{
"idempotency_key": "trx-8b1a9953",
"timestamp": "2025-11-01T16:02:11Z",
"user": {"id":"U-12345","dob":"1999-04-21","country":"EE"},
"transaction": {
"id": "T-778899",
"type": "deposit",
"amount": {"value": 200. 00, "currency": "EUR"},
"method": "card",
"psp_ref": "PSP-222-ABC"
},
"context": {
"ip": "198. 51. 100. 10",
"device_id": "d-9af0",
"session_id": "s-2233",
"trace_id": "f4c2..."
},
"labels": {"market": "EE", "affiliate": "A-77"}
}
6. 2 Résultats KYC
json
{
"user_id": "U-12345",
"level": "L2",
"status": "verified",
"expires_at": "2026-04-21",
"checks": [
{"type":"document","result":"pass"},
{"type":"liveness","result":"pass"},
{"type":"pep_sanctions","result":"no_hit"}
],
"provider": {"name":"KYCX","reference":"KYCX-4455"}
}
6. 3 Description du rapport
json
{
"report_id": "RPT-EE-GGR-2025Q3",
"type": "ggr_quarterly",
"jurisdiction": "EE",
"period": {"from":"2025-07-01","to":"2025-09-30"},
"status": "ready",
"artifact": {
"format": "CSV",
"size_bytes": 183442,
"sha256": "c9b1f...e21",
"download_url": "urn:reports:RPT-EE-GGR-2025Q3"
},
"notes": "Rounded to cents; FX=ECB daily"
}
7) Sécurité et accès
Authentification : OAuth2/OIDC (client credentials, JWT), option mTLS.
Autorisation : RBAC/ABAC ; scopes individuels par domaine ('aml : write', 'kyc : read', 'reports : generate').
Cryptage : TLS 1. 2+ in-transit; at-rest via KMS/CMK ; JWE pour les champs sensibles.
Minimisation des PII : stockage minimum ; Masquer le PAN/IBAN ; alias 'user. pseudo_id`.
Journal d'accès : audit de toutes les lectures d'endpoints « sensibles », alertes aux décharges massives.
Legal Hold and Retensh : Stockage WORM pour les rapports et STR ; politiques de stockage 5-7 ans (par marché).
8) Versioning et compatibilité
URI-versioning : '/v1 ', '/v2' ; changements mineurs - à travers des champs extensibles.
Politique de déverrouillage : ≥ 6 à 12 mois de soutien ; les titres « Sunset », « Deprection ».
Schémas : JSON Schema + OpenAPI ; les contrats sont validés par CI.
Migrations : adaptateurs/drapeaux de fonction, compatibilité bilatérale pendant la période de transition.
9) Fiabilité : Idempotence et « exactement-une fois »
Idempotency-Key dans « POST » (stocker les clés ≥ 24-72 h).
Livraison par bus + déduplication à la réception (event id/hash).
Outbox/Inbox-pattern pour les intégrations, les retraits avec pause exponentielle et jitter.
Ordre : clés de lot 'user _ id '/' account _ id' pour le déterminisme.
10) Pagination, filtres, recherche
Pagination : cursor-based ('page _ token', 'limit <= 1000').
Filtres : par juridiction, période, statut, fournisseur, évaluation des risques.
Recherche en texte intégral : pour l'audit/registres (sous-ensemble limité de champs).
Exportation : asynchrone, limite de taille, préparation de l'archive avec la signature hash.
11) Restrictions et quotas
Taux-limites par client/route (par exemple 100 rps burst, 1000 rpm sustained).
Budget-limites pour les rapports lourds (crédits/24 heures).
Protection N + 1 : Batchi et endpoints agrégés.
Limitation de la profondeur des échantillons historiques (par exemple, ≤ 24 mois en ligne, ci-après archive).
12) Dashboards et SLO
Ingest lag p95 <30 secondes ; Succès KYC> 99 %; STR-SLA - envoi ≤ 24 heures
Disponibilité de l'API ≥ 99. 9%; Latitude p95 <300 ms à lire ; <800 ms pour l'enregistrement.
Stockage des rapports Cost/GB ; Ack-rate des notifications aux régulateurs.
Widgets : Carte thermique des alerts AML, entonnoir KYC, publication des rapports par pays, file STR.
13) Juridictions : Mapping et modèles
Modèles de rapports de marché (champs, formats, fréquence) : 'EE', 'LT', 'LV', 'RO', 'MT', 'UK', etc.
Mapping de termes (GGR/NGR, bonus, limites de dépôt, contrôle d'âge).
Localisation du temps/calendrier ; Fixation de la source FX ; marque d'influence DST.
Répertoire des schémas : 'reports/{ jurisdiction }/{ type }/{ version} .schema. json`.
14) Traitement des erreurs (format unique)
json
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests",
"request_id": "req-7f91",
"hint": "Reduce RPS or request higher quota",
"retry_after": 30
}
}
Частые коды: `INVALID_SCHEMA`, `NOT_AUTHORIZED`, `LEGAL_HOLD_ACTIVE`, `PROVIDER_TIMEOUT`, `REPORT_NOT_READY`.
15) Essais et certification
Tests contractuels (OpenAPI → génération de clients de test).
Jeux de fictions par pays, fichiers golden pour les rapports.
Listes noires des champs PII dans les logs ; analyse statique des fuites de secrets.
Exercice de RD régulier pour la restauration des archives des rapports.
16) Exemples
16. 1 Génération de rapport
Demande
http
POST /v1/reports/generate
Content-Type: application/json
Authorization: Bearer <token>
json
{
"type": "ggr_monthly",
"jurisdiction": "EE",
"period": {"from":"2025-10-01","to":"2025-10-31"},
"format": "CSV",
"notify": ["compliance@company"],
"parameters": {"include_bonus_breakdown": true}
}
Réponse
json
{"report_id":"RPT-EE-GGR-2025-10","status":"processing","eta_seconds":120}
16. 2 envois STR/SAR
json
{
"case_id": "AML-2025-0091",
"user_id": "U-12345",
"reason": "Structuring deposits under threshold",
"evidence": ["txn:T-778899","txn:T-778900"],
"attachments": ["urn:doc:kyc:U-12345:v3"],
"jurisdiction": "EE"
}
16. 3 L'auto-exclusion
json
{
"user_id":"U-12345",
"type":"national_register",
"action":"enable",
"effective_from":"2025-11-01",
"effective_to":"2026-11-01"
}
17) Audit intégré et immuabilité
Autologie : 'request _ id', 'trace _ id', appelant le client, scope.
Signature des paquets de rapports (SHA-256) + registre des hachages ; l'ancrage périodique.
Archives WORM pour les décharges réglementaires et STR.
Historique des configurations des règles et des modèles (journal des modifications de stratégie ↔ link).
18) Processus et RACI (en résumé)
R : Équipe Compliance Platform (développement/opérations).
R : Chef de la conformité/CSO (politiques, budgets, priorités).
C : Juridique/DPO, Finances, Architecture, Données.
I : Produit, Support, Partenaires (PSP/KYC).
19) Feuille de route pour la mise en œuvre
MVP (4-6 semaines) :1. '/v1/kyc/check ', '/v1/aml/transaction', '/v1/reports/generate '(2-3 modèles clés).
2. OAuth2 + taux-limite + idempotence de base.
3. Archive des rapports dans Object Storage avec signature hash.
4. Dashboard SLO et file d'attente de tâches.
Phase 2 (6-12 semaines) :- Modèles de compétence (5-8 marchés), STR/SAR, endpoints RG, DSAR.
- Fournisseur d'agrégation (CUS/sanctions), retrai, dedupe.
- Politiques Legal Hold, WORM, rôles étendus.
- Rule-as-Code pour les rapports/règles AML, simulateur de changement.
- Multi-tenance (B2B2C, marques/peaux), quotas et facturation.
- Bac à sable et certification pour intégrateurs externes.
20) Erreurs types et comment les éviter
La diversité des schémas sur les marchés : catalogue centralisé, circuits auto-lint.
Pas d'idempotence : entrez 'idempotency _ key' et la fenêtre de déduplication.
Secrets dans les logs : filtres sur ingest, analyse statique.
Longs rapports en ligne : faites asynchrone avec le statut pulling et les notifications.
Faible RBAC : espacez 'read _ reports', 'generate _ reports', 'admin'.
Monnaie/Timzone : fixez 'fx _ source', 'timezone', stockez UTC.
21) Glossaire (bref)
KYC/KYB - identification physique/jura. des personnes.
AML/STR/SAR - lutte contre le blanchiment/activité suspecte/déclaration.
RG est un jeu responsable.
GGR/NGR est le produit brut/net des jeux.
WORM est un stockage immuable (write-once).
Rule-as-Code - règles en tant que code avec tests/versioning.
22) Résultat
L'API Complience and Reporting est une couche stable, sûre et standardisée entre les opérations iGaming et les exigences réglementaires. Le respect des principes de cet article (schémas rigoureux, intégration sûre, idempotence, audit immuable, modèles de juridiction et SLO) garantit la prévisibilité, le passage rapide des contrôles et la réduction des risques sur les marchés clés.