OpenAPI の JSON または YAML バージョンを比較して、削除されたオペレーション、レスポンスの変更、新たに必須になった入力、レビューが必要なスキーマ変更を検出します。
ブラウザ内でローカルに実行破壊的変更ラベルは、削除されたオペレーション、削除されたレスポンス、新たに必須になった入力に注目します。スキーマ変更は互換性がクライアントに依存するため、レビュー対象としてフラグが付けられます。
この差分を迅速なコントラクトレビューとして使い、バージョン管理された API テストで利用者への影響を確認してください。外部参照やリモートファイルは、このローカルチェッカーでは解決されません。
公開済みの仕様を「Earlier specification」に、提案中の仕様を「Updated specification」に貼り付け、「仕様を比較」を押します。どちらの欄も JSON と YAML に対応し、2 つのドキュメントはブラウザ内にとどまります。アップロード・取得・実行は行われません。
結果は重要度ごとに整理されたレビュー用レポートで、各項目に JSON Pointer が付くため、新しいドキュメントのどの位置の変更かをたどれます。
操作の削除、必須パラメーターの削除、任意パラメーターの必須化、必須パラメーターの追加、リクエストボディの必須化は DANGER として並びます。既存の呼び出し元が依存しうるため、レスポンスステータスの削除とリクエストのコンテンツタイプ削除も同様です。
スキーマの変更は DANGER ではなく WARNING です。クライアントを壊すかどうかはクライアント次第だからです。対象はパラメーター・リクエスト・レスポンスのスキーマ変更、コンポーネントスキーマの削除や編集、任意パラメーターの削除です。共有コンポーネントの編集は /components/schemas/<名前> として報告され、生成された定義では破壊的変更がここに現れます。
スキーマ比較では required、enum、type、allOf、anyOf、oneOf を集合として扱うため、並び順だけが変わった再生成ドキュメントは変更として報告されません。
操作はメソッドとパスで突き合わせます。そのためパスパラメーターの名前変更は、1 件の編集ではなく「削除された操作 + 追加された操作」として現れます。同一ドキュメント内の参照(#/components/...)は比較前に解決します。外部参照やリモート参照は取得しないため、別ファイルにしか存在しないパラメーターやスキーマは書かれている内容のまま比較されます。
Swagger 2.0 のドキュメントも同じ方法で比較します(パス・操作・パラメーター・レスポンスの読み方が同じため)。servers、セキュリティ要件、タグ、説明、examples は比較対象外です。
各項目には重要度(DANGER、WARNING、INFO、GOOD)、対象要素の JSON Pointer、変更内容の説明が付きます。pointer 内の ~1 はパス中のスラッシュを表すため、/paths/~1users/get は GET /users を指します。
空の入力欄はその旨が表示され、JSON または YAML として不正なドキュメントは失敗した行を示して拒否されるので、壊れた貼り付けが「差分なし」に見えることはありません。