Skip to content

Commit 2219153

Browse files
committed
Preserve cross exchange docs order in generator
1 parent a8a2a7a commit 2219153

5 files changed

Lines changed: 204 additions & 166 deletions

File tree

changelog.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [2.44.4] - 2026-05-24
6+
7+
### Fixed
8+
9+
- **Docs publishing**: Preserve `Cross Exchange` directly after `Events & Markets` during release-time Mintlify regeneration instead of appending hosted groups near the bottom.
10+
511
## [2.44.3] - 2026-05-24
612

713
### Fixed

docs/docs.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,14 @@
134134
],
135135
"openapi": "api-reference/openapi.json"
136136
},
137+
{
138+
"group": "Cross Exchange",
139+
"openapi": "api-reference/openapi-hosted.json",
140+
"pages": [
141+
"GET /v0/matched-event-clusters",
142+
"GET /v0/matched-market-clusters"
143+
]
144+
},
137145
{
138146
"group": "Order Book & Trades",
139147
"pages": [
@@ -195,14 +203,6 @@
195203
],
196204
"openapi": "api-reference/openapi.json"
197205
},
198-
{
199-
"group": "Cross Exchange",
200-
"openapi": "api-reference/openapi-hosted.json",
201-
"pages": [
202-
"GET /v0/matched-event-clusters",
203-
"GET /v0/matched-market-clusters"
204-
]
205-
},
206206
{
207207
"group": "Enterprise",
208208
"openapi": "api-reference/openapi-hosted.json",

docs/llms-full.txt

Lines changed: 151 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -3069,6 +3069,157 @@ curl "https://api.pmxt.dev/api/polymarket/fetchMarket?slug=will-gavin-newsom-win
30693069
</CodeGroup>
30703070

30713071

3072+
## Cross Exchange
3073+
3074+
### Fetch matched event clusters
3075+
3076+
`GET /v0/matched-event-clusters`
3077+
3078+
Returns connected clusters of semantically matched events across venues. Use this endpoint to browse or anchor event-level matches while preserving each venue's child markets.
3079+
3080+
| Parameter | Type | Required | Description |
3081+
| --- | --- | --- | --- |
3082+
| `eventId` | string | No | Anchor the response to a specific event ID. |
3083+
| `slug` | string | No | Anchor the response to a specific event slug. |
3084+
| `url` | string | No | Anchor the response to a specific event URL. |
3085+
| `query` | string | No | Text search across cluster titles. |
3086+
| `category` | string | No | Filter both sides of matched edges by event category. |
3087+
| `relations` | string | No | Comma-separated relation filter. Valid values: identity (same resolution), subset (A yes implies B yes), superset (B yes implies A yes), overlap (some shared scenarios), and disjoint (mutually exclusive). Defaults to identity. For subset and superset, direction follows the pairwise edge direction returned in rawMatches when includeRawMatches=true. |
3088+
| `relation` | string | No | Single relation filter. Alias for relations. |
3089+
| `minConfidence` | number | No | |
3090+
| `venues` | string | No | Comma-separated venue allow-list. |
3091+
| `excludeVenues` | string | No | Comma-separated venue deny-list. |
3092+
| `minVenues` | integer | No | Minimum number of venues required in a cluster. |
3093+
| `withOrderbook` | boolean | No | Require at least one live orderbook on each matched edge. |
3094+
| `updatedSince` | string | No | Only include matches updated after this timestamp. |
3095+
| `includeRawMatches` | boolean | No | Include the pairwise match edges used to build each cluster. |
3096+
| `sort` | string | No | |
3097+
| `limit` | integer | No | |
3098+
| `offset` | integer | No | |
3099+
| `edgeLimit` | integer | No | Maximum number of pairwise edges to scan before clustering. |
3100+
3101+
**Python:**
3102+
```python
3103+
import pmxt
3104+
3105+
router = pmxt.Router(pmxt_api_key="YOUR_PMXT_API_KEY")
3106+
clusters = router.fetch_matched_event_clusters(
3107+
query="Satoshi",
3108+
relation="identity",
3109+
min_venues=2,
3110+
include_raw_matches=True,
3111+
limit=5,
3112+
)
3113+
3114+
for cluster in clusters:
3115+
venues = [event.source_exchange for event in cluster.events]
3116+
print(cluster.canonical_title, venues)
3117+
3118+
```
3119+
3120+
**TypeScript:**
3121+
```typescript
3122+
import { Router } from "pmxtjs";
3123+
3124+
const router = new Router({ pmxtApiKey: "YOUR_PMXT_API_KEY" });
3125+
3126+
async function main() {
3127+
const clusters = await router.fetchMatchedEventClusters({
3128+
query: "Satoshi",
3129+
relation: "identity",
3130+
minVenues: 2,
3131+
includeRawMatches: true,
3132+
limit: 5,
3133+
});
3134+
3135+
for (const cluster of clusters) {
3136+
console.log(
3137+
cluster.canonicalTitle,
3138+
cluster.events.map((event) => event.sourceExchange),
3139+
);
3140+
}
3141+
}
3142+
3143+
main();
3144+
3145+
```
3146+
3147+
3148+
### Fetch matched market clusters
3149+
3150+
`GET /v0/matched-market-clusters`
3151+
3152+
Returns connected clusters of semantically matched markets across venues. Use this endpoint to browse or anchor market-level matches without flattening the response into pairwise rows.
3153+
3154+
| Parameter | Type | Required | Description |
3155+
| --- | --- | --- | --- |
3156+
| `marketId` | string | No | Anchor the response to a specific market ID. |
3157+
| `slug` | string | No | Anchor the response to a specific market slug. |
3158+
| `url` | string | No | Anchor the response to a specific market URL. |
3159+
| `query` | string | No | Text search across cluster titles. |
3160+
| `category` | string | No | Filter both sides of matched edges by market category. |
3161+
| `relations` | string | No | Comma-separated relation filter. Valid values: identity (same resolution), subset (A yes implies B yes), superset (B yes implies A yes), overlap (some shared scenarios), and disjoint (mutually exclusive). Defaults to identity. For subset and superset, direction follows the pairwise edge direction returned in rawMatches when includeRawMatches=true. |
3162+
| `relation` | string | No | Single relation filter. Alias for relations. |
3163+
| `minConfidence` | number | No | |
3164+
| `venues` | string | No | Comma-separated venue allow-list. |
3165+
| `excludeVenues` | string | No | Comma-separated venue deny-list. |
3166+
| `minVenues` | integer | No | Minimum number of venues required in a cluster. |
3167+
| `withOrderbook` | boolean | No | Require at least one live orderbook on each matched edge. |
3168+
| `updatedSince` | string | No | Only include matches updated after this timestamp. |
3169+
| `includeRawMatches` | boolean | No | Include the pairwise match edges used to build each cluster. |
3170+
| `sort` | string | No | |
3171+
| `limit` | integer | No | |
3172+
| `offset` | integer | No | |
3173+
| `edgeLimit` | integer | No | Maximum number of pairwise edges to scan before clustering. |
3174+
3175+
**Python:**
3176+
```python
3177+
import pmxt
3178+
3179+
router = pmxt.Router(pmxt_api_key="YOUR_PMXT_API_KEY")
3180+
clusters = router.fetch_matched_market_clusters(
3181+
query="Satoshi",
3182+
relation="identity",
3183+
min_venues=2,
3184+
include_raw_matches=True,
3185+
limit=5,
3186+
)
3187+
3188+
for cluster in clusters:
3189+
venues = [market.source_exchange for market in cluster.markets]
3190+
print(cluster.canonical_title, venues)
3191+
3192+
```
3193+
3194+
**TypeScript:**
3195+
```typescript
3196+
import { Router } from "pmxtjs";
3197+
3198+
const router = new Router({ pmxtApiKey: "YOUR_PMXT_API_KEY" });
3199+
3200+
async function main() {
3201+
const clusters = await router.fetchMatchedMarketClusters({
3202+
query: "Satoshi",
3203+
relation: "identity",
3204+
minVenues: 2,
3205+
includeRawMatches: true,
3206+
limit: 5,
3207+
});
3208+
3209+
for (const cluster of clusters) {
3210+
console.log(
3211+
cluster.canonicalTitle,
3212+
cluster.markets.map((market) => market.sourceExchange),
3213+
);
3214+
}
3215+
}
3216+
3217+
main();
3218+
3219+
```
3220+
3221+
3222+
30723223
## Order Book & Trades
30733224

30743225
### Fetch OHLCV
@@ -5024,157 +5175,6 @@ const result = await exchange.feedFetchHistoricalPrices({
50245175

50255176

50265177

5027-
## Cross Exchange
5028-
5029-
### Fetch matched event clusters
5030-
5031-
`GET /v0/matched-event-clusters`
5032-
5033-
Returns connected clusters of semantically matched events across venues. Use this endpoint to browse or anchor event-level matches while preserving each venue's child markets.
5034-
5035-
| Parameter | Type | Required | Description |
5036-
| --- | --- | --- | --- |
5037-
| `eventId` | string | No | Anchor the response to a specific event ID. |
5038-
| `slug` | string | No | Anchor the response to a specific event slug. |
5039-
| `url` | string | No | Anchor the response to a specific event URL. |
5040-
| `query` | string | No | Text search across cluster titles. |
5041-
| `category` | string | No | Filter both sides of matched edges by event category. |
5042-
| `relations` | string | No | Comma-separated relation filter. Valid values: identity (same resolution), subset (A yes implies B yes), superset (B yes implies A yes), overlap (some shared scenarios), and disjoint (mutually exclusive). Defaults to identity. For subset and superset, direction follows the pairwise edge direction returned in rawMatches when includeRawMatches=true. |
5043-
| `relation` | string | No | Single relation filter. Alias for relations. |
5044-
| `minConfidence` | number | No | |
5045-
| `venues` | string | No | Comma-separated venue allow-list. |
5046-
| `excludeVenues` | string | No | Comma-separated venue deny-list. |
5047-
| `minVenues` | integer | No | Minimum number of venues required in a cluster. |
5048-
| `withOrderbook` | boolean | No | Require at least one live orderbook on each matched edge. |
5049-
| `updatedSince` | string | No | Only include matches updated after this timestamp. |
5050-
| `includeRawMatches` | boolean | No | Include the pairwise match edges used to build each cluster. |
5051-
| `sort` | string | No | |
5052-
| `limit` | integer | No | |
5053-
| `offset` | integer | No | |
5054-
| `edgeLimit` | integer | No | Maximum number of pairwise edges to scan before clustering. |
5055-
5056-
**Python:**
5057-
```python
5058-
import pmxt
5059-
5060-
router = pmxt.Router(pmxt_api_key="YOUR_PMXT_API_KEY")
5061-
clusters = router.fetch_matched_event_clusters(
5062-
query="Satoshi",
5063-
relation="identity",
5064-
min_venues=2,
5065-
include_raw_matches=True,
5066-
limit=5,
5067-
)
5068-
5069-
for cluster in clusters:
5070-
venues = [event.source_exchange for event in cluster.events]
5071-
print(cluster.canonical_title, venues)
5072-
5073-
```
5074-
5075-
**TypeScript:**
5076-
```typescript
5077-
import { Router } from "pmxtjs";
5078-
5079-
const router = new Router({ pmxtApiKey: "YOUR_PMXT_API_KEY" });
5080-
5081-
async function main() {
5082-
const clusters = await router.fetchMatchedEventClusters({
5083-
query: "Satoshi",
5084-
relation: "identity",
5085-
minVenues: 2,
5086-
includeRawMatches: true,
5087-
limit: 5,
5088-
});
5089-
5090-
for (const cluster of clusters) {
5091-
console.log(
5092-
cluster.canonicalTitle,
5093-
cluster.events.map((event) => event.sourceExchange),
5094-
);
5095-
}
5096-
}
5097-
5098-
main();
5099-
5100-
```
5101-
5102-
5103-
### Fetch matched market clusters
5104-
5105-
`GET /v0/matched-market-clusters`
5106-
5107-
Returns connected clusters of semantically matched markets across venues. Use this endpoint to browse or anchor market-level matches without flattening the response into pairwise rows.
5108-
5109-
| Parameter | Type | Required | Description |
5110-
| --- | --- | --- | --- |
5111-
| `marketId` | string | No | Anchor the response to a specific market ID. |
5112-
| `slug` | string | No | Anchor the response to a specific market slug. |
5113-
| `url` | string | No | Anchor the response to a specific market URL. |
5114-
| `query` | string | No | Text search across cluster titles. |
5115-
| `category` | string | No | Filter both sides of matched edges by market category. |
5116-
| `relations` | string | No | Comma-separated relation filter. Valid values: identity (same resolution), subset (A yes implies B yes), superset (B yes implies A yes), overlap (some shared scenarios), and disjoint (mutually exclusive). Defaults to identity. For subset and superset, direction follows the pairwise edge direction returned in rawMatches when includeRawMatches=true. |
5117-
| `relation` | string | No | Single relation filter. Alias for relations. |
5118-
| `minConfidence` | number | No | |
5119-
| `venues` | string | No | Comma-separated venue allow-list. |
5120-
| `excludeVenues` | string | No | Comma-separated venue deny-list. |
5121-
| `minVenues` | integer | No | Minimum number of venues required in a cluster. |
5122-
| `withOrderbook` | boolean | No | Require at least one live orderbook on each matched edge. |
5123-
| `updatedSince` | string | No | Only include matches updated after this timestamp. |
5124-
| `includeRawMatches` | boolean | No | Include the pairwise match edges used to build each cluster. |
5125-
| `sort` | string | No | |
5126-
| `limit` | integer | No | |
5127-
| `offset` | integer | No | |
5128-
| `edgeLimit` | integer | No | Maximum number of pairwise edges to scan before clustering. |
5129-
5130-
**Python:**
5131-
```python
5132-
import pmxt
5133-
5134-
router = pmxt.Router(pmxt_api_key="YOUR_PMXT_API_KEY")
5135-
clusters = router.fetch_matched_market_clusters(
5136-
query="Satoshi",
5137-
relation="identity",
5138-
min_venues=2,
5139-
include_raw_matches=True,
5140-
limit=5,
5141-
)
5142-
5143-
for cluster in clusters:
5144-
venues = [market.source_exchange for market in cluster.markets]
5145-
print(cluster.canonical_title, venues)
5146-
5147-
```
5148-
5149-
**TypeScript:**
5150-
```typescript
5151-
import { Router } from "pmxtjs";
5152-
5153-
const router = new Router({ pmxtApiKey: "YOUR_PMXT_API_KEY" });
5154-
5155-
async function main() {
5156-
const clusters = await router.fetchMatchedMarketClusters({
5157-
query: "Satoshi",
5158-
relation: "identity",
5159-
minVenues: 2,
5160-
includeRawMatches: true,
5161-
limit: 5,
5162-
});
5163-
5164-
for (const cluster of clusters) {
5165-
console.log(
5166-
cluster.canonicalTitle,
5167-
cluster.markets.map((market) => market.sourceExchange),
5168-
);
5169-
}
5170-
}
5171-
5172-
main();
5173-
5174-
```
5175-
5176-
5177-
51785178
## Enterprise
51795179

51805180
### SQL

docs/llms.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ GitHub: https://github.com/pmxt-dev/pmxt
3636
- [Fetch Markets](https://pmxt.dev/docs/api-reference/fetch-markets)
3737
- [Fetch Markets Paginated](https://pmxt.dev/docs/api-reference/fetchMarketsPaginated): Fetch markets with cursor-based pagination backed by a stable in-memory snapshot. On the first call (or when no cursor is supplied), fetches all markets once and caches them. Subsequent calls with a cursor returned from a previous call slice directly from the cached snapshot — no additional API calls are made. The snapshot is invalidated after `snapshotTTL` ms (configured via `ExchangeOptions` in the constructor). A request using a cursor from an expired snapshot throws `'Cursor has expired'`.
3838
- [Fetch Market](https://pmxt.dev/docs/api-reference/fetch-market)
39+
- [Fetch matched event clusters](https://pmxt.dev/docs/api-reference/getV0Matched-event-clusters): Returns connected clusters of semantically matched events across venues. Use this endpoint to browse or anchor event-level matches while preserving each venue's child markets.
40+
- [Fetch matched market clusters](https://pmxt.dev/docs/api-reference/getV0Matched-market-clusters): Returns connected clusters of semantically matched markets across venues. Use this endpoint to browse or anchor market-level matches without flattening the response into pairwise rows.
3941
- [Fetch OHLCV](https://pmxt.dev/docs/api-reference/fetch-ohlcv)
4042
- [Fetch Order Book](https://pmxt.dev/docs/api-reference/fetch-order-book)
4143
- [Fetch Order Books](https://pmxt.dev/docs/api-reference/fetchOrderBooks): Batch variant of {@link fetchOrderBook}. Fetches order books for multiple outcomes in a single request where the exchange supports it.
@@ -68,8 +70,6 @@ GitHub: https://github.com/pmxt-dev/pmxt
6870
- [Fetch Oracle Round](https://pmxt.dev/docs/api-reference/feedFetchOracleRound): Returns the latest Chainlink oracle round for a price feed.
6971
- [Fetch Oracle History](https://pmxt.dev/docs/api-reference/feedFetchOracleHistory): Returns historical Chainlink oracle rounds for a price feed.
7072
- [Fetch Historical Prices](https://pmxt.dev/docs/api-reference/feedFetchHistoricalPrices): Returns historical price data as tickers within a time range.
71-
- [Fetch matched event clusters](https://pmxt.dev/docs/api-reference/getV0Matched-event-clusters): Returns connected clusters of semantically matched events across venues. Use this endpoint to browse or anchor event-level matches while preserving each venue's child markets.
72-
- [Fetch matched market clusters](https://pmxt.dev/docs/api-reference/getV0Matched-market-clusters): Returns connected clusters of semantically matched markets across venues. Use this endpoint to browse or anchor market-level matches without flattening the response into pairwise rows.
7373
- [SQL](https://pmxt.dev/docs/sql): Query raw tick-level orderbook history with SQL.
7474
- [Execute a read-only SQL query against ClickHouse](https://pmxt.dev/docs/api-reference/postV0Sql)
7575

0 commit comments

Comments
 (0)