@structbuild/sdk 0.1.16 → 0.1.18

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.
@@ -27,6 +27,26 @@ export interface paths {
27
27
  patch?: never;
28
28
  trace?: never;
29
29
  };
30
+ "/webhooks/events": {
31
+ parameters: {
32
+ query?: never;
33
+ header?: never;
34
+ path?: never;
35
+ cookie?: never;
36
+ };
37
+ /**
38
+ * List event types
39
+ * @description Retrieve all available webhook event types with descriptions, categories, credits cost, and applicable filter fields
40
+ */
41
+ get: operations["list_events"];
42
+ put?: never;
43
+ post?: never;
44
+ delete?: never;
45
+ options?: never;
46
+ head?: never;
47
+ patch?: never;
48
+ trace?: never;
49
+ };
30
50
  "/webhooks/{webhook_id}": {
31
51
  parameters: {
32
52
  query?: never;
@@ -55,6 +75,26 @@ export interface paths {
55
75
  patch?: never;
56
76
  trace?: never;
57
77
  };
78
+ "/webhooks/{webhook_id}/rotate-secret": {
79
+ parameters: {
80
+ query?: never;
81
+ header?: never;
82
+ path?: never;
83
+ cookie?: never;
84
+ };
85
+ get?: never;
86
+ put?: never;
87
+ /**
88
+ * Rotate webhook secret
89
+ * @description Generate a new HMAC secret for a webhook. The new secret is returned once — store it securely
90
+ */
91
+ post: operations["rotate_secret"];
92
+ delete?: never;
93
+ options?: never;
94
+ head?: never;
95
+ patch?: never;
96
+ trace?: never;
97
+ };
58
98
  "/webhooks/{webhook_id}/test": {
59
99
  parameters: {
60
100
  query?: never;
@@ -97,6 +137,46 @@ export interface webhooks {
97
137
  patch?: never;
98
138
  trace?: never;
99
139
  };
140
+ "new-market": {
141
+ parameters: {
142
+ query?: never;
143
+ header?: never;
144
+ path?: never;
145
+ cookie?: never;
146
+ };
147
+ get?: never;
148
+ put?: never;
149
+ /**
150
+ * New market entry callback
151
+ * @description Fired when a trader places their first trade in a specific market/condition (fires once per trader+market pair)
152
+ */
153
+ post: operations["new-market"];
154
+ delete?: never;
155
+ options?: never;
156
+ head?: never;
157
+ patch?: never;
158
+ trace?: never;
159
+ };
160
+ "whale-trade": {
161
+ parameters: {
162
+ query?: never;
163
+ header?: never;
164
+ path?: never;
165
+ cookie?: never;
166
+ };
167
+ get?: never;
168
+ put?: never;
169
+ /**
170
+ * Whale trade callback
171
+ * @description Fired when a trade exceeds the configured USD threshold within the configured probability range (e.g. >$10k between 5–95% probability). Requires `min_usd_value` in the subscription filter.
172
+ */
173
+ post: operations["whale-trade"];
174
+ delete?: never;
175
+ options?: never;
176
+ head?: never;
177
+ patch?: never;
178
+ trace?: never;
179
+ };
100
180
  "global-pnl": {
101
181
  parameters: {
102
182
  query?: never;
@@ -297,9 +377,141 @@ export interface webhooks {
297
377
  patch?: never;
298
378
  trace?: never;
299
379
  };
380
+ "volume-spike": {
381
+ parameters: {
382
+ query?: never;
383
+ header?: never;
384
+ path?: never;
385
+ cookie?: never;
386
+ };
387
+ get?: never;
388
+ put?: never;
389
+ /**
390
+ * Volume spike callback
391
+ * @description Fired when a market's volume in a timeframe exceeds the user-defined baseline by the configured ratio (e.g. 2x baseline). Requires `baseline_volume_usd` and `spike_ratio` in the subscription filter.
392
+ */
393
+ post: operations["volume-spike"];
394
+ delete?: never;
395
+ options?: never;
396
+ head?: never;
397
+ patch?: never;
398
+ trace?: never;
399
+ };
400
+ "close-to-bond": {
401
+ parameters: {
402
+ query?: never;
403
+ header?: never;
404
+ path?: never;
405
+ cookie?: never;
406
+ };
407
+ get?: never;
408
+ put?: never;
409
+ /**
410
+ * Close to bond callback
411
+ * @description Fired when a position's probability enters the bond zone (e.g. YES ≥ 95% or ≤ 5%). Requires `min_probability` and/or `max_probability` in the subscription filter.
412
+ */
413
+ post: operations["close-to-bond"];
414
+ delete?: never;
415
+ options?: never;
416
+ head?: never;
417
+ patch?: never;
418
+ trace?: never;
419
+ };
420
+ "market-created": {
421
+ parameters: {
422
+ query?: never;
423
+ header?: never;
424
+ path?: never;
425
+ cookie?: never;
426
+ };
427
+ get?: never;
428
+ put?: never;
429
+ /**
430
+ * Market created callback
431
+ * @description Fired when a new prediction market is detected on-chain (ConditionPreparation event), enriched with Gamma API metadata. Filterable by `tags`, `condition_ids`, and `event_slugs`.
432
+ */
433
+ post: operations["market-created"];
434
+ delete?: never;
435
+ options?: never;
436
+ head?: never;
437
+ patch?: never;
438
+ trace?: never;
439
+ };
300
440
  }
301
441
  export interface components {
302
442
  schemas: {
443
+ /** @description Close-to-bond webhook payload */
444
+ CloseToBondPayload: {
445
+ /** @description Trader address (the limit-order maker) */
446
+ trader: string;
447
+ /** @description Taker address (the order filler — often the exchange contract) */
448
+ taker: string;
449
+ /** @description Position ID (ERC1155 token ID) */
450
+ position_id: string;
451
+ /** @description Condition ID (parent market) */
452
+ condition_id?: string | null;
453
+ /** @description Outcome name (e.g. "Yes", "No") */
454
+ outcome?: string | null;
455
+ /**
456
+ * Format: int32
457
+ * @description Outcome index (0 = Yes, 1 = No)
458
+ */
459
+ outcome_index?: number | null;
460
+ /** @description Market question */
461
+ question?: string | null;
462
+ /** @description Market slug */
463
+ market_slug?: string | null;
464
+ /** @description Event slug */
465
+ event_slug?: string | null;
466
+ /** @description Trade ID */
467
+ trade_id: string;
468
+ /** @description Transaction hash */
469
+ hash: string;
470
+ /**
471
+ * Format: int64
472
+ * @description Block number
473
+ */
474
+ block: number;
475
+ /**
476
+ * Format: int64
477
+ * @description Confirmed timestamp (Unix seconds)
478
+ */
479
+ confirmed_at: number;
480
+ /**
481
+ * Format: double
482
+ * @description USD size of the trade
483
+ */
484
+ amount_usd: number;
485
+ /**
486
+ * Format: double
487
+ * @description Outcome shares traded
488
+ */
489
+ shares_amount: number;
490
+ /**
491
+ * Format: double
492
+ * @description Fee paid (USD)
493
+ */
494
+ fee: number;
495
+ /** @description Trade side ("Buy" or "Sell") */
496
+ side: string;
497
+ /**
498
+ * Format: double
499
+ * @description Price per share (0.0–1.0) — the value that triggered the notification
500
+ */
501
+ price: number;
502
+ /**
503
+ * Format: double
504
+ * @description Implied probability of the outcome (0.0–1.0)
505
+ */
506
+ probability?: number | null;
507
+ /** @description Which bond zone was entered: `"high"` (YES near-certain) or `"low"` (NO near-certain) */
508
+ bond_side: string;
509
+ /**
510
+ * Format: double
511
+ * @description The probability threshold from the subscriber's filter that was breached
512
+ */
513
+ threshold: number;
514
+ };
303
515
  /** @description Condition metrics webhook payload (Arc-optimized, no internal metadata) */
304
516
  ConditionMetricsPayload: {
305
517
  condition_id?: string | null;
@@ -317,14 +529,18 @@ export interface components {
317
529
  CreateWebhookRequestBody: {
318
530
  /** @description Destination URL for webhook deliveries (must be HTTPS) */
319
531
  url: string;
320
- /** @description Events to subscribe to */
321
- events: components["schemas"]["PolymarketWebhookEvent"][];
532
+ /** @description Event to subscribe to */
533
+ event: components["schemas"]["PolymarketWebhookEvent"];
322
534
  /** @description Optional secret for HMAC signature verification */
323
535
  secret?: string | null;
324
536
  filters?: null | components["schemas"]["WebhookFiltersBody"];
325
537
  /** @description Optional description/name */
326
538
  description?: string | null;
327
539
  };
540
+ /** @description Delete webhook response */
541
+ DeleteWebhookResponse: {
542
+ deleted: boolean;
543
+ };
328
544
  /** @description Event metrics webhook payload (Arc-optimized, no internal metadata) */
329
545
  EventMetricsPayload: {
330
546
  event_slug?: string | null;
@@ -340,7 +556,10 @@ export interface components {
340
556
  };
341
557
  /** @description Event PnL webhook payload (Arc-optimized) */
342
558
  EventPnlPayload: {
559
+ trader?: string | null;
343
560
  event_slug?: string | null;
561
+ /** @description Aggregation timeframe: "1d", "7d", "30d", or "lifetime" */
562
+ timeframe: string;
344
563
  /** Format: int64 */
345
564
  markets_traded?: number | null;
346
565
  /** Format: int64 */
@@ -457,6 +676,8 @@ export interface components {
457
676
  /** @description Global PnL webhook payload (Arc-optimized) */
458
677
  GlobalPnlPayload: {
459
678
  trader?: string | null;
679
+ /** @description Aggregation timeframe: "1d", "7d", "30d", or "lifetime" */
680
+ timeframe: string;
460
681
  /** Format: double */
461
682
  realized_pnl_usd?: number | null;
462
683
  /** Format: int64 */
@@ -506,10 +727,70 @@ export interface components {
506
727
  /** Format: int64 */
507
728
  last_trade_at?: number | null;
508
729
  };
730
+ /** @description Response for GET /v1/webhook/events */
731
+ ListEventsResponse: {
732
+ events: components["schemas"]["WebhookEventInfo"][];
733
+ };
734
+ /** @description Outcome entry in the market created payload — mirrors `NewMarketOutcome` */
735
+ MarketCreatedOutcome: {
736
+ /**
737
+ * Format: int32
738
+ * @description Outcome index (0 = Yes, 1 = No)
739
+ */
740
+ index: number;
741
+ /** @description Outcome name (e.g. "Yes", "No") */
742
+ name: string;
743
+ /** @description ERC1155 position token ID */
744
+ position_id: string;
745
+ };
746
+ /** @description Market created webhook payload — mirrors `NewMarketPayload` field-for-field */
747
+ MarketCreatedPayload: {
748
+ /** @description Condition ID (0x-prefixed hex, lowercase) */
749
+ condition_id: string;
750
+ /** @description Market slug */
751
+ market_slug: string;
752
+ /** @description Event slug (parent event) */
753
+ event_slug?: string | null;
754
+ /** @description Event ID */
755
+ event_id?: string | null;
756
+ /** @description Event title */
757
+ event_title?: string | null;
758
+ /** @description Series slug */
759
+ series_slug?: string | null;
760
+ /** @description Outcomes with their position IDs, index, and name */
761
+ outcomes: components["schemas"]["MarketCreatedOutcome"][];
762
+ /** @description Market question */
763
+ question: string;
764
+ /** @description Market title (short display name) */
765
+ title?: string | null;
766
+ /** @description Market description */
767
+ description: string;
768
+ /** @description Market category (e.g. "Sports", "Politics") */
769
+ category?: string | null;
770
+ /** @description Market tags */
771
+ tags: string[];
772
+ /** @description Cover image URL */
773
+ image_url?: string | null;
774
+ /** @description Whether this is a neg-risk market */
775
+ neg_risk: boolean;
776
+ /**
777
+ * Format: int64
778
+ * @description Block number where ConditionPreparation was emitted
779
+ */
780
+ block: number;
781
+ /**
782
+ * Format: int64
783
+ * @description Block timestamp (Unix seconds)
784
+ */
785
+ block_timestamp: number;
786
+ };
509
787
  /** @description Market PnL webhook payload (Arc-optimized) */
510
788
  MarketPnlPayload: {
789
+ trader?: string | null;
511
790
  condition_id?: string | null;
512
791
  event_slug?: string | null;
792
+ /** @description Aggregation timeframe: "1d", "7d", "30d", or "lifetime" */
793
+ timeframe: string;
513
794
  /** Format: int64 */
514
795
  outcomes_traded?: number | null;
515
796
  /** Format: int64 */
@@ -539,6 +820,78 @@ export interface components {
539
820
  /** Format: int64 */
540
821
  last_trade_at?: number | null;
541
822
  };
823
+ /**
824
+ * @description New market entry webhook payload
825
+ *
826
+ * Fired when a trader places their first trade in a specific condition/market.
827
+ * The payload contains the full details of the triggering trade.
828
+ */
829
+ NewMarketPayload: {
830
+ /** @description Trader address (placed the limit order) */
831
+ trader: string;
832
+ /** @description Taker address (filled the order — often the exchange contract) */
833
+ taker: string;
834
+ /** @description Position ID (ERC1155 token ID) */
835
+ position_id: string;
836
+ /** @description Condition ID (market condition) */
837
+ condition_id?: string | null;
838
+ /** @description Outcome name (e.g. "Yes", "No") */
839
+ outcome?: string | null;
840
+ /**
841
+ * Format: int32
842
+ * @description Outcome index (0 = Yes, 1 = No)
843
+ */
844
+ outcome_index?: number | null;
845
+ /** @description Market question */
846
+ question?: string | null;
847
+ /** @description Market slug */
848
+ market_slug?: string | null;
849
+ /** @description Event slug (parent event) */
850
+ event_slug?: string | null;
851
+ /** @description Trade ID */
852
+ trade_id: string;
853
+ /** @description Transaction hash */
854
+ hash: string;
855
+ /**
856
+ * Format: int64
857
+ * @description Block number
858
+ */
859
+ block: number;
860
+ /**
861
+ * Format: int64
862
+ * @description Confirmed timestamp (Unix seconds)
863
+ */
864
+ confirmed_at: number;
865
+ /**
866
+ * Format: double
867
+ * @description USD size of the trade
868
+ */
869
+ amount_usd: number;
870
+ /**
871
+ * Format: double
872
+ * @description Outcome shares traded
873
+ */
874
+ shares_amount: number;
875
+ /**
876
+ * Format: double
877
+ * @description Fee paid (USD)
878
+ */
879
+ fee: number;
880
+ /** @description Trade side ("Buy" or "Sell") */
881
+ side: string;
882
+ /**
883
+ * Format: double
884
+ * @description Price per share (0.0–1.0)
885
+ */
886
+ price: number;
887
+ /**
888
+ * Format: double
889
+ * @description Implied probability (0.0–1.0); None when outcome is unknown
890
+ */
891
+ probability?: number | null;
892
+ exchange: string;
893
+ trade_type: string;
894
+ };
542
895
  /**
543
896
  * @description PnL timeframe enum for webhook filtering
544
897
  * @enum {string}
@@ -548,12 +901,14 @@ export interface components {
548
901
  * @description Polymarket webhook event types
549
902
  * @enum {string}
550
903
  */
551
- PolymarketWebhookEvent: "first_trade" | "global_pnl" | "market_pnl" | "event_pnl" | "condition_metrics" | "event_metrics" | "position_metrics" | "volume_milestone" | "event_volume_milestone" | "position_volume_milestone" | "probability_spike" | "volume_spike";
904
+ PolymarketWebhookEvent: "first_trade" | "new_market" | "whale_trade" | "global_pnl" | "market_pnl" | "event_pnl" | "condition_metrics" | "event_metrics" | "position_metrics" | "volume_milestone" | "event_volume_milestone" | "position_volume_milestone" | "probability_spike" | "volume_spike" | "close_to_bond" | "market_created";
552
905
  /**
553
906
  * @description Polymarket-specific webhook filters
554
907
  *
555
908
  * Different webhook handlers use different subsets of these fields:
556
909
  * - first_trade: wallet_addresses, min_usd_value, min_probability, max_probability, condition_ids, event_slugs, tags
910
+ * - new_market: wallet_addresses, condition_ids, event_slugs, min_usd_value, min_probability, max_probability
911
+ * - whale_trade: min_usd_value (required), min_probability, max_probability, condition_ids, event_slugs
557
912
  * - global_pnl: traders, min_realized_pnl_usd, max_realized_pnl_usd, min_volume_usd, min_win_rate, min_markets_traded
558
913
  * - market_pnl: traders, min_realized_pnl_usd, max_realized_pnl_usd, min_buy_usd, condition_ids, event_slugs
559
914
  * - event_pnl: traders, min_realized_pnl_usd, max_realized_pnl_usd, min_volume_usd, event_slugs, min_markets_traded
@@ -561,6 +916,7 @@ export interface components {
561
916
  * - event_metrics: event_slugs, min_volume_usd, max_volume_usd, min_fees, min_txns, timeframes
562
917
  * - position_metrics: position_ids, condition_ids, outcomes, min_volume_usd, max_volume_usd, min_buy_usd, min_sell_volume_usd, min_fees, min_txns, min_price_change_pct, min_probability_change_pct, timeframes
563
918
  * - volume_milestone: condition_ids, timeframes, milestone_amounts
919
+ * - close_to_bond: min_probability (high zone threshold), max_probability (low zone threshold), condition_ids, position_ids, outcomes, timeframes
564
920
  *
565
921
  * Implements Hash + Eq manually (f64 fields use bit representation)
566
922
  */
@@ -649,6 +1005,11 @@ export interface components {
649
1005
  * @description Minimum transaction count - for metrics webhooks
650
1006
  */
651
1007
  min_txns?: number | null;
1008
+ /**
1009
+ * Format: int64
1010
+ * @description Minimum unique traders - for metrics webhooks
1011
+ */
1012
+ min_unique_traders?: number | null;
652
1013
  /**
653
1014
  * Format: double
654
1015
  * @description Minimum sell volume (USD) - for position metrics webhooks
@@ -664,7 +1025,7 @@ export interface components {
664
1025
  * @description Minimum probability change percentage - for position metrics webhooks
665
1026
  */
666
1027
  min_probability_change_pct?: number | null;
667
- /** @description Timeframes to track - for metrics webhooks (1m, 5m, 30m, 1h, 6h, 24h) */
1028
+ /** @description Timeframes to track - for metrics webhooks (1m, 5m, 30m, 1h, 6h, 24h, 7d, 30d) */
668
1029
  timeframes?: string[];
669
1030
  /** @description Milestone amounts to track - for volume milestone webhooks (e.g., 10000, 100000, 1000000) */
670
1031
  milestone_amounts?: number[];
@@ -685,7 +1046,7 @@ export interface components {
685
1046
  * Filters out event slugs containing these timeframe patterns (auto-wrapped: "5m" → "-5m-")
686
1047
  * Example: Excludes "btc-updown-5m-1771678800" when "5m" is in the list
687
1048
  */
688
- exclude_shortterm_market_timeframes?: string[];
1049
+ exclude_shorterm_market_timeframes?: string[];
689
1050
  };
690
1051
  /** @description Position metrics webhook payload (Arc-optimized, no internal metadata) */
691
1052
  PositionMetricsPayload: {
@@ -824,12 +1185,21 @@ export interface components {
824
1185
  */
825
1186
  txns: number;
826
1187
  };
1188
+ /** @description Response for POST /v1/webhook/{id}/rotate-secret */
1189
+ RotateSecretResponse: {
1190
+ /** @description The new HMAC secret (only returned once — store it securely) */
1191
+ secret: string;
1192
+ /**
1193
+ * Format: int64
1194
+ * @description Timestamp of rotation (ms since epoch)
1195
+ */
1196
+ rotated_at: number;
1197
+ };
827
1198
  /** @description Request body for updating a webhook */
828
1199
  UpdateWebhookRequestBody: {
829
1200
  /** @description Destination URL for webhook deliveries (must be HTTPS) */
830
1201
  url?: string | null;
831
- /** @description Events to subscribe to */
832
- events?: components["schemas"]["PolymarketWebhookEvent"][] | null;
1202
+ event?: null | components["schemas"]["PolymarketWebhookEvent"];
833
1203
  /** @description New secret for HMAC signature verification */
834
1204
  secret?: string | null;
835
1205
  filters?: null | components["schemas"]["WebhookFiltersBody"];
@@ -862,31 +1232,167 @@ export interface components {
862
1232
  */
863
1233
  txns: number;
864
1234
  };
865
- /** @description Webhook filters request body */
866
- WebhookFiltersBody: {
867
- /** @description Filter by wallet addresses */
868
- wallet_addresses?: string[];
869
- /** @description Filter by market/condition IDs */
870
- condition_ids?: string[];
1235
+ /** @description Volume spike webhook payload */
1236
+ VolumeSpikePayload: {
1237
+ condition_id: string;
1238
+ timeframe: string;
871
1239
  /**
872
1240
  * Format: double
873
- * @description Filter by minimum USD value
1241
+ * @description Current volume that triggered the spike (USD)
874
1242
  */
875
- min_usd_value?: number | null;
876
- /** @description Filter by event slugs */
877
- event_slugs?: string[];
1243
+ current_volume_usd: number;
878
1244
  /**
879
1245
  * Format: double
880
- * @description Minimum probability threshold (0.0 - 1.0)
1246
+ * @description User's baseline volume for comparison (USD)
881
1247
  */
882
- min_probability?: number | null;
1248
+ baseline_volume_usd: number;
883
1249
  /**
884
1250
  * Format: double
885
- * @description Maximum probability threshold (0.0 - 1.0)
1251
+ * @description Spike ratio threshold that was triggered
1252
+ */
1253
+ spike_ratio: number;
1254
+ /**
1255
+ * Format: double
1256
+ * @description Calculated threshold that was crossed (baseline * ratio)
1257
+ */
1258
+ threshold_usd: number;
1259
+ /**
1260
+ * Format: int64
1261
+ * @description Total transactions in this timeframe
1262
+ */
1263
+ txns: number;
1264
+ /**
1265
+ * Format: double
1266
+ * @description Total fees in this timeframe
1267
+ */
1268
+ fees: number;
1269
+ };
1270
+ /** @description Single event type entry for the events list */
1271
+ WebhookEventInfo: {
1272
+ /** @description Event type identifier (e.g. "first_trade") */
1273
+ event: string;
1274
+ /** @description Human-readable description */
1275
+ description: string;
1276
+ /** @description Category grouping: "trader", "market", "event", or "position" */
1277
+ category: string;
1278
+ /**
1279
+ * Format: int64
1280
+ * @description Credits consumed per webhook delivery
1281
+ */
1282
+ credits_cost: number;
1283
+ /** @description Filter field names that apply to this event type */
1284
+ applicable_filters: string[];
1285
+ };
1286
+ /** @description Webhook filters request body */
1287
+ WebhookFiltersBody: {
1288
+ /** @description Filter by wallet addresses (for first_trade / new_market / whale_trade) */
1289
+ wallet_addresses?: string[];
1290
+ /** @description Filter by trader addresses (for PnL webhooks) */
1291
+ traders?: string[];
1292
+ /** @description Filter by market/condition IDs */
1293
+ condition_ids?: string[];
1294
+ /** @description Filter by position IDs (for position metrics / close_to_bond) */
1295
+ position_ids?: string[];
1296
+ /** @description Filter by event slugs */
1297
+ event_slugs?: string[];
1298
+ /** @description Filter by outcomes (e.g. "Yes", "No") — for position metrics / close_to_bond */
1299
+ outcomes?: string[];
1300
+ /**
1301
+ * Format: double
1302
+ * @description Minimum USD trade size (for whale_trade / first_trade)
1303
+ */
1304
+ min_usd_value?: number | null;
1305
+ /**
1306
+ * Format: double
1307
+ * @description Minimum probability threshold (0.0 - 1.0)
1308
+ */
1309
+ min_probability?: number | null;
1310
+ /**
1311
+ * Format: double
1312
+ * @description Maximum probability threshold (0.0 - 1.0)
886
1313
  */
887
1314
  max_probability?: number | null;
888
- /** @description Exclude short-term trading markets by timeframe (e.g., ["5m", "15m"]) */
889
- exclude_shortterm_market_timeframes?: string[];
1315
+ /**
1316
+ * Format: double
1317
+ * @description Minimum realized PnL (USD) — for global_pnl / market_pnl / event_pnl
1318
+ */
1319
+ min_realized_pnl_usd?: number | null;
1320
+ /**
1321
+ * Format: double
1322
+ * @description Maximum realized PnL (USD) — for global_pnl / market_pnl / event_pnl
1323
+ */
1324
+ max_realized_pnl_usd?: number | null;
1325
+ /**
1326
+ * Format: double
1327
+ * @description Minimum total volume (USD) — for global_pnl / event_pnl / metrics
1328
+ */
1329
+ min_volume_usd?: number | null;
1330
+ /**
1331
+ * Format: double
1332
+ * @description Maximum total volume (USD) — for metrics webhooks
1333
+ */
1334
+ max_volume_usd?: number | null;
1335
+ /**
1336
+ * Format: double
1337
+ * @description Minimum buy volume (USD) — for market_pnl / position metrics
1338
+ */
1339
+ min_buy_usd?: number | null;
1340
+ /**
1341
+ * Format: double
1342
+ * @description Minimum sell volume (USD) — for position metrics
1343
+ */
1344
+ min_sell_volume_usd?: number | null;
1345
+ /**
1346
+ * Format: double
1347
+ * @description Minimum win rate (0.0 - 100.0) — for global_pnl
1348
+ */
1349
+ min_win_rate?: number | null;
1350
+ /**
1351
+ * Format: int64
1352
+ * @description Minimum markets traded — for global_pnl / event_pnl
1353
+ */
1354
+ min_markets_traded?: number | null;
1355
+ /**
1356
+ * Format: double
1357
+ * @description Minimum fees (USD) — for metrics webhooks
1358
+ */
1359
+ min_fees?: number | null;
1360
+ /**
1361
+ * Format: int64
1362
+ * @description Minimum transaction count — for metrics webhooks
1363
+ */
1364
+ min_txns?: number | null;
1365
+ /**
1366
+ * Format: int64
1367
+ * @description Minimum unique traders — for metrics webhooks
1368
+ */
1369
+ min_unique_traders?: number | null;
1370
+ /**
1371
+ * Format: double
1372
+ * @description Minimum price change percentage — for position metrics
1373
+ */
1374
+ min_price_change_pct?: number | null;
1375
+ /**
1376
+ * Format: double
1377
+ * @description Minimum probability change percentage — for probability_spike
1378
+ */
1379
+ min_probability_change_pct?: number | null;
1380
+ /** @description Timeframes to track (e.g. ["1m", "5m", "1h", "24h", "7d", "30d"]) — for metrics webhooks */
1381
+ timeframes?: string[];
1382
+ /** @description Milestone amounts to trigger on (USD) — for volume_milestone webhooks */
1383
+ milestone_amounts?: number[];
1384
+ /**
1385
+ * Format: double
1386
+ * @description User-defined baseline volume for spike detection (USD) — for volume_spike
1387
+ */
1388
+ baseline_volume_usd?: number | null;
1389
+ /**
1390
+ * Format: double
1391
+ * @description Spike ratio multiplier (must be > 1.0) — for volume_spike. E.g. 2.0 for 2x baseline
1392
+ */
1393
+ spike_ratio?: number | null;
1394
+ /** @description Exclude short-term trading markets by timeframe pattern (e.g. ["5m", "15m"]) */
1395
+ exclude_shorterm_market_timeframes?: string[];
890
1396
  };
891
1397
  /** @description List webhooks response */
892
1398
  WebhookListResponseBody: {
@@ -901,8 +1407,8 @@ export interface components {
901
1407
  id: string;
902
1408
  /** @description Destination URL */
903
1409
  url: string;
904
- /** @description Subscribed events */
905
- events: components["schemas"]["PolymarketWebhookEvent"][];
1410
+ /** @description Subscribed event */
1411
+ event: components["schemas"]["PolymarketWebhookEvent"];
906
1412
  /** @description Active filters (omitted when no filters are set) */
907
1413
  filters?: components["schemas"]["PolymarketWebhookFilter"];
908
1414
  /** @description Current status: "active", "paused", or "disabled" */
@@ -944,6 +1450,73 @@ export interface components {
944
1450
  */
945
1451
  duration_ms: number;
946
1452
  };
1453
+ /** @description Whale trade webhook payload */
1454
+ WhaleTradePayload: {
1455
+ /** @description Trader address (the limit-order maker) */
1456
+ trader: string;
1457
+ /** @description Taker address (the order filler — often the exchange contract) */
1458
+ taker: string;
1459
+ /** @description Position ID (ERC1155 token ID) */
1460
+ position_id: string;
1461
+ /** @description Condition ID */
1462
+ condition_id?: string | null;
1463
+ /** @description Outcome name (e.g. "Yes", "No") */
1464
+ outcome?: string | null;
1465
+ /**
1466
+ * Format: int32
1467
+ * @description Outcome index (0 = Yes, 1 = No)
1468
+ */
1469
+ outcome_index?: number | null;
1470
+ /** @description Market question */
1471
+ question?: string | null;
1472
+ /** @description Market slug */
1473
+ market_slug?: string | null;
1474
+ /** @description Event slug */
1475
+ event_slug?: string | null;
1476
+ /** @description Trade ID */
1477
+ trade_id: string;
1478
+ /** @description Transaction hash */
1479
+ hash: string;
1480
+ /**
1481
+ * Format: int64
1482
+ * @description Block number
1483
+ */
1484
+ block: number;
1485
+ /**
1486
+ * Format: int64
1487
+ * @description Confirmed timestamp (Unix seconds)
1488
+ */
1489
+ confirmed_at: number;
1490
+ /**
1491
+ * Format: double
1492
+ * @description USD size of the trade
1493
+ */
1494
+ amount_usd: number;
1495
+ /**
1496
+ * Format: double
1497
+ * @description Outcome shares traded
1498
+ */
1499
+ shares_amount: number;
1500
+ /**
1501
+ * Format: double
1502
+ * @description Fee paid (USD)
1503
+ */
1504
+ fee: number;
1505
+ /** @description Trade side ("Buy" or "Sell") */
1506
+ side: string;
1507
+ /**
1508
+ * Format: double
1509
+ * @description Price per share (0.0–1.0)
1510
+ */
1511
+ price: number;
1512
+ /**
1513
+ * Format: double
1514
+ * @description Implied probability of the event (0.0–1.0); None when outcome is unknown
1515
+ */
1516
+ probability?: number | null;
1517
+ exchange: string;
1518
+ trade_type: string;
1519
+ };
947
1520
  };
948
1521
  responses: never;
949
1522
  parameters: never;
@@ -1041,6 +1614,33 @@ export interface operations {
1041
1614
  };
1042
1615
  };
1043
1616
  };
1617
+ list_events: {
1618
+ parameters: {
1619
+ query?: never;
1620
+ header?: never;
1621
+ path?: never;
1622
+ cookie?: never;
1623
+ };
1624
+ requestBody?: never;
1625
+ responses: {
1626
+ /** @description List of available event types */
1627
+ 200: {
1628
+ headers: {
1629
+ [name: string]: unknown;
1630
+ };
1631
+ content: {
1632
+ "application/json": components["schemas"]["ListEventsResponse"];
1633
+ };
1634
+ };
1635
+ /** @description Missing or invalid API key */
1636
+ 401: {
1637
+ headers: {
1638
+ [name: string]: unknown;
1639
+ };
1640
+ content?: never;
1641
+ };
1642
+ };
1643
+ };
1044
1644
  get_webhook: {
1045
1645
  parameters: {
1046
1646
  query?: never;
@@ -1139,12 +1739,51 @@ export interface operations {
1139
1739
  requestBody?: never;
1140
1740
  responses: {
1141
1741
  /** @description Webhook deleted successfully */
1142
- 204: {
1742
+ 200: {
1743
+ headers: {
1744
+ [name: string]: unknown;
1745
+ };
1746
+ content: {
1747
+ "application/json": components["schemas"]["DeleteWebhookResponse"];
1748
+ };
1749
+ };
1750
+ /** @description Missing or invalid API key */
1751
+ 401: {
1752
+ headers: {
1753
+ [name: string]: unknown;
1754
+ };
1755
+ content?: never;
1756
+ };
1757
+ /** @description Webhook not found or not owned by user */
1758
+ 404: {
1143
1759
  headers: {
1144
1760
  [name: string]: unknown;
1145
1761
  };
1146
1762
  content?: never;
1147
1763
  };
1764
+ };
1765
+ };
1766
+ rotate_secret: {
1767
+ parameters: {
1768
+ query?: never;
1769
+ header?: never;
1770
+ path: {
1771
+ /** @description Webhook UUID */
1772
+ webhook_id: string;
1773
+ };
1774
+ cookie?: never;
1775
+ };
1776
+ requestBody?: never;
1777
+ responses: {
1778
+ /** @description New secret generated */
1779
+ 200: {
1780
+ headers: {
1781
+ [name: string]: unknown;
1782
+ };
1783
+ content: {
1784
+ "application/json": components["schemas"]["RotateSecretResponse"];
1785
+ };
1786
+ };
1148
1787
  /** @description Missing or invalid API key */
1149
1788
  401: {
1150
1789
  headers: {
@@ -1227,6 +1866,64 @@ export interface operations {
1227
1866
  };
1228
1867
  };
1229
1868
  };
1869
+ "new-market": {
1870
+ parameters: {
1871
+ query?: never;
1872
+ header?: never;
1873
+ path?: never;
1874
+ cookie?: never;
1875
+ };
1876
+ requestBody: {
1877
+ content: {
1878
+ "application/json": components["schemas"]["NewMarketPayload"];
1879
+ };
1880
+ };
1881
+ responses: {
1882
+ /** @description Webhook delivery acknowledged */
1883
+ 200: {
1884
+ headers: {
1885
+ [name: string]: unknown;
1886
+ };
1887
+ content?: never;
1888
+ };
1889
+ /** @description Server error (will retry) */
1890
+ 500: {
1891
+ headers: {
1892
+ [name: string]: unknown;
1893
+ };
1894
+ content?: never;
1895
+ };
1896
+ };
1897
+ };
1898
+ "whale-trade": {
1899
+ parameters: {
1900
+ query?: never;
1901
+ header?: never;
1902
+ path?: never;
1903
+ cookie?: never;
1904
+ };
1905
+ requestBody: {
1906
+ content: {
1907
+ "application/json": components["schemas"]["WhaleTradePayload"];
1908
+ };
1909
+ };
1910
+ responses: {
1911
+ /** @description Webhook delivery acknowledged */
1912
+ 200: {
1913
+ headers: {
1914
+ [name: string]: unknown;
1915
+ };
1916
+ content?: never;
1917
+ };
1918
+ /** @description Server error (will retry) */
1919
+ 500: {
1920
+ headers: {
1921
+ [name: string]: unknown;
1922
+ };
1923
+ content?: never;
1924
+ };
1925
+ };
1926
+ };
1230
1927
  "global-pnl": {
1231
1928
  parameters: {
1232
1929
  query?: never;
@@ -1517,4 +2214,91 @@ export interface operations {
1517
2214
  };
1518
2215
  };
1519
2216
  };
2217
+ "volume-spike": {
2218
+ parameters: {
2219
+ query?: never;
2220
+ header?: never;
2221
+ path?: never;
2222
+ cookie?: never;
2223
+ };
2224
+ requestBody: {
2225
+ content: {
2226
+ "application/json": components["schemas"]["VolumeSpikePayload"];
2227
+ };
2228
+ };
2229
+ responses: {
2230
+ /** @description Webhook delivery acknowledged */
2231
+ 200: {
2232
+ headers: {
2233
+ [name: string]: unknown;
2234
+ };
2235
+ content?: never;
2236
+ };
2237
+ /** @description Server error (will retry) */
2238
+ 500: {
2239
+ headers: {
2240
+ [name: string]: unknown;
2241
+ };
2242
+ content?: never;
2243
+ };
2244
+ };
2245
+ };
2246
+ "close-to-bond": {
2247
+ parameters: {
2248
+ query?: never;
2249
+ header?: never;
2250
+ path?: never;
2251
+ cookie?: never;
2252
+ };
2253
+ requestBody: {
2254
+ content: {
2255
+ "application/json": components["schemas"]["CloseToBondPayload"];
2256
+ };
2257
+ };
2258
+ responses: {
2259
+ /** @description Webhook delivery acknowledged */
2260
+ 200: {
2261
+ headers: {
2262
+ [name: string]: unknown;
2263
+ };
2264
+ content?: never;
2265
+ };
2266
+ /** @description Server error (will retry) */
2267
+ 500: {
2268
+ headers: {
2269
+ [name: string]: unknown;
2270
+ };
2271
+ content?: never;
2272
+ };
2273
+ };
2274
+ };
2275
+ "market-created": {
2276
+ parameters: {
2277
+ query?: never;
2278
+ header?: never;
2279
+ path?: never;
2280
+ cookie?: never;
2281
+ };
2282
+ requestBody: {
2283
+ content: {
2284
+ "application/json": components["schemas"]["MarketCreatedPayload"];
2285
+ };
2286
+ };
2287
+ responses: {
2288
+ /** @description Webhook delivery acknowledged */
2289
+ 200: {
2290
+ headers: {
2291
+ [name: string]: unknown;
2292
+ };
2293
+ content?: never;
2294
+ };
2295
+ /** @description Server error (will retry) */
2296
+ 500: {
2297
+ headers: {
2298
+ [name: string]: unknown;
2299
+ };
2300
+ content?: never;
2301
+ };
2302
+ };
2303
+ };
1520
2304
  }