enum 値とスキーマの型の整合性の確認

許可する enum 値がスキーマの型や他の制約も満たすことを確認してください。

説明

enum は許可する値の一覧を制限します。値は type など他の制約も同時に満たす必要があります。数値型に文字列だけを列挙すると、両方の条件を満たす値はありません。一部の値だけが型に合わない場合、その値は許可されません。

想定される影響

  • 利用者が一覧の値を送っても、型の検証に失敗する場合があります。
  • 文書や生成クライアントが、実際に受け入れられる値を誤って表す可能性があります。

対処方法

実際の API の型と許容値を確認し、enum と type を一致させてください。数字を表す文字列と数値を区別し、意図した値が他の制約も満たすことを確認してください。

例

OpenAPI 3.0 のレスポンススキーマの抜粋で、info は省略しています。変更前は数値型に文字列 "black" だけを許可するため、両方の条件を満たす応答値はありません。

変更前

json
{
  "openapi": "3.0.0",
  "paths": {
    "/": {
      "get": {
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/html": {
                "schema": {
                  "type": "number",
                  "enum": [
                    "black"
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
}

変更後

json
{
  "openapi": "3.0.0",
  "paths": {
    "/": {
      "get": {
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/html": {
                "schema": {
                  "type": "number",
                  "enum": [
                    1,
                    2,
                    3
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
}

変更後は数値の 1、2、3 を許可します。状態コード、メディアタイプ、値の一覧は実際のレスポンス仕様に合わせて選択してください。

参考資料