OpenAPI YAML バリデーター

openapi.yaml を貼り付けると、どの仕様にも必要な部分を確認します。バージョンフィールド、title と version を持つ info オブジェクト、paths オブジェクトです。また、先頭にスラッシュのないパスのキーや、認識できないオペレーションのキーについても警告します。

OpenAPI YAML ファイルの検証方法

  1. 1

    YAML をコピーする

    `openapi.yaml` または `swagger.yaml` の内容をすべてコピーします。インデントはそのまま保ってください。

  2. 2

    入力欄に貼り付ける

    OpenAPI / Swagger ドキュメントの入力欄に貼り付けます。YAML ではインデントが構造そのものなので、書き直したり整形し直したりしないでください。

  3. 3

    検証を実行する

    結果のステップに進み、エラーと警告を確認します。

  4. 4

    修正して再チェックする

    ファイル内で指摘された項目を修正し、新しいバージョンを貼り付けて再実行します。

インデントが結果に影響する理由

YAML では、キーのネストによって、どのオブジェクトにフィールドが属するかが決まります。version が info の下に一段入るべきところで、同じ階層に置かれている場合、YAML としては読めますが、info.version は欠落したものとして扱われ、そのことが報告されます。paths でも同様です。パスのキーを誤って info の下にインデントすると、トップレベルの paths オブジェクトがなくなります。

インデントには、タブではなくスペースを使い、1 階層ごとに 2 つのスペースなど一定の幅を保ってください。

実例

openapi: 3.0.3
info:
  title: Pets API
paths:
  /pets:
    get:
      summary: List pets

バージョンフィールド、info.title、paths はすべて存在し、/pets は先頭にスラッシュがあり、get は既知のメソッドです。欠けているのは 1 つだけで、info.version です。レポートには次のように表示されます。

検出内容 種別
info.version is required. エラー

info の下に、2 つのスペースでインデントして version: 1.0.0 を追加すると、ドキュメントは構造的に有効と判定されます。

確実に読み取れるよう、シンプルに保つ

このチェックは、通常の YAML マッピング、つまり一定のインデントでネストされた単純な key: value の行を最もよく読み取ります。アンカーや複数行ブロックといった高度な YAML の機能を含むドキュメントが、読めないと報告されたり、フィールドが欠けていると表示されたりする場合は、同じ仕様の JSON 版を試して、問題が内容にあるのか YAML の構文にあるのかを確かめてください。

クリーンな結果は、骨組みが正しいことを示すだけです。$ref のリンクは解決されず、スキーマも検査されません。

YAML 仕様の実践的な手順

小さな手順で編集し、そのたびに再チェックしてください。新しいパスを追加したり、ブロックを移動したりしたら、ファイルを貼り付け直して、インデントの誤りを変更がまだ新しいうちに見つけましょう。大きな仕様を複数のファイルに分割している場合は、結合したバージョンを貼り付けてください。このチェックは渡されたテキストだけを読み、ほかのファイルは読み込まないためです。描画されたページからではなく、エディターからコピーしてください。Web ページでは、スペースや引用符が見た目の似た別の文字に置き換えられることがあり、それによって YAML の読み取り方が変わってしまうことがあります。

最後に、このレポートが確認できるのは一部だけであることを覚えておいてください。YAML ファイルがクリーンであれば、トップレベルの骨組みが正しいということであり、内部のすべてのオペレーション、スキーマ、参照が正しいという意味ではありません。

よくある質問

スペースです。YAML はインデントにタブを受け付けないため、タブがあるとドキュメントが読めなくなったり、フィールドが誤った階層に移動したりすることがあります。

通常は、フィールドのインデントが誤った階層にあり、意図したものとは別のオブジェクトに属しているためです。そのインデントを親のキーと比べてみてください。

このチェックが確認するのは openapi または swagger フィールドの存在だけで、値ではありません。そのため、引用符ありでもなしでも合格します。ただし、Swagger では "2.0" と引用符で囲むことを推奨します。

はい。まず JSON として読み取られ、失敗した場合は YAML として読み取られるため、同じ欄でどちらの形式でも動作します。

関連ツール

このツールは他の言語でも利用できます

使い方ガイドと活用例