From a5ac465ab59197a55a222d30ebd2cf26ffe80f86 Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Mon, 21 Sep 2026 09:27:09 +0800 Subject: Fix F# option JSON serialization in confirmation/positions API responses Giraffe 6's default Newtonsoft serializer wrapped F# Some values as Value/IsSome/IsNone objects, breaking the confirmation and positions response contract (amounts must be exact decimal strings, absent fields null, quote object-or-null). Add OptionJsonConverter plus a shared serializer registration applied to both the Kestrel host and the in-process test fixture, and cover confirmation/positions over real HTTP including pending, conflict, cross-fund and Kestrel restart-replay regressions. --- src/FundLab.Api/Program.fs | 1 + 1 file changed, 1 insertion(+) (limited to 'src/FundLab.Api/Program.fs') diff --git a/src/FundLab.Api/Program.fs b/src/FundLab.Api/Program.fs index d4f2c76..b7d0ef6 100644 --- a/src/FundLab.Api/Program.fs +++ b/src/FundLab.Api/Program.fs @@ -13,6 +13,7 @@ let private requiredEnvironment name = [] let main argv = let builder = WebApplication.CreateBuilder(argv) + builder.Services |> App.addOptionFriendlyJson |> ignore builder.Services.AddGiraffe() |> ignore let repository = FundRepository(requiredEnvironment "FUND_LAB_DATABASE_URL") repository.EnsureSchema() -- cgit v1.2.3