Adapter contract
PlatformAdapter rozhraní je seam mezi casinocrm.io a vaší casino platformou. Každá casino platforma má svůj vlastní bonus engine, KYC flow a webhook scheme; nesnažíme se být API každé platformy — poskytujeme stabilní kontrakt, který platformy implementují jednou.
Pro úplnou specifikaci viz Adapter integration. Tato stránka je konceptuální přehled.
Rozhraní
interface PlatformAdapter {
readonly slug: string; // 'acme-prod', 'zero', ...
readonly displayName: string;
readonly capabilities: AdapterCapabilities; // deklaruje, co podporuje
bonus?: BonusOps; // grantBonus, cancelBonus, getBonusStatus
kyc?: KYCOps; // initiateKYC, queryKYCStatus, updateKYCStatus
rg?: ResponsibleGamingOps; // setSelfExclusion, setLimit, atd.
wallet?: WalletOps; // getBalance, snapshot streams
}
Každý ops bag je volitelný. Adapter, který nepodporuje KYC, prostě nechá kyc undefined — registry nesměruje žádné KYC ops na něj.
Capabilities
Každý adapter deklaruje statické capabilities:
interface AdapterCapabilities {
verticals: readonly Vertical[]; // casino, sportsbook, ...
bonus: { issue, cancel, query_status } // booleans
kyc: { initiate, query, update, webhooks }
rg_features: readonly RGFeature[];
wallet: { balance_pull, balance_push }
signature_scheme: "hmac_sha256" | "hmac_sha512" | "rsa";
}
Effective capabilities = tenant.config ∩ adapter.capabilities. Pokud tenant chce deposit_limit_daily, ale adapter nepodporuje, feature spadne do CRM-only enforcement (capability_mock pattern) — limit se trackuje v CRM, ale platforma se nedozví.
Bidirectional flow
Každá doména (bonus / KYC / RG) následuje stejný pattern:
CRM → Adapter (outbound):
- Sync HTTP volání z bonus engine / admin akce.
- Vrátí
platform_*_id, který persistujeme pro korelaci.
Adapter → CRM (inbound):
- Webhook dorazí na
POST /v1/adapters/:slug/webhooks/{bonus,kyc}-events. - HMAC-SHA256 přes
<timestamp>.<body>(Stripe-kompatibilní). - Idempotency dedupe přes
webhook_events_processed (adapter_slug, event_id). - State sync: lifecycle události aktualizují doménový state pod RLS kontextem.
Adapter Zero — referenční
Adapter Zero je in-process syntetický adapter, který shipujeme pro testing + demos. Deklaruje maximum capabilities (každý vertical, každý KYC flow, každá RG feature), takže testy procházejí celý povrch. Real-platform adaptery deklarují užší capabilities — co platforma skutečně podporuje.
Adapter Zero hraje obě strany: když CRM volá adapter.bonus.grantBonus(), AdapterZero zařadí synthetic webhook zpět přes receiver pomocí fastify.inject(). Stejné code paths jako real HTTP roundtrip — HMAC verifikace, idempotency, state sync — bez sítě.
Přidání nového adapteru
Tři kroky:
- Vytvořte
services/adapters/<your-platform>/s mapováním kanonických událostí (události vaší platformy → kanonické události casinocrm.io). - Implementujte rozhraní
PlatformAdaptervapps/api/src/lib/bonus-adapter-<your-platform>.ts(nebo svou vlastní službu). - Zaregistrujte adapter podle slug v
bonus-adapter-registry.ts+ přidejte HMAC secret resolver vbonus-webhooks.ts.
To je vše. Kompletní adapter má ~200-400 řádků TypeScriptu.