Logo GH

API экожүйесі

(Бөлім: Экожүйе және Желі)

1) Мақсаттар мен қағидаттар

Экожүйенің API - қатысушылардың өзара іс-қимылына арналған интерфейстердің стандартталған жинағы (операторлар, студиялар, PSP, KYC/AML, көпірлер, талдау). Мақсаттары:
  • Жылдам, болжамды интеграция (time-to-integration ↓).
  • Сенімділік және масштабталу (SLO, QoS, backpressure).
  • Қауіпсіздік және реттеушілікті сақтау (ең төменгі құқықтар, аудит).
  • Сынусыз эволюция (нұсқалар, үйлесімділік, фичефлагтар).

Принциптері: contract-first, деректерді азайту, демпотенттілік, observability-by-default, релиздердің «екі жылдамдығы» (core vs experimental).

2) API таксономиясы

1. REST/HTTP - синхронды CRUD/командалық операциялар, idempotency-key, pagination/cursors.
2. gRPC/QUIC - төмен латенттілік, ағындар, бинарлық хаттамалар.
3. Events (Pub/Sub) - домендік оқиғалар ('deposit.', 'payout.', 'bridge.', 'risk.').
4. Webhooks - қолтаңбалары мен ретрайлері бар кері хабарламалар.
5. GraphQL (шектеулі) - материалдандырылған витриналардың үстінен біріктіретін оқулар.
6. Admin/Meta - каталогтар, нұсқалар, мәртебелер, кілттер, квоталар.

Қол жеткізу деңгейлері: Public (шектеулі әдістер/оқу), Partner (сатып алулар және квоталар), Internal (жеке контурлар).

3) Келісімшарттар мен схемалар

OpenAPI/AsyncAPI/Protobuf IDL - шындықтың бірыңғай көзі.
Data Contracts - сыйысымдылық тестілері, схемалар линтерлері, MAJOR-сыз «сындыру» өрістеріне тыйым салу.
Каталогтар: активтер/желілер, PSP/әдістер, аймақтар/юрисдикциялар, SDK нұсқалары, мүмкіндіктер жалаулары.

Ең аз REST келісімшарты (OpenAPI фрагменті)

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 }

Оқиғалар (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) Нұсқалау және үйлесімділік

SemVer: `MAJOR. MINOR. PATCH`. MINOR/PATCH - артқа үйлесімді; MAJOR - параллель нұсқалар ('/v1 ', '/v2') + адаптерлер.
Deprecation policy: терезе ≥ 90 күн, «екі желі» қолдау, келісімшарттар бойынша автоматты хабарламалар.
Feature Flags: өңірлер/серіктестер бойынша өрістерді/әдістерді қосу/ажырату.
Capability Negotiation: қол алысу кезінде қолдау көрсетілетін профильдерді жариялау.

5) Теңсіздік, тәртіптер мен курсорлар

Командаларға арналған Idempotency-Key (create/cancel), TTL кілттері ≥ 72 сағ.
Exactly-once outbox/inbox және демпотенттік консюмер арқылы семантика.
Курсормен пагинация: 'next _ cursor', ендірмелерге/өшірулерге төзімділік.
Сұрыптау және сүзгілер - тұрақты, анық құжатталған.

6) Қауіпсіздік және сенім

mTLS (service service), серттердің пиннингі және кілттердің ротациясы.
Арнаға байланыстыруға арналған OAuth2/OIDC (client credentials, JWT қысқаша TTL), PoP/DPoP.
Webhook қолтаңбалары (НМАС/кілттің нұсқасы/уақыты), қайталанудан қорғау.
RBAC/ABAC және PoLP: сатып алулар, org_id/tenant_id, объектіге/операцияға лимиттер.
DLP/PII-минимизация: лейблдерде/логтарда PII тыйым салу, идентификаторларды токенизациялау.
Rate-limits және WAF: per org/route/region, abuse қорғанысы.

Кілт саясатының мысалы (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) Квоталар, QoS және backpressure

QoS кластары: P0 (төлемдер/көпір/аяқтау), P1 (азық-түлік), P2 (bulk/мұрағат).
Квоталар/лимиттер: RPS, concur-requests, bytes/sec, оқиға тақырыбы/топтамасы.
Admission control: «қымбат» сұраулардың ерте ауытқуы, heavy-query-guard.
Backpressure: токендер/кредиттер, DLQ кезектері, джиттермен ретрайлер.

Квоталар саясаты

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

8) Бақылау қабілеті: SLI/SLO, метрика, трассировка

SLI (ядро):
  • p95/99 latency по маршрутам, Success Rate, Error budget burn, Queue-lag p95, Freshness webhooks, Delivery success%.
  • Contract Compliance% (сұлбалар/қолтаңбалар).
  • Webhook retry/dropped%.

SLO (бағдарлар): P0 p95 ≤ 400 мс, Availability ≥ 99. 95%; Webhook delivery p95 ≤ 2 с; Events freshness p95 ≤ 60 с.

Метриктер: латенттік гистограммалары, қате кодтары, жауап өлшемі, RPS, per-tenant.
Трестер: өтпелі 'trace _ id' (edge → gateway → service → DB → event/webhook).
Логтар: құрылымдалған, PII жоқ, 'request _ id' бойынша корреляция.

9) Даунтайсыз релиздер паттерндері

SLO-гейт және outlier-ejection бар Blue-Green/Canary.
Schema-first эволюциясы: тек өрістерді қосу, ескі клиенттер үшін адаптерлер.
Zero-downtime көші-қон БД: онлайн-DDL, екі бағытты конвертерлер.
Өзгерістерді бақылау: timelock, аудит және сыйысымдылық тізілімі.

10) Каталогтар мен тізілімдер

API/нұсқалар тізілімі

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)
);

Оқиғалар каталогы

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

Кілттер/сатып алулар

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

11) Тестілеу және келісімшарттарға сәйкестігі

Contract-tests: клиенттерді генерациялау, схемаларды валидациялау, negative-_cases.
Оқиғалар сынақтары: қайталауға/қайта реттеуге төзімділік.
Chaos/Lat-tests: жоғалту/джиттер инъекциялары, баяу стор.
Security-tests: вебхук қолтаңбалары, кілттерді ротациялау, қайталау шабуылдары.
Performance-профильдер: SLA-дәнекерлеу, «ыстық» бағыттар, DA/тәуелділік көпірі.

12) Интерфейстердің мысалдары

Webhooks (қолтаңбасы мен ретрайлері)

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 (біріктірілген оқу, тек оқу)

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

gRPC (оқиғалар ағыны)

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

13) Процестер мен рөлдер

API Owner - келісімшарт/нұсқа/SLO/квота.
Security - кілттер/қолтаңбалар/аудит/DLP.
SRE/Ops - дашбордтар, алерттар, capacity.
Partner Success - онбординг, лимиттер, фичефлагтар.
Compliance - юрисдикциялар, санкциялар, есептілік.

14) Дашбордтар

Core API: latency/error/RPS маршруттар мен тентанттар бойынша.
Webhooks: delivery p95, retries, drops, қолтаңбалар.
Events: freshness, lag, consumer health, DLQ.
Security: аяқталу кілті, қолтаңбалар, бас тартылған сұраулар.
Governance: белсенді нұсқалар/депрекейттер, келісімшарттардың үйлесімділігі.

15) Playbook оқиғалар

A. Жасырындылықтың p95 өсуі P0

1. P0 және P2-throttle басымдығын қосу; 2) шлюздерді масштабтау;

2. оқулардың бір бөлігін кэшке ауыстыру; 4) «ыстық» маршруттарды талдау.

B. delivery webhook құлдырауы

1. Қолтаңбаларды/сағаттық ауысуды тексеру; 2) Ретраяларды/таймауттарды ұлғайту

2. 4) пулл-эндпоинтке уақытша көшу.

C. drift келісімшарттары

1. 'strict mode' дегенді қосу

2. 3) адаптер шығару, 4) пост-мортем, линтерлерді жаңарту.

D. Кілт/серт компрометациясы

1. Revoke/rotate; 2) вебхоктарды қайта түсіру; 3) аудит; 4) серіктестерді хабардар ету.

E. Қайталау/қайталау жарылысы

1. Idempotency-Key/TTL тексеру; 2) дедупты күшейту; 3) «шулы» көзді шектеу.

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

1. Келісімшарттарды сипаттау (OpenAPI/AsyncAPI/IDL), линтерлер мен CI қосу.
2. auth (OAuth2/OIDC, mTLS), вебхук қолтаңбаларын, кілттердің айналымын баптау.
3. / QoS/лимиттерін, heavy-query-guard және backpressure енгізу.
4. Бақылауды жоғарылату: SLI/SLO, трассалар, дашбордтар, алерта.
5. Релиздерді ұйымдастыру: canary/blue-green, schema-first көші-қон.
6. Нұсқалар/оқиғалар/кілттер каталогын және депрекейт процестерін іске қосу.
7. Chaos/perf/security-тесттер өткізу, плейбуктерді рәсімдеу.
8. Деректерді барынша азайту және реттеуішке сәйкестігін үнемі ревизиялау.

17) Глоссарий

Contract-first - кодқа дейін формалды келісімшарттар арқылы API жобалау.
Idempotency-Key - әрекетті қайталауды қауіпсіз ететін кілт.
AsyncAPI - оқиғалық интерфейстердің ерекшелігі.
QoS - қызмет көрсету сапасы/басымдылығы сыныбы.
DLQ - проблемалық хабарлар үшін «өлі кезек».
Error budget burn - SLO-ға қатысты қателерді бюджетті «жағу» жылдамдығы.

Қорытынды: экожүйенің API - бұл эндпоинттардың жиынтығы емес, келісімшарттардың, қауіпсіздіктің, квоталар мен бақылаудың басқарылатын жүйесі. Осы фреймворкқа сүйене отырып, экожүйе жылдам интеграцияларға, болжамды SLO-ға және қауіпсіз эволюцияға қол жеткізеді - желілік деңгейден және аутентификациядан оқиғалар ағыны мен есептілікке дейін.

Contact

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

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

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

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

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

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