GH GambleHub

Технология және инфрақұрылым → API нұсқасы

API нұсқасы

1) Бұл не үшін қажет

Нұсқалау - бұл сервистер мен клиенттер арасындағы келісімшарттарды ақаусыз өзгертудің басқарылатын тәсілі. Интеграциялары көп өнімдерде (төлемдер, KYC/AML, ойындар, биллинг, есептілік) «ескі» және «жаңа» клиенттер бір мезгілде өмір сүреді. Дұрыс нұсқа саясаты:
  • релиздер кезінде оқыс оқиғалар қаупін төмендетеді,
  • жақсартулар мен қауіпсіздікті жоспарлы енгізуге мүмкіндік береді,
  • бизнеске серіктестердің көші-қонының болжамды мерзімдерін береді.

2) Өзгерістерді жіктеу

PATCH (бұзбайтын): келісімшартты өзгертусіз түзетулер (міндетті емес өрістерді қосу, валидация фикстері).
MINOR (кеңейтуші): back-compatible кеңейтулер (жаңа эндпоинттер, default бар өрістер).
MAJOR (бұзатын): құрылымын, семантикасын өзгерту немесе өрістерді/эндпоинттерді жою.

SemVer 'MAJOR ұсынылады. MINOR. Артефактілер үшін PATCH '(SDK/схемалар), бұл ретте API «сыртқы» нөмірі жеңілдетілуі мүмкін (v1, v2).

3) REST нұсқалау модельдері

1. URI:

`GET /v1/payments/{id}`

Артықшылықтары: мөлдір, кэштеу, оңай бағыттау. Кемшіліктері: құжаттарды қайталау, жұқа эволюциялау қиынырақ.

2. Тақырыптарда (content negotiation):

`Accept: application/vnd. company. payments. v2+json`

Артықшылықтары: икемділік, URL-де «қоқыстың» болмауы, медиатиптің ыңғайлы эволюциясы. Кемшіліктері: браузерде сөйлеу қиынырақ, тәртіпті клиент керек.

3. Кастомдық тақырыпта:

`X-API-Version: 2` (или `Api-Version: 2025-09-01`)

Артықшылықтары: жай ғана шлюзде. Кемшіліктері: стандарттылық жоқ, кэшпен абайлаңыз.

4. Нұсқа-күні (date-based):

Финтех/есептілік үшін жақсы: өзгерістердің болжамды «қималары» (мысалы, тоқсан сайын).

5. Ресурсты/модельді нұсқалау:

Бір эндпоинт түрлі көріністерді қайтара алады: 'fields =...' немесе 'profile = litefull`. Бұл толықтыру нұсқаны алмастырмайды.

Ұсыным: сыртқы интеграциялар үшін - 'URI vN' + Deprecation/Sunset тақырыптары; ішкі үшін - егер шлюз және платформа мұны қолдаса, 'Accept' немесе нұсқа тақырыбына болады.

4) GraphQL

Артықшылық - жаһандық нұсқаларсыз. Өрістерді/түрлерді қосу және деприкация арқылы эволюция ('@deprecated (reason: «»...)').
Бұзатын өзгерістер - көші-қон гайдымен «үлкен» терезелерде ғана (versioned schema namespace).
«n + 1» дегенді және бар өрістердің meaning өзгермеуін қадағалаңыз.

5) gRPC / Protobuf

Өріс нөмірлері өзгермейді. Қашықтағы өрістерді 'reserved' деп белгілеңіз.
Қауіпсіз default бар өрістерді optional ретінде қосыңыз.
Сыйысымдылықты автоматты түрде тексеру үшін buf breaking/lint пайдаланыңыз.
Пакеттерді/модульдерді нұсқалаңыз: 'package payments. v1;` → `payments. v2`.

6) Оқиғалық API (EDA)

Оқиғаның схемасы - дәл сондай келісімшарт. Оны Schema Registry (Euro/JSON-Schema/Protobuf) бағдарламасында сақтаңыз.
Топиктер мен нұсқалар: 'payments. v1. authorized`, `payments. v2. authorized`.
Бұзатын өзгерістер - оқиғаның жаңа түрі немесе жаңа топик.
Эволюция кепілдіктері: LTS кезеңі ішінде консумерлер үшін backward-compatible.

7) Деприкация және EOL саясаты

Ашық ережелерді енгізіңіз:
  • Deprecation: changelog және ерекшеліктегі белгілер (OpenAPI/GraphQL SDL), тақырып
  • 'Deprecation: true' және мүмкін болған кезде 'Sunset: Tue, 31 Mar 2026 00:00:00 GMT'.
  • Коммуникациялар: email/серіктес порталы, webhooks-хабарламалар, release notes.
  • Мерзімі: MINOR - 3-6 ай қолдау, MAJOR - 9-18 ай (сындылығына байланысты).
  • Уақытша терезелер: «API нұсқалау саясаты».

8) Маршруттау және релиздер

API Gateway (Kong/Apigee/Nginx/Envoy): '/v1/' префиксі бойынша ережелер, тақырып немесе медиатип бойынша.

Бағыт мысалы:

if ($http_accept ~ "vnd.company.payments.v2") { proxy_pass http://payments-v2; }

Canary/Blue-Green/Shadow: трафиктің 1-5% жаңа нұсқасын жылжытыңыз, келісім-шарт қателерінің өлшемдері мен логтерін салыстырыңыз.
Feature Flags: келісімшартты өзгертпей мінез-құлықты жасырыңыз.
Zero-downtime көші-қон: MAJOR кезінде деректер схемасын екі рет жазуды/оқуды (dual-write/read) қамтамасыз етіңіз.

9) Келісімшарт-тестілеу және үйлесімділікті бақылау

OpenAPI Diff (немесе swagger-diff) - MINOR/PATCH схемаларды бұзбайтынын тексеріңіз.
Spectral linting - стиль, міндетті метадеректер (нұсқа, Deprecation).
Consumer-Driven Contracts (Pact) - провайдер клиенттерді бұзбайтынына кепілдік береді.
buf breaking для protobuf.
CI MAJOR көтермей-ақ бұзатын өзгерістер кезінде құлдырауы тиіс.

10) Құжаттама және SDK

'/docs/api/v1/openapi. json`, `/docs/api/v2/…`.
SemVer және changelog бағдарламаларымен (npm/maven/pypi) нұсқалары бойынша SDK жасаңыз.
Ескірген әдістерді SDK аңдатпаларымен/Deprecated деп белгілеңіз.

11) Нұсқалар бойынша Observability

Метриканы бөлек жинаңыз:
  • RPS/жасырындылық/нұсқа қатесі ('api _ version' белгісі).
  • Эндпоинттерді пайдалану карталары: v1-де тағы кім бар?
  • Ескертулер: «> 10% 4xx due to contract mismatch», «ескі клиенттер> X% T-күнінен кейін».

12) Кэштеу және нұсқалары

Жолдағы нұсқа CDN кэшталуын жақсартады.

Тақырып/медиатип нұсқаларында - Vary-мен мұқият:
  • `Vary: Accept, X-API-Version`.
  • MINOR жауап семантикасын кэш кілттерін бұзатындай етіп өзгертпеңіз.

13) Қауіпсіздік

JWT нұсқасын шифрламаңыз немесе жапсырмаңыз - нұсқаны токен емес, сұрау анықтайды.
Ішкі жиналыс нөмірлерін ашпаңыз. Сыртқы хабарларда «v1/v2» дегенді пайдаланыңыз.
MAJOR кезінде валидацияны, лимиттерді, PII бүркемелеуді қайта қараңыз.

14) Көші-қон және авто-көмекшілер

«Migration Guide v1 → v2»: өріс сәйкестік кестесін, сұрау/жауап мысалдарын, edge-кейстерді жариялаңыз.
Клиенттерге ескірген өрістерді жарықтандыратын линтерлер (CLI) ұсынасыз.
Ірі серіктестер үшін - екі нұсқасы және тест-датасеті бар sandbox.

15) Қарсы үлгілер

«Мәңгілік v1»: пайдалану мерзімдері мен өлшемдерінің болмауы.
MINOR/PATCH жасырын бұзғыш өзгерістер.
«query string нұсқасы» ('? v = 2') - кэш пен оқылуды бұзады.
«Бір эндпоинт - тудың жүз мәні»: тестілеу/құжаттау қиын.

16) Енгізу чек-парағы

1. Сыртқы және ішкі клиенттер үшін үлгі (URI/Accept/Header) таңдалды.
2. Ерекшеліктер мен SDK үшін SemVer, CI-де автоматты breaking-check.
3. Deprecation/Sunset саясаты және коммуникация үлгілері.
4. Gateway-маршруттау + канареялар, нұсқалар бойынша дашбордтар.
5. CDC/Contract tests сыни интеграцияларға (төлемдер, KYC, есептілік).
6. Құжаттама/SDK/көші-қон гид басылыммен бір мезгілде жарияланды.
7. Күні мен жауапкершілігі бар EOL жоспары.

17) Мысалдар

17. 1 REST (URI + тақырыптар)

Сұрау:

GET /v2/withdrawals/12345
Accept: application/json
Idempotency-Key: 4a1c-…-9f
Жауап:
json
{
"id": "12345",
"status": "PENDING_REVIEW",
"amount": {"value": "100.00", "currency": "EUR"},
"limits": {"daily": "500.00"},
"created_at": "2025-10-02T10:00:00Z",
"links": [{"rel": "cancel", "href": "/v2/withdrawals/12345/cancel", "method": "POST"}]
}
Деприкация тақырыптары (v1):

Deprecation: true
Sunset: Tue, 31 Mar 2026 00:00:00 GMT
Link: </v2/docs>; rel="successor-version"

17. 2 Content Negotiation (медиатип)


GET /payments/987
Accept: application/vnd.company.payments.v2+json
Vary: Accept

17. 3 GraphQL (өріс деприкациясы)

graphql type Payment {
id: ID!
amount: Money!
status: PaymentStatus!
method: PaymentMethod!
legacyCode: String @deprecated(reason: "Use field `method`")
}

17. 4 gRPC (protobuf)

proto package payments.v2;

message Withdrawal {
string id = 1;
Money amount = 2;
string status = 3; // previously enum, now string with documented values reserved 4; // legacy field removed in v1 -> v2
}

17. 5 Оқиға моделі

Топиктер:
  • `wallet. v1. balance. updated`
  • `wallet. v2. balance. changed '(кеңейтілген сұлбасы бар жаңа оқиға)

Схемалар Registry-де сақталады, продюсер үйлесімділікті бұзатын схемамен оқиғаларды жарияламайды.

18) iGaming/финтех контексі (практика)

Төлемдер: 'status '/' decline _ reason' кеңейтілген жаңа PSP үшін v2 енгізу; есеп беру үшін mapping v1 → v2 шлюзінде.
KYC: MINOR 'pep _ screening' өрісін қосады, v1 клиенттері елемейді, v2 - талап етеді.
Жауапты ойындар/лимиттер: MAJOR лимиттер моделін (тәуліктік/апталық) өзгертеді. EOL v1 дейін екі есе экспорт.
Реттеушілерге есеп беру: бекітілген нұсқасы-күні: 'reporting-2025-01'.

19) Шағын саясат (wiki үшін мысал)

Модель: сыртқы API үшін - 'URI/vN/'; ішкі - 'Accept:... vN + json' немесе 'X-API-Version: N'.
SemVer: спецификациялар мен SDK 'N. ретінде жарияланады. minor. patch`. MAJOR RFC/ADR талап етеді.
Сыйысымдылық: MINOR/PATCH - бұзатын өзгерістерсіз. Сыну → тек MAJOR арқылы.
Deprecation/EOL: ≥ 90 күн бұрын хабарландыру; Тақырыптағы Sunset күні; сыни клиенттер үшін LTS-тармағы.
Бақылау: негізгі интеграциялар үшін CI, CDC OpenAPI diff/buf breaking.
Observability: 'api _ version' белгісі бар метриктер/логтар.
Релиздер: canary 5% ≥ 24 сағат, содан кейін кезең-кезеңімен 100% жасыл метриктер кезінде.


Жиынтық

Нұсқалау - бұл «URL-дегі/v2» туралы емес, процесс туралы: эволюцияның айқын ережелері, үйлесімділікті автоматты тексеру, басқарылатын релиздер және интеграцияларды құрметтеу. Түсінікті саясатты енгізіңіз, бақылау мен қадағалауды автоматтандырыңыз - және өзгерістер өнімге қауіп төндірмейді.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.