APIオペレーション
(事業・管理)
1)目的と原則
APIはエコシステムの「運用レイヤー」です。契約を通じて自動化されていないものは、手作業とリスクに変わります。
原則:- Contract-first:最初の仕様(OpenAPI/JSON スキーマ/AsyncAPI)、次に実装。
- Secure-by-default:最小スコープ、短いTTL、相互TLS/署名。
- 観察可能:エンドツーエンドのトレースおよびSLAメトリクス。
- Idempotent:リプレイセーフ。
- 後方互換性:「破る」変更なしの進化。
- 監査可能:暗号的に確認された事実(領収書)。
2)契約書とモデル(参考)
同期リクエストのOpenAPI;イベント/webhookの非同期API。
各リソースの必須フィールドは'id'、 'version'、 'created_at'、 'updated_at'、 'tenant'、 'region'、 'trace_id'です。
契約フラグメントの例
yaml paths:
/payments/payouts:
post:
operationId: createPayout requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutRequest'
responses:
"202": { $ref: '#/components/responses/AcceptedWithReceipt' }
headers:
Idempotency-Key:
schema: { type: string }
required: true components:
responses:
AcceptedWithReceipt:
description: Accepted, processing asynchronously headers:
Receipt-Hash: { schema: { type: string } }
3)認証、承認、スコープ
ユーザー/パートナーのクライアント資格情報/JWT OAuth2/OIDCのS2S。
スコープ/リソースロール:'支払い。'、'カタログを書く。'、'監査を読んでください。'export'を実行します。
ReBAC:「所有権による」アクセス(テナント/アカウント/サブアカウント)。
JITの秘密:短命のトークン、デバイス/サブネット/リージョンバインディング。
重要な操作(支払い、キー)のためのデバイスの姿勢&mTLS。
4) Idempotenceおよび「丁度一度」
Idempotency-Key(ヘッダー)+TTLウィンドウの'(key、 account、 route)'によるdedup。
Outbox/CDCはイベントを投稿する-保証された配信。
正確に一度の効果:副作用はトランザクションジャーナルを介してキャプチャされます。繰り返すと同じ"receipt' ('receipt_hash')になります。
再試行ポリシー:指数式バックオフ、ジッタ、最大ウィンドウ。
5)限界、クォータ、優先順位付け
料金制限:キーごと/テナント/ルート/地域;「ソフト」(429)と「ハード」(カットオフ)。
クォータ/予算:毎月/毎日のキャップ、Webhooks 'QuotaCapReacted'。
フェアユース:サービスレベル(ゴールド/シルバー/ブロンズ)によるテナントの優先度。
バーストバッファ:近傍の劣化のない短いバースト。
6)ペジネーション、フィルター、サンプル
カーソルベース('created_at、 id')、 'page_size' ≤ 1000。
ログ/トランザクションのタイムスライスサンプル('from'、 'to'、 'watermark')。
DSLのフィルタリング:ホワイトリストに登録された'?status=……&tenant=……®ion=……'。
一貫性ヒント: APIを報告するための'snapshot_at'/'as_of'
7)バージョン管理と互換性
SemVer: 'v1'、 'v1。1'(拡張子)、'v2'-新しいパス/名前空間のみ。
進化ルール:ウィンドウを通じて「deprecate→remove」というフィールド/値のみを追加します。
互換性テスト:「contracts-as-tests」(消費者主導)。
8)でき事、webhookおよびレシート
AsyncAPIはテーマ/ペイロード/署名について説明します。
キャプション: HMAC/EdDSA、ヘッダ'X-Signature'、 'X-Nonce'、 'X-Timestamp'(狭いウィンドウ)
領収書:'receipt_hash'と重要なイベントのDSSE署名(支払い、RTP/制限変更、価格リスト)。
Retraiとdedup: 'idempotency_key'/'event_id'によるidempotency。
DLQ/検疫:原因のある無効な/繰り返したレポート。
9)観察可能性および質
トレース:ゲートウェイ/ビジネスイベント/webhookを介して'trace_id/span_id'が必須です。
メトリクス:可用性、p50/p95/p99、エラー率、再試行率、1kあたりのコスト。
ログ:構造化、秘密/PII;'tenant/region/version'ラベル。
SLO/アラート: SLO指向の条件と自動ルーン(pause/re-route/rollback)。
10)エラーとステータスセマンティクス
2xx-成功(非同期操作の場合202)。
4xx-クライアントの障害(422-検証、409-競合/idempotency、 429-制限)。
5xx-一時的な問題。
エラー本文: 'code'、 'message'、 'trace_id'、 'hint'、 'retry_after?'.
パートナーのためのUX:エラーごとに「何をすべきか」のテーブル。
11)方針コードとして(OPA/ABAC)
一元化された承認:「who/what/where/when/why」。
Gitのポリシー、コードレビュー、CIテスト(飛行前: "ポリシーは許可されますか?»).
SoDチェック:「支払いを作成」≠「承認」。
12)セキュリティ、プライバシー、コンプライアンス
PII最小化:トークン化/マスク、承認されたジャブを介してプライマリへのアクセスのみ。
秘密:ヴォールト/KMS、短いTTL、回転;共有秘密の禁止。
暗号化:mTLS/TLS 1。3のAES-GCMの残り、適切なHSTS/PKP。
管轄に対応-地域ごとのデータ/キーのローカライズ。
監査ログ:WORM、 Merkle-slices、 DSSE-signatures。
13)操作: SLI/SLOおよびダッシュボード
SLI(例):- ルート/地域ごとの可用性。
- p95レイテンシ(読み書き)。
- Webhookの成功(領収書)、配達遅れ。
- Error-rate/Retry-rate。
- 1kリクエストとエグレスあたりのコスト。
SLO(例):99。95%の可用性;p95 ≤ 120/250ミリ秒;webhooks ≥ 99。5%/5分;P1 MTTR ≤ 60分。
14)変更管理(リリース/ロールバック)
ゲートウェイと重要なルートのためのブルーグリーン/カナリア。
No-Release動作のためのFicheflags。
スキーマとペイロードの[展開]→[マイグレート]→[コントラクト]を選択します。
Rollback Release、 Disable Flag、 Re-route、 Flush Cache。
アーティファクト:署名されたイメージ/マニフェスト、バージョンレジストリ。
15) SDKの顧客、サンドボックス
公式SDK (TS/Java/Python/Go)と同じエラーを持ち、セマンティクスをリトレイします。
テストキー/証明書とPSP/KYC/コンテンツプロバイダシミュレータを備えたサンドボックス環境。
契約テストは、CI SDK、夜間互換性に含まれています。
16)データモデル(簡略化)
'api_key' '{id、 tenant、 scopes[]、ttl、 created_by}'
'rate_plan''{テナント、クォータ{route→cap}、 burst、 priority}'
'request_log' '{trace_id、 route、 actor、 idempotency_key?、 status、 latency_ms、 region、 cost_unit}'
'webhook_receipt' '{event_id、 endpoint、 status、 attempts、 receipt_hash、 signature}'
'policy' '{version、 rules、 signer、 dsse}'
17) RACI
18)品質指標
Contract Drift: 0 「breaking」は非推奨で変更されます。
Idempotency Error Rate: ≤ 0。01%.
Webhook成功:≥ 99。5%、遅延P95 ≤ 60秒。
Auth Fail vs Abuse:悪意のあるブロックの共有、ノイズ≤ターゲットレベル。
Cost/1k:ルートとリージョン(予算/キャップアラート)による制御。
採用SDK:公式SDKを介したトラフィックの共有。
19)インシデントプレイブック
スパイク429/リミット:ゴールドのキャップを上げる、「ノイズ」キーをスロットル、パートナーとの接続。
WebhookLag:作業者/バッチを増やし、キューの優先順位を付け、オプションのWebhookを一時的にオフにします。
PriceMismatch (カタログ/FX/税):バージョン調整、キャッシュ力障害、アーティファクトロールバック、補償。
PSPの停止:ルートスイッチング、「グレー」トランザクションの隔離、リプレイ。
妥協APIキー:直ちにリコール、回転、過去30日間の監査。
20) iGaming/fintechの特異性
RTP/Limits API:集計とプロファイルのバージョンのみ;変更-領収書で。
支払い/支払い:202+署名されたwebhooks;順序キーのidempotency。
アフィリエイト:コンバージョンデッドアップ、紛争のエスクロー、署名されたレポート。
責任あるプレイ:制限とRGイベントのための「ガードレールAPI」を公開します。
21)実装チェックリスト
- 記述された契約(OpenAPI/AsyncAPI)、 CI検証およびコンシューマテスト。
- クリティカルルートのOAuth2/OIDC、スコープ、JITシークレット、mTLSを設定。
- Idempotency、 retrai、 DLQと検疫導入。
- キャップ/クォータ/優先順位とアラート。
- カーソルページネーション、'as_of'整合サンプル。
- バージョン管理と非推奨ポリシー。
- 署名/領収書、リプレイ、デッドアップを含むWebhook。
- トレース/メトリック/ログ、SLOおよびルーン。
- WORMログ、DSSE署名、Merkleスライス。
- SDK、サンドボックス、シミュレータ、コードサンプル、ハウツー。
22) FAQ
なぜ長い操作のための202か?
接続を保持しないために、webhook経由で信頼性の高いリトレイ/レシートを提供します。
OpenAPIとAsyncAPIの両方が必要ですか?
はい:コマンド/リクエストの同期、イベント/ステートネゴシエーションの非同期。
変更を破ることを避ける方法か?
Add-onlyルール、deprecate→observe→remove、 customer test contract。
領収書はどこに保管しますか?
署名が付いているWORMの地帯で;'receipt_hash'はクライアントに返され、リクエストに応じてチェックされます。
要約:APIによる操作は、契約と操作の規律です。厳格なアクセスモデルとidempotency、制限とバージョン、オブザビリティとSLO、署名と領収書。サンドボックスとSDKを追加-パートナーは迅速、安全かつ予測可能に統合し、企業は品質やコンプライアンスを損なうことなく規模を拡大します。