Skip to content

Generated API reference examples call getAuthNonce()/loginWithSignature()/isSessionActive() with zero args — all three require a walletAddress #2137

Open

Description

@realfishsam

Gap

The auto-generated code samples for the three new Probable-auth-lifecycle base methods (getAuthNonce, loginWithSignature, isSessionActive, added in #1614) call each method with no arguments, in both languages, for every one of the 17 venues. All three methods have required positional parameters — calling them as shown would fail at runtime (Python: TypeError: missing required positional argument) or fail to type-check (TypeScript: "Expected 1-3 arguments, but got 0"). This is a code-generation defect distinct from #1606/#1589 (which are about the auth flow being unimplemented for specific venues) — here the methods exist and work, but every single generated example calling them is broken.

Core

core/src/BaseExchange.ts:567 — async getAuthNonce(walletAddress: string): Promise<AuthNonceResponse> (required param, no default).
core/src/BaseExchange.ts:577-582 — async loginWithSignature(walletAddress: string, signature: string, nonce: string): Promise<AuthLoginResponse> (3 required params).
core/src/BaseExchange.ts:597 — async isSessionActive(walletAddress: string): Promise<boolean> (required param).

TypeScript SDK

sdks/typescript/pmxt/client.ts:960 — async getAuthNonce(walletAddress: string); :985 — async loginWithSignature(walletAddress: string, signature: string, nonce: string); :1037 — async isSessionActive(walletAddress: string). All correctly require the arguments — the SDK method signatures are fine. The bug is only in the generated documentation examples.

Generated example (docs/api-reference/openapi.json, x-codeSamples for /api/{exchange}/getAuthNonce, TypeScript sample, repeated per-venue):

const exchange = new Polymarket({ pmxtApiKey: "YOUR_PMXT_API_KEY" });
const result = await exchange.getAuthNonce();

This omits the required walletAddress argument. The same zero-arg pattern repeats for loginWithSignature() and isSessionActive(), for all 17 venues (Polymarket, Limitless, Kalshi, KalshiDemo, Probable, Baozi, Myriad, Opinion, Metaculus, Smarkets, PolymarketUS, Hyperliquid, GeminiTitan, SuiBets, Rain, Hunch) × both languages — over 100 broken snippets in total.

Python SDK

sdks/python/pmxt/client.py:1309 — def get_auth_nonce(self, wallet_address: str); :1329 — def login_with_signature(self, wallet_address: str, signature: str, nonce: str); :1371 — def is_session_active(self, wallet_address: str). Signatures are correct; same doc-generation bug applies.

Generated example (Python sample for the same endpoints, per-venue):

exchange = pmxt.Polymarket(pmxt_api_key="YOUR_PMXT_API_KEY")
result = exchange.get_auth_nonce()

Calling this raises TypeError: get_auth_nonce() missing 1 required positional argument: 'wallet_address'.

Evidence

Compared the x-codeSamples blocks in docs/api-reference/openapi.json for /api/{exchange}/getAuthNonce, /api/{exchange}/loginWithSignature, and /api/{exchange}/isSessionActive (also mirrored into docs/llms-full.txt around lines 6108-6224) against the actual method signatures in core/src/BaseExchange.ts, sdks/typescript/pmxt/client.ts, and sdks/python/pmxt/client.py. As a control, the generated sample for /api/{exchange}/cancelOrder correctly includes its required argument (exchange.cancel_order("ord-001")), showing the doc generator normally does emit example arguments for required params — it's specifically these three new auth methods where the generator produced empty argument lists, likely because it has no example-value mapping for walletAddress/signature/nonce param names.

Impact

Every reader who copies the generated getAuthNonce/loginWithSignature/isSessionActive example from the API reference (or from llms-full.txt, which LLM-based tooling and agents are meant to consume directly) hits an immediate runtime error or type error, for all 17 venues in both SDKs. This is the first real end-to-end usage example most users would see for the newly shipped Web3 auth lifecycle feature, and it does not run as written.


Found by automated Core-to-SDK surface coverage audit

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2: mediumbugSomething isn't workingcore-sdk-gapCore engine capabilities not exposed in SDKsdocumentationImprovements or additions to documentationeffort: small

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions