GH GambleHub

API документтери: OpenAPI, Swagger, Postman

TL; DR

OpenAPI - чындыктын булагы: контракт → SDK → моки → тесттер → портал.
Swagger UI/Redoc - окулуучу дисплей; Postman - аткарылуучу сценарийлер.
Биз линтерлерди, breaking-checks, мисалдарды жана ката схемаларын, SDK жана Mock-серверлерин генералдап, версиялоо жана "Sunset" менен чоң порталды жарыялайбыз.

1) Максаттары жана принциптери

Бир келишим (OpenAPI). Калганынын баары түзүлөт.
Документтер аткарылышы мүмкүн: суроо-талаптын мисалдары Postman/CLI сыналган.
демейки коопсуздук: ката схемалар, лимиттер, аутентификация.
Версиялоо жана жашоо цикли: 'v1 '/' v2', Deprecation/Sunset, changelog.

2) OpenAPI түзүлүшү (минималдуу скелет)

yaml openapi: 3. 0. 3 info:
title: Payments API version: 1. 2. 0 description: >
Payment transactions: auth/capture/refund/payout. All responses contain trace_id.
servers:
- url: https://api. example. com/v1 tags:
- name: Payments
- name: Payouts components:
securitySchemes:
oauth2:
type: oauth2 flows:
clientCredentials:
tokenUrl: https://idp. example. com/oauth/token scopes:
payments: read: read payments: write: write payments schemas:
Error:
type: object required: [error, error_description, trace_id]
properties:
error: { type: string }
error_description: { type: string }
trace_id: { type: string, format: uuid }
security:
- oauth2: [payments:read]
paths:
/payments/{id}:
get:
summary: Receive payment tags: [Payments]
parameters:
- in: path name: id required: true schema: { type: string, format: uuid }
responses:
'200':
description: Content succeeded:
application/json:
schema: { $ref: '#/components/schemas/Payment' }
'404': { $ref: '#/components/responses/NotFound' }
components:
responses:
NotFound:
description: Content not found:
application/json:
schema: { $ref: '#/components/schemas/Error' }
Кеңештер:
  • schemas/responses/parameters/requestBodies 'components'.
  • securitySchemes (OAuth2/JWT/HMAC) сүрөттөп, 'paths '/' global' деңгээлинде колдонуңуз.

3) Ката стандарттары жана метадерилери

Бир ката объект (жана REST жана Webhook үчүн):
yaml components:
schemas:
ApiError:
type: object required: [error, error_description, trace_id]
properties:
error: { enum: [invalid_request, not_found, rate_limited, internal] }
error_description: { type: string }
trace_id: { type: string, format: uuid }

Ар дайым документтештирүү 429 (rate limit), 401/403, жана баш 'X-RateLimit-', 'Retry-After'.

4) мисалдар: request/response, curl жана SDK

Ар бир эндпоинт үчүн: минималдуу жана кеңейтилген мисал.
OpenAPIден curl жана код сниппеттерин (JS/Python/Go) түзүү; кол менен жазба.
Чыныгы баалуулуктарды колдонуңуз: UUID, ISO датасы, "кичинекей" суммалар (cents).

Кеңейтилген жооптун мисалы:
yaml examples:
ok:
value:
id: "pay_123"
amount_minor: 1099 currency: "EUR"
status: "captured"
created_at: "2025-11-03T12:34:56Z"

5) Swagger UI/Redoc - кантип жарыялоо керек

Эки терезе:

1. Swagger UI (interactive, try-it-out),

2. Redoc (окуу узун барактар).

Киргизиңиз: караңгы тема, издөө, версиялык селектор ('v1', 'v2'), Deprecation баннери.

Prod домен үчүн "Try it out" жашыруу, sandbox боюнча уруксат.

6) Postman Collection: жандуу жагдайлар

OpenAPI жыйнагын автогенерациялаңыз жана чөйрө өзгөрмөлөрүн колдоңуз ('{{baseUrl}}', '{{accessToken}}').
Претестдерди (токенди алуу) жана пост-тесттерди (статус/схемалар) кошуу.
Auth, Payments, Payouts, Webhooks.
Маанилүү каттамдар үчүн мониторду (график боюнча) экспорттоо.

Тесттин үлгүсү:
js pm. test("status is 200", () => pm. response. code === 200);
pm. test("schema valid", () => tv4. validate(pm. response. json(), pm. collectionVariables. get("schema_payment")));

7) Моки жана Сандбокс

OpenAPIден (мисалдар боюнча/' example '/' examples ') mock серверин түзүңүз.
mocha чектөөлөрдү белгилөө: демпотенттик, кечигүү, кокустук каталар (UAT үчүн).
Sandbox vs prod айырмачылыктарын документтештирүү (лимиттер, маалыматтар, кечигүүлөр).

8) SDK Autogeneration

OpenAPI расмий SDK түзүү (TypeScript, Python, Go).
SDK = SemVer чыгаруу саясаты, API чыгаруу боюнча mapping.
Жылы README SDK: Autentification, Retry, Idempotentity, 429/Retry-After иштетүү.

9) Линтинг, сынык текшерүү жана CI

Линтерс: spectral (стили/анти-үлгүлөрү), openapi-diff (breaking-текшерүү).

CI:
  • схема валидатор,
  • Линтер,
  • contract tests vs мок-сервер,
  • чогултуу Swagger/Redoc/чогултуу,
  • порталга жарыялоо (staging → prod),
  • Deprecation/Sunset жөнүндө эскертүү.

10) чыгаруу, Deprecation, Sunset

URI версиясы ('/v1 ') жана' info. version`.
Эскирген желектер: 'Deprecation: true', 'Sunset: <RFC1123 date>', 'Link: <changelog>'.
Порталда - баннер жана таймер өчүрүлгөнгө чейин; Postman-чогултуу үчүн v1 тоңдурулган (гана багфикстер).

11) Dock коопсуздук жана купуялык

Сырларды, ички URLлерди, реалдуу PAN/PIIлерди жарыялабаңыз.
Сезгич талаалар үчүн - камуфляж жана үлгү-муфталар.
Swagger "Try it out" → гана sandbox, rate-limits менен.
Так сүрөттөп OAuth2/OIDC, HMAC (Webhook үчүн) жана mTLS (зарыл болсо).

12) Style-Hyde келишимдер

көп санда ресурстар: '/payments ', '/payouts'.
ID 'pay _', 'po _', UUIDv4 же ksuid.
Даталар - UTC ISO-8601; акча - 'amount _ minor + currency'.
Pagination - cursor-based ('? cursor = & limit ='), туруктуу сорттоо.
Демпотенттүүлүк - мутациялар үчүн "Idempotency-Key".
Туруктуу объект 'meta' жана 'links' тизмелер үчүн.

13) Бөлүм "Webhooks" докто

Иш-чаранын конверти, HMAC кол тамгалары, убакыт терезеси, ретрайлер, жооп коддору менен өзүнчө бөлүм.
Жергиликтүү кол текшерүү үчүн окуялар жана Postman чогултуу дене мисалдар.
replay/DLQ жана UAT чек тизмеси.

14) Dev-портал: ролдору жана жарыялоо

Бөлүмдөр: Review, Start, Authentification, Endpoints, мисалдар, Webhuke, SDK, чектөөлөр, Changelog.
Ролдору: API Steward (стандарттар), Domain Owner (мазмун), Tech Writer (түзөтүү), DevRel (портал/коомчулук).
Ficha: схемалар талаалары боюнча издөө, үлгүлөрдү көчүрүп, "суроо-талап чогултуу" → Postman.

15) Чек баракчалары

Чыгаруунун алдында:
  • OpenAPI validen; Линтер катасыз.
  • мисалдар 200/4xx/429/5xx камтыйт.
  • Коопсуздук: сүрөттөлгөн схемалар auth, эч кандай сыр.
  • Swagger/Redoc жана Postman (prod/sandbox) түзүлгөн.
  • SDK тарабынан түзүлгөн жана жарыяланган.
  • такташты changelog жана версия селектор.
Deprecation үчүн:
  • Deprecation/Sunset аталыштары камтылган.
  • Баннер порталында, өнөктөштөргө кат.
  • Эскирген чакырыктардын көрсөткүчтөрү максаттуу деңгээлге түшөт.

16) Анти-үлгүлөрү

Double чындык булактары (wiki ≠ OpenAPI).
Postman ишке жок "көзгө" мисалдар.
Каталардын бирдиктүү форматынын жоктугу.
URI/домендин ордуна "query-параметрде" версиясы.
Swagger азык-түлүк жана чек жок кирүү менен.
Макулдашылбаган пагинация жана аутентификация схемалары.

17) Mini автоматташтыруу Snippet

OpenAPIден Postman коллекциясын түзүү (псевдо):
bash openapi2postmanv2 -s openapi. yaml -o postman. json -p
Portal жарыялоо (CI кадамдар, psevdo-YAML):
yaml steps:
- run: spectral lint openapi. yaml
- run: openapi-diff --fail-on-breaking main. yaml openapi. yaml
- run: redoc-cli bundle openapi. yaml -o site/redoc. html
- run: swagger-cli bundle openapi. yaml -o site/swagger. json
- run: openapi2postmanv2 -s openapi. yaml -o site/postman. json -p
- run: npm run deploy:portal

18) Локализация жана жеткиликтүүлүк

Жеке 'info. description_<lang>' же эки портал чогултуу (EN/RU).
Глоссарийдеги терминдер (KYC/AML, payout, idempotency).
Контраст, клавиатура багыттоо, караңгы тема.

Резюме

Документтердин конвейерин чогултуу: бирдиктүү OpenAPI-контракт → линтерлер жана breaking-checks → Swagger/Redoc витриналары → Postman коллекциялары жана мок-сервер → SDK → версиялоо жана Sunset менен чоң портал. Үзгүлтүксүз мисалдар, каталардын бирдиктүү форматы жана катуу аутентификация документтерди "текчедеги PDFден" интеграциянын жумушчу куралына айландырат, өнөктөштөрдү тездетет жана колдоонун баасын төмөндөтөт.

Contact

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

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

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

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

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

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