Skip to content

chore: 🐝 Update SDK - Generate 0.9.3#169

Closed
github-actions[bot] wants to merge 2 commits into
mainfrom
speakeasy-sdk-regen-1776818276
Closed

chore: 🐝 Update SDK - Generate 0.9.3#169
github-actions[bot] wants to merge 2 commits into
mainfrom
speakeasy-sdk-regen-1776818276

Conversation

@github-actions

@github-actions github-actions Bot commented Apr 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.

Python SDK Changes:

  • open_router.datasets.get_benchmarks_design_arena(): Added
  • open_router.models.get(): Added
  • open_router.chat.send(): request Changed
  • open_router.embeddings.list_models(): response.data.[].benchmarks Added
  • open_router.models.list(): response.data.[].benchmarks Added
  • open_router.models.list_for_user(): response.data.[].benchmarks Added
  • open_router.presets.create_presets_chat_completions(): request Changed
  • open_router.presets.create_presets_messages(): request.fallbacks Added
OpenAPI Change Summary
├─┬Paths
│ ├──[+] path (27391:3)
│ ├──[+] path (23537:3)
│ ├─┬/auth/keys/code
│ │ └─┬POST
│ │   └─┬Requestbody
│ │     └─┬application/json
│ │       └─┬Schema
│ │         └─┬callback_url
│ │           └──[🔀] description (22316:32)
│ └─┬/analytics/query
│   └─┬POST
│     └─┬Requestbody
│       └─┬application/json
│         └─┬Schema
│           └─┬group_limit
│             └──[🔀] description (21766:32)
└─┬Components
  ├──[+] schemas (3634:7)
  ├──[+] schemas (12045:7)
  ├──[+] schemas (3743:7)
  ├──[+] schemas (3816:7)
  ├──[+] schemas (12115:7)
  ├──[+] schemas (3653:7)
  ├──[+] schemas (27:7)
  ├──[+] schemas (7012:7)
  ├──[+] schemas (10805:7)
  ├─┬Model
  │ ├──[+] properties (11902:9)
  │ ├─┬per_request_limits
  │ │ └──[🔀] $ref (11945:11)❌ 
  │ ├─┬supported_parameters
  │ │ └──[🔀] $ref (18032:20)❌ 
  │ ├─┬knowledge_cutoff
  │ │ ├──[🔀] description (11934:24)
  │ │ ├──[-] nullable (11580:31)❌ 
  │ │ └──[🔀] example (11935:20)
  │ ├─┬created
  │ │ ├──[🔀] description (11909:24)
  │ │ ├──[+] nullable (11911:21)❌ 
  │ │ └──[🔀] example (11910:20)
  │ ├─┬expiration_date
  │ │ ├──[🔀] description (11920:24)
  │ │ ├──[-] nullable (11566:31)❌ 
  │ │ └──[🔀] example (11921:20)
  │ ├─┬hugging_face_id
  │ │ ├──[🔀] description (11924:24)
  │ │ └──[🔀] example (11925:20)
  │ ├─┬links
  │ │ └──[🔀] $ref (11938:11)❌ 
  │ ├─┬default_parameters
  │ │ └──[🔀] $ref (11914:11)❌ 
  │ ├─┬top_provider
  │ │ └──[🔀] $ref (11958:11)❌ 
  │ ├─┬context_length
  │ │ ├──[🔀] type (11907:17)❌ 
  │ │ ├──[🔀] description (11905:24)
  │ │ ├──[-] nullable (11551:31)❌ 
  │ │ └──[🔀] example (11906:20)
  │ ├─┬pricing
  │ │ └──[🔀] $ref (16620:20)❌ 
  │ ├─┬supported_voices
  │ │ ├──[🔀] description (11953:24)
  │ │ ├──[-] nullable (11602:31)❌ 
  │ │ ├──[-] example (11599:30)
  │ │ └─┬Schema
  │ │   └──[🔀] $ref (16377:9)❌ 
  │ ├─┬name
  │ │ └──[🔀] $ref (12099:20)❌ 
  │ ├─┬id
  │ │ ├──[🔀] description (11929:24)
  │ │ ├──[+] nullable (11931:21)❌ 
  │ │ └──[🔀] example (11930:20)
  │ ├─┬description
  │ │ └──[🔀] $ref (7076:29)❌ 
  │ └─┬canonical_slug
  │   └──[🔀] $ref (12045:20)❌ 
  ├─┬MessagesRequest
  │ ├──[+] properties (11162:9)
  │ ├─┬max_tokens
  │ │ ├──[+] items (11168:13)❌ 
  │ │ ├──[🔀] type (11170:17)❌ 
  │ │ ├──[+] description (11163:24)
  │ │ ├──[+] nullable (11169:21)❌ 
  │ │ └──[+] example (11166:13)
  │ ├─┬stream
  │ │ └──[🔀] $ref (19245:20)❌ 
  │ ├─┬plugins
  │ │ └──[🔀] $ref (10994:20)❌ 
  │ ├─┬stop_server_tools_when
  │ │ └──[🔀] $ref (11236:11)❌ 
  │ ├─┬top_p
  │ │ ├──[🔀] type (11497:17)❌ 
  │ │ └──[-] format (11141:29)❌ 
  │ ├─┬service_tier
  │ │ └──[🔀] $ref (7159:19)❌ 
  │ ├─┬trace
  │ │ └──[🔀] $ref (11499:11)❌ 
  │ ├─┬stop_sequences
  │ │ ├──[-] items (10879:25)❌ 
  │ │ ├──[-] type (10880:27)❌ 
  │ │ ├──[+] allOf (1401:7)
  │ │ └──[+] allOf (11232:15)
  │ ├─┬tool_choice
  │ │ ├──[-] oneOf (10957:27)❌ 
  │ │ ├─┬ONEOF
  │ │ │ ├──[+] required (11265:19)❌ 
  │ │ │ ├──[+] properties (11255:17)
  │ │ │ ├──[+] properties (11257:17)
  │ │ │ ├──[-] properties (10930:29)❌ 
  │ │ │ └─┬type
  │ │ │   └──[🔀] $ref (1674:9)❌ 
  │ │ ├─┬ONEOF
  │ │ │ ├──[-] properties (10940:29)❌ 
  │ │ │ └─┬type
  │ │ │   ├──[+] enum (11270:23)
  │ │ │   └──[-] enum (10944:39)❌ 
  │ │ └─┬ONEOF
  │ │   ├──[+] properties (11276:17)
  │ │   └─┬type
  │ │     └──[🔀] $ref (1674:9)❌ 
  │ ├─┬messages
  │ │ ├──[-] items (10817:25)❌ 
  │ │ ├──[🔀] type (11172:17)❌ 
  │ │ └──[-] nullable (10818:31)❌ 
  │ ├─┬temperature
  │ │ ├──[-] type (10893:27)❌ 
  │ │ ├──[-] format (10892:29)❌ 
  │ │ ├──[+] anyOf (11245:15)
  │ │ └──[+] anyOf (11246:15)
  │ ├─┬thinking
  │ │ ├──[+] type (11251:17)❌ 
  │ │ ├──[+] format (11250:19)❌ 
  │ │ ├──[-] oneOf (10896:27)❌ 
  │ │ ├──[-] oneOf (10909:27)❌ 
  │ │ └──[-] oneOf (10917:27)❌ 
  │ ├─┬models
  │ │ ├──[-] items (10830:25)❌ 
  │ │ └──[🔀] type (11185:17)❌ 
  │ ├─┬top_k
  │ │ ├──[+] items (11330:13)❌ 
  │ │ └──[🔀] type (11495:17)❌ 
  │ ├─┬output_config
  │ │ └──[🔀] $ref (11187:11)❌ 
  │ ├─┬session_id
  │ │ ├──[-] maxLength (10869:32)❌ 
  │ │ └──[-] description (10867:34)
  │ ├─┬tools
  │ │ ├──[-] items (10972:25)❌ 
  │ │ ├──[-] type (11137:27)❌ 
  │ │ ├──[+] oneOf (11287:15)
  │ │ ├──[+] oneOf (11297:15)
  │ │ ├──[+] oneOf (11307:15)
  │ │ └──[+] oneOf (11315:15)
  │ ├─┬system
  │ │ ├──[+] type (11242:17)❌ 
  │ │ ├──[-] anyOf (10887:27)❌ 
  │ │ └──[-] anyOf (10888:27)❌ 
  │ ├─┬metadata
  │ │ ├──[+] items (11175:13)❌ 
  │ │ ├──[🔀] type (11177:17)❌ 
  │ │ ├──[+] nullable (11176:21)❌ 
  │ │ └──[-] properties (10822:25)❌ 
  │ ├─┬provider
  │ │ └──[🔀] $ref (11193:11)❌ 
  │ ├─┬model
  │ │ ├──[🔀] type (11183:17)❌ 
  │ │ └──[+] properties (11180:13)
  │ ├─┬user
  │ │ └──[🔀] $ref (19932:9)❌ 
  │ ├─┬speed
  │ │ ├──[+] type (11228:17)❌ 
  │ │ ├──[+] maxLength (11227:22)❌ 
  │ │ ├──[+] description (11225:24)
  │ │ ├──[-] allOf (1369:13)❌ 
  │ │ └──[-] allOf (10874:27)❌ 
  │ └─┬route
  │   └──[🔀] $ref (17531:29)❌ 
  ├─┬ChatRequest
  │ ├──[+] properties (4883:9)
  │ ├──[+] properties (4970:9)
  │ ├──[+] properties (4985:9)
  │ ├──[+] properties (5073:9)
  │ ├──[+] properties (5080:9)
  │ ├─┬stream_options
  │ │ └──[🔀] $ref (5036:11)❌ 
  │ ├─┬stream
  │ │ ├──[🔀] type (5034:17)❌ 
  │ │ ├──[+] maxLength (5033:22)❌ 
  │ │ ├──[🔀] description (5031:24)
  │ │ ├──[-] default (4764:30)❌ 
  │ │ └──[-] example (4766:30)
  │ ├─┬temperature
  │ │ └──[🔀] $ref (19245:20)❌ 
  │ ├─┬top_p
  │ │ └──[🔀] $ref (5550:9)❌ 
  │ ├─┬modalities
  │ │ ├──[-] items (4633:25)❌ 
  │ │ ├──[🔀] type (4889:17)❌ 
  │ │ ├──[+] format (4887:19)❌ 
  │ │ ├──[🔀] description (4884:24)
  │ │ ├──[+] nullable (4888:21)❌ 
  │ │ └──[🔀] example (4886:20)
  │ ├─┬session_id
  │ │ └──[🔀] $ref (7159:19)❌ 
  │ ├─┬top_logprobs
  │ │ ├──[🔀] type (5060:17)❌ 
  │ │ ├──[+] format (5058:19)❌ 
  │ │ ├──[🔀] description (5056:24)
  │ │ └──[🔀] example (5057:20)
  │ ├─┬user
  │ │ ├──[🔀] type (5079:17)❌ 
  │ │ ├──[+] format (5077:19)❌ 
  │ │ ├──[🔀] description (5074:24)
  │ │ ├──[+] nullable (5078:21)❌ 
  │ │ └──[🔀] example (5076:20)
  │ ├─┬service_tier
  │ │ ├──[-] enum (4735:27)❌ 
  │ │ ├──[-] enum (4736:27)❌ 
  │ │ ├──[-] enum (4737:27)❌ 
  │ │ ├──[-] enum (4738:27)❌ 
  │ │ ├──[-] enum (4739:27)❌ 
  │ │ ├──[-] enum (4740:27)❌ 
  │ │ ├──[+] discriminator (4995:13)❌ 
  │ │ ├──[-] type (4743:27)❌ 
  │ │ ├──[🔀] description (4993:24)
  │ │ ├──[-] nullable (4742:31)❌ 
  │ │ ├──[🔀] example (5003:13)
  │ │ ├──[+] oneOf (4608:7)
  │ │ ├──[+] oneOf (7532:7)
  │ │ ├──[+] oneOf (4572:7)
  │ │ ├──[+] oneOf (4554:7)
  │ │ ├──[+] oneOf (4596:7)
  │ │ └─┬Extensions
  │ │   └──[-] x-speakeasy-unknown-values (4744:49)❌ 
  │ ├─┬model
  │ │ └──[🔀] $ref (4891:11)❌ 
  │ ├─┬parallel_tool_calls
  │ │ └──[🔀] $ref (4767:20)❌ 
  │ ├─┬plugins
  │ │ ├──[-] items (4653:25)❌ 
  │ │ ├──[🔀] type (4912:17)❌ 
  │ │ ├──[🔀] description (4908:24)
  │ │ ├──[+] nullable (4911:21)❌ 
  │ │ └──[+] example (4910:20)
  │ ├─┬tools
  │ │ └──[🔀] $ref (5354:20)❌ 
  │ ├─┬trace
  │ │ └──[🔀] $ref (5064:11)❌ 
  │ ├─┬stop
  │ │ ├──[+] type (5016:17)❌ 
  │ │ ├──[🔀] description (5013:24)
  │ │ ├──[+] nullable (5015:21)❌ 
  │ │ ├──[🔀] example (5014:20)
  │ │ ├──[-] anyOf (4752:27)❌ 
  │ │ ├──[-] anyOf (4753:27)❌ 
  │ │ └──[-] anyOf (4757:27)❌ 
  │ ├─┬presence_penalty
  │ │ ├──[+] items (4916:13)❌ 
  │ │ ├──[🔀] type (4938:17)❌ 
  │ │ ├──[-] format (4679:29)❌ 
  │ │ ├──[🔀] description (4914:24)
  │ │ ├──[-] nullable (4680:31)❌ 
  │ │ └──[-] example (4678:30)
  │ ├─┬response_format
  │ │ ├──[-] discriminator (4710:25)❌ 
  │ │ ├──[+] type (4969:17)❌ 
  │ │ ├──[🔀] description (4948:24)
  │ │ ├──[🔀] example (4950:13)
  │ │ ├──[+] properties (4953:13)
  │ │ ├──[+] properties (4967:13)
  │ │ ├──[-] oneOf (4352:13)❌ 
  │ │ ├──[-] oneOf (7196:13)❌ 
  │ │ ├──[-] oneOf (4316:13)❌ 
  │ │ ├──[-] oneOf (4298:13)❌ 
  │ │ └──[-] oneOf (4340:13)❌ 
  │ ├─┬stop_server_tools_when
  │ │ └──[🔀] $ref (5018:11)❌ 
  │ ├─┬tool_choice
  │ │ └──[🔀] $ref (5049:11)❌ 
  │ ├─┬provider
  │ │ └──[🔀] $ref (4940:11)❌ 
  │ ├─┬models
  │ │ └──[🔀] $ref (12111:20)❌ 
  │ ├─┬reasoning
  │ │ └──[🔀] $ref (17531:29)❌ 
  │ ├─┬seed
  │ │ ├──[🔀] type (4991:17)❌ 
  │ │ ├──[+] format (4989:19)❌ 
  │ │ ├──[🔀] description (4986:24)
  │ │ └──[🔀] example (4988:20)
  │ └─┬route
  │   └──[🔀] $ref (4971:11)❌ 
  └─┬AnthropicMessageUsageIteration
    └─┬ALLOF
      ├──[+] properties (1243:13)
      └─┬type
        └──[-] enum (1215:31)❌ 
Document Element Total Changes Breaking Changes
paths 4 0
components 202 127

PYTHON CHANGELOG

No relevant generator changes

Based on Speakeasy CLI 1.680.0

Last updated by Speakeasy workflow

@github-actions github-actions Bot added the patch Patch version bump label Apr 22, 2026
@github-actions github-actions Bot force-pushed the speakeasy-sdk-regen-1776818276 branch from 1b4804c to df58aec Compare April 23, 2026 00:43
* `open_router.datasets.get_benchmarks_design_arena()`: **Added**
* `open_router.models.get()`: **Added**
* `open_router.chat.send()`:  `request` **Changed**
* `open_router.embeddings.list_models()`:  `response.data.[].benchmarks` **Added**
* `open_router.models.list()`:  `response.data.[].benchmarks` **Added**
* `open_router.models.list_for_user()`:  `response.data.[].benchmarks` **Added**
* `open_router.presets.create_presets_chat_completions()`:  `request` **Changed**
* `open_router.presets.create_presets_messages()`:  `request.fallbacks` **Added**
@github-actions github-actions Bot force-pushed the speakeasy-sdk-regen-1776818276 branch from 7c6d64a to 96d483d Compare June 12, 2026 01:01
@github-actions github-actions Bot changed the title chore: 🐝 Update SDK - Generate 0.9.2 chore: 🐝 Update SDK - Generate 0.9.3 Jun 12, 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

Routine Speakeasy SDK regeneration to v0.9.3 — adds a get-model-by-slug endpoint and a Design Arena benchmarks endpoint, new chat sampling params (min_p, top_a, top_k, repetition_penalty, reasoning_effort), Messages fallbacks, and per-model benchmarks; all generated code is internally consistent and the package imports cleanly.

Verdict: 💬 Comments / questions

Details

Risk: 🟡 Medium

CI: ⏳ pending — the head is an empty commit pushing the run-tests workflow; no checks have reported yet (not a review blocker; branch protection gates merge).

Findings (see inline comment):

  • 🟡 src/openrouter/components/rankingsdailymeta.py:9 — the public Version alias was renamed to RankingsDailyMetaVersion and dropped from all, a breaking import change shipped under a patch-labeled release.

Codex (gpt-5.5): surfaced the same Version-rename breaking-change finding (merged below). Its two other notes — MessagesFallbackParam allowing extra fields, and fallbacks not being constrained to ≤3 / mutually-exclusive-with-models — are inherent to generated Speakeasy models (constraints enforced server-side; these files are DO NOT EDIT), so not actionable here.

Research: Confirmed via Speakeasy's versioning docs that automated version bumps key off info.version + a document checksum, not a content diff — so a type rename (a real breaking change under SemVer) is labeled patch by default. Verified the four new sampling-param docstrings against the OpenRouter API parameters reference — all accurate.

Security: Secret-pattern scan of added lines clean. Only auth-adjacent change is the callback_url docstring describing a server-side policy relaxation (localhost/127.0.0.1 on any port for local CLI tools) — no client-side validation logic in the SDK, no exploitable surface.

Test coverage: Validated locally — package + all new symbols import cleanly, the benchmarks response model round-trips the spec example (including null pricing/avg_generation_time_ms), and the new chat params serialize correctly.

Unresolved threads: none

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



Version = Literal["v1",]
RankingsDailyMetaVersion = Literal["v1",]

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][codex] VersionRankingsDailyMetaVersion removes components.Version from the public SDK API in a patch-labeled release — breaks from openrouter.components import Version.

Details

Why: This release is labeled patch (0.9.2 → 0.9.3), but renaming the exported Version alias and dropping "Version" from components/__init__.py's __all__ is a backward-incompatible change: any consumer doing from openrouter.components import Version (or components.Version) will hit an ImportError after upgrading. The rename itself is correct — Speakeasy disambiguated it because the new BenchmarksDAMetaVersion introduced a second Version-shaped literal — but Speakeasy's automated version bump keys off info.version + a document checksum, not a content diff, so a genuine breaking rename is silently classified as patch rather than a minor/major bump.

This is auto-generated (DO NOT EDIT), so the fix is upstream of the SDK, not in this file:

Fix (pick one):

  1. Bump the SDK to a minor version (0.10.0) for this release — either via the OpenAPI info.version field or speakeasy bump minor / the PR's version label — so the breaking export rename is reflected in SemVer. (Acceptable to skip under 0.x, where minor bumps may carry breaking changes — but the bump still signals it to consumers.)
  2. If Version was a deliberately public, documented symbol, keep a back-compat re-export (Version = RankingsDailyMetaVersion) in the spec's naming config so existing imports keep working.

Ref: Speakeasy SDK versioning · SemVer 2.0.0

Prompt for agents
The SDK release in this PR (pyproject.toml / _version.py: 0.9.2 -> 0.9.3, labeled `patch`) renames the public type alias `Version` to `RankingsDailyMetaVersion` in src/openrouter/components/rankingsdailymeta.py:9 and removes "Version" from __all__ in src/openrouter/components/__init__.py. This is a breaking change for anyone importing `openrouter.components.Version`. These files are Speakeasy-generated (DO NOT EDIT), so fix upstream: either (1) bump the release to a minor version (0.10.0) via the OpenAPI info.version field or the Speakeasy version label so the breaking rename is reflected in SemVer, or (2) if `Version` was an intentional public export, add a back-compat re-export alias `Version = RankingsDailyMetaVersion` via the spec naming configuration so existing imports do not break. Confirm whether any external consumers import `Version` before deciding.

Reviewed at 4587246

@robert-j-y

Copy link
Copy Markdown
Collaborator

Stale rolling generation PR — superseded by #205 (merged Jun 11). Spec-merge regeneration is being fixed in #315.

@robert-j-y robert-j-y closed this Jun 12, 2026
@robert-j-y robert-j-y deleted the speakeasy-sdk-regen-1776818276 branch June 12, 2026 20:24
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