polymarket-apis 0.3.1__py3-none-any.whl → 0.3.3__py3-none-any.whl

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.

Potentially problematic release.


This version of polymarket-apis might be problematic. Click here for more details.

@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from datetime import datetime
4
- from typing import Optional
4
+ from typing import Literal, Optional
5
5
 
6
6
  from pydantic import (
7
7
  BaseModel,
8
+ ConfigDict,
8
9
  Field,
9
10
  Json,
10
11
  ValidationInfo,
@@ -12,169 +13,190 @@ from pydantic import (
12
13
  field_validator,
13
14
  )
14
15
 
15
- from .common import EthAddress, Keccak256, TimestampWithTZ
16
+ from .common import EthAddress, FlexibleDatetime, Keccak256
16
17
 
17
18
 
18
- class Event(BaseModel):
19
- # Identifiers
20
- id: str
21
- slug: str
22
- ticker: Optional[str] = None
23
-
24
- # Core event information
25
- title: str
26
- description: Optional[str] = None
27
- resolution_source: Optional[str] = Field(None, alias="resolutionSource")
28
- category: Optional[str] = None
29
-
30
- # Media URLs
31
- image: Optional[str] = None
32
- icon: Optional[str] = None
33
-
34
- # Datetime
35
- start_date: Optional[datetime] = Field(None, alias="startDate")
36
- end_date: Optional[datetime] = Field(None, alias="endDate")
37
- creation_date: Optional[datetime] = Field(None, alias="creationDate")
38
- created_at: Optional[datetime] = Field(alias="createdAt")
39
- updated_at: Optional[datetime] = Field(None, alias="updatedAt")
40
- published_at: Optional[datetime] = Field(None, alias="publishedAt")
41
- closed_time: Optional[datetime] = Field(None, alias="closedTime")
42
-
43
- # Status flags
44
- active: bool
45
- closed: bool
46
- archived: Optional[bool] = None
47
- new: Optional[bool] = None
48
- featured: Optional[bool] = None
49
- restricted: Optional[bool] = None
50
- cyom: bool
51
- automatically_active: Optional[bool] = Field(None, alias="automaticallyActive")
19
+ class OptimizedImage(BaseModel):
20
+ """Optimized image data."""
52
21
 
53
- # Financial metrics
54
- liquidity: Optional[float] = None
55
- volume: Optional[float] = None
56
- open_interest: Optional[int] = Field(None, alias="openInterest")
57
- competitive: Optional[float] = None
58
- volume_24hr: Optional[float] = Field(None, alias="volume24hr")
59
- liquidity_amm: Optional[float] = Field(None, alias="liquidityAmm")
60
- liquidity_clob: Optional[float] = Field(None, alias="liquidityClob")
61
-
62
- # Related data
63
- markets: Optional[list[GammaMarket]] = None
64
- series: Optional[list[Series]] = None
65
- tags: Optional[list[Tag]] = None
66
-
67
- # User interaction
68
- comment_count: Optional[int] = Field(None, alias="commentCount")
22
+ model_config = ConfigDict(populate_by_name=True)
69
23
 
70
- # Display and functionality settings
71
- sort_by: Optional[str] = Field(None, alias="sortBy")
72
- show_all_outcomes: bool = Field(alias="showAllOutcomes")
73
- show_market_images: bool = Field(alias="showMarketImages")
74
- gmp_chart_mode: Optional[str] = Field(None, alias="gmpChartMode")
24
+ id: Optional[str] = Field(None, alias="id")
25
+ image_url_source: Optional[str] = Field(None, alias="imageUrlSource")
26
+ image_url_optimized: Optional[str] = Field(None, alias="imageUrlOptimized")
27
+ image_size_kb_source: Optional[int] = Field(None, alias="imageSizeKbSource")
28
+ image_size_kb_optimized: Optional[int] = Field(None, alias="imageSizeKbOptimized")
29
+ image_optimized_complete: Optional[bool] = Field(
30
+ None, alias="imageOptimizedComplete"
31
+ )
32
+ image_optimized_last_updated: Optional[str] = Field(
33
+ None, alias="imageOptimizedLastUpdated"
34
+ )
35
+ rel_id: Optional[int] = Field(None, alias="relID")
36
+ field: Optional[str] = Field(None, alias="field")
37
+ relname: Optional[str] = Field(None, alias="relname")
75
38
 
76
- # Negative risk settings
77
- enable_neg_risk: bool = Field(alias="enableNegRisk")
78
- neg_risk: Optional[bool] = Field(None, alias="negRisk")
79
- neg_risk_market_id: Optional[str] = Field(None, alias="negRiskMarketID")
80
- neg_risk_augmented: Optional[bool] = Field(None, alias="negRiskAugmented")
81
39
 
82
- # Order book settings
83
- enable_order_book: Optional[bool] = Field(None, alias="enableOrderBook")
40
+ class GammaMarket(BaseModel):
41
+ """Market model."""
84
42
 
43
+ model_config = ConfigDict(populate_by_name=True)
85
44
 
86
- class GammaMarket(BaseModel):
87
- # Identifiers
88
- id: str
89
- slug: str
90
- condition_id: Keccak256 = Field(alias="conditionId")
45
+ id: Optional[str] = Field(None, alias="id")
46
+ condition_id: Optional[Keccak256] = Field(None, alias="conditionId")
91
47
  question_id: Optional[Keccak256] = Field(None, alias="questionID")
92
-
93
- # Core market information
94
- question: str
95
- description: str
48
+ slug: Optional[str] = Field(None, alias="slug")
49
+ question: Optional[str] = Field(None, alias="question")
50
+ twitter_card_image: Optional[str] = Field(None, alias="twitterCardImage")
96
51
  resolution_source: Optional[str] = Field(None, alias="resolutionSource")
97
- outcome: Optional[list] = None
52
+ end_date: Optional[datetime] = Field(None, alias="endDate")
53
+ category: Optional[str] = Field(None, alias="category")
54
+ amm_type: Optional[str] = Field(None, alias="ammType")
55
+ liquidity: Optional[float] = Field(None, alias="liquidity")
56
+ sponsor_name: Optional[str] = Field(None, alias="sponsorName")
57
+ sponsor_image: Optional[str] = Field(None, alias="sponsorImage")
58
+ start_date: Optional[datetime] = Field(None, alias="startDate")
59
+ x_axis_value: Optional[str] = Field(None, alias="xAxisValue")
60
+ y_axis_value: Optional[str] = Field(None, alias="yAxisValue")
61
+ denomination_token: Optional[str] = Field(None, alias="denominationToken")
62
+ fee: Optional[str] = Field(None, alias="fee")
63
+ image: Optional[str] = Field(None, alias="image")
64
+ icon: Optional[str] = Field(None, alias="icon")
65
+ lower_bound: Optional[str] = Field(None, alias="lowerBound")
66
+ upper_bound: Optional[str] = Field(None, alias="upperBound")
67
+ description: Optional[str] = Field(None, alias="description")
68
+ outcomes: Optional[str] = Field(None, alias="outcomes")
98
69
  outcome_prices: Optional[Json[list[float]] | list[float]] = Field(
99
70
  None, alias="outcomePrices"
100
71
  )
101
-
102
- # Media URLs
103
- image: Optional[str] = None
104
- icon: Optional[str] = None
105
-
106
- # Datetime
107
- start_date: Optional[datetime] = Field(None, alias="startDate")
108
- end_date: Optional[datetime] = Field(None, alias="endDate")
109
- created_at: datetime = Field(alias="createdAt")
72
+ volume: Optional[str] = Field(None, alias="volume")
73
+ active: Optional[bool] = Field(None, alias="active")
74
+ market_type: Optional[str] = Field(None, alias="marketType")
75
+ format_type: Optional[str] = Field(None, alias="formatType")
76
+ lower_bound_date: Optional[datetime] = Field(None, alias="lowerBoundDate")
77
+ upper_bound_date: Optional[datetime] = Field(None, alias="upperBoundDate")
78
+ closed: Optional[bool] = Field(None, alias="closed")
79
+ market_maker_address: Optional[str] = Field(None, alias="marketMakerAddress")
80
+ created_by: Optional[int] = Field(None, alias="createdBy")
81
+ updated_by: Optional[int] = Field(None, alias="updatedBy")
82
+ created_at: Optional[datetime] = Field(None, alias="createdAt")
110
83
  updated_at: Optional[datetime] = Field(None, alias="updatedAt")
111
- start_date_iso: Optional[datetime] = Field(None, alias="startDateIso")
112
- end_date_iso: Optional[datetime] = Field(None, alias="endDateIso")
113
- deployed_timestamp: Optional[datetime] = Field(None, alias="deployedTimestamp")
114
- accepting_orders_timestamp: Optional[datetime] = Field(
115
- None, alias="acceptingOrdersTimestamp"
84
+ closed_time: Optional[str] = Field(None, alias="closedTime")
85
+ wide_format: Optional[bool] = Field(None, alias="wideFormat")
86
+ new: Optional[bool] = Field(None, alias="new")
87
+ mailchimp_tag: Optional[str] = Field(None, alias="mailchimpTag")
88
+ featured: Optional[bool] = Field(None, alias="featured")
89
+ archived: Optional[bool] = Field(None, alias="archived")
90
+ resolved_by: Optional[EthAddress] = Field(None, alias="resolvedBy")
91
+ restricted: Optional[bool] = Field(None, alias="restricted")
92
+ market_group: Optional[int] = Field(None, alias="marketGroup")
93
+ group_item_title: Optional[str] = Field(None, alias="groupItemTitle")
94
+ group_item_threshold: Optional[str] = Field(None, alias="groupItemThreshold")
95
+ uma_end_date: Optional[FlexibleDatetime] = Field(None, alias="umaEndDate")
96
+ enable_order_book: Optional[bool] = Field(None, alias="enableOrderBook")
97
+ order_price_min_tick_size: Optional[float] = Field(
98
+ None, alias="orderPriceMinTickSize"
116
99
  )
117
-
118
- # Status flags
119
- active: bool
120
- closed: bool
121
- archived: bool
122
- new: Optional[bool] = None
123
- featured: Optional[bool] = None
124
- restricted: bool
125
- ready: bool
126
- deployed: Optional[bool] = None
127
- funded: bool
128
- cyom: bool
129
- approved: bool
130
-
131
- # Financial metrics
132
- liquidity: Optional[float] = None
133
- volume: Optional[float] = None
100
+ order_min_size: Optional[float] = Field(None, alias="orderMinSize")
101
+ uma_resolution_status: Optional[str] = Field(None, alias="umaResolutionStatus")
102
+ curation_order: Optional[int] = Field(None, alias="curationOrder")
134
103
  volume_num: Optional[float] = Field(None, alias="volumeNum")
135
104
  liquidity_num: Optional[float] = Field(None, alias="liquidityNum")
105
+ end_date_iso: Optional[datetime] = Field(None, alias="endDateIso")
106
+ start_date_iso: Optional[datetime] = Field(None, alias="startDateIso")
107
+ uma_end_date_iso: Optional[datetime] = Field(None, alias="umaEndDateIso")
108
+ has_reviewed_dates: Optional[bool] = Field(None, alias="hasReviewedDates")
109
+ ready_for_cron: Optional[bool] = Field(None, alias="readyForCron")
110
+ comments_enabled: Optional[bool] = Field(None, alias="commentsEnabled")
136
111
  volume_24hr: Optional[float] = Field(None, alias="volume24hr")
112
+ volume_1wk: Optional[float] = Field(None, alias="volume1wk")
113
+ volume_1mo: Optional[float] = Field(None, alias="volume1mo")
114
+ volume_1yr: Optional[float] = Field(None, alias="volume1yr")
115
+ game_start_time: Optional[str] = Field(None, alias="gameStartTime")
116
+ seconds_delay: Optional[int] = Field(None, alias="secondsDelay")
117
+ token_ids: Optional[Json[list[str]] | list[str]] = Field(None, alias="clobTokenIds")
118
+ disqus_thread: Optional[str] = Field(None, alias="disqusThread")
119
+ short_outcomes: Optional[str] = Field(None, alias="shortOutcomes")
120
+ team_a_id: Optional[str] = Field(None, alias="teamAID")
121
+ team_b_id: Optional[str] = Field(None, alias="teamBID")
122
+ uma_bond: Optional[str] = Field(None, alias="umaBond")
123
+ uma_reward: Optional[str] = Field(None, alias="umaReward")
124
+ fpmm_live: Optional[bool] = Field(None, alias="fpmmLive")
125
+ volume_24hr_amm: Optional[float] = Field(None, alias="volume24hrAmm")
126
+ volume_1wk_amm: Optional[float] = Field(None, alias="volume1wkAmm")
127
+ volume_1mo_amm: Optional[float] = Field(None, alias="volume1moAmm")
128
+ volume_1yr_amm: Optional[float] = Field(None, alias="volume1yrAmm")
137
129
  volume_24hr_clob: Optional[float] = Field(None, alias="volume24hrClob")
130
+ volume_1wk_clob: Optional[float] = Field(None, alias="volume1wkClob")
131
+ volume_1mo_clob: Optional[float] = Field(None, alias="volume1moClob")
132
+ volume_1yr_clob: Optional[float] = Field(None, alias="volume1yrClob")
133
+ volume_amm: Optional[float] = Field(None, alias="volumeAmm")
138
134
  volume_clob: Optional[float] = Field(None, alias="volumeClob")
135
+ liquidity_amm: Optional[float] = Field(None, alias="liquidityAmm")
139
136
  liquidity_clob: Optional[float] = Field(None, alias="liquidityClob")
140
- competitive: Optional[float] = None
141
- spread: float
142
-
143
- # Order book settings
144
- enable_order_book: Optional[bool] = Field(None, alias="enableOrderBook")
145
- order_price_min_tick_size: Optional[float] = Field(
146
- None,
147
- alias="orderPriceMinTickSize",
148
- )
149
- order_min_size: Optional[float] = Field(None, alias="orderMinSize")
137
+ maker_base_fee: Optional[int] = Field(None, alias="makerBaseFee")
138
+ taker_base_fee: Optional[int] = Field(None, alias="takerBaseFee")
139
+ custom_liveness: Optional[int] = Field(None, alias="customLiveness")
150
140
  accepting_orders: Optional[bool] = Field(None, alias="acceptingOrders")
151
-
152
- # Related data
141
+ notifications_enabled: Optional[bool] = Field(None, alias="notificationsEnabled")
142
+ score: Optional[int] = Field(None, alias="score")
143
+ image_optimized: Optional[OptimizedImage] = Field(None, alias="imageOptimized")
144
+ icon_optimized: Optional[OptimizedImage] = Field(None, alias="iconOptimized")
153
145
  events: Optional[list[Event]] = None
146
+ categories: Optional[list[Category]] = Field(None, alias="categories")
147
+ tags: Optional[list[Tag]] = Field(None, alias="tags")
148
+ creator: Optional[str] = Field(None, alias="creator")
149
+ ready: Optional[bool] = Field(None, alias="ready")
150
+ funded: Optional[bool] = Field(None, alias="funded")
151
+ past_slugs: Optional[str] = Field(None, alias="pastSlugs")
152
+ ready_timestamp: Optional[datetime] = Field(None, alias="readyTimestamp")
153
+ funded_timestamp: Optional[datetime] = Field(None, alias="fundedTimestamp")
154
+ accepting_orders_timestamp: Optional[datetime] = Field(
155
+ None, alias="acceptingOrdersTimestamp"
156
+ )
157
+ competitive: Optional[float] = Field(None, alias="competitive")
158
+ rewards_min_size: Optional[float] = Field(None, alias="rewardsMinSize")
159
+ rewards_max_spread: Optional[float] = Field(None, alias="rewardsMaxSpread")
160
+ spread: Optional[float] = Field(None, alias="spread")
161
+ automatically_resolved: Optional[bool] = Field(None, alias="automaticallyResolved")
162
+ one_day_price_change: Optional[float] = Field(None, alias="oneDayPriceChange")
163
+ one_hour_price_change: Optional[float] = Field(None, alias="oneHourPriceChange")
164
+ one_week_price_change: Optional[float] = Field(None, alias="oneWeekPriceChange")
165
+ one_month_price_change: Optional[float] = Field(None, alias="oneMonthPriceChange")
166
+ one_year_price_change: Optional[float] = Field(None, alias="oneYearPriceChange")
167
+ last_trade_price: Optional[float] = Field(None, alias="lastTradePrice")
168
+ best_bid: Optional[float] = Field(None, alias="bestBid")
169
+ best_ask: Optional[float] = Field(None, alias="bestAsk")
170
+ automatically_active: Optional[bool] = Field(None, alias="automaticallyActive")
171
+ clear_book_on_start: Optional[bool] = Field(None, alias="clearBookOnStart")
172
+ chart_color: Optional[str] = Field(None, alias="chartColor")
173
+ series_color: Optional[str] = Field(None, alias="seriesColor")
174
+ show_gmp_series: Optional[bool] = Field(None, alias="showGmpSeries")
175
+ show_gmp_outcome: Optional[bool] = Field(None, alias="showGmpOutcome")
176
+ manual_activation: Optional[bool] = Field(None, alias="manualActivation")
177
+ neg_risk_other: Optional[bool] = Field(None, alias="negRiskOther")
178
+ game_id: Optional[str] = Field(None, alias="gameId")
179
+ group_item_range: Optional[str] = Field(None, alias="groupItemRange")
180
+ sports_market_type: Optional[str] = Field(None, alias="sportsMarketType")
181
+ line: Optional[float] = Field(None, alias="line")
182
+ uma_resolution_statuses: Optional[str] = Field(None, alias="umaResolutionStatuses")
183
+ pending_deployment: Optional[bool] = Field(None, alias="pendingDeployment")
184
+ deploying: Optional[bool] = Field(None, alias="deploying")
185
+ deploying_timestamp: Optional[datetime] = Field(None, alias="deployingTimestamp")
186
+ scheduled_deployment_timestamp: Optional[datetime] = Field(
187
+ None, alias="scheduledDeploymentTimestamp"
188
+ )
189
+ rfq_enabled: Optional[bool] = Field(None, alias="rfqEnabled")
190
+ event_start_time: Optional[datetime] = Field(None, alias="eventStartTime")
154
191
  clob_rewards: Optional[list[ClobReward]] = Field(None, alias="clobRewards")
155
-
156
- # User interaction
157
- comment_count: Optional[int] = Field(None, alias="commentCount")
158
-
159
- # Market maker information
160
- market_maker_address: str = Field(alias="marketMakerAddress")
161
-
162
- # Additional settings
163
- group_item_title: Optional[str] = Field(None, alias="groupItemTitle")
164
- group_item_threshold: Optional[int] = Field(None, alias="groupItemThreshold")
165
- token_ids: Optional[Json[list[str]] | list[str]] = Field(None, alias="clobTokenIds")
166
- uma_bond: Optional[int] = Field(None, alias="umaBond")
167
- uma_reward: Optional[float] = Field(None, alias="umaReward")
168
- neg_risk: Optional[bool] = Field(None, alias="negRisk")
169
- pager_duty_notification_enabled: bool = Field(alias="pagerDutyNotificationEnabled")
170
- review_status: Optional[str] = Field(None, alias="reviewStatus")
171
- rewards_min_size: int = Field(alias="rewardsMinSize")
172
- rewards_max_spread: float = Field(alias="rewardsMaxSpread")
173
-
174
- # Resolution information
175
192
  submitted_by: Optional[str] = None
176
- resolved_by: Optional[EthAddress] = Field(None, alias="resolvedBy")
177
- has_reviewed_dates: Optional[bool] = Field(None, alias="hasReviewedDates")
193
+ approved: Optional[bool] = None
194
+ pager_duty_notification_enabled: Optional[bool] = Field(
195
+ None, alias="pagerDutyNotificationEnabled"
196
+ )
197
+ holding_rewards_enabled: Optional[bool] = Field(None, alias="holdingRewardsEnabled")
198
+ fees_enabled: Optional[bool] = Field(None, alias="feesEnabled")
199
+ cyom: Optional[bool] = Field(None, alias="cyom")
178
200
 
179
201
  @field_validator("condition_id", mode="wrap")
180
202
  @classmethod
@@ -198,148 +220,390 @@ class GammaMarket(BaseModel):
198
220
  raise
199
221
 
200
222
 
201
- class ClobReward(BaseModel):
202
- # Identifiers
203
- id: str
204
- condition_id: Keccak256 = Field(alias="conditionId")
223
+ class Series(BaseModel):
224
+ """Series model."""
205
225
 
206
- # Reward information
207
- asset_address: str = Field(alias="assetAddress")
208
- rewards_amount: float = Field(alias="rewardsAmount")
209
- rewards_daily_rate: Optional[float] = Field(None, alias="rewardsDailyRate")
226
+ model_config = ConfigDict(populate_by_name=True)
227
+
228
+ id: Optional[str] = Field(None, alias="id")
229
+ ticker: Optional[str] = Field(None, alias="ticker")
230
+ slug: Optional[str] = Field(None, alias="slug")
231
+ title: Optional[str] = Field(None, alias="title")
232
+ subtitle: Optional[str] = Field(None, alias="subtitle")
233
+ series_type: Optional[str] = Field(None, alias="seriesType")
234
+ recurrence: Optional[str] = Field(None, alias="recurrence")
235
+ description: Optional[str] = Field(None, alias="description")
236
+ image: Optional[str] = Field(None, alias="image")
237
+ icon: Optional[str] = Field(None, alias="icon")
238
+ layout: Optional[str] = Field(None, alias="layout")
239
+ active: Optional[bool] = Field(None, alias="active")
240
+ closed: Optional[bool] = Field(None, alias="closed")
241
+ archived: Optional[bool] = Field(None, alias="archived")
242
+ new: Optional[bool] = Field(None, alias="new")
243
+ featured: Optional[bool] = Field(None, alias="featured")
244
+ restricted: Optional[bool] = Field(None, alias="restricted")
245
+ is_template: Optional[bool] = Field(None, alias="isTemplate")
246
+ template_variables: Optional[bool] = Field(None, alias="templateVariables")
247
+ published_at: Optional[FlexibleDatetime] = Field(None, alias="publishedAt")
248
+ created_by: Optional[str] = Field(None, alias="createdBy")
249
+ updated_by: Optional[str] = Field(None, alias="updatedBy")
250
+ created_at: Optional[datetime] = Field(None, alias="createdAt")
251
+ updated_at: Optional[datetime] = Field(None, alias="updatedAt")
252
+ comments_enabled: Optional[bool] = Field(None, alias="commentsEnabled")
253
+ competitive: Optional[str] = Field(None, alias="competitive")
254
+ volume_24hr: Optional[float] = Field(None, alias="volume24hr")
255
+ volume: Optional[float] = Field(None, alias="volume")
256
+ liquidity: Optional[float] = Field(None, alias="liquidity")
257
+ start_date: Optional[datetime] = Field(None, alias="startDate")
258
+ pyth_token_id: Optional[str] = Field(None, alias="pythTokenID")
259
+ cg_asset_name: Optional[str] = Field(None, alias="cgAssetName")
260
+ score: Optional[int] = Field(None, alias="score")
261
+ events: Optional[list[Event]] = Field(None, alias="events")
262
+ collections: Optional[list[Collection]] = Field(None, alias="collections")
263
+ categories: Optional[list[Category]] = Field(None, alias="categories")
264
+ tags: Optional[list[Tag]] = Field(None, alias="tags")
265
+ comment_count: Optional[int] = Field(None, alias="commentCount")
266
+ chats: Optional[list[Chat]] = Field(None, alias="chats")
210
267
 
211
- # Datetime
212
- start_date: datetime = Field(alias="startDate")
213
- end_date: datetime = Field(alias="endDate")
268
+
269
+ class Category(BaseModel):
270
+ """Category model."""
271
+
272
+ model_config = ConfigDict(populate_by_name=True)
273
+
274
+ id: Optional[str] = Field(None, alias="id")
275
+ label: Optional[str] = Field(None, alias="label")
276
+ parent_category: Optional[str] = Field(None, alias="parentCategory")
277
+ slug: Optional[str] = Field(None, alias="slug")
278
+ published_at: Optional[str] = Field(None, alias="publishedAt")
279
+ created_by: Optional[str] = Field(None, alias="createdBy")
280
+ updated_by: Optional[str] = Field(None, alias="updatedBy")
281
+ created_at: Optional[datetime] = Field(None, alias="createdAt")
282
+ updated_at: Optional[datetime] = Field(None, alias="updatedAt")
214
283
 
215
284
 
216
285
  class Tag(BaseModel):
217
- # Identifiers
218
- id: str
219
- label: str
220
- slug: str
286
+ """Tag model."""
287
+
288
+ model_config = ConfigDict(populate_by_name=True)
221
289
 
222
- # Display settings
290
+ id: Optional[str] = Field(None, alias="id")
291
+ label: Optional[str] = Field(None, alias="label")
292
+ slug: Optional[str] = Field(None, alias="slug")
223
293
  force_show: Optional[bool] = Field(None, alias="forceShow")
294
+ published_at: Optional[str] = Field(None, alias="publishedAt")
295
+ created_by: Optional[int] = Field(None, alias="createdBy")
296
+ updated_by: Optional[int] = Field(None, alias="updatedBy")
297
+ created_at: Optional[datetime] = Field(None, alias="createdAt")
298
+ updated_at: Optional[datetime] = Field(None, alias="updatedAt")
224
299
  force_hide: Optional[bool] = Field(None, alias="forceHide")
225
-
226
- # Datetime
227
- published_at: Optional[TimestampWithTZ | datetime] = Field(
228
- None, alias="publishedAt"
300
+ is_carousel: Optional[bool] = Field(None, alias="isCarousel")
301
+
302
+
303
+ class TagRelation(BaseModel):
304
+ """Tag relation model."""
305
+
306
+ model_config = ConfigDict(populate_by_name=True)
307
+
308
+ id: int = Field(alias="id")
309
+ tag_id: int = Field(alias="tagID")
310
+ related_tag_id: int = Field(alias="relatedTagID")
311
+ rank: int
312
+
313
+
314
+ class Chat(BaseModel):
315
+ """Chat model."""
316
+
317
+ model_config = ConfigDict(populate_by_name=True)
318
+
319
+ id: Optional[str] = Field(None, alias="id")
320
+ channel_id: Optional[str] = Field(None, alias="channelId")
321
+ channel_name: Optional[str] = Field(None, alias="channelName")
322
+ channel_image: Optional[str] = Field(None, alias="channelImage")
323
+ live: Optional[bool] = Field(None, alias="live")
324
+ start_time: Optional[datetime] = Field(None, alias="startTime")
325
+ end_time: Optional[datetime] = Field(None, alias="endTime")
326
+
327
+
328
+ class Collection(BaseModel):
329
+ """Collection model."""
330
+
331
+ model_config = ConfigDict(populate_by_name=True)
332
+
333
+ id: Optional[str] = Field(None, alias="id")
334
+ ticker: Optional[str] = Field(None, alias="ticker")
335
+ slug: Optional[str] = Field(None, alias="slug")
336
+ title: Optional[str] = Field(None, alias="title")
337
+ subtitle: Optional[str] = Field(None, alias="subtitle")
338
+ collection_type: Optional[str] = Field(None, alias="collectionType")
339
+ description: Optional[str] = Field(None, alias="description")
340
+ tags: Optional[str] = Field(None, alias="tags")
341
+ image: Optional[str] = Field(None, alias="image")
342
+ icon: Optional[str] = Field(None, alias="icon")
343
+ header_image: Optional[str] = Field(None, alias="headerImage")
344
+ layout: Optional[str] = Field(None, alias="layout")
345
+ active: Optional[bool] = Field(None, alias="active")
346
+ closed: Optional[bool] = Field(None, alias="closed")
347
+ archived: Optional[bool] = Field(None, alias="archived")
348
+ new: Optional[bool] = Field(None, alias="new")
349
+ featured: Optional[bool] = Field(None, alias="featured")
350
+ restricted: Optional[bool] = Field(None, alias="restricted")
351
+ is_template: Optional[bool] = Field(None, alias="isTemplate")
352
+ template_variables: Optional[str] = Field(None, alias="templateVariables")
353
+ published_at: Optional[str] = Field(None, alias="publishedAt")
354
+ created_by: Optional[str] = Field(None, alias="createdBy")
355
+ updated_by: Optional[str] = Field(None, alias="updatedBy")
356
+ created_at: Optional[datetime] = Field(None, alias="createdAt")
357
+ updated_at: Optional[datetime] = Field(None, alias="updatedAt")
358
+ comments_enabled: Optional[bool] = Field(None, alias="commentsEnabled")
359
+ image_optimized: Optional[OptimizedImage] = Field(None, alias="imageOptimized")
360
+ icon_optimized: Optional[OptimizedImage] = Field(None, alias="iconOptimized")
361
+ header_image_optimized: Optional[OptimizedImage] = Field(
362
+ None, alias="headerImageOptimized"
229
363
  )
364
+
365
+
366
+ class Creator(BaseModel):
367
+ """Event Creator model."""
368
+
369
+ model_config = ConfigDict(populate_by_name=True)
370
+
371
+ id: Optional[str] = Field(None, alias="id")
372
+ creator_name: Optional[str] = Field(None, alias="creatorName")
373
+ creator_handle: Optional[str] = Field(None, alias="creatorHandle")
374
+ creator_url: Optional[str] = Field(None, alias="creatorUrl")
375
+ creator_image: Optional[str] = Field(None, alias="creatorImage")
230
376
  created_at: Optional[datetime] = Field(None, alias="createdAt")
231
377
  updated_at: Optional[datetime] = Field(None, alias="updatedAt")
232
378
 
233
- # User information
234
- created_by: Optional[int] = Field(None, alias="createdBy")
235
- updated_by: Optional[int] = Field(None, alias="updatedBy")
236
379
 
380
+ class Template(BaseModel):
381
+ """Template model."""
237
382
 
238
- class Series(BaseModel):
239
- # Identifiers
240
- id: str
241
- slug: str
242
- ticker: str
243
- title: str
383
+ model_config = ConfigDict(populate_by_name=True)
244
384
 
245
- # Series characteristics
246
- series_type: Optional[str] = Field(None, alias="seriesType")
247
- recurrence: Optional[str] = None
248
- layout: Optional[str] = None
385
+ id: Optional[str] = Field(None, alias="id")
386
+ event_title: Optional[str] = Field(None, alias="eventTitle")
387
+ event_slug: Optional[str] = Field(None, alias="eventSlug")
388
+ event_image: Optional[str] = Field(None, alias="eventImage")
389
+ market_title: Optional[str] = Field(None, alias="marketTitle")
390
+ description: Optional[str] = Field(None, alias="description")
391
+ resolution_source: Optional[str] = Field(None, alias="resolutionSource")
392
+ neg_risk: Optional[bool] = Field(None, alias="negRisk")
393
+ sort_by: Optional[str] = Field(None, alias="sortBy")
394
+ show_market_images: Optional[bool] = Field(None, alias="showMarketImages")
395
+ series_slug: Optional[str] = Field(None, alias="seriesSlug")
396
+ outcomes: Optional[str] = Field(None, alias="outcomes")
249
397
 
250
- # Media URLs
251
- icon: Optional[str] = None
252
- image: Optional[str] = None
253
398
 
254
- # Datetime
255
- start_date: Optional[datetime] = Field(None, alias="startDate")
256
- created_at: datetime = Field(alias="createdAt")
257
- updated_at: Optional[datetime] = Field(None, alias="updatedAt")
258
- published_at: Optional[TimestampWithTZ | datetime] = Field(
259
- None, alias="publishedAt"
260
- )
399
+ class ClobReward(BaseModel):
400
+ """Reward model."""
261
401
 
262
- # Status flags
263
- active: Optional[bool] = None
264
- archived: Optional[bool] = None
265
- closed: Optional[bool] = None
266
- featured: Optional[bool] = None
267
- new: Optional[bool] = None
268
- restricted: Optional[bool] = None
269
-
270
- # Financial metrics
271
- liquidity: Optional[float] = None
272
- volume: Optional[float] = None
273
- volume_24hr: Optional[float] = Field(None, alias="volume24hr")
274
- competitive: Optional[str] = None
402
+ model_config = ConfigDict(populate_by_name=True)
275
403
 
276
- # User interaction
277
- comment_count: int = Field(alias="commentCount")
278
- comments_enabled: Optional[bool] = Field(None, alias="commentsEnabled")
404
+ id: int
405
+ condition_id: Keccak256 = Field(alias="conditionId")
406
+ asset_address: str = Field(alias="assetAddress")
407
+ rewards_amount: float = Field(alias="rewardsAmount")
408
+ rewards_daily_rate: Optional[float] = Field(None, alias="rewardsDailyRate")
409
+ start_date: datetime = Field(alias="startDate")
410
+ end_date: datetime = Field(alias="endDate")
279
411
 
280
- # User information
281
- created_by: Optional[str] = Field(None, alias="createdBy")
282
- updated_by: Optional[str] = Field(None, alias="updatedBy")
283
412
 
413
+ class Team(BaseModel):
414
+ """Team model."""
284
415
 
285
- class QueryEvent(BaseModel):
286
- # Identifiers and description
287
- id: str
288
- ticker: Optional[str] = None
289
- slug: str
290
- title: str
291
- description: Optional[str] = None
416
+ model_config = ConfigDict(populate_by_name=True)
292
417
 
293
- # Datetime
294
- start_date: Optional[datetime] = Field(None, alias="startDate")
295
- creation_date: Optional[datetime] = Field(None, alias="creationDate")
296
- end_date: Optional[datetime] = Field(None, alias="endDate")
418
+ id: int
419
+ name: str
420
+ league: str
421
+ record: Optional[str] = None
422
+ logo: str
423
+ abbreviation: str
424
+ alias: Optional[str] = None
297
425
  created_at: datetime = Field(alias="createdAt")
298
426
  updated_at: Optional[datetime] = Field(None, alias="updatedAt")
299
427
 
300
- # Resolution info
301
- resolution_source: Optional[str] = Field(None, alias="resolutionSource")
302
428
 
303
- # Media URLs
429
+ class Sport(BaseModel):
430
+ """Sport model."""
431
+
432
+ model_config = ConfigDict(populate_by_name=True)
433
+
434
+ sport: str
304
435
  image: Optional[str] = None
305
- icon: Optional[str] = None
436
+ resolution: Optional[str] = None
437
+ ordering: Optional[Literal["home", "away"]] = None
438
+ tags: Optional[list[int]] = None
439
+ series: Optional[int] = None
306
440
 
307
- # Status flags
308
- active: bool
309
- closed: bool
310
- archived: Optional[bool] = None
311
- new: Optional[bool] = None
312
- featured: Optional[bool] = None
313
- restricted: Optional[bool] = None
314
- automatically_active: Optional[bool] = Field(None, alias="automaticallyActive")
315
- pending_deployment: Optional[bool] = Field(None, alias="pendingDeployment")
316
- deploying: Optional[bool] = None
441
+ @field_validator("tags", mode="before")
442
+ @classmethod
443
+ def split_string_to_int_list(cls, v):
444
+ if isinstance(v, str):
445
+ return [int(i) for i in v.split(",")]
446
+ return v
317
447
 
318
- # Financial metrics
319
- liquidity: Optional[float] = None
320
- liquidity_clob: Optional[float] = Field(None, alias="liquidityClob")
321
- volume: Optional[float] = None
448
+
449
+ class Event(BaseModel):
450
+ """Event model."""
451
+
452
+ model_config = ConfigDict(populate_by_name=True)
453
+
454
+ id: int = Field(alias="id")
455
+ ticker: Optional[str] = Field(None, alias="ticker")
456
+ slug: Optional[str] = Field(None, alias="slug")
457
+ title: Optional[str] = Field(None, alias="title")
458
+ subtitle: Optional[str] = Field(None, alias="subtitle")
459
+ description: Optional[str] = Field(None, alias="description")
460
+ resolution_source: Optional[str] = Field(None, alias="resolutionSource")
461
+ start_date: Optional[datetime] = Field(None, alias="startDate")
462
+ creation_date: Optional[datetime] = Field(None, alias="creationDate")
463
+ end_date: Optional[datetime] = Field(None, alias="endDate")
464
+ image: Optional[str] = Field(None, alias="image")
465
+ icon: Optional[str] = Field(None, alias="icon")
466
+ active: Optional[bool] = Field(None, alias="active")
467
+ closed: Optional[bool] = Field(None, alias="closed")
468
+ archived: Optional[bool] = Field(None, alias="archived")
469
+ new: Optional[bool] = Field(None, alias="new")
470
+ featured: Optional[bool] = Field(None, alias="featured")
471
+ restricted: Optional[bool] = Field(None, alias="restricted")
472
+ liquidity: Optional[float] = Field(None, alias="liquidity")
473
+ volume: Optional[float] = Field(None, alias="volume")
322
474
  open_interest: Optional[int] = Field(None, alias="openInterest")
323
- competitive: Optional[float] = None
475
+ sort_by: Optional[str] = Field(None, alias="sortBy")
476
+ category: Optional[str] = Field(None, alias="category")
477
+ subcategory: Optional[str] = Field(None, alias="subcategory")
478
+ is_template: Optional[bool] = Field(None, alias="isTemplate")
479
+ template_variables: Optional[str] = Field(None, alias="templateVariables")
480
+ published_at: Optional[FlexibleDatetime] = Field(None, alias="publishedAt")
481
+ created_by: Optional[str] = Field(None, alias="createdBy")
482
+ updated_by: Optional[str] = Field(None, alias="updatedBy")
483
+ created_at: Optional[datetime] = Field(None, alias="createdAt")
484
+ updated_at: Optional[datetime] = Field(None, alias="updatedAt")
485
+ comments_enabled: Optional[bool] = Field(None, alias="commentsEnabled")
486
+ competitive: Optional[float] = Field(None, alias="competitive")
324
487
  volume_24hr: Optional[float] = Field(None, alias="volume24hr")
325
488
  volume_1wk: Optional[float] = Field(None, alias="volume1wk")
326
489
  volume_1mo: Optional[float] = Field(None, alias="volume1mo")
327
490
  volume_1yr: Optional[float] = Field(None, alias="volume1yr")
328
-
329
- # User interaction metrics
491
+ featured_image: Optional[str] = Field(None, alias="featuredImage")
492
+ disqus_thread: Optional[str] = Field(None, alias="disqusThread")
493
+ parent_event: Optional[str] = Field(None, alias="parentEvent")
494
+ enable_order_book: Optional[bool] = Field(None, alias="enableOrderBook")
495
+ liquidity_amm: Optional[float] = Field(None, alias="liquidityAmm")
496
+ liquidity_clob: Optional[float] = Field(None, alias="liquidityClob")
497
+ neg_risk: Optional[bool] = Field(None, alias="negRisk")
498
+ neg_risk_augmented: Optional[bool] = Field(None, alias="negRiskAugmented")
499
+ neg_risk_market_id: Optional[str] = Field(None, alias="negRiskMarketID")
500
+ neg_risk_fee_bips: Optional[int] = Field(None, alias="negRiskFeeBips")
330
501
  comment_count: Optional[int] = Field(None, alias="commentCount")
502
+ image_optimized: Optional[OptimizedImage] = Field(None, alias="imageOptimized")
503
+ icon_optimized: Optional[OptimizedImage] = Field(None, alias="iconOptimized")
504
+ featured_image_optimized: Optional[OptimizedImage] = Field(
505
+ None, alias="featuredImageOptimized"
506
+ )
507
+ sub_events: Optional[list[str]] = Field(None, alias="subEvents")
508
+ markets: Optional[list[GammaMarket]] = Field(None, alias="markets")
509
+ series: Optional[list[Series]] = Field(None, alias="series")
510
+ categories: Optional[list[Category]] = Field(None, alias="categories")
511
+ collections: Optional[list[Collection]] = Field(None, alias="collections")
512
+ tags: Optional[list[Tag]] = Field(None, alias="tags")
513
+ cyom: Optional[bool] = Field(None, alias="cyom")
514
+ closed_time: Optional[datetime] = Field(None, alias="closedTime")
515
+ show_all_outcomes: Optional[bool] = Field(None, alias="showAllOutcomes")
516
+ show_market_images: Optional[bool] = Field(None, alias="showMarketImages")
517
+ automatically_resolved: Optional[bool] = Field(None, alias="automaticallyResolved")
518
+ enable_neg_risk: Optional[bool] = Field(None, alias="enableNegRisk")
519
+ automatically_active: Optional[bool] = Field(None, alias="automaticallyActive")
520
+ event_date: Optional[datetime] = Field(None, alias="eventDate")
521
+ start_time: Optional[datetime] = Field(None, alias="startTime")
522
+ event_week: Optional[int] = Field(None, alias="eventWeek")
523
+ series_slug: Optional[str] = Field(None, alias="seriesSlug")
524
+ score: Optional[str] = Field(None, alias="score")
525
+ elapsed: Optional[str] = Field(None, alias="elapsed")
526
+ period: Optional[str] = Field(None, alias="period")
527
+ live: Optional[bool] = Field(None, alias="live")
528
+ ended: Optional[bool] = Field(None, alias="ended")
529
+ finished_timestamp: Optional[datetime] = Field(None, alias="finishedTimestamp")
530
+ gmp_chart_mode: Optional[str] = Field(None, alias="gmpChartMode")
531
+ event_creators: Optional[list[Creator]] = Field(None, alias="eventCreators")
532
+ tweet_count: Optional[int] = Field(None, alias="tweetCount")
533
+ chats: Optional[list[Chat]] = Field(None, alias="chats")
534
+ featured_order: Optional[int] = Field(None, alias="featuredOrder")
535
+ estimate_value: Optional[bool] = Field(None, alias="estimateValue")
536
+ cant_estimate: Optional[bool] = Field(None, alias="cantEstimate")
537
+ estimated_value: Optional[str] = Field(None, alias="estimatedValue")
538
+ templates: Optional[list[Template]] = Field(None, alias="templates")
539
+ spreads_main_line: Optional[float] = Field(None, alias="spreadsMainLine")
540
+ totals_main_line: Optional[float] = Field(None, alias="totalsMainLine")
541
+ carousel_map: Optional[str] = Field(None, alias="carouselMap")
542
+ pending_deployment: Optional[bool] = Field(None, alias="pendingDeployment")
543
+ deploying: Optional[bool] = Field(None, alias="deploying")
544
+ deploying_timestamp: Optional[datetime] = Field(None, alias="deployingTimestamp")
545
+ scheduled_deployment_timestamp: Optional[datetime] = Field(
546
+ None, alias="scheduledDeploymentTimestamp"
547
+ )
548
+ game_status: Optional[str] = Field(None, alias="gameStatus")
331
549
 
332
- # Related entities
333
- markets: Optional[list[GammaMarket]] = None
334
- tags: Optional[list[Tag]] = None
335
550
 
336
- # Feature toggles
337
- enable_order_book: Optional[bool] = Field(None, alias="enableOrderBook")
338
- enable_neg_risk: bool = Field(alias="enableNegRisk")
339
- neg_risk_augmented: Optional[bool] = Field(None, alias="negRiskAugmented")
340
- cyom: bool
341
- show_all_outcomes: bool = Field(alias="showAllOutcomes")
342
- show_market_images: bool = Field(alias="showMarketImages")
551
+ class ProfilePosition(BaseModel):
552
+ model_config = ConfigDict(populate_by_name=True)
553
+
554
+ token_id: int = Field(alias="tokenId")
555
+ size: Optional[float] = Field(None, alias="positionSize")
556
+
557
+ @field_validator("size", mode="before")
558
+ @classmethod
559
+ def normalize_size(cls, v) -> float:
560
+ if isinstance(v, str):
561
+ return int(v) / 10**6
562
+ return v
563
+
564
+
565
+ class Profile(BaseModel):
566
+ model_config = ConfigDict(populate_by_name=True)
567
+
568
+ name: Optional[str] = None
569
+ pseudonym: Optional[str] = None
570
+ display_username_public: Optional[bool] = Field(None, alias="displayUsernamePublic")
571
+ proxy_wallet: Optional[EthAddress] = Field(None, alias="proxyWallet")
572
+ base_address: Optional[EthAddress] = Field(None, alias="baseAddress")
573
+ profile_image: Optional[str] = Field(None, alias="profileImage")
574
+ positions: Optional[list[ProfilePosition]] = Field(None, alias="positions")
575
+
576
+
577
+ class Comment(BaseModel):
578
+ model_config = ConfigDict(populate_by_name=True)
579
+
580
+ id: str
581
+ body: str
582
+ parent_entity_type: Literal["Event", "Series", "market"] = Field(
583
+ alias="parentEntityType"
584
+ )
585
+ parent_entity_id: int = Field(alias="parentEntityID")
586
+ parent_comment_id: Optional[str] = Field(None, alias="parentCommentID")
587
+ user_address: str = Field(alias="userAddress")
588
+ reply_address: Optional[str] = Field(None, alias="replyAddress")
589
+ created_at: datetime = Field(alias="createdAt")
590
+ updated_at: Optional[datetime] = Field(None, alias="updatedAt")
591
+ profile: Optional[Profile] = None
592
+ reactions: Optional[list[Reaction]] = None
593
+ report_count: Optional[int] = Field(None, alias="reportCount")
594
+ reaction_count: Optional[int] = Field(None, alias="reactionCount")
595
+
596
+
597
+ class Reaction(BaseModel):
598
+ model_config = ConfigDict(populate_by_name=True)
599
+
600
+ id: str
601
+ comment_id: int = Field(alias="commentID")
602
+ reaction_type: str = Field(alias="reactionType")
603
+ icon: Optional[str] = None
604
+ user_address: str = Field(alias="userAddress")
605
+ created_at: datetime = Field(alias="createdAt")
606
+ profile: Optional[Profile] = None
343
607
 
344
608
 
345
609
  class Pagination(BaseModel):
@@ -347,27 +611,16 @@ class Pagination(BaseModel):
347
611
  total_results: int = Field(alias="totalResults")
348
612
 
349
613
 
350
- class EventList(BaseModel):
351
- events: Optional[list[QueryEvent]] = None
352
- pagination: Pagination
353
-
614
+ class SearchResult(BaseModel):
615
+ model_config = ConfigDict(populate_by_name=True)
354
616
 
355
- class QueryMarket(BaseModel):
356
- # Identifiers
357
- slug: str
358
- question: str
359
- group_item_title: Optional[str] = Field(None, alias="groupItemTitle")
617
+ events: Optional[list[Event]] = None
618
+ tags: Optional[list[Tag]] = None
619
+ profiles: Optional[list[Profile]] = None
620
+ pagination: Pagination
360
621
 
361
- # Market data
362
- outcomes: Optional[list] = None
363
- outcome_prices: Optional[Json[list[float]] | list[float]] = Field(
364
- None, alias="outcomePrices"
365
- )
366
- last_trade_price: Optional[float] = Field(None, alias="lastTradePrice")
367
- best_ask: Optional[float] = Field(None, alias="bestAsk")
368
- best_bid: Optional[float] = Field(None, alias="bestBid")
369
- spread: float
370
622
 
371
- # Status flags
372
- closed: bool
373
- archived: bool
623
+ Event.model_rebuild()
624
+ Series.model_rebuild()
625
+ GammaMarket.model_rebuild()
626
+ SearchResult.model_rebuild()