@0xinsider/mcp 3.4.0 → 3.5.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 +26 -5
- package/dist/catalog.generated.d.ts +40 -1
- package/dist/catalog.generated.d.ts.map +1 -1
- package/dist/catalog.generated.js +50 -1
- package/dist/catalog.generated.js.map +1 -1
- package/dist/cli-lib.d.ts +0 -1
- package/dist/cli-lib.d.ts.map +1 -1
- package/dist/cli-lib.js +0 -3
- package/dist/cli-lib.js.map +1 -1
- package/dist/client.d.ts +35 -12
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +37 -133
- package/dist/client.js.map +1 -1
- package/dist/constants.d.ts +1 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -2
- package/dist/constants.js.map +1 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +2 -1
- package/dist/resources/index.js.map +1 -1
- package/dist/sdk/client.d.ts +7 -0
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/client.js +7 -1
- package/dist/sdk/client.js.map +1 -1
- package/dist/sdk/index.d.ts +5 -5
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +4 -3
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/retry.d.ts +19 -0
- package/dist/sdk/retry.d.ts.map +1 -1
- package/dist/sdk/retry.js +111 -0
- package/dist/sdk/retry.js.map +1 -1
- package/dist/sdk/schema.d.ts +299 -40
- package/dist/sdk/schema.d.ts.map +1 -1
- package/dist/sdk/webhooks.d.ts +93 -174
- package/dist/sdk/webhooks.d.ts.map +1 -1
- package/dist/sdk/webhooks.js +22 -6
- package/dist/sdk/webhooks.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +14 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/combos.d.ts +6 -0
- package/dist/tools/combos.d.ts.map +1 -0
- package/dist/tools/combos.js +133 -0
- package/dist/tools/combos.js.map +1 -0
- package/dist/tools/get-trader.d.ts.map +1 -1
- package/dist/tools/get-trader.js +7 -2
- package/dist/tools/get-trader.js.map +1 -1
- package/dist/tools/large-trade-counterparties.d.ts +5 -0
- package/dist/tools/large-trade-counterparties.d.ts.map +1 -0
- package/dist/tools/large-trade-counterparties.js +91 -0
- package/dist/tools/large-trade-counterparties.js.map +1 -0
- package/dist/tools/market-reads.d.ts +5 -0
- package/dist/tools/market-reads.d.ts.map +1 -0
- package/dist/tools/market-reads.js +100 -0
- package/dist/tools/market-reads.js.map +1 -0
- package/dist/tools/pick-of-the-day.js +1 -1
- package/dist/tools/read-parity.d.ts.map +1 -1
- package/dist/tools/read-parity.js +8 -4
- package/dist/tools/read-parity.js.map +1 -1
- package/dist/tools/trader-reads.d.ts +6 -0
- package/dist/tools/trader-reads.d.ts.map +1 -0
- package/dist/tools/trader-reads.js +99 -0
- package/dist/tools/trader-reads.js.map +1 -0
- package/package.json +1 -1
package/dist/sdk/schema.d.ts
CHANGED
|
@@ -1046,7 +1046,7 @@ export type ExploreMarket = {
|
|
|
1046
1046
|
no_change_pct_24h: number | null;
|
|
1047
1047
|
/** Backend-owned deterministic market discovery score used by the hot sort. */
|
|
1048
1048
|
discover_score: number | null;
|
|
1049
|
-
score_components
|
|
1049
|
+
score_components: {
|
|
1050
1050
|
volume_signal: number | null;
|
|
1051
1051
|
/** Canonical key since #16304; whale_signal is its deprecated spelling, emitted beside it with the same value. */
|
|
1052
1052
|
large_trade_signal: number | null;
|
|
@@ -1063,7 +1063,7 @@ export type ExploreMarket = {
|
|
|
1063
1063
|
price_move_signal: number | null;
|
|
1064
1064
|
missing_price_penalty: number;
|
|
1065
1065
|
};
|
|
1066
|
-
freshness
|
|
1066
|
+
freshness: {
|
|
1067
1067
|
enrichment_status: "available" | "unavailable";
|
|
1068
1068
|
price_status: "available" | "unavailable";
|
|
1069
1069
|
};
|
|
@@ -1083,6 +1083,40 @@ export type ExportCounts = {
|
|
|
1083
1083
|
estimated_trade_rows: number;
|
|
1084
1084
|
estimated_size_mb: number;
|
|
1085
1085
|
};
|
|
1086
|
+
/** `export_job_cancelled` data: the owner's export stopped because its owner cancelled it. */
|
|
1087
|
+
export type ExportJobCancelledData = {
|
|
1088
|
+
job_id: number;
|
|
1089
|
+
status: "cancelled";
|
|
1090
|
+
format: string;
|
|
1091
|
+
next_action: "resubmit";
|
|
1092
|
+
};
|
|
1093
|
+
/** `export_job_expired` data: the owner's ready export passed retention. */
|
|
1094
|
+
export type ExportJobExpiredData = {
|
|
1095
|
+
job_id: number;
|
|
1096
|
+
status: "expired";
|
|
1097
|
+
format: string;
|
|
1098
|
+
next_action: "resubmit";
|
|
1099
|
+
};
|
|
1100
|
+
/** `export_job_failed` data: the owner's asynchronous export reached a terminal failure. */
|
|
1101
|
+
export type ExportJobFailedData = {
|
|
1102
|
+
job_id: number;
|
|
1103
|
+
status: "failed";
|
|
1104
|
+
format: string;
|
|
1105
|
+
next_action: "resubmit";
|
|
1106
|
+
failure_reason: string;
|
|
1107
|
+
};
|
|
1108
|
+
/** `export_job_ready` data: the owner's asynchronous export can be downloaded. Download authorization stays on the status and download routes. */
|
|
1109
|
+
export type ExportJobReadyData = {
|
|
1110
|
+
job_id: number;
|
|
1111
|
+
status: "ready";
|
|
1112
|
+
format: string;
|
|
1113
|
+
next_action: "download";
|
|
1114
|
+
total_trades: number | null;
|
|
1115
|
+
processed_trades: number | null;
|
|
1116
|
+
/** Artifact size in bytes. */
|
|
1117
|
+
file_size: number | null;
|
|
1118
|
+
data_as_of: string | null;
|
|
1119
|
+
};
|
|
1086
1120
|
export type ExportSourceRange = {
|
|
1087
1121
|
first_pnl_date: string | null;
|
|
1088
1122
|
last_pnl_date: string | null;
|
|
@@ -1298,19 +1332,19 @@ export type LargeExportPolicy = {
|
|
|
1298
1332
|
/** Programmatic API-key-gated export routes (submit/status/download/cancel) and supported formats (json, ndjson, csv). */
|
|
1299
1333
|
v1_async: {
|
|
1300
1334
|
/** POST route template to submit an export job. fresh=true asks for a snapshot read after the submit instead of reusing a finished one. */
|
|
1301
|
-
submit_route
|
|
1335
|
+
submit_route: string;
|
|
1302
1336
|
/** GET route template to poll job status. */
|
|
1303
|
-
status_route
|
|
1337
|
+
status_route: string;
|
|
1304
1338
|
/** GET route template that 302-redirects to the file. */
|
|
1305
|
-
download_route
|
|
1339
|
+
download_route: string;
|
|
1306
1340
|
/** POST route template to cancel a queued or running job. */
|
|
1307
|
-
cancel_route
|
|
1341
|
+
cancel_route: string;
|
|
1308
1342
|
/** Supported ?format= values. */
|
|
1309
|
-
formats
|
|
1343
|
+
formats: ("json" | "ndjson" | "csv")[];
|
|
1310
1344
|
/** Possible job status values. */
|
|
1311
|
-
status_values
|
|
1345
|
+
status_values: ("queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired" | "cancel_requested" | "cancelled")[];
|
|
1312
1346
|
/** How long a finished export is retained before expiry. */
|
|
1313
|
-
retention
|
|
1347
|
+
retention: string;
|
|
1314
1348
|
};
|
|
1315
1349
|
direct_streaming: Record<string, unknown>;
|
|
1316
1350
|
async_job: Record<string, unknown>;
|
|
@@ -1373,7 +1407,7 @@ export type LargePosition = {
|
|
|
1373
1407
|
username?: string;
|
|
1374
1408
|
grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
1375
1409
|
win_rate?: number;
|
|
1376
|
-
/**
|
|
1410
|
+
/** Polymarket's net total P&L for the wallet in USD: native Polymarket position P&L across all markets, fees included, plus credited maker and taker rebates. The 0xinsider profile's Total P&L is this figure unless the wallet has a published correction for neg-risk conversions, which GET /api/v1/trader/{address} serves as pnl.correction; the profile then shows pnl.correction.net_total. Distinct from this position's position_unrealized_pnl. Omitted when the wallet has no native accounting snapshot. */
|
|
1377
1411
|
pnl?: number;
|
|
1378
1412
|
markets_traded?: number;
|
|
1379
1413
|
};
|
|
@@ -1387,6 +1421,11 @@ export type LargePosition = {
|
|
|
1387
1421
|
category?: string;
|
|
1388
1422
|
};
|
|
1389
1423
|
};
|
|
1424
|
+
/** `large_positions_updated` data: one large-positions refresh finished. */
|
|
1425
|
+
export type LargePositionsUpdatedData = {
|
|
1426
|
+
/** Positions the refresh published. */
|
|
1427
|
+
count: number;
|
|
1428
|
+
};
|
|
1390
1429
|
export type LargeTrade = {
|
|
1391
1430
|
/** Prefixed ID (wt_...). */
|
|
1392
1431
|
id: string;
|
|
@@ -1458,6 +1497,38 @@ export type LargeTradeHistoryMeta = {
|
|
|
1458
1497
|
reason: string;
|
|
1459
1498
|
};
|
|
1460
1499
|
};
|
|
1500
|
+
/** `large_trade_inserted_v2` data (Pro and Max): one large trade, with the trade itself. The three amounts are decimal strings that keep the stored precision: parse them with a decimal library when the exact value matters. The endpoint's `trade_filters` decide which trades it receives. */
|
|
1501
|
+
export type LargeTradeInsertedV2Data = {
|
|
1502
|
+
/** Stable identity of this trade's event. It equals the envelope `id`, and the `id` of the same event on `GET /api/v1/events/feed/since`. */
|
|
1503
|
+
event_id: string;
|
|
1504
|
+
/** Numeric id of the trade. `GET /api/v1/large-trades/{id}` accepts it. */
|
|
1505
|
+
whale_alert_id: number;
|
|
1506
|
+
/** Polymarket condition id of the market. */
|
|
1507
|
+
condition_id: string;
|
|
1508
|
+
/** 0xinsider's numeric id for the wallet. */
|
|
1509
|
+
trader_id: number;
|
|
1510
|
+
/** Address of the wallet that made the trade. */
|
|
1511
|
+
wallet: string;
|
|
1512
|
+
/** The wallet's grade when the event was published; `null` when it has none. */
|
|
1513
|
+
grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
1514
|
+
/** USD notional of the trade; decimal string. */
|
|
1515
|
+
size_usd: string;
|
|
1516
|
+
/** Shares traded; decimal string. */
|
|
1517
|
+
shares: string;
|
|
1518
|
+
/** Price paid per share; decimal string. */
|
|
1519
|
+
price: string;
|
|
1520
|
+
side: "BUY" | "SELL";
|
|
1521
|
+
/** Polymarket's index of the outcome traded. */
|
|
1522
|
+
outcome_index: number;
|
|
1523
|
+
/** When the trade filled on Polymarket. The envelope's `created_at` is this instant. */
|
|
1524
|
+
traded_at: string;
|
|
1525
|
+
platform: "polymarket";
|
|
1526
|
+
};
|
|
1527
|
+
/** `large_trades_inserted` data (Pro and Max): new large trades were ingested. It carries a count and no trade; subscribe to `large_trade_inserted_v2` for the trade itself. The deprecated spelling `whale_trades_inserted` delivers the same object. */
|
|
1528
|
+
export type LargeTradesInsertedData = {
|
|
1529
|
+
/** Large trades the producing batch admitted. */
|
|
1530
|
+
count: number;
|
|
1531
|
+
};
|
|
1461
1532
|
/** All present fields narrow large_trade_inserted_v2 delivery. Grade is observed at publication; ungraded trades do not match min_grade. An empty object matches every large trade. */
|
|
1462
1533
|
export type LargeTradeSubscriptionFilters = {
|
|
1463
1534
|
/** Raw provider condition ID or mkt_-prefixed market ID. */
|
|
@@ -1481,6 +1552,8 @@ export type LeaderboardEntry = {
|
|
|
1481
1552
|
pnl?: number;
|
|
1482
1553
|
/** Native realized P&L plus credited maker and taker rebates in USD, with fees already included. The exact numeric value is truncated toward zero to cents before JSON conversion. Omitted when the wallet has no native snapshot or the snapshot has no net realized value; never filled from another P&L basis. */
|
|
1483
1554
|
realized_pnl?: number;
|
|
1555
|
+
/** The 0xinsider correction to Polymarket's P&L for neg-risk conversions. Present only when one is published; realized_pnl keeps Polymarket's own figure and pnl_correction.realized adds the amount to it. The grade and the ranking use the corrected figure. net_total is omitted here. */
|
|
1556
|
+
pnl_correction?: PnlCorrection;
|
|
1484
1557
|
/** Full-history both-sides USD cash volume from a verified Polymarket user-volume observation. Omitted without coverage. */
|
|
1485
1558
|
volume?: number;
|
|
1486
1559
|
markets_traded?: number;
|
|
@@ -1492,6 +1565,48 @@ export type LeaderboardEntry = {
|
|
|
1492
1565
|
platform: "polymarket";
|
|
1493
1566
|
last_active?: string;
|
|
1494
1567
|
};
|
|
1568
|
+
/** One side's score line inside a `live_sports_updated` pulse. */
|
|
1569
|
+
export type LiveSportsScoreEntry = {
|
|
1570
|
+
/** Team name, ordered for the league (away first where the league reads that way). */
|
|
1571
|
+
team: string;
|
|
1572
|
+
/** This side's score as the provider sends it. */
|
|
1573
|
+
score: string;
|
|
1574
|
+
/** Esports series only: this side's current-map score. Absent on other sports. */
|
|
1575
|
+
map_score?: string;
|
|
1576
|
+
};
|
|
1577
|
+
/** `live_sports_updated` data: one bounded pulse for one live game. A pulse fires when a material field moved since this game's previous delivered pulse (`scores`, `status`, `period`, `live`, `ended`), at most once per game per 20 seconds. A `live` or `ended` transition is exempt from that interval, and the game clock alone never fires a pulse. Suppressed frames are folded into the next pulse's `changed`, and its body carries the current state. */
|
|
1578
|
+
export type LiveSportsUpdatedData = {
|
|
1579
|
+
/** The Polymarket event slug this game trades under. */
|
|
1580
|
+
event_slug: string;
|
|
1581
|
+
/** Provider game id, or `null` when the frame carried none. */
|
|
1582
|
+
game_id: string | null;
|
|
1583
|
+
/** League abbreviation, or `null`. */
|
|
1584
|
+
league: string | null;
|
|
1585
|
+
/** Durable per-game pulse ordinal, increasing by one per delivered pulse. Deliveries are not ordered, so drop a pulse whose version you already saw. */
|
|
1586
|
+
version: number;
|
|
1587
|
+
/** Material fields that moved since this game's previous delivered pulse. */
|
|
1588
|
+
changed: ("scores" | "status" | "period" | "live" | "ended")[];
|
|
1589
|
+
/** Provider frame time, or `null` when the frame carried none. Never replaced with a local clock. */
|
|
1590
|
+
observed_at: string | null;
|
|
1591
|
+
/** When the pulse was admitted. */
|
|
1592
|
+
published_at: string;
|
|
1593
|
+
/** Provider status text, or `null`. */
|
|
1594
|
+
status: string | null;
|
|
1595
|
+
/** Provider period text ("Q3", "Map 2/3"), or `null`. */
|
|
1596
|
+
period: string | null;
|
|
1597
|
+
/** Game clock, or `null`. Not a material field: it never fires a pulse on its own. */
|
|
1598
|
+
clock: string | null;
|
|
1599
|
+
/** Provider live flag, or `null` when the frame carried none. */
|
|
1600
|
+
live: boolean | null;
|
|
1601
|
+
/** Whether the provider has marked this game final. */
|
|
1602
|
+
ended: boolean;
|
|
1603
|
+
/** Per-side scores, one line per team. */
|
|
1604
|
+
scores: LiveSportsScoreEntry[];
|
|
1605
|
+
/** Esports `BoN` series token, or `null` on every other sport. */
|
|
1606
|
+
series_format: string | null;
|
|
1607
|
+
/** Public game page. Re-read it after a gap instead of replaying pulses. */
|
|
1608
|
+
snapshot_url: string;
|
|
1609
|
+
};
|
|
1495
1610
|
/** Provider-first bucketed OHLC price candles for a market's outcome tokens, derived from our stored copy of the Polymarket CLOB prices-history series (covers open and resolved markets). */
|
|
1496
1611
|
export type MarketCandles = {
|
|
1497
1612
|
/** Market condition id the candles were read for. */
|
|
@@ -1518,7 +1633,7 @@ export type MarketFlow = {
|
|
|
1518
1633
|
/** The Polymarket CLOB token id (ERC1155 asset id, decimal string) for the net-flow direction outcome; null when unavailable (e.g. unsynced markets). */
|
|
1519
1634
|
token_id: string | null;
|
|
1520
1635
|
/** Canonical key since #16304 (Polymarket's noun is large trade); whale_trade_count is its deprecated spelling, emitted beside it with the same value. */
|
|
1521
|
-
large_trade_count
|
|
1636
|
+
large_trade_count: number;
|
|
1522
1637
|
whale_trade_count: number;
|
|
1523
1638
|
buy_volume_usd: number;
|
|
1524
1639
|
sell_volume_usd: number;
|
|
@@ -1545,7 +1660,7 @@ export type MarketFlow = {
|
|
|
1545
1660
|
/** The Polymarket CLOB token id (ERC1155 asset id, decimal string) for the net-flow direction outcome; null when unavailable (e.g. unsynced markets). */
|
|
1546
1661
|
token_id: string | null;
|
|
1547
1662
|
/** Canonical key since #16304 (Polymarket's noun is large trade); whale_trade_count is its deprecated spelling, emitted beside it with the same value. */
|
|
1548
|
-
large_trade_count
|
|
1663
|
+
large_trade_count: number;
|
|
1549
1664
|
whale_trade_count: number;
|
|
1550
1665
|
buy_volume_usd: number;
|
|
1551
1666
|
sell_volume_usd: number;
|
|
@@ -1686,7 +1801,15 @@ export type MarketSnapshot = {
|
|
|
1686
1801
|
image: string | null;
|
|
1687
1802
|
/** Polymarket series slug from the canonical identity row, null when unavailable. A sports series identifies a league and must not be used as a per-matchup grouping key. */
|
|
1688
1803
|
series_slug: string | null;
|
|
1804
|
+
/**
|
|
1805
|
+
* Always null. Deprecated (#24169): 0xinsider has never stored a value for this field. The key stays on the wire so existing clients keep parsing; do not read it.
|
|
1806
|
+
* @deprecated
|
|
1807
|
+
*/
|
|
1689
1808
|
market_type: string | null;
|
|
1809
|
+
/**
|
|
1810
|
+
* Always null. Deprecated (#24169): 0xinsider stores no value for this field on a Polymarket market. The key stays on the wire so existing clients keep parsing; do not read it. market.status and market.resolved_at say whether the market has closed or resolved.
|
|
1811
|
+
* @deprecated
|
|
1812
|
+
*/
|
|
1690
1813
|
market_result: string | null;
|
|
1691
1814
|
created_at: string | null;
|
|
1692
1815
|
end_date: string | null;
|
|
@@ -1696,6 +1819,7 @@ export type MarketSnapshot = {
|
|
|
1696
1819
|
side: "yes" | "no";
|
|
1697
1820
|
label: string;
|
|
1698
1821
|
token_id?: string;
|
|
1822
|
+
/** The outcome's display price, the probability Polymarket shows for it: the midpoint of the cached top of book when the spread is at most 0.10, otherwise the token's last trade price. Omitted when neither is known, including a book wider than 0.10 with no last trade on record; top_of_book still carries that book's best_bid and best_ask. expand=trust explains a missing value in trust.current_price. */
|
|
1699
1823
|
current_price?: number;
|
|
1700
1824
|
top_of_book: MarketSnapshotTopOfBook;
|
|
1701
1825
|
})[];
|
|
@@ -1756,7 +1880,7 @@ export type MarketSnapshotTrust = {
|
|
|
1756
1880
|
};
|
|
1757
1881
|
export type McpJsonRpcError = {
|
|
1758
1882
|
jsonrpc: "2.0";
|
|
1759
|
-
id
|
|
1883
|
+
id: string | number | null;
|
|
1760
1884
|
error: {
|
|
1761
1885
|
code: number;
|
|
1762
1886
|
message: string;
|
|
@@ -1996,7 +2120,10 @@ export type PickOfTheDay = {
|
|
|
1996
2120
|
publication_order?: number;
|
|
1997
2121
|
/** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
|
|
1998
2122
|
is_free_selection?: boolean;
|
|
1999
|
-
/**
|
|
2123
|
+
/**
|
|
2124
|
+
* Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.
|
|
2125
|
+
* @deprecated
|
|
2126
|
+
*/
|
|
2000
2127
|
supersedes_pick_id: string | null;
|
|
2001
2128
|
/** Optional full-only lead wallet publication facts. Omitted on legacy picks or when the recorded evidence is unavailable. */
|
|
2002
2129
|
lead_backer?: PickLeadBacker;
|
|
@@ -2035,7 +2162,7 @@ export type PickOfTheDayArchiveEntry = {
|
|
|
2035
2162
|
* Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.
|
|
2036
2163
|
* @deprecated
|
|
2037
2164
|
*/
|
|
2038
|
-
pick_rank
|
|
2165
|
+
pick_rank: number;
|
|
2039
2166
|
/** When this selection was published, as RFC3339 UTC. Use this instant for publication feeds and timelines; pick_date is the America/New_York product day, not a publication timestamp. Automatic picks publish from 03:00 America/New_York on pick_date. Absent only for historical rows whose publication instant is unknown. */
|
|
2040
2167
|
published_at?: string;
|
|
2041
2168
|
/** Human-readable matchup (e.g. "Portugal vs. Uzbekistan"). */
|
|
@@ -2096,7 +2223,10 @@ export type PickOfTheDayArchiveEntry = {
|
|
|
2096
2223
|
publication_order: number;
|
|
2097
2224
|
/** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
|
|
2098
2225
|
is_free_selection: boolean;
|
|
2099
|
-
/**
|
|
2226
|
+
/**
|
|
2227
|
+
* Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.
|
|
2228
|
+
* @deprecated
|
|
2229
|
+
*/
|
|
2100
2230
|
supersedes_pick_id: string | null;
|
|
2101
2231
|
};
|
|
2102
2232
|
/** Select using the entry commitment_version, never implicit payload shape. All historic v1 hashes remain unchanged. */
|
|
@@ -2154,7 +2284,7 @@ export type PickOfTheDayHitRate = {
|
|
|
2154
2284
|
/** Number of picks still pending resolution (excluded from the hit rate). */
|
|
2155
2285
|
pending: number;
|
|
2156
2286
|
/** The flat stake every money figure here assumes, in USD: 1000 since 2026-09-22 (100 before). Always present. */
|
|
2157
|
-
stake_usd
|
|
2287
|
+
stake_usd: number;
|
|
2158
2288
|
/** Cumulative profit (USD) of a stake_usd-per-pick strategy over visible valued decided picks: a priced win pays stake_usd/backed_price - stake_usd, every visible loss pays -stake_usd independent of price, and a void pays 0. An unpriced visible win and a current non-Insider row whose price is gated remain in wins/losses but are excluded from price-derived totals. */
|
|
2159
2289
|
net_profit_usd: number;
|
|
2160
2290
|
/** Total staked (USD) = stake_usd * count of visible valued decided picks: every visible loss plus every priced win. Void, unpriced wins, and current non-Insider rows whose price is gated are excluded. */
|
|
@@ -2206,7 +2336,7 @@ export type PickOfTheDayHitRate = {
|
|
|
2206
2336
|
/** Measured public rows where close exactly equals entry. */
|
|
2207
2337
|
clv_ties: number;
|
|
2208
2338
|
/** Cumulative track-record series, one point per decided (win/loss) pick in ascending pick_date order (void and pending add no point). A non-valued decided row carries cumulative profit forward while advancing hit rate. The last point's net_profit_usd and hit_rate_pct equal the headline net_profit_usd and pct by construction. Empty when nothing is decided. */
|
|
2209
|
-
series
|
|
2339
|
+
series: {
|
|
2210
2340
|
/** The decided pick's publish date (YYYY-MM-DD). */
|
|
2211
2341
|
date: string;
|
|
2212
2342
|
/** Running cumulative stake_usd-per-pick profit (USD) through this pick; valued losses and priced wins are booked, while a non-valued decided row carries profit forward unchanged. */
|
|
@@ -2267,7 +2397,10 @@ export type PickOfTheDayLedgerOpenedEntry = {
|
|
|
2267
2397
|
publication_order: number;
|
|
2268
2398
|
/** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
|
|
2269
2399
|
is_free_selection: boolean;
|
|
2270
|
-
/**
|
|
2400
|
+
/**
|
|
2401
|
+
* Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.
|
|
2402
|
+
* @deprecated
|
|
2403
|
+
*/
|
|
2271
2404
|
supersedes_pick_id: string | null;
|
|
2272
2405
|
/** Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank. */
|
|
2273
2406
|
commitment_version: 1 | 2;
|
|
@@ -2296,7 +2429,10 @@ export type PickOfTheDayLedgerSealedEntry = {
|
|
|
2296
2429
|
publication_order: number;
|
|
2297
2430
|
/** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
|
|
2298
2431
|
is_free_selection: boolean;
|
|
2299
|
-
/**
|
|
2432
|
+
/**
|
|
2433
|
+
* Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.
|
|
2434
|
+
* @deprecated
|
|
2435
|
+
*/
|
|
2300
2436
|
supersedes_pick_id: string | null;
|
|
2301
2437
|
/** Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank. */
|
|
2302
2438
|
commitment_version: 1 | 2;
|
|
@@ -2331,7 +2467,10 @@ export type PickOfTheDayLedgerUncommittedEntry = {
|
|
|
2331
2467
|
publication_order: number;
|
|
2332
2468
|
/** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
|
|
2333
2469
|
is_free_selection: boolean;
|
|
2334
|
-
/**
|
|
2470
|
+
/**
|
|
2471
|
+
* Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.
|
|
2472
|
+
* @deprecated
|
|
2473
|
+
*/
|
|
2335
2474
|
supersedes_pick_id: string | null;
|
|
2336
2475
|
};
|
|
2337
2476
|
/** A successful current-day entitlement response when only unauthorized ranks have published. It carries an empty pick set, identity-free locked ranks and an upgrade message. Selection IDs, game identity, prices and unauthorized clocks are absent. Any scheduled or proof-pending rows are entitled rows. */
|
|
@@ -2355,7 +2494,10 @@ export type PickOfTheDayNoEntitledPicks = {
|
|
|
2355
2494
|
scheduled_picks?: ScheduledPickSlot[];
|
|
2356
2495
|
/** Entitled published picks whose holder proof is unreadable, ordered by rank. Unauthorized ranks appear only in locked_picks and cannot trigger proof warming. Read retry_at for the next read. */
|
|
2357
2496
|
proof_pending_picks?: ProofPendingPickSlot[];
|
|
2358
|
-
/**
|
|
2497
|
+
/**
|
|
2498
|
+
* Deprecated (#24157): always null, as on every Pick of the Day shape.
|
|
2499
|
+
* @deprecated
|
|
2500
|
+
*/
|
|
2359
2501
|
supersedes_pick_id: null;
|
|
2360
2502
|
};
|
|
2361
2503
|
/** A settled uncommitted pick's market, side and price. The same eight fields as PickOfTheDayCommitmentPayload, in the same key order, so a settled pick's side and price sit under payload whatever the entry's state. It is NOT a commitment: no hash was taken over it before the game, and it proves nothing about when the pick was made. */
|
|
@@ -2451,6 +2593,23 @@ export type Platforms = {
|
|
|
2451
2593
|
polymarket: PlatformCapabilities;
|
|
2452
2594
|
};
|
|
2453
2595
|
};
|
|
2596
|
+
/** A derived 0xinsider correction to Polymarket's P&L, never a Polymarket value. Polymarket misbooks neg-risk conversions, in both directions: it puts cost on placeholder YES outcomes minted by a conversion and never books it as a loss (negative amount), and its position records leave out shares the wallet really got, such as YES minted by a conversion, so it books no P&L on them (positive amount). Per neg-risk market the wallet converted in, 0xinsider measures Polymarket's own activity cash against the sum of its position P&L, and sums the difference over every measured market whose shares did not move by direct transfer: transferred shares have no activity row, so such a market keeps Polymarket's figure and is counted in markets_excluded. It is published once every neg-risk market the wallet converted in is measured and checked for transfers, and stays as last published until then (on the trader body, pnl.correction_pending says so); a sum under $1 either way publishes nothing. The body's own P&L fields keep Polymarket's figures; this object adds the amount and the corrected figures. Money is truncated toward zero to cents. */
|
|
2597
|
+
export type PnlCorrection = {
|
|
2598
|
+
/** The correction method. */
|
|
2599
|
+
basis: "neg_risk_conversion_v1";
|
|
2600
|
+
/** The correction in USD. Negative when Polymarket overstates the wallet. */
|
|
2601
|
+
amount: number;
|
|
2602
|
+
/** Polymarket's net realized P&L plus amount: the figure 0xinsider grades on. Omitted when Polymarket's figure is. */
|
|
2603
|
+
realized?: number;
|
|
2604
|
+
/** Polymarket's net total P&L plus amount: the 0xinsider profile's Total P&L. Omitted when Polymarket's figure is, and on leaderboard entries. */
|
|
2605
|
+
net_total?: number;
|
|
2606
|
+
/** The newest measurement among the measured markets. */
|
|
2607
|
+
as_of: string;
|
|
2608
|
+
/** Neg-risk markets whose measurement amount sums. */
|
|
2609
|
+
markets_measured: number;
|
|
2610
|
+
/** Measured neg-risk markets left out because shares moved in or out of the wallet by direct transfer; they keep Polymarket's figure. Omitted when none. */
|
|
2611
|
+
markets_excluded?: number;
|
|
2612
|
+
};
|
|
2454
2613
|
export type Position = {
|
|
2455
2614
|
/** Composite prefixed ID `pos_<wallet>:<condition_id>:<outcome_index>`. */
|
|
2456
2615
|
id: string;
|
|
@@ -2487,11 +2646,12 @@ export type Position = {
|
|
|
2487
2646
|
grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
2488
2647
|
/** Win rate as a ratio from 0 to 1 (0.62 means 62%), the same scale as stats.win_rate on GET /api/v1/trader/{address}. Absent when unknown. */
|
|
2489
2648
|
win_rate?: number;
|
|
2490
|
-
/**
|
|
2649
|
+
/** Polymarket's net total P&L for the wallet in USD: native Polymarket position P&L across all markets, fees included, plus credited maker and taker rebates (trader_trading_pnl.net_total_pnl). The 0xinsider profile's Total P&L is this figure unless the wallet has a published correction for neg-risk conversions, which GET /api/v1/trader/{address} serves as pnl.correction; the profile then shows pnl.correction.net_total. Not the Polymarket leaderboard figure, which GET /api/v1/trader/{address} still serves as pnl.total. Omitted when the wallet has no native accounting snapshot; the leaderboard figure is never substituted. */
|
|
2491
2650
|
pnl?: number;
|
|
2492
2651
|
markets?: number;
|
|
2652
|
+
/** Days since the wallet's first-seen time. For a wallet 0xinsider first recorded on or after March 21, 2026, that is when 0xinsider recorded it. For a wallet recorded earlier, it is usually the wallet's first Polymarket activity, so the age can run to years. It is not the wallet's on-chain age or the time of its first trade. Absent when the first-seen time is unknown. */
|
|
2493
2653
|
wallet_age_days?: number;
|
|
2494
|
-
/** True when 0xinsider first recorded the wallet
|
|
2654
|
+
/** True when wallet_age_days is under the new-wallet threshold (30 days), which means 0xinsider first recorded the wallet in the last 30 days. False when wallet_age_days is absent. This public V1 field is first-seen recency, not the wallet's on-chain age. */
|
|
2495
2655
|
is_new_wallet: boolean;
|
|
2496
2656
|
};
|
|
2497
2657
|
market: {
|
|
@@ -2584,7 +2744,10 @@ export type ProofPendingPickSlot = {
|
|
|
2584
2744
|
publication_order: number;
|
|
2585
2745
|
/** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
|
|
2586
2746
|
is_free_selection: boolean;
|
|
2587
|
-
/**
|
|
2747
|
+
/**
|
|
2748
|
+
* Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.
|
|
2749
|
+
* @deprecated
|
|
2750
|
+
*/
|
|
2588
2751
|
supersedes_pick_id: string | null;
|
|
2589
2752
|
};
|
|
2590
2753
|
export type ReportPayload = {
|
|
@@ -2732,7 +2895,10 @@ export type ScheduledPickSlot = {
|
|
|
2732
2895
|
publication_order: number;
|
|
2733
2896
|
/** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
|
|
2734
2897
|
is_free_selection: boolean;
|
|
2735
|
-
/**
|
|
2898
|
+
/**
|
|
2899
|
+
* Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.
|
|
2900
|
+
* @deprecated
|
|
2901
|
+
*/
|
|
2736
2902
|
supersedes_pick_id: string | null;
|
|
2737
2903
|
};
|
|
2738
2904
|
/** One side's score in a single set. The verbatim provider text stays on the team's `score` string; this is the parsed form. */
|
|
@@ -2744,6 +2910,23 @@ export type ScoreCell = {
|
|
|
2744
2910
|
};
|
|
2745
2911
|
/** 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. */
|
|
2746
2912
|
export type ScoreFormat = "two_side" | "multi_set" | "esports_series";
|
|
2913
|
+
/** `sharp_money_flow_detected` data (Pro and Max): ranked-trader net flow on a market crossed the threshold. The deprecated spelling `smart_money_flow_detected` delivers the same object. */
|
|
2914
|
+
export type SharpMoneyFlowDetectedData = {
|
|
2915
|
+
/** Polymarket condition id of the market. */
|
|
2916
|
+
condition_id: string;
|
|
2917
|
+
/** Signed ranked-trader net flow in USD over `window`: positive is net into YES, negative net into NO. */
|
|
2918
|
+
net_flow_usd: number;
|
|
2919
|
+
/** Absolute value of `net_flow_usd`, the magnitude compared with the threshold. */
|
|
2920
|
+
abs_net_flow_usd: number;
|
|
2921
|
+
/** `yes` when `net_flow_usd` is 0 or more, else `no`. */
|
|
2922
|
+
dominant_side: "yes" | "no";
|
|
2923
|
+
/** Minimum trader grade included in the flow. */
|
|
2924
|
+
grade_floor: "S" | "A" | "B" | "C" | "D" | "F";
|
|
2925
|
+
/** Ranked-trader large fills that make up the flow. */
|
|
2926
|
+
whale_trade_count: number;
|
|
2927
|
+
/** Window the flow was aggregated over, for example `24h`. */
|
|
2928
|
+
window: string;
|
|
2929
|
+
};
|
|
2747
2930
|
export type SmartMoneyFlowMarket = {
|
|
2748
2931
|
market: {
|
|
2749
2932
|
id: string;
|
|
@@ -2761,7 +2944,7 @@ export type SmartMoneyFlowMarket = {
|
|
|
2761
2944
|
/** The Polymarket CLOB token id (ERC1155 asset id, decimal string) for the net-flow direction outcome; null when unavailable (e.g. unsynced markets). */
|
|
2762
2945
|
token_id: string | null;
|
|
2763
2946
|
/** Canonical key since #16304 (Polymarket's noun is large trade); whale_trade_count is its deprecated spelling, emitted beside it with the same value. */
|
|
2764
|
-
large_trade_count
|
|
2947
|
+
large_trade_count: number;
|
|
2765
2948
|
whale_trade_count: number;
|
|
2766
2949
|
buy_volume_usd: number;
|
|
2767
2950
|
sell_volume_usd: number;
|
|
@@ -2776,7 +2959,7 @@ export type SmartMoneyFlowMarket = {
|
|
|
2776
2959
|
/** The Polymarket CLOB token id (ERC1155 asset id, decimal string) for the net-flow direction outcome; null when unavailable (e.g. unsynced markets). */
|
|
2777
2960
|
token_id: string | null;
|
|
2778
2961
|
/** Canonical key since #16304 (Polymarket's noun is large trade); whale_trade_count is its deprecated spelling, emitted beside it with the same value. */
|
|
2779
|
-
large_trade_count
|
|
2962
|
+
large_trade_count: number;
|
|
2780
2963
|
whale_trade_count: number;
|
|
2781
2964
|
buy_volume_usd: number;
|
|
2782
2965
|
sell_volume_usd: number;
|
|
@@ -2789,7 +2972,7 @@ export type SnapshotCompleteness = {
|
|
|
2789
2972
|
reason: string;
|
|
2790
2973
|
expected_days: number;
|
|
2791
2974
|
/** Canonical key since #16304; covered_days_with_whale_activity is its deprecated spelling, emitted beside it with the same value. */
|
|
2792
|
-
covered_days_with_large_trade_activity
|
|
2975
|
+
covered_days_with_large_trade_activity: number;
|
|
2793
2976
|
covered_days_with_whale_activity: number;
|
|
2794
2977
|
};
|
|
2795
2978
|
export type SnapshotState = {
|
|
@@ -2842,6 +3025,27 @@ export type SuspiciousTrade = {
|
|
|
2842
3025
|
/** Stored trade timestamp. */
|
|
2843
3026
|
created_at: string;
|
|
2844
3027
|
};
|
|
3028
|
+
/** `suspicious_trade_flagged` data (Pro and Max): a trade's suspicion score crossed the flag threshold for the first time. The deprecated spelling `insider_radar_flag_raised` delivers the same object. */
|
|
3029
|
+
export type SuspiciousTradeFlaggedData = {
|
|
3030
|
+
/** Numeric id of the flagged trade, a JSON number. It is the `id` that `GET /api/v1/large-trades/{id}` accepts. */
|
|
3031
|
+
trade_id: number;
|
|
3032
|
+
/** Address of the wallet that made the trade. */
|
|
3033
|
+
wallet: string;
|
|
3034
|
+
/** 0xinsider's numeric id for the wallet. */
|
|
3035
|
+
trader_id: number;
|
|
3036
|
+
/** Polymarket condition id of the market. */
|
|
3037
|
+
condition_id: string;
|
|
3038
|
+
/** The suspicion score, 0 to 100, that crossed the threshold. */
|
|
3039
|
+
suspicion_score: number;
|
|
3040
|
+
/** The scoring track that raised the flag. */
|
|
3041
|
+
track: "whale" | "fresh_conviction" | "sliced_position";
|
|
3042
|
+
/** Outcome side the flagged fill took. */
|
|
3043
|
+
side: "yes" | "no";
|
|
3044
|
+
/** Share count of the flagged fill. */
|
|
3045
|
+
size: number;
|
|
3046
|
+
/** Fill price of the flagged trade. */
|
|
3047
|
+
price: number;
|
|
3048
|
+
};
|
|
2845
3049
|
/** Optional current-game tennis facts from API-Tennis, aligned with live_score.scores display order. These facts have their own revision and expiry; Polymarket remains the source of sets, match status, period, and the outer live-score revision. New observations require corroborated identity, current set/games, and live state. Cached responses and replayed frames may still carry expired facts, so clients must enforce expires_at. */
|
|
2846
3050
|
export type TennisPoints = {
|
|
2847
3051
|
source: "api_tennis";
|
|
@@ -2894,8 +3098,12 @@ export type Trader = {
|
|
|
2894
3098
|
pnl: {
|
|
2895
3099
|
/** Polymarket's all-time leaderboard P&L in USD, from Polymarket's latest observation of this wallet on its all-time leaderboard (dated by the leaderboard_pnl data_quality group). Omitted when that leaderboard has no current observation ranking the wallet; 0xinsider requests one, and never serves an older stored figure in its place. Kept for provider parity and back-compat. Not the profile's Total P&L and not realized plus unrealized: it can differ from net_total by a wide margin. Read net_total for the figure the 0xinsider profile shows. */
|
|
2896
3100
|
total?: number;
|
|
2897
|
-
/**
|
|
3101
|
+
/** Polymarket's net total P&L in USD: native Polymarket position P&L, with fees already included, plus credited maker and taker rebates (trader_trading_pnl.net_total_pnl). Truncated toward zero to cents before conversion to a JSON number. Omitted when the wallet has no native accounting snapshot; pnl.total is never substituted. The 0xinsider profile's Total P&L is this figure unless pnl.correction is present, then pnl.correction.net_total. */
|
|
2898
3102
|
net_total?: number;
|
|
3103
|
+
/** The 0xinsider correction to Polymarket's P&L for neg-risk conversions. Present only when one is published; pnl.net_total and pnl.realized keep Polymarket's own figures, and correction.net_total and correction.realized add the amount to them. */
|
|
3104
|
+
correction?: PnlCorrection;
|
|
3105
|
+
/** true while 0xinsider is still checking some of the wallet's converted neg-risk markets (not yet measured, measured and not yet checked for transfers, or its latest reads keep failing), so the correction may change, or arrive where none is published yet. Omitted otherwise. */
|
|
3106
|
+
correction_pending?: boolean;
|
|
2899
3107
|
/** For pnl.realized, expand=trust marks a matching native accounting snapshot as computed: native Polymarket realized P&L plus credited maker and taker rebates, with fees already included. The exact numeric value is truncated toward zero to cents before conversion to a JSON number. Without a matching native accounting snapshot, pnl.realized is omitted and its trust metadata is unavailable. Raw total P&L is never substituted for realized P&L. */
|
|
2900
3108
|
realized?: number;
|
|
2901
3109
|
unrealized?: number;
|
|
@@ -2917,7 +3125,7 @@ export type Trader = {
|
|
|
2917
3125
|
};
|
|
2918
3126
|
strategy?: {
|
|
2919
3127
|
/** Observed trading style identifier. New rows use two_sided, category_focused, high_activity, diversified, mixed, or unclassified. Historical identifiers remain readable during normal reclassification; style does not predict skill or intent. */
|
|
2920
|
-
strategy_type
|
|
3128
|
+
strategy_type: string;
|
|
2921
3129
|
description?: string;
|
|
2922
3130
|
confidence?: number;
|
|
2923
3131
|
};
|
|
@@ -3308,11 +3516,20 @@ export type TraderStatsExact = {
|
|
|
3308
3516
|
/** stats.total_volume as an exact decimal: full-history both-sides cash volume in USD, Polymarket user-volume `volume_usdc`, from the verified `trader_usd_volume` observation. Never Polymarket's share count. */
|
|
3309
3517
|
total_volume: ExactDecimal;
|
|
3310
3518
|
};
|
|
3519
|
+
/** `trader_synced` data: a tracked wallet finished a sync pass and has a fresh grade. The deprecated spelling `whale_trader_synced` delivers the same object. */
|
|
3520
|
+
export type TraderSyncedData = {
|
|
3521
|
+
/** 0xinsider's numeric id for the wallet. */
|
|
3522
|
+
trader_id: number;
|
|
3523
|
+
/** Proxy wallet address. */
|
|
3524
|
+
wallet: string;
|
|
3525
|
+
};
|
|
3311
3526
|
/** Field-level trust metadata returned only when GET /api/v1/trader/{address} includes expand=trust. */
|
|
3312
3527
|
export type TraderTrust = {
|
|
3313
3528
|
total_pnl: TrustMetadata;
|
|
3314
3529
|
realized_pnl: TrustMetadata;
|
|
3315
3530
|
net_total_pnl: TrustMetadata;
|
|
3531
|
+
/** Present only with pnl.correction: a computed value owned by trader_pnl_corrections, dated by the newest measurement behind it. */
|
|
3532
|
+
pnl_correction?: TrustMetadata;
|
|
3316
3533
|
unrealized_pnl: TrustMetadata;
|
|
3317
3534
|
markets_traded: TrustMetadata;
|
|
3318
3535
|
win_rate: TrustMetadata;
|
|
@@ -3357,8 +3574,10 @@ export type TrendingWallet = {
|
|
|
3357
3574
|
grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
3358
3575
|
/** Hot-streak tier (trailing-7d cross-sectional percentile). Omitted when there is no recent activity. */
|
|
3359
3576
|
streak_tier?: "hot" | "rising" | "neutral" | "cooling" | "cold";
|
|
3360
|
-
/**
|
|
3577
|
+
/** Polymarket's net total P&L for the wallet in USD: native Polymarket position P&L across all markets, fees included, plus credited maker and taker rebates (trader_trading_pnl.net_total_pnl). The 0xinsider profile's Total P&L is this figure unless pnl_correction is present, then pnl_correction.net_total. Context only: it does not affect the ranking, which follows trending_pnl_usd. Omitted when the wallet is not in the 0xinsider database or has no native accounting snapshot; the Polymarket leaderboard all-time figure is never substituted. */
|
|
3361
3578
|
all_time_pnl_usd?: number;
|
|
3579
|
+
/** The 0xinsider correction to Polymarket's P&L for neg-risk conversions. Present only when one is published; all_time_pnl_usd keeps Polymarket's own figure and pnl_correction.net_total is the profile's Total P&L. */
|
|
3580
|
+
pnl_correction?: PnlCorrection;
|
|
3362
3581
|
all_time_score?: number;
|
|
3363
3582
|
last_synced?: string;
|
|
3364
3583
|
/** Shape-only daily P&L sparkline across the window, derived from Polymarket's documented user-pnl cumulative curve (GET /v2/user-pnl) converted to per-day deltas. It conveys the trend of the curve only and is NOT guaranteed to sum to trending_pnl_usd, which is the canonical leaderboard total. */
|
|
@@ -3441,8 +3660,6 @@ export type Usage = {
|
|
|
3441
3660
|
pay_as_you_go: boolean;
|
|
3442
3661
|
/** The most requests this account is admitted in a UTC calendar month once enforcement has begun: limit, or four times limit with pay as you go on (2,000,000 for Pro). null for an admin account, which no number stops. Additive since 2026-09-22. */
|
|
3443
3662
|
ceiling: number | null;
|
|
3444
|
-
/** A historical usage price has not been reconciled to this plan allowance. Pay as you go remains unavailable until billing reconciliation. */
|
|
3445
|
-
unavailable_reason?: "usage_price_reconciliation_required" | null;
|
|
3446
3663
|
} | null;
|
|
3447
3664
|
};
|
|
3448
3665
|
meta: ResponseMeta;
|
|
@@ -3451,6 +3668,24 @@ export type VerifyWebhookRequest = {
|
|
|
3451
3668
|
/** The one-time token returned on create or on a url change. It is necessary but not sufficient: the destination must also answer the signed webhook.verification challenge with a 2xx. */
|
|
3452
3669
|
verification_token: string;
|
|
3453
3670
|
};
|
|
3671
|
+
/** `wallet_grade_changed` data (Pro and Max): a tracked wallet's grade moved on a re-grade. */
|
|
3672
|
+
export type WalletGradeChangedData = {
|
|
3673
|
+
/** Lowercased proxy wallet address. */
|
|
3674
|
+
wallet: string;
|
|
3675
|
+
/** 0xinsider's numeric id for the wallet. */
|
|
3676
|
+
trader_id: number;
|
|
3677
|
+
/** The grade before the move. Never equal to `new_grade`. */
|
|
3678
|
+
old_grade: "S" | "A" | "B" | "C" | "D" | "F";
|
|
3679
|
+
new_grade: "S" | "A" | "B" | "C" | "D" | "F";
|
|
3680
|
+
/** `upgrade` when `new_grade` is better than `old_grade`, else `downgrade`. */
|
|
3681
|
+
direction: "upgrade" | "downgrade";
|
|
3682
|
+
/** Cohort skill index that drove the grade, 0 to 1. */
|
|
3683
|
+
skill_index: number;
|
|
3684
|
+
/** Final 0 to 100 score banded into the new grade. */
|
|
3685
|
+
final_score: number;
|
|
3686
|
+
/** The ranking date of the re-grade. */
|
|
3687
|
+
date: string;
|
|
3688
|
+
};
|
|
3454
3689
|
/** Owner-scoped view of one webhook delivery attempt. Deliberately omits the request body and the endpoint signing secret: a delivery log never re-exposes the payload or any secret material. */
|
|
3455
3690
|
export type WebhookDelivery = {
|
|
3456
3691
|
id: number;
|
|
@@ -3677,6 +3912,28 @@ export type WhaleDatasetTrade = {
|
|
|
3677
3912
|
trade_event_id: string;
|
|
3678
3913
|
source_trade_ingested_at: string | null;
|
|
3679
3914
|
};
|
|
3915
|
+
/**
|
|
3916
|
+
* The `data` payload of each webhook event type, from the document's
|
|
3917
|
+
* `webhooks` map. Two spellings of one event share one payload.
|
|
3918
|
+
*/
|
|
3919
|
+
export interface WebhookEventData {
|
|
3920
|
+
export_job_cancelled: ExportJobCancelledData;
|
|
3921
|
+
export_job_expired: ExportJobExpiredData;
|
|
3922
|
+
export_job_failed: ExportJobFailedData;
|
|
3923
|
+
export_job_ready: ExportJobReadyData;
|
|
3924
|
+
insider_radar_flag_raised: SuspiciousTradeFlaggedData;
|
|
3925
|
+
large_positions_updated: LargePositionsUpdatedData;
|
|
3926
|
+
large_trade_inserted_v2: LargeTradeInsertedV2Data;
|
|
3927
|
+
large_trades_inserted: LargeTradesInsertedData;
|
|
3928
|
+
live_sports_updated: LiveSportsUpdatedData;
|
|
3929
|
+
sharp_money_flow_detected: SharpMoneyFlowDetectedData;
|
|
3930
|
+
smart_money_flow_detected: SharpMoneyFlowDetectedData;
|
|
3931
|
+
suspicious_trade_flagged: SuspiciousTradeFlaggedData;
|
|
3932
|
+
trader_synced: TraderSyncedData;
|
|
3933
|
+
wallet_grade_changed: WalletGradeChangedData;
|
|
3934
|
+
whale_trader_synced: TraderSyncedData;
|
|
3935
|
+
whale_trades_inserted: LargeTradesInsertedData;
|
|
3936
|
+
}
|
|
3680
3937
|
/**
|
|
3681
3938
|
* The `data` payload each operation answers with: what
|
|
3682
3939
|
* `ApiClient.call<T>` resolves to, and the default `T` of every
|
|
@@ -3793,6 +4050,8 @@ export interface OperationData {
|
|
|
3793
4050
|
error?: {
|
|
3794
4051
|
code: number;
|
|
3795
4052
|
message: string;
|
|
4053
|
+
/** Optional JSON-serializable error data. */
|
|
4054
|
+
data?: Record<string, unknown> | unknown[] | string | number | boolean | null;
|
|
3796
4055
|
};
|
|
3797
4056
|
};
|
|
3798
4057
|
createWebhook: WebhookEndpoint;
|
|
@@ -3822,10 +4081,10 @@ export interface OperationData {
|
|
|
3822
4081
|
getEventReplaySince: EventReplayEvent[];
|
|
3823
4082
|
getGame: Game;
|
|
3824
4083
|
getHealth: {
|
|
3825
|
-
status
|
|
3826
|
-
db
|
|
3827
|
-
cache
|
|
3828
|
-
subsystems
|
|
4084
|
+
status: "ok" | "degraded" | "down" | "maintenance";
|
|
4085
|
+
db: boolean;
|
|
4086
|
+
cache: boolean;
|
|
4087
|
+
subsystems: {
|
|
3829
4088
|
/** Whether the webhook outbox schema validated on this probe. false lowers status to degraded. true during a maintenance window, when nothing is probed. */
|
|
3830
4089
|
webhook_compatibility: boolean;
|
|
3831
4090
|
/** Public-safe aggregate status for expected background job successful-completion heartbeats. Does not expose Redis keys, job names, raw errors, provider payloads, wallet addresses, or condition IDs. */
|
|
@@ -3951,8 +4210,6 @@ export interface OperationData {
|
|
|
3951
4210
|
pay_as_you_go: boolean;
|
|
3952
4211
|
/** The most requests this account is admitted in a UTC calendar month once enforcement has begun: limit, or four times limit with pay as you go on (2,000,000 for Pro). null for an admin account, which no number stops. Additive since 2026-09-22. */
|
|
3953
4212
|
ceiling: number | null;
|
|
3954
|
-
/** A historical usage price has not been reconciled to this plan allowance. Pay as you go remains unavailable until billing reconciliation. */
|
|
3955
|
-
unavailable_reason?: "usage_price_reconciliation_required" | null;
|
|
3956
4213
|
} | null;
|
|
3957
4214
|
};
|
|
3958
4215
|
getWebhook: WebhookEndpoint;
|
|
@@ -5058,6 +5315,8 @@ export interface OperationResponse {
|
|
|
5058
5315
|
error?: {
|
|
5059
5316
|
code: number;
|
|
5060
5317
|
message: string;
|
|
5318
|
+
/** Optional JSON-serializable error data. */
|
|
5319
|
+
data?: Record<string, unknown> | unknown[] | string | number | boolean | null;
|
|
5061
5320
|
};
|
|
5062
5321
|
};
|
|
5063
5322
|
createWebhook: {
|