APIドキュメント:OpenAPI、 Swagger、 Postman
TL;DRについて
OpenAPI-真実のソース:contract→SDK→moki→tests→portal。
Swagger UI/Redoc-読み取り可能なショーケース;Postman-実行可能スクリプト。
私たちは、linter、 breaking-check、 exampleとerrorスキームを縫い、SDKとMockサーバーを生成し、バージョン管理されたdevポータルと「Sunset」を公開します。
1)目標と原則
契約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' }
ヒント:
- スキーマ/responses/parameters/requestBodyを'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)例: リクエスト/レスポンス、カール、SDK
各エンドポイントの場合:最小値と拡張例。
OpenAPIからカールとコードスニペット(JS/Python/Go)を生成します。手で書くな。
実際の値を適用する:UUID、 ISO-date、 「minor」(セント)の和。
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-投稿する方法
2店舗をホスト:1.Swagger UI(インタラクティブ、try-it-out)、
2.Redoc(読み取り可能な長いページ)。
含まれるもの:ダークテーマ、検索、バージョンセレクター('v1'、 'v2')、廃止バナー。
本番ドメインの「Try it out」を非表示にし、サンドボックスで許可します。
6)ポストマンコレクション: ライブスクリプト
OpenAPIからコレクションを自動生成し、環境変数('{{baseUrl}}'、 '{{accessToken}}')をサポートします。
プリテスト(トークンの取得)とポストテスト(ステータス/スキーマのアサート)を追加します。
フォルダに侵入:認証、支払い、支払い、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 (examples/' examples'/'examples')からモックサーバーを生成します。
モックの制限を示す:idempotency、 delays、 random errors (UATの場合)。
ドキュメントのサンドボックスとプロッドの違い(制限、データ、遅延)。
8) SDKの自動生成
OpenAPIから公式SDK (TypeScript、 Python、 Go)を生成します。
SDKリリースポリシー=SemVer、 APIバージョンマッピング。
README SDK:認証、リトレイ、idempotency、 429/Retry-After処理。
9)リンティング、破損点検およびCI
Linters:スペクトル(スタイル/アンチパターン)、openapi-diff(ブレイクチェック)。
CI:- 回路のバリデータ、
- linter、
- iocサーバーに対する契約テスト、
- Swagger/Redoc/コレクションアセンブリ、
- ポータルへの公開(ステージング→prod)、
- 廃止/日没警報。
10)バージョン管理、廃止、日没
URIのバージョン('/v1')と'info。バージョン'。
廃止フラグ:'Deprecation: true'、 'Sunset: <RFC1123 date>'、 'Link: <changelog>'ヘッダー。
ポータル-切断前のバナーとタイマー。v1のPostmanコレクションは凍結されています(バグ修正のみ)。
11)ドックでのセキュリティとプライバシー
秘密、内部URL、実際のPAN/PIIを投稿しないでください。
機密フィールド-マスキングとスタブの例。
Swagger 「Try it out」→sandboxのみ、レート制限付き。
OAuth2/OIDC、 HMAC (webhook用)、mTLS(必要に応じて)を明確に説明します。
12)スタイルガイド契約書
リソース複数形:'/payments'、'/payouts'。
識別子:'pay _''、 po _'、 UUIDv4またはksuid。
日付-UTC ISO-8601;money-'amount_minor+currency'。
ペジネーション-カーソルベース('?cursor=&limit=')、安定したソート。
Idempotency-突然変異のための'Idempotency-Key'。
リストの安定したオブジェクト'meta'と'links'。
13)ドックの「Webhooks」セクション
イベントエンベロープ、HMAC署名、タイムウィンドウ、リトレイ、レスポンスコード付きのセクションを分離します。
ローカル署名検証用のイベントボディとPostmanコレクションのサンプル。
replay/DLQエンドポイントとUATチェックリスト。
14)開発ポータル: 役割と出版
セクション:概要、開始、認証、エンドポイント、例、Webhooks、 SDK、制限、Changelog。
役割:Steward API(標準)、ドメイン所有者(コンテンツ)、Tech Writer(編集)、DevRel(ポータル/コミュニティ)。
機能:スキーマフィールドから検索し、サンプルをコピーし「、リクエストを収集」→Postman。
15)チェックリスト
リリース前:- OpenAPIは有効です。エラーのないlinter。
- 例は200/4xx/429/5xxをカバーしています。
- セキュリティ:認証スキームの説明、秘密はありません。
- Swagger/RedocとPostman (prod/sandbox)を形成。
- SDKの生成と公開。
- changelogとバージョンセレクタを更新しました。
- 廃止/日没ヘッダーが含まれています。
- ポータルのバナー、パートナーへの手紙。
- 従来のコールメトリックはターゲットに該当します。
16)アンチパターン
真実の重複源(wiki ≠ OpenAPI)。
Postmanで実行せずに「目で」の例。
単一のエラーフォーマットがない。
URI/ドメインの代わりに「in query parameter」バージョン。
食べ物にアクセスでき、制限はありません。
一貫性のないページネーションと認証スキーム。
17)オートメーションのミニスニペット
OpenAPI(擬似)からPostmanコレクションを生成する:bash openapi2postmanv2 -s openapi. yaml -o postman. json -p
ポータル公開(CIステップ、擬似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)ローカライズと可用性
individual 'info。description_<lang>'または2つのポータルアセンブリ(EN/RU)。
用語用語(KYC/AML、ペイアウト、idempotency)。
コントラスト、キーボードナビゲーション、ダークテーマ。
概要
ドキュメントのパイプラインを組み立てる:単一のOpenAPI契約→lintersとbreaking-checks→Swagger/Redocショーケース→Postmanコレクションとモックサーバー→SDK→バージョンポータルとSunset。通常の例、単一のエラーフォーマット、および強力な認証は、ドキュメントを棚のPDFから作業統合ツールに変換し、パートナーを迅速化し、サポートコストを削減します。