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
Copy file name to clipboardExpand all lines: changelog.md
+20Lines changed: 20 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,26 @@
2
2
3
3
All notable changes to this project will be documented in this file.
4
4
5
+
## [2.50.6] - 2026-06-18
6
+
7
+
### Docs
8
+
9
+
-**Deleted `docs/sql.mdx`.** Removed from Get Started in `docs/docs.json` and from the API Reference Enterprise group. The `POST /v0/sql` endpoint reference page stays. One inbound link in `docs/concepts/catalog-uuid-vs-venue-id.mdx:56` retargeted from `[SQL endpoint](/sql)` to a plain `POST /v0/sql` reference.
10
+
-**Contradiction sweep — round 1.** Three audit agents (SDK-truth-vs-docs, inter-page contradictions, stale-feature-status) found 60+ candidate findings; fixed every HIGH-severity item that didn't require a product call. Skipped items flagged separately at the end of this note.
11
+
-**`docs/introduction.mdx`**: "11 venue integrations" → "15+ venue integrations" — `core/src/server/exchange-factory.ts` registers 16 (excluding test/demo/mock the customer count is ~14, "15+" is the honest marketing number).
12
+
-**`docs/concepts/prediction-markets-101.mdx`**: USDC entry was misleading — said "Polymarket-native USDC". Actual settlement asset is **USDC.e** (bridged) at `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`, which is what Polymarket's CTF exchange uses. The migrate-to-hosted-trading guide already had this right; the 101 was contradicting it. Same edit confirms native Polygon USDC and bridged USDC on other chains are not interchangeable with USDC.e.
13
+
-**`docs/concepts/hosted-trading.mdx`**: `client.escrow.deposit()` / `.withdraw()` — neither method exists. The Escrow class exposes `approve_tx` / `deposit_tx` / `withdraw_tx` / `withdrawals` (`sdks/python/pmxt/escrow.py:114-184`). Replaced with the actual call shape including the `withdraw_tx("request" | "claim" | "cancel", ...)` argument signature.
14
+
-**`docs/guides/escrow-lifecycle.mdx`**: `fetch_balance` returns `List[Balance]`, not a single `Balance` (`sdks/python/pmxt/client.py:1643`). The "Confirm the deposit" example unpacked `balance.free / .used / .total` directly, which would `AttributeError` on a list. Fixed to `balances = client.fetch_balance(); usdc = balances[0]; ...`. The `trading-quickstart` already used the list form correctly; this brought escrow-lifecycle in line.
15
+
-**`docs/guides/signing.mdx`**: The "Advanced: bring your own signer" example used three attributes that don't exist on the SDK's `BuiltOrder` dataclass — `built.typed_data`, `built.built_order_id`, and a kwargs-style `submit_order(built_order_id=, signature=)`. The actual Python signature is `submit_order(built: BuiltOrder)` (`sdks/python/pmxt/client.py:3183`); typed-data lives at `built.raw["typed_data"]`; the signature attaches as `built.signed_order` before submit. Rewrote both Python and TypeScript examples to match. The TS `submitOrder({ builtOrderId, signature })` shape was also wrong — TS `submitOrder` accepts the `BuiltOrder` object too.
16
+
-**`docs/guides/hosted-errors.mdx`** (two fixes in one page):
17
+
- The "BuiltOrderExpired retry" example had the same wrong `built.typed_data` / `built.built_order_id` / kwargs `submit_order` shape as the signing guide. Rewrote both Python and TS to use the real attribute paths and the object-shape `submit_order(built)` / `submitOrder(built)` call.
18
+
- The stale "`fetch_markets` returns venue-native IDs, but `create_order` needs catalog UUIDs" warning was the same lie that 2.50.3 and 2.50.5 fixed in `hosted-trading.mdx` and `prediction-markets-101.mdx`. Hosted-errors.mdx was the third place it lived. Rewrote the `OutcomeNotFound` Quick check to describe the real failure modes — outcome resolved against a different `exchange_name`, or removed from the catalog — and dropped the venue-native-ID accusation entirely.
19
+
- The `NoLiquidity` recovery example told callers to fall back to a hosted limit order. Hosted limit orders return 501 (`docs/trading-quickstart.mdx:165`) — the advice was internally inconsistent and would crash any caller who followed it. Rewrote the recovery to "wait, switch outcome, or run self-hosted for resting limits."
20
+
-**Skipped — needs your call before I touch them:**
21
+
-**Limitless hosted writes.** The SDK's hosted routing tables (`sdks/typescript/pmxt/hosted-routing.ts:24-28`, `sdks/python/pmxt/_hosted_routing.py:19`) include `limitless` in `HOSTED_TRADING_VENUES`, and `client.py:829-838` routes the schemas. But the SDK's own `NotSupported` error string at `hosted-routing.ts:75` still says "only supported for Polymarket and Opinion" — and every doc page asserts the same. Either Limitless hosted writes are prod-ready (six doc pages need updating and the error string is wrong) or they're partially wired (no doc change, error string is right). I don't have enough signal to decide.
22
+
-**Operator multisig.**`docs/concepts/hosted-trading.mdx:89` says "A multisig replacement is planned but not yet deployed" while line 93 says the operator address is `immutable`. Both can be true (replacement = new contract deployment + migration), but the wording reads like an in-place rotation. Wanted your call on the phrasing.
23
+
-**`trade.pmxt.dev` vs `api.pmxt.dev` terminology drift.** Introduction splits hosted into two hostnames (reads on `api.pmxt.dev`, writes on `trade.pmxt.dev`); `authentication.mdx` and `rate-limits.mdx` only mention `api.pmxt.dev`. A builder reading auth in isolation won't know `trade.pmxt.dev` is a thing. Not a wrong claim, just incomplete coverage on auth/rate-limits.
For batch workflows, the [SQL endpoint](/sql) gives you direct access to `prediction_markets.markets` and `prediction_markets.outcomes` with the canonical UUID alongside the venue-native fields (`venue_market_id`, `venue_outcome_id` / `token_id`).
56
+
For batch workflows, `POST /v0/sql` gives you direct access to `prediction_markets.markets` and `prediction_markets.outcomes` with the canonical UUID alongside the venue-native fields (`venue_market_id`, `venue_outcome_id` / `token_id`).
Copy file name to clipboardExpand all lines: docs/concepts/hosted-trading.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -69,7 +69,7 @@ The SDK accepts either form. Outcomes returned by `pmxt.Polymarket(...).fetch_ma
69
69
-**Polymarket** is on Polygon. Escrow-held USDC is spent directly via Polymarket's CTF exchange — same-chain settlement.
70
70
-**Opinion** is on BSC (chainId 56). Escrow-held USDC funds a cross-chain settlement leg into a BSC-side `VenueEscrow` that holds Opinion [outcome](/concepts/prediction-markets-101#event-market-outcome) tokens. The user never deposits to or signs on BSC — PMXT operates the cross-chain hop, still gated by the user's signature on the Polygon side.
71
71
72
-
All EIP-712 order signatures use the Polygon `PreFundedEscrow` domain regardless of venue. The user's wallet retains beneficial ownership at all times. Funds enter via `client.escrow.deposit()`, exit via `client.escrow.withdraw()`. Both are unsigned-tx builders — your wallet signs and submits them. See [Escrow Lifecycle](/guides/escrow-lifecycle).
72
+
All EIP-712 order signatures use the Polygon `PreFundedEscrow` domain regardless of venue. The user's wallet retains beneficial ownership at all times. Funds enter via `client.escrow.deposit_tx(amount)`, exit via `client.escrow.withdraw_tx("request" | "claim" | "cancel", ...)`. Both build unsigned txs — your wallet signs and submits them. See [Escrow Lifecycle](/guides/escrow-lifecycle).
Copy file name to clipboardExpand all lines: docs/concepts/prediction-markets-101.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,7 +39,7 @@ A specific EVM-compatible chain (chainId 137). PMXT's `PreFundedEscrow` contract
39
39
40
40
### USDC
41
41
42
-
A US-dollar-pegged stablecoin (1 USDC ≈ $1) issued on many chains. PMXT uses the **Polygon-native**USDC for hosted trading. Bridged versions on other chains are not interchangeable.
42
+
A US-dollar-pegged stablecoin (1 USDC ≈ $1) issued on many chains. PMXT hosted trading settles in **USDC.e on Polygon**(`0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`) — the bridged token Polymarket's CTF exchange uses. Native Polygon USDC and bridged USDC on other chains are not interchangeable.
**Recovery:** wait for liquidity, post a limit order instead of a market order, or pick a different outcome.
197
+
**Recovery:** wait for liquidity, pick a different outcome, or run [self-hosted](/guides/self-hosted) for resting limit orders (hosted limit orders are not yet available).
203
198
204
199
<CodeGroup>
205
200
```python Python
@@ -208,8 +203,8 @@ from pmxt._hosted_errors import NoLiquidity
208
203
try:
209
204
client.create_order(order_type="market", ...)
210
205
except NoLiquidity:
211
-
#Fall back to a limit order at a price you'd accept
// Wait, retry against a different outcome, or post limits via self-hosted.
223
218
} else {
224
219
throwe;
225
220
}
@@ -234,7 +229,7 @@ try {
234
229
</Warning>
235
230
236
231
<Warning>
237
-
**`fetch_markets` returns venue-native IDs**, but `create_order` needs catalog UUIDs. If you see `OutcomeNotFound` despite having a valid-looking ID, you are almost certainly passing a venue-native ID to a hosted endpoint. See [Catalog UUID vs venue ID](/concepts/catalog-uuid-vs-venue-id).
232
+
If you see `OutcomeNotFound` despite having a valid-looking ID, the SDK could not resolve it on either the catalog UUID or `(venue, venue_outcome_id)` path. Most commonly: the outcome was resolved against a different venue than the client's `exchange_name`, or the outcome has since been removed from the catalog. See [Catalog UUID vs venue ID](/concepts/catalog-uuid-vs-venue-id).
0 commit comments