GH GambleHub

Чеклист інтеграції API

0) Швидкий огляд (хто що робить)

  • Власник інтеграції призначений
  • Контакти on-call (24 × 7/раб. годинник) прописані
  • Погоджена SLO/SLA та вікно підтримки релізів
  • Статус-сторінка і канал інцидентів (email/Slack/Webhook)

1) Доступи, оточення, версії

  • Доступ до sandbox/staging/production отримано
  • Версія API підтверджена: '/v1 '/заголовок'X-API-Version '
  • Allowlist IP і мережеві правила налаштовані
  • Годинник і TZ: всі часи в UTC, NTP синхронізація
  • Перевірена сумісність SDK/клієнтів по SemVer і матриці версій

2) Автентифікація та токени

  • Механізм узгоджений: OAuth2 Client Credentials / Auth Code + PKCE / API Key / mTLS
  • Термін життя Access Token і ротація Refresh Token налаштовані
  • Для API Key: секрет показується один раз, зберігається в менеджері секретів
  • JWKS/JTI/' kid'перевіряються, включений clock skew ± 5 хв
  • 'Authorization'заголовки не логуються (редакція)
Перевірочний виклик:
bash curl -sS -H "Authorization: Bearer $TOKEN" https://api. example. com/v1/ping

3) Безпека і приватність

  • TLS 1. 2 +/HSTS, опціонально mTLS
  • PII-мінімізація: відправляємо тільки потрібне, маски в логах
  • Політика зберігання та видалення (GDPR/DSAR) задокументована
  • Secret rotation: активний/наступний ключ, план ролловера
  • Анти-аб'юз: капча/швидкість створення ключів/обмеження реєстрацій

4) Ліміти, квоти і бекофф

  • Оголошені'X-RateLimit- '/' X-Quota-'заголовки
  • Клієнт поважає 429 і'Retry-After '
  • Ретраї тільки для 5xx/408/429, експоненціальний backoff + jitter
  • Межа спроб/часу заданий (наприклад, ≤ 5 спроб, ≤ 60с сумарно)

5) Ідемпотентність і конфлікти

  • Всі write-операції відправляються з'Idempotency-Key'( TTL ≥ 24-72 год)
  • Конфлікт дублікатів → 409 IDEMP_REPLAY обробляється
  • ETag/' If-Match'для конкурентних оновлень включений (за наявності)
Приклад:
bash curl -X POST /v1/payments \
-H "Idempotency-Key: pay-<uuid>" \
-d '{"amount":"12. 34","currency":"EUR"}'

6) Пагінація та інкрементальні дельти

  • Використовується cursor/keyset пагінація ('next _ cursor','has _ more')
  • Стабільне сортування'( updated_at, id)'документовано
  • Інкрементальні вивантаження: watermark или change token
  • Перекриваючі вікна (overlap 1-2 хв) і дедуп по'( id, version/seq) '

7) Формат помилок і діагностика

  • Єдиний формат'application/problem + json'( RFC 7807)
  • Підтримка полів: `error_code`, `trace_id`, `retriable`, `detail`
  • Карта помилок і дії клієнта описані (runbook)
Шаблон:
json
{
"type":"https://docs. example. com/errors/validation_failed",
"title":"Validation failed",
"status":422,
"error_code":"VAL_001",
"trace_id":"a1b2c3",
"retriable":false
}

8) Вебхукі: квітування та повтори

  • Підтвердження успіху - будь-який 2xx; швидкий ACK після enqueue
  • Підпис HMAC ('X-Signature: sha256=...`), `X-Webhook-Id`, `X-Retry`
  • Політика ретраїв: backoff + jitter, до 24-72 годин
  • DLQ + Replay: доступні та перевірені
  • Дедуп-сховище у приймача, TTL ≥ вікна ретраїв

9) Спостережуваність і трасування

  • Включені OpenTelemetry хуки в клієнті/SDK
  • Кореляція'trace _ id '/' X-Request-ID'по всьому ланцюжку
  • Дашборди: `requests_total`, `errors_total{status}`, `latency_p95`, `retry_count`, `429_rate`
  • Alarms: сплеск 5xx/429, зростання p95, падіння success rate, лаг вебхуків
PromQL (приклад):
promql rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m])

10) Продуктивність і стійкість

  • Пули з'єднань, keep-alive, HTTP/2/3 де можливо
  • Паралелізм обмежений (backpressure), черга клієнта не «роздувається»
  • Політики circuit-breaker/timeout/fallback налаштовані
  • Тести навантаження: burst 10 ×, довгі з'єднання, холодний старт

11) Дані, валюти, час

  • Формати: ISO-8601 UTC, гроші - десяткові рядки/minor units, локалі не залежать від оточення
  • Кодування/мови узгоджені (наприклад,'Accept-Language'для повідомлень, але'error _ code'- машинний)
  • Політика округлення/комісій документована

12) Звірки та звітність (reconciliation)

  • Щоденні/годинні звірки з контрольними сумами
  • API/вивантаження для звірок протестовані (CSV/JSON, маніфести/хеші)
  • Розбіжності - в тікети з посиланнями на'trace _ id '

13) Комплаєнс і правові аспекти

  • Умови використання API прийняті (fair use/export control)
  • PII/тримачі даних - ролі та зони зберігання визначені
  • Legal Hold/аудит-лог дій включені при інцидентах

14) Документація та портал розробників

  • OpenAPI/AsyncAPI актуальні, приклади «копіювати-вставити» є
  • SDK (TS/Py/Java/Go/.NET) - версії узгоджені, Cookbook доступний
  • Try-it playground працює, пісочні ключі активні
  • Changelog/депрекації/roadmap видно в порталі

15) Тестування: функціональні, негативні, хаос

Функціональні

  • CRUD/ключові сценарії пройдені (happy path)
  • Пагінація/курсор/інкрементальні дельти

Негативні

  • 401/403/404/409/422/429/5xx і обробка'Retry-After '
  • Невірний підпис вебхука, прострочені токени, великі тіла

Хаос

  • Drop 10-30% подій, reorder, затримки 1-10 хв
  • Відключення залежностей (PSP/KYC) → коректний fallback/помилки

16) Приймання та запуск (go-live)

  • Фінальний PRR (Production Readiness Review) пройдено
  • Канарське включення: 10% → 25% → 50% → 100%
  • Авто-відкат по SLO сигналам (помилки/латентність/429)
  • Контактна матриця інцидентів і шлях ескалації опубліковані
  • Беклоґ CAPA після пілота сформований

17) Експлуатація та підтримка

  • Runbook/плейбуки: «5xx spike», «429 storm», «webhook backlog», «timeout»
  • Регулярні звіти по SLO/Error Budget
  • Ротація секретів і ключів за розкладом
  • План депрекацій/міграцій версій узгоджений (дата sunset)

18) Шаблони артефактів

Шаблон env-конфіга

yaml api:
base_url: https://api. example. com/v1 timeout_ms: 10000 retries: { max: 5, strategy: expo-jitter }
auth:
kind: oauth2 token_url: https://auth. example. com/oauth2/token scopes: [wallet:read, wallet:write]
webhooks:
secret_ref: secret/webhook-hmac parallelism: 10 max_body_kb: 256

Політика ретраїв (псевдо)

json
{"initial":1,"max":60,"factor":2. 0,"jitter":0. 2,"retriable":["5xx","408","429"]}

19) Підсумковий чек-лист «на підпис»

  • Оточення/версії/ключі/allowlist готові
  • Auth/JWT/keys/mTLS налаштовані і протестовані
  • Ліміти/квоти/ретраї/ідемпотентність реалізовані
  • Пагінація/курсор/дельти працюють на даних
  • Вебхукі: підписи, повтори, DLQ/Replay перевірені
  • Помилки'problem + json','trace _ id'прилипає в усі логи
  • Дашборди/алерти зібрані, OTel включений
  • Навантажувальні/негативні/хаос-тести пройдені
  • Звірки і звіти сходяться, runbooks оформлені
  • PRR/канарка/rollback-план готові, контакти on-call вказані

Підсумок

Цей чекліст закриває технічні, операційні та комплаєнс-аспекти інтеграції API. Пройдіть пункти зверху вниз, автоматизуйте перевірку лімітів, ідемпотентності і вебхуків, увімкніть спостережуваність і план відкату - і ваш запуск пройде передбачувано, без «сюрпризів» в продакшні.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Telegram
@Gamble_GC
Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.