Skip to content

chore: 🐝 Update SDK - Generate SDK 0.5.1#303

Open
mattapperson wants to merge 1 commit into
mainfrom
speakeasy-sdk-regen-1782140576
Open

chore: 🐝 Update SDK - Generate SDK 0.5.1#303
mattapperson wants to merge 1 commit into
mainfrom
speakeasy-sdk-regen-1782140576

Conversation

@mattapperson

@mattapperson mattapperson commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

SDK update

Versioning

Version Bump Type: [patch] - 🤖 (automated)

Tip

If updates to your OpenAPI document introduce breaking changes, be sure to update the info.version field to trigger the correct version bump.
Speakeasy supports manual control of SDK versioning through multiple methods.

Go SDK Changes:

  • OpenRouter.Benchmarks.GetBenchmarks(): Added
  • OpenRouter.Images.Generate(): Added
  • OpenRouter.Images.ListModels(): Added
  • OpenRouter.Images.ListModelEndpoints(): Added
  • OpenRouter.Workspaces.ListBudgets(): Added
  • OpenRouter.Workspaces.DeleteBudget(): Added
  • OpenRouter.Workspaces.SetBudget(): Added
  • OpenRouter.Datasets.GetBenchmarksArtificialAnalysis(): Removed (Breaking ⚠️)
  • OpenRouter.Datasets.GetBenchmarksDesignArena(): Removed (Breaking ⚠️)
  • OpenRouter.Beta.Analytics.QueryAnalytics(): response.Data.Warnings Added
  • OpenRouter.Beta.Responses.Send():
    • request.ResponsesRequest Changed
    • response Changed
  • OpenRouter.Chat.Send():
    • request.ChatRequest Changed
    • response Changed
  • OpenRouter.Embeddings.Generate(): response.Usage Changed
  • OpenRouter.Embeddings.ListModels(): response.Data[].Reasoning Added
  • OpenRouter.Models.Get(): response.Data.Reasoning Added
  • OpenRouter.Models.List(): response.Data[].Reasoning Added
  • OpenRouter.Models.ListForUser(): response.Data[].Reasoning Added
  • OpenRouter.Presets.CreatePresetsChatCompletions(): request.ChatRequest Changed
  • OpenRouter.Presets.CreatePresetsMessages(): request.MessagesRequest Changed
  • OpenRouter.Presets.CreatePresetsResponses(): request.ResponsesRequest Changed

View full SDK changelog

OpenAPI Change Summary
├─┬Paths
│ ├──[-] path (23924:3)❌ 
│ ├──[-] path (23840:3)❌ 
│ ├──[+] path (32994:3)
│ ├──[+] path (33058:3)
│ ├──[+] path (27324:3)
│ ├──[+] path (27466:3)
│ ├──[+] path (27512:3)
│ ├──[+] path (23717:3)
│ ├─┬/analytics/query
│ │ └─┬POST
│ │   ├─┬Responses
│ │   │ └─┬200
│ │   │   └─┬application/json
│ │   │     └─┬Schema
│ │   │       └─┬data
│ │   │         └──[+] properties (23103:23)
│ │   └─┬Requestbody
│ │     └─┬application/json
│ │       └─┬Schema
│ │         ├─┬dimensions
│ │         │ └─┬Schema
│ │         │   └──[🔀] description (22976:34)
│ │         └─┬filters
│ │           └─┬Schema
│ │             ├─┬value
│ │             │ └──[🔀] description (23003:38)
│ │             └─┬field
│ │               └──[🔀] description (22985:38)
│ ├─┬/embeddings
│ │ └─┬POST
│ │   └─┬Responses
│ │     └─┬200
│ │       └─┬application/json
│ │         └─┬Schema
│ │           └─┬usage
│ │             ├──[+] properties (25203:23)
│ │             ├──[+] properties (25225:23)
│ │             ├─┬prompt_tokens_details
│ │             │ ├──[🔀] type (25227:31)❌ 
│ │             │ ├──[🔀] description (25226:38)
│ │             │ ├──[-] properties (24356:27)❌ 
│ │             │ ├──[-] properties (24359:27)❌ 
│ │             │ ├──[-] properties (24362:27)❌ 
│ │             │ ├──[-] properties (24366:27)❌ 
│ │             │ └──[-] properties (24370:27)❌ 
│ │             ├─┬prompt_tokens
│ │             │ ├──[+] required (25222:29)❌ 
│ │             │ ├──[+] required (25223:29)❌ 
│ │             │ ├──[🔀] type (25224:31)❌ 
│ │             │ ├──[🔀] description (25204:38)
│ │             │ ├──[+] nullable (25209:35)❌ 
│ │             │ ├──[🔀] example (25206:27)
│ │             │ ├──[+] properties (25211:27)
│ │             │ ├──[+] properties (25214:27)
│ │             │ └──[+] properties (25218:27)
│ │             └─┬total_tokens
│ │               └──[🔀] description (25229:38)
│ └─┬/models
│   └─┬GET
│     └─┬Responses
│       └─┬200
│         └─┬application/json
│           └──[🔀] example (29542:17)
├─┬Tags
│ └──[+] Benchmarks (33408:5)
├─┬Tags
│ └──[+] Images (33426:5)
└─┬Components
  ├──[-] schemas (3732:7)❌ 
  ├──[-] schemas (3761:7)❌ 
  ├──[-] schemas (3924:7)❌ 
  ├──[-] schemas (3689:7)❌ 
  ├──[-] schemas (3851:7)❌ 
  ├──[-] schemas (3623:7)❌ 
  ├──[-] schemas (3642:7)❌ 
  ├──[+] schemas (21068:7)
  ├──[+] schemas (9817:7)
  ├──[+] schemas (10751:7)
  ├──[+] schemas (9787:7)
  ├──[+] schemas (9605:7)
  ├──[+] schemas (6914:7)
  ├──[+] schemas (9668:7)
  ├──[+] schemas (20972:7)
  ├──[+] schemas (9724:7)
  ├──[+] schemas (7215:7)
  ├──[+] schemas (9502:7)
  ├──[+] schemas (20918:7)
  ├──[+] schemas (9863:7)
  ├──[+] schemas (9628:7)
  ├──[+] schemas (12799:7)
  ├──[+] schemas (18871:7)
  ├──[+] schemas (9690:7)
  ├──[+] schemas (4026:7)
  ├──[+] schemas (9830:7)
  ├──[+] schemas (1152:7)
  ├──[+] schemas (3644:7)
  ├──[+] schemas (20634:7)
  ├──[+] schemas (9194:7)
  ├──[+] schemas (21587:7)
  ├──[+] schemas (9224:7)
  ├──[+] schemas (21575:7)
  ├──[+] schemas (21124:7)
  ├──[+] schemas (22603:7)
  ├──[+] schemas (9081:7)
  ├──[+] schemas (20899:7)
  ├──[+] schemas (9347:7)
  ├──[+] schemas (22552:7)
  ├──[+] schemas (7033:7)
  ├─┬WebSearchServerTool
  │ └─┬max_results
  │   └──[🔀] description (22297:24)
  ├─┬ObservabilityArizeDestination
  │ └─┬config
  │   └─┬modelId
  │     └──[+] description (13082:28)
  ├─┬Inputs
  │ └─┬ANYOF
  │   └─┬Schema
  │     ├──[+] anyOf (10315:7)
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (16085:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (15719:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (16954:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (10802:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (10863:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (19808:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (19855:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (10980:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (10890:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (10918:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (10945:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (6788:20)❌ 
  │     ├─┬ANYOF
  │     │ └──[🔀] $ref (6822:9)❌ 
  │     └─┬ANYOF
  │       └──[🔀] $ref (5697:20)❌ 
  ├─┬ReasoningEffort
  │ └──[+] enum (19105:11)
  ├─┬ChatUsage
  │ ├──[🔀] example (5410:9)
  │ ├──[+] properties (5481:9)
  │ └─┬total_tokens
  │   ├──[🔀] type (5499:17)❌ 
  │   ├──[🔀] description (5482:24)
  │   ├──[+] nullable (5483:21)❌ 
  │   ├──[+] properties (5485:13)
  │   ├──[+] properties (5489:13)
  │   └──[+] properties (5494:13)
  ├─┬Preview_20250311_WebSearchServerTool
  │ └─┬max_results
  │   └──[🔀] description (17613:24)
  ├─┬ResponsesRequest
  │ ├──[+] properties (19471:9)
  │ ├─┬previous_response_id
  │ │ ├──[🔀] type (19543:17)❌ 
  │ │ └──[+] format (19541:19)❌ 
  │ ├─┬models
  │ │ ├──[-] items (18967:13)❌ 
  │ │ └──[🔀] type (19506:17)❌ 
  │ ├─┬stream
  │ │ └──[+] const (19581:18)❌ 
  │ ├─┬store
  │ │ └──[🔀] $ref (20027:20)❌ 
  │ ├─┬tool_choice
  │ │ └──[🔀] $ref (20709:9)❌ 
  │ ├─┬service_tier
  │ │ ├──[-] enum (19022:15)❌ 
  │ │ ├──[-] enum (19023:15)❌ 
  │ │ ├──[-] enum (19024:15)❌ 
  │ │ ├──[-] enum (19025:15)❌ 
  │ │ ├──[-] enum (19026:15)❌ 
  │ │ ├──[-] enum (19027:15)❌ 
  │ │ ├──[-] default (19020:20)❌ 
  │ │ └─┬Extensions
  │ │   └──[-] x-speakeasy-unknown-values (19030:39)❌ 
  │ ├─┬top_p
  │ │ ├──[🔀] type (19650:17)❌ 
  │ │ └──[-] format (19110:19)❌ 
  │ ├─┬trace
  │ │ └──[🔀] $ref (19652:11)❌ 
  │ ├─┬parallel_tool_calls
  │ │ ├──[+] items (19509:13)❌ 
  │ │ ├──[🔀] type (19510:17)❌ 
  │ │ └──[-] nullable (18970:21)❌ 
  │ ├─┬frequency_penalty
  │ │ └──[🔀] $ref (4318:20)❌ 
  │ ├─┬modalities
  │ │ └──[🔀] $ref (19276:9)❌ 
  │ ├─┬reasoning
  │ │ └──[🔀] $ref (18289:29)❌ 
  │ ├─┬provider
  │ │ └──[🔀] $ref (19550:11)❌ 
  │ ├─┬plugins
  │ │ ├──[-] items (18975:13)❌ 
  │ │ ├──[🔀] type (19513:17)❌ 
  │ │ ├──[-] description (18973:24)
  │ │ └──[+] nullable (19512:21)❌ 
  │ ├─┬safety_identifier
  │ │ └──[🔀] $ref (7057:19)❌ 
  │ ├─┬instructions
  │ │ └──[🔀] $ref (10116:9)❌ 
  │ ├─┬include
  │ │ └──[🔀] $ref (9067:9)❌ 
  │ ├─┬tools
  │ │ └──[🔀] $ref (15272:9)❌ 
  │ ├─┬metadata
  │ │ └──[🔀] $ref (19493:11)❌ 
  │ ├─┬image_config
  │ │ └──[🔀] $ref (19474:11)❌ 
  │ ├─┬temperature
  │ │ ├──[🔀] type (19586:17)❌ 
  │ │ ├──[-] format (19046:19)❌ 
  │ │ ├──[+] default (19585:20)❌ 
  │ │ └──[-] nullable (19047:21)❌ 
  │ ├─┬model
  │ │ ├──[+] items (19503:13)❌ 
  │ │ ├──[🔀] type (19504:17)❌ 
  │ │ ├──[+] description (19498:24)
  │ │ └──[+] example (19500:13)
  │ ├─┬text
  │ │ └──[🔀] $ref (19588:11)❌ 
  │ ├─┬truncation
  │ │ └──[🔀] $ref (20832:9)❌ 
  │ ├─┬max_output_tokens
  │ │ └──[🔀] type (19488:17)❌ 
  │ ├─┬route
  │ │ └──[🔀] $ref (18975:9)❌ 
  │ ├─┬user
  │ │ └──[🔀] $ref (15324:9)❌ 
  │ ├─┬session_id
  │ │ ├──[+] enum (19568:15)
  │ │ ├──[+] enum (19569:15)
  │ │ ├──[+] enum (19564:15)
  │ │ ├──[+] enum (19565:15)
  │ │ ├──[+] enum (19566:15)
  │ │ ├──[+] enum (19567:15)
  │ │ ├──[-] maxLength (19034:22)❌ 
  │ │ ├──[-] description (19032:24)
  │ │ ├──[+] default (19562:20)❌ 
  │ │ ├──[+] nullable (19570:21)❌ 
  │ │ └─┬Extensions
  │ │   └──[+] x-speakeasy-unknown-values (19572:39)
  │ ├─┬presence_penalty
  │ │ ├──[+] items (19517:13)❌ 
  │ │ ├──[🔀] type (19539:17)❌ 
  │ │ ├──[-] format (18999:19)❌ 
  │ │ ├──[+] description (19515:24)
  │ │ └──[-] nullable (19000:21)❌ 
  │ ├─┬top_logprobs
  │ │ └──[-] nullable (19107:21)❌ 
  │ ├─┬prompt_cache_key
  │ │ └──[🔀] $ref (20142:9)❌ 
  │ ├─┬stop_server_tools_when
  │ │ └──[🔀] $ref (19574:11)❌ 
  │ ├─┬input
  │ │ └──[🔀] $ref (19480:11)❌ 
  │ ├─┬top_k
  │ │ ├──[+] items (19597:13)❌ 
  │ │ └──[🔀] type (19645:17)❌ 
  │ └─┬prompt
  │   └──[🔀] $ref (19545:11)❌ 
  ├─┬WebSearchServerToolConfig
  │ └─┬max_results
  │   └──[🔀] description (22354:24)
  ├─┬StreamEvents
  │ ├──[+] oneOf (6914:7)
  │ └──Discriminator
  ├─┬ChatWebSearchShorthand
  │ └─┬max_results
  │   └──[🔀] description (5559:24)
  ├─┬ChatRequest
  │ ├─┬reasoning_effort
  │ │ └──[+] enum (4789:15)
  │ └─┬reasoning
  │   └─┬effort
  │     └──[+] enum (4770:19)
  ├─┬AdvisorReasoning
  │ └─┬effort
  │   └──[+] enum (171:15)
  ├─┬SubagentReasoning
  │ └─┬effort
  │   └──[+] enum (20562:15)
  ├─┬FusionPlugin
  │ ├──[+] properties (8134:9)
  │ └─┬tools
  │   ├──[+] enum (8138:15)
  │   ├──[+] enum (8139:15)
  │   ├──[-] items (8334:13)❌ 
  │   ├──[🔀] type (8141:17)❌ 
  │   ├──[-] maxItems (8370:21)❌ 
  │   ├──[🔀] description (8135:24)
  │   ├──[🔀] example (8140:20)
  │   └─┬Extensions
  │     └──[+] x-speakeasy-unknown-values (8142:39)
  ├─┬ProviderOptions
  │ └──[🔀] description (17782:20)
  ├─┬Preview_WebSearchServerTool
  │ └─┬max_results
  │   └──[🔀] description (17638:24)
  ├─┬FusionServerToolConfig
  │ ├──[+] properties (8233:9)
  │ ├─┬max_tool_calls
  │ │ ├──[-] maximum (8423:20)❌ 
  │ │ ├──[-] minimum (8424:20)❌ 
  │ │ ├──[🔀] description (8236:24)
  │ │ └──[🔀] example (8238:20)
  │ ├─┬reasoning
  │ │ └─┬effort
  │ │   └──[+] enum (8259:19)
  │ ├─┬max_completion_tokens
  │ │ └──[🔀] $ref (502:20)❌ 
  │ ├─┬temperature
  │ │ ├──[🔀] type (8272:17)❌ 
  │ │ ├──[-] format (8455:19)❌ 
  │ │ ├──[🔀] description (8253:24)
  │ │ ├──[-] example (8454:20)
  │ │ ├──[+] properties (8256:13)
  │ │ └──[+] properties (8268:13)
  │ ├─┬tools
  │ │ ├──[-] items (8467:13)❌ 
  │ │ ├──[🔀] type (8278:17)❌ 
  │ │ ├──[+] format (8277:19)❌ 
  │ │ ├──[-] maxItems (8479:21)❌ 
  │ │ ├──[🔀] description (8274:24)
  │ │ └──[🔀] example (8276:20)
  │ └─┬model
  │   ├──[🔀] type (8246:17)❌ 
  │   ├──[+] maximum (8244:20)❌ 
  │   ├──[+] minimum (8245:20)❌ 
  │   ├──[🔀] description (8241:24)
  │   └──[🔀] example (8243:20)
  ├─┬WebSearchConfig
  │ └─┬max_results
  │   └──[🔀] description (22167:24)
  ├─┬AnthropicDocumentBlockParam
  │ └─┬source
  │   └──[+] oneOf (1152:7)
  ├─┬Model
  │ ├──[🔀] example (12536:9)
  │ ├──[+] properties (12632:9)
  │ ├─┬supported_parameters
  │ │ └──[🔀] $ref (12799:20)❌ 
  │ ├─┬supported_voices
  │ │ ├──[🔀] description (12635:24)
  │ │ ├──[-] nullable (12163:21)❌ 
  │ │ ├──[-] example (12160:20)
  │ │ └─┬Schema
  │ │   └──[🔀] $ref (17135:9)❌ 
  │ └─┬top_provider
  │   └──[🔀] $ref (12640:11)❌ 
  └─┬Legacy_WebSearchServerTool
    └─┬max_results
      └──[🔀] description (10412:24)
Document Element Total Changes Breaking Changes
components 193 100
paths 32 12
tags 2 0

View full report

Linting Report 0 errors, 1 warnings, 0 hints

View full report

GO CHANGELOG

core: 3.13.40 - 2026-03-23

🐛 Bug Fixes

  • reserve baseURL as an SDK keyword to prevent request body name collisions (commit by @danielkov)

core: 3.13.39 - 2026-03-23

🐛 Bug Fixes

  • avoid data variable redeclaration in union UnmarshalJSON when member type is named Data (commit by @danielkov)

core: 3.13.38 - 2026-03-23

🐛 Bug Fixes

  • normalize float literals in generated Go usage examples to ensure valid syntax (commit by @danielkov)

core: 3.13.37 - 2026-03-23

🐛 Bug Fixes

  • return nil for response-stream zero values instead of invalid composite literal (commit by @danielkov)

core: 3.13.36 - 2026-03-12

🐛 Bug Fixes

  • reserve s as an SDK keyword to prevent path parameter name collisions (commit by @danielkov)

core: 3.13.35 - 2026-03-12

🐛 Bug Fixes

  • avoid double-pointer wrapping for nullable optional const getters (commit by @danielkov)

core: 3.13.34 - 2026-03-11

🐛 Bug Fixes

  • resolve field/method name collision when property name starts with Get (commit by @danielkov)

core: 3.13.23 - 2026-03-11

🐛 Bug Fixes

  • use go run instead of go install for staticcheck to avoid toolchain version mismatch (commit by @danielkov)

core: 3.13.21 - 2026-03-04

🐛 Bug Fixes

  • include global security in SDK Example Usage snippets and per-operation docs (commit by @mfbx9da4)

core: 3.13.20 - 2026-02-27

🐛 Bug Fixes

  • make serverURL optional when operations define their own servers (commit by @danielkov)

core: 3.13.19 - 2026-02-27

🐛 Bug Fixes

  • derive installation URL from repo URL for monorepo subdirectory support (commit by @bradcypert)

core: 3.13.33 - 2026-02-24

🐛 Bug Fixes

  • prevent duplicate enum values after name normalization in generated Go models (commit by @danielkov)

core: 3.13.22 - 2026-02-24

🐛 Bug Fixes

  • deduplicate OAuth2 password security operations to prevent duplicate getCredentials methods (commit by @danielkov)

core: 3.13.17 - 2026-02-23

🐛 Bug Fixes

  • prevent model file name collisions with reserved SDK package names (commit by @danielkov)

core: 3.13.16 - 2026-02-21

🐛 Bug Fixes

  • prevent model file name collisions with reserved SDK package names (commit by @danielkov)

core: 3.13.15 - 2026-02-19

🐛 Bug Fixes

  • defer res.Body.Close in ConsumeRawBody to prevent resource leaks on error (commit by @vishalg0wda)

core: 3.13.14 - 2026-02-18

🐛 Bug Fixes

  • deduplicate OAuth2 scope enum members, handle pointer result fields in flat response format, truncate long filenames (commit by @danielkov)

core: 3.13.13 - 2026-02-18

🐛 Bug Fixes

  • close HTTP response body for no-content responses to prevent connection pool exhaustion (commit by @vishalg0wda)

core: 3.13.12 - 2026-01-29

🐛 Bug Fixes

  • avoid overwriting SubSDK comments with empty comments when same SubSDK is referenced by multiple tags (commit by @mfbx9da4)

core: 3.13.11 - 2026-01-23

🐛 Bug Fixes

  • discriminated union errors used in both successful and error response (commit by @mfbx9da4)

core: 3.13.10 - 2026-01-11

🐛 Bug Fixes

  • handle integer:string tags in nested structs without custom MarshalJSON/UnmarshalJSON (commit by @tristanspeakeasy)

core: 3.13.9 - 2026-01-07

🐛 Bug Fixes

  • properly escape quotes in struct tags when defaults contain backticks (commit by @mfbx9da4)

core: 3.13.8 - 2026-01-03

🐛 Bug Fixes

  • union query parameters now inherit the parent's parameter name when using inline serialization (commit by @subomi)

core: 3.13.7 - 2025-12-18

🐛 Bug Fixes

  • fixed escaping of template braces in defaults, consts, and comments (commit by @tristanspeakeasy)

core: 3.13.6 - 2025-12-02

🐛 Bug Fixes

  • do not enforce required fields unless gen.yaml explicitly defines it or union strategy depends on it (commit by @mfbx9da4)

core: 3.13.4 - 2025-11-25

🐝 New Features

  • allow inclusion of empty array query parameter (commit by @idbentley)

core: 3.13.3 - 2025-11-24

🐝 New Features

  • union discriminators are inferred for oneOfs missing the explicit OpenAPI discriminator mapping. Configure via inferUnionDiscriminators: true in gen.yaml (commit by @mfbx9da4)

core: 3.13.2 - 2025-11-10

🐛 Bug Fixes

  • handle application/* encoding in multipart forms (commit by @danielkov)

core: 3.13.5 - 2025-11-06

🐛 Bug Fixes

  • multi-part arrays now serialized according to RFC7578 (commit by @danielkov)

core: 3.13.1 - 2025-11-05

🐝 New Features

  • support body field name configuration via requestBodyFieldName in gen.yaml (commit by @subomi)

core: 3.12.1 - 2025-10-30

🐛 Bug Fixes

  • make security scheme resolution case-insensitive (commit by @vishalg0wda)

core: 3.13.0 - 2025-10-24

🐝 New Features

  • add configuration option for empty object serialization in Go SDKs (commit by @BlakeTheAwesome)

core: 3.12.0 - 2025-10-13

🐝 New Features

  • add config option for deep merging allOf nodes in OpenAPI specs (commit by @BlakeTheAwesome)

core: 3.11.1 - 2025-09-23

🐛 Bug Fixes

  • allow input/output models without suffixes (commit by @disintegrator)

core: 3.11.0 - 2025-09-17

🐝 New Features

  • Support Go module vendoring during compilation (commit by @bflad)

core: 3.10.1 - 2025-09-15

🔧 Chores

  • properly populate form values for union types (commit by @subomi)

core: 3.9.7 - 2025-09-10

🐛 Bug Fixes

core: 3.10.0 - 2025-09-09

🐝 New Features

  • add support for Go module retractions in go.mod (commit by @AshGodfrey)

core: 3.9.6 - 2025-09-02

🐛 Bug Fixes

  • enabled empty strings to be used as end cursor values in pagination (commit by @GorshkovIvan)

core: 3.9.5 - 2025-09-01

🔧 Chores

  • added support for lowercase Bearer tokens in Authorization headers (commit by @GorshkovIvan)

core: 3.9.4 - 2025-08-27

🔧 Chores

  • fixed go target to respect required fields instead of using zero values (commit by @subomi)

core: 3.9.3 - 2025-07-31

🐛 Bug Fixes

  • Always prefer generation configuration for README installation instructions (commit by @bflad)

core: 3.9.2 - 2025-07-31

🐛 Bug Fixes

  • Ensure empty string modulePath and packageName pass configuration validation (commit by @bflad)

core: 3.9.1 - 2025-07-24

🔧 Chores

core: 3.9.0 - 2025-07-15

🐝 New Features

  • Support modulePath, sdkPackageAlias, and sdkPackageName configurations (commit by @bflad)

core: 3.8.1 - 2025-06-09

🐛 Bug Fixes

core: 3.8.0 - 2025-06-05

🐝 New Features

  • Upgrade Go module minimum version to 1.22 (commit by @bflad)

core: 3.7.5 - 2025-05-07

🐛 Bug Fixes

  • fixed stability of generated examples using operation and field seeds, including fixes to union examples (commit by @tristanspeakeasy)

core: 3.7.4 - 2025-04-11

🐛 Bug Fixes

  • increase stability of generator model file names (commit by @vishalg0wda)

core: 3.7.3 - 2025-04-03

🐛 Bug Fixes

  • improve performance of generation on multicore machines and various fixes to correctness based on order of generation (commit by @tristanspeakeasy)

core: 3.7.2 - 2025-02-21

🐛 Bug Fixes

  • handle usage snippet templating when no servers are defined in the spec (commit by @vishalg0wda)

core: 3.7.1 - 2025-02-14

🐛 Bug Fixes

  • circular reference handling in usage snippets (commit by @vishalg0wda)

core: 3.7.0 - 2025-02-04

🐝 New Features

core: 3.6.12 - 2025-01-31

🐛 Bug Fixes

  • fixed handling of default fields in usage snippets and tests, fixed validation of required schema property (commit by @tristanspeakeasy)

core: 3.6.11 - 2025-01-29

🐛 Bug Fixes

  • use separate namespaces per ruleset (commit by @vishalg0wda)

core: 3.6.10 - 2025-01-27

🐛 Bug Fixes

  • sort subresponses based on the worst scoring response in the group to ensure that no unreachable code paths are created (commit by @idbentley)

core: 3.6.9 - 2025-01-20

🐛 Bug Fixes

core: 3.6.8 - 2025-01-20

🐛 Bug Fixes

  • fixed handling of any fields in tests and usage snippets (commit by @tristanspeakeasy)

core: 3.6.7 - 2025-01-20

🐛 Bug Fixes

core: 3.6.5 - 2025-01-14

🐛 Bug Fixes

  • avoid setting Content-Type: */* request header for relevant operations (commit by @tristanspeakeasy)

core: 3.6.4 - 2025-01-14

🐛 Bug Fixes

core: 3.6.6 - 2025-01-13

🐛 Bug Fixes

  • handle 4XX and 5XX error ranges seperately (commit by @idbentley)

core: 3.6.3 - 2025-01-13

🐛 Bug Fixes

  • generate valid deprecated comments in Go (commit by @vishalg0wda)

core: 3.6.2 - 2024-12-16

🐛 Bug Fixes

  • flattening with hidden parameters (commit by @mfbx9da4)

core: 3.6.1 - 2024-12-13

🐛 Bug Fixes

  • Support OAS references under multipart/form-data file properties (commit by @bflad)

core: 3.6.0 - 2024-12-12

🐝 New Features

  • support passing extra request headers in sdk method calls (commit by @disintegrator)

core: 3.5.18 - 2024-12-06

🐛 Bug Fixes

  • support property names solely comprised of illegal characters (commit by @mfbx9da4)

core: 3.5.17 - 2024-11-22

🐛 Bug Fixes

  • handle circular references through unions correctly (commit by @disintegrator)

core: 3.5.16 - 2024-11-12

🐛 Bug Fixes

core: 3.5.15 - 2024-10-31

🐛 Bug Fixes

  • Prevent panic with invalid implicit discriminator mappings with propertyName within allOf object (commit by @bflad)

core: 3.5.14 - 2024-10-09

🐛 Bug Fixes

  • update readme handling of empty custom types section (commit by @adaam2)

core: 3.5.13 - 2024-10-07

🐛 Bug Fixes

  • ensure response body is closed after reading (commit by @disintegrator)

core: 3.5.12 - 2024-09-27

🐛 Bug Fixes

  • update readme formatting (commit by @adaam2)

core: 3.5.11 - 2024-09-25

🐛 Bug Fixes

  • update readme generation to replace welcome to new sdk section with new markdown notice (commit by @adaam2)

core: 3.5.10 - 2024-09-25

🐛 Bug Fixes

  • fixes to missing examples and improvements to number examples (commit by @tristanspeakeasy)

core: 3.5.9 - 2024-09-18

🐛 Bug Fixes

core: 3.5.8 - 2024-09-11

🔧 Chores

core: 3.5.7 - 2024-09-10

🔧 Chores

core: 3.5.6 - 2024-09-05

🐛 Bug Fixes

  • ensure generated examples are stable generation to generation (commit by @tristanspeakeasy)

core: 3.5.5 - 2024-08-16

🐛 Bug Fixes

core: 3.5.4 - 2024-08-13

🐛 Bug Fixes

core: 3.5.3 - 2024-08-01

🐛 Bug Fixes

core: 3.5.2 - 2024-07-23

🐛 Bug Fixes

  • avoid injecting empty 2xx sub-response if default status code is available and considered succesful (commit by @disintegrator)

core: 3.5.1 - 2024-07-23

🐛 Bug Fixes

  • fixed usage snippet generation not showing examples for oneOf/anyOf schemas (commit by @tristanspeakeasy)

core: 3.4.16 - 2024-07-16

🔧 Chores

core: 3.5.0 - 2024-07-11

🐝 New Features

core: 3.4.15 - 2024-07-09

🐛 Bug Fixes

  • Use 0666 file mode for writing configuration and lock files (commit by @bflad)

core: 3.4.14 - 2024-06-21

🔧 Chores

core: 3.4.13 - 2024-06-20

🐛 Bug Fixes

  • test response status codes in sdk methods in order of specificity (commit by @disintegrator)

core: 3.4.12 - 2024-06-17

🐛 Bug Fixes

core: 3.4.11 - 2024-06-03

🐛 Bug Fixes

core: 3.4.10 - 2024-05-21

🐛 Bug Fixes

core: 3.4.9 - 2024-05-21

🐛 Bug Fixes

core: 3.4.8 - 2024-05-09

🐛 Bug Fixes

core: 3.4.7 - 2024-04-25

🐛 Bug Fixes

core: 3.4.6 - 2024-04-07

♻️ Refactors

core: 3.4.5 - 2024-03-22

🐛 Bug Fixes

  • do not crash when an enum value has a quote " within (commit by @ThomasRooney)

core: 3.4.4 - 2024-03-06

🐛 Bug Fixes

  • fixes to security header handling to be compatible with hooks (commit by @tristanspeakeasy)

core: 3.4.3 - 2024-02-23

🐛 Bug Fixes

  • example generation for complex objects (commit by @ThomasRooney)

core: 3.4.2 - 2024-02-22

🐛 Bug Fixes

core: 3.4.1 - 2024-02-15

♻️ Refactors

core: 3.3.3 - 2024-02-13

🔧 Chores

  • improvements to example generation for usage snippets (commit by @TristanSpeakeasy)

core: 3.4.0 - 2024-02-12

🐝 New Features

core: 3.3.2 - 2024-02-02

🐛 Bug Fixes

core: 3.3.1 - 2024-01-16

🔧 Chores

core: 3.3.0 - 2023-12-19

🐝 New Features

core: 3.2.2 - 2023-12-14

🐛 Bug Fixes

  • fixed potential conflicts with enum consts and class names (commit by @TristanSpeakeasy)

core: 3.2.1 - 2023-12-14

🐛 Bug Fixes

  • fixed merging of allOf/oneOf schemas with their parents (commit by @TristanSpeakeasy)

core: 3.1.6 - 2023-12-06

🐛 Bug Fixes

🔧 Chores

core: 3.2.0 - 2023-12-05

🐝 New Features

  • add ability to use type name when available for selecting field name for untitled array schemas (commit by @TristanSpeakeasy)

core: 3.1.5 - 2023-11-14

🐛 Bug Fixes

  • ensure operation models don't collide with component models (commit by @TristanSpeakeasy)

core: 3.1.4 - 2023-11-09

🔧 Chores

core: 3.1.3 - 2023-11-09

🐛 Bug Fixes

core: 3.1.2 - 2023-11-08

🔧 Chores

  • improve README grammar by removing possessive adjectives (commit by @ThomasRooney)

core: 3.1.1 - 2023-11-07

🐛 Bug Fixes

core: 3.1.0 - 2023-11-01

🐝 New Features

core: 3.0.1 - 2023-11-01

🐛 Bug Fixes

core: 3.0.0 - 2023-10-24

🐝 New Features

core: 2.94.0 - 2023-10-20

🐝 New Features

core: 2.93.3 - 2023-10-20

🐛 Bug Fixes

  • retain configuration passed in on CLI for future gen runs (commit by @TristanSpeakeasy)

core: 2.93.2 - 2023-10-19

🐛 Bug Fixes

  • ensure complex allOfs are handle correctly with circular reference tracking (commit by @TristanSpeakeasy)

core: 2.93.1 - 2023-10-19

🐛 Bug Fixes

  • handling of circular references in allOf using inline schemas (commit by @TristanSpeakeasy)

core: 2.93.0 - 2023-10-18

🐝 New Features

core: 2.91.6 - 2023-10-18

🐛 Bug Fixes

  • additionalProperties not currently supported for parameter serialization so fall back to maps (commit by @TristanSpeakeasy)

core: 2.91.5 - 2023-10-13

🐛 Bug Fixes

  • catch literal nil derefs when mashaling models to JSON (commit by @disintegrator)

core: 2.91.4 - 2023-10-06

🐛 Bug Fixes

  • better handling of option fields when generating usage snippets (commit by @TristanSpeakeasy)

core: 2.91.3 - 2023-10-05

🐛 Bug Fixes

  • don't generate sub types for oneOf/anyOf if unions not support in language (commit by @TristanSpeakeasy)

core: 2.91.2 // globalSecurity: 2.82.2 - 2023-10-04

🐛 Bug Fixes

core: 2.91.1 - 2023-10-01

🐛 Bug Fixes

  • fix handling of allOf circular references when arrays and non-referenced schemas are involved (commit by @TristanSpeakeasy)

core: 2.91.0 - 2023-09-29

🐝 New Features

  • collapse primitive oneOf single sub schema type and fix handling of null and any types (commit by @TristanSpeakeasy)

core: 2.90.0 - 2023-09-26

🐝 New Features

  • added sdk package name to user-agent string in http requests (commit by @disintegrator)

core: 2.89.3 - 2023-09-26

🐛 Bug Fixes

  • deserialization of zero-valued date and time pointers in Go (commit by @anuraagnalluri)

core: 2.89.2 - 2023-09-26

🐛 Bug Fixes

core: 2.89.1 - 2023-09-25

🐛 Bug Fixes

core: 2.88.4 - 2023-09-21

🐛 Bug Fixes

  • fixes for regressions when dealing with consts and defaults (commit by @TristanSpeakeasy)

core: 2.89.0 - 2023-09-20

🐝 New Features

core: 2.88.3 - 2023-09-18

🔧 Chores

core: 2.88.2 - 2023-09-15

🐛 Bug Fixes

core: 2.88.1 - 2023-09-13

🐛 Bug Fixes

  • fixed handling of import paths when major version bumped (commit by @TristanSpeakeasy)

core: 2.88.0 - 2023-09-06

🐝 New Features

  • add support for nullable+required object properties (commit by @2ynn)

core: 2.86.4 - 2023-09-04

🐛 Bug Fixes

core: 2.86.3 - 2023-09-01

🐛 Bug Fixes

core: 2.86.2 - 2023-08-31

🐛 Bug Fixes

  • allow schemas that use enums with base types speakeasy doesn't support to still generate fields based on the base type (commit by @TristanSpeakeasy)

core: 2.86.1 - 2023-08-30

🐛 Bug Fixes

  • undefined accept header options in go methods (commit by @anuraagnalluri)

core: 2.86.0 - 2023-08-29

🐝 New Features

core: 2.85.0 - 2023-08-29

🐝 New Features

core: 2.84.2 - 2023-08-28

🐛 Bug Fixes

core: 2.84.1 - 2023-08-25

🐛 Bug Fixes

core: 2.84.0 - 2023-08-24

🐝 New Features

core: 2.83.1 - 2023-08-23

🐛 Bug Fixes

  • edge case which could cause conflicted names under some circumstances (commit by @ThomasRooney)

core: 2.83.0 - 2023-08-14

🐝 New Features

  • selectable accept headers in go (commit by @idbentley)

core: 2.82.0 - 2023-08-07

🐝 New Features

  • implement granular versioning to aid in generating relevant changelogs (commit by @TristanSpeakeasy)

pagination: 2.82.6 - 2026-02-21

🐛 Bug Fixes

  • handle cursor-based pagination when cursor input is inside a nested request body object (commit by @danielkov)

pagination: 2.82.5 - 2025-10-15

🐛 Bug Fixes

pagination: 2.82.4 - 2025-03-06

🐛 Bug Fixes

  • Fixed passing of arguments correctly within the next function (commit by @Kanwardeep)

pagination: 2.82.3 - 2025-02-19

🐛 Bug Fixes

  • handle paginated union response (commit by @2ynn)

pagination: 2.82.2 - 2024-12-20

🐛 Bug Fixes

  • respect pagination defaults from OpenAPI spec (commit by @disintegrator)

pagination: 2.82.1 - 2024-03-25

🐛 Bug Fixes

  • gracefully fail when pagination input is not defined on paginated operations (commit by @disintegrator)

pagination: 2.82.0 - 2024-02-28

🐝 New Features

  • handle non-numeric cursors (commit by @idbentley)

pagination: 2.81.2 - 2023-10-17

🐛 Bug Fixes

serverEvents: 0.1.7 - 2026-03-10

🐛 Bug Fixes

  • skip SSE events with no data field when data is required to prevent deserialization crashes (commit by @bradcypert)

serverEvents: 0.1.6 - 2026-03-03

🐛 Bug Fixes

  • SSE streaming no longer crashes on non-JSON event data in union types (commit by @tristanspeakeasy)

serverEvents: 0.1.5 - 2026-02-13

🐛 Bug Fixes

  • skip standalone SSE comment blocks between discriminated union events (commit by @vishalg0wda)

serverEvents: 0.1.4 - 2026-02-02

🐛 Bug Fixes

  • ensure compliance with HTML Living Standard and Web Platform Tests (commit by @2ynn)

serverEvents: 0.1.3 - 2025-02-02

🐛 Bug Fixes

  • support context cancellation in event streams (commit by @2ynn)

serverEvents: 0.1.2 - 2024-02-15

🐛 Bug Fixes

  • allow string enums to be used in SSE data (commit by @disintegrator)

serverEvents: 0.1.1 - 2024-02-05

🐛 Bug Fixes

serverEvents: 0.1.0 - 2024-01-17

🐝 New Features

unions: 2.87.6 - 2026-03-12

🐝 New Features

  • add x-speakeasy-discriminator extension for clean identifier names on discriminator mappings (commit by @mfbx9da4)

unions: 2.87.5 - 2026-02-24

🐛 Bug Fixes

  • handle nullable discriminator fields in union factory functions (commit by @danielkov)

unions: 2.87.4 - 2026-02-12

🐝 New Features

  • add open (forward-compatible) unions with raw JSON fallback for unknown variants (commit by @vishalg0wda)

unions: 2.87.3 - 2026-02-02

🐛 Bug Fixes

  • respect title and x-speakeasy-name-override for primitive union members (controlled by gen.yaml flag respectTitlesForPrimitiveUnionMembers) (commit by @mfbx9da4)

unions: 2.87.2 - 2025-11-20

🔧 Fixes

  • consider inexact count of open enums when deserializing unions (commit by @idbentley)

unions: 2.87.1 - 2025-11-10

🐛 Bug Fixes

  • prevent name collisions in getter methods due to discriminator mapping (commit by @2ynn)

unions: 2.87.0 - 2025-10-23

🐝 New Features

  • introduce a smarter union deserialization strategy (commit by @ThomasRooney)

unions: 2.86.0 - 2025-10-01

🐝 New Features

  • support nested discriminated unions (commit by @vishalg0wda)

unions: 2.85.14 - 2025-08-29

🐛 Bug Fixes

  • properly support union types in query parameters (commit by @subomi)

unions: 2.85.13 - 2025-08-26

🐛 Bug Fixes

  • fixed deserialization of weak unions to better match field requiredness and support forward compatibility (commit by @tristanspeakeasy)

unions: 2.85.12 - 2025-07-03

🐛 Bug Fixes

  • fixed issues with enum names potentially conflicting with other types (commit by @tristanspeakeasy)

unions: 2.85.11 - 2025-06-09

🐛 Bug Fixes

unions: 2.85.10 - 2024-11-05

🐛 Bug Fixes

  • improved handling of complex allOf schemas that merge multiple types (commit by @tristanspeakeasy)

unions: 2.85.9 - 2024-08-09

🐛 Bug Fixes

unions: 2.85.8 - 2024-05-17

🔧 Chores

  • better error logs when failing to unmarshal bytes into union types (commit by @ThomasRooney)

unions: 2.85.7 - 2024-05-16

🐛 Bug Fixes

unions: 2.85.6 - 2024-05-14

🐛 Bug Fixes

  • more flexible types (allow unknown fields) if an anyOf child is used with a discriminant (commit by @ThomasRooney)

unions: 2.85.5 - 2024-05-02

🐛 Bug Fixes

  • handle unions in flat response format (commit by @idbentley)

unions: 2.85.4 - 2024-02-29

🐛 Bug Fixes

  • null-enums are treated as switch a oneOf field to nullable (commit by @disintegrator)

unions: 2.85.3 - 2024-02-07

🐛 Bug Fixes

  • handling of discriminator fields with non standard names (commit by @TristanSpeakeasy)

unions: 2.85.2 - 2023-12-14

🐛 Bug Fixes

unions: 2.85.1 - 2023-12-14

🐛 Bug Fixes

  • fixed merging of allOf/oneOf schemas with their parents (commit by @TristanSpeakeasy)

unions: 2.84.1 - 2023-10-31

🐛 Bug Fixes

  • support unions (oneOf) containing bigint and decimal members (commit by @disintegrator)

unions: 2.85.0 - 2023-10-24

🐝 New Features

  • Add tests to support complex unions in go (commit by @idbentley)

unions: 2.84.0 - 2023-10-18

🐝 New Features

  • support complex types in unions (commit by @idbentley)

unions: 2.83.1 - 2023-09-30

🐛 Bug Fixes

unions: 2.83.0 - 2023-09-15

🐝 New Features

  • add support for nullable unions (commit by @2ynn)

unions: 2.82.0 - 2023-09-04

🐝 New Features

  • create input and output unions when appropriate (commit by @idbentley)

unions: 2.81.2 - 2023-08-07

🐛 Bug Fixes

Based on Speakeasy CLI 1.761.1

Last updated by Speakeasy workflow

@github-actions github-actions Bot added the patch Patch version bump label Jun 22, 2026
@github-actions github-actions Bot force-pushed the speakeasy-sdk-regen-1782140576 branch from 3c54b94 to 59db128 Compare June 22, 2026 17:32

@perry-the-pr-reviewer perry-the-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perry's Review

Automated Speakeasy SDK regeneration (0.5.0 to 0.5.1) picking up a merged spec change: unifies the two benchmark endpoints into a single Benchmarks.GetBenchmarks() call and adds workspace-budget / observability / preset operations.

Verdict: 🔁 Needs changes

Details

Risk: 🔴 High — human approval required

CI: no checks configured on this repo (0 reported); local go build and go test both pass on the head SHA.

Findings (see inline comments):

  • 🔴 internal/utils/union.go:132 — generator downgrade reverts the union scorer to call Elem() on the active variant, which panics at runtime (reflect Value.Elem on a slice value) for any union whose active member is a non-pointer such as a slice, map, or any. A/B-confirmed: head panics, origin/main does not. The upstream test that covered exactly this case is deleted by the same downgrade.
  • 🟡 .speakeasy/gen.lock:6 — root cause: the regen downgrades the generator 1.778.0 to 1.761.1 (generationVersion 2.904.2 to 2.879.6, core 3.13.46 to 3.13.40, unions 2.87.7 to 2.87.6). The downgrade is what reintroduces the union panic above and reverts the go module directive 1.25.10 to 1.22.
  • 🟡 .speakeasy/gen.yaml:38 — two public methods are removed (Breaking) but the SDK ships as a patch (0.5.1). Caret or tilde-pinned consumers will auto-upgrade and break at compile time.

Codex (gpt-5.5): 2 distinct findings — (1) the patch-bump-for-breaking-removal concern (matches my gen.yaml finding; deduped). (2) a retry branch in the new benchmarks file calls AfterSuccess for 4xx/5xx — verified this is an identical generated-template pattern present in every service file on both main and head, not introduced by this PR; discarded.

Analysis lanes: corroborated the generator/feature-version downgrade across core, pagination, serverEvents, and unions (security + correctness lanes); remaining ~200 lane items were generated gen.lock "lacks test coverage" noise — discarded.

Research: Speakeasy versioning docs confirm the generator does not analyze operation-level content — a breaking removal that doesn't bump info.version (or carry a major label) falls through to a checksum-driven patch bump. The PR body's own TIP banner says the same.

Security: no concerns — secret-pattern grep over added lines clean; no auth, key-handling, or credential surface touched. This is generated request/response model code.

Test coverage: the downgrade deletes the union test that guards the panic path. The full test suite passes only because that test is gone — coverage regressed.

Unresolved threads: none.

Scope: first review (full)
Review: tier=large · model=claude-opus-latest · score=85.0

Comment thread internal/utils/union.go
if activeVariant != nil {
countFieldsRecursive(candidate, activeVariant.Type, variantVal, raw)
if activeVariant != nil && !variantVal.IsNil() {
countFieldsRecursive(candidate, activeVariant.Type.Elem(), variantVal.Elem(), raw)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[blocker] countFieldsRecursive(candidate, activeVariant.Type.Elem(), variantVal.Elem(), raw) — panics at runtime for any union whose active member is a non-pointer (slice / map / any).

Details

Why: This line is reverted by the generator downgrade (gen.lock 1.778.0 → 1.761.1, unions 2.87.7 → 2.87.6). It assumes every union variant is a pointer and calls .Elem() on the active variant's type and value. When the active member is a slice, map, or any, reflect.Value.Elem() panics:

  • slice member (e.g. []string, []ChatContentItems) → reflect: call of reflect.Value.Elem on slice Value
  • any member → reflect: Elem of invalid type interface {}

Reachability: PickBestUnionCandidate runs countFields on each candidate whenever len(candidates) > 1. ~35 generated union types have non-pointer members (Stop, System, the Chat/Messages/Responses message-content unions, FiltersUnion, etc.) — i.e. the most-trafficked request/response deserialization paths. A response (or nested struct) that drives the scorer into one of these members panics the caller.

A/B confirmation: I ran the upstream-deleted test case against both trees — origin/main (1.778.0) returns picked list; this PR's head (1.761.1) panics with reflect: call of reflect.Value.Elem on slice Value. The downgrade also deletes TestPickBestUnionCandidate_NonPointerUnionVariants in union_test.go, which is exactly why go test ./... still passes here.

Fix: the correct (1.778.0 / main) form recurses without forcing .Elem(), letting countFieldsRecursive handle the pointer/slice/map/any cases:

if activeVariant != nil {
    countFieldsRecursive(candidate, activeVariant.Type, variantVal, raw)
}

Don't hand-patch generated code — fix it at the source by not downgrading the generator (see the gen.lock comment). Bumping .speakeasy/workflow.yaml's speakeasyVersion back to ≥ 1.778.0 and regenerating restores this code and the deleted test.

Ref: Go reflect.Value.Elem — "It panics if v's Kind is not Interface or Pointer."

Prompt for agents
internal/utils/union.go line 132 (inside countFieldsRecursive) was regenerated by an older Speakeasy generator (1.761.1) and now reads:
    countFieldsRecursive(candidate, activeVariant.Type.Elem(), variantVal.Elem(), raw)
This panics at runtime whenever a union's active member is a non-pointer (slice/map/any) because reflect.Value.Elem() is only valid on Interface or Pointer kinds. Do NOT hand-edit this generated file. Instead, restore the newer generator: in .speakeasy/workflow.yaml set speakeasyVersion back to the version main was generated with (>= 1.778.0), and regenerate the SDK. That regeneration restores the safe form (countFieldsRecursive(candidate, activeVariant.Type, variantVal, raw)) AND re-adds the deleted internal/utils/union_test.go test TestPickBestUnionCandidate_NonPointerUnionVariants which covers slice/map/any union members. Verify with: go test ./internal/utils/.

Reviewed at 59db128

Comment thread .speakeasy/gen.lock
generationVersion: 2.904.2
releaseVersion: 0.5.0
configChecksum: a8cd011d0fa84720f7c3504347addacc
speakeasyVersion: 1.761.1

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[suggestion] .speakeasy/gen.lock:6 — this regen downgrades the Speakeasy generator (1.778.0 → 1.761.1), which is the root cause of the union-scorer panic above.

Details

Why: origin/main's committed gen.lock was generated with 1.778.0; this PR rewrites it to 1.761.1. Feature versions move backwards with it: generationVersion 2.904.2 → 2.879.6, core 3.13.46 → 3.13.40, pagination 2.82.7 → 2.82.6, serverEvents 0.1.9 → 0.1.7, unions 2.87.7 → 2.87.6. The unions downgrade reintroduces the .Elem() panic in internal/utils/union.go; the same downgrade also reverts go.mod from go 1.25.10 to go 1.22.

The pin lives in .speakeasy/workflow.yaml (speakeasyVersion: 1.761.1) — unchanged by this PR, but already behind what main was last generated with. Every regen from this pin silently rolls back generator improvements (including the union fix) until the pin is advanced.

Fix: bump .speakeasy/workflow.yaml's speakeasyVersion to ≥ 1.778.0 (match or exceed what produced main), then regenerate so the lock moves forward, not backward.

Ref: Speakeasy SDK versioning

Prompt for agents
.speakeasy/gen.lock at this PR's head downgrades the Speakeasy generator from 1.778.0 (on main) to 1.761.1, reverting feature versions (unions 2.87.7 -> 2.87.6 among others) and reintroducing a runtime panic in internal/utils/union.go. The version pin is in .speakeasy/workflow.yaml (speakeasyVersion: 1.761.1). Update .speakeasy/workflow.yaml to speakeasyVersion >= 1.778.0 (whatever generated main), regenerate the SDK, and confirm gen.lock's speakeasyVersion/generationVersion/core/unions are >= the values currently on origin/main and that go test ./internal/utils/ passes.

Reviewed at 59db128

Comment thread .speakeasy/gen.yaml
preApplyUnionDiscriminators: true
go:
version: 0.5.0
version: 0.5.1

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[suggestion] .speakeasy/gen.yaml:38 — two public methods are removed (Breaking ⚠️) but the SDK ships as a patch (0.5.0 → 0.5.1).

Details

Why: Datasets.GetBenchmarksArtificialAnalysis() and Datasets.GetBenchmarksDesignArena() are removed and replaced by Benchmarks.GetBenchmarks(source=…). Both are flagged **Removed** (Breaking ⚠️) in the PR body, yet the version label is patch. Per Speakeasy versioning, the generator does not inspect operation-level content for breaking changes — when info.version isn't bumped it falls through to a checksum-driven patch. Go consumers pinned with ~ / caret-style constraints will auto-upgrade to 0.5.1 and fail to compile (the removed methods vanish).

The removal itself is clean — grep finds zero dangling references to the removed symbols anywhere in the worktree, and go build ./... passes. The concern is purely the version signal under SemVer.

Fix: force a minor (pre-1.0 breaking → minor) bump rather than patch: add a minor label to this PR, or set SPEAKEASY_BUMP_OVERRIDE=minor, or bump info.version in the source OpenAPI doc so the next regen versions correctly. The same removal was carried as a standing breaking-under-patch note on the sibling typescript-sdk (#496) and python-sdk (#344) regens.

Ref: Speakeasy versioning — OpenAPI document changes

Prompt for agents
This SDK regen (.speakeasy/gen.yaml version 0.5.0 -> 0.5.1) removes two public methods — Datasets.GetBenchmarksArtificialAnalysis() and Datasets.GetBenchmarksDesignArena() — which is a breaking change, but ships as a patch. Speakeasy does not auto-detect operation removals, so it defaulted to a checksum patch bump. Re-version this as a minor (pre-1.0 breaking maps to minor): add a "minor" label to the PR, OR set SPEAKEASY_BUMP_OVERRIDE=minor in the generation workflow, OR bump info.version in the source OpenAPI document, then regenerate. Confirm gen.yaml's version field reflects the corrected bump.

Reviewed at 59db128

@github-actions github-actions Bot force-pushed the speakeasy-sdk-regen-1782140576 branch from 59db128 to 547c162 Compare June 22, 2026 22:15
@perry-the-pr-reviewer perry-the-pr-reviewer Bot dismissed their stale review June 22, 2026 22:49

Superseded by updated Perry review

perry-the-pr-reviewer[bot]

This comment was marked as outdated.

* `OpenRouter.Benchmarks.GetBenchmarks()`: **Added**
* `OpenRouter.Images.Generate()`: **Added**
* `OpenRouter.Images.ListModels()`: **Added**
* `OpenRouter.Images.ListModelEndpoints()`: **Added**
* `OpenRouter.Workspaces.ListBudgets()`: **Added**
* `OpenRouter.Workspaces.DeleteBudget()`: **Added**
* `OpenRouter.Workspaces.SetBudget()`: **Added**
* `OpenRouter.Datasets.GetBenchmarksArtificialAnalysis()`: **Removed** (Breaking ⚠️)
* `OpenRouter.Datasets.GetBenchmarksDesignArena()`: **Removed** (Breaking ⚠️)
* `OpenRouter.Beta.Analytics.QueryAnalytics()`:  `response.Data.Warnings` **Added**
* `OpenRouter.Beta.Responses.Send()`: 
  *  `request.ResponsesRequest` **Changed**
  *  `response` **Changed**
* `OpenRouter.Chat.Send()`: 
  *  `request.ChatRequest` **Changed**
  *  `response` **Changed**
* `OpenRouter.Embeddings.Generate()`:  `response.Usage` **Changed**
* `OpenRouter.Embeddings.ListModels()`:  `response.Data[].Reasoning` **Added**
* `OpenRouter.Models.Get()`:  `response.Data.Reasoning` **Added**
* `OpenRouter.Models.List()`:  `response.Data[].Reasoning` **Added**
* `OpenRouter.Models.ListForUser()`:  `response.Data[].Reasoning` **Added**
* `OpenRouter.Presets.CreatePresetsChatCompletions()`:  `request.ChatRequest` **Changed**
* `OpenRouter.Presets.CreatePresetsMessages()`:  `request.MessagesRequest` **Changed**
* `OpenRouter.Presets.CreatePresetsResponses()`:  `request.ResponsesRequest` **Changed**
@github-actions github-actions Bot force-pushed the speakeasy-sdk-regen-1782140576 branch from 547c162 to 6f104d8 Compare June 23, 2026 00:46
@mattapperson mattapperson changed the title chore: 🐝 Update SDK - Generate SDK (spec change merged) 0.5.1 chore: 🐝 Update SDK - Generate SDK 0.5.1 Jun 23, 2026

@perry-the-pr-reviewer perry-the-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perry's Review

Speakeasy SDK regen to release 0.5.1 — a 280-file generated diff that restructures the benchmarks API (two per-source methods removed in favour of a unified endpoint) and, as a side effect, regenerates with an older generator than the one that produced current main.

Verdict: 🔁 Needs changes

Details

Risk: 🔴 High — human approval required

Re-review note: This is the third pass on this PR (head force-pushed to 6f104d8). The only delta since my last review is regen metadata — the gen.lock generation_id / pristine_commit_hash and a RELEASES.md timestamp. All three findings below sit on byte-identical source to what I reviewed last time, so I am not re-posting line-level findings — the three existing review threads (union scorer, generator downgrade, breaking-removal-under-patch) are still open and unresolved, and remain the blockers. Re-affirming them here rather than duplicating those threads.

CI: none green — combined commit status is pending (no statuses), there are zero check-runs on the head SHA, and the only Actions run (Examples) is action_required (awaiting maintainer approval). There is no test gate catching the panic below.

Findings (already tracked in the three open review threads — re-affirmed, not re-posted):

  • 🔴 blocker — the union scorer's recursion forces a pointer dereference on the active union member. Re-confirmed at this head by A/B test: restoring the upstream-deleted non-pointer test case panics on this PR's tree (reflect Value.Elem on a slice value) while current main passes it cleanly. ~48 generated union members are non-pointer (slice / map / any), so the most-trafficked deserialization paths can panic at runtime.
  • 🟡 suggestion — root cause: this regen downgrades the Speakeasy generator relative to main (generationVersion 2.904.2 → 2.879.6; go directive 1.25.10 → 1.22), reverting the union-scorer fix and deleting its covering test. Bump the pinned speakeasyVersion in the workflow back to the version main was generated with and regenerate.
  • 🟡 suggestion — two public methods are removed (Datasets benchmark accessors), replaced by a new unified Benchmarks service — a breaking API change — yet the release is labelled a patch (0.5.0 → 0.5.1). Caret-pinned Go consumers would auto-upgrade and fail to compile. Re-version as a minor.

Codex (second opinion): surfaced an undiscriminated-anyOf concern in the OpenAPI source doc (upstream spec, out of scope for the SDK regen) and a retry-hook ordering note that is generic Speakeasy boilerplate identical across every generated service (the non-retry path correctly routes 4xx/5xx through AfterError) — both discarded after verification. A README import-path nit was the only other item and is not blocking.

Research: Confirmed against the Go reflect docs that Value.Elem panics on any Kind other than Interface or Pointer (slices and maps included); the reverted recursion is therefore unsafe for the non-pointer members present in this generated SDK. Confirmed against Speakeasy versioning docs that operation removals are not auto-detected, so a checksum-driven patch bump is expected here and must be overridden to minor.

Security: no concerns — no secrets in the diff; generated SDK code touches no auth, credential, or tenant-isolation surface.

Test coverage: the regen deletes the non-pointer union test that previously covered the exact panic, so green CI (when it runs) would not catch the regression. No new tests added.

Unresolved threads: three open Perry threads (union scorer panic, generator downgrade, breaking-removal-under-patch) — all still valid on byte-identical code.

Scope: incremental — net-new delta is regen metadata only (gen.lock id + RELEASES.md timestamp); all source byte-identical to prior review
Review: tier=large · model=claude-opus-latest · score=169.4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

patch Patch version bump

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants