GH GambleHub

Операции через API-интерфейс

(Раздел: Операции и Управление)

1) Назначение и принципы

API — это «операционный слой» экосистемы: все, что не автоматизировано через контракт, превращается в ручную работу и риски.

Принципы:
  • Contract-first: сначала спецификация (OpenAPI/JSON Schema/AsyncAPI), потом реализация.
  • Secure-by-default: минимальные скоупы, короткие TTL, мьютуал-TLS/подписи.
  • Observable: end-to-end трассировка и метрики SLA.
  • Idempotent: повтор безопасен.
  • Backwards-compatible: эволюция без «ломающих» изменений.
  • Auditable: криптографически подтвержденные факты (квитанции).

2) Контракт и модели (референс)

OpenAPI для sync-запросов; AsyncAPI для событий/вебхуков.
Обязательные поля в каждом ресурсе: `id`, `version`, `created_at`, `updated_at`, `tenant`, `region`, `trace_id`.

Пример фрагмента контракта

yaml paths:
/payments/payouts:
post:
operationId: createPayout requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutRequest'
responses:
"202": { $ref: '#/components/responses/AcceptedWithReceipt' }
headers:
Idempotency-Key:
schema: { type: string }
required: true components:
responses:
AcceptedWithReceipt:
description: Accepted, processing asynchronously headers:
Receipt-Hash: { schema: { type: string } }

3) Аутентификация, авторизация, скоупы

OAuth2/OIDC для пользователей/партнеров; client-credentials/JWT для S2S.
Скоупы/ресурсные роли: `payments.write`, `catalog.read`, `audit.export`.
ReBAC: доступ «по владению» (тенант/аккаунт/саб-аккаунт).
JIT-секреты: краткоживущие токены, привязка к устройству/подсети/региону.
Device posture & mTLS для критичных операций (выплаты, ключи).

4) Идемпотентность и «ровно-однажды»

Idempotency-Key (заголовок) + дедуп по `(key, account, route)` на TTL-окне.
Outbox/CDC для публикации событий — гарантированная доставка.
Exactly-once-effects: побочные эффекты фиксируются через транзакционный журнал; повтор приводит к той же «квитанции» (`receipt_hash`).
Retry-политики: экспоненциальный бэк-офф, джиттер, максимальные окна.

5) Лимиты, квоты, приоритезация

Rate limits: per-key/tenant/route/region; «мягкие» (429) и «жесткие» (отсечка).
Квоты/бюджеты: месячные/суточные капы, вебхуки `QuotaCapReached`.
Fair-use: приоритет тенантов по сервисному уровню (Gold/Silver/Bronze).
Burst-буферы: короткие всплески без деградации соседей.

6) Пагинация, фильтры, выборки

Cursor-based (stable ordering по `created_at,id`), `page_size` ≤ 1000.
Time-sliced выборки (`from`, `to`, `watermark`) для журналов/транзакций.
Filtering DSL: whitelisted поля, `?status=...&tenant=...&region=...`.
Consistency hints: `snapshot_at`/`as_of` для репортинговых API.

7) Версионирование и совместимость

SemVer: `v1`, `v1.1` (расширения), `v2` — только по новым путям/неймспейсам.
Правила эволюции: только добавления полей/значений, «deprecate → remove» через окно.
Compatibility tests: «контракты-как-тесты» (consumer-driven).

8) События, вебхуки и квитанции

AsyncAPI описывает темы/payload/подписи.
Подпись: HMAC/EdDSA, заголовки `X-Signature`, `X-Nonce`, `X-Timestamp` (узкое окно).
Квитанции (receipts): `receipt_hash` и DSSE-подпись на критичных событиях (платежи, изменения RTP/лимитов, прайс-листы).
Ретраи и дедуп: идемпотентность по `idempotency_key`/`event_id`.
DLQ/карантин: невалидные/повторные сообщения с причинами.

9) Наблюдаемость и качество

Traces: обязательные `trace_id/span_id` сквозь шлюз/бизнес-события/вебхуки.
Metrics: доступность, p50/p95/p99, error-rate, retry-rate, cost per 1k.
Logs: структурированные, без секретов/PII; метки `tenant/region/version`.
SLO/алерты: SLO-ориентированные условия и авто-руны (pause/re-route/rollback).

10) Ошибки и семантика статусов

2xx — успех (202 для асинхронных операций).
4xx — вина клиента (422 — валидация, 409 — конфликт/идемпотентность, 429 — лимиты).
5xx — временные проблемы.
Тело ошибки: `code`, `message`, `trace_id`, `hint`, `retry_after?`.
UX для партнеров: таблица «что делать» на каждую ошибку.

11) Политики-как-код (OPA/ABAC)

Централизованная авторизация: «кто/что/где/когда/зачем».
Политики в Git, код-ревью, CI-тесты (pre-flight: «разрешит ли политика?»).
SoD-чек: «создать выплату» ≠ «утвердить».

12) Безопасность, приватность, комплаенс

PII-минимизация: токенизация/маски, доступ к первичке только через одобренные джобы.
Секреты: Vault/KMS, короткие TTL, ротации; запрет shared-секретов.
Шифрование: mTLS/TLS 1.3, AES-GCM at-rest, HSTS/PKP где уместно.
Jurisdiction-aware: локализация данных/ключей per region.
Журналы аудита: WORM, Merkle-срезы, DSSE-подписи.

13) Эксплуатация: SLI/SLO и дашборды

SLI (пример):
  • Доступность per-route/region.
  • Латентность p95 (read/write).
  • Успешность вебхуков (квитанции), лаг доставки.
  • Error-rate/Retry-rate.
  • Cost per 1k запросов и egress.

SLO (пример): 99.95% доступности; p95 ≤ 120/250 мс; вебхуки ≥ 99.5%/5-мин; P1 MTTR ≤ 60 мин.

14) Управление изменениями (релизы/откаты)

Blue-Green/Canary для шлюзов и критичных маршрутов.
Фичефлаги для поведения без релиза.
Expand→Migrate→Contract для схем и payload.
Руны: Rollback Release, Disable Flag, Re-route, Flush Cache.
Артефакты: подписанные образы/манифесты, реестр версий.

15) SDK, клиенты, «песочницы»

Официальные SDK (TS/Java/Python/Go) с одинаковой семантикой ошибок и ретраев.
Sandbox-окружения с тестовыми ключами/сертификатами и симуляторами PSP/KYC/провайдеров контента.
Contract-tests включены в SDK CI, nightly-совместимость.

16) Модель данных (упрощенно)

`api_key` `{id, tenant, scopes[], ttl, created_by}`

`rate_plan` `{tenant, quotas{route→cap}, burst, priority}`

`request_log` `{trace_id, route, actor, idempotency_key?, status, latency_ms, region, cost_unit}`

`webhook_receipt` `{event_id, endpoint, status, attempts, receipt_hash, signature}`

`policy` `{version, rules, signer, dsse}`

17) RACI

ОбластьResponsibleAccountableConsultedInformed
Контракт/версииPlatform/APICTOProduct, ClientsPartners
Авторизация/политикиSecurity/IAMCISOLegal, OpsAudit
Наблюдаемость/SLOSREHead of EngData, FinOpsAll
Вебхуки/квитанцииIntegrationCOOPartners, FinanceCompliance
SDK/песочницыDevExCTOSRE, ProductPartners

18) Метрики качества

Contract Drift: 0 «ломающих» изменений без депрекейта.
Idempotency Error Rate: ≤ 0.01%.
Webhook Success: ≥ 99.5%, лаг p95 ≤ 60 с.
Auth Fail vs Abuse: доля злонамеренных блоков, шум ≤ целевого уровня.
Cost/1k: контроль по маршрутам и регионам (бюджеты/кап-алерты).
SDK Adoption: доля трафика через официальные SDK.

19) Плейбуки инцидентов

Spike 429/лимиты: поднять кап для Gold, троттлинг «шумных» ключей, связь с партнером.
WebhookLag: увеличить воркеры/батчи, приоритизировать очереди, временно выключить необязательные вебхуки.
PriceMismatch (catalog/FX/Tax): сверка версий, форс-инвалидация кэша, откат артефакта, компенсации.
PSP Outage: переключение маршрута, карантин «серых» транзакций, реплей.
Compromise API-key: немедленный отзыв, ротация, аудит последних 30 дней.

20) Специфика iGaming/финтех

RTP/Limits API: только агрегаты и версии профилей; изменения — с квитанциями.
Платежи/выплаты: 202 + вебхуки с подписями; идемпотентность на ключ заказа.
Аффилиаты: дедуп конверсий, эскроу для споров, подписанные отчеты.
Ответственная игра: экспонируйте «guardrails API» для лимитов и RG-событий.

21) Чек-лист внедрения

  • Описан контракт (OpenAPI/AsyncAPI), CI-валидация и consumer-tests.
  • Настроены OAuth2/OIDC, скоупы, JIT-секреты и mTLS для критичных маршрутов.
  • Введены идемпотентность, ретраи, DLQ и карантин.
  • Лимиты/квоты/приоритеты и алерты по капам.
  • Пагинация курсорами, консистентные выборки `as_of`.
  • Версионирование и Deprecation-политика.
  • Вебхуки с подписями/квитанциями, реплей и дедуп.
  • Трассировка/метрики/логи, SLO и руны.
  • WORM-журналы, DSSE-подписи, Merkle-срезы.
  • SDK, sandbox, симуляторы, примеры кода и «how-to».

22) FAQ

Почему 202 для длинных операций?
Чтобы не держать соединение и обеспечить надежный ретрай/квитанцию через вебхук.

Нужны ли оба: OpenAPI и AsyncAPI?
Да: sync для команд/запросов, async для событий/согласования состояний.

Как избежать ломающих изменений?
Правило «только добавления», deprecate → observe → remove, контракт-тесты клиентов.

Где хранить квитанции?
В WORM-зоне с подписями; `receipt_hash` возвращается клиенту и сверяется по запросу.

Резюме: Операции через API — это дисциплина контракта и эксплуатации: строгая модель доступа и идемпотентность, лимиты и версии, наблюдаемость и SLO, подписи и квитанции. Добавьте песочницы и SDK — и партнеры будут интегрироваться быстро, безопасно и предсказуемо, а бизнес — масштабироваться без потерь качества и комплаенса.

Contact

Свяжитесь с нами

Обращайтесь по любым вопросам или за поддержкой.Мы всегда готовы помочь!

Telegram
@Gamble_GC
Начать интеграцию

Email — обязателен. Telegram или WhatsApp — по желанию.

Ваше имя необязательно
Email необязательно
Тема необязательно
Сообщение необязательно
Telegram необязательно
@
Если укажете Telegram — мы ответим и там, в дополнение к Email.
WhatsApp необязательно
Формат: +код страны и номер (например, +380XXXXXXXXX).

Нажимая кнопку, вы соглашаетесь на обработку данных.