Skip to content

ops(openapi): $ref + sibling description (OAS 3.1) のツール互換性検証 (PR #179 follow-up) #184

Description

@win2cot

背景

PR #179(OpenAPI v1.4.4)で、Conflict / NotFound レスポンスを $ref + sibling description パターンで上書きする方式を採用した。これは OpenAPI 3.1 仕様(JSON Schema 2020-12 採用)で正式に valid な記法だが、ツール側のサポートは不均一:

  • OpenAPI 3.0.x では $ref の兄弟キーは無視される(後方互換性のため)
  • Swagger UI / Redoc / openapi-generator / spectral lint 等のバージョンによって、3.1 の sibling description を正しく扱うかは異なる

PR #179 のレビューで「ツール互換性事前確認推奨」が継続的に指摘された(計 3 回)。本フェーズはドキュメントのみで実害なしだが、Sprint 0 実装フェーズでクライアントコード生成 / API ドキュメント公開を行う段階で検証必須。

やること(Sprint 0 実装フェーズで対応)

主要ツールで本リポジトリの api/openapi.yaml(v1.4.4 以降)を実際に通し、sibling description が期待どおり上書き表示されるか検証する。

検証対象(候補)

  • Swagger UI: API ドキュメント表示で description が各エンドポイントの具体的シナリオに上書きされているか
  • Redoc: 同上
  • openapi-generator(Java/TypeScript クライアント): 生成されたエラー型・docstring に description が反映されているか
  • spectral lint: 仕様違反としてフラグされないか(本来は valid)
  • swagger-cli validate: パース通過確認

検証結果による分岐

  • 主要ツールで上書き機能が動作 → 現状の記法を維持
  • 一部ツールで上書き無視 → 別 PR で代替記法に切り替え:
    • 候補 1: 各エンドポイントで $ref を使わず完全インライン化(冗長だが互換性確保)
    • 候補 2: description 部分だけ別パターン(例: responses の summary 等)

受け入れ条件

  • 主要ツール 3 種以上で動作確認結果が記録されている
  • 結果に応じた対応方針(現状維持 / 代替記法切替)が文書化されている
  • 必要なら別 PR で OpenAPI 改訂

参照

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/ci.github/workflows / CI/CD パイプライン変更area/openapiOpenAPI 仕様(api/openapi.yaml)変更priority/p2Medium。完了が望ましいが柔軟に判断可

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions