スキーマの最小値が最大値を超えている

数値、文字列長、配列要素数の最小値が、対応する最大値を超えないようにしてください。

説明

数値スキーマの minimum は下限、maximum は上限です。minimum が maximum より大きいと、条件を満たす数値はありません。文字列の minLength と maxLength、配列の minItems と maxItems も同じ矛盾がないか確認する必要があります。

想定される影響

  • 本来は適切なデータでも、範囲の制約に違反する場合があります。
  • クライアントとサーバーが誤った範囲を実装し、連携エラーにつながる可能性があります。

対処方法

各最小値が対応する最大値以下になるよう、実際の業務上の制約に合わせて修正してください。数値の両端が等しい場合は、exclusiveMinimum や exclusiveMaximum がその値を除外していないかも確認してください。

例

OpenAPI 3.0 の数値スキーマの抜粋です。info と paths は省略しています。変更前は code に 3 以上かつ 1 以下の整数を要求しています。

変更前

json
{
  "openapi": "3.0.0",
  "components": {
    "schemas": {
      "GeneralError": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "minimum": 3,
            "maximum": 1
          }
        }
      }
    }
  }
}

変更後

json
{
  "openapi": "3.0.0",
  "components": {
    "schemas": {
      "GeneralError": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "minimum": 0,
            "maximum": 50
          }
        }
      }
    }
  }
}

変更後は 0 から 50 までの整数を許可します。この範囲は例示であり、実際のコード値の仕様に合わせて設定してください。

参考資料