GH GambleHub

API uyğunluğu və yeniləmələr

1) Uyğunluğun əsas prinsipləri

Additive-first: köhnəni qırmadan yenisini əlavə edin (yeni opsion sahələri/enpointlər, yeni enum dəyərləri).
Sabit müqavilələr: «spesifikasiyada vəd olunanlar işləyir»; davranış sənədləşdirilmişdir.
Backward> Forward: geri uyğunluq prioriteti; forward tolerant-readers vasitəsilə icazə verilir.
Sənədlər birincidir: həqiqətin yeganə mənbəyi registry (OpenAPI/AsyncAPI/Proto) sxeminin versiyasıdır.
Aydın təkamül: breaking - yalnız yeni major versiyası və miqrasiya bələdçisi vasitəsilə.

2) Dəyişikliklərin taksonomiyası

2. 1 Uyğun (MINOR/PATCH)

Opsiyonel sahələrin/hederlərin, yeni end nöqtələrinin, defolt query parametrlərinin əlavə edilməsi.
Limitlərin artırılması ('page _ size', TTL), kodlar/semantika dəyişdirilmədən səhvlərin dəqiqləşdirilməsi.
Müştərilər «tanımadığınız» (tolerant-reader) görməməzlikdən gəldikdə enum dəyərlərinin əlavə edilməsi.

2. 2 Qarışıq (Behavioral)

Defoltların, çeşidləmə qaydalarının, incə taymautların, kvotaların dəyişdirilməsi biznes məntiqini «poza» bilər. RFC + elanları və kanaryaları tələb edir.

2. 3 Sındırıcı (MAJOR)

Sahələrin adının dəyişdirilməsi/silinməsi, növün/formatın dəyişdirilməsi, səhv kodlarının dəyişdirilməsi, müqavilələrin/autentifikasiya sxemlərinin əks uyğunsuzluğu.

3) Version siyasəti

Strategiya: 'path versioning' ('/v1 ', '/v2').
Minor/patch: «əlavə edin, sındırmayın».
Tarixi başlıqlar (əlavə): yumşaq tədricən dəyişikliklər üçün 'X-API-Version-Date'.
Media növləri (ops.) : `Accept: application/vnd. acme. v1 + json 'nazik qranulyasiya üçün.

4) Deprekasiya və sunset

4. 1 Kommunikasiya başlıqları


Deprecation: true
Sunset: 2026-03-31T00:00:00Z
Link: </guides/reports-v2>; rel="successor-version"

4. 2 Çıxış qaydası

1. Portalda elan/poçt/SDK release notes.
2. Xəbərdarlıq pəncərəsi 90-180 gün ≥.
3. Daşbordda statuslar adoption.
4. Sunset sonra - 410 Gone və ya «read-only» rejimi razılaşdırıldıqda grace dövrü üçün.

5) Miqrasiya və birgə varlıq versiyası

Keçid dövründə dual-write/dual-read və hesabatların müqayisəsi.
Adapterlər (müvəqqəti): köhnə payload → yeni sxemləri gateway çevirmək; adapter ömrü məhduddur.
SDK-yardım: Deprekasiya xəbərdarlığı ilə hər iki versiyanı dəstəkləyən buraxılışlar (hər proses üçün 1 dəfə).
Ficha bayraqları: açarlar/tenantlar siyahısı üzrə yeni semantikanın daxil edilməsi.

6) Backward və forward uyğunluq

6. 1 Backward (köhnə müştərilər yeni server)

Növlərin formatlarını/məcburiyyətini dəyişdirməyin.
Yeni sahələr yalnız seçimdir.
Səhvlər əvvəlki 'error _ code', yeni kodlar əlavə etmək, əvəz etmək deyil.

6. 2 Forward (köhnə server yeni müştərilər)

'OPTIONS '/'/versions' vasitəsilə imkanları (capabilities) yoxlayın.
Grace davranış: müştəri itkin fich dözümlü olmalıdır.

7) Müqavilələr və avtomatik yoxlamalar

Registry: sxemlərin versiyalarını saxlayırıq; PR-difs → hesabatlar «breaking/non-breaking».
Linter: adlar/tiplər, idempotentlik, paginasiya, sabit kodlar.
CDC (Consumer-Driven Contracts): CI təchizatçı inteqrator testlər (Pact və analoqları).
Gates: PR 'major bump '/RFC olmadan breaking zaman bloklanır.

CI addım nümunəsi:
yaml
- name: API Diff run: api-diff --from main --to $PR_SHA --fail-on=breaking --format junit --out diff. xml

8) Kanarya buraxılışı və geriyə

Canary: 10% → 25% → 50% → 100% trafik; SLO pisləşdikdə avtomatik geri çəkilmə (5xx/latency/429).
Beta açarları: allowlist üzrə yeni versiyalara çıxış.
Release freeze: error-budget yanması zamanı.
Qəbul analitikası: yeni versiyada trafik/müştərilərin payı, miqrasiya vaxtı.

9) Detallarda uyğunluq: səhvlər, paginasiya, idempotentlik

9. 1 Səhvlər

Mövcud ssenarilərdə HTTP statuslarını dəyişməyin.
'error _ code' - sabit; yeni kodlar yalnız əlavə.
'application/problem + json' - vahid format.

9. 2 Paginasiya

Köhnə 'offset/limit' dəstəklənərsə, cursor/keyset = MINOR-a keçid.
'(updated_at,id)' sıralamasını və kursorun sabitliyini sənədləşdirin.

9. 3 Idempotency

write üçün - 'Idempotency-Key' + '409 IDEMP_REPLAY' münaqişə zamanı.
Miqrasiyalar idempotentlik semantikasını dəyişdirməməlidir.

10) Gateway-transformasiya (uyğun olduqda)

Map v1 → v2 sahələri, səhvləri normallaşdırmaq, tarix/pul formatlarını çevirmək.
Guardrails: transformasiya şəffaf və loged; breaking gizlətməyin, lakin məhdud vaxt körpüsü kimi istifadə edin.

11) Rabitə və portal

Changelog с датами (`added/changed/deprecated/removed/fixed`).
Versiya kartı: status (beta/GA/deprecated), tarix sunset, qaydalara bağlantılar.
Bildiriş vebhukları: 'deprecation. notice`, `version. released`, `plan. change`.
SDK release notes + portalda banner.

12) Uğur metrikası

Adoption rate v2 (sorğu/müştərilər).
Backward-compat incidents («qırılma» sayı).
Error mix (4xx/5xx/429 payları) buraxılışdan əvvəl/sonra.
Time-to-Adopt media.
Support load (biletlər/həftə).
Cost-to-Serve (çağırış üçün infrastruktur dəyəri).

13) Nümunələr və nümunələr

13. 1 Versiyalar və Depreksiya Başlıqları


X-API-Version: v1
Deprecation: true
Sunset: 2026-03-31T00:00:00Z
Link: </v2/reports>; rel="successor-version"

13. 2 Versiya siyasəti (YAML fraqmenti)

yaml versioning:
strategy: "path"
compatibility:
minor: "additive-only"
patch: "bugfix/perf, no schema change"
deprecation:
min_notice_days: 120 rollout:
canary_steps: [10,25,50,100]
rollback_checks: ["5xx_rate","p95_latency","429_rate","adoption"]

13. 3 OpenAPI: uyğun sahə əlavə

yaml components:
schemas:
Report:
type: object required: [id, createdAt]
properties:
id: { type: string }
createdAt: { type: string, format: date-time }
cursor: { type: string, description: "optional for v1. 2+" } # additive

14) Buraxılış çek siyahısı (MINOR/MAJOR)

MINOR

  • DIFF: qeyri-breaking, yaşıl linter
  • Sənədlər/SDK yeniləndi (nümunələr/codec)
  • Kanarya + SLO ilə avtomatik geri dönüş
  • Komm planı, portalda səhifə
  • Dashboard adoption və səhvlər

MAJOR

  • RFC/ADR, tarix sunset və pəncərə ≥ 90-180 gün
  • v1 v2 körpü (gateway) və miqrasiya bələdçisi
  • Dual-write/oxumaq və yoxlama
  • SDK hər iki API + xəbərdarlıqları ilə
  • Əsas inteqratorlarla pilot

15) Tətbiq planı (3 iterasiya)

1. Təməl (2 həftə):

CI sxemləri, lint və auto-diff qeydiyyatı; uyğunluq siyasəti; başlıqlar 'Deprecation/Sunset'.

2. Idarə olunan buraxılışlar (3-4 həftə):

Kanaryalar, fiça bayraqları, SLO-alertlər; versiyalar portalı; 2 filialları dəstəkləyən SDK buraxılışları.

3. Avtomatlaşdırma və miqyas (davamlı):

CI-də CDC istehlakçı testləri, adoption tendensiyaları üçün sunset proqnozu, avtomatik qeydlər və xatırlatmalar.

16) Mini-FAQ

Sahə növünü major olmadan dəyişə bilərəmmi?
Yox. Hətta «sətir → nömrə» - fasilə. Yeni bir sahə daxil edin, köhnə - deprecate.

Enum: mənalar əlavə edə bilərəmmi?
Bəli, əgər müştərilər tolerant-readers. Əks halda - ilk xəbərdarlıq və beta.

Köhnə versiyanı nə qədər saxlamaq lazımdır?
İndiyə qədər yeni ≥ adoption 95% və deprekasiya pəncərəsi saxlanılır. Siyasətdə vaxtı təyin edin.

Yekun

API uyğunluğu intizamdır: additive-yanaşma, formal sxemlər və diflər, kanarya relizləri, aydın depreksiya və idarə olunan miqrasiyalar. Dəyişiklik siyasətini düzəldin, yoxlamaları və kommunikasiyaları avtomatlaşdırın, adoption ölçün - və yeniləmələriniz müştəriləri sındırmağı dayandıracaq və təkamül sürəti etibarlılığı itirmədən artacaq.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.