Logo GH

API ekosistemləri

(Bölmə: Ekosistem və Şəbəkə)

1) Məqsədlər və prinsiplər

Ekosistemin API-ləri - iştirakçıların (operatorlar, studiyalar, PSP, KYC/AML, körpülər, analitika) qarşılıqlı əlaqəsi üçün standartlaşdırılmış interfeys dəsti. Məqsədlər:
  • Sürətli, proqnozlaşdırıla bilən inteqrasiya (time-to-integration ↓).
  • Etibarlılıq və miqyaslı (SLO, QoS, backpressure).
  • Təhlükəsizlik və tənzimləmə (minimum hüquqlar, audit).
  • Arızasız təkamül (versiyalar, uyğunluq, ficheflages).

Prinsiplər: contract-first, məlumatların minimuma endirilməsi, idempotentlik, observability-by-default, «iki sürət» buraxılışları (core vs experimental).

2) API taksonomiyası

1. REST/HTTP - sinxron CRUD/komanda əməliyyatları, idempotency-key, pagination/cursors.
2. gRPC/QUIC - aşağı gecikmə, axınlar, ikili protokollar.
3. Events (Pub/Sub) - domen hadisələri ('deposit.', 'payout.', 'bridge.', 'risk.').
4. Webhooks - imzalar və retralar ilə əks bildirişlər.
5. GraphQL (məhdud) - materiallaşdırılmış vitrinlərin üzərində oxu yığma.
6. Admin/Meta - kataloqlar, versiyalar, statuslar, açarlar, kvotalar.

Giriş səviyyələri: Public (məhdud üsullar/oxu), Partner (satınalmalar və kvotalar), Internal (şəxsi konturlar).

3) Müqavilələr və sxemlər

OpenAPI/AsyncAPI/Protobuf IDL - həqiqətin vahid mənbəyidir.
Data Contracts - uyğunluq testləri, sxem linterləri, MAJOR olmadan «sındırıcı» sahələrin qadağan edilməsi.
Kataloqlar: aktivlər/şəbəkələr, PSP/metodlar, regionlar/yurisdiksiyalar, SDK versiyaları, fürsət bayraqları.

Minimum REST müqaviləsi (OpenAPI parçası)

yaml openapi: 3. 0. 3 info: { title: Ecosystem Core API, version: "2. 6. 0" }
paths:
/v2/payouts:
post:
operationId: createPayout parameters:
- in: header name: Idempotency-Key required: true schema: { type: string, maxLength: 64 }
requestBody:
required: true content:
application/json:
schema:
$ref: "#/components/schemas/PayoutRequest"
responses:
"202": { $ref: "#/components/responses/Ack" }
"409": { description: "Duplicate (idempotent)" }
components:
schemas:
PayoutRequest:
type: object required: [amount, currency, destination]
properties:
amount:  { type: string, pattern: "^[0-9]+(\\.[0-9]{1,9})?$" }
currency: { type: string, example: "USD" }
destination: { type: string }
metadata: { type: object, additionalProperties: true }

Hadisələr (AsyncAPI)

yaml asyncapi: 2. 6. 0 info: { title: Ecosystem Events, version: "1. 9. 0" }
channels:
payout. finalized:
subscribe:
message:
name: PayoutFinalized payload:
type: object required: [id, ts, amount, currency, status, signature]
properties:
id: { type: string }
ts: { type: string, format: date-time }
amount: { type: string }
currency: { type: string }
status: { type: string, enum: ["finalized","failed"] }
signature: {type: string} # source signature

4) Version və uyğunluq

SemVer: `MAJOR. MINOR. PATCH`. MINOR/PATCH - geri uyğun; MAJOR - paralel versiyalar ('/v1 ', '/v2') + adapterlər.
Deprecation policy: pəncərə ≥ 90 gün, «iki xətt» dəstək, avtomatik müqavilə bildirişləri.
Feature Flags: Regionlar/tərəfdaşlar üzrə sahələri/metodları açmaq/söndürmək.
Capability Negotiation: əl sıxarkən dəstəklənən profillərin elanı.

5) İdempotentlik, sifarişlər və kursorlar

Komandalar üçün Idempotency-Key (create/cancel), TTL açarları ≥ 72 saat.
Exactly-once outbox/inbox və idempotent konsumer vasitəsilə semantika.
Pagination kursor: 'next _ cursor', insert/silinməyə davamlı.
Çeşidləmə və filtrlər - sabit, açıq sənədləşdirilmiş.

6) Təhlükəsizlik və etimad

mTLS (service service), sertlərin pininqi və açarların rotasiyası.
OAuth2/OIDC (client credentials, qısa TTL ilə JWT), kanal bağlamaq üçün PoP/DPoP.
Webhook imzaları (NMAS/açar versiyası/vaxt), təkrarlama qorunması.
RBAC/ABAC və PoLP: alış-veriş, org_id/tenant_id, obyekt/əməliyyat limitləri.
DLP/PII-minimallaşdırma: etiketlərdə/loqlarda PII qadağası, identifikatorların tokenləşdirilməsi.
Rate-limits və WAF: per org/route/region, abuse qorunması.

Açar siyasəti nümunəsi (YAML)

yaml auth:
oauth2:
issuer: "https://auth. ecosys"
jwks_uri: "https://auth. ecosys/.well-known/jwks. json"
token_ttl_s: 900 mtls:
required_for: ["internal","partner_p0"]
scopes:
- name: payouts:write
- name: payouts:read
- name: events:subscribe

7) Kvotalar, QoS və backpressure

QoS sinifləri: P0 (ödənişlər/körpü/final), P1 (ərzaq), P2 (bulk/arxiv).
Kvotalar/limitlər: RPS, concur-requests, bytes/sec, mövzu/hadisələr üçün hissələr.
Admission control: «bahalı» sorğuların erkən sapması, heavy-query-guard.
Backpressure: tokenlər/kreditlər, DLQ ilə növbələr, jitter ilə retralar.

Kvota siyasəti

yaml quotas:
partner_default:
rps: 200 concurrent: 100 webhooks_outbound_rps: 50 p0:
rps: 100 p95_latency_ms: 400

8) Müşahidə: SLI/SLO, metriklər, izlər

SLI (nüvə):
  • p95/99 latency по маршрутам, Success Rate, Error budget burn, Queue-lag p95, Freshness webhooks, Delivery success%.
  • Contract Compliance% (sxemlər/imzalar).
  • Webhook retry/dropped%.

SLO: P0 p95 ≤ 400 ms, Availability ≥ 99. 95%; Webhook delivery p95 ≤ 2 с; Events freshness p95 ≤ 60 с.

Metriklər: latentlik histoqramları, səhv kodları, cavab ölçüsü, RPS, per-tenant.
Traces: keçidli 'trace _ id' (edge → gateway → service → DB → event/webhook).
Log: strukturlaşdırılmış, PII olmadan, 'request _ id' ilə korrelyasiya.

9) Endirimsiz buraxılış nümunələri

SLO gates və outlier-ejection ilə Blue-Green/Canary.
Schema-ilk təkamül: yalnız sahələr əlavə, köhnə müştərilər üçün adapterlər.
Sıfır downtime miqrasiya DD: Online DDL, iki yönlü çeviricilər.
Dəyişikliklərə nəzarət: timelock, audit və uyğunluq reyestri.

10) Kataloqlar və reyestrlər

API/versiyalar reyestri

sql
CREATE TABLE api_registry(
name TEXT, kind TEXT,      -- rest    grpc    events    webhook version TEXT, status TEXT,   -- active    canary    deprecated    retired slo JSONB, owner TEXT,
PRIMARY KEY (name, version)
);

Hadisə kataloqu

sql
CREATE TABLE event_catalog(
topic TEXT PRIMARY KEY,
schema_version TEXT,
qos TEXT,
retention_days INT,
pii BOOLEAN DEFAULT false
);

Açarlar/satın almalar

sql
CREATE TABLE api_keys(
key_id TEXT PRIMARY KEY,
org_id TEXT, scopes TEXT[], status TEXT, expires_at TIMESTAMPTZ
);

11) Test və müqavilələrə uyğunluq

Contract-tests: müştəri istehsalı, sxemlərin təsdiqi, negative-_cases.
Hadisələrin replay testləri: təkrarlanmaya/yenidən nizamlanmaya qarşı müqavimət.
Chaos/Lat-tests: enjeksiyon itkisi/jitter, yavaş yüz.
Security-tests: vebhuk imzaları, açarların rotasiyası, təkrar hücumlar.
Performance profilləri: SLA spikes, «isti» marşrutlar, DA/körpü asılılığı.

12) Interfeys nümunələri

Webhooks (imza və retralar)

yaml webhooks:
deliveries:
retry:
attempts: 5 backoff_ms: [200, 800, 1600, 3200, 6400]
jitter: true signature:
alg: "HMAC-SHA256"
header: "X-ECO-Signature"
timestamp_header: "X-ECO-Timestamp"
tolerance_s: 300

GraphQL (oxu yığma, yalnız oxu)

graphql type Query {
payouts(status: [Status!], first: Int!, after: String): PayoutConnection!
}

gRPC (hadisə axını)

proto service EventStream {
rpc Subscribe(SubscribeRequest) returns (stream Event);
}

13) Proseslər və rollar

API Owner - müqavilə/versiya/SLO/kvotalar.
Security - açarlar/imzalar/audit/DLP.
SRE/Ops - dashboard, alert, capacity.
Partner Success - onbordinq, limitlər, fiziki ifadələr.
Compliance - yurisdiksiyalar, sanksiyalar, hesabatlar.

14) Daşbordlar

Core API: marşrutlar və tentantlar üzrə latency/error/RPS.
Webhooks: delivery p95, retries, drops, imzalar.
Events: freshness, lag, consumer health, DLQ.
Təhlükəsizlik: sona çatma açarları, imzalar, rədd edilən sorğular.
Governance: aktiv versiyalar/deprekeytlər, müqavilələrin uyğunluğu.

15) Playbook hadisələr

A. Gecikmə artımı p95 P0

1. Prioritet P0 və P2-throttle daxil edin; 2) şlyuzları ölçmək;

2. bəzi oxunuşları cache keçmək; 4) «isti» marşrutların təhlili.

B. Payız delivery webhook

1. İmzaları/saat sürüşməsini yoxlayın, 2) gecikmələri/vaxtları artırın,

2. 4) müvəqqəti olaraq pull-end nöqtəsinə keçin.

C. drift müqavilələri

1. «strict mode» daxil edin (səhv mesajları kəsin),

2. istehsalçıya bildirin, 3) adapter buraxın, 4) post-mortem, linterləri yeniləyin.

D. Açar/sert kompromasiyası

1. Revoke/rotate, 2) vebhukları yenidən oynamaq, 3) audit, 4) tərəfdaşları xəbərdar etmək.

E. Təkrarların/dublların partlaması

1. Idempotency-Key/TTL yoxlayın, 2) dedupu gücləndirin, 3) «səs-küylü» mənbəyi məhdudlaşdırın.

16) Giriş çek siyahısı

1. Müqavilələri təsvir edin (OpenAPI/AsyncAPI/IDL), linterlər və CI daxil edin.
2. auth (OAuth2/OIDC, mTLS), vebhuk imzaları, açar rotasiyasını konfiqurasiya edin.
3. / QoS/limitləri, ağır-query-guard və backpressure daxil edin.
4. Müşahidə səviyyəsini artırın: SLI/SLO, treklər, daşbordlar, alertlər.
5. Relizləri təşkil edin: canary/blue-green, schema-first miqrasiya.
6. Versiya/hadisə/açar kataloqunu və deprekeyt proseslərini işə salın.
7. Chaos/perf/security testləri aparın, playbukları tərtib edin.
8. Məlumatların minimuma endirilməsini və tənzimləyiciyə uyğunluğunu mütəmadi olaraq yoxlayın.

17) Lüğət

Contract-first - koddan əvvəl formal müqavilələr vasitəsilə API layihələndirilməsi.
Idempotency-Key - əməliyyatın təkrarlanmasını təhlükəsiz edən açardır.
AsyncAPI - hadisə interfeyslərinin spesifikasiyası.
QoS - keyfiyyət/prioritet xidmət sinfi.
DLQ - problemli mesajlar üçün «ölü növbə».
Error budget burn - SLO ilə bağlı səhvlərin büdcəsini «yandırma» sürəti.

Nəticə: Ekosistemin API-ləri end-point dəsti deyil, müqavilə, təhlükəsizlik, kvota və müşahidə sistemidir. Bu çərçivəni izləyən ekosistem sürətli inteqrasiyalar, proqnozlaşdırıla bilən SLO və downtime olmadan təhlükəsiz təkamül əldə edir - şəbəkə səviyyəsindən və identifikasiyadan hadisə axınlarına və hesabatlara qədər.

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.