@0xinsider/sdk 0.17.0 → 0.18.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 +5 -2
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +33 -22
- package/dist/client.js.map +1 -1
- package/dist/data-quality.d.ts +4 -4
- package/dist/data-quality.d.ts.map +1 -1
- package/dist/data-quality.js +1 -1
- package/dist/data-quality.js.map +1 -1
- package/dist/errors.d.ts +5 -6
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +4 -5
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/pagination.d.ts +3 -3
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +3 -3
- package/dist/pagination.js.map +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/provenance.js +2 -2
- package/dist/retry.js +4 -2
- package/dist/retry.js.map +1 -1
- package/dist/schema.d.ts +148 -37
- package/dist/schema.d.ts.map +1 -1
- package/dist/stream.d.ts +7 -7
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +13 -10
- package/dist/stream.js.map +1 -1
- package/dist/webhooks.d.ts +6 -6
- package/dist/webhooks.d.ts.map +1 -1
- package/dist/webhooks.js +3 -3
- package/dist/webhooks.js.map +1 -1
- package/package.json +7 -3
package/dist/schema.d.ts
CHANGED
|
@@ -538,7 +538,7 @@ export type Game = {
|
|
|
538
538
|
competitors: GameCompetitor[];
|
|
539
539
|
/** The esports series length, for example Bo3. Omitted for everything else. */
|
|
540
540
|
series_format?: string;
|
|
541
|
-
/** Whether
|
|
541
|
+
/** Whether this read includes a market classified as paying on a draw, including soccer's independent 1X2 draw leg. Read this instead of assuming a two-outcome moneyline. */
|
|
542
542
|
draw_offered: boolean;
|
|
543
543
|
/** Every market this read linked to the game, ordered by condition_id. */
|
|
544
544
|
markets: GameMarket[];
|
|
@@ -602,7 +602,7 @@ export type GameMarket = {
|
|
|
602
602
|
slug?: string;
|
|
603
603
|
/** The provider's own market type, for example moneyline or spread. Omitted when the provider sent none. Not an enum: the provider owns this vocabulary and adds to it. */
|
|
604
604
|
sports_market_type?: string;
|
|
605
|
-
/** Which side of the game this market's YES leg pays.
|
|
605
|
+
/** Which side of the game this market's YES leg pays. Soccer 1X2 legs are explicitly classified as home, draw or away by the provider projection. draw is a real value, not a competitor. Omitted when the provider projection cannot classify the leg, which is not the same as other. */
|
|
606
606
|
side?: "home" | "away" | "draw" | "other";
|
|
607
607
|
/** The provider's label for the YES outcome. Omitted when the provider sent none. */
|
|
608
608
|
outcome_yes?: string;
|
|
@@ -1120,8 +1120,10 @@ export type MarketSnapshot = {
|
|
|
1120
1120
|
source: string;
|
|
1121
1121
|
live_match_key?: string;
|
|
1122
1122
|
live_league_key?: string;
|
|
1123
|
-
/** Live-score period and elapsed may be omitted when unavailable (older responses use null). A score entry may omit full_name when it equals team; fall back to team. Distinct aliases and score admission markers are preserved. */
|
|
1124
|
-
live_score?: Record<string, unknown
|
|
1123
|
+
/** Live-score period and elapsed may be omitted when unavailable (older responses use null). A score entry may omit full_name when it equals team; fall back to team. Distinct aliases and score admission markers are preserved. For live esports, scores[].map_score retains an available pair through an update omitting both sides only within the same live map, series format and series totals. Map changes and final state follow current provider updates; absent detail remains unavailable. Optional tennis_points supplies independently sourced current-game points and serving side; absence means unavailable. Compatible unexpired tennis_points survives temporary supplemental snapshot unavailability or contention; expiry and set/game mismatch still clear it. */
|
|
1124
|
+
live_score?: Record<string, unknown> & {
|
|
1125
|
+
tennis_points?: TennisPoints;
|
|
1126
|
+
};
|
|
1125
1127
|
reason?: string;
|
|
1126
1128
|
};
|
|
1127
1129
|
freshness: {
|
|
@@ -1211,8 +1213,39 @@ export type PickHolder = {
|
|
|
1211
1213
|
/** The wallet's X handle from its Polymarket profile, normalized to 1-15 characters of [A-Za-z0-9_] with no `@`. Link it as `https://x.com/<handle>`. Stamped at serve time from the wallet's current trader record, never frozen with the pick. The five badge fields are present together, and only for a wallet that carries at least one badge; all absent means no badge, or a body cached before the fields shipped. */
|
|
1212
1214
|
x_username?: string | null;
|
|
1213
1215
|
};
|
|
1216
|
+
/** Recorded lead wallet facts, available only on full newly certified picks. Position and category history are frozen at publication; they are not live balances or pick win probabilities. */
|
|
1217
|
+
export type PickLeadBacker = {
|
|
1218
|
+
/** Lead trader wallet address. */
|
|
1219
|
+
address: string;
|
|
1220
|
+
/** Recorded provider display name. */
|
|
1221
|
+
name: string | null;
|
|
1222
|
+
/** Trader grade recorded at publication. */
|
|
1223
|
+
grade: string;
|
|
1224
|
+
/** Canonical sport of the recorded directional history. */
|
|
1225
|
+
category: string;
|
|
1226
|
+
/** Provider-reported position value on the backed outcome at publication, in USD. It is the gross value on that outcome and does not subtract shares the wallet held on the other outcome; see net_position_usd. It is not the entry cost or a live balance. */
|
|
1227
|
+
position_usd: number;
|
|
1228
|
+
/** Net value of the lead's position toward the backed outcome at publication, in USD: shares held on the backed outcome minus shares held on the other outcome of the same market, valued at the backed outcome's provider price at publication. Present only when the wallet also held the other outcome; absent for a one-sided position, whose net equals position_usd. It is not a live balance. */
|
|
1229
|
+
net_position_usd?: number;
|
|
1230
|
+
/** Start time of the provider position fetch used at publication. This conservative observation clock precedes completion; the position is not a live balance. */
|
|
1231
|
+
position_observed_at: string;
|
|
1232
|
+
/** Distinct directional events in the recorded category history. */
|
|
1233
|
+
directional_event_count: number;
|
|
1234
|
+
/** Events with strictly positive native terminal P&L in the same frozen category sample as directional_event_count, realized_pnl_usd and roi. Multiple market positions in one event contribute one combined event result. Zero-profit events remain in directional_event_count but do not increase this count. This is a recorded wallet result, not a market win rate or the pick's win probability. */
|
|
1235
|
+
profitable_event_count: number;
|
|
1236
|
+
/** Realized P&L over the recorded directional category sample, in USD. Excludes open positions and later changes. */
|
|
1237
|
+
realized_pnl_usd: number;
|
|
1238
|
+
/** Recorded entry basis of that directional sample, in USD; not a claim of complete trading costs or fees. */
|
|
1239
|
+
entry_basis_usd: number;
|
|
1240
|
+
/** Realized P&L divided by recorded entry basis, as a fraction: 0.10 means 10%. This is a wallet statistic, not a pick win probability. */
|
|
1241
|
+
roi: number;
|
|
1242
|
+
/** Peak-to-trough realized P&L drawdown after each event result in the recorded sample, in USD. Excludes intragame, unrealized, and account equity drawdown. */
|
|
1243
|
+
max_realized_drawdown_usd: number;
|
|
1244
|
+
/** Timestamp when the directional history evidence was recorded, separate from the provider position snapshot clock. */
|
|
1245
|
+
recorded_at: string;
|
|
1246
|
+
};
|
|
1214
1247
|
export type PickOfTheDay = {
|
|
1215
|
-
/**
|
|
1248
|
+
/** Full success containing entitled proof-readable picks. */
|
|
1216
1249
|
state: "full";
|
|
1217
1250
|
/** The pick's local publication date (YYYY-MM-DD). */
|
|
1218
1251
|
pick_date?: string;
|
|
@@ -1225,7 +1258,7 @@ export type PickOfTheDay = {
|
|
|
1225
1258
|
picks?: PickOfTheDay[];
|
|
1226
1259
|
/** Number of items in `picks`: the proof-readable picks. Picks held in `proof_pending_picks` are not counted. */
|
|
1227
1260
|
pick_count?: number;
|
|
1228
|
-
/**
|
|
1261
|
+
/** Rank-ordered entitled selections that have not released. Every row retains release_at and kickoff; unauthorized scheduled ranks appear only in identity-free locked_picks. */
|
|
1229
1262
|
scheduled_picks?: ScheduledPickSlot[];
|
|
1230
1263
|
/** Human-readable matchup (e.g. "Portugal vs. Uzbekistan"). */
|
|
1231
1264
|
matchup?: string;
|
|
@@ -1235,7 +1268,7 @@ export type PickOfTheDay = {
|
|
|
1235
1268
|
display_category?: string;
|
|
1236
1269
|
/** Provider platform. Always polymarket. */
|
|
1237
1270
|
platform?: "polymarket";
|
|
1238
|
-
/** The pick's stored release instant.
|
|
1271
|
+
/** The pick's stored release instant. Qualified automatic selections are due immediately; explicitly scheduled selections retain their stored time. Final checks, worker or claim delay can make the actual publication later. */
|
|
1239
1272
|
release_at?: string;
|
|
1240
1273
|
/** True only before the pick's stored release instant (a pre-release embargo flag); effectively always false on a served, already-published pick. To detect that the backed game has kicked off, use `game_started`. */
|
|
1241
1274
|
is_locked?: boolean;
|
|
@@ -1305,7 +1338,7 @@ export type PickOfTheDay = {
|
|
|
1305
1338
|
sharp_pct?: number;
|
|
1306
1339
|
/** Recorded market-implied probability as a 0..1 fraction when available. */
|
|
1307
1340
|
market_pct?: number;
|
|
1308
|
-
/** Optional recorded specialist facts. These describe the trader and do not disclose selection decisions. Present only on a full response when available. */
|
|
1341
|
+
/** Optional legacy recorded specialist facts. These describe the trader and do not disclose selection decisions. Present only on a full response when available; newly certified picks use lead_backer instead. */
|
|
1309
1342
|
qualifying_expert?: {
|
|
1310
1343
|
/** Trader wallet address. */
|
|
1311
1344
|
address: string;
|
|
@@ -1328,11 +1361,11 @@ export type PickOfTheDay = {
|
|
|
1328
1361
|
};
|
|
1329
1362
|
/** Public V1 S/A wallet count on the backed side, equal to sharp_wallet_count. */
|
|
1330
1363
|
traders?: number;
|
|
1331
|
-
/** Recorded backed-side
|
|
1364
|
+
/** Recorded backed-side position value in USD when available. Newly certified picks sum only publication-certified wallet positions; legacy rows retain their recorded value. */
|
|
1332
1365
|
backed_sharp_usd?: number;
|
|
1333
|
-
/** Bounded S/A holder display projection.
|
|
1366
|
+
/** Bounded S/A holder display projection. Newly certified picks include only publication-certified wallets; historical rows retain their recorded display shape. */
|
|
1334
1367
|
holders?: PickHolder[];
|
|
1335
|
-
/** Optional complete holder display roster.
|
|
1368
|
+
/** Optional complete holder display roster. Newly certified picks list the recorded lead first, then any verified supporters, then the other graded wallets that held the backed side at publication, ordered by shares; only the lead and supporters are verified, the other rows are gross holdings that may also hold the other side and are not counted in the wallet counts, holder_count or backed_sharp_usd. Legacy rows retain their recorded display shape. */
|
|
1336
1369
|
display_holders?: PickHolder[];
|
|
1337
1370
|
/** S/A holder count for the public V1 compatibility projection. display_holders can include additional grades. */
|
|
1338
1371
|
holder_count?: number;
|
|
@@ -1352,10 +1385,17 @@ export type PickOfTheDay = {
|
|
|
1352
1385
|
sports_context?: PickSportsContext;
|
|
1353
1386
|
/** Risk disclaimer shown with every pick. */
|
|
1354
1387
|
disclaimer?: string;
|
|
1355
|
-
/**
|
|
1388
|
+
/** 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. */
|
|
1356
1389
|
proof_pending_picks?: ProofPendingPickSlot[];
|
|
1357
1390
|
/** Optional full-response entry authorization. Missing or expired authorization cannot authorize an automated entry. */
|
|
1358
1391
|
entry_authorization?: PotdEntryAuthorization;
|
|
1392
|
+
/** Unauthorized unresolved published or scheduled ranks. Contains no game, provider identity, price, or identifying clock. Pro may upgrade to Max to open these ranks. */
|
|
1393
|
+
locked_picks?: {
|
|
1394
|
+
pick_rank: number;
|
|
1395
|
+
required_tier: "max";
|
|
1396
|
+
}[];
|
|
1397
|
+
/** Actionable status, including Upgrade to Max when only locked ranks are published. */
|
|
1398
|
+
message?: string;
|
|
1359
1399
|
/** Stable pick row identity as decimal text. Never use a quality rank as identity. */
|
|
1360
1400
|
pick_id?: string;
|
|
1361
1401
|
/** Compatibility release slot. No quality claim; historic scheduling order is retained. */
|
|
@@ -1364,11 +1404,13 @@ export type PickOfTheDay = {
|
|
|
1364
1404
|
is_free_selection?: boolean;
|
|
1365
1405
|
/** Replacement predecessor stable id; null when no lineage is recorded. */
|
|
1366
1406
|
supersedes_pick_id: string | null;
|
|
1407
|
+
/** Optional full-only lead wallet publication facts. Omitted on legacy picks or when the recorded evidence is unavailable. */
|
|
1408
|
+
lead_backer?: PickLeadBacker;
|
|
1367
1409
|
};
|
|
1368
1410
|
export type PickOfTheDayArchive = {
|
|
1369
|
-
/**
|
|
1411
|
+
/** Published Pick of the Day selections that have not been withdrawn, newest first by pick_date and then pick_rank within each product day. Withdrawn rows stay excluded after settlement. */
|
|
1370
1412
|
picks: PickOfTheDayArchiveEntry[];
|
|
1371
|
-
/** One entry per product day that has a published pick, newest first, in the same order as picks. Each carries that day's net units, accumulated in the same backend pass and behind the same visibility gate as hit_rate.unit_score, so both cover the same population of picks. Re-adding the day totals reproduces hit_rate.unit_score to display precision rather than bit-for-bit, since that re-associates the floating-point sum. */
|
|
1413
|
+
/** One entry per product day that has a published pick included in the archive, newest first, in the same order as picks. Each carries that day's net units, accumulated in the same backend pass and behind the same visibility gate as hit_rate.unit_score, so both cover the same population of picks. Re-adding the day totals reproduces hit_rate.unit_score to display precision rather than bit-for-bit, since that re-associates the floating-point sum. */
|
|
1372
1414
|
days: PickOfTheDayArchiveDay[];
|
|
1373
1415
|
hit_rate: PickOfTheDayHitRate;
|
|
1374
1416
|
};
|
|
@@ -1400,12 +1442,12 @@ export type PickOfTheDayArchiveEntry = {
|
|
|
1400
1442
|
* @deprecated
|
|
1401
1443
|
*/
|
|
1402
1444
|
pick_rank?: number;
|
|
1403
|
-
/** When this
|
|
1445
|
+
/** 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 qualification can begin at ET midnight. Absent only for historical rows whose publication instant is unknown. */
|
|
1404
1446
|
published_at?: string;
|
|
1405
1447
|
/** Human-readable matchup (e.g. "Portugal vs. Uzbekistan"). */
|
|
1406
|
-
matchup
|
|
1448
|
+
matchup?: string;
|
|
1407
1449
|
/** Frozen canonical calibration/report bucket (e.g. "Basketball", "MMA", or "Soccer"). Existing semantics are unchanged; presentation consumers should prefer display_category when present. */
|
|
1408
|
-
category
|
|
1450
|
+
category?: string;
|
|
1409
1451
|
/** Frozen public presentation category: the competition the Polymarket event belongs to. A curated label comes first -- an official league (e.g. "WNBA" or "UFC"), the esports title (e.g. "CS2", "LoL", "Dota 2" or "Valorant"), or a soccer competition (e.g. "LaLiga", "Premier League", "Serie A" or "UEFA Champions League"); any other competition carries the provider's own competition name without its season year (e.g. "UEFA Nations League", "ATP" or "Wimbledon"). It equals category only when the provider names no competition. An esports pick keeps the pooled "Esports" bucket in category, so a per-title label never implies a per-title measured cohort. Additive and optional for mixed-version client compatibility. */
|
|
1410
1452
|
display_category?: string;
|
|
1411
1453
|
/** Provider (Polymarket Gamma) market thumbnail URL (markets.image); omitted (not null) when the market has no image. Public regardless of the backed-side gate, so present for pending rows too. */
|
|
@@ -1450,6 +1492,10 @@ export type PickOfTheDayArchiveEntry = {
|
|
|
1450
1492
|
unit_score?: number;
|
|
1451
1493
|
/** Backend-formatted signed unit score, present exactly when unit_score is present. */
|
|
1452
1494
|
unit_score_display?: string;
|
|
1495
|
+
/** The account or paid tier needed to open this unresolved rank. */
|
|
1496
|
+
required_tier?: "account" | "insider" | "max";
|
|
1497
|
+
/** True for an unauthorized unresolved row. Game identity, category, image, publication clock and all backed facts are omitted. */
|
|
1498
|
+
backed_side_locked?: boolean;
|
|
1453
1499
|
/** Stable pick row identity as decimal text. Never use a quality rank as identity. */
|
|
1454
1500
|
pick_id: string;
|
|
1455
1501
|
/** Compatibility release slot. No quality claim; historic scheduling order is retained. */
|
|
@@ -1632,7 +1678,7 @@ export type PickOfTheDayLedgerOpenedEntry = {
|
|
|
1632
1678
|
/** Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank. */
|
|
1633
1679
|
commitment_version: 1 | 2;
|
|
1634
1680
|
};
|
|
1635
|
-
/**
|
|
1681
|
+
/** An unresolved published pick. Carries only date, rank, hash, algorithm, seal instant and permalink. Kickoff and game identity are withheld; seal time remains public commitment provenance. */
|
|
1636
1682
|
export type PickOfTheDayLedgerSealedEntry = {
|
|
1637
1683
|
state: "sealed";
|
|
1638
1684
|
/** ET product day the pick belongs to (YYYY-MM-DD). */
|
|
@@ -1648,8 +1694,6 @@ export type PickOfTheDayLedgerSealedEntry = {
|
|
|
1648
1694
|
commitment_algo: "sha256(canonical_json(payload)||nonce)";
|
|
1649
1695
|
/** When the hash was frozen. Always strictly before kickoff: a pick that reaches kickoff unsealed stays unsealed forever, because a seal written after the game started would be a backdated proof. */
|
|
1650
1696
|
sealed_at: string;
|
|
1651
|
-
/** The frozen provider kickoff in the canonical payload form: whole seconds, UTC, literal Z. This exact string reappears inside payload.kickoff when the pick opens. */
|
|
1652
|
-
kickoff: string;
|
|
1653
1697
|
/** The pick's public page. */
|
|
1654
1698
|
permalink: string;
|
|
1655
1699
|
/** Stable pick row identity as decimal text. Never use a quality rank as identity. */
|
|
@@ -1663,7 +1707,7 @@ export type PickOfTheDayLedgerSealedEntry = {
|
|
|
1663
1707
|
/** Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank. */
|
|
1664
1708
|
commitment_version: 1 | 2;
|
|
1665
1709
|
};
|
|
1666
|
-
/** A
|
|
1710
|
+
/** A pick without a commitment, retained so the record cannot omit unprovable entries. Unresolved entries omit game identity; once resolved, matchup, category and payload become public. Existing opened canonical payload bytes and hashes are unchanged. */
|
|
1667
1711
|
export type PickOfTheDayLedgerUncommittedEntry = {
|
|
1668
1712
|
state: "uncommitted";
|
|
1669
1713
|
/** ET product day the pick belongs to (YYYY-MM-DD). */
|
|
@@ -1678,9 +1722,9 @@ export type PickOfTheDayLedgerUncommittedEntry = {
|
|
|
1678
1722
|
/** How the pick settled, or pending. */
|
|
1679
1723
|
outcome: "pending" | "win" | "loss" | "void";
|
|
1680
1724
|
/** Frozen matchup, for a reader. */
|
|
1681
|
-
matchup
|
|
1725
|
+
matchup?: string;
|
|
1682
1726
|
/** Frozen canonical sport bucket used for selection calibration (Basketball, MMA), not the exact public league identity; the archive owns that. */
|
|
1683
|
-
category
|
|
1727
|
+
category?: string;
|
|
1684
1728
|
/** When outcome was LAST written to a settled value, or null when that instant is unknown. It moves with a corrected market re-mapping an already-settled pick, while commitment_hash stays untouched -- which is how a mirror that keeps history sees a correction. */
|
|
1685
1729
|
resolved_at: string | null;
|
|
1686
1730
|
/** The pick's market, side and price once it has settled; null while it is pending, and null for a settled pick whose stored row lacks one of these columns. Not hashed: nothing was committed over these values, which is what pre_commitment: true says. */
|
|
@@ -1696,6 +1740,30 @@ export type PickOfTheDayLedgerUncommittedEntry = {
|
|
|
1696
1740
|
/** Replacement predecessor stable id; null when no lineage is recorded. */
|
|
1697
1741
|
supersedes_pick_id: string | null;
|
|
1698
1742
|
};
|
|
1743
|
+
/** 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. */
|
|
1744
|
+
export type PickOfTheDayNoEntitledPicks = {
|
|
1745
|
+
/** Only locked ranks are published for this account. */
|
|
1746
|
+
state: "none";
|
|
1747
|
+
/** Current product date in America/New_York (YYYY-MM-DD). */
|
|
1748
|
+
pick_date: string;
|
|
1749
|
+
/** Empty: no entitled proof-readable picks are returned. */
|
|
1750
|
+
picks: PickOfTheDay[];
|
|
1751
|
+
/** Zero entitled proof-readable picks. */
|
|
1752
|
+
pick_count: 0;
|
|
1753
|
+
/** Unauthorized unresolved published or scheduled ranks. Contains no game, provider identity, price, or identifying clock. Pro may upgrade to Max to open these ranks. */
|
|
1754
|
+
locked_picks: {
|
|
1755
|
+
pick_rank: number;
|
|
1756
|
+
required_tier: "max";
|
|
1757
|
+
}[];
|
|
1758
|
+
/** Actionable status, including Upgrade to Max when only locked ranks are published. */
|
|
1759
|
+
message: string;
|
|
1760
|
+
/** Rank-ordered entitled selections that have not released. Every row retains release_at and kickoff; unauthorized scheduled ranks appear only in identity-free locked_picks. */
|
|
1761
|
+
scheduled_picks?: ScheduledPickSlot[];
|
|
1762
|
+
/** 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. */
|
|
1763
|
+
proof_pending_picks?: ProofPendingPickSlot[];
|
|
1764
|
+
/** Null: the empty entitlement envelope has no selection lineage. */
|
|
1765
|
+
supersedes_pick_id: null;
|
|
1766
|
+
};
|
|
1699
1767
|
/** 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. */
|
|
1700
1768
|
export type PickOfTheDayUncommittedPayload = {
|
|
1701
1769
|
/** Frozen pre-game price of the backed side, 0..1, as the plain decimal text of the stored NUMERIC at full stored precision, trailing zeros included -- rendered exactly as the commitment payload renders it. */
|
|
@@ -1746,9 +1814,9 @@ export type PickSportsTeam = {
|
|
|
1746
1814
|
full_name: string | null;
|
|
1747
1815
|
/** Provider team identifier (Polymarket /teams id). */
|
|
1748
1816
|
provider_id: number | null;
|
|
1749
|
-
/** Team crest or flag URL.
|
|
1817
|
+
/** Team crest or flag URL. Official NFL (32), WNBA (15), NBA (30), NHL (32), and MLB (30) club crests use same-origin relative paths (`/api/sports/team-logos/{league}/{abbr}.svg?v=<content hash>`); resolve relative URLs against the API origin. Vendored soccer club crests use the same path with `.png`. Other teams use provider artwork, including country flags for national teams and tennis players. Novelty and national-team rows outside the vendored club sets retain provider artwork. */
|
|
1750
1818
|
logo: string | null;
|
|
1751
|
-
/** True when the team mark
|
|
1819
|
+
/** True when artwork measurements show that the team mark needs a light plate on a dark background. Vendored crest verdicts are tied to the exact asset bytes; provider artwork is measured by the teams sync. Always sent; false when no current measurement marks the logo dark. */
|
|
1752
1820
|
logo_mark_dark: boolean;
|
|
1753
1821
|
/** Team brand color as a hex string (provider-owned). */
|
|
1754
1822
|
color: string | null;
|
|
@@ -1758,8 +1826,6 @@ export type PickSportsTeam = {
|
|
|
1758
1826
|
score: string | null;
|
|
1759
1827
|
/** Tennis player headshot URL, served same-origin. Present only for a tennis competitor the headshot resolver matched; absent for team sports and for unmatched players, where `logo` stays the fallback. */
|
|
1760
1828
|
headshot?: string;
|
|
1761
|
-
/** Optional monotonic photo revision for this tennis player, independent of the sports score revision. Legacy stored photos start at zero. Successful new or changed image bytes advance it; source checks and attribution changes do not. Compare only for the same tour and provider_id: a higher revision replaces the portrait, an equal revision may fill a missing portrait, and a lower revision must not replace a newer one. Absent when no photo resolved. */
|
|
1762
|
-
headshot_revision?: number;
|
|
1763
1829
|
/** Tennis tour this competitor belongs to. Present for every tennis entry whether or not `headshot` resolved, so a consumer can tell a tennis player with no photo from a non-tennis team. Absent for every other sport. Only `atp` and `wta` name a gender; the ITF World Tennis Tour runs men's and women's events and the provider does not say which, so `itf` means tennis with gender unknown. */
|
|
1764
1830
|
tour?: "atp" | "wta" | "itf";
|
|
1765
1831
|
/** Per-set score cells for this side, in set order. Backend-owned: render these rather than parsing `score`. Omitted entirely when the provider score is not a structured multi-set match or could not be parsed, so an absent array and an empty one carry the same meaning. */
|
|
@@ -1767,6 +1833,10 @@ export type PickSportsTeam = {
|
|
|
1767
1833
|
format?: ScoreFormat;
|
|
1768
1834
|
/** Completed sets won by this side. Present only when both sides expose the same set columns, so a partially parsed scoreline reports no tally rather than a misleading one. */
|
|
1769
1835
|
sets_won?: number;
|
|
1836
|
+
/** Optional monotonic photo revision for this tennis player, independent of the sports score revision. Legacy stored photos start at zero. Successful new or changed image bytes advance it; source checks and attribution changes do not. Compare only for the same tour and provider_id: a higher revision replaces the portrait, an equal revision may fill a missing portrait, and a lower revision must not replace a newer one. Absent when no photo resolved. */
|
|
1837
|
+
headshot_revision?: number;
|
|
1838
|
+
/** Optional latest retrieved ATP/WTA singles rank for this player. Absent for unranked, ambiguous, doubles, expired, or unavailable identities. This is not rank at match time. */
|
|
1839
|
+
ranking?: TennisRanking;
|
|
1770
1840
|
};
|
|
1771
1841
|
export type PlatformCapabilities = {
|
|
1772
1842
|
grade: PlatformCapabilityStatus;
|
|
@@ -1877,11 +1947,12 @@ export type PositionTimelineEvent = {
|
|
|
1877
1947
|
/** Cumulative buy-weighted average of stored fills for this outcome, including older pages; not provider current-position avgPrice. Sells do not change this value. 0 when no stored buys have occurred yet. */
|
|
1878
1948
|
running_avg_price: number;
|
|
1879
1949
|
};
|
|
1880
|
-
/** Returned entry permission bound to the named market, token and outcome. Honor max_entry_price and expires_at, and
|
|
1950
|
+
/** Returned entry permission bound to the named market, token and outcome. New policy-8 grants allow five cents above the first reference ask, capped at 85 cents and floored to the provider tick; policy-7 grants retain their original two-cent allowance. Honor the immutable max_entry_price and expires_at, and quote a current executable book for the actual stake. The submitted order price must remain within the limit; fills may be lower. Fees are separate, and this grant does not guarantee liquidity, execution or positive expected value. */
|
|
1881
1951
|
export type PotdEntryAuthorization = {
|
|
1882
1952
|
version: 1;
|
|
1883
1953
|
authorization_id: string;
|
|
1884
|
-
|
|
1954
|
+
/** Entry allowance policy, independent of selection or feed policy. Policy 8 issues new grants at the first reference ask plus 0.05, capped at 0.85 and floored to the provider tick. Policy 7 retains its original plus-0.02 grant. Existing grants never rise or extend. */
|
|
1955
|
+
policy_version: 7 | 8;
|
|
1885
1956
|
condition_id: string;
|
|
1886
1957
|
token_id: string;
|
|
1887
1958
|
outcome_index: 0 | 1;
|
|
@@ -1889,13 +1960,14 @@ export type PotdEntryAuthorization = {
|
|
|
1889
1960
|
category: string;
|
|
1890
1961
|
/** Exact provider parent event ID, or provider event ID when no parent exists. */
|
|
1891
1962
|
canonical_event_id: string;
|
|
1892
|
-
/**
|
|
1963
|
+
/** Maximum authorized order price as an exact decimal string, excluding fees. Quote a current executable book for the actual stake and keep the submitted order price at or below this bound. Actual fills may be lower; this limit does not guarantee a fill or define fair probability. */
|
|
1893
1964
|
max_entry_price: string;
|
|
1965
|
+
/** Selected-token best ask at first issuance. The entry allowance uses this immutable reference, not the published pick price or a later quote. */
|
|
1894
1966
|
reference_best_ask: string;
|
|
1895
1967
|
reference_book_hash: string;
|
|
1896
1968
|
reference_book_at: string;
|
|
1897
1969
|
issued_at: string;
|
|
1898
|
-
/**
|
|
1970
|
+
/** Original authorization expiry at the earlier requested or provider kickoff; never extended. An expired authorization cannot authorize a new automated entry. */
|
|
1899
1971
|
expires_at: string;
|
|
1900
1972
|
};
|
|
1901
1973
|
/** One ranked pre-game sports market where graded sharp money is piled on one side, with required-status shadow category evidence from partial forward-observed Polymarket fills. */
|
|
@@ -2256,14 +2328,14 @@ export type ResponseMeta = {
|
|
|
2256
2328
|
/** Independent SHA-256 recomputation over the same base fields immediately after category-skill enrichment. Equality with category_skill_base_payload_hash proves shadow enrichment did not change funded inputs. Sports-edge-signals only. */
|
|
2257
2329
|
category_skill_enriched_base_payload_hash?: string;
|
|
2258
2330
|
};
|
|
2259
|
-
/**
|
|
2331
|
+
/** An entitled same-day pick selected but not yet released: stable rank and backend-owned release/kickoff instants. No matchup, category, platform, side, price, or holder fields appear before release. Unauthorized scheduled ranks appear only in locked_picks. */
|
|
2260
2332
|
export type ScheduledPickSlot = {
|
|
2261
2333
|
/**
|
|
2262
2334
|
* Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.
|
|
2263
2335
|
* @deprecated
|
|
2264
2336
|
*/
|
|
2265
2337
|
pick_rank: number;
|
|
2266
|
-
/** The slot's
|
|
2338
|
+
/** The slot's stored release instant. Qualified automatic selections are due immediately; explicitly scheduled selections retain their stored time. The actual publication can follow final checks and worker delay. */
|
|
2267
2339
|
release_at: string;
|
|
2268
2340
|
/** The backed game's current kickoff instant. */
|
|
2269
2341
|
kickoff: string;
|
|
@@ -2383,6 +2455,41 @@ export type SuspiciousTrade = {
|
|
|
2383
2455
|
/** Stored trade timestamp. */
|
|
2384
2456
|
created_at: string;
|
|
2385
2457
|
};
|
|
2458
|
+
/** 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. */
|
|
2459
|
+
export type TennisPoints = {
|
|
2460
|
+
source: "api_tennis";
|
|
2461
|
+
/** API-Tennis match ID. This is not a Polymarket market or event ID. */
|
|
2462
|
+
match_key: number;
|
|
2463
|
+
/** API-Tennis player IDs in the same first/second order as live_score.scores. These are not Polymarket team IDs. */
|
|
2464
|
+
player_keys: number[];
|
|
2465
|
+
/** Current-game point values in first/second order. Read strings, including A for advantage and numeric tiebreak points. Missing points are not zero. */
|
|
2466
|
+
points: string[];
|
|
2467
|
+
/** The serving player in live_score.scores display order. Omitted when API-Tennis does not identify the server. */
|
|
2468
|
+
serving_side?: "first" | "second";
|
|
2469
|
+
/** Orders only the tennis_points group for the same match. Never compare this with live_score.source_revision. */
|
|
2470
|
+
source_revision: number;
|
|
2471
|
+
/** When 0xinsider observed these API-Tennis facts. This is not a timestamp from the court. */
|
|
2472
|
+
observed_at: string;
|
|
2473
|
+
/** Stop displaying the point group at this instant, even if the enclosing score remains fresh. The group expires 30 seconds after observed_at. */
|
|
2474
|
+
expires_at: string;
|
|
2475
|
+
/** Current set number. Display points only while this matches the enclosing scoreboard. */
|
|
2476
|
+
set_number: number;
|
|
2477
|
+
/** Current-set games in first/second order. Display points only while these match the enclosing scoreboard. */
|
|
2478
|
+
games: number[];
|
|
2479
|
+
};
|
|
2480
|
+
/** A provider-reported ATP/WTA singles rank with independent retrieval and expiry clocks. API-Tennis provides no ranking publication date. Retrieval time does not establish when the tour published the ranking. */
|
|
2481
|
+
export type TennisRanking = {
|
|
2482
|
+
/** Provider-reported singles rank. */
|
|
2483
|
+
rank: number;
|
|
2484
|
+
/** The player ranking tour. */
|
|
2485
|
+
tour: "atp" | "wta";
|
|
2486
|
+
/** The standings provider. */
|
|
2487
|
+
source: "api_tennis";
|
|
2488
|
+
/** Successful snapshot retrieval time in UTC, not ranking publication date. */
|
|
2489
|
+
observed_at: string;
|
|
2490
|
+
/** UTC deadline after which clients must hide this rank, including when an older game or pick response remains cached. */
|
|
2491
|
+
expires_at: string;
|
|
2492
|
+
};
|
|
2386
2493
|
export type Trader = {
|
|
2387
2494
|
/** Prefixed ID (trd_...). */
|
|
2388
2495
|
id: string;
|
|
@@ -2924,7 +3031,7 @@ export type Usage = {
|
|
|
2924
3031
|
reset_at: number;
|
|
2925
3032
|
window_seconds: number;
|
|
2926
3033
|
};
|
|
2927
|
-
/** The monthly request quota (#16111): where the account stands against the requests Pro includes per UTC calendar month. Reading it here spends nothing. null only when the month's count could not be read for this response. */
|
|
3034
|
+
/** The monthly request quota (#16111): where the account stands against the requests the current Pro or Max plan includes per UTC calendar month. Reading it here spends nothing. null only when the month's count could not be read for this response. */
|
|
2928
3035
|
monthly_quota: {
|
|
2929
3036
|
/** Admitted requests so far this UTC calendar month. */
|
|
2930
3037
|
used: number;
|
|
@@ -2941,6 +3048,8 @@ export type Usage = {
|
|
|
2941
3048
|
pay_as_you_go: boolean;
|
|
2942
3049
|
/** The most requests this account is admitted in a UTC calendar month once enforcement has begun: limit, or 1,000,000 with pay as you go on. null for an admin account, which no number stops. Additive since 2026-09-22. */
|
|
2943
3050
|
ceiling: number | null;
|
|
3051
|
+
/** A historical usage price has not been reconciled to this plan allowance. Pay as you go remains unavailable until billing reconciliation. */
|
|
3052
|
+
unavailable_reason?: "usage_price_reconciliation_required" | null;
|
|
2944
3053
|
} | null;
|
|
2945
3054
|
};
|
|
2946
3055
|
meta: ResponseMeta;
|
|
@@ -3347,7 +3456,7 @@ export interface OperationData {
|
|
|
3347
3456
|
getMarketIntel: MarketFlow;
|
|
3348
3457
|
getMarketSnapshot: MarketSnapshot;
|
|
3349
3458
|
getMonthlyReportSnapshot: ReportSnapshot;
|
|
3350
|
-
getPickOfTheDay: PickOfTheDay;
|
|
3459
|
+
getPickOfTheDay: PickOfTheDay | PickOfTheDayNoEntitledPicks;
|
|
3351
3460
|
getPickOfTheDayArchive: PickOfTheDayArchive;
|
|
3352
3461
|
getPickOfTheDayLedger: PickOfTheDayLedger;
|
|
3353
3462
|
getPickOfTheDayLedgerEntry: PickOfTheDayLedgerEntry;
|
|
@@ -3429,7 +3538,7 @@ export interface OperationData {
|
|
|
3429
3538
|
reset_at: number;
|
|
3430
3539
|
window_seconds: number;
|
|
3431
3540
|
};
|
|
3432
|
-
/** The monthly request quota (#16111): where the account stands against the requests Pro includes per UTC calendar month. Reading it here spends nothing. null only when the month's count could not be read for this response. */
|
|
3541
|
+
/** The monthly request quota (#16111): where the account stands against the requests the current Pro or Max plan includes per UTC calendar month. Reading it here spends nothing. null only when the month's count could not be read for this response. */
|
|
3433
3542
|
monthly_quota: {
|
|
3434
3543
|
/** Admitted requests so far this UTC calendar month. */
|
|
3435
3544
|
used: number;
|
|
@@ -3446,6 +3555,8 @@ export interface OperationData {
|
|
|
3446
3555
|
pay_as_you_go: boolean;
|
|
3447
3556
|
/** The most requests this account is admitted in a UTC calendar month once enforcement has begun: limit, or 1,000,000 with pay as you go on. null for an admin account, which no number stops. Additive since 2026-09-22. */
|
|
3448
3557
|
ceiling: number | null;
|
|
3558
|
+
/** A historical usage price has not been reconciled to this plan allowance. Pay as you go remains unavailable until billing reconciliation. */
|
|
3559
|
+
unavailable_reason?: "usage_price_reconciliation_required" | null;
|
|
3449
3560
|
} | null;
|
|
3450
3561
|
};
|
|
3451
3562
|
getWebhook: WebhookEndpoint;
|
|
@@ -3715,7 +3826,7 @@ export interface OperationQuery {
|
|
|
3715
3826
|
min_grade?: "S" | "A" | "B";
|
|
3716
3827
|
/** Maximum holders per page. Out-of-range values are clamped to 1..100. */
|
|
3717
3828
|
limit?: number;
|
|
3718
|
-
/** Opaque pagination cursor from the previous response's next_cursor.
|
|
3829
|
+
/** Opaque pagination cursor from the previous response's next_cursor. New cursors carry an absolute next offset bound to normalized condition_id, outcome and effective min_grade, so limit can change without skipping or repeating rows on the same roster. Different market/filter bindings return 400 bad_request with param=cursor; omitted filters match all/B and mkt_-prefixed IDs match their raw condition_id. Legacy page-only cursors remain accepted without scheduled retirement and require their original limit; their next response emits the new format. A cursor remains valid across roster refreshes, which can still repeat or skip holders as the live roster changes. */
|
|
3719
3830
|
cursor?: string;
|
|
3720
3831
|
};
|
|
3721
3832
|
getMarketIntel: {
|