From 0a9def019488b13cd609bce8f42ffe96c58ef9f8 Mon Sep 17 00:00:00 2001 From: ell-hol Date: Sat, 20 Jun 2026 11:25:15 +0200 Subject: [PATCH] Fix default string serialization in request marshaling --- internal/utils/json.go | 4 +++ models/components/responsesrequest_test.go | 33 ++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 models/components/responsesrequest_test.go diff --git a/internal/utils/json.go b/internal/utils/json.go index a5a64183..da8de7a4 100644 --- a/internal/utils/json.go +++ b/internal/utils/json.go @@ -444,6 +444,10 @@ func handleDefaultConstValue(tagValue string, val interface{}, tag reflect.Struc return []byte(fmt.Sprintf("%q", tagValue)) } } + + if !json.Valid([]byte(tagValue)) { + return []byte(fmt.Sprintf("%q", tagValue)) + } return []byte(tagValue) } diff --git a/models/components/responsesrequest_test.go b/models/components/responsesrequest_test.go new file mode 100644 index 00000000..fac81403 --- /dev/null +++ b/models/components/responsesrequest_test.go @@ -0,0 +1,33 @@ +package components_test + +import ( + "bytes" + "encoding/json" + "testing" + + openrouter "github.com/OpenRouterTeam/go-sdk" + "github.com/OpenRouterTeam/go-sdk/models/components" +) + +func TestResponsesRequestMarshalWithoutServiceTier(t *testing.T) { + req := components.ResponsesRequest{ + Input: openrouter.Pointer( + components.CreateInputsUnionStr("Hey there"), + ), + Model: openrouter.Pointer("openai/gpt-4o-mini"), + Stream: openrouter.Bool(false), + } + + b, err := json.Marshal(req) + if err != nil { + t.Fatalf("marshal failed: %v", err) + } + + if !json.Valid(b) { + t.Fatalf("invalid JSON: %s", string(b)) + } + + if !bytes.Contains(b, []byte(`"service_tier":"auto"`)) { + t.Fatalf("expected service_tier default to be marshaled as string auto, got: %s", string(b)) + } +}