GH GambleHub

Технология жана инфраструктура → API версиясы

API версиясы

1) Эмне үчүн керек

Версиялоо - бул кызматтар менен кардарлардын ортосундагы келишимдерди бузулбастан өзгөртүүнүн башкарылуучу жолу. Интеграциялардын көп сандагы продуктыларында (төлөмдөр, KYC/AML, оюндар, биллинг, отчеттуулук) бир эле учурда "эски" жана "жаңы" кардарлар жашайт. Туура версия саясаты:
  • коркунучун азайтат,
  • жакшыртууну жана коопсуздукту,
  • бизнеске өнөктөштөрдүн миграциясынын болжолдуу мөөнөттөрүн берет.

2) Өзгөрүүлөрдү классификациялоо

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

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. Version-Date (date-based):

fintech/отчеттуулук үчүн жакшы: өзгөрүүлөрдүн алдын ала "кесип" (мисалы, чейрек сайын).

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) Event 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/partner порталы, 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 - стили, милдеттүү метадеректер (Version, Deprecation).
Consumer-Driven Contracts (Pact) - провайдер кардарларды бузбайт деп кепилдик берет.
buf breaking для protobuf.
CI MAJOR жогорулатуу жок бузуучу өзгөрүүлөр менен түшүп керек.

10) Документация жана SDK

Species чыгаруу: '/docs/api/v1/openapi. json`, `/docs/api/v2/…`.
SemVer жана changelog менен версия (npm/maven/pypi) боюнча SDK түзүү.
Эскирген ыкмаларды SDK аннотацияларына/Депрессияга белгилеңиз.

11) Observability версиясы боюнча

Метрларды өзүнчө чогултуу:
  • RPS/жашыруун/версия каталар ('api _ version' label).
  • Эндпоинттерди колдонуу карталары: v1 дагы ким?
  • Alerty: "> 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-текшерүү.
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/Fintech (практика)

Төлөмдөр: 'status '/' decline _ reason' кеңейтилген жаңы PSP үчүн v2 киргизүү; отчеттуулук үчүн 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: Specifications жана SDK катары жарыяланган 'N. minor. patch`. MAJOR RFC/ADR талап кылат.
Шайкештиги: MINOR/PATCH - эч кандай бузуучу өзгөрүүлөр. Бузуучу → гана MAJOR аркылуу.
Deprecation/EOL: ≥ 90 күндүн ичинде жарыялоо; Баш макалаларда Sunset датасы; критикалык кардарлар үчүн LTS-бутагы.
Control: OpenAPI diff/buf breaking в CI, CDC үчүн негизги интеграциялар.
Observability: 'api _ version' этикеткасы менен метрика/логи.
Релиздер: canary 5% ≥ 24h, андан кийин этап-этабы менен 100% жашыл метр менен.


Жыйынтык

Версиялоо - бул "URLдеги/v2" жөнүндө эмес, процесс жөнүндө: эволюциянын так эрежелери, шайкештикти автоматтык текшерүү, башкарылуучу релиздер жана интеграцияны урматтоо. Түшүнүктүү саясатты киргизиңиз, көзөмөлдү жана байкоону автоматташтырыңыз - жана өзгөртүүлөр продукт үчүн коркунуч болуп калат.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.