You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #561 ("chore(gen): render BYOK/TTS/STT as initialisms in generated symbols", merged
2026-07-30) normalized three initialisms via customCasings in .speakeasy/gen.yaml. Two
more were left behind, and they fail in two different ways:
client.o_auth — the attribute should be client.oauth
Scim — the class should be SCIM
The first is user-facing and the reason for this issue; the second is the same defect #561
was fixing, just missed.
Before that commit the attributes were already byok / stt / tts; what was wrong were the
class names, Byok / Stt / Tts. The initialism: true entries fixed the classes.
OAuth is the inverse. Its class name is already correct (class OAuth(BaseSDK)), but the
tag OAuth is mixed-case, so the snake_case attribute splits on the internal capital and
becomes o_auth. A plain initialism: true here would presumably target OAUTH and make
the class name worse. The desired output is the mixed pair — attribute oauth, class OAuth — so this needs whichever knob produces that, and whoever runs the generator will
know better than I do which one.
Docs already disagree with the code
The generated docs directory is docs/sdks/oauth/, titled "OAuth", but every snippet inside
it calls the split attribute:
docs/sdks/scim/README.mdx by contrast uses open_router.scim.…, matching its directory.
Compatibility note
Renaming client.o_auth to client.oauth is a breaking change for anyone already calling it,
and the SDK has been stable since v1.0. Worth considering keeping o_auth as a deprecated
alias for a release or two — the same treatment beta.responses got in 1477485 — rather
than a hard rename. The Scim → SCIM change carries the same caveat if anyone imports the
class directly, though the scim attribute is unaffected.
Summary
PR #561 ("chore(gen): render BYOK/TTS/STT as initialisms in generated symbols", merged
2026-07-30) normalized three initialisms via
customCasingsin.speakeasy/gen.yaml. Twomore were left behind, and they fail in two different ways:
client.o_auth— the attribute should beclient.oauthScim— the class should beSCIMThe first is user-facing and the reason for this issue; the second is the same defect #561
was fixing, just missed.
Current behavior
From
src/openrouter/sdk.py:Why these two are different
#561 added:
Before that commit the attributes were already
byok/stt/tts; what was wrong were theclass names,
Byok/Stt/Tts. Theinitialism: trueentries fixed the classes.SCIMhas exactly that problem and no entry: the class is stillScimwhileBYOK,STT,TTS, andAPIKeysare all correct. Addingscim: {initialism: true}should be adirect copy of the chore(gen): render BYOK/TTS/STT as initialisms in generated symbols #561 recipe.
OAuthis the inverse. Its class name is already correct (class OAuth(BaseSDK)), but thetag
OAuthis mixed-case, so thesnake_caseattribute splits on the internal capital andbecomes
o_auth. A plaininitialism: truehere would presumably targetOAUTHand makethe class name worse. The desired output is the mixed pair — attribute
oauth, classOAuth— so this needs whichever knob produces that, and whoever runs the generator willknow better than I do which one.
Docs already disagree with the code
The generated docs directory is
docs/sdks/oauth/, titled"OAuth", but every snippet insideit calls the split attribute:
docs/sdks/scim/README.mdxby contrast usesopen_router.scim.…, matching its directory.Compatibility note
Renaming
client.o_authtoclient.oauthis a breaking change for anyone already calling it,and the SDK has been stable since
v1.0. Worth considering keepingo_authas a deprecatedalias for a release or two — the same treatment
beta.responsesgot in1477485— ratherthan a hard rename. The
Scim→SCIMchange carries the same caveat if anyone imports theclass directly, though the
scimattribute is unaffected.Environment