OpenAPI 2.0 オブジェクトの必須プロパティの不足

オブジェクトの種類と条件に応じた必須プロパティを記載してください。

説明

OpenAPI 2.0 オブジェクトの必須プロパティが欠けていると、仕様書の検証や文書・クライアントの生成に支障が生じる場合があります。必要なプロパティはオブジェクトの種類と設定によって異なります。

例えば info には title と version が必要です。本文のパラメーターには schema、本文以外のパラメーターには type が必要です。セキュリティ定義の必須プロパティも認証方式によって異なります。

想定される影響

  • 仕様書の検証やコード生成が失敗する可能性があります。
  • 入力や応答の定義が不完全だと、API の利用者と実装者で解釈が異なる可能性があります。

対処方法

OpenAPI 2.0 で各オブジェクトに必要なプロパティと条件を確認し、実際の API に合う値を追加してください。任意の値で埋めずに文書と実装を一致させ、修正後の仕様書を検証してください。

例

最初の文書には info.version と、query パラメーターの type がありません。

変更前

json
{
  "swagger": "2.0",
  "info": {
    "title": "Simple API Overview"
  },
  "paths": {
    "/": {
      "get": {
        "operationId": "listVersionsv2",
        "summary": "List API versions",
        "responses": {
          "200": {
            "description": "200 response"
          }
        }
      }
    }
  },
  "parameters": {
    "limitParam": {
      "name": "limit",
      "in": "query",
      "description": "max records to return",
      "required": true
    }
  }
}

変更後

json
{
  "swagger": "2.0",
  "info": {
    "title": "Simple API Overview",
    "version": "1.0.0"
  },
  "paths": {
    "/": {
      "get": {
        "operationId": "listVersionsv2",
        "summary": "List API versions",
        "responses": {
          "200": {
            "description": "200 response"
          }
        }
      }
    }
  },
  "parameters": {
    "limitParam": {
      "name": "limit",
      "in": "query",
      "description": "max records to return",
      "required": true,
      "type": "string"
    }
  }
}

変更後は両方の必須プロパティを追加しています。実際のパラメーターの型と API のバージョンに合う値を使用してください。

参考資料