boardのAPIドキュメントはOpenAPIベースのドキュメントになっており、OpenAPIの定義ファイル(JSONファイル)にも対応していますが、この中でdecimal型の定義方法を変更しましたので、お知らせいたします。
なお、本変更の対象は、APIドキュメントおよびOpenAPIの定義ファイルのみです。APIそのものの仕様に変更はありません。
対象バージョン
OpenAPI定義の1.9.0から本変更が適用されています。
変更内容
変更前
type: number
format: decimal
変更後
type: string
format: decimal
pattern: 項目に応じて正規表現で定義
変更の背景
金額などの小数を含む値は、内部的にはdecimal型で管理されています。ただし、APIのリクエストおよびレスポンスで利用するJSONにはdecimal型が存在しないため、これまでOpenAPIの定義ではnumber型として表現していました。
一方で、実際のAPIレスポンスでは、JSONの数値を浮動小数点数として扱う環境においては、number型では精度の問題が発生する可能性があるため、これらの値をstring型として返却していました。
これにより、OpenAPIの定義と実際のAPIレスポンスの型が一致していない状態となり、OpenAPIの定義を利用してコードを自動生成した場合は、生成された型と実際のレスポンスの型が一致せず、型チェックエラー等が発生する可能性がありました。
この状況に対応するため、今回の変更では、実際のAPIレスポンスに合わせて、OpenAPIの定義においてもdecimal値をstring型として表現することとしました。
なお、リクエスト時のJSONについては、引き続きnumber型・string型のいずれも受け付けることができます。ただし、レスポンスとリクエストで共通のスキーマ定義を利用しているため、OpenAPIの定義上は、リクエスト側もstring型として定義されています。
この変更で影響を受ける可能性があるケース
OpenAPIの定義データを元に、ジェネレーターでプログラムを生成している場合、定義データの型が変更されたことにより、型の不一致でエラーとなる可能性があります。本変更の対象となるOpenAPI定義のバージョン1.9.0以降に差し替える場合はご注意ください。