@0xinsider/sdk 0.43.0 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -0
- package/dist/client.d.ts +75 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +63 -2
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/provenance.d.ts +2 -2
- package/dist/provenance.js +3 -3
- package/dist/schema.d.ts +134 -13
- package/dist/schema.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/schema.d.ts
CHANGED
|
@@ -670,10 +670,12 @@ export type EdgeHunterObservation = {
|
|
|
670
670
|
directional_confidence: number | null;
|
|
671
671
|
/** Recorded side ordering score; higher values sort first. */
|
|
672
672
|
directional_rank_score: number;
|
|
673
|
-
/** 1-based rank within this observation cohort and snapshot. */
|
|
673
|
+
/** 1-based rank within this observation cohort and snapshot: directional_rank_score descending, then conviction_score descending, then category and condition_id. Admission decides which markets a response holds, not their rank, so under admission=most_held_48h or most_held_48h_by_type rank does not follow indexed_graded_holders. */
|
|
674
674
|
rank: number;
|
|
675
675
|
/** Required nullable frozen metadata context. Null only during the legacy-generation transition; selected reads require sidecar readiness and fail closed with 503 instead. */
|
|
676
676
|
market_context: EdgeHunterMarketContext | null;
|
|
677
|
+
/** S, A and B graded wallets in the 0xinsider index holding either outcome of the market, as the stored market universe last counted them. Every most-held place ranks by this count: admission=most_held_48h and most_held_48h_by_type, the default selection's most_held places and in_play slots. It can be larger or smaller than graded_holders, which counts the piled side of the provider's holder page. Null only on a row of a generation computed before this field existed. */
|
|
678
|
+
indexed_graded_holders: number | null;
|
|
677
679
|
};
|
|
678
680
|
/** Measured coverage of the frozen canonical observation generation and this requested page. For sports and esports reads, the first four counts remain global through category, cohort and all selectors; with admission=most_held_48h they count that selection's generation, where every wider_holder candidate it did not take is capacity_limited. They are neither a census of all provider markets nor a count of successfully evaluated holders. Selected and returned counts describe the requested projection. An unmappable legacy category synthesizes a zero-work empty generation with all six counts zero and no degradation reasons; it does not read the all-sports cache. */
|
|
679
681
|
export type EdgeHunterObservationCoverage = {
|
|
@@ -1407,6 +1409,7 @@ export type GameMarket = {
|
|
|
1407
1409
|
status: "observed" | "not_posed" | "unavailable";
|
|
1408
1410
|
was_disputed: boolean | null;
|
|
1409
1411
|
winning_outcome_index: number | null;
|
|
1412
|
+
oracle_updated_at: string | null;
|
|
1410
1413
|
};
|
|
1411
1414
|
};
|
|
1412
1415
|
/** One market's liquidity as Polymarket reports it (Gamma liquidityNum), verbatim. Polymarket documents it only as reported market liquidity, with no unit. It describes the market's resting order book, not traded volume. */
|
|
@@ -2205,7 +2208,7 @@ export type MarketHolder = {
|
|
|
2205
2208
|
/** Why `category_win_rate` is present or absent: `measured` (rate present), `not_enough_data` (under the floor of 5 decided markets in the category), or `unavailable` (the market has no canonical category, or the read failed; retry later). Never `untracked`: this route lists S, A and B wallets only, all on file. Always present on this route. */
|
|
2206
2209
|
category_win_rate_status: "measured" | "not_enough_data" | "unavailable" | "untracked";
|
|
2207
2210
|
category_evidence?: HolderCategoryEvidence;
|
|
2208
|
-
/** Whole days since this wallet's first trade
|
|
2211
|
+
/** Whole UTC calendar days since this wallet's first trade: the number of UTC dates from the first trade's date to today, so a first trade at 23:00 UTC reads 1 an hour later. Every wallet's age changes at 00:00 UTC, once a day, not on every request. The five badge fields are present together, only for a wallet that draws at least one badge. */
|
|
2209
2212
|
wallet_age_days?: number | null;
|
|
2210
2213
|
/** True when the wallet's first trade was under 30 days ago. */
|
|
2211
2214
|
is_new_wallet?: boolean;
|
|
@@ -2344,7 +2347,7 @@ export type MarketSearchResult = {
|
|
|
2344
2347
|
status: "active" | "closed";
|
|
2345
2348
|
event_slug?: string;
|
|
2346
2349
|
};
|
|
2347
|
-
/** `market_settled` data, also the MarketSettled frame on GET /api/v1/stream: a sports or esports game market settled, sent once per settled state the first time 0xinsider records it. A market can settle in
|
|
2350
|
+
/** `market_settled` data, also the MarketSettled frame on GET /api/v1/stream: a sports or esports game market settled, sent once per settled state the first time 0xinsider records it. A market can settle in more than one state: a resolved UMA question row with no winner yet, the same row with the winner ConditionalTokens paid on chain, and the condition row with the provider's payouts; each is its own event with its own settlement_id, except a state naming the winner an earlier event named, which is not sent. */
|
|
2348
2351
|
export type MarketSettledData = {
|
|
2349
2352
|
/** Polymarket condition ID of the market, lowercase. */
|
|
2350
2353
|
condition_id: string;
|
|
@@ -2354,7 +2357,7 @@ export type MarketSettledData = {
|
|
|
2354
2357
|
event_slug: string | null;
|
|
2355
2358
|
/** Polymarket game ID for the event as a string, the game_id of GET /api/v1/games, or null when the market stores none. */
|
|
2356
2359
|
game_id: string | null;
|
|
2357
|
-
/** The event slug league prefix (nba in nba-lal-gsw-2026-11-01), lowercase, read after a polyv2 copy prefix
|
|
2360
|
+
/** The event slug league prefix (nba in nba-lal-gsw-2026-11-01), lowercase, read after a polyv2 copy prefix. A PGA Tour golf slug starts with the year, so its markets are pga, from their series. null when neither names a league. */
|
|
2358
2361
|
league: string | null;
|
|
2359
2362
|
/** Polymarket sportsMarketType of the market (moneyline, spreads, totals, a prop type) verbatim, or null when the market stores none. */
|
|
2360
2363
|
sports_market_type: string | null;
|
|
@@ -2362,7 +2365,7 @@ export type MarketSettledData = {
|
|
|
2362
2365
|
outcomes: string[];
|
|
2363
2366
|
/** Set on a Polymarket polyv2 copy of a game whose original event has a moneyline market: the original event slug, which GET /api/v1/games serves. Such a copy reaches a webhook only when its settlement_filters name its condition ID or its own event slug. */
|
|
2364
2367
|
copy_of_event_slug: string | null;
|
|
2365
|
-
/** The settled state, the block GET /api/v1/games/{event_slug}/markets serves as settlement: status observed, oracle_status resolved, settled true. payouts is null on a resolved UMA question row and set on the condition row that follows,
|
|
2368
|
+
/** The settled state, the block GET /api/v1/games/{event_slug}/markets serves as settlement: status observed, oracle_status resolved, settled true. payouts is null on a resolved UMA question row, whose result and winning_outcome_index come from the payout ConditionalTokens reported on chain (null in an event sent before it paid), and set on the condition row that follows, sent as its own event unless it names a winner already sent. observed_at is when 0xinsider first saw this state. */
|
|
2366
2369
|
settlement: {
|
|
2367
2370
|
expected_settlement_time: string | null;
|
|
2368
2371
|
observed_at: string | null;
|
|
@@ -2376,6 +2379,7 @@ export type MarketSettledData = {
|
|
|
2376
2379
|
status: "observed" | "not_posed" | "unavailable";
|
|
2377
2380
|
was_disputed: boolean | null;
|
|
2378
2381
|
winning_outcome_index: number | null;
|
|
2382
|
+
oracle_updated_at: string | null;
|
|
2379
2383
|
};
|
|
2380
2384
|
};
|
|
2381
2385
|
export type MarketSnapshot = {
|
|
@@ -2461,6 +2465,7 @@ export type MarketSnapshot = {
|
|
|
2461
2465
|
status: "observed" | "not_posed" | "unavailable";
|
|
2462
2466
|
was_disputed: boolean | null;
|
|
2463
2467
|
winning_outcome_index: number | null;
|
|
2468
|
+
oracle_updated_at: string | null;
|
|
2464
2469
|
};
|
|
2465
2470
|
};
|
|
2466
2471
|
export type MarketSnapshotFreshness = {
|
|
@@ -2536,7 +2541,7 @@ export type MarketTopHolder = {
|
|
|
2536
2541
|
category_win_rate_game?: string;
|
|
2537
2542
|
/** Why `category_win_rate` is present or absent: `measured` (rate present), `not_enough_data` (the wallet is on file and under the floor of 5 decided markets in the category), `untracked` (0xinsider has no record of the wallet, so nothing was measured; `grade`, `in_scope_realized_pnl` and `in_scope_volume` are null too), or `unavailable` (a read failed; retry later). Absent when the market has no canonical category. */
|
|
2538
2543
|
category_win_rate_status?: "measured" | "not_enough_data" | "unavailable" | "untracked";
|
|
2539
|
-
/** Whole days since this wallet's first trade
|
|
2544
|
+
/** Whole UTC calendar days since this wallet's first trade: the number of UTC dates from the first trade's date to today, so a first trade at 23:00 UTC reads 1 an hour later. Every wallet's age changes at 00:00 UTC, once a day, not on every request. The five badge fields are present together, only for a wallet that draws at least one badge. */
|
|
2540
2545
|
wallet_age_days?: number | null;
|
|
2541
2546
|
/** True when the wallet's first trade was under 30 days ago. */
|
|
2542
2547
|
is_new_wallet?: boolean;
|
|
@@ -2577,6 +2582,33 @@ export type MarketTopHoldersTotals = {
|
|
|
2577
2582
|
/** The most holders the sample keeps per outcome (100). */
|
|
2578
2583
|
sample_cap: number;
|
|
2579
2584
|
};
|
|
2585
|
+
/** One taker fill of 100 USD or more on a market, from the exchange's on-chain fill events. */
|
|
2586
|
+
export type MarketTrade = {
|
|
2587
|
+
/** {transaction_hash}:{log_index}: one fill event, listed once. Deduplicate on it across reads. */
|
|
2588
|
+
id: string;
|
|
2589
|
+
/** The fill's block time, to the second. */
|
|
2590
|
+
traded_at: string;
|
|
2591
|
+
/** The taker's side: BUY took outcome shares, SELL gave them. */
|
|
2592
|
+
side: "BUY" | "SELL";
|
|
2593
|
+
/** The traded outcome's label; null when the market names none. */
|
|
2594
|
+
outcome: string | null;
|
|
2595
|
+
/** 0 for the first (Yes) outcome token, 1 for the second (No). */
|
|
2596
|
+
outcome_index: number;
|
|
2597
|
+
/** The traded outcome token's id (decimal string); null when the market holds none for that outcome. */
|
|
2598
|
+
token_id: string | null;
|
|
2599
|
+
/** Fill price per share, 0 to 1. */
|
|
2600
|
+
price: number;
|
|
2601
|
+
/** Outcome shares filled. */
|
|
2602
|
+
shares: number;
|
|
2603
|
+
/** USDC notional of the fill. */
|
|
2604
|
+
size_usd: number;
|
|
2605
|
+
/** The taker's wallet, lowercase. */
|
|
2606
|
+
taker: string;
|
|
2607
|
+
/** The fill's transaction, lowercase 0x hex. */
|
|
2608
|
+
transaction_hash: string;
|
|
2609
|
+
/** The fill event's log index in its transaction. */
|
|
2610
|
+
log_index: number;
|
|
2611
|
+
};
|
|
2580
2612
|
/** One market's net buyers and net sellers over a 24h or 7d window, as the market page's wallets in/out panel shows a Pro viewer. */
|
|
2581
2613
|
export type MarketWalletsInOut = {
|
|
2582
2614
|
/** The market's raw provider condition id. */
|
|
@@ -2652,7 +2684,7 @@ export type PickHolder = {
|
|
|
2652
2684
|
name: string | null;
|
|
2653
2685
|
/** All-time trader grade (S, A, B, C, D, F). */
|
|
2654
2686
|
grade: string | null;
|
|
2655
|
-
/** The wallet's most recent recorded trade
|
|
2687
|
+
/** The UTC day of the wallet's most recent recorded trade, served as that day's 00:00:00Z, stamped at serve time from its current trader record rather than frozen with the pick. It changes at most once a day per wallet, so the pick's ETag holds between polls. Always sent; null when no trade time is recorded. */
|
|
2656
2688
|
last_traded_at: string | null;
|
|
2657
2689
|
/** 0xinsider profile path segment this wallet links to: `@<username>` when that username resolves to this wallet alone, otherwise the lowercase wallet. Percent-encode the part after `@` and append to `https://0xinsider.com/profile/`. Stamped at serve time; absent on a body cached before the field shipped. */
|
|
2658
2690
|
profile_segment?: string;
|
|
@@ -2676,7 +2708,7 @@ export type PickHolder = {
|
|
|
2676
2708
|
category_win_rate_game?: string;
|
|
2677
2709
|
/** Why `category_win_rate` is present or absent on a `display_holders` entry: `measured` (rate present), `not_enough_data` (the wallet is below the settled-market floor of 5 in the category), or `unavailable` (the annotation read failed; retry later). Never `untracked`: every recorded holder is a graded wallet 0xinsider has on file. Absent entirely on `holders` entries, legacy rows, and payloads predating the field -- absence means the roster was never annotated, not a small sample. */
|
|
2678
2710
|
category_win_rate_status?: "measured" | "not_enough_data" | "unavailable" | "untracked";
|
|
2679
|
-
/** Whole days since this wallet's first trade
|
|
2711
|
+
/** Whole UTC calendar days since this wallet's first trade: the number of UTC dates from the first trade's date to today, so a first trade at 23:00 UTC reads 1 an hour later. Every wallet's age changes at 00:00 UTC, once a day, not on every request, and the pick's ETag holds between requests. Stamped at serve time from the wallet's current trader record, never frozen with the pick. The five badge fields are present together, and only for a wallet that carries at least one badge; all absent means no badge, or a body cached before the fields shipped. */
|
|
2680
2712
|
wallet_age_days?: number | null;
|
|
2681
2713
|
/** True when the wallet's first trade was under 30 days ago. Stamped at serve time from the wallet's current trader record, never frozen with the pick. The five badge fields are present together, and only for a wallet that carries at least one badge; all absent means no badge, or a body cached before the fields shipped. */
|
|
2682
2714
|
is_new_wallet?: boolean;
|
|
@@ -2686,6 +2718,32 @@ export type PickHolder = {
|
|
|
2686
2718
|
is_bot?: boolean;
|
|
2687
2719
|
/** The wallet's X handle from its Polymarket profile, normalized to 1-15 characters of [A-Za-z0-9_] with no `@`. Link it as `https://x.com/<handle>`. Stamped at serve time from the wallet's current trader record, never frozen with the pick. The five badge fields are present together, and only for a wallet that carries at least one badge; all absent means no badge, or a body cached before the fields shipped. */
|
|
2688
2720
|
x_username?: string | null;
|
|
2721
|
+
/** The wallet's edge over the price it paid in the pick's canonical category (`category`): how often the side it bought won, minus the average price it paid, over its settled markets there of $20 or more at a known entry price. The rule the site's sport leaderboards use for their Edge column, and the figure the pick card prints on the sport's line. Not `category_win_rate` minus `category_avg_price`: the edge counts its own sample. Present only with `category_win_rate_status` = `measured`, when the edge ranks (30 or more such markets, and the share of the decided ones that made money at settlement within 10 points of the win rate) and the wallet's realized P&L over them is above zero; otherwise `category_price_edge_hold` says why. Beside `category_win_rate_game` it is still the whole category's edge; the game's or league's is `category_scope_price_edge`. Recomputed at serve time from the daily record rebuild, not frozen with the pick. Absent otherwise and on payloads predating the field. */
|
|
2722
|
+
category_price_edge?: PickHolderPriceEdge;
|
|
2723
|
+
/** The same edge over the markets of the game or league `category_win_rate_game` names alone: the edge the pick card prints beside a game or league win rate (for example `-17.1 pp` in the Premier League). Present only beside `category_win_rate_game`, under the same rule over that game's or league's markets and the wallet's realized P&L there; otherwise, beside a game or league rate, `category_scope_price_edge_hold` says why. Never the whole category's edge in its place. Recomputed at serve time, not frozen with the pick. Absent otherwise and on payloads predating the field. */
|
|
2724
|
+
category_scope_price_edge?: PickHolderPriceEdge;
|
|
2725
|
+
/** Why there is no `category_price_edge` for a wallet with a measured rate, with the rule's figures when it has them. Present only with `category_win_rate_status` = `measured`, and never beside `category_price_edge`. Absent otherwise and on payloads predating the field. */
|
|
2726
|
+
category_price_edge_hold?: PickHolderPriceEdgeHold;
|
|
2727
|
+
/** Why there is no `category_scope_price_edge` beside a game or league rate, with the rule's figures when it has them. Present only beside `category_win_rate_game`, and never beside `category_scope_price_edge`. Absent otherwise and on payloads predating the field. */
|
|
2728
|
+
category_scope_price_edge_hold?: PickHolderPriceEdgeHold;
|
|
2729
|
+
};
|
|
2730
|
+
/** Edge over the price paid in one category, game or league: how often the side a wallet bought won, minus the average price it paid, over its settled markets there of $20 or more at a known entry price. Probabilities throughout: edge -0.171 is -17.1 percentage points. A market bought on both sides counts by its shares: the winning side's share of the shares bought is its hit, the cost over those shares its price. Figures from the daily record rebuild. */
|
|
2731
|
+
export type PickHolderPriceEdge = {
|
|
2732
|
+
/** Settled markets of $20 or more at a known entry price that the edge is measured over. */
|
|
2733
|
+
markets: number;
|
|
2734
|
+
/** Share of those markets whose bought side won, 0-1. */
|
|
2735
|
+
hit_rate: number;
|
|
2736
|
+
/** Mean entry price paid over the same markets, 0-1. Its sample is these markets, so it can differ from `category_avg_price` and `category_scope_avg_price`. */
|
|
2737
|
+
avg_price: number;
|
|
2738
|
+
/** hit_rate minus avg_price, full precision. */
|
|
2739
|
+
edge: number;
|
|
2740
|
+
};
|
|
2741
|
+
/** An edge the holder row does not show, and why. */
|
|
2742
|
+
export type PickHolderPriceEdgeHold = {
|
|
2743
|
+
/** category_loss: the edge ranks, and the wallet's realized P&L over the same markets is zero or below. too_few_markets: fewer than 30 counted markets. sample_mismatch: the share of the decided markets that made money at settlement is more than 10 points from the win rate over the same markets, so these markets do not describe the wallet's record. no_markets: no settled market of $20 or more at a known entry price. */
|
|
2744
|
+
hold: "category_loss" | "too_few_markets" | "sample_mismatch" | "no_markets";
|
|
2745
|
+
/** The rule's figures, as a shown edge carries them. Omitted for no_markets, and for too_few_markets when the wallet has fewer than 5 such markets. */
|
|
2746
|
+
record?: PickHolderPriceEdge;
|
|
2689
2747
|
};
|
|
2690
2748
|
/** Recorded lead wallet facts on a full response when available. Position and category history are frozen at publication; they are not live balances or pick win probabilities. */
|
|
2691
2749
|
export type PickLeadBacker = {
|
|
@@ -2748,7 +2806,7 @@ export type PickOfTheDay = {
|
|
|
2748
2806
|
is_locked?: boolean;
|
|
2749
2807
|
/** True once the backed game's kickoff has passed (kickoff <= now). When true the snapshotted pre-game price is no longer actionable. Absent for a legacy pick with no stored kickoff (treat as not-started). */
|
|
2750
2808
|
game_started?: boolean;
|
|
2751
|
-
/** Whether the backed game is over
|
|
2809
|
+
/** Whether the backed game is over, from the game's scoreboard. Once the game is recorded as finished it stays true, on later reads and on past days. A pick settled `win` or `loss` reads true unless the live scoreboard shows the game still in play. Tells a finished game from one still in play before `outcome` settles. Omitted when the game's state is unknown; absence is unknown, never false. */
|
|
2752
2810
|
game_ended?: boolean;
|
|
2753
2811
|
/** Settlement outcome of the backed side; 'pending' until the market resolves. */
|
|
2754
2812
|
outcome?: "pending" | "win" | "loss" | "void";
|
|
@@ -4527,7 +4585,7 @@ export type ReportPayload = {
|
|
|
4527
4585
|
grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
4528
4586
|
count: number | null;
|
|
4529
4587
|
})[] | null;
|
|
4530
|
-
/** Which markets the report counts. sports_and_esports
|
|
4588
|
+
/** Which markets the report counts. sports_and_esports: totals, categories, top trades and the grade cohort cover sports and esports markets only. Every period that ends on or after 2026-10-21 and every custom from/to range says so, as does an earlier stored period first built after 2026-10-24. all_markets: an earlier stored period built before then, which keeps every Polymarket market it published. A custom range can therefore count fewer trades than the stored report of the same dates. */
|
|
4531
4589
|
market_scope: "all_markets" | "sports_and_esports";
|
|
4532
4590
|
};
|
|
4533
4591
|
export type ReportReconciliation = {
|
|
@@ -4676,9 +4734,9 @@ export type ScoreCell = {
|
|
|
4676
4734
|
};
|
|
4677
4735
|
/** Shape the provider score string was parsed into. `two_side` is one aggregate per side (basketball `105-98`), `multi_set` is per-set columns (tennis `6-7(5-7), 6-0, 1-0`), `esports_series` is a maps/sets/format triplet (`000-000|2-0|Bo3`). Omitted when the score could not be parsed. */
|
|
4678
4736
|
export type ScoreFormat = "two_side" | "multi_set" | "esports_series";
|
|
4679
|
-
/** Settings for market_settled; every set field must match. Optional: subscribing without it stores {"sports_market_types": ["moneyline"]}, each game's winner market, and
|
|
4737
|
+
/** Settings for market_settled; every set field must match. Optional: subscribing without it stores {"sports_market_types": ["moneyline"]}, every market Polymarket labels moneyline, and sending it without the event is refused (400). That label is each head-to-head game's winner market, but in golf and other field events Polymarket labels every player market moneyline (winner, make the cut, round leader), so one tournament can send hundreds of states. Narrow it with leagues, which no market outside the list matches, including one whose league is null (a golf event slug that starts with a year, such as 2026-world-wide-technology-championship), or with condition_ids. A PATCH without it keeps the stored settings while the event stays subscribed; removing the event clears them. Stored as the API normalized it: trimmed and deduplicated, leagues, market types and condition IDs lowercased, and sports_market_types filled in when omitted. */
|
|
4680
4738
|
export type SettlementSubscriptionFilters = {
|
|
4681
|
-
/** Event slug league prefixes such as nba or epl, matched case-insensitively; any one matches. A polyv2 copy's league is read after its polyv2 prefix. */
|
|
4739
|
+
/** Event slug league prefixes such as nba or epl, matched case-insensitively; any one matches. A polyv2 copy's league is read after its polyv2 prefix. PGA Tour golf, whose event slugs start with the year, is pga. */
|
|
4682
4740
|
leagues?: string[];
|
|
4683
4741
|
/** Polymarket sportsMarketType values such as moneyline, spreads, totals or a prop type, matched case-insensitively; any one matches, and * matches every type. Omitted, it is ["moneyline"], or ["*"] when condition_ids names the markets. */
|
|
4684
4742
|
sports_market_types?: string[];
|
|
@@ -6615,6 +6673,7 @@ export interface OperationData {
|
|
|
6615
6673
|
status: "observed" | "not_posed" | "unavailable";
|
|
6616
6674
|
was_disputed: boolean | null;
|
|
6617
6675
|
winning_outcome_index: number | null;
|
|
6676
|
+
oracle_updated_at: string | null;
|
|
6618
6677
|
};
|
|
6619
6678
|
trading_terms?: {
|
|
6620
6679
|
fee_schedule: {
|
|
@@ -6649,6 +6708,7 @@ export interface OperationData {
|
|
|
6649
6708
|
listLargeTrades: LargeTrade[];
|
|
6650
6709
|
listLeaderboard: LeaderboardEntry[];
|
|
6651
6710
|
listLeaderboardLeagues: LeaderboardLeagues;
|
|
6711
|
+
listMarketTrades: MarketTrade[];
|
|
6652
6712
|
listPositions: Position[];
|
|
6653
6713
|
listProps: ({
|
|
6654
6714
|
competitors: string[];
|
|
@@ -6689,6 +6749,7 @@ export interface OperationData {
|
|
|
6689
6749
|
player_unavailable_reason: "missing_provider_title" | null;
|
|
6690
6750
|
resolved_at: string | null;
|
|
6691
6751
|
})[];
|
|
6752
|
+
listSettledMarkets: MarketSettledData[];
|
|
6692
6753
|
listSharpMoneyFlows: SmartMoneyFlowMarket[];
|
|
6693
6754
|
listSmartMoneyFlows: SmartMoneyFlowMarket[];
|
|
6694
6755
|
listSuspiciousTrades: SuspiciousTrade[];
|
|
@@ -6869,7 +6930,7 @@ export interface OperationQuery {
|
|
|
6869
6930
|
category?: string;
|
|
6870
6931
|
/** Required for view=observations; wider_holder, in_play or emerging_pile. Rejected for board and signals. wider_holder covers pregame markets that view=signals does not list at its widest selection (horizon_hours=48, min_grade=B, no selector), so until kickoff a market is read in one view or the other. A market view=signals lists leaves wider_holder as primary_slate_candidate, and is a wider_holder candidate again in the first refresh after view=signals stops listing it; signals_as_of names the view=signals snapshot each refresh read. Each refresh evaluates at most 8 markets per sport and cohort, wider_holder by soonest kickoff (most graded holders first among equal kickoffs) and in_play by most graded holders, so a market among a sport's 8 soonest stays evaluated until its game starts. wider_holder also evaluates up to 8 more markets per sport that kick off within 24 hours, most graded holders first, so the most-held markets appear up to a day before kickoff. Each of these keeps its place in later refreshes until its game starts while its holder page still shows a card or could not be read, so a more-held market waits for a free place instead of displacing it. Each row's admitted_by names its place, most_held or soonest_kickoff. The rest count in coverage.capacity_limited_markets. Emerging pile is a wider-holder projection with sharp_pct in [0.75,0.85), complete holder scans and future kickoff, not an independent population or arrival history. */
|
|
6871
6932
|
cohort?: "wider_holder" | "in_play" | "emerging_pile";
|
|
6872
|
-
/** Opt-in admission rule for view=observations with cohort=wider_holder; rejected for every other view and cohort. most_held_48h returns the most-held selection instead of the default one: per sport, up to 8 wider_holder markets kicking off within 48 hours, most
|
|
6933
|
+
/** Opt-in admission rule for view=observations with cohort=wider_holder; rejected for every other view and cohort. most_held_48h returns the most-held selection instead of the default one: per sport, up to 8 wider_holder markets kicking off within 48 hours, most indexed_graded_holders first, then most volume, then soonest kickoff, at most 4 per event. indexed_graded_holders, on every row, counts the S, A and B wallets in the 0xinsider index holding either outcome; graded_holders counts the piled side of the provider's holder page and can be larger or smaller, so check the selection against indexed_graded_holders. rank orders the admitted rows by directional_rank_score, as in the default selection, not by either count. It is recomputed every refresh and keeps no place, so a more-held market displaces a less-held one; markets view=signals lists stay excluded. Every row carries admitted_by most_held_48h, including a market the default selection also evaluates, and the response echoes admission. funnel, coverage, degraded and degradation_reasons describe this selection: a wider_holder candidate it did not take counts as capacity_limited, and one it skips counts as provider_excluded. It skips every market of a game the provider marks postponed, cancelled, suspended or final, its exact-score, half-time and other side events included, and a market of the game's main event at a Yes price of 0.02 or lower, or 0.98 or higher. Its markets that no default place covers are read at most once per 10 minutes, one with no holder page to serve right after every default market with none, so a row can rest on a holder page up to 15 minutes old, or up to 30 minutes for a market more than an hour before kickoff that has not traded since that page (holder_snapshot_at). most_held_48h_by_type requires market_types and runs the same rule within each named type: per sport and market_context.market_type, up to 8 markets (4 per event), most indexed_graded_holders first, then volume, then soonest kickoff, so a type whose markets hold fewer wallets than team-win markets still gets its own places. Its rows carry admitted_by most_held_48h_by_type and it has no departures. Its markets no other selection read take turns with the most_held_48h ones in that same order, at most once per 10 minutes. A market type not asked for in the last 30 minutes answers 503 read_model_warming with Retry-After 45 s while the next refresh computes it. Omit for the default selection. Cursors and ETags bind it. */
|
|
6873
6934
|
admission?: "most_held_48h" | "most_held_48h_by_type";
|
|
6874
6935
|
/** Board and signals: S, A or B, default B. Requires a piled-side holder at the selected grade floor or better, without removing other holders. Rejected for observations. */
|
|
6875
6936
|
min_grade?: "S" | "A" | "B";
|
|
@@ -7297,6 +7358,16 @@ export interface OperationQuery {
|
|
|
7297
7358
|
activity?: "all" | "active" | "inactive";
|
|
7298
7359
|
};
|
|
7299
7360
|
listLeaderboardLeagues: Record<string, never>;
|
|
7361
|
+
listMarketTrades: {
|
|
7362
|
+
/** Inclusive RFC 3339 lower bound on traded_at. Omitted or earlier than coverage.recorded_from: the walk runs to the start of the record (coverage.recorded_from). With cursor, it must match the cursor's. */
|
|
7363
|
+
from?: string;
|
|
7364
|
+
/** Exclusive RFC 3339 upper bound on traded_at. A first page ends at the earlier of to and coverage.complete_through. With cursor, it must match the cursor's. */
|
|
7365
|
+
to?: string;
|
|
7366
|
+
/** Page size. Out-of-range values are clamped to 1..500. */
|
|
7367
|
+
limit?: number;
|
|
7368
|
+
/** Opaque mtr_v1_ cursor from next_cursor. It continues the walk before the last fill of the previous page and keeps the market, from and to it was issued for: another market, or a from or to that differs from the cursor's, answers 400 with error.reason cursor_expired. A cursor this endpoint did not issue returns 400 with error.param=cursor. */
|
|
7369
|
+
cursor?: string;
|
|
7370
|
+
};
|
|
7300
7371
|
listPositions: {
|
|
7301
7372
|
/** Maximum number of current positions to return. Out-of-range values are clamped to 1..100. */
|
|
7302
7373
|
limit?: number;
|
|
@@ -7347,6 +7418,18 @@ export interface OperationQuery {
|
|
|
7347
7418
|
/** Backward-compatible alias for expand. Repeatable: quotes. */
|
|
7348
7419
|
"expand[]"?: "quotes"[];
|
|
7349
7420
|
};
|
|
7421
|
+
listSettledMarkets: {
|
|
7422
|
+
/** RFC 3339 time, required without cursor. Rows whose settlement.observed_at is at or after it. With cursor, the cursor's position replaces it. */
|
|
7423
|
+
since?: string;
|
|
7424
|
+
/** Comma-separated provider market types to keep, case-insensitive: moneyline, spreads, totals, a prop type; at most 64. Omitted: moneyline, or with cursor the cursor's filter. * keeps every type, including markets with no stored type. */
|
|
7425
|
+
sports_market_type?: string;
|
|
7426
|
+
/** Comma-separated leagues to keep, as the rows' league reports them (nba, epl, or pga for PGA Tour golf); at most 32, each starting with a letter and holding no hyphen. Omitted: every league, or with cursor the cursor's filter. */
|
|
7427
|
+
league?: string;
|
|
7428
|
+
/** Page size. Out-of-range values are clamped to 1..100. */
|
|
7429
|
+
limit?: number;
|
|
7430
|
+
/** Opaque stl_v1_ cursor from next_cursor. It replaces since and keeps the filters it was issued for: a sports_market_type or league sent with it must match them, or the read answers 400 with error.reason cursor_expired. A cursor this endpoint did not issue returns 400 with error.param=cursor. */
|
|
7431
|
+
cursor?: string;
|
|
7432
|
+
};
|
|
7350
7433
|
listSharpMoneyFlows: {
|
|
7351
7434
|
/** Lookback window for grade-filtered whale flow aggregation. */
|
|
7352
7435
|
timeframe?: "1h" | "4h" | "24h" | "7d";
|
|
@@ -7735,8 +7818,13 @@ export interface OperationPath {
|
|
|
7735
7818
|
listLargeTrades: Record<string, never>;
|
|
7736
7819
|
listLeaderboard: Record<string, never>;
|
|
7737
7820
|
listLeaderboardLeagues: Record<string, never>;
|
|
7821
|
+
listMarketTrades: {
|
|
7822
|
+
/** Market condition ID. Accepts the raw provider-backed condition_id returned by /api/v1/markets/search or /api/v1/markets/explore, or the mkt_-prefixed market.id emitted by V1 responses. */
|
|
7823
|
+
condition_id: string;
|
|
7824
|
+
};
|
|
7738
7825
|
listPositions: Record<string, never>;
|
|
7739
7826
|
listProps: Record<string, never>;
|
|
7827
|
+
listSettledMarkets: Record<string, never>;
|
|
7740
7828
|
listSharpMoneyFlows: Record<string, never>;
|
|
7741
7829
|
listSmartMoneyFlows: Record<string, never>;
|
|
7742
7830
|
listSuspiciousTrades: Record<string, never>;
|
|
@@ -7901,8 +7989,10 @@ export interface OperationBody {
|
|
|
7901
7989
|
listLargeTrades: never;
|
|
7902
7990
|
listLeaderboard: never;
|
|
7903
7991
|
listLeaderboardLeagues: never;
|
|
7992
|
+
listMarketTrades: never;
|
|
7904
7993
|
listPositions: never;
|
|
7905
7994
|
listProps: never;
|
|
7995
|
+
listSettledMarkets: never;
|
|
7906
7996
|
listSharpMoneyFlows: never;
|
|
7907
7997
|
listSmartMoneyFlows: never;
|
|
7908
7998
|
listSuspiciousTrades: never;
|
|
@@ -8367,6 +8457,29 @@ export interface OperationResponse {
|
|
|
8367
8457
|
data: OperationData["listLeaderboardLeagues"];
|
|
8368
8458
|
meta: ResponseMeta;
|
|
8369
8459
|
};
|
|
8460
|
+
listMarketTrades: {
|
|
8461
|
+
object: "list";
|
|
8462
|
+
/** Newest first by traded_at, then transaction_hash, then log_index. */
|
|
8463
|
+
data: OperationData["listMarketTrades"];
|
|
8464
|
+
/** True when older fills in the window remain: send next_cursor for them. */
|
|
8465
|
+
has_more: boolean;
|
|
8466
|
+
/** Opaque mtr_v1_ cursor for the next page; null when has_more is false. */
|
|
8467
|
+
next_cursor: string | null;
|
|
8468
|
+
/** The market's raw condition_id, lowercase. */
|
|
8469
|
+
condition_id: string;
|
|
8470
|
+
/** What the record holds. A window outside it reads empty because it is outside the record, not because nothing traded. */
|
|
8471
|
+
coverage: {
|
|
8472
|
+
/** A fill smaller than this, in USD, is not stored: 100. */
|
|
8473
|
+
min_size_usd: number;
|
|
8474
|
+
/** Where the record starts: the later of when recording began and 00:00 UTC on the day retention_days before today. No fill before this instant is served. */
|
|
8475
|
+
recorded_from: string;
|
|
8476
|
+
/** Every fill at or before this instant is in the record, and a first page serves none after it. It trails now by a few minutes. */
|
|
8477
|
+
complete_through: string;
|
|
8478
|
+
/** A stored fill is served at least this many days, then deleted. */
|
|
8479
|
+
retention_days: number;
|
|
8480
|
+
};
|
|
8481
|
+
meta: ResponseMeta;
|
|
8482
|
+
};
|
|
8370
8483
|
listPositions: {
|
|
8371
8484
|
object: "list";
|
|
8372
8485
|
data: OperationData["listPositions"];
|
|
@@ -8397,6 +8510,14 @@ export interface OperationResponse {
|
|
|
8397
8510
|
rows_without_book: number | null;
|
|
8398
8511
|
};
|
|
8399
8512
|
};
|
|
8513
|
+
listSettledMarkets: {
|
|
8514
|
+
complete_through: string;
|
|
8515
|
+
data: OperationData["listSettledMarkets"];
|
|
8516
|
+
has_more: boolean;
|
|
8517
|
+
meta: ResponseMeta;
|
|
8518
|
+
next_cursor: string;
|
|
8519
|
+
object: string;
|
|
8520
|
+
};
|
|
8400
8521
|
listSharpMoneyFlows: {
|
|
8401
8522
|
object: "list";
|
|
8402
8523
|
data: OperationData["listSharpMoneyFlows"];
|