@structbuild/sdk 0.1.6 → 0.1.8

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.
@@ -0,0 +1,1548 @@
1
+ /**
2
+ * This file was auto-generated by openapi-typescript.
3
+ * Do not make direct changes to the file.
4
+ */
5
+ export interface paths {
6
+ "/webhooks": {
7
+ parameters: {
8
+ query?: never;
9
+ header?: never;
10
+ path?: never;
11
+ cookie?: never;
12
+ };
13
+ /**
14
+ * List webhooks
15
+ * @description Retrieve a paginated list of your webhook subscriptions with optional filtering
16
+ */
17
+ get: operations["list_webhooks"];
18
+ put?: never;
19
+ /**
20
+ * Create webhook
21
+ * @description Create a new webhook subscription for real-time event notifications
22
+ */
23
+ post: operations["create_webhook"];
24
+ delete?: never;
25
+ options?: never;
26
+ head?: never;
27
+ patch?: never;
28
+ trace?: never;
29
+ };
30
+ "/webhooks/{webhook_id}": {
31
+ parameters: {
32
+ query?: never;
33
+ header?: never;
34
+ path?: never;
35
+ cookie?: never;
36
+ };
37
+ /**
38
+ * Get webhook
39
+ * @description Retrieve details of a specific webhook by its ID
40
+ */
41
+ get: operations["get_webhook"];
42
+ /**
43
+ * Update webhook
44
+ * @description Update an existing webhook's URL, filters, or status
45
+ */
46
+ put: operations["update_webhook"];
47
+ post?: never;
48
+ /**
49
+ * Delete webhook
50
+ * @description Permanently delete a webhook subscription
51
+ */
52
+ delete: operations["delete_webhook"];
53
+ options?: never;
54
+ head?: never;
55
+ patch?: never;
56
+ trace?: never;
57
+ };
58
+ "/webhooks/{webhook_id}/test": {
59
+ parameters: {
60
+ query?: never;
61
+ header?: never;
62
+ path?: never;
63
+ cookie?: never;
64
+ };
65
+ get?: never;
66
+ put?: never;
67
+ /**
68
+ * Test webhook
69
+ * @description Send a test payload to the webhook URL to verify connectivity
70
+ */
71
+ post: operations["test_webhook"];
72
+ delete?: never;
73
+ options?: never;
74
+ head?: never;
75
+ patch?: never;
76
+ trace?: never;
77
+ };
78
+ }
79
+ export interface webhooks {
80
+ "first-trade": {
81
+ parameters: {
82
+ query?: never;
83
+ header?: never;
84
+ path?: never;
85
+ cookie?: never;
86
+ };
87
+ get?: never;
88
+ put?: never;
89
+ /**
90
+ * First trade callback
91
+ * @description Fired when a tracked trader executes their first trade on a market
92
+ */
93
+ post: operations["first-trade"];
94
+ delete?: never;
95
+ options?: never;
96
+ head?: never;
97
+ patch?: never;
98
+ trace?: never;
99
+ };
100
+ "global-pnl": {
101
+ parameters: {
102
+ query?: never;
103
+ header?: never;
104
+ path?: never;
105
+ cookie?: never;
106
+ };
107
+ get?: never;
108
+ put?: never;
109
+ /**
110
+ * Global PnL callback
111
+ * @description Fired when a trader's global PnL crosses a configured threshold
112
+ */
113
+ post: operations["global-pnl"];
114
+ delete?: never;
115
+ options?: never;
116
+ head?: never;
117
+ patch?: never;
118
+ trace?: never;
119
+ };
120
+ "market-pnl": {
121
+ parameters: {
122
+ query?: never;
123
+ header?: never;
124
+ path?: never;
125
+ cookie?: never;
126
+ };
127
+ get?: never;
128
+ put?: never;
129
+ /**
130
+ * Market PnL callback
131
+ * @description Fired when a trader's market-level PnL crosses a configured threshold
132
+ */
133
+ post: operations["market-pnl"];
134
+ delete?: never;
135
+ options?: never;
136
+ head?: never;
137
+ patch?: never;
138
+ trace?: never;
139
+ };
140
+ "event-pnl": {
141
+ parameters: {
142
+ query?: never;
143
+ header?: never;
144
+ path?: never;
145
+ cookie?: never;
146
+ };
147
+ get?: never;
148
+ put?: never;
149
+ /**
150
+ * Event PnL callback
151
+ * @description Fired when a trader's event-level PnL crosses a configured threshold
152
+ */
153
+ post: operations["event-pnl"];
154
+ delete?: never;
155
+ options?: never;
156
+ head?: never;
157
+ patch?: never;
158
+ trace?: never;
159
+ };
160
+ "market-metrics": {
161
+ parameters: {
162
+ query?: never;
163
+ header?: never;
164
+ path?: never;
165
+ cookie?: never;
166
+ };
167
+ get?: never;
168
+ put?: never;
169
+ /**
170
+ * Market metrics callback
171
+ * @description Fired when a market's volume or transaction metrics cross a configured threshold
172
+ */
173
+ post: operations["market-metrics"];
174
+ delete?: never;
175
+ options?: never;
176
+ head?: never;
177
+ patch?: never;
178
+ trace?: never;
179
+ };
180
+ "event-metrics": {
181
+ parameters: {
182
+ query?: never;
183
+ header?: never;
184
+ path?: never;
185
+ cookie?: never;
186
+ };
187
+ get?: never;
188
+ put?: never;
189
+ /**
190
+ * Event metrics callback
191
+ * @description Fired when an event's volume or transaction metrics cross a configured threshold
192
+ */
193
+ post: operations["event-metrics"];
194
+ delete?: never;
195
+ options?: never;
196
+ head?: never;
197
+ patch?: never;
198
+ trace?: never;
199
+ };
200
+ "position-metrics": {
201
+ parameters: {
202
+ query?: never;
203
+ header?: never;
204
+ path?: never;
205
+ cookie?: never;
206
+ };
207
+ get?: never;
208
+ put?: never;
209
+ /**
210
+ * Position metrics callback
211
+ * @description Fired when a position's volume or transaction metrics cross a configured threshold
212
+ */
213
+ post: operations["position-metrics"];
214
+ delete?: never;
215
+ options?: never;
216
+ head?: never;
217
+ patch?: never;
218
+ trace?: never;
219
+ };
220
+ "market-volume-milestone": {
221
+ parameters: {
222
+ query?: never;
223
+ header?: never;
224
+ path?: never;
225
+ cookie?: never;
226
+ };
227
+ get?: never;
228
+ put?: never;
229
+ /**
230
+ * Market volume milestone callback
231
+ * @description Fired when a market's trading volume reaches a milestone threshold
232
+ */
233
+ post: operations["market-volume-milestone"];
234
+ delete?: never;
235
+ options?: never;
236
+ head?: never;
237
+ patch?: never;
238
+ trace?: never;
239
+ };
240
+ "event-volume-milestone": {
241
+ parameters: {
242
+ query?: never;
243
+ header?: never;
244
+ path?: never;
245
+ cookie?: never;
246
+ };
247
+ get?: never;
248
+ put?: never;
249
+ /**
250
+ * Event volume milestone callback
251
+ * @description Fired when an event's trading volume reaches a milestone threshold
252
+ */
253
+ post: operations["event-volume-milestone"];
254
+ delete?: never;
255
+ options?: never;
256
+ head?: never;
257
+ patch?: never;
258
+ trace?: never;
259
+ };
260
+ "position-volume-milestone": {
261
+ parameters: {
262
+ query?: never;
263
+ header?: never;
264
+ path?: never;
265
+ cookie?: never;
266
+ };
267
+ get?: never;
268
+ put?: never;
269
+ /**
270
+ * Position volume milestone callback
271
+ * @description Fired when a position's trading volume reaches a milestone threshold
272
+ */
273
+ post: operations["position-volume-milestone"];
274
+ delete?: never;
275
+ options?: never;
276
+ head?: never;
277
+ patch?: never;
278
+ trace?: never;
279
+ };
280
+ "probability-spike": {
281
+ parameters: {
282
+ query?: never;
283
+ header?: never;
284
+ path?: never;
285
+ cookie?: never;
286
+ };
287
+ get?: never;
288
+ put?: never;
289
+ /**
290
+ * Probability spike callback
291
+ * @description Fired when a position's probability changes by more than a configured percentage
292
+ */
293
+ post: operations["probability-spike"];
294
+ delete?: never;
295
+ options?: never;
296
+ head?: never;
297
+ patch?: never;
298
+ trace?: never;
299
+ };
300
+ }
301
+ export interface components {
302
+ schemas: {
303
+ /** @description Condition metrics webhook payload (Arc-optimized, no internal metadata) */
304
+ ConditionMetricsPayload: {
305
+ condition_id?: string | null;
306
+ timeframe?: string | null;
307
+ /** Format: double */
308
+ volume_usd?: number | null;
309
+ /** Format: double */
310
+ fees?: number | null;
311
+ /** Format: int64 */
312
+ txns?: number | null;
313
+ /** Format: int64 */
314
+ unique_traders?: number | null;
315
+ };
316
+ /** @description Request body for creating a webhook */
317
+ CreateWebhookRequestBody: {
318
+ /** @description Destination URL for webhook deliveries (must be HTTPS) */
319
+ url: string;
320
+ /** @description Events to subscribe to */
321
+ events: components["schemas"]["PolymarketWebhookEvent"][];
322
+ /** @description Optional secret for HMAC signature verification */
323
+ secret?: string | null;
324
+ filters?: null | components["schemas"]["WebhookFiltersBody"];
325
+ /** @description Optional description/name */
326
+ description?: string | null;
327
+ };
328
+ /** @description Event metrics webhook payload (Arc-optimized, no internal metadata) */
329
+ EventMetricsPayload: {
330
+ event_slug?: string | null;
331
+ timeframe?: string | null;
332
+ /** Format: double */
333
+ volume_usd?: number | null;
334
+ /** Format: double */
335
+ fees?: number | null;
336
+ /** Format: int64 */
337
+ txns?: number | null;
338
+ /** Format: int64 */
339
+ unique_traders?: number | null;
340
+ };
341
+ /** @description Event PnL webhook payload (Arc-optimized) */
342
+ EventPnlPayload: {
343
+ event_slug?: string | null;
344
+ /** Format: int64 */
345
+ markets_traded?: number | null;
346
+ /** Format: int64 */
347
+ outcomes_traded?: number | null;
348
+ /** Format: int64 */
349
+ total_buys?: number | null;
350
+ /** Format: int64 */
351
+ total_sells?: number | null;
352
+ /** Format: int64 */
353
+ total_redemptions?: number | null;
354
+ /** Format: int64 */
355
+ total_merges?: number | null;
356
+ /** Format: double */
357
+ total_volume_usd?: number | null;
358
+ /** Format: double */
359
+ buy_usd?: number | null;
360
+ /** Format: double */
361
+ sell_usd?: number | null;
362
+ /** Format: double */
363
+ redemption_usd?: number | null;
364
+ /** Format: double */
365
+ merge_usd?: number | null;
366
+ /** Format: double */
367
+ realized_pnl_usd?: number | null;
368
+ /** Format: int64 */
369
+ winning_markets?: number | null;
370
+ /** Format: int64 */
371
+ losing_markets?: number | null;
372
+ /** Format: double */
373
+ total_fees?: number | null;
374
+ /** Format: int64 */
375
+ first_trade_at?: number | null;
376
+ /** Format: int64 */
377
+ last_trade_at?: number | null;
378
+ };
379
+ /** @description Event volume milestone webhook payload */
380
+ EventVolumeMilestonePayload: {
381
+ event_slug: string;
382
+ timeframe: string;
383
+ /**
384
+ * Format: double
385
+ * @description Milestone amount reached (USD)
386
+ */
387
+ milestone_usd: number;
388
+ /**
389
+ * Format: double
390
+ * @description Current volume (USD) that triggered the milestone
391
+ */
392
+ current_volume_usd: number;
393
+ /**
394
+ * Format: double
395
+ * @description Total fees collected in this timeframe
396
+ */
397
+ fees: number;
398
+ /**
399
+ * Format: int64
400
+ * @description Total transactions in this timeframe
401
+ */
402
+ txns: number;
403
+ };
404
+ /** @description First trade webhook payload with zero-copy Arc<str> for string sharing */
405
+ FirstTradePayload: {
406
+ /** @description Event type identifier */
407
+ event_type: string;
408
+ /** @description Trader/taker address (zero-copy Arc) */
409
+ trader: string;
410
+ /** @description Taker address (same as trader, zero-copy Arc) */
411
+ taker: string;
412
+ /** @description Position ID (ERC1155 token ID, zero-copy Arc) */
413
+ position_id: string;
414
+ /** @description Market ID (same as position_id for compatibility, zero-copy Arc) */
415
+ market_id: string;
416
+ /** @description Condition ID (market condition, zero-copy Arc) */
417
+ condition_id?: string | null;
418
+ /** @description Market outcome (e.g., "Yes", "No", zero-copy Arc) */
419
+ outcome?: string | null;
420
+ /**
421
+ * Format: int32
422
+ * @description Outcome index (0 = Yes, 1 = No)
423
+ */
424
+ outcome_index?: number | null;
425
+ /** @description Market question (zero-copy Arc) */
426
+ question?: string | null;
427
+ /** @description Market slug (zero-copy Arc) */
428
+ slug?: string | null;
429
+ /** @description Event slug (parent event, zero-copy Arc) */
430
+ event_slug?: string | null;
431
+ /** @description Trade ID (zero-copy Arc) */
432
+ trade_id: string;
433
+ /** @description Transaction hash (zero-copy Arc) */
434
+ hash: string;
435
+ /**
436
+ * Format: int64
437
+ * @description Block number
438
+ */
439
+ block: number;
440
+ /**
441
+ * Format: int64
442
+ * @description Confirmed timestamp (Unix seconds)
443
+ */
444
+ confirmed_at: number;
445
+ /**
446
+ * Format: int64
447
+ * @description Timestamp (same as confirmed_at for compatibility)
448
+ */
449
+ timestamp: number;
450
+ amount_usd: string;
451
+ shares_amount: string;
452
+ fee: string;
453
+ /** @description Trade side (Buy/Sell, zero-copy Arc) */
454
+ side: string;
455
+ /**
456
+ * Format: double
457
+ * @description Price per share (0.0 - 1.0)
458
+ */
459
+ price: number;
460
+ /**
461
+ * Format: double
462
+ * @description Implied probability (0.0 - 1.0)
463
+ */
464
+ probability?: number | null;
465
+ exchange: string;
466
+ trade_type: string;
467
+ };
468
+ /** @description Global PnL webhook payload (Arc-optimized) */
469
+ GlobalPnlPayload: {
470
+ trader?: string | null;
471
+ /** Format: double */
472
+ realized_pnl_usd?: number | null;
473
+ /** Format: int64 */
474
+ events_traded?: number | null;
475
+ /** Format: int64 */
476
+ markets_traded?: number | null;
477
+ /** Format: int64 */
478
+ total_buys?: number | null;
479
+ /** Format: int64 */
480
+ total_sells?: number | null;
481
+ /** Format: int64 */
482
+ total_redemptions?: number | null;
483
+ /** Format: int64 */
484
+ total_merges?: number | null;
485
+ /** Format: double */
486
+ total_volume_usd?: number | null;
487
+ /** Format: double */
488
+ buy_volume_usd?: number | null;
489
+ /** Format: double */
490
+ sell_volume_usd?: number | null;
491
+ /** Format: double */
492
+ redemption_volume_usd?: number | null;
493
+ /** Format: double */
494
+ merge_volume_usd?: number | null;
495
+ /** Format: int64 */
496
+ markets_won?: number | null;
497
+ /** Format: int64 */
498
+ markets_lost?: number | null;
499
+ /** Format: double */
500
+ market_win_rate_pct?: number | null;
501
+ /** Format: double */
502
+ avg_pnl_per_market?: number | null;
503
+ /** Format: double */
504
+ avg_pnl_per_trade?: number | null;
505
+ /** Format: double */
506
+ avg_hold_time_seconds?: number | null;
507
+ /** Format: double */
508
+ total_fees?: number | null;
509
+ /** Format: double */
510
+ best_trade_pnl_usd?: number | null;
511
+ best_trade_condition_id?: string | null;
512
+ /** Format: double */
513
+ worst_trade_pnl_usd?: number | null;
514
+ worst_trade_condition_id?: string | null;
515
+ /** Format: int64 */
516
+ first_trade_at?: number | null;
517
+ /** Format: int64 */
518
+ last_trade_at?: number | null;
519
+ };
520
+ /** @description Market PnL webhook payload (Arc-optimized) */
521
+ MarketPnlPayload: {
522
+ condition_id?: string | null;
523
+ event_slug?: string | null;
524
+ /** Format: int64 */
525
+ outcomes_traded?: number | null;
526
+ /** Format: int64 */
527
+ total_buys?: number | null;
528
+ /** Format: int64 */
529
+ total_sells?: number | null;
530
+ /** Format: int64 */
531
+ total_redemptions?: number | null;
532
+ /** Format: int64 */
533
+ total_merges?: number | null;
534
+ /** Format: double */
535
+ buy_usd?: number | null;
536
+ /** Format: double */
537
+ sell_usd?: number | null;
538
+ /** Format: double */
539
+ redemption_usd?: number | null;
540
+ /** Format: double */
541
+ merge_usd?: number | null;
542
+ /** Format: double */
543
+ realized_pnl_usd?: number | null;
544
+ /** Format: int64 */
545
+ winning_outcomes?: number | null;
546
+ /** Format: double */
547
+ total_fees?: number | null;
548
+ /** Format: int64 */
549
+ first_trade_at?: number | null;
550
+ /** Format: int64 */
551
+ last_trade_at?: number | null;
552
+ };
553
+ /**
554
+ * @description PnL timeframe enum for webhook filtering
555
+ * @enum {string}
556
+ */
557
+ PnlTimeframeFilter: "1d" | "7d" | "30d" | "lifetime";
558
+ /**
559
+ * @description Polymarket webhook event types
560
+ * @enum {string}
561
+ */
562
+ 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" | "*";
563
+ /**
564
+ * @description Polymarket-specific webhook filters
565
+ *
566
+ * Different webhook handlers use different subsets of these fields:
567
+ * - first_trade: wallet_addresses, min_usd_value, min_probability, max_probability, condition_ids, event_slugs, tags
568
+ * - global_pnl: traders, min_realized_pnl_usd, max_realized_pnl_usd, min_volume_usd, min_win_rate, min_markets_traded
569
+ * - market_pnl: traders, min_realized_pnl_usd, max_realized_pnl_usd, min_buy_usd, condition_ids, event_slugs
570
+ * - event_pnl: traders, min_realized_pnl_usd, max_realized_pnl_usd, min_volume_usd, event_slugs, min_markets_traded
571
+ * - condition_metrics: condition_ids, min_volume_usd, max_volume_usd, min_fees, min_txns, timeframes
572
+ * - event_metrics: event_slugs, min_volume_usd, max_volume_usd, min_fees, min_txns, timeframes
573
+ * - 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
574
+ * - volume_milestone: condition_ids, timeframes, milestone_amounts
575
+ *
576
+ * Implements Hash + Eq manually (f64 fields use bit representation)
577
+ */
578
+ PolymarketWebhookFilter: {
579
+ /** @description Filter by wallet addresses (for first_trade, normalized to lowercase) */
580
+ wallet_addresses?: string[];
581
+ /** @description Filter by trader addresses (for PnL webhooks, normalized to lowercase) */
582
+ traders?: string[];
583
+ /** @description Filter by market/condition IDs */
584
+ condition_ids?: string[];
585
+ /**
586
+ * Format: double
587
+ * @description Filter by minimum USD value (for trades)
588
+ */
589
+ min_usd_value?: number | null;
590
+ /** @description Filter by event slugs */
591
+ event_slugs?: string[];
592
+ /** @description Filter by tags */
593
+ tags?: string[];
594
+ /**
595
+ * Format: double
596
+ * @description Minimum probability threshold (0.0 - 1.0)
597
+ */
598
+ min_probability?: number | null;
599
+ /**
600
+ * Format: double
601
+ * @description Maximum probability threshold (0.0 - 1.0)
602
+ */
603
+ max_probability?: number | null;
604
+ /**
605
+ * Format: double
606
+ * @description Minimum realized PnL (USD) - for PnL webhooks
607
+ */
608
+ min_realized_pnl_usd?: number | null;
609
+ /**
610
+ * Format: double
611
+ * @description Maximum realized PnL (USD) - for PnL webhooks
612
+ */
613
+ max_realized_pnl_usd?: number | null;
614
+ /**
615
+ * Format: double
616
+ * @description Minimum volume (USD) - for PnL and metrics webhooks
617
+ */
618
+ min_volume_usd?: number | null;
619
+ /**
620
+ * Format: double
621
+ * @description Maximum volume (USD) - for metrics webhooks
622
+ */
623
+ max_volume_usd?: number | null;
624
+ /**
625
+ * Format: double
626
+ * @description Minimum buy volume (USD) - for PnL and metrics webhooks
627
+ */
628
+ min_buy_usd?: number | null;
629
+ /**
630
+ * Format: double
631
+ * @description Minimum win rate (0.0 - 100.0) - for global PnL webhooks
632
+ */
633
+ min_win_rate?: number | null;
634
+ /**
635
+ * Format: int64
636
+ * @description Minimum markets traded - for PnL webhooks
637
+ */
638
+ min_markets_traded?: number | null;
639
+ /**
640
+ * Format: double
641
+ * @description Minimum net shares - for position PnL webhooks
642
+ */
643
+ min_net_shares?: number | null;
644
+ /**
645
+ * Format: double
646
+ * @description Maximum net shares - for position PnL webhooks
647
+ */
648
+ max_net_shares?: number | null;
649
+ /** @description Filter by position IDs - for position PnL webhooks */
650
+ position_ids?: string[];
651
+ /** @description Filter by outcomes (e.g., "Yes", "No") - for position PnL webhooks */
652
+ outcomes?: string[];
653
+ /**
654
+ * Format: double
655
+ * @description Minimum fees - for metrics webhooks
656
+ */
657
+ min_fees?: number | null;
658
+ /**
659
+ * Format: int64
660
+ * @description Minimum transaction count - for metrics webhooks
661
+ */
662
+ min_txns?: number | null;
663
+ /**
664
+ * Format: double
665
+ * @description Minimum sell volume (USD) - for position metrics webhooks
666
+ */
667
+ min_sell_volume_usd?: number | null;
668
+ /**
669
+ * Format: double
670
+ * @description Minimum price change percentage - for position metrics webhooks
671
+ */
672
+ min_price_change_pct?: number | null;
673
+ /**
674
+ * Format: double
675
+ * @description Minimum probability change percentage - for position metrics webhooks
676
+ */
677
+ min_probability_change_pct?: number | null;
678
+ /** @description Timeframes to track - for metrics webhooks (1m, 5m, 30m, 1h, 6h, 24h) */
679
+ timeframes?: string[];
680
+ /** @description Milestone amounts to track - for volume milestone webhooks (e.g., 10000, 100000, 1000000) */
681
+ milestone_amounts?: number[];
682
+ /**
683
+ * Format: double
684
+ * @description User's baseline volume for spike detection (USD) - for volume spike webhooks
685
+ * Example: 50000.0 for $50k baseline
686
+ */
687
+ baseline_volume_usd?: number | null;
688
+ /**
689
+ * Format: double
690
+ * @description Spike ratio multiplier (must be > 1.0) - for volume spike webhooks
691
+ * Example: 2.0 for 2x, 5.0 for 5x, 10.0 for 10x
692
+ */
693
+ spike_ratio?: number | null;
694
+ /**
695
+ * @description Exclude short-term trading markets by timeframe (e.g., ["5m", "15m", "30m", "1h"])
696
+ * Filters out event slugs containing these timeframe patterns (auto-wrapped: "5m" → "-5m-")
697
+ * Example: Excludes "btc-updown-5m-1771678800" when "5m" is in the list
698
+ */
699
+ exclude_shortterm_market_timeframes?: string[];
700
+ };
701
+ /** @description Position metrics webhook payload (Arc-optimized, no internal metadata) */
702
+ PositionMetricsPayload: {
703
+ position_id?: string | null;
704
+ outcome?: string | null;
705
+ /** Format: int32 */
706
+ outcome_index?: number | null;
707
+ timeframe?: string | null;
708
+ /** Format: double */
709
+ volume_usd?: number | null;
710
+ /** Format: double */
711
+ buy_volume_usd?: number | null;
712
+ /** Format: double */
713
+ sell_volume_usd?: number | null;
714
+ /** Format: double */
715
+ fees?: number | null;
716
+ /** Format: int64 */
717
+ txns?: number | null;
718
+ /** Format: int64 */
719
+ buys?: number | null;
720
+ /** Format: int64 */
721
+ sells?: number | null;
722
+ /** Format: int64 */
723
+ unique_traders?: number | null;
724
+ /** Format: double */
725
+ price_open?: number | null;
726
+ /** Format: double */
727
+ price_close?: number | null;
728
+ /** Format: double */
729
+ price_high?: number | null;
730
+ /** Format: double */
731
+ price_low?: number | null;
732
+ /** Format: double */
733
+ probability_open?: number | null;
734
+ /** Format: double */
735
+ probability_close?: number | null;
736
+ /** Format: double */
737
+ probability_high?: number | null;
738
+ /** Format: double */
739
+ probability_low?: number | null;
740
+ };
741
+ /** @description Position volume milestone webhook payload */
742
+ PositionVolumeMilestonePayload: {
743
+ condition_id?: string | null;
744
+ position_id: string;
745
+ outcome?: string | null;
746
+ /** Format: int32 */
747
+ outcome_index?: number | null;
748
+ timeframe: string;
749
+ /**
750
+ * Format: double
751
+ * @description Milestone amount reached (USD)
752
+ */
753
+ milestone_usd: number;
754
+ /**
755
+ * Format: double
756
+ * @description Current volume (USD) that triggered the milestone
757
+ */
758
+ current_volume_usd: number;
759
+ /**
760
+ * Format: double
761
+ * @description Buy volume (USD)
762
+ */
763
+ buy_volume_usd: number;
764
+ /**
765
+ * Format: double
766
+ * @description Sell volume (USD)
767
+ */
768
+ sell_volume_usd: number;
769
+ /**
770
+ * Format: double
771
+ * @description Total fees collected in this timeframe
772
+ */
773
+ fees: number;
774
+ /**
775
+ * Format: int64
776
+ * @description Total transactions in this timeframe
777
+ */
778
+ txns: number;
779
+ /**
780
+ * Format: int64
781
+ * @description Buy transactions
782
+ */
783
+ buys: number;
784
+ /**
785
+ * Format: int64
786
+ * @description Sell transactions
787
+ */
788
+ sells: number;
789
+ };
790
+ /** @description Position probability spike webhook payload */
791
+ ProbabilitySpikePayload: {
792
+ position_id: string;
793
+ outcome?: string | null;
794
+ /** Format: int32 */
795
+ outcome_index?: number | null;
796
+ timeframe: string;
797
+ /**
798
+ * Format: double
799
+ * @description Probability at the start of the timeframe (0.0 - 1.0)
800
+ */
801
+ probability_open: number;
802
+ /**
803
+ * Format: double
804
+ * @description Probability at the end of the timeframe (0.0 - 1.0)
805
+ */
806
+ probability_close: number;
807
+ /**
808
+ * Format: double
809
+ * @description Absolute probability change (e.g., 0.25 for 25 percentage points)
810
+ */
811
+ probability_change: number;
812
+ /**
813
+ * Format: double
814
+ * @description Percentage change relative to open (e.g., 83.33 for 30% -> 55%)
815
+ */
816
+ probability_change_pct: number;
817
+ /**
818
+ * Format: double
819
+ * @description Price at open (0.0 - 1.0)
820
+ */
821
+ price_open: number;
822
+ /**
823
+ * Format: double
824
+ * @description Price at close (0.0 - 1.0)
825
+ */
826
+ price_close: number;
827
+ /**
828
+ * Format: double
829
+ * @description Volume during the timeframe (USD)
830
+ */
831
+ volume_usd: number;
832
+ /**
833
+ * Format: int64
834
+ * @description Number of transactions
835
+ */
836
+ txns: number;
837
+ };
838
+ /** @description Request body for updating a webhook */
839
+ UpdateWebhookRequestBody: {
840
+ /** @description Destination URL for webhook deliveries (must be HTTPS) */
841
+ url?: string | null;
842
+ /** @description Events to subscribe to */
843
+ events?: components["schemas"]["PolymarketWebhookEvent"][] | null;
844
+ /** @description New secret for HMAC signature verification */
845
+ secret?: string | null;
846
+ filters?: null | components["schemas"]["WebhookFiltersBody"];
847
+ status?: null | components["schemas"]["WebhookStatusBody"];
848
+ /** @description Description/name */
849
+ description?: string | null;
850
+ };
851
+ /** @description Volume milestone webhook payload */
852
+ VolumeMilestonePayload: {
853
+ condition_id: string;
854
+ timeframe: string;
855
+ /**
856
+ * Format: double
857
+ * @description Milestone amount reached (USD)
858
+ */
859
+ milestone_usd: number;
860
+ /**
861
+ * Format: double
862
+ * @description Current volume (USD) that triggered the milestone
863
+ */
864
+ current_volume_usd: number;
865
+ /**
866
+ * Format: double
867
+ * @description Total fees collected in this timeframe
868
+ */
869
+ fees: number;
870
+ /**
871
+ * Format: int64
872
+ * @description Total transactions in this timeframe
873
+ */
874
+ txns: number;
875
+ };
876
+ /** @description Webhook filters request body */
877
+ WebhookFiltersBody: {
878
+ /** @description Filter by wallet addresses */
879
+ wallet_addresses?: string[];
880
+ /** @description Filter by market/condition IDs */
881
+ condition_ids?: string[];
882
+ /**
883
+ * Format: double
884
+ * @description Filter by minimum USD value
885
+ */
886
+ min_usd_value?: number | null;
887
+ /** @description Filter by event slugs */
888
+ event_slugs?: string[];
889
+ /**
890
+ * Format: double
891
+ * @description Minimum probability threshold (0.0 - 1.0)
892
+ */
893
+ min_probability?: number | null;
894
+ /**
895
+ * Format: double
896
+ * @description Maximum probability threshold (0.0 - 1.0)
897
+ */
898
+ max_probability?: number | null;
899
+ /** @description Exclude short-term trading markets by timeframe (e.g., ["5m", "15m"]) */
900
+ exclude_shortterm_market_timeframes?: string[];
901
+ };
902
+ /** @description List webhooks response */
903
+ WebhookListResponseBody: {
904
+ /** @description List of webhooks */
905
+ webhooks: components["schemas"]["WebhookResponse"][];
906
+ /** @description Total count */
907
+ total: number;
908
+ };
909
+ /** @description Webhook response (returned from API) */
910
+ WebhookResponse: {
911
+ /** @description Unique webhook ID */
912
+ id: string;
913
+ /** @description Destination URL */
914
+ url: string;
915
+ /** @description Subscribed events */
916
+ events: components["schemas"]["PolymarketWebhookEvent"][];
917
+ /** @description Filters */
918
+ filters: components["schemas"]["WebhookFiltersBody"];
919
+ /** @description Current status */
920
+ status: string;
921
+ /**
922
+ * Format: int32
923
+ * @description Consecutive failure count
924
+ */
925
+ failure_count: number;
926
+ /**
927
+ * Format: int64
928
+ * @description Last successful delivery timestamp
929
+ */
930
+ last_success_at?: number | null;
931
+ /**
932
+ * Format: int64
933
+ * @description Last failed delivery timestamp
934
+ */
935
+ last_failure_at?: number | null;
936
+ /** @description Last failure reason */
937
+ last_failure_reason?: string | null;
938
+ /**
939
+ * Format: int64
940
+ * @description Created timestamp
941
+ */
942
+ created_at: number;
943
+ /**
944
+ * Format: int64
945
+ * @description Updated timestamp
946
+ */
947
+ updated_at: number;
948
+ /** @description Description */
949
+ description?: string | null;
950
+ /** @description Whether a secret is configured */
951
+ has_secret: boolean;
952
+ };
953
+ /**
954
+ * @description Webhook status
955
+ * @enum {string}
956
+ */
957
+ WebhookStatusBody: "active" | "paused";
958
+ /** @description Test webhook response */
959
+ WebhookTestResponseBody: {
960
+ /** @description Whether the test delivery succeeded */
961
+ success: boolean;
962
+ /**
963
+ * Format: int32
964
+ * @description HTTP status code from the endpoint
965
+ */
966
+ status_code?: number | null;
967
+ /** @description Error message if failed */
968
+ error?: string | null;
969
+ /**
970
+ * Format: int64
971
+ * @description Delivery duration in milliseconds
972
+ */
973
+ duration_ms: number;
974
+ };
975
+ };
976
+ responses: never;
977
+ parameters: never;
978
+ requestBodies: never;
979
+ headers: never;
980
+ pathItems: never;
981
+ }
982
+ export type $defs = Record<string, never>;
983
+ export interface operations {
984
+ list_webhooks: {
985
+ parameters: {
986
+ query?: {
987
+ /** @description Results per page (default: 20, max: 100) */
988
+ limit?: number;
989
+ /** @description Pagination offset (default: 0) */
990
+ offset?: number;
991
+ /** @description Filter by status: active, paused */
992
+ status?: components["schemas"]["WebhookStatusBody"];
993
+ /** @description Filter by event type */
994
+ event?: components["schemas"]["PolymarketWebhookEvent"];
995
+ };
996
+ header?: never;
997
+ path?: never;
998
+ cookie?: never;
999
+ };
1000
+ requestBody?: never;
1001
+ responses: {
1002
+ /** @description List of webhooks */
1003
+ 200: {
1004
+ headers: {
1005
+ [name: string]: unknown;
1006
+ };
1007
+ content: {
1008
+ "application/json": components["schemas"]["WebhookListResponseBody"];
1009
+ };
1010
+ };
1011
+ /** @description Missing or invalid API key */
1012
+ 401: {
1013
+ headers: {
1014
+ [name: string]: unknown;
1015
+ };
1016
+ content?: never;
1017
+ };
1018
+ };
1019
+ };
1020
+ create_webhook: {
1021
+ parameters: {
1022
+ query?: never;
1023
+ header?: never;
1024
+ path?: never;
1025
+ cookie?: never;
1026
+ };
1027
+ requestBody: {
1028
+ content: {
1029
+ "application/json": components["schemas"]["CreateWebhookRequestBody"];
1030
+ };
1031
+ };
1032
+ responses: {
1033
+ /** @description Webhook created successfully */
1034
+ 201: {
1035
+ headers: {
1036
+ [name: string]: unknown;
1037
+ };
1038
+ content: {
1039
+ "application/json": components["schemas"]["WebhookResponse"];
1040
+ };
1041
+ };
1042
+ /** @description Invalid request (malformed URL, invalid filters, etc.) */
1043
+ 400: {
1044
+ headers: {
1045
+ [name: string]: unknown;
1046
+ };
1047
+ content?: never;
1048
+ };
1049
+ /** @description Missing or invalid API key */
1050
+ 401: {
1051
+ headers: {
1052
+ [name: string]: unknown;
1053
+ };
1054
+ content?: never;
1055
+ };
1056
+ /** @description Insufficient credits */
1057
+ 402: {
1058
+ headers: {
1059
+ [name: string]: unknown;
1060
+ };
1061
+ content?: never;
1062
+ };
1063
+ /** @description Rate limit exceeded (max 100 webhooks per user) */
1064
+ 429: {
1065
+ headers: {
1066
+ [name: string]: unknown;
1067
+ };
1068
+ content?: never;
1069
+ };
1070
+ };
1071
+ };
1072
+ get_webhook: {
1073
+ parameters: {
1074
+ query?: never;
1075
+ header?: never;
1076
+ path: {
1077
+ /** @description Webhook UUID */
1078
+ webhook_id: string;
1079
+ };
1080
+ cookie?: never;
1081
+ };
1082
+ requestBody?: never;
1083
+ responses: {
1084
+ /** @description Webhook details */
1085
+ 200: {
1086
+ headers: {
1087
+ [name: string]: unknown;
1088
+ };
1089
+ content: {
1090
+ "application/json": components["schemas"]["WebhookResponse"];
1091
+ };
1092
+ };
1093
+ /** @description Missing or invalid API key */
1094
+ 401: {
1095
+ headers: {
1096
+ [name: string]: unknown;
1097
+ };
1098
+ content?: never;
1099
+ };
1100
+ /** @description Webhook not found or not owned by user */
1101
+ 404: {
1102
+ headers: {
1103
+ [name: string]: unknown;
1104
+ };
1105
+ content?: never;
1106
+ };
1107
+ };
1108
+ };
1109
+ update_webhook: {
1110
+ parameters: {
1111
+ query?: never;
1112
+ header?: never;
1113
+ path: {
1114
+ /** @description Webhook UUID */
1115
+ webhook_id: string;
1116
+ };
1117
+ cookie?: never;
1118
+ };
1119
+ requestBody: {
1120
+ content: {
1121
+ "application/json": components["schemas"]["UpdateWebhookRequestBody"];
1122
+ };
1123
+ };
1124
+ responses: {
1125
+ /** @description Webhook updated successfully */
1126
+ 200: {
1127
+ headers: {
1128
+ [name: string]: unknown;
1129
+ };
1130
+ content: {
1131
+ "application/json": components["schemas"]["WebhookResponse"];
1132
+ };
1133
+ };
1134
+ /** @description Invalid request */
1135
+ 400: {
1136
+ headers: {
1137
+ [name: string]: unknown;
1138
+ };
1139
+ content?: never;
1140
+ };
1141
+ /** @description Missing or invalid API key */
1142
+ 401: {
1143
+ headers: {
1144
+ [name: string]: unknown;
1145
+ };
1146
+ content?: never;
1147
+ };
1148
+ /** @description Webhook not found or not owned by user */
1149
+ 404: {
1150
+ headers: {
1151
+ [name: string]: unknown;
1152
+ };
1153
+ content?: never;
1154
+ };
1155
+ };
1156
+ };
1157
+ delete_webhook: {
1158
+ parameters: {
1159
+ query?: never;
1160
+ header?: never;
1161
+ path: {
1162
+ /** @description Webhook UUID */
1163
+ webhook_id: string;
1164
+ };
1165
+ cookie?: never;
1166
+ };
1167
+ requestBody?: never;
1168
+ responses: {
1169
+ /** @description Webhook deleted successfully */
1170
+ 204: {
1171
+ headers: {
1172
+ [name: string]: unknown;
1173
+ };
1174
+ content?: never;
1175
+ };
1176
+ /** @description Missing or invalid API key */
1177
+ 401: {
1178
+ headers: {
1179
+ [name: string]: unknown;
1180
+ };
1181
+ content?: never;
1182
+ };
1183
+ /** @description Webhook not found or not owned by user */
1184
+ 404: {
1185
+ headers: {
1186
+ [name: string]: unknown;
1187
+ };
1188
+ content?: never;
1189
+ };
1190
+ };
1191
+ };
1192
+ test_webhook: {
1193
+ parameters: {
1194
+ query?: never;
1195
+ header?: never;
1196
+ path: {
1197
+ /** @description Webhook UUID */
1198
+ webhook_id: string;
1199
+ };
1200
+ cookie?: never;
1201
+ };
1202
+ requestBody?: never;
1203
+ responses: {
1204
+ /** @description Test delivery completed */
1205
+ 200: {
1206
+ headers: {
1207
+ [name: string]: unknown;
1208
+ };
1209
+ content: {
1210
+ "application/json": components["schemas"]["WebhookTestResponseBody"];
1211
+ };
1212
+ };
1213
+ /** @description Missing or invalid API key */
1214
+ 401: {
1215
+ headers: {
1216
+ [name: string]: unknown;
1217
+ };
1218
+ content?: never;
1219
+ };
1220
+ /** @description Webhook not found or not owned by user */
1221
+ 404: {
1222
+ headers: {
1223
+ [name: string]: unknown;
1224
+ };
1225
+ content?: never;
1226
+ };
1227
+ };
1228
+ };
1229
+ "first-trade": {
1230
+ parameters: {
1231
+ query?: never;
1232
+ header?: never;
1233
+ path?: never;
1234
+ cookie?: never;
1235
+ };
1236
+ requestBody: {
1237
+ content: {
1238
+ "application/json": components["schemas"]["FirstTradePayload"];
1239
+ };
1240
+ };
1241
+ responses: {
1242
+ /** @description Webhook delivery acknowledged */
1243
+ 200: {
1244
+ headers: {
1245
+ [name: string]: unknown;
1246
+ };
1247
+ content?: never;
1248
+ };
1249
+ /** @description Server error (will retry) */
1250
+ 500: {
1251
+ headers: {
1252
+ [name: string]: unknown;
1253
+ };
1254
+ content?: never;
1255
+ };
1256
+ };
1257
+ };
1258
+ "global-pnl": {
1259
+ parameters: {
1260
+ query?: never;
1261
+ header?: never;
1262
+ path?: never;
1263
+ cookie?: never;
1264
+ };
1265
+ requestBody: {
1266
+ content: {
1267
+ "application/json": components["schemas"]["GlobalPnlPayload"];
1268
+ };
1269
+ };
1270
+ responses: {
1271
+ /** @description Webhook delivery acknowledged */
1272
+ 200: {
1273
+ headers: {
1274
+ [name: string]: unknown;
1275
+ };
1276
+ content?: never;
1277
+ };
1278
+ /** @description Server error (will retry) */
1279
+ 500: {
1280
+ headers: {
1281
+ [name: string]: unknown;
1282
+ };
1283
+ content?: never;
1284
+ };
1285
+ };
1286
+ };
1287
+ "market-pnl": {
1288
+ parameters: {
1289
+ query?: never;
1290
+ header?: never;
1291
+ path?: never;
1292
+ cookie?: never;
1293
+ };
1294
+ requestBody: {
1295
+ content: {
1296
+ "application/json": components["schemas"]["MarketPnlPayload"];
1297
+ };
1298
+ };
1299
+ responses: {
1300
+ /** @description Webhook delivery acknowledged */
1301
+ 200: {
1302
+ headers: {
1303
+ [name: string]: unknown;
1304
+ };
1305
+ content?: never;
1306
+ };
1307
+ /** @description Server error (will retry) */
1308
+ 500: {
1309
+ headers: {
1310
+ [name: string]: unknown;
1311
+ };
1312
+ content?: never;
1313
+ };
1314
+ };
1315
+ };
1316
+ "event-pnl": {
1317
+ parameters: {
1318
+ query?: never;
1319
+ header?: never;
1320
+ path?: never;
1321
+ cookie?: never;
1322
+ };
1323
+ requestBody: {
1324
+ content: {
1325
+ "application/json": components["schemas"]["EventPnlPayload"];
1326
+ };
1327
+ };
1328
+ responses: {
1329
+ /** @description Webhook delivery acknowledged */
1330
+ 200: {
1331
+ headers: {
1332
+ [name: string]: unknown;
1333
+ };
1334
+ content?: never;
1335
+ };
1336
+ /** @description Server error (will retry) */
1337
+ 500: {
1338
+ headers: {
1339
+ [name: string]: unknown;
1340
+ };
1341
+ content?: never;
1342
+ };
1343
+ };
1344
+ };
1345
+ "market-metrics": {
1346
+ parameters: {
1347
+ query?: never;
1348
+ header?: never;
1349
+ path?: never;
1350
+ cookie?: never;
1351
+ };
1352
+ requestBody: {
1353
+ content: {
1354
+ "application/json": components["schemas"]["ConditionMetricsPayload"];
1355
+ };
1356
+ };
1357
+ responses: {
1358
+ /** @description Webhook delivery acknowledged */
1359
+ 200: {
1360
+ headers: {
1361
+ [name: string]: unknown;
1362
+ };
1363
+ content?: never;
1364
+ };
1365
+ /** @description Server error (will retry) */
1366
+ 500: {
1367
+ headers: {
1368
+ [name: string]: unknown;
1369
+ };
1370
+ content?: never;
1371
+ };
1372
+ };
1373
+ };
1374
+ "event-metrics": {
1375
+ parameters: {
1376
+ query?: never;
1377
+ header?: never;
1378
+ path?: never;
1379
+ cookie?: never;
1380
+ };
1381
+ requestBody: {
1382
+ content: {
1383
+ "application/json": components["schemas"]["EventMetricsPayload"];
1384
+ };
1385
+ };
1386
+ responses: {
1387
+ /** @description Webhook delivery acknowledged */
1388
+ 200: {
1389
+ headers: {
1390
+ [name: string]: unknown;
1391
+ };
1392
+ content?: never;
1393
+ };
1394
+ /** @description Server error (will retry) */
1395
+ 500: {
1396
+ headers: {
1397
+ [name: string]: unknown;
1398
+ };
1399
+ content?: never;
1400
+ };
1401
+ };
1402
+ };
1403
+ "position-metrics": {
1404
+ parameters: {
1405
+ query?: never;
1406
+ header?: never;
1407
+ path?: never;
1408
+ cookie?: never;
1409
+ };
1410
+ requestBody: {
1411
+ content: {
1412
+ "application/json": components["schemas"]["PositionMetricsPayload"];
1413
+ };
1414
+ };
1415
+ responses: {
1416
+ /** @description Webhook delivery acknowledged */
1417
+ 200: {
1418
+ headers: {
1419
+ [name: string]: unknown;
1420
+ };
1421
+ content?: never;
1422
+ };
1423
+ /** @description Server error (will retry) */
1424
+ 500: {
1425
+ headers: {
1426
+ [name: string]: unknown;
1427
+ };
1428
+ content?: never;
1429
+ };
1430
+ };
1431
+ };
1432
+ "market-volume-milestone": {
1433
+ parameters: {
1434
+ query?: never;
1435
+ header?: never;
1436
+ path?: never;
1437
+ cookie?: never;
1438
+ };
1439
+ requestBody: {
1440
+ content: {
1441
+ "application/json": components["schemas"]["VolumeMilestonePayload"];
1442
+ };
1443
+ };
1444
+ responses: {
1445
+ /** @description Webhook delivery acknowledged */
1446
+ 200: {
1447
+ headers: {
1448
+ [name: string]: unknown;
1449
+ };
1450
+ content?: never;
1451
+ };
1452
+ /** @description Server error (will retry) */
1453
+ 500: {
1454
+ headers: {
1455
+ [name: string]: unknown;
1456
+ };
1457
+ content?: never;
1458
+ };
1459
+ };
1460
+ };
1461
+ "event-volume-milestone": {
1462
+ parameters: {
1463
+ query?: never;
1464
+ header?: never;
1465
+ path?: never;
1466
+ cookie?: never;
1467
+ };
1468
+ requestBody: {
1469
+ content: {
1470
+ "application/json": components["schemas"]["EventVolumeMilestonePayload"];
1471
+ };
1472
+ };
1473
+ responses: {
1474
+ /** @description Webhook delivery acknowledged */
1475
+ 200: {
1476
+ headers: {
1477
+ [name: string]: unknown;
1478
+ };
1479
+ content?: never;
1480
+ };
1481
+ /** @description Server error (will retry) */
1482
+ 500: {
1483
+ headers: {
1484
+ [name: string]: unknown;
1485
+ };
1486
+ content?: never;
1487
+ };
1488
+ };
1489
+ };
1490
+ "position-volume-milestone": {
1491
+ parameters: {
1492
+ query?: never;
1493
+ header?: never;
1494
+ path?: never;
1495
+ cookie?: never;
1496
+ };
1497
+ requestBody: {
1498
+ content: {
1499
+ "application/json": components["schemas"]["PositionVolumeMilestonePayload"];
1500
+ };
1501
+ };
1502
+ responses: {
1503
+ /** @description Webhook delivery acknowledged */
1504
+ 200: {
1505
+ headers: {
1506
+ [name: string]: unknown;
1507
+ };
1508
+ content?: never;
1509
+ };
1510
+ /** @description Server error (will retry) */
1511
+ 500: {
1512
+ headers: {
1513
+ [name: string]: unknown;
1514
+ };
1515
+ content?: never;
1516
+ };
1517
+ };
1518
+ };
1519
+ "probability-spike": {
1520
+ parameters: {
1521
+ query?: never;
1522
+ header?: never;
1523
+ path?: never;
1524
+ cookie?: never;
1525
+ };
1526
+ requestBody: {
1527
+ content: {
1528
+ "application/json": components["schemas"]["ProbabilitySpikePayload"];
1529
+ };
1530
+ };
1531
+ responses: {
1532
+ /** @description Webhook delivery acknowledged */
1533
+ 200: {
1534
+ headers: {
1535
+ [name: string]: unknown;
1536
+ };
1537
+ content?: never;
1538
+ };
1539
+ /** @description Server error (will retry) */
1540
+ 500: {
1541
+ headers: {
1542
+ [name: string]: unknown;
1543
+ };
1544
+ content?: never;
1545
+ };
1546
+ };
1547
+ };
1548
+ }