@0xinsider/mcp 2.4.0 → 2.6.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 +9 -8
- package/dist/catalog.generated.d.ts +4 -4
- package/dist/catalog.generated.js +4 -4
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +38 -24
- package/dist/prompts/index.js.map +1 -1
- package/dist/sdk/client.d.ts +56 -3
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/client.js +140 -8
- package/dist/sdk/client.js.map +1 -1
- package/dist/sdk/errors.d.ts +14 -0
- package/dist/sdk/errors.d.ts.map +1 -1
- package/dist/sdk/errors.js +26 -0
- package/dist/sdk/errors.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 +2 -2
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/schema.d.ts +318 -38
- package/dist/sdk/schema.d.ts.map +1 -1
- package/dist/sdk/webhooks.d.ts +71 -12
- package/dist/sdk/webhooks.d.ts.map +1 -1
- package/dist/sdk/webhooks.js +22 -9
- package/dist/sdk/webhooks.js.map +1 -1
- package/dist/tools/get-market-intel.js +2 -2
- package/dist/tools/get-market-intel.js.map +1 -1
- package/dist/tools/get-whale-trades.js +2 -2
- package/dist/tools/get-whale-trades.js.map +1 -1
- package/dist/tools/pick-of-the-day.js +1 -1
- package/dist/tools/read-parity.d.ts +1 -1
- package/dist/tools/read-parity.d.ts.map +1 -1
- package/dist/tools/read-parity.js +21 -18
- package/dist/tools/read-parity.js.map +1 -1
- package/package.json +1 -1
package/dist/sdk/schema.d.ts
CHANGED
|
@@ -251,6 +251,28 @@ export type CreateWebhookRequest = {
|
|
|
251
251
|
url: string;
|
|
252
252
|
event_types: WebhookEventType[];
|
|
253
253
|
};
|
|
254
|
+
/** Compact data age and coverage for a response body, always present on the operations that publish it. Read status and as_of to decide whether to use the body at all, and field_groups to see which part is weak. Everything here comes from stored observation clocks, so a cached body reports the same ages a freshly computed one does: meta.cached and meta.cache_age_s stay the only transport-time facts and neither makes this block newer. The per-field audit object is still available through expand=trust; this is the default summary of the same question. */
|
|
255
|
+
export type DataQuality = {
|
|
256
|
+
/** fresh when every group is fresh, unavailable when every group is unavailable, and partial in every other case. */
|
|
257
|
+
status: "fresh" | "partial" | "unknown" | "untracked" | "unavailable";
|
|
258
|
+
/** The oldest as_of among the groups that carry one: the age of the weakest clock this body rests on. Omitted when no group carries a clock. */
|
|
259
|
+
as_of?: string;
|
|
260
|
+
/** One entry per field group. Entries may be added in later releases, so match on group rather than on position or length. */
|
|
261
|
+
field_groups: DataQualityGroup[];
|
|
262
|
+
};
|
|
263
|
+
/** One group of response fields that share a writer and therefore share a clock. */
|
|
264
|
+
export type DataQualityGroup = {
|
|
265
|
+
/** Stable snake_case group name. Names are additive across releases, so match on the ones you know and ignore the rest. */
|
|
266
|
+
group: string;
|
|
267
|
+
/** The table and column that write this group, named so the verdict can be audited (for example trader_rankings.computed_at). */
|
|
268
|
+
owner: string;
|
|
269
|
+
/** fresh: served, and as_of carries this group's real observation or computation clock. partial: some of the group's fields are served and some are missing. unknown: served, and this read has no clock for it, so no age may be inferred. untracked: 0xinsider does not track this group for this subject, by design. unavailable: the group could not be served. New values may be added; treat one you do not recognize as unknown. fresh means the group is tracked and clocked, not that it is inside any particular tolerance: compare as_of against your own. */
|
|
270
|
+
status: "fresh" | "partial" | "unknown" | "untracked" | "unavailable";
|
|
271
|
+
/** When this group's values were observed or computed. Omitted whenever the read cannot measure it, and never filled with the serialization time, the cache time, or another group's clock. */
|
|
272
|
+
as_of?: string;
|
|
273
|
+
/** Why the status is not fresh. Omitted when it is. */
|
|
274
|
+
reason?: string;
|
|
275
|
+
};
|
|
254
276
|
export type EventReplayEvent = {
|
|
255
277
|
/** Opaque event identity: the ef_-encoded whale_alerts.id, stable across cursor formats. Deduplicate on this, never on cursor or sequence. */
|
|
256
278
|
id: string;
|
|
@@ -331,6 +353,17 @@ export type EventReplaySource = {
|
|
|
331
353
|
owner: "whale_alerts";
|
|
332
354
|
provider_fetch_at_request_time: false;
|
|
333
355
|
};
|
|
356
|
+
/** A lossless decimal atom rendered from the canonical NUMERIC or provider value. The value is a decimal string and must be parsed with a decimal library; it is never a display string and must not be converted through a binary float. `scale` is the source decimal scale. The field is omitted when its source is unavailable. */
|
|
357
|
+
export type ExactDecimal = {
|
|
358
|
+
/** Plain decimal text at full source precision, including a minus sign for negative values and trailing zeros when the source scale carries them. Parse as an arbitrary-precision decimal. */
|
|
359
|
+
value: string;
|
|
360
|
+
/** Unit of the value, such as `USD`, `USD/share`, or `shares`. */
|
|
361
|
+
unit: string;
|
|
362
|
+
/** Number of digits after the decimal point in `value`'s source atom. */
|
|
363
|
+
scale: number;
|
|
364
|
+
/** Backend-owned source or derivation basis. Treat it as provenance, not as a display label. */
|
|
365
|
+
basis: string;
|
|
366
|
+
};
|
|
334
367
|
export type ExploreEntry = ExploreGroup | ExploreStandalone;
|
|
335
368
|
export type ExploreFacets = {
|
|
336
369
|
categories: ExploreFacetValue[];
|
|
@@ -420,6 +453,12 @@ export type ExploreMarket = {
|
|
|
420
453
|
whale_signal: number | null;
|
|
421
454
|
liquidity_signal: number | null;
|
|
422
455
|
recency_signal: number | null;
|
|
456
|
+
/** Canonical key since #16308; smart_money_signal is its deprecated spelling, emitted beside it with the same value. */
|
|
457
|
+
sharp_money_signal: number | null;
|
|
458
|
+
/**
|
|
459
|
+
* Deprecated spelling of sharp_money_signal; emitted beside it with the same value and never removed.
|
|
460
|
+
* @deprecated
|
|
461
|
+
*/
|
|
423
462
|
smart_money_signal: number | null;
|
|
424
463
|
price_move_signal: number | null;
|
|
425
464
|
missing_price_penalty: number;
|
|
@@ -586,7 +625,7 @@ export type HolderCategoryEvidence = {
|
|
|
586
625
|
export type LargeExportPolicy = {
|
|
587
626
|
mode: "v1_async_export";
|
|
588
627
|
current_internal_route: string;
|
|
589
|
-
/** Programmatic API-key-gated export routes (submit/status/download) and supported formats (json, ndjson, csv). */
|
|
628
|
+
/** Programmatic API-key-gated export routes (submit/status/download/cancel) and supported formats (json, ndjson, csv). */
|
|
590
629
|
v1_async: {
|
|
591
630
|
/** POST route template to submit an export job. fresh=true asks for a snapshot read after the submit instead of reusing a finished one. */
|
|
592
631
|
submit_route?: string;
|
|
@@ -594,10 +633,12 @@ export type LargeExportPolicy = {
|
|
|
594
633
|
status_route?: string;
|
|
595
634
|
/** GET route template that 302-redirects to the file. */
|
|
596
635
|
download_route?: string;
|
|
636
|
+
/** POST route template to cancel a queued or running job. */
|
|
637
|
+
cancel_route?: string;
|
|
597
638
|
/** Supported ?format= values. */
|
|
598
639
|
formats?: ("json" | "ndjson" | "csv")[];
|
|
599
640
|
/** Possible job status values. */
|
|
600
|
-
status_values?: ("queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired")[];
|
|
641
|
+
status_values?: ("queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired" | "cancel_requested" | "cancelled")[];
|
|
601
642
|
/** How long a finished export is retained before expiry. */
|
|
602
643
|
retention?: string;
|
|
603
644
|
};
|
|
@@ -687,9 +728,19 @@ export type LargeTrade = {
|
|
|
687
728
|
/** The Polymarket CLOB token id (ERC1155 asset id, decimal string) for the traded outcome; null when unavailable (e.g. unsynced markets) and for a Polymarket trade recorded before 2026-04-02T00:00:00Z, where the traded side is unknown. */
|
|
688
729
|
token_id: string | null;
|
|
689
730
|
price: number;
|
|
690
|
-
/** Current 0.0–1.0
|
|
731
|
+
/** Current 0.0–1.0 review score, computed at request time from the trade's size, the trader's win rate today, a bonus when a trader with a win rate above 55% trades at a price below 30¢, and the trade's age now. A higher score means read this trade first; it does not measure edge or predict an outcome. On a historical row it is today's view of the trade, not what a reader saw then; use recorded_review_score for that. Canonical since #16311; signal_score carries the same value. */
|
|
732
|
+
review_score: number;
|
|
733
|
+
/**
|
|
734
|
+
* Current 0.0–1.0 review score, computed at request time from the trader's win rate today and the trade's age now. Deprecated (#16311): `review_score` is the canonical spelling and carries the same value; this key stays on the wire.
|
|
735
|
+
* @deprecated
|
|
736
|
+
*/
|
|
691
737
|
signal_score: number;
|
|
692
|
-
/** 0.0–1.0
|
|
738
|
+
/** 0.0–1.0 review score written once when the trade row is inserted, from the trader's statistics at that moment. Populated from 2026-08-03T11:59Z; older rows return null and are never backfilled, because a backfill could only read today's statistics. If a trade is added later, its time-sensitive recorded score reflects that delay. Canonical since #16311; recorded_signal_score carries the same value. */
|
|
739
|
+
recorded_review_score: number | null;
|
|
740
|
+
/**
|
|
741
|
+
* 0.0–1.0 review score written once when the trade row is inserted; null before 2026-08-03T11:59Z. Deprecated (#16311): `recorded_review_score` is the canonical spelling and carries the same value; this key stays on the wire.
|
|
742
|
+
* @deprecated
|
|
743
|
+
*/
|
|
693
744
|
recorded_signal_score: number | null;
|
|
694
745
|
/** Persisted live suspicion score from the scorer. Null when the row has no persisted score. */
|
|
695
746
|
suspicion_score: number | null;
|
|
@@ -895,7 +946,10 @@ export type MarketIntel = {
|
|
|
895
946
|
/** Age of the oldest stored position snapshot behind top_positions: the minimum wallet sync clock over the positions this body publishes. The roster is a stored read rather than a live one, and graded wallets sit on different sync tiers, so this names how current the whole roster is; the response is no fresher than this timestamp. Null when the roster is empty or no published position carries a sync clock. It does not date net_flow_usd, the volumes or the trade counts, which come from large-trade event times. */
|
|
896
947
|
oldest_snapshot_as_of: string | null;
|
|
897
948
|
};
|
|
898
|
-
/**
|
|
949
|
+
/**
|
|
950
|
+
* Deprecated alias of sharp_money; byte-identical and retained for backward compatibility.
|
|
951
|
+
* @deprecated
|
|
952
|
+
*/
|
|
899
953
|
smart_money: {
|
|
900
954
|
net_flow_usd: number;
|
|
901
955
|
direction: "YES" | "NO";
|
|
@@ -1098,15 +1152,25 @@ export type PickOfTheDay = {
|
|
|
1098
1152
|
position?: string;
|
|
1099
1153
|
/** One-line summary of which side sharp money is backing. Required on every item in `picks`: a current-day published pick whose required holder proof is not safely readable is listed in `proof_pending_picks` instead of being served with a partial success shape or a synthetic zero, and the route returns 503 read_model_warming only when no published pick has readable proof. */
|
|
1100
1154
|
side_summary?: string;
|
|
1101
|
-
/** Public V1 compatibility count of S/A
|
|
1155
|
+
/** Public V1 compatibility count of S/A sharp-money wallets on the backed side. The first-party/internal current policy counts S/A/B; historical rows retain their frozen policy's count. Required on every item in `picks`: a current-day published pick whose required holder proof is not safely readable is listed in `proof_pending_picks` instead of being served with a partial success shape or a synthetic zero, and the route returns 503 read_model_warming only when no published pick has readable proof. Canonical key since #16308; smart_wallet_count is its deprecated spelling, emitted beside it with the same value. */
|
|
1156
|
+
sharp_wallet_count?: number;
|
|
1157
|
+
/**
|
|
1158
|
+
* Deprecated spelling of sharp_wallet_count, emitted beside it with the same value and never removed. Public V1 compatibility count of S/A sharp-money wallets on the backed side. The first-party/internal current policy counts S/A/B; historical rows retain their frozen policy's count. Required on every item in `picks`: a current-day published pick whose required holder proof is not safely readable is listed in `proof_pending_picks` instead of being served with a partial success shape or a synthetic zero, and the route returns 503 read_model_warming only when no published pick has readable proof.
|
|
1159
|
+
* @deprecated
|
|
1160
|
+
*/
|
|
1102
1161
|
smart_wallet_count?: number;
|
|
1103
|
-
/** Best public V1-compatible S/A
|
|
1162
|
+
/** Best public V1-compatible S/A sharp-money grade on the backed side. The first-party/internal current policy can select B, but a current B-only grade is omitted by the stable V1 adapter. Historical rows retain their frozen policy's grade. A current-day published pick with pending legacy proof, unknown-future proof, or structurally invalid current-policy proof returns 503 before this success schema is served. Resolved legacy proof remains readable on both current-day and archive/history responses. */
|
|
1104
1163
|
top_grade?: string;
|
|
1105
1164
|
/** Deprecated (#7170): no longer populated for picks selected on/after the calibration-edge change; omitted (absent) for new picks (the field uses skip_serializing_if, so a null value is dropped from the JSON rather than serialized as null). Permanently frozen-legacy -- retained for historical picks, with no removal or replacement planned, so no v2 is implied. Historical picks may still carry a value. Legacy meaning: category win-rate edge as a fraction (the backed-side cohort's win rate in this category minus the non-market-maker category baseline, e.g. 0.09 = +9 points), paired with category_edge_sample. */
|
|
1106
1165
|
category_edge_pct?: number;
|
|
1107
1166
|
/** Deprecated (#7170): no longer populated for picks selected on/after the calibration-edge change; omitted (absent) for new picks (the field uses skip_serializing_if, so a null value is dropped from the JSON rather than serialized as null). Permanently frozen-legacy -- retained for historical picks, with no removal or replacement planned, so no v2 is implied. Historical picks may still carry a value. Legacy meaning: pooled count of resolved markets behind category_edge_pct (the headline's n). */
|
|
1108
1167
|
category_edge_sample?: number;
|
|
1109
|
-
/** Recency-weighted graded-flow magnitude in USD; omitted when <= 0. */
|
|
1168
|
+
/** Recency-weighted graded-flow magnitude in USD; omitted when <= 0. Canonical key since #16308; smart_usd is its deprecated spelling, emitted beside it with the same value. */
|
|
1169
|
+
sharp_usd?: number;
|
|
1170
|
+
/**
|
|
1171
|
+
* Deprecated spelling of sharp_usd, emitted beside it with the same value and never removed. Recency-weighted graded-flow magnitude in USD; omitted when <= 0.
|
|
1172
|
+
* @deprecated
|
|
1173
|
+
*/
|
|
1110
1174
|
smart_usd?: number;
|
|
1111
1175
|
/** Frozen pre-game probability (0..1) for the backed side, written once at publication. It is the Polymarket CLOB order book midpoint at release, not an executed fill: a buyer lifts the ask, so a subscriber's own entry is usually a little worse than this price. */
|
|
1112
1176
|
backed_price?: number;
|
|
@@ -1190,15 +1254,15 @@ export type PickOfTheDay = {
|
|
|
1190
1254
|
lane_probability_source?: "p";
|
|
1191
1255
|
};
|
|
1192
1256
|
trust?: PickTrust;
|
|
1193
|
-
/** Public V1 S/A compatibility count on the backed side (equals the adapted
|
|
1257
|
+
/** Public V1 S/A compatibility count on the backed side (equals the adapted sharp_wallet_count). The first-party/internal current policy counts S/A/B. Historical rows retain their frozen policy's count. */
|
|
1194
1258
|
traders?: number;
|
|
1195
|
-
/** Raw backed-side sharp-money USD frozen at generation. This is the Sharp USD value, not the recency-weighted
|
|
1259
|
+
/** Raw backed-side sharp-money USD frozen at generation. This is the Sharp USD value, not the recency-weighted sharp_usd which decays. Omitted on current public V1 rows when the B-inclusive value has no reconstructible S/A equivalent. */
|
|
1196
1260
|
backed_sharp_usd?: number;
|
|
1197
1261
|
/** Bounded S/A compatibility projection of the frozen sharp-money holders on the backed side. Current full payloads expose the complete S/A/B roster in display_holders; historical rows can retain their earlier frozen shape. */
|
|
1198
1262
|
holders?: PickHolder[];
|
|
1199
1263
|
/** Full-only complete provider-confirmed S/A/B holder roster for the current Pick of the Day backing policy. Omitted for teaser, no-pick, and historical rows whose frozen holder proof predates this policy. Each entry may additionally carry `category_win_rate` / `category_win_rate_status`: the wallet's win rate in the pick's canonical `category`, stamped at serve time from the current category read model (the same annotation the sports sharp-money chips carry). The bounded `holders` compatibility projection never carries these fields. */
|
|
1200
1264
|
display_holders?: PickHolder[];
|
|
1201
|
-
/** Exact S/A
|
|
1265
|
+
/** Exact S/A sharp-money proof count on the backed side. The current display_holders roster can be longer because it also carries B-grade sharp-money holders. */
|
|
1202
1266
|
holder_count?: number;
|
|
1203
1267
|
/** Optional editorial note attached to the pick. */
|
|
1204
1268
|
editorial_note?: string;
|
|
@@ -1263,7 +1327,7 @@ export type PickOfTheDayArchiveEntry = {
|
|
|
1263
1327
|
image_url?: string;
|
|
1264
1328
|
/** The backed side's outcome label. Omitted for a still-pending pick when the request is not from an authenticated Pro key. */
|
|
1265
1329
|
pick_outcome_label?: string;
|
|
1266
|
-
/** Best public V1-compatible S/A
|
|
1330
|
+
/** Best public V1-compatible S/A sharp-money grade on the backed side; a current B-only grade is omitted by the stable V1 adapter, while historical rows retain their frozen policy's grade. Omitted when no sharp-money wallet backs the pick, when a pending legacy proof has not yet upgraded, or when the stored holder policy is unknown-future or structurally invalid. Resolved legacy history remains supported. */
|
|
1267
1331
|
top_grade?: string;
|
|
1268
1332
|
/** Settlement outcome of the backed side; 'pending' until the market resolves. */
|
|
1269
1333
|
outcome: "pending" | "win" | "loss" | "void";
|
|
@@ -1591,6 +1655,8 @@ export type Position = {
|
|
|
1591
1655
|
cash_pnl?: number;
|
|
1592
1656
|
/** Closed-leg P&L rolled up (Polymarket `realizedPnl`). */
|
|
1593
1657
|
realized_pnl?: number;
|
|
1658
|
+
/** Additive lossless source atoms for the display-safe position fields. Parse every `value` with decimal-safe arithmetic; never recover exact values from the numeric twins. */
|
|
1659
|
+
exact?: PositionExact;
|
|
1594
1660
|
/** Max updated_at across mirror legs for this pair. */
|
|
1595
1661
|
last_reconciled_at?: string;
|
|
1596
1662
|
/** Backend-computed staleness bucket derived from last_reconciled_at. */
|
|
@@ -1623,6 +1689,17 @@ export type Position = {
|
|
|
1623
1689
|
end_date?: string;
|
|
1624
1690
|
};
|
|
1625
1691
|
};
|
|
1692
|
+
/** Lossless position atoms from `wallet_positions`. `shares` and `current_value_usd` are required when this object is present; other source values are omitted when the mirror has no verified value. */
|
|
1693
|
+
export type PositionExact = {
|
|
1694
|
+
shares: ExactDecimal;
|
|
1695
|
+
cost_basis_usd?: ExactDecimal;
|
|
1696
|
+
/** Exact derived price: `wallet_positions.cost_basis_usd / wallet_positions.shares`. */
|
|
1697
|
+
avg_price?: ExactDecimal;
|
|
1698
|
+
current_value_usd: ExactDecimal;
|
|
1699
|
+
initial_value_usd?: ExactDecimal;
|
|
1700
|
+
cash_pnl?: ExactDecimal;
|
|
1701
|
+
realized_pnl?: ExactDecimal;
|
|
1702
|
+
};
|
|
1626
1703
|
export type PositionTimelineEvent = {
|
|
1627
1704
|
/** Prefixed ID (pe_...). */
|
|
1628
1705
|
id: string;
|
|
@@ -1679,7 +1756,10 @@ export type PreGameSide = {
|
|
|
1679
1756
|
side_share: number | null;
|
|
1680
1757
|
/** Polymarket condition id. */
|
|
1681
1758
|
condition_id: string;
|
|
1682
|
-
/**
|
|
1759
|
+
/**
|
|
1760
|
+
* UTC time at which the immutable signal snapshot was computed. Every row from one snapshot shares this value; it is not provider market creation time and is not rewritten at request time. Deprecated (#16310): `ranked_at` is the canonical spelling and carries the same value; this key stays on the wire.
|
|
1761
|
+
* @deprecated
|
|
1762
|
+
*/
|
|
1683
1763
|
signal_created_at: string;
|
|
1684
1764
|
/** Polymarket CLOB token id (ERC1155 asset id, decimal string) for the PILED outcome; null when unavailable. */
|
|
1685
1765
|
token_id: string | null;
|
|
@@ -1691,7 +1771,10 @@ export type PreGameSide = {
|
|
|
1691
1771
|
event_slug: string | null;
|
|
1692
1772
|
/** Kickoff (UTC). In the future at SNAPSHOT time and within the requested horizon; because the response is served from a shared snapshot cached up to the ~180s TTL, a served kickoff can be up to ~180s in the past relative to the response time. Not a live guarantee that the game has not yet started. */
|
|
1693
1773
|
game_start_time: string | null;
|
|
1694
|
-
/**
|
|
1774
|
+
/**
|
|
1775
|
+
* Nullable provider-backed piled-outcome display label. When provider group context is unavailable, it may remain a bare Yes/No/Over/Under; do not use it alone as participant identity. Deprecated (#16310): `side` is the canonical spelling and carries the same value; this key stays on the wire.
|
|
1776
|
+
* @deprecated
|
|
1777
|
+
*/
|
|
1695
1778
|
piled_side: string | null;
|
|
1696
1779
|
/** Provider binary-column selector: 0 selects outcome_yes/token_id_yes; 1 selects outcome_no/token_id_no. It does not identify home/away or a participant. Use piled_side together with title/event context for display. */
|
|
1697
1780
|
piled_outcome_index: number;
|
|
@@ -1709,13 +1792,19 @@ export type PreGameSide = {
|
|
|
1709
1792
|
graded_holders: number;
|
|
1710
1793
|
/** Best grade present on the piled side; null when none. */
|
|
1711
1794
|
top_grade: "S" | "A" | "B" | null;
|
|
1712
|
-
/**
|
|
1795
|
+
/**
|
|
1796
|
+
* Canonical sharp-money score (yes_usd - no_usd)/(yes_usd + no_usd) in [-1, 1] (piled-yes positive, piled-no negative); a lower-order ranking tiebreak (after directional_rank_score and conviction_score). Deprecated (#16310): `side_share` is the canonical spelling and carries the same value; this key stays on the wire.
|
|
1797
|
+
* @deprecated
|
|
1798
|
+
*/
|
|
1713
1799
|
smart_score: number | null;
|
|
1714
1800
|
/** Market volume (USD). */
|
|
1715
1801
|
volume: number | null;
|
|
1716
1802
|
/** Aggregate recent flow direction on the market; null when unavailable. */
|
|
1717
1803
|
net_side: "BUY" | "SELL" | null;
|
|
1718
|
-
/**
|
|
1804
|
+
/**
|
|
1805
|
+
* Grade-weighted pile score (5*s + 4*a + 3*b) * sharp_pct; the raw conviction input to the ranking (see directional_rank_score). Deprecated (#16310): `backing_score` is the canonical spelling and carries the same value; this key stays on the wire.
|
|
1806
|
+
* @deprecated
|
|
1807
|
+
*/
|
|
1719
1808
|
conviction_score: number;
|
|
1720
1809
|
/** Piled-side graded holders read one-way: their fresh open legs across the signal game's markets (cross-market within the one game; moneyline+spread family only) all back the same team, or, when the market's holder scan was complete, Polymarket's currentValue shows no opposite leg on this market worth 10% of the backed leg and no fresh leg opposes it. Null when the directional read was not computed (no groupable game, no holder-level data on this ranking path, or the enrichment read failed) or classified nobody. */
|
|
1721
1810
|
one_way_holder_count: number | null;
|
|
@@ -1789,7 +1878,10 @@ export type PreGameSideObservation = {
|
|
|
1789
1878
|
cohort: "wider_holder" | "in_play" | "emerging_pile";
|
|
1790
1879
|
/** Always true. This row must not be routed to an order executor. */
|
|
1791
1880
|
observation_only: true;
|
|
1792
|
-
/**
|
|
1881
|
+
/**
|
|
1882
|
+
* Nullable provider-backed piled-outcome display label. When provider group context is unavailable, it may remain a bare Yes/No/Over/Under; do not use it alone as participant identity. Deprecated (#16310): `side` is the canonical spelling and carries the same value; this key stays on the wire.
|
|
1883
|
+
* @deprecated
|
|
1884
|
+
*/
|
|
1793
1885
|
piled_side: string | null;
|
|
1794
1886
|
/** Provider binary-column selector: 0 selects outcome_yes/token_id_yes; 1 selects outcome_no/token_id_no. It does not identify home/away or a participant. Use piled_side together with title/event context for display. */
|
|
1795
1887
|
piled_outcome_index: 0 | 1;
|
|
@@ -1805,11 +1897,17 @@ export type PreGameSideObservation = {
|
|
|
1805
1897
|
/** Piled-side S/A/B holder count. */
|
|
1806
1898
|
graded_holders: number;
|
|
1807
1899
|
top_grade: "S" | "A" | "B";
|
|
1808
|
-
/**
|
|
1900
|
+
/**
|
|
1901
|
+
* Canonical signed holder-pile score. Deprecated (#16310): `side_share` is the canonical spelling and carries the same value; this key stays on the wire.
|
|
1902
|
+
* @deprecated
|
|
1903
|
+
*/
|
|
1809
1904
|
smart_score: number;
|
|
1810
1905
|
/** Strictly positive stored market volume in USD. Missing, zero, or non-finite volume terminates as invalid_market and is never emitted as an observation. */
|
|
1811
1906
|
volume: number;
|
|
1812
|
-
/**
|
|
1907
|
+
/**
|
|
1908
|
+
* Grade-weighted holder-pile score before directional enrichment. Deprecated (#16310): `backing_score` is the canonical spelling and carries the same value; this key stays on the wire.
|
|
1909
|
+
* @deprecated
|
|
1910
|
+
*/
|
|
1813
1911
|
conviction_score: number;
|
|
1814
1912
|
/** Whether the provider holder page came from the shared cache or a live provider read. */
|
|
1815
1913
|
provider_read_source: "cached" | "live";
|
|
@@ -1967,9 +2065,9 @@ export type ResponseMeta = {
|
|
|
1967
2065
|
ranking_generation?: number;
|
|
1968
2066
|
/** Authoritative RFC3339 timestamp from cache_generations.updated_at for ranking_generation. It is read in the same repeatable-read snapshot as the leaderboard rows and is not request time, cache write time, or row insertion order. */
|
|
1969
2067
|
ranking_as_of?: string;
|
|
1970
|
-
/** Which path produced the team-directional read on this response. Only present on endpoints that compute one (today: GET /api/v1/sports-edge-signals). "live" means the read RAN. "degraded" means it FAILED, so nothing was measured and the ranking fell back to raw conviction. The flag describes the READ, not its consequence: a read that ran and found nothing groupable also leaves the directional fields null, and that is honestly "live" -- the per-signal nulls already say "nothing to enrich here", so this snapshot-level flag carries only what they cannot, namely whether the read ran at all. A degraded response is cached on the shorter degraded TTL so it self-heals. Reported SEPARATELY from ranking_source because the two degradations are independent -- a
|
|
2068
|
+
/** Which path produced the team-directional read on this response. Only present on endpoints that compute one (today: GET /api/v1/sports-edge-signals). "live" means the read RAN. "degraded" means it FAILED, so nothing was measured and the ranking fell back to raw conviction. The flag describes the READ, not its consequence: a read that ran and found nothing groupable also leaves the directional fields null, and that is honestly "live" -- the per-signal nulls already say "nothing to enrich here", so this snapshot-level flag carries only what they cannot, namely whether the read ran at all. A degraded response is cached on the shorter degraded TTL so it self-heals. Reported SEPARATELY from ranking_source because the two degradations are independent -- a sharp-money DB miss weakens the ranking DATA, a directional failure removes a ranking WEIGHT -- and a consumer down-weighting a degraded response needs to know which input it lost. Omitted on endpoints that compute no directional read. */
|
|
1971
2069
|
directional_source?: "live" | "degraded";
|
|
1972
|
-
/** Which ranking-data path produced this response. Only present on endpoints that can degrade a ranking (today: GET /api/v1/sports-edge-signals). "live" is the normal path (the current holder pile from the provider batch); "db_only" is the degraded fallback (a truthful but weaker trader_markets ranking) served when the live sharp-money ranking batch is unavailable (a
|
|
2070
|
+
/** Which ranking-data path produced this response. Only present on endpoints that can degrade a ranking (today: GET /api/v1/sports-edge-signals). "live" is the normal path (the current holder pile from the provider batch); "db_only" is the degraded fallback (a truthful but weaker trader_markets ranking) served when the live sharp-money ranking batch is unavailable (a sharp-money DB read failure, not a Polymarket outage) and cached on a shorter TTL, so a consumer can down-weight or skip it. Omitted on endpoints that never degrade. */
|
|
1973
2071
|
ranking_source?: "live" | "db_only";
|
|
1974
2072
|
/** Whole filtered snapshot category-evidence status before pagination. Operational live always remains partial source coverage. */
|
|
1975
2073
|
category_skill_source?: "live" | "partial" | "degraded" | "unavailable";
|
|
@@ -2032,7 +2130,10 @@ export type SmartMoneyFlowMarket = {
|
|
|
2032
2130
|
buy_volume_usd: number;
|
|
2033
2131
|
sell_volume_usd: number;
|
|
2034
2132
|
};
|
|
2035
|
-
/**
|
|
2133
|
+
/**
|
|
2134
|
+
* Deprecated alias of sharp_money; byte-identical and retained for backward compatibility.
|
|
2135
|
+
* @deprecated
|
|
2136
|
+
*/
|
|
2036
2137
|
smart_money: {
|
|
2037
2138
|
net_flow_usd: number;
|
|
2038
2139
|
direction: "YES" | "NO";
|
|
@@ -2114,6 +2215,10 @@ export type Trader = {
|
|
|
2114
2215
|
/** Hot-streak tier (trailing-7d cross-sectional percentile); a separate axis from the all-time grade. Omitted when there is no recent activity. */
|
|
2115
2216
|
streak_tier?: "hot" | "rising" | "neutral" | "cooling" | "cold";
|
|
2116
2217
|
score?: number;
|
|
2218
|
+
/** Capital-normalized forecasting score: the cohort percentile (0-100) of the EB-shrunk calibration edge. Omitted when the forecasting signal is unavailable; never replaced with zero. */
|
|
2219
|
+
forecast_score?: number;
|
|
2220
|
+
/** Share of forecast_score supported by the trader's own resolved-market record rather than the cohort prior: n / (n + 30). Omitted when forecast_score is unavailable. */
|
|
2221
|
+
forecast_evidence?: number;
|
|
2117
2222
|
rank?: number;
|
|
2118
2223
|
pnl: {
|
|
2119
2224
|
total?: number;
|
|
@@ -2124,13 +2229,17 @@ export type Trader = {
|
|
|
2124
2229
|
last_7d?: number;
|
|
2125
2230
|
/** DEPRECATED, never sent. The local pnl_30d rollup over-counted P&L (#5416 class) and is no longer emitted. Read the provider-native monthly window from GET /api/trader/{address}/profile-summary instead. */
|
|
2126
2231
|
last_30d?: number;
|
|
2232
|
+
/** Additive lossless counterpart. Omitted when the trusted native realized-P&L source is unavailable; existing numeric fields keep their display-safe v1 semantics. */
|
|
2233
|
+
exact?: TraderPnlExact;
|
|
2127
2234
|
};
|
|
2128
2235
|
stats: {
|
|
2129
2236
|
markets_traded?: number;
|
|
2130
2237
|
win_rate?: number;
|
|
2131
2238
|
daily_win_rate?: number;
|
|
2132
|
-
/** Full-history both-sides USD cash volume from Polymarket user-volume. Omitted without a verified observation; never leaderboard shares.
|
|
2239
|
+
/** Full-history both-sides USD cash volume from Polymarket user-volume. Omitted without a verified observation; never leaderboard shares. Its observation time is published as the volume group in data_quality and as trust.total_volume.freshness.as_of, both trader_usd_volume.observed_at; synced_at is a different clock and is never a substitute for it. */
|
|
2133
2240
|
total_volume?: number;
|
|
2241
|
+
/** Additive lossless counterpart to `total_volume`. Omitted when the verified provider observation is unavailable. */
|
|
2242
|
+
exact?: TraderStatsExact;
|
|
2134
2243
|
};
|
|
2135
2244
|
strategy?: {
|
|
2136
2245
|
strategy_type?: string;
|
|
@@ -2164,6 +2273,8 @@ export type Trader = {
|
|
|
2164
2273
|
synced_at?: string;
|
|
2165
2274
|
/** synced, unknown, or pending. */
|
|
2166
2275
|
sync_status?: string;
|
|
2276
|
+
/** Data age and coverage for this trader body. Always present. Its five groups are sync (traders.last_synced, covering pnl.total, pnl.realized, stats.markets_traded, stats.win_rate, stats.daily_win_rate, last_active, synced_at and sync_status), ranking (trader_rankings.computed_at, covering grade, score, streak_tier, forecast_score and forecast_evidence), leaderboard_rank (traders.leaderboard_rank, which stores no write timestamp, so its status is unknown rather than dated by another clock), volume (trader_usd_volume.observed_at, covering stats.total_volume) and positions (trader_markets, covering pnl.unrealized, whose own write times this read does not carry). For an unknown wallet every group is unavailable. */
|
|
2277
|
+
data_quality: DataQuality;
|
|
2167
2278
|
/** Field-level trust metadata. Present only when expand=trust or expand[]=trust is requested. */
|
|
2168
2279
|
trust?: TraderTrust;
|
|
2169
2280
|
/** Current evidence for observed and known categories (expand=categories or expand[]=categories). Omitted unless expanded. Includes insufficient, stale, unknown and degraded rows; absence of a category is not proof of skill. The global grade is unchanged. */
|
|
@@ -2248,22 +2359,56 @@ export type TraderEsportsGameRecord = {
|
|
|
2248
2359
|
/** The same rule as the parent record: measured when decided cleared min_decided_for_win_rate, not_enough_data when the counts are real but the sample is under the floor. A chip on a market in this game shows this row's rate when it is measured and the Esports bucket's otherwise. */
|
|
2249
2360
|
status: "measured" | "not_enough_data";
|
|
2250
2361
|
};
|
|
2362
|
+
export type TraderExportArtifactManifest = {
|
|
2363
|
+
/** Version of the artifact manifest contract. */
|
|
2364
|
+
manifest_version: string;
|
|
2365
|
+
/** Serialization used for the decompressed content. */
|
|
2366
|
+
format: "json" | "ndjson" | "csv";
|
|
2367
|
+
/** Stable schema identifier for the selected serialization. */
|
|
2368
|
+
schema_version: "trader-export-json-v1" | "trader-export-ndjson-v1" | "trader-export-csv-v1";
|
|
2369
|
+
/** Sections represented by the artifact. JSON and NDJSON carry the full envelope and trades; CSV carries trade rows only. */
|
|
2370
|
+
coverage: "full_envelope_and_trades" | "trades_only";
|
|
2371
|
+
generation: TraderExportGeneration;
|
|
2372
|
+
/** Number of trade rows written. */
|
|
2373
|
+
row_count: number;
|
|
2374
|
+
/** Exact byte count of the decompressed content stream clients receive. */
|
|
2375
|
+
content_size_bytes: number;
|
|
2376
|
+
/** Lowercase SHA-256 of the decompressed content bytes. */
|
|
2377
|
+
content_sha256: string;
|
|
2378
|
+
/** Exact byte count of the gzip-compressed bytes stored by the object provider. */
|
|
2379
|
+
compressed_size_bytes: number;
|
|
2380
|
+
/** Lowercase SHA-256 of the stored gzip bytes; the multipart ETag is not used as this checksum. */
|
|
2381
|
+
compressed_sha256: string;
|
|
2382
|
+
};
|
|
2383
|
+
export type TraderExportCategoryWatermark = {
|
|
2384
|
+
source: string;
|
|
2385
|
+
coverage: string;
|
|
2386
|
+
publication_fence: string | null;
|
|
2387
|
+
data_as_of: string | null;
|
|
2388
|
+
};
|
|
2389
|
+
export type TraderExportGeneration = {
|
|
2390
|
+
/** Opaque generation identity selected for the coherent read snapshot. */
|
|
2391
|
+
id: string;
|
|
2392
|
+
selected_at: string;
|
|
2393
|
+
consistency: "repeatable_read";
|
|
2394
|
+
source_watermarks: TraderExportSourceWatermarks;
|
|
2395
|
+
};
|
|
2251
2396
|
export type TraderExportJob = {
|
|
2252
2397
|
object: "trader_export_job";
|
|
2253
2398
|
data: {
|
|
2254
2399
|
job_id: number;
|
|
2255
|
-
/** queued: accepted, not started. running: the worker is streaming rows. reconcile_required: the upload finished but the storage completion answer was lost; the hourly reconciler reads the object back and moves the job to ready or failed, and expires_at bounds the wait. ready: downloadable until expires_at. failed: terminal; error says why; submit a new export. expired: the retention window passed; the file is retired, the download route answers 410, submit a new export. A job that has not reached ready by expires_at reads failed with error 'export expired before completion'. failed and expired rows stay readable for 48 hours, then the job answers 404. */
|
|
2256
|
-
status: "queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired";
|
|
2400
|
+
/** queued: accepted, not started. running: the worker is streaming rows. reconcile_required: the upload finished but the storage completion answer was lost; the hourly reconciler reads the object back and moves the job to ready or failed, and expires_at bounds the wait. ready: downloadable until expires_at. failed: terminal; error says why; submit a new export. expired: the retention window passed; the file is retired, the download route answers 410, submit a new export. cancel_requested: the owner cancelled a running job (POST /api/v1/trader/{address}/export/cancel); the worker stops at its next safe point and the job reads cancelled. cancelled: terminal; the owner cancelled the job and no file was published; submit a new export. A job that has not reached ready by expires_at reads failed with error 'export expired before completion'. failed, cancelled and expired rows stay readable for 48 hours, then the job answers 404. */
|
|
2401
|
+
status: "queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired" | "cancel_requested" | "cancelled";
|
|
2257
2402
|
format: "json" | "ndjson" | "csv";
|
|
2258
2403
|
total_trades: number | null;
|
|
2259
2404
|
processed_trades: number | null;
|
|
2260
2405
|
file_size: number | null;
|
|
2261
2406
|
error: string | null;
|
|
2262
|
-
/** True when status never changes again (ready, failed, expired). Stop polling. */
|
|
2407
|
+
/** True when status never changes again (ready, failed, expired, cancelled). Stop polling. */
|
|
2263
2408
|
terminal: boolean;
|
|
2264
2409
|
/** What to do next: poll the status route after poll_after_s, follow the download route, or submit a new export. Published beside status so a status value added later does not strand a client. */
|
|
2265
2410
|
next_action: "poll" | "download" | "resubmit";
|
|
2266
|
-
/** Seconds to wait before polling again. Absent when terminal. 5 while queued or
|
|
2411
|
+
/** Seconds to wait before polling again. Absent when terminal. 5 while queued, running or cancel_requested; 300 while reconcile_required, the cadence that state can change at. */
|
|
2267
2412
|
poll_after_s?: number;
|
|
2268
2413
|
created_at: string;
|
|
2269
2414
|
/** When the worker last claimed the job; null while queued. */
|
|
@@ -2277,22 +2422,42 @@ export type TraderExportJob = {
|
|
|
2277
2422
|
expired_at: string | null;
|
|
2278
2423
|
/** What the file is a snapshot of: the trader's served-data clock (the latest position refresh, else the last completed sync) when the file was written; the same value as export_metadata.data_as_of inside the file. null until the file is written, or when the trader had neither. Read this, not ready_at, to decide whether a reused job is fresh enough; submit with fresh=true for a newer snapshot. */
|
|
2279
2424
|
data_as_of: string | null;
|
|
2425
|
+
/** When the owner asked to cancel the job; null otherwise. Set on every cancelled job, including one cancelled while queued. While status is cancel_requested this is the instant the worker was asked to stop. */
|
|
2426
|
+
cancel_requested_at: string | null;
|
|
2427
|
+
/** When the job reached cancelled; null until then. */
|
|
2428
|
+
cancelled_at: string | null;
|
|
2280
2429
|
/** Worker claims so far. */
|
|
2281
2430
|
attempt: number;
|
|
2282
2431
|
/** The job fails when attempt reaches this. */
|
|
2283
2432
|
max_attempts: number;
|
|
2284
2433
|
/** Present only while status is ready: the stored object's identity, so a client can check the download it receives. */
|
|
2285
2434
|
artifact?: {
|
|
2435
|
+
/** Stable identity for this completed export artifact; unchanged when a temporary download URL is renewed. */
|
|
2436
|
+
artifact_id: string;
|
|
2286
2437
|
/** The storage ETag of the object. */
|
|
2287
2438
|
etag: string | null;
|
|
2288
2439
|
/** Bytes on the wire (gzip); file_size is the decompressed size. */
|
|
2289
2440
|
compressed_size_bytes: number | null;
|
|
2290
2441
|
content_type: "application/json" | "application/x-ndjson" | "text/csv";
|
|
2291
2442
|
content_encoding: "gzip";
|
|
2443
|
+
/** Immutable manifest for artifacts generated with manifest support; null on historical artifacts written before this contract. */
|
|
2444
|
+
manifest: TraderExportArtifactManifest | null;
|
|
2292
2445
|
};
|
|
2293
2446
|
};
|
|
2294
2447
|
meta: ResponseMeta;
|
|
2295
2448
|
};
|
|
2449
|
+
export type TraderExportPnlWatermark = {
|
|
2450
|
+
source: string;
|
|
2451
|
+
coverage: string;
|
|
2452
|
+
revision: number | null;
|
|
2453
|
+
observed_at: string | null;
|
|
2454
|
+
};
|
|
2455
|
+
export type TraderExportPositionWatermark = {
|
|
2456
|
+
source: string;
|
|
2457
|
+
coverage: string;
|
|
2458
|
+
generation: number | null;
|
|
2459
|
+
data_as_of: string | null;
|
|
2460
|
+
};
|
|
2296
2461
|
export type TraderExportSnapshot = {
|
|
2297
2462
|
address: string;
|
|
2298
2463
|
generated_at: string;
|
|
@@ -2302,6 +2467,18 @@ export type TraderExportSnapshot = {
|
|
|
2302
2467
|
counts: ExportCounts;
|
|
2303
2468
|
large_export_policy: LargeExportPolicy;
|
|
2304
2469
|
};
|
|
2470
|
+
export type TraderExportSourceWatermarks = {
|
|
2471
|
+
positions: TraderExportPositionWatermark;
|
|
2472
|
+
pnl: TraderExportPnlWatermark;
|
|
2473
|
+
categories: TraderExportCategoryWatermark;
|
|
2474
|
+
trades: TraderExportTradeWatermark;
|
|
2475
|
+
};
|
|
2476
|
+
export type TraderExportTradeWatermark = {
|
|
2477
|
+
source: string;
|
|
2478
|
+
coverage: string;
|
|
2479
|
+
rows: number;
|
|
2480
|
+
first_activity_date: string | null;
|
|
2481
|
+
};
|
|
2305
2482
|
/** A trader's daily P&L object. `id` is always present. The five sections -- `entries`, `stats`, `monthly`, `year_totals`, `drawdown` -- are present unless the request's `sections` parameter excluded them, so a request that sends no `sections` always carries all five. An excluded section is absent from the object, never null and never an empty array. */
|
|
2306
2483
|
export type TraderPnl = {
|
|
2307
2484
|
/** Prefixed trader ID (`trd_...`). */
|
|
@@ -2414,6 +2591,16 @@ export type TraderPnl = {
|
|
|
2414
2591
|
drawdown: number;
|
|
2415
2592
|
}[];
|
|
2416
2593
|
};
|
|
2594
|
+
/** Lossless counterparts for trader P&L values. The object is omitted when no trusted native realized-P&L snapshot is available. */
|
|
2595
|
+
export type TraderPnlExact = {
|
|
2596
|
+
/** Native Polymarket realized P&L plus credited maker and taker rebates, with fees included, from the trusted matching `trader_trading_pnl.net_realized_pnl` snapshot. */
|
|
2597
|
+
realized: ExactDecimal;
|
|
2598
|
+
};
|
|
2599
|
+
/** Lossless counterparts for trader statistics. The object is omitted when the verified provider observation is unavailable. */
|
|
2600
|
+
export type TraderStatsExact = {
|
|
2601
|
+
/** Full-history both-sides Polymarket user-volume atom from the verified `trader_usd_volume` observation. */
|
|
2602
|
+
total_volume: ExactDecimal;
|
|
2603
|
+
};
|
|
2417
2604
|
/** Field-level trust metadata returned only when GET /api/v1/trader/{address} includes expand=trust. */
|
|
2418
2605
|
export type TraderTrust = {
|
|
2419
2606
|
total_pnl: TrustMetadata;
|
|
@@ -2425,6 +2612,8 @@ export type TraderTrust = {
|
|
|
2425
2612
|
total_volume: TrustMetadata;
|
|
2426
2613
|
grade: TrustMetadata;
|
|
2427
2614
|
score: TrustMetadata;
|
|
2615
|
+
forecast_score: TrustMetadata;
|
|
2616
|
+
forecast_evidence: TrustMetadata;
|
|
2428
2617
|
rank: TrustMetadata;
|
|
2429
2618
|
streak_tier: TrustMetadata;
|
|
2430
2619
|
strategy: TrustMetadata;
|
|
@@ -2591,7 +2780,7 @@ export type WebhookEndpoint = {
|
|
|
2591
2780
|
signing_secret?: string;
|
|
2592
2781
|
verification?: WebhookVerification;
|
|
2593
2782
|
};
|
|
2594
|
-
/** Self-describing entry in the webhook event catalog: the event type a subscriber lists in event_types, when it fires, the data payload shape, and whether it currently fires (active) or is reserved (dormant, subscribable but not yet delivered). Pro-only event types (whale_trades_inserted, wallet_grade_changed, suspicious_trade_flagged, insider_radar_flag_raised, smart_money_flow_detected) only deliver to API keys on an active Pro subscription.
|
|
2783
|
+
/** Self-describing entry in the webhook event catalog: the event type a subscriber lists in event_types, when it fires, the data payload shape, and whether it currently fires (active) or is reserved (dormant, subscribable but not yet delivered). Pro-only event types (large_trades_inserted, whale_trades_inserted, wallet_grade_changed, suspicious_trade_flagged, insider_radar_flag_raised, sharp_money_flow_detected, smart_money_flow_detected) only deliver to API keys on an active Pro subscription. Export lifecycle event types (export_job_ready, export_job_failed, export_job_expired, export_job_cancelled) are owner-scoped to the API-key account that created the export and contain no download URL; use the authorized export status/download routes. Some entries are two spellings of one event: large_trades_inserted and whale_trades_inserted, trader_synced and whale_trader_synced, suspicious_trade_flagged and insider_radar_flag_raised, sharp_money_flow_detected and smart_money_flow_detected. Either spelling subscribes, and an endpoint receives deliveries under the spelling it registered. */
|
|
2595
2784
|
export type WebhookEventDescriptor = {
|
|
2596
2785
|
id: WebhookEventType;
|
|
2597
2786
|
/** One-line description of when the event fires. */
|
|
@@ -2601,7 +2790,7 @@ export type WebhookEventDescriptor = {
|
|
|
2601
2790
|
/** active: the event has a firing producer callsite. dormant: advertised and subscribable, but does not yet enqueue any delivery. */
|
|
2602
2791
|
status: "active" | "dormant";
|
|
2603
2792
|
};
|
|
2604
|
-
export type WebhookEventType = "whale_trades_inserted" | "live_sports_updated" | "whale_trader_synced" | "large_positions_updated" | "wallet_grade_changed" | "suspicious_trade_flagged" | "insider_radar_flag_raised" | "smart_money_flow_detected";
|
|
2793
|
+
export type WebhookEventType = "large_trades_inserted" | "whale_trades_inserted" | "live_sports_updated" | "trader_synced" | "whale_trader_synced" | "large_positions_updated" | "wallet_grade_changed" | "suspicious_trade_flagged" | "insider_radar_flag_raised" | "sharp_money_flow_detected" | "smart_money_flow_detected" | "export_job_ready" | "export_job_failed" | "export_job_expired" | "export_job_cancelled";
|
|
2605
2794
|
export type WebhookRetryPolicy = {
|
|
2606
2795
|
max_attempts: 8;
|
|
2607
2796
|
terminal_status: "dead_letter";
|
|
@@ -2631,6 +2820,55 @@ export interface OperationData {
|
|
|
2631
2820
|
activateWebhookSecret: WebhookEndpoint;
|
|
2632
2821
|
batchGetMarketIntel: BatchMarketIntelItem[];
|
|
2633
2822
|
batchGetTraders: BatchTraderItem[];
|
|
2823
|
+
cancelTraderExport: {
|
|
2824
|
+
job_id: number;
|
|
2825
|
+
/** queued: accepted, not started. running: the worker is streaming rows. reconcile_required: the upload finished but the storage completion answer was lost; the hourly reconciler reads the object back and moves the job to ready or failed, and expires_at bounds the wait. ready: downloadable until expires_at. failed: terminal; error says why; submit a new export. expired: the retention window passed; the file is retired, the download route answers 410, submit a new export. cancel_requested: the owner cancelled a running job (POST /api/v1/trader/{address}/export/cancel); the worker stops at its next safe point and the job reads cancelled. cancelled: terminal; the owner cancelled the job and no file was published; submit a new export. A job that has not reached ready by expires_at reads failed with error 'export expired before completion'. failed, cancelled and expired rows stay readable for 48 hours, then the job answers 404. */
|
|
2826
|
+
status: "queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired" | "cancel_requested" | "cancelled";
|
|
2827
|
+
format: "json" | "ndjson" | "csv";
|
|
2828
|
+
total_trades: number | null;
|
|
2829
|
+
processed_trades: number | null;
|
|
2830
|
+
file_size: number | null;
|
|
2831
|
+
error: string | null;
|
|
2832
|
+
/** True when status never changes again (ready, failed, expired, cancelled). Stop polling. */
|
|
2833
|
+
terminal: boolean;
|
|
2834
|
+
/** What to do next: poll the status route after poll_after_s, follow the download route, or submit a new export. Published beside status so a status value added later does not strand a client. */
|
|
2835
|
+
next_action: "poll" | "download" | "resubmit";
|
|
2836
|
+
/** Seconds to wait before polling again. Absent when terminal. 5 while queued, running or cancel_requested; 300 while reconcile_required, the cadence that state can change at. */
|
|
2837
|
+
poll_after_s?: number;
|
|
2838
|
+
created_at: string;
|
|
2839
|
+
/** When the worker last claimed the job; null while queued. */
|
|
2840
|
+
started_at: string | null;
|
|
2841
|
+
/** When the file became downloadable. null before ready, and on jobs finalized before this field existed. */
|
|
2842
|
+
ready_at: string | null;
|
|
2843
|
+
failed_at: string | null;
|
|
2844
|
+
/** The retention window: 24 hours from submit. A ready file downloads until this instant; a job that has not reached ready by it fails. A reused job (200 on submit) keeps its original window. */
|
|
2845
|
+
expires_at: string;
|
|
2846
|
+
/** When the job became expired; null until then. */
|
|
2847
|
+
expired_at: string | null;
|
|
2848
|
+
/** What the file is a snapshot of: the trader's served-data clock (the latest position refresh, else the last completed sync) when the file was written; the same value as export_metadata.data_as_of inside the file. null until the file is written, or when the trader had neither. Read this, not ready_at, to decide whether a reused job is fresh enough; submit with fresh=true for a newer snapshot. */
|
|
2849
|
+
data_as_of: string | null;
|
|
2850
|
+
/** When the owner asked to cancel the job; null otherwise. Set on every cancelled job, including one cancelled while queued. While status is cancel_requested this is the instant the worker was asked to stop. */
|
|
2851
|
+
cancel_requested_at: string | null;
|
|
2852
|
+
/** When the job reached cancelled; null until then. */
|
|
2853
|
+
cancelled_at: string | null;
|
|
2854
|
+
/** Worker claims so far. */
|
|
2855
|
+
attempt: number;
|
|
2856
|
+
/** The job fails when attempt reaches this. */
|
|
2857
|
+
max_attempts: number;
|
|
2858
|
+
/** Present only while status is ready: the stored object's identity, so a client can check the download it receives. */
|
|
2859
|
+
artifact?: {
|
|
2860
|
+
/** Stable identity for this completed export artifact; unchanged when a temporary download URL is renewed. */
|
|
2861
|
+
artifact_id: string;
|
|
2862
|
+
/** The storage ETag of the object. */
|
|
2863
|
+
etag: string | null;
|
|
2864
|
+
/** Bytes on the wire (gzip); file_size is the decompressed size. */
|
|
2865
|
+
compressed_size_bytes: number | null;
|
|
2866
|
+
content_type: "application/json" | "application/x-ndjson" | "text/csv";
|
|
2867
|
+
content_encoding: "gzip";
|
|
2868
|
+
/** Immutable manifest for artifacts generated with manifest support; null on historical artifacts written before this contract. */
|
|
2869
|
+
manifest: TraderExportArtifactManifest | null;
|
|
2870
|
+
};
|
|
2871
|
+
};
|
|
2634
2872
|
createMcpJsonRpcResponse: {
|
|
2635
2873
|
jsonrpc: "2.0";
|
|
2636
2874
|
id: string | number | null;
|
|
@@ -2707,18 +2945,18 @@ export interface OperationData {
|
|
|
2707
2945
|
getTraderExportSnapshot: TraderExportSnapshot;
|
|
2708
2946
|
getTraderExportStatus: {
|
|
2709
2947
|
job_id: number;
|
|
2710
|
-
/** queued: accepted, not started. running: the worker is streaming rows. reconcile_required: the upload finished but the storage completion answer was lost; the hourly reconciler reads the object back and moves the job to ready or failed, and expires_at bounds the wait. ready: downloadable until expires_at. failed: terminal; error says why; submit a new export. expired: the retention window passed; the file is retired, the download route answers 410, submit a new export. A job that has not reached ready by expires_at reads failed with error 'export expired before completion'. failed and expired rows stay readable for 48 hours, then the job answers 404. */
|
|
2711
|
-
status: "queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired";
|
|
2948
|
+
/** queued: accepted, not started. running: the worker is streaming rows. reconcile_required: the upload finished but the storage completion answer was lost; the hourly reconciler reads the object back and moves the job to ready or failed, and expires_at bounds the wait. ready: downloadable until expires_at. failed: terminal; error says why; submit a new export. expired: the retention window passed; the file is retired, the download route answers 410, submit a new export. cancel_requested: the owner cancelled a running job (POST /api/v1/trader/{address}/export/cancel); the worker stops at its next safe point and the job reads cancelled. cancelled: terminal; the owner cancelled the job and no file was published; submit a new export. A job that has not reached ready by expires_at reads failed with error 'export expired before completion'. failed, cancelled and expired rows stay readable for 48 hours, then the job answers 404. */
|
|
2949
|
+
status: "queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired" | "cancel_requested" | "cancelled";
|
|
2712
2950
|
format: "json" | "ndjson" | "csv";
|
|
2713
2951
|
total_trades: number | null;
|
|
2714
2952
|
processed_trades: number | null;
|
|
2715
2953
|
file_size: number | null;
|
|
2716
2954
|
error: string | null;
|
|
2717
|
-
/** True when status never changes again (ready, failed, expired). Stop polling. */
|
|
2955
|
+
/** True when status never changes again (ready, failed, expired, cancelled). Stop polling. */
|
|
2718
2956
|
terminal: boolean;
|
|
2719
2957
|
/** What to do next: poll the status route after poll_after_s, follow the download route, or submit a new export. Published beside status so a status value added later does not strand a client. */
|
|
2720
2958
|
next_action: "poll" | "download" | "resubmit";
|
|
2721
|
-
/** Seconds to wait before polling again. Absent when terminal. 5 while queued or
|
|
2959
|
+
/** Seconds to wait before polling again. Absent when terminal. 5 while queued, running or cancel_requested; 300 while reconcile_required, the cadence that state can change at. */
|
|
2722
2960
|
poll_after_s?: number;
|
|
2723
2961
|
created_at: string;
|
|
2724
2962
|
/** When the worker last claimed the job; null while queued. */
|
|
@@ -2732,18 +2970,26 @@ export interface OperationData {
|
|
|
2732
2970
|
expired_at: string | null;
|
|
2733
2971
|
/** What the file is a snapshot of: the trader's served-data clock (the latest position refresh, else the last completed sync) when the file was written; the same value as export_metadata.data_as_of inside the file. null until the file is written, or when the trader had neither. Read this, not ready_at, to decide whether a reused job is fresh enough; submit with fresh=true for a newer snapshot. */
|
|
2734
2972
|
data_as_of: string | null;
|
|
2973
|
+
/** When the owner asked to cancel the job; null otherwise. Set on every cancelled job, including one cancelled while queued. While status is cancel_requested this is the instant the worker was asked to stop. */
|
|
2974
|
+
cancel_requested_at: string | null;
|
|
2975
|
+
/** When the job reached cancelled; null until then. */
|
|
2976
|
+
cancelled_at: string | null;
|
|
2735
2977
|
/** Worker claims so far. */
|
|
2736
2978
|
attempt: number;
|
|
2737
2979
|
/** The job fails when attempt reaches this. */
|
|
2738
2980
|
max_attempts: number;
|
|
2739
2981
|
/** Present only while status is ready: the stored object's identity, so a client can check the download it receives. */
|
|
2740
2982
|
artifact?: {
|
|
2983
|
+
/** Stable identity for this completed export artifact; unchanged when a temporary download URL is renewed. */
|
|
2984
|
+
artifact_id: string;
|
|
2741
2985
|
/** The storage ETag of the object. */
|
|
2742
2986
|
etag: string | null;
|
|
2743
2987
|
/** Bytes on the wire (gzip); file_size is the decompressed size. */
|
|
2744
2988
|
compressed_size_bytes: number | null;
|
|
2745
2989
|
content_type: "application/json" | "application/x-ndjson" | "text/csv";
|
|
2746
2990
|
content_encoding: "gzip";
|
|
2991
|
+
/** Immutable manifest for artifacts generated with manifest support; null on historical artifacts written before this contract. */
|
|
2992
|
+
manifest: TraderExportArtifactManifest | null;
|
|
2747
2993
|
};
|
|
2748
2994
|
};
|
|
2749
2995
|
getTraderPnl: TraderPnl;
|
|
@@ -2818,18 +3064,18 @@ export interface OperationData {
|
|
|
2818
3064
|
searchMarkets: MarketSearchResult[];
|
|
2819
3065
|
submitTraderExport: {
|
|
2820
3066
|
job_id: number;
|
|
2821
|
-
/** queued: accepted, not started. running: the worker is streaming rows. reconcile_required: the upload finished but the storage completion answer was lost; the hourly reconciler reads the object back and moves the job to ready or failed, and expires_at bounds the wait. ready: downloadable until expires_at. failed: terminal; error says why; submit a new export. expired: the retention window passed; the file is retired, the download route answers 410, submit a new export. A job that has not reached ready by expires_at reads failed with error 'export expired before completion'. failed and expired rows stay readable for 48 hours, then the job answers 404. */
|
|
2822
|
-
status: "queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired";
|
|
3067
|
+
/** queued: accepted, not started. running: the worker is streaming rows. reconcile_required: the upload finished but the storage completion answer was lost; the hourly reconciler reads the object back and moves the job to ready or failed, and expires_at bounds the wait. ready: downloadable until expires_at. failed: terminal; error says why; submit a new export. expired: the retention window passed; the file is retired, the download route answers 410, submit a new export. cancel_requested: the owner cancelled a running job (POST /api/v1/trader/{address}/export/cancel); the worker stops at its next safe point and the job reads cancelled. cancelled: terminal; the owner cancelled the job and no file was published; submit a new export. A job that has not reached ready by expires_at reads failed with error 'export expired before completion'. failed, cancelled and expired rows stay readable for 48 hours, then the job answers 404. */
|
|
3068
|
+
status: "queued" | "running" | "ready" | "failed" | "reconcile_required" | "expired" | "cancel_requested" | "cancelled";
|
|
2823
3069
|
format: "json" | "ndjson" | "csv";
|
|
2824
3070
|
total_trades: number | null;
|
|
2825
3071
|
processed_trades: number | null;
|
|
2826
3072
|
file_size: number | null;
|
|
2827
3073
|
error: string | null;
|
|
2828
|
-
/** True when status never changes again (ready, failed, expired). Stop polling. */
|
|
3074
|
+
/** True when status never changes again (ready, failed, expired, cancelled). Stop polling. */
|
|
2829
3075
|
terminal: boolean;
|
|
2830
3076
|
/** What to do next: poll the status route after poll_after_s, follow the download route, or submit a new export. Published beside status so a status value added later does not strand a client. */
|
|
2831
3077
|
next_action: "poll" | "download" | "resubmit";
|
|
2832
|
-
/** Seconds to wait before polling again. Absent when terminal. 5 while queued or
|
|
3078
|
+
/** Seconds to wait before polling again. Absent when terminal. 5 while queued, running or cancel_requested; 300 while reconcile_required, the cadence that state can change at. */
|
|
2833
3079
|
poll_after_s?: number;
|
|
2834
3080
|
created_at: string;
|
|
2835
3081
|
/** When the worker last claimed the job; null while queued. */
|
|
@@ -2843,18 +3089,26 @@ export interface OperationData {
|
|
|
2843
3089
|
expired_at: string | null;
|
|
2844
3090
|
/** What the file is a snapshot of: the trader's served-data clock (the latest position refresh, else the last completed sync) when the file was written; the same value as export_metadata.data_as_of inside the file. null until the file is written, or when the trader had neither. Read this, not ready_at, to decide whether a reused job is fresh enough; submit with fresh=true for a newer snapshot. */
|
|
2845
3091
|
data_as_of: string | null;
|
|
3092
|
+
/** When the owner asked to cancel the job; null otherwise. Set on every cancelled job, including one cancelled while queued. While status is cancel_requested this is the instant the worker was asked to stop. */
|
|
3093
|
+
cancel_requested_at: string | null;
|
|
3094
|
+
/** When the job reached cancelled; null until then. */
|
|
3095
|
+
cancelled_at: string | null;
|
|
2846
3096
|
/** Worker claims so far. */
|
|
2847
3097
|
attempt: number;
|
|
2848
3098
|
/** The job fails when attempt reaches this. */
|
|
2849
3099
|
max_attempts: number;
|
|
2850
3100
|
/** Present only while status is ready: the stored object's identity, so a client can check the download it receives. */
|
|
2851
3101
|
artifact?: {
|
|
3102
|
+
/** Stable identity for this completed export artifact; unchanged when a temporary download URL is renewed. */
|
|
3103
|
+
artifact_id: string;
|
|
2852
3104
|
/** The storage ETag of the object. */
|
|
2853
3105
|
etag: string | null;
|
|
2854
3106
|
/** Bytes on the wire (gzip); file_size is the decompressed size. */
|
|
2855
3107
|
compressed_size_bytes: number | null;
|
|
2856
3108
|
content_type: "application/json" | "application/x-ndjson" | "text/csv";
|
|
2857
3109
|
content_encoding: "gzip";
|
|
3110
|
+
/** Immutable manifest for artifacts generated with manifest support; null on historical artifacts written before this contract. */
|
|
3111
|
+
manifest: TraderExportArtifactManifest | null;
|
|
2858
3112
|
};
|
|
2859
3113
|
};
|
|
2860
3114
|
updateWebhook: WebhookEndpoint;
|
|
@@ -2865,6 +3119,10 @@ export interface OperationQuery {
|
|
|
2865
3119
|
activateWebhookSecret: Record<string, never>;
|
|
2866
3120
|
batchGetMarketIntel: Record<string, never>;
|
|
2867
3121
|
batchGetTraders: Record<string, never>;
|
|
3122
|
+
cancelTraderExport: {
|
|
3123
|
+
/** Export job id returned by the submit route. */
|
|
3124
|
+
job_id: number;
|
|
3125
|
+
};
|
|
2868
3126
|
createMcpJsonRpcResponse: Record<string, never>;
|
|
2869
3127
|
createWebhook: Record<string, never>;
|
|
2870
3128
|
deleteWebhook: Record<string, never>;
|
|
@@ -3083,7 +3341,7 @@ export interface OperationQuery {
|
|
|
3083
3341
|
limit?: number;
|
|
3084
3342
|
/** Pagination cursor from previous response's next_cursor. Prefix: wth_. URL-encode when replaying as a query parameter. */
|
|
3085
3343
|
cursor?: string;
|
|
3086
|
-
/** Minimum trade size in USD. The capture floor was 3,000 USD before 2026-07-06 and 10,000 USD from then (1,000 USD in earnings markets), so 10000 gives one size rule across the whole archive. */
|
|
3344
|
+
/** Minimum trade size in USD. The capture floor was 3,000 USD before 2026-07-06 and 10,000 USD from then (1,000 USD in earnings markets), so 10000 gives one size rule across the whole archive. From 2026-09-23 a fill must also be at least 0.1% of its market's recorded traded volume (Polymarket's own share count); rows written before that date were not re-filtered. */
|
|
3087
3345
|
min_size?: number;
|
|
3088
3346
|
/** Exact raw provider condition_id. Unknown markets return an empty list. */
|
|
3089
3347
|
condition_id?: string;
|
|
@@ -3101,6 +3359,10 @@ export interface OperationQuery {
|
|
|
3101
3359
|
from?: string;
|
|
3102
3360
|
/** Exclusive RFC3339 upper bound on whale_alerts.traded_at. Must be after from when both are present. */
|
|
3103
3361
|
to?: string;
|
|
3362
|
+
/** Keep only trades whose market_volume_share is known and at least this. A fraction, not a percent: 0.01 is one percent of the market's traded volume. A trade whose share is unavailable is never returned by a non-zero value, because an unavailable share cannot be said to clear a floor. */
|
|
3363
|
+
min_market_volume_share?: number;
|
|
3364
|
+
/** Order of the returned page. recent is newest first and is the default. market_volume_share ranks by each trade's share of its market's traded volume, biggest first, with a trade whose share is unavailable last. That ranking reads from, or the last 30 days when from is omitted, for the same reason. A cursor is bound to the order it was minted in, so a continuation cannot cross from one order into the other. */
|
|
3365
|
+
sort?: "recent" | "market_volume_share";
|
|
3104
3366
|
};
|
|
3105
3367
|
listLargeTrades: {
|
|
3106
3368
|
/** Maximum number of recent large trades to return. */
|
|
@@ -3115,6 +3377,10 @@ export interface OperationQuery {
|
|
|
3115
3377
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
3116
3378
|
/** When true, return only rows with persisted suspicion_score >= 60. The filter is applied before SQL-backed limit + 1 pagination. */
|
|
3117
3379
|
suspicious_only?: boolean;
|
|
3380
|
+
/** Keep only trades whose market_volume_share is known and at least this. A fraction, not a percent: 0.01 is one percent of the market's traded volume. A trade whose share is unavailable is never returned by a non-zero value, because an unavailable share cannot be said to clear a floor. */
|
|
3381
|
+
min_market_volume_share?: number;
|
|
3382
|
+
/** Order of the returned page. recent is newest first and is the default. market_volume_share ranks by each trade's share of its market's traded volume, biggest first, with a trade whose share is unavailable last. That ranking reads the last 30 days, because the share is computed for each request and an unbounded ranking cannot be served inside the documented latency budget. A cursor is bound to the order it was minted in, so a continuation cannot cross from one order into the other. */
|
|
3383
|
+
sort?: "recent" | "market_volume_share";
|
|
3118
3384
|
};
|
|
3119
3385
|
listLeaderboard: {
|
|
3120
3386
|
/** Maximum number of ranked traders to return. */
|
|
@@ -3289,6 +3555,10 @@ export interface OperationQuery {
|
|
|
3289
3555
|
from?: string;
|
|
3290
3556
|
/** Exclusive RFC3339 upper bound on whale_alerts.traded_at. Must be after from when both are present. */
|
|
3291
3557
|
to?: string;
|
|
3558
|
+
/** Keep only trades whose market_volume_share is known and at least this. A fraction, not a percent: 0.01 is one percent of the market's traded volume. A trade whose share is unavailable is never returned by a non-zero value, because an unavailable share cannot be said to clear a floor. */
|
|
3559
|
+
min_market_volume_share?: number;
|
|
3560
|
+
/** Order of the returned page. recent is newest first and is the default. market_volume_share ranks by each trade's share of its market's traded volume, biggest first, with a trade whose share is unavailable last. That ranking reads from, or the last 30 days when from is omitted, for the same reason. A cursor is bound to the order it was minted in, so a continuation cannot cross from one order into the other. */
|
|
3561
|
+
sort?: "recent" | "market_volume_share";
|
|
3292
3562
|
};
|
|
3293
3563
|
listWhaleTrades: {
|
|
3294
3564
|
/** Maximum number of recent large trades to return. */
|
|
@@ -3303,6 +3573,10 @@ export interface OperationQuery {
|
|
|
3303
3573
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
3304
3574
|
/** When true, return only rows with persisted suspicion_score >= 60. The filter is applied before SQL-backed limit + 1 pagination. */
|
|
3305
3575
|
suspicious_only?: boolean;
|
|
3576
|
+
/** Keep only trades whose market_volume_share is known and at least this. A fraction, not a percent: 0.01 is one percent of the market's traded volume. A trade whose share is unavailable is never returned by a non-zero value, because an unavailable share cannot be said to clear a floor. */
|
|
3577
|
+
min_market_volume_share?: number;
|
|
3578
|
+
/** Order of the returned page. recent is newest first and is the default. market_volume_share ranks by each trade's share of its market's traded volume, biggest first, with a trade whose share is unavailable last. That ranking reads the last 30 days, because the share is computed for each request and an unbounded ranking cannot be served inside the documented latency budget. A cursor is bound to the order it was minted in, so a continuation cannot cross from one order into the other. */
|
|
3579
|
+
sort?: "recent" | "market_volume_share";
|
|
3306
3580
|
};
|
|
3307
3581
|
prepareWebhookSecret: Record<string, never>;
|
|
3308
3582
|
redeliverWebhookDelivery: Record<string, never>;
|
|
@@ -3344,6 +3618,10 @@ export interface OperationPath {
|
|
|
3344
3618
|
};
|
|
3345
3619
|
batchGetMarketIntel: Record<string, never>;
|
|
3346
3620
|
batchGetTraders: Record<string, never>;
|
|
3621
|
+
cancelTraderExport: {
|
|
3622
|
+
/** Trader wallet address (0x...), known trader username-style lookup, or trd_-prefixed trader ID emitted by this API. */
|
|
3623
|
+
address: string;
|
|
3624
|
+
};
|
|
3347
3625
|
createMcpJsonRpcResponse: Record<string, never>;
|
|
3348
3626
|
createWebhook: Record<string, never>;
|
|
3349
3627
|
deleteWebhook: {
|
|
@@ -3537,6 +3815,7 @@ export interface OperationBody {
|
|
|
3537
3815
|
/** Shared expand flags applied to every trader item. */
|
|
3538
3816
|
expand?: ("strategy" | "categories" | "quant_metrics" | "trust")[];
|
|
3539
3817
|
};
|
|
3818
|
+
cancelTraderExport: never;
|
|
3540
3819
|
createMcpJsonRpcResponse: {
|
|
3541
3820
|
/** JSON-RPC protocol version; this server accepts 2.0. */
|
|
3542
3821
|
jsonrpc: "2.0";
|
|
@@ -3640,6 +3919,7 @@ export interface OperationResponse {
|
|
|
3640
3919
|
data: OperationData["batchGetTraders"];
|
|
3641
3920
|
meta: BatchResponseMeta;
|
|
3642
3921
|
};
|
|
3922
|
+
cancelTraderExport: TraderExportJob;
|
|
3643
3923
|
createMcpJsonRpcResponse: {
|
|
3644
3924
|
jsonrpc: "2.0";
|
|
3645
3925
|
id: string | number | null;
|