数値形式が型と一致しない(OpenAPI 3.0)

標準の数値形式とスキーマの型が一致していない状態

説明

標準の数値 format は、スキーマの type と意味が一致している必要があります。int32 と int64 は integer に、float と double は number に使用します。format は省略でき、独自の形式も指定できます。

想定される影響

型と形式が矛盾している場合や、利用するツールが形式をサポートしていない場合は、SDKのモデル、検証、シリアライズの結果が想定と異なる可能性があります。

対処方法

実際のデータに合う type と標準の format の組み合わせを選んでください。独自の形式が必要な場合は、コード生成ツールとバリデーターが一貫して扱えることを確認してください。

例

次のOpenAPI 3.0の抜粋では、id の形式を integer に対応する int64 に、percentage の形式を number に対応する float に修正しています。

変更前

json
{
  "openapi": "3.0.0",
  "components": {
    "schemas": {
      "MyObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "double"
          },
          "percentage": {
            "type": "number",
            "format": "int32"
          }
        }
      }
    }
  }
}

変更後

json
{
  "openapi": "3.0.0",
  "components": {
    "schemas": {
      "MyObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "percentage": {
            "type": "number",
            "format": "float"
          }
        }
      }
    }
  }
}

参考資料