Habiticalib 0.3.5__py3-none-any.whl → 0.3.7rc0__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.
- habiticalib/__init__.py +215 -4
- habiticalib/const.py +1 -1
- habiticalib/exceptions.py +1 -1
- habiticalib/helpers.py +5 -5
- habiticalib/lib.py +20 -18
- habiticalib/{types.py → typedefs.py} +279 -247
- {habiticalib-0.3.5.dist-info → habiticalib-0.3.7rc0.dist-info}/METADATA +1 -1
- habiticalib-0.3.7rc0.dist-info/RECORD +12 -0
- habiticalib-0.3.5.dist-info/RECORD +0 -12
- {habiticalib-0.3.5.dist-info → habiticalib-0.3.7rc0.dist-info}/WHEEL +0 -0
- {habiticalib-0.3.5.dist-info → habiticalib-0.3.7rc0.dist-info}/licenses/LICENSE +0 -0
@@ -33,18 +33,140 @@ def serialize_datetime(date: str | int | None) -> datetime | None:
|
|
33
33
|
return None
|
34
34
|
|
35
35
|
|
36
|
+
@dataclass
|
37
|
+
class BaseModel(DataClassORJSONMixin):
|
38
|
+
"""Base config for dataclasses."""
|
39
|
+
|
40
|
+
class Config(BaseConfig):
|
41
|
+
"""Configuration for TaskData."""
|
42
|
+
|
43
|
+
aliases = { # noqa: RUF012
|
44
|
+
"Type": "type",
|
45
|
+
"Str": "str",
|
46
|
+
"Int": "int",
|
47
|
+
"Class": "class",
|
48
|
+
"tmp": "_tmp",
|
49
|
+
"Def": "def",
|
50
|
+
"Set": "set",
|
51
|
+
}
|
52
|
+
serialize_by_alias = True
|
53
|
+
omit_none = True
|
54
|
+
|
55
|
+
def __eq__(self, value: object) -> bool:
|
56
|
+
"""Check if two instances are equal."""
|
57
|
+
if issubclass(type(value), type(self)):
|
58
|
+
return all(
|
59
|
+
getattr(self, field) == getattr(value, field)
|
60
|
+
for field in self.__dataclass_fields__
|
61
|
+
)
|
62
|
+
return super().__eq__(value)
|
63
|
+
|
64
|
+
|
36
65
|
@dataclass(kw_only=True)
|
37
|
-
class
|
66
|
+
class EquippedGear(BaseModel):
|
67
|
+
"""Gear equipped data."""
|
68
|
+
|
69
|
+
weapon: str | None = None
|
70
|
+
armor: str | None = None
|
71
|
+
head: str | None = None
|
72
|
+
shield: str | None = None
|
73
|
+
back: str | None = None
|
74
|
+
headAccessory: str | None = None
|
75
|
+
eyewear: str | None = None
|
76
|
+
body: str | None = None
|
77
|
+
|
78
|
+
|
79
|
+
@dataclass(kw_only=True, eq=False)
|
80
|
+
class GearItemsAvatar(BaseModel):
|
81
|
+
"""Items gear avatar data."""
|
82
|
+
|
83
|
+
equipped: EquippedGear = field(default_factory=EquippedGear)
|
84
|
+
costume: EquippedGear = field(default_factory=EquippedGear)
|
85
|
+
|
86
|
+
|
87
|
+
@dataclass(kw_only=True, eq=False)
|
88
|
+
class ItemsAvatar(BaseModel):
|
89
|
+
"""Items avatar data."""
|
90
|
+
|
91
|
+
gear: GearItemsAvatar = field(default_factory=GearItemsAvatar)
|
92
|
+
currentMount: str | None = None
|
93
|
+
currentPet: str | None = None
|
94
|
+
|
95
|
+
|
96
|
+
class HabiticaClass(StrEnum):
|
97
|
+
"""Habitica's player classes."""
|
98
|
+
|
99
|
+
WARRIOR = "warrior"
|
100
|
+
ROGUE = "rogue"
|
101
|
+
MAGE = "wizard"
|
102
|
+
HEALER = "healer"
|
103
|
+
|
104
|
+
|
105
|
+
@dataclass(kw_only=True)
|
106
|
+
class HairPreferences(BaseModel):
|
107
|
+
"""Hair preferences data."""
|
108
|
+
|
109
|
+
color: str | None = None
|
110
|
+
base: int | None = None
|
111
|
+
bangs: int | None = None
|
112
|
+
beard: int | None = None
|
113
|
+
mustache: int | None = None
|
114
|
+
flower: int | None = None
|
115
|
+
|
116
|
+
|
117
|
+
@dataclass(kw_only=True, eq=False)
|
118
|
+
class PreferencesAvatar(BaseModel):
|
119
|
+
"""Preferences avatar data."""
|
120
|
+
|
121
|
+
hair: HairPreferences = field(default_factory=HairPreferences)
|
122
|
+
size: str | None = None
|
123
|
+
skin: str | None = None
|
124
|
+
shirt: str | None = None
|
125
|
+
chair: str | None = None
|
126
|
+
costume: bool | None = None
|
127
|
+
sleep: bool | None = None
|
128
|
+
background: str | None = None
|
129
|
+
|
130
|
+
|
131
|
+
@dataclass(kw_only=True, eq=False)
|
132
|
+
class BuffsStatsavatar(BaseModel):
|
133
|
+
"""Buffs stats avatar data."""
|
134
|
+
|
135
|
+
seafoam: bool | None = None
|
136
|
+
shinySeed: bool | None = None
|
137
|
+
snowball: bool | None = None
|
138
|
+
spookySparkles: bool | None = None
|
139
|
+
|
140
|
+
|
141
|
+
@dataclass(kw_only=True, eq=False)
|
142
|
+
class StatsAvatar(BaseModel):
|
143
|
+
"""Stats avatar data."""
|
144
|
+
|
145
|
+
buffs: BuffsStatsavatar = field(default_factory=BuffsStatsavatar)
|
146
|
+
Class: HabiticaClass = HabiticaClass.WARRIOR
|
147
|
+
|
148
|
+
|
149
|
+
@dataclass(kw_only=True, eq=False)
|
150
|
+
class Avatar(BaseModel):
|
151
|
+
"""Represents data for avatar visuals."""
|
152
|
+
|
153
|
+
items: ItemsAvatar = field(default_factory=ItemsAvatar)
|
154
|
+
preferences: PreferencesAvatar = field(default_factory=PreferencesAvatar)
|
155
|
+
stats: StatsAvatar = field(default_factory=StatsAvatar)
|
156
|
+
|
157
|
+
|
158
|
+
@dataclass(kw_only=True)
|
159
|
+
class NotificationsUser(BaseModel):
|
38
160
|
"""Notifications User data."""
|
39
161
|
|
40
|
-
Type: str
|
162
|
+
Type: str
|
41
163
|
data: dict[str, Any]
|
42
164
|
seen: bool
|
43
165
|
id: UUID
|
44
166
|
|
45
167
|
|
46
168
|
@dataclass(kw_only=True)
|
47
|
-
class HabiticaResponse(
|
169
|
+
class HabiticaResponse(BaseModel):
|
48
170
|
"""Representation of a base Habitica API response."""
|
49
171
|
|
50
172
|
data: Any
|
@@ -55,7 +177,7 @@ class HabiticaResponse(DataClassORJSONMixin):
|
|
55
177
|
|
56
178
|
|
57
179
|
@dataclass(kw_only=True)
|
58
|
-
class LoginData:
|
180
|
+
class LoginData(BaseModel):
|
59
181
|
"""Login data."""
|
60
182
|
|
61
183
|
id: UUID
|
@@ -73,7 +195,7 @@ class HabiticaLoginResponse(HabiticaResponse):
|
|
73
195
|
|
74
196
|
|
75
197
|
@dataclass(kw_only=True)
|
76
|
-
class LocalAuth:
|
198
|
+
class LocalAuth(BaseModel):
|
77
199
|
"""Auth local data."""
|
78
200
|
|
79
201
|
email: str | None = None
|
@@ -83,7 +205,7 @@ class LocalAuth:
|
|
83
205
|
|
84
206
|
|
85
207
|
@dataclass(kw_only=True)
|
86
|
-
class LocalTimestamps:
|
208
|
+
class LocalTimestamps(BaseModel):
|
87
209
|
"""Timestamps local data."""
|
88
210
|
|
89
211
|
created: datetime | None = None
|
@@ -92,7 +214,7 @@ class LocalTimestamps:
|
|
92
214
|
|
93
215
|
|
94
216
|
@dataclass(kw_only=True)
|
95
|
-
class AuthUser:
|
217
|
+
class AuthUser(BaseModel):
|
96
218
|
"""User auth data."""
|
97
219
|
|
98
220
|
local: LocalAuth = field(default_factory=LocalAuth)
|
@@ -103,7 +225,7 @@ class AuthUser:
|
|
103
225
|
|
104
226
|
|
105
227
|
@dataclass(kw_only=True)
|
106
|
-
class UltimateGearSetsAchievments:
|
228
|
+
class UltimateGearSetsAchievments(BaseModel):
|
107
229
|
"""Achievments ultimateGearSets data."""
|
108
230
|
|
109
231
|
healer: bool | None = None
|
@@ -113,7 +235,7 @@ class UltimateGearSetsAchievments:
|
|
113
235
|
|
114
236
|
|
115
237
|
@dataclass(kw_only=True)
|
116
|
-
class QuestsAchievments:
|
238
|
+
class QuestsAchievments(BaseModel):
|
117
239
|
"""Achievments quests."""
|
118
240
|
|
119
241
|
bewilder: int | None = None
|
@@ -134,7 +256,7 @@ class QuestsAchievments:
|
|
134
256
|
|
135
257
|
|
136
258
|
@dataclass(kw_only=True)
|
137
|
-
class AchievementsUser:
|
259
|
+
class AchievementsUser(BaseModel):
|
138
260
|
"""User achievments data."""
|
139
261
|
|
140
262
|
ultimateGearSets: UltimateGearSetsAchievments = field(
|
@@ -164,7 +286,7 @@ class AchievementsUser:
|
|
164
286
|
|
165
287
|
|
166
288
|
@dataclass(kw_only=True)
|
167
|
-
class BackerUser:
|
289
|
+
class BackerUser(BaseModel):
|
168
290
|
"""User backer data."""
|
169
291
|
|
170
292
|
tier: int | None = None
|
@@ -173,7 +295,7 @@ class BackerUser:
|
|
173
295
|
|
174
296
|
|
175
297
|
@dataclass(kw_only=True)
|
176
|
-
class PermissionsUser:
|
298
|
+
class PermissionsUser(BaseModel):
|
177
299
|
"""User permissions data."""
|
178
300
|
|
179
301
|
fullAccess: bool | None = None
|
@@ -185,7 +307,7 @@ class PermissionsUser:
|
|
185
307
|
|
186
308
|
|
187
309
|
@dataclass(kw_only=True)
|
188
|
-
class ContributorUser:
|
310
|
+
class ContributorUser(BaseModel):
|
189
311
|
"""User contributer data."""
|
190
312
|
|
191
313
|
contributions: str | None = None
|
@@ -194,7 +316,7 @@ class ContributorUser:
|
|
194
316
|
|
195
317
|
|
196
318
|
@dataclass(kw_only=True)
|
197
|
-
class ConsecutivePlan:
|
319
|
+
class ConsecutivePlan(BaseModel):
|
198
320
|
"""Plan consecutive data."""
|
199
321
|
|
200
322
|
trinkets: int | None = None
|
@@ -204,7 +326,7 @@ class ConsecutivePlan:
|
|
204
326
|
|
205
327
|
|
206
328
|
@dataclass(kw_only=True)
|
207
|
-
class PlanPurchased:
|
329
|
+
class PlanPurchased(BaseModel):
|
208
330
|
"""Purchased background data."""
|
209
331
|
|
210
332
|
consecutive: ConsecutivePlan = field(default_factory=ConsecutivePlan)
|
@@ -217,7 +339,7 @@ class PlanPurchased:
|
|
217
339
|
|
218
340
|
|
219
341
|
@dataclass(kw_only=True)
|
220
|
-
class PurchasedUser:
|
342
|
+
class PurchasedUser(BaseModel):
|
221
343
|
"""User purchased data."""
|
222
344
|
|
223
345
|
plan: PlanPurchased = field(default_factory=PlanPurchased)
|
@@ -231,7 +353,7 @@ class PurchasedUser:
|
|
231
353
|
|
232
354
|
|
233
355
|
@dataclass(kw_only=True)
|
234
|
-
class TourFlags:
|
356
|
+
class TourFlags(BaseModel):
|
235
357
|
"""Flags tour data."""
|
236
358
|
|
237
359
|
intro: int | None = None
|
@@ -250,7 +372,7 @@ class TourFlags:
|
|
250
372
|
|
251
373
|
|
252
374
|
@dataclass(kw_only=True)
|
253
|
-
class CommonTutorial:
|
375
|
+
class CommonTutorial(BaseModel):
|
254
376
|
"""Tutorial common data."""
|
255
377
|
|
256
378
|
habits: bool
|
@@ -271,7 +393,7 @@ class CommonTutorial:
|
|
271
393
|
|
272
394
|
|
273
395
|
@dataclass(kw_only=True)
|
274
|
-
class IosTutorial:
|
396
|
+
class IosTutorial(BaseModel):
|
275
397
|
"""Tutorial ios data."""
|
276
398
|
|
277
399
|
addTask: bool
|
@@ -284,7 +406,7 @@ class IosTutorial:
|
|
284
406
|
|
285
407
|
|
286
408
|
@dataclass(kw_only=True)
|
287
|
-
class TutorialFlags:
|
409
|
+
class TutorialFlags(BaseModel):
|
288
410
|
"""Flags tutorial data."""
|
289
411
|
|
290
412
|
common: CommonTutorial | None = None
|
@@ -292,7 +414,7 @@ class TutorialFlags:
|
|
292
414
|
|
293
415
|
|
294
416
|
@dataclass(kw_only=True)
|
295
|
-
class FlagsUser:
|
417
|
+
class FlagsUser(BaseModel):
|
296
418
|
"""User flags data."""
|
297
419
|
|
298
420
|
customizationsNotification: bool | None = None
|
@@ -329,7 +451,7 @@ class FlagsUser:
|
|
329
451
|
|
330
452
|
|
331
453
|
@dataclass(kw_only=True)
|
332
|
-
class EntryHistory:
|
454
|
+
class EntryHistory(BaseModel):
|
333
455
|
"""History entry data."""
|
334
456
|
|
335
457
|
date: datetime = field(
|
@@ -345,7 +467,7 @@ class EntryHistory:
|
|
345
467
|
|
346
468
|
|
347
469
|
@dataclass(kw_only=True)
|
348
|
-
class HistoryUser:
|
470
|
+
class HistoryUser(BaseModel):
|
349
471
|
"""User history data."""
|
350
472
|
|
351
473
|
todos: list[EntryHistory] = field(default_factory=list)
|
@@ -353,30 +475,14 @@ class HistoryUser:
|
|
353
475
|
|
354
476
|
|
355
477
|
@dataclass(kw_only=True)
|
356
|
-
class
|
357
|
-
"""Gear equipped data."""
|
358
|
-
|
359
|
-
weapon: str | None = None
|
360
|
-
armor: str | None = None
|
361
|
-
head: str | None = None
|
362
|
-
shield: str | None = None
|
363
|
-
back: str | None = None
|
364
|
-
headAccessory: str | None = None
|
365
|
-
eyewear: str | None = None
|
366
|
-
body: str | None = None
|
367
|
-
|
368
|
-
|
369
|
-
@dataclass(kw_only=True)
|
370
|
-
class GearItems:
|
478
|
+
class GearItems(GearItemsAvatar, BaseModel):
|
371
479
|
"""Items gear data."""
|
372
480
|
|
373
|
-
equipped: EquippedGear = field(default_factory=EquippedGear)
|
374
|
-
costume: EquippedGear = field(default_factory=EquippedGear)
|
375
481
|
owned: dict[str, bool] = field(default_factory=dict)
|
376
482
|
|
377
483
|
|
378
484
|
@dataclass(kw_only=True)
|
379
|
-
class SpecialItems:
|
485
|
+
class SpecialItems(BaseModel):
|
380
486
|
"""Items special data."""
|
381
487
|
|
382
488
|
birthdayReceived: list = field(default_factory=list)
|
@@ -402,7 +508,7 @@ class SpecialItems:
|
|
402
508
|
|
403
509
|
|
404
510
|
@dataclass(kw_only=True)
|
405
|
-
class LastDropItems:
|
511
|
+
class LastDropItems(BaseModel):
|
406
512
|
"""LastDrop items data."""
|
407
513
|
|
408
514
|
count: int | None = None
|
@@ -410,14 +516,12 @@ class LastDropItems:
|
|
410
516
|
|
411
517
|
|
412
518
|
@dataclass(kw_only=True)
|
413
|
-
class ItemsUser:
|
519
|
+
class ItemsUser(ItemsAvatar, BaseModel):
|
414
520
|
"""User items data."""
|
415
521
|
|
416
522
|
gear: GearItems = field(default_factory=GearItems)
|
417
523
|
special: SpecialItems = field(default_factory=SpecialItems)
|
418
524
|
lastDrop: LastDropItems = field(default_factory=LastDropItems)
|
419
|
-
currentMount: str | None = None
|
420
|
-
currentPet: str | None = None
|
421
525
|
quests: dict[str, int] = field(default_factory=dict)
|
422
526
|
mounts: dict[str, bool] = field(default_factory=dict)
|
423
527
|
food: dict[str, int] = field(default_factory=dict)
|
@@ -427,7 +531,7 @@ class ItemsUser:
|
|
427
531
|
|
428
532
|
|
429
533
|
@dataclass(kw_only=True)
|
430
|
-
class InvitationsUser:
|
534
|
+
class InvitationsUser(BaseModel):
|
431
535
|
"""Invitations user data."""
|
432
536
|
|
433
537
|
party: dict = field(default_factory=dict)
|
@@ -436,7 +540,7 @@ class InvitationsUser:
|
|
436
540
|
|
437
541
|
|
438
542
|
@dataclass(kw_only=True)
|
439
|
-
class ProgressQuest:
|
543
|
+
class ProgressQuest(BaseModel):
|
440
544
|
"""Quest progress data."""
|
441
545
|
|
442
546
|
up: float | None = None
|
@@ -446,7 +550,7 @@ class ProgressQuest:
|
|
446
550
|
|
447
551
|
|
448
552
|
@dataclass(kw_only=True)
|
449
|
-
class QuestParty:
|
553
|
+
class QuestParty(BaseModel):
|
450
554
|
"""Party quest data."""
|
451
555
|
|
452
556
|
progress: ProgressQuest = field(default_factory=ProgressQuest)
|
@@ -456,7 +560,7 @@ class QuestParty:
|
|
456
560
|
|
457
561
|
|
458
562
|
@dataclass(kw_only=True)
|
459
|
-
class PartyUser:
|
563
|
+
class PartyUser(BaseModel):
|
460
564
|
"""Party user data."""
|
461
565
|
|
462
566
|
quest: QuestParty = field(default_factory=QuestParty)
|
@@ -466,19 +570,7 @@ class PartyUser:
|
|
466
570
|
|
467
571
|
|
468
572
|
@dataclass(kw_only=True)
|
469
|
-
class
|
470
|
-
"""Hair preferences data."""
|
471
|
-
|
472
|
-
color: str | None = None
|
473
|
-
base: int | None = None
|
474
|
-
bangs: int | None = None
|
475
|
-
beard: int | None = None
|
476
|
-
mustache: int | None = None
|
477
|
-
flower: int | None = None
|
478
|
-
|
479
|
-
|
480
|
-
@dataclass(kw_only=True)
|
481
|
-
class EmailNotificationsPreferences:
|
573
|
+
class EmailNotificationsPreferences(BaseModel):
|
482
574
|
"""EmailNotifications preferences data."""
|
483
575
|
|
484
576
|
unsubscribeFromAll: bool | None = None
|
@@ -500,7 +592,7 @@ class EmailNotificationsPreferences:
|
|
500
592
|
|
501
593
|
|
502
594
|
@dataclass(kw_only=True)
|
503
|
-
class PushNotificationsPreferences:
|
595
|
+
class PushNotificationsPreferences(BaseModel):
|
504
596
|
"""PushNotifications preferences data."""
|
505
597
|
|
506
598
|
unsubscribeFromAll: bool | None = None
|
@@ -521,7 +613,7 @@ class PushNotificationsPreferences:
|
|
521
613
|
|
522
614
|
|
523
615
|
@dataclass(kw_only=True)
|
524
|
-
class SuppressModalsPreferences:
|
616
|
+
class SuppressModalsPreferences(BaseModel):
|
525
617
|
"""SupressModals preferences data."""
|
526
618
|
|
527
619
|
levelUp: bool | None = None
|
@@ -531,7 +623,7 @@ class SuppressModalsPreferences:
|
|
531
623
|
|
532
624
|
|
533
625
|
@dataclass(kw_only=True)
|
534
|
-
class ActiveFilterTask:
|
626
|
+
class ActiveFilterTask(BaseModel):
|
535
627
|
"""ActiveFilter task data."""
|
536
628
|
|
537
629
|
habit: str | None = None
|
@@ -541,7 +633,7 @@ class ActiveFilterTask:
|
|
541
633
|
|
542
634
|
|
543
635
|
@dataclass(kw_only=True)
|
544
|
-
class TasksPreferences:
|
636
|
+
class TasksPreferences(BaseModel):
|
545
637
|
"""Tasks preferences data."""
|
546
638
|
|
547
639
|
activeFilter: ActiveFilterTask = field(default_factory=ActiveFilterTask)
|
@@ -551,10 +643,9 @@ class TasksPreferences:
|
|
551
643
|
|
552
644
|
|
553
645
|
@dataclass(kw_only=True)
|
554
|
-
class PreferencesUser:
|
646
|
+
class PreferencesUser(PreferencesAvatar, BaseModel):
|
555
647
|
"""Preferences user data."""
|
556
648
|
|
557
|
-
hair: HairPreferences = field(default_factory=HairPreferences)
|
558
649
|
emailNotifications: EmailNotificationsPreferences = field(
|
559
650
|
default_factory=EmailNotificationsPreferences
|
560
651
|
)
|
@@ -566,18 +657,12 @@ class PreferencesUser:
|
|
566
657
|
)
|
567
658
|
tasks: TasksPreferences = field(default_factory=TasksPreferences)
|
568
659
|
dayStart: int | None = None
|
569
|
-
size: str | None = None
|
570
660
|
hideHeader: bool | None = None
|
571
|
-
skin: str | None = None
|
572
|
-
shirt: str | None = None
|
573
661
|
timezoneOffset: int | None = None
|
574
662
|
sound: str | None = None
|
575
|
-
chair: str | None = None
|
576
663
|
allocationMode: str | None = None
|
577
664
|
autoEquip: bool | None = None
|
578
|
-
costume: bool | None = None
|
579
665
|
dateFormat: str | None = None
|
580
|
-
sleep: bool | None = None
|
581
666
|
stickyHeader: bool | None = None
|
582
667
|
disableClasses: bool | None = None
|
583
668
|
newTaskEdit: bool | None = None
|
@@ -587,7 +672,6 @@ class PreferencesUser:
|
|
587
672
|
reverseChatOrder: bool | None = None
|
588
673
|
developerMode: bool | None = None
|
589
674
|
displayInviteToPartyWhenPartyIs1: bool | None = None
|
590
|
-
background: str | None = None
|
591
675
|
automaticAllocation: bool | None = None
|
592
676
|
webhooks: dict = field(default_factory=dict)
|
593
677
|
improvementCategories: list[str] = field(default_factory=list)
|
@@ -596,7 +680,7 @@ class PreferencesUser:
|
|
596
680
|
|
597
681
|
|
598
682
|
@dataclass(kw_only=True)
|
599
|
-
class ProfileUser:
|
683
|
+
class ProfileUser(BaseModel):
|
600
684
|
"""Profile user data."""
|
601
685
|
|
602
686
|
blurb: str | None = None
|
@@ -605,10 +689,10 @@ class ProfileUser:
|
|
605
689
|
|
606
690
|
|
607
691
|
@dataclass(kw_only=True)
|
608
|
-
class BuffsStats:
|
692
|
+
class BuffsStats(BuffsStatsavatar, BaseModel):
|
609
693
|
"""Buffs stats data."""
|
610
694
|
|
611
|
-
Str: int | None =
|
695
|
+
Str: int | None = None
|
612
696
|
per: int | None = None
|
613
697
|
con: int | None = None
|
614
698
|
stealth: int | None = None
|
@@ -617,30 +701,21 @@ class BuffsStats:
|
|
617
701
|
shinySeed: bool | None = None
|
618
702
|
snowball: bool | None = None
|
619
703
|
spookySparkles: bool | None = None
|
620
|
-
Int: int | None =
|
704
|
+
Int: int | None = None
|
621
705
|
|
622
706
|
|
623
707
|
@dataclass(kw_only=True)
|
624
|
-
class TrainingStats:
|
708
|
+
class TrainingStats(BaseModel):
|
625
709
|
"""Training stats data."""
|
626
710
|
|
627
|
-
Str: float | None =
|
711
|
+
Str: float | None = None
|
628
712
|
per: int | None = None
|
629
713
|
con: int | None = None
|
630
|
-
Int: int | None =
|
631
|
-
|
632
|
-
|
633
|
-
class HabiticaClass(StrEnum):
|
634
|
-
"""Habitica's player classes."""
|
635
|
-
|
636
|
-
WARRIOR = "warrior"
|
637
|
-
ROGUE = "rogue"
|
638
|
-
MAGE = "wizard"
|
639
|
-
HEALER = "healer"
|
714
|
+
Int: int | None = None
|
640
715
|
|
641
716
|
|
642
717
|
@dataclass(kw_only=True)
|
643
|
-
class StatsUser:
|
718
|
+
class StatsUser(StatsAvatar, BaseModel):
|
644
719
|
"""Stats user data."""
|
645
720
|
|
646
721
|
buffs: BuffsStats = field(default_factory=BuffsStats)
|
@@ -650,21 +725,18 @@ class StatsUser:
|
|
650
725
|
exp: int | None = None
|
651
726
|
gp: float | None = None
|
652
727
|
lvl: int | None = None
|
653
|
-
Class: HabiticaClass | None = field(
|
654
|
-
default=None, metadata=field_options(alias="class")
|
655
|
-
)
|
656
728
|
points: int | None = None
|
657
|
-
Str: int | None =
|
729
|
+
Str: int | None = None
|
658
730
|
con: int | None = None
|
659
731
|
per: int | None = None
|
660
732
|
toNextLevel: int | None = None
|
661
733
|
maxHealth: int | None = None
|
662
734
|
maxMP: int | None = None
|
663
|
-
Int: int | None =
|
735
|
+
Int: int | None = None
|
664
736
|
|
665
737
|
|
666
738
|
@dataclass(kw_only=True)
|
667
|
-
class TagsUser:
|
739
|
+
class TagsUser(BaseModel):
|
668
740
|
"""Tags user data."""
|
669
741
|
|
670
742
|
id: UUID | None = None
|
@@ -674,7 +746,7 @@ class TagsUser:
|
|
674
746
|
|
675
747
|
|
676
748
|
@dataclass(kw_only=True)
|
677
|
-
class InboxUser:
|
749
|
+
class InboxUser(BaseModel):
|
678
750
|
"""Inbox user data."""
|
679
751
|
|
680
752
|
newMessages: int | None = None
|
@@ -684,7 +756,7 @@ class InboxUser:
|
|
684
756
|
|
685
757
|
|
686
758
|
@dataclass(kw_only=True)
|
687
|
-
class TasksOrderUser:
|
759
|
+
class TasksOrderUser(BaseModel):
|
688
760
|
"""TasksOrder user data."""
|
689
761
|
|
690
762
|
habits: list[UUID] = field(default_factory=list)
|
@@ -694,38 +766,67 @@ class TasksOrderUser:
|
|
694
766
|
|
695
767
|
|
696
768
|
@dataclass(kw_only=True)
|
697
|
-
class PushDevicesUser:
|
769
|
+
class PushDevicesUser(BaseModel):
|
698
770
|
"""PushDevices user data."""
|
699
771
|
|
700
772
|
regId: str
|
701
|
-
Type: str
|
773
|
+
Type: str
|
702
774
|
createdAt: datetime
|
703
775
|
updatedAt: datetime
|
704
776
|
|
705
777
|
|
778
|
+
class WebhooksType(StrEnum):
|
779
|
+
"""Webhook types."""
|
780
|
+
|
781
|
+
TASK_ACTIVITY = "taskActivity"
|
782
|
+
USER_ACTIVITY = "userActivity"
|
783
|
+
QUEST_ACTIVITY = "questActivity"
|
784
|
+
GROUP_CHAT_RECEIVED = "groupChatReceived"
|
785
|
+
|
786
|
+
|
706
787
|
@dataclass(kw_only=True)
|
707
|
-
class
|
788
|
+
class WebhooksOptions(BaseModel):
|
789
|
+
"""Webhooks options data."""
|
790
|
+
|
791
|
+
created: bool | None = None
|
792
|
+
updated: bool | None = None
|
793
|
+
deleted: bool | None = None
|
794
|
+
scored: bool | None = None
|
795
|
+
questStarted: bool | None = None
|
796
|
+
questFinished: bool | None = None
|
797
|
+
questInvited: bool | None = None
|
798
|
+
petHatched: bool | None = None
|
799
|
+
mountRaised: bool | None = None
|
800
|
+
leveledUp: bool | None = None
|
801
|
+
groupId: UUID | None = None
|
802
|
+
|
803
|
+
|
804
|
+
@dataclass(kw_only=True)
|
805
|
+
class WebhooksUser(BaseModel):
|
708
806
|
"""Webhooks user data."""
|
709
807
|
|
710
|
-
id: UUID
|
711
|
-
Type:
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
808
|
+
id: UUID | None = None
|
809
|
+
Type: WebhooksType = WebhooksType.TASK_ACTIVITY
|
810
|
+
url: str | None = None
|
811
|
+
enabled: bool = True
|
812
|
+
failures: int = 0
|
813
|
+
label: str = ""
|
814
|
+
options = WebhooksOptions
|
815
|
+
lastFailureAt: datetime | None = None
|
816
|
+
createdAt: datetime | None = None
|
817
|
+
updatedAt: datetime | None = None
|
717
818
|
|
718
819
|
|
719
820
|
@dataclass(kw_only=True)
|
720
|
-
class PinnedItemsUser:
|
821
|
+
class PinnedItemsUser(BaseModel):
|
721
822
|
"""PinnedItems user data."""
|
722
823
|
|
723
824
|
path: str
|
724
|
-
Type: str
|
825
|
+
Type: str
|
725
826
|
|
726
827
|
|
727
828
|
@dataclass(kw_only=True)
|
728
|
-
class UserData:
|
829
|
+
class UserData(Avatar, BaseModel):
|
729
830
|
"""User data."""
|
730
831
|
|
731
832
|
id: UUID | None = None
|
@@ -764,7 +865,6 @@ class UserData:
|
|
764
865
|
newMessages: dict[str, bool] = field(default_factory=dict)
|
765
866
|
|
766
867
|
|
767
|
-
@dataclass(kw_only=True)
|
768
868
|
class HabiticaUserResponse(HabiticaResponse):
|
769
869
|
"""Representation of a user data response."""
|
770
870
|
|
@@ -779,7 +879,7 @@ class HabiticaGroupMembersResponse(HabiticaResponse):
|
|
779
879
|
|
780
880
|
|
781
881
|
@dataclass(kw_only=True)
|
782
|
-
class CompletedBy:
|
882
|
+
class CompletedBy(BaseModel):
|
783
883
|
"""Task group completedby data."""
|
784
884
|
|
785
885
|
userId: UUID | None = None
|
@@ -787,7 +887,7 @@ class CompletedBy:
|
|
787
887
|
|
788
888
|
|
789
889
|
@dataclass(kw_only=True)
|
790
|
-
class GroupTask:
|
890
|
+
class GroupTask(BaseModel):
|
791
891
|
"""Task group data."""
|
792
892
|
|
793
893
|
assignedUsers: list[UUID] | None = None
|
@@ -801,7 +901,7 @@ class GroupTask:
|
|
801
901
|
|
802
902
|
|
803
903
|
@dataclass(kw_only=True)
|
804
|
-
class Repeat:
|
904
|
+
class Repeat(BaseModel):
|
805
905
|
"""Task repeat data."""
|
806
906
|
|
807
907
|
m: bool = True
|
@@ -824,7 +924,7 @@ class ChallengeAbortedReason(StrEnum):
|
|
824
924
|
|
825
925
|
|
826
926
|
@dataclass(kw_only=True)
|
827
|
-
class Challenge:
|
927
|
+
class Challenge(BaseModel):
|
828
928
|
"""Challenge task data."""
|
829
929
|
|
830
930
|
id: UUID | None = None
|
@@ -835,7 +935,7 @@ class Challenge:
|
|
835
935
|
|
836
936
|
|
837
937
|
@dataclass(kw_only=True)
|
838
|
-
class Reminders:
|
938
|
+
class Reminders(BaseModel):
|
839
939
|
"""Task reminders data."""
|
840
940
|
|
841
941
|
id: UUID
|
@@ -844,7 +944,7 @@ class Reminders:
|
|
844
944
|
|
845
945
|
|
846
946
|
@dataclass(kw_only=True)
|
847
|
-
class Checklist:
|
947
|
+
class Checklist(BaseModel):
|
848
948
|
"""Task checklist data."""
|
849
949
|
|
850
950
|
id: UUID
|
@@ -908,17 +1008,12 @@ class Task(TypedDict("Task", {"type": NotRequired[TaskType]}), total=True):
|
|
908
1008
|
|
909
1009
|
|
910
1010
|
@dataclass(kw_only=True)
|
911
|
-
class TaskData(
|
1011
|
+
class TaskData(BaseModel):
|
912
1012
|
"""Task data."""
|
913
1013
|
|
914
|
-
class Config(BaseConfig):
|
915
|
-
"""Configuration for TaskData."""
|
916
|
-
|
917
|
-
serialize_by_alias = True
|
918
|
-
|
919
1014
|
challenge: Challenge = field(default_factory=Challenge)
|
920
1015
|
group: GroupTask = field(default_factory=GroupTask)
|
921
|
-
Type: TaskType | None =
|
1016
|
+
Type: TaskType | None = None
|
922
1017
|
text: str | None = None
|
923
1018
|
notes: str | None = None
|
924
1019
|
tags: list[UUID] = field(default_factory=list)
|
@@ -971,7 +1066,7 @@ class HabiticaTaskResponse(HabiticaResponse):
|
|
971
1066
|
|
972
1067
|
|
973
1068
|
@dataclass(kw_only=True)
|
974
|
-
class HabiticaErrorResponse(
|
1069
|
+
class HabiticaErrorResponse(BaseModel):
|
975
1070
|
"""Base class for Habitica errors."""
|
976
1071
|
|
977
1072
|
success: bool
|
@@ -980,7 +1075,7 @@ class HabiticaErrorResponse(DataClassORJSONMixin):
|
|
980
1075
|
|
981
1076
|
|
982
1077
|
@dataclass(kw_only=True)
|
983
|
-
class TasksUserExport:
|
1078
|
+
class TasksUserExport(BaseModel):
|
984
1079
|
"""Tasks user export data."""
|
985
1080
|
|
986
1081
|
todos: list[TaskData] = field(default_factory=list)
|
@@ -990,68 +1085,7 @@ class TasksUserExport:
|
|
990
1085
|
|
991
1086
|
|
992
1087
|
@dataclass(kw_only=True)
|
993
|
-
class
|
994
|
-
"""Buffs UserStyles data."""
|
995
|
-
|
996
|
-
per: int | None = None
|
997
|
-
con: int | None = None
|
998
|
-
stealth: int | None = None
|
999
|
-
seafoam: bool | None = None
|
1000
|
-
shinySeed: bool | None = None
|
1001
|
-
snowball: bool | None = None
|
1002
|
-
spookySparkles: bool | None = None
|
1003
|
-
|
1004
|
-
|
1005
|
-
@dataclass(kw_only=True)
|
1006
|
-
class StatsUserStyles:
|
1007
|
-
"""Stats user styles data."""
|
1008
|
-
|
1009
|
-
buffs: BuffsUserStyles = field(default_factory=BuffsUserStyles)
|
1010
|
-
Class: HabiticaClass = field(default=HabiticaClass.WARRIOR)
|
1011
|
-
|
1012
|
-
|
1013
|
-
@dataclass(kw_only=True)
|
1014
|
-
class GearItemsUserStyles:
|
1015
|
-
"""Items gear data."""
|
1016
|
-
|
1017
|
-
equipped: EquippedGear = field(default_factory=EquippedGear)
|
1018
|
-
costume: EquippedGear = field(default_factory=EquippedGear)
|
1019
|
-
|
1020
|
-
|
1021
|
-
@dataclass(kw_only=True)
|
1022
|
-
class ItemsUserStyles:
|
1023
|
-
"""Items user styles data."""
|
1024
|
-
|
1025
|
-
gear: GearItemsUserStyles = field(default_factory=GearItemsUserStyles)
|
1026
|
-
currentMount: str | None = None
|
1027
|
-
currentPet: str | None = None
|
1028
|
-
|
1029
|
-
|
1030
|
-
@dataclass(kw_only=True)
|
1031
|
-
class PreferencesUserStyles:
|
1032
|
-
"""Preferences user styles data."""
|
1033
|
-
|
1034
|
-
hair: HairPreferences = field(default_factory=HairPreferences)
|
1035
|
-
size: str | None = None
|
1036
|
-
skin: str | None = None
|
1037
|
-
shirt: str | None = None
|
1038
|
-
chair: str | None = None
|
1039
|
-
costume: bool | None = None
|
1040
|
-
sleep: bool | None = None
|
1041
|
-
background: str | None = None
|
1042
|
-
|
1043
|
-
|
1044
|
-
@dataclass(kw_only=True)
|
1045
|
-
class UserStyles(DataClassORJSONMixin):
|
1046
|
-
"""Represents minimalistic data only containing user styles."""
|
1047
|
-
|
1048
|
-
items: ItemsUserStyles = field(default_factory=ItemsUserStyles)
|
1049
|
-
preferences: PreferencesUserStyles = field(default_factory=PreferencesUserStyles)
|
1050
|
-
stats: StatsUserStyles = field(default_factory=StatsUserStyles)
|
1051
|
-
|
1052
|
-
|
1053
|
-
@dataclass(kw_only=True)
|
1054
|
-
class HabiticaUserExport(UserData, DataClassORJSONMixin):
|
1088
|
+
class HabiticaUserExport(UserData, BaseModel):
|
1055
1089
|
"""Representation of a user data export."""
|
1056
1090
|
|
1057
1091
|
tasks: TasksUserExport = field(default_factory=TasksUserExport)
|
@@ -1066,7 +1100,7 @@ class UserAnonymizedData:
|
|
1066
1100
|
|
1067
1101
|
|
1068
1102
|
@dataclass(kw_only=True)
|
1069
|
-
class HabiticaUserAnonymizedResponse(
|
1103
|
+
class HabiticaUserAnonymizedResponse(BaseModel):
|
1070
1104
|
"""Representation of a anonymized user data export."""
|
1071
1105
|
|
1072
1106
|
data: UserAnonymizedData
|
@@ -1080,7 +1114,7 @@ class HabiticaStatsResponse(HabiticaResponse):
|
|
1080
1114
|
|
1081
1115
|
|
1082
1116
|
@dataclass(kw_only=True)
|
1083
|
-
class QuestTmpScore:
|
1117
|
+
class QuestTmpScore(BaseModel):
|
1084
1118
|
"""Represents the quest progress details."""
|
1085
1119
|
|
1086
1120
|
progressDelta: float | None = None
|
@@ -1088,19 +1122,19 @@ class QuestTmpScore:
|
|
1088
1122
|
|
1089
1123
|
|
1090
1124
|
@dataclass(kw_only=True)
|
1091
|
-
class DropTmpScore:
|
1125
|
+
class DropTmpScore(BaseModel):
|
1092
1126
|
"""Represents the details of an item drop."""
|
1093
1127
|
|
1094
1128
|
target: str | None = None
|
1095
1129
|
canDrop: bool | None = None
|
1096
1130
|
value: int | None = None
|
1097
1131
|
key: str | None = None
|
1098
|
-
Type: str | None =
|
1132
|
+
Type: str | None = None
|
1099
1133
|
dialog: str | None = None
|
1100
1134
|
|
1101
1135
|
|
1102
1136
|
@dataclass(kw_only=True)
|
1103
|
-
class TmpScore:
|
1137
|
+
class TmpScore(BaseModel):
|
1104
1138
|
"""Temporary quest and drop data."""
|
1105
1139
|
|
1106
1140
|
quest: QuestTmpScore = field(default_factory=QuestTmpScore)
|
@@ -1112,34 +1146,32 @@ class ScoreData(StatsUser):
|
|
1112
1146
|
"""Scora data."""
|
1113
1147
|
|
1114
1148
|
delta: float | None = None
|
1115
|
-
tmp: TmpScore = field(
|
1116
|
-
default_factory=TmpScore, metadata=field_options(alias="_tmp")
|
1117
|
-
)
|
1149
|
+
tmp: TmpScore = field(default_factory=TmpScore)
|
1118
1150
|
|
1119
1151
|
|
1120
1152
|
@dataclass(kw_only=True)
|
1121
|
-
class HabiticaScoreResponse(HabiticaResponse
|
1153
|
+
class HabiticaScoreResponse(HabiticaResponse):
|
1122
1154
|
"""Representation of a score response."""
|
1123
1155
|
|
1124
1156
|
data: ScoreData
|
1125
1157
|
|
1126
1158
|
|
1127
1159
|
@dataclass(kw_only=True)
|
1128
|
-
class HabiticaTagsResponse(HabiticaResponse
|
1160
|
+
class HabiticaTagsResponse(HabiticaResponse):
|
1129
1161
|
"""Representation of a score response."""
|
1130
1162
|
|
1131
1163
|
data: list[TagsUser]
|
1132
1164
|
|
1133
1165
|
|
1134
1166
|
@dataclass(kw_only=True)
|
1135
|
-
class HabiticaTagResponse(HabiticaResponse
|
1167
|
+
class HabiticaTagResponse(HabiticaResponse):
|
1136
1168
|
"""Representation of a score response."""
|
1137
1169
|
|
1138
1170
|
data: TagsUser
|
1139
1171
|
|
1140
1172
|
|
1141
1173
|
@dataclass(kw_only=True)
|
1142
|
-
class QuestData:
|
1174
|
+
class QuestData(BaseModel):
|
1143
1175
|
"""Quest data."""
|
1144
1176
|
|
1145
1177
|
progress: ProgressQuest = field(default_factory=ProgressQuest)
|
@@ -1151,14 +1183,14 @@ class QuestData:
|
|
1151
1183
|
|
1152
1184
|
|
1153
1185
|
@dataclass(kw_only=True)
|
1154
|
-
class HabiticaQuestResponse(HabiticaResponse
|
1186
|
+
class HabiticaQuestResponse(HabiticaResponse):
|
1155
1187
|
"""Representation of a quest response."""
|
1156
1188
|
|
1157
1189
|
data: QuestData
|
1158
1190
|
|
1159
1191
|
|
1160
1192
|
@dataclass
|
1161
|
-
class ChangeClassData:
|
1193
|
+
class ChangeClassData(BaseModel):
|
1162
1194
|
"""Change class data."""
|
1163
1195
|
|
1164
1196
|
preferences: PreferencesUser = field(default_factory=PreferencesUser)
|
@@ -1168,7 +1200,7 @@ class ChangeClassData:
|
|
1168
1200
|
|
1169
1201
|
|
1170
1202
|
@dataclass(kw_only=True)
|
1171
|
-
class HabiticaClassSystemResponse(HabiticaResponse
|
1203
|
+
class HabiticaClassSystemResponse(HabiticaResponse):
|
1172
1204
|
"""Representation of a change-class response."""
|
1173
1205
|
|
1174
1206
|
data: ChangeClassData
|
@@ -1282,7 +1314,7 @@ class TaskPriority(Enum):
|
|
1282
1314
|
|
1283
1315
|
|
1284
1316
|
@dataclass
|
1285
|
-
class AchievmentContent:
|
1317
|
+
class AchievmentContent(BaseModel):
|
1286
1318
|
"""Achievment content data."""
|
1287
1319
|
|
1288
1320
|
icon: str
|
@@ -1296,7 +1328,7 @@ class AchievmentContent:
|
|
1296
1328
|
|
1297
1329
|
|
1298
1330
|
@dataclass
|
1299
|
-
class AnimalColorAchievementContent:
|
1331
|
+
class AnimalColorAchievementContent(BaseModel):
|
1300
1332
|
"""animalColorAchievement content data."""
|
1301
1333
|
|
1302
1334
|
color: str
|
@@ -1307,17 +1339,17 @@ class AnimalColorAchievementContent:
|
|
1307
1339
|
|
1308
1340
|
|
1309
1341
|
@dataclass
|
1310
|
-
class AnimalSetAchievementContent:
|
1342
|
+
class AnimalSetAchievementContent(BaseModel):
|
1311
1343
|
"""animalSetAchievements content data."""
|
1312
1344
|
|
1313
|
-
Type: str
|
1345
|
+
Type: str
|
1314
1346
|
species: list[str]
|
1315
1347
|
achievementKey: str
|
1316
1348
|
notificationType: str
|
1317
1349
|
|
1318
1350
|
|
1319
1351
|
@dataclass
|
1320
|
-
class StableAchievementContent:
|
1352
|
+
class StableAchievementContent(BaseModel):
|
1321
1353
|
"""stableAchievements content data."""
|
1322
1354
|
|
1323
1355
|
masterAchievement: str
|
@@ -1325,7 +1357,7 @@ class StableAchievementContent:
|
|
1325
1357
|
|
1326
1358
|
|
1327
1359
|
@dataclass
|
1328
|
-
class PetSetCompleteAchievsContent:
|
1360
|
+
class PetSetCompleteAchievsContent(BaseModel):
|
1329
1361
|
"""petSetCompleteAchievs content data."""
|
1330
1362
|
|
1331
1363
|
color: str
|
@@ -1334,7 +1366,7 @@ class PetSetCompleteAchievsContent:
|
|
1334
1366
|
|
1335
1367
|
|
1336
1368
|
@dataclass
|
1337
|
-
class QuestBossRage:
|
1369
|
+
class QuestBossRage(BaseModel):
|
1338
1370
|
"""QuestBossRage content data."""
|
1339
1371
|
|
1340
1372
|
title: str
|
@@ -1345,36 +1377,36 @@ class QuestBossRage:
|
|
1345
1377
|
|
1346
1378
|
|
1347
1379
|
@dataclass
|
1348
|
-
class QuestBoss:
|
1380
|
+
class QuestBoss(BaseModel):
|
1349
1381
|
"""QuestBoss content data."""
|
1350
1382
|
|
1351
1383
|
name: str
|
1352
1384
|
hp: float
|
1353
|
-
Str: float
|
1354
|
-
Def: float
|
1385
|
+
Str: float
|
1386
|
+
Def: float
|
1355
1387
|
rage: QuestBossRage | None = None
|
1356
1388
|
|
1357
1389
|
|
1358
1390
|
@dataclass
|
1359
|
-
class QuestItem:
|
1391
|
+
class QuestItem(BaseModel):
|
1360
1392
|
"""QuestItem content data."""
|
1361
1393
|
|
1362
|
-
Type: str
|
1394
|
+
Type: str
|
1363
1395
|
key: str
|
1364
1396
|
text: str
|
1365
1397
|
|
1366
1398
|
|
1367
1399
|
@dataclass
|
1368
|
-
class QuestDrop:
|
1400
|
+
class QuestDrop(BaseModel):
|
1369
1401
|
"""QuestDrop content data."""
|
1370
1402
|
|
1371
1403
|
gp: float
|
1372
1404
|
exp: float
|
1373
|
-
items: list[QuestItem]
|
1405
|
+
items: list[QuestItem] = field(default_factory=list)
|
1374
1406
|
|
1375
1407
|
|
1376
1408
|
@dataclass
|
1377
|
-
class QuestCollect:
|
1409
|
+
class QuestCollect(BaseModel):
|
1378
1410
|
"""QuestCollect content data."""
|
1379
1411
|
|
1380
1412
|
text: str
|
@@ -1382,7 +1414,7 @@ class QuestCollect:
|
|
1382
1414
|
|
1383
1415
|
|
1384
1416
|
@dataclass
|
1385
|
-
class QuestUnlockCondition:
|
1417
|
+
class QuestUnlockCondition(BaseModel):
|
1386
1418
|
"""QuestUnlockCondition content data."""
|
1387
1419
|
|
1388
1420
|
condition: str
|
@@ -1390,7 +1422,7 @@ class QuestUnlockCondition:
|
|
1390
1422
|
|
1391
1423
|
|
1392
1424
|
@dataclass
|
1393
|
-
class QuestsContent:
|
1425
|
+
class QuestsContent(BaseModel):
|
1394
1426
|
"""petSetCompleteAchievs content data."""
|
1395
1427
|
|
1396
1428
|
text: str
|
@@ -1412,7 +1444,7 @@ class QuestsContent:
|
|
1412
1444
|
|
1413
1445
|
|
1414
1446
|
@dataclass
|
1415
|
-
class ItemListEntry:
|
1447
|
+
class ItemListEntry(BaseModel):
|
1416
1448
|
"""ItemListEntry content data."""
|
1417
1449
|
|
1418
1450
|
localeKey: str
|
@@ -1420,7 +1452,7 @@ class ItemListEntry:
|
|
1420
1452
|
|
1421
1453
|
|
1422
1454
|
@dataclass
|
1423
|
-
class ItemListContent:
|
1455
|
+
class ItemListContent(BaseModel):
|
1424
1456
|
"""ItemListContent content data."""
|
1425
1457
|
|
1426
1458
|
weapon: ItemListEntry
|
@@ -1441,25 +1473,25 @@ class ItemListContent:
|
|
1441
1473
|
|
1442
1474
|
|
1443
1475
|
@dataclass
|
1444
|
-
class GearEntry:
|
1476
|
+
class GearEntry(BaseModel):
|
1445
1477
|
"""GearEntry content data."""
|
1446
1478
|
|
1447
1479
|
text: str
|
1448
1480
|
notes: str
|
1449
|
-
Int: int
|
1481
|
+
Int: int
|
1450
1482
|
value: int
|
1451
|
-
Type: str
|
1483
|
+
Type: str
|
1452
1484
|
key: str
|
1453
|
-
Set: str
|
1485
|
+
Set: str
|
1454
1486
|
klass: str
|
1455
1487
|
index: str
|
1456
|
-
Str: int
|
1488
|
+
Str: int
|
1457
1489
|
per: int
|
1458
1490
|
con: int
|
1459
1491
|
|
1460
1492
|
|
1461
1493
|
@dataclass
|
1462
|
-
class GearClass:
|
1494
|
+
class GearClass(BaseModel):
|
1463
1495
|
"""GearClass content data."""
|
1464
1496
|
|
1465
1497
|
base: dict[str, GearEntry] | None = None
|
@@ -1473,7 +1505,7 @@ class GearClass:
|
|
1473
1505
|
|
1474
1506
|
|
1475
1507
|
@dataclass
|
1476
|
-
class GearType:
|
1508
|
+
class GearType(BaseModel):
|
1477
1509
|
"""GearType content data."""
|
1478
1510
|
|
1479
1511
|
weapon: GearClass
|
@@ -1487,7 +1519,7 @@ class GearType:
|
|
1487
1519
|
|
1488
1520
|
|
1489
1521
|
@dataclass
|
1490
|
-
class GearContent:
|
1522
|
+
class GearContent(BaseModel):
|
1491
1523
|
"""GearContent content data."""
|
1492
1524
|
|
1493
1525
|
tree: GearType
|
@@ -1495,7 +1527,7 @@ class GearContent:
|
|
1495
1527
|
|
1496
1528
|
|
1497
1529
|
@dataclass
|
1498
|
-
class SpellEntry:
|
1530
|
+
class SpellEntry(BaseModel):
|
1499
1531
|
"""SpellEntry content data."""
|
1500
1532
|
|
1501
1533
|
text: str
|
@@ -1513,7 +1545,7 @@ class SpellEntry:
|
|
1513
1545
|
|
1514
1546
|
|
1515
1547
|
@dataclass
|
1516
|
-
class SpellsClass:
|
1548
|
+
class SpellsClass(BaseModel):
|
1517
1549
|
"""SpellsClass content data."""
|
1518
1550
|
|
1519
1551
|
wizard: dict[str, SpellEntry]
|
@@ -1524,8 +1556,8 @@ class SpellsClass:
|
|
1524
1556
|
|
1525
1557
|
|
1526
1558
|
@dataclass
|
1527
|
-
class
|
1528
|
-
"""
|
1559
|
+
class CardTypes(BaseModel):
|
1560
|
+
"""CardTypes content data."""
|
1529
1561
|
|
1530
1562
|
key: str
|
1531
1563
|
messageOptions: int
|
@@ -1533,7 +1565,7 @@ class CarTypes:
|
|
1533
1565
|
|
1534
1566
|
|
1535
1567
|
@dataclass
|
1536
|
-
class SpecialItemEntry:
|
1568
|
+
class SpecialItemEntry(BaseModel):
|
1537
1569
|
"""Item content data."""
|
1538
1570
|
|
1539
1571
|
key: str | None = None
|
@@ -1550,7 +1582,7 @@ class SpecialItemEntry:
|
|
1550
1582
|
|
1551
1583
|
|
1552
1584
|
@dataclass
|
1553
|
-
class EggEntry:
|
1585
|
+
class EggEntry(BaseModel):
|
1554
1586
|
"""Egg content data."""
|
1555
1587
|
|
1556
1588
|
text: str | None = None
|
@@ -1562,7 +1594,7 @@ class EggEntry:
|
|
1562
1594
|
|
1563
1595
|
|
1564
1596
|
@dataclass
|
1565
|
-
class HatchingPotionEntry:
|
1597
|
+
class HatchingPotionEntry(BaseModel):
|
1566
1598
|
"""Hatching potion content data."""
|
1567
1599
|
|
1568
1600
|
value: int | None = None
|
@@ -1576,18 +1608,18 @@ class HatchingPotionEntry:
|
|
1576
1608
|
|
1577
1609
|
|
1578
1610
|
@dataclass
|
1579
|
-
class PetEntry:
|
1611
|
+
class PetEntry(BaseModel):
|
1580
1612
|
"""Pet content data."""
|
1581
1613
|
|
1582
1614
|
key: str | None = None
|
1583
|
-
Type: str | None =
|
1615
|
+
Type: str | None = None
|
1584
1616
|
potion: str | None = None
|
1585
1617
|
egg: str | None = None
|
1586
1618
|
text: str | None = None
|
1587
1619
|
|
1588
1620
|
|
1589
1621
|
@dataclass
|
1590
|
-
class InventoryItemEntry:
|
1622
|
+
class InventoryItemEntry(BaseModel):
|
1591
1623
|
"""Inventory item content data."""
|
1592
1624
|
|
1593
1625
|
text: str | None = None
|
@@ -1601,7 +1633,7 @@ class InventoryItemEntry:
|
|
1601
1633
|
|
1602
1634
|
|
1603
1635
|
@dataclass
|
1604
|
-
class ContentData:
|
1636
|
+
class ContentData(BaseModel):
|
1605
1637
|
"""Content data."""
|
1606
1638
|
|
1607
1639
|
achievements: dict[str, AchievmentContent]
|
@@ -1626,7 +1658,7 @@ class ContentData:
|
|
1626
1658
|
# repeatingEvents
|
1627
1659
|
classes: list[str]
|
1628
1660
|
gearTypes: list[str]
|
1629
|
-
cardTypes: dict[str,
|
1661
|
+
cardTypes: dict[str, CardTypes]
|
1630
1662
|
special: dict[str, SpecialItemEntry]
|
1631
1663
|
dropEggs: dict[str, EggEntry]
|
1632
1664
|
questEggs: dict[str, EggEntry]
|
@@ -1666,7 +1698,7 @@ class HabiticaContentResponse(HabiticaResponse):
|
|
1666
1698
|
|
1667
1699
|
|
1668
1700
|
@dataclass
|
1669
|
-
class PartyMember:
|
1701
|
+
class PartyMember(BaseModel):
|
1670
1702
|
"""Party member data."""
|
1671
1703
|
|
1672
1704
|
stats: StatsUser
|
@@ -1676,7 +1708,7 @@ class PartyMember:
|
|
1676
1708
|
|
1677
1709
|
|
1678
1710
|
@dataclass
|
1679
|
-
class UserTasks:
|
1711
|
+
class UserTasks(BaseModel):
|
1680
1712
|
"""User and tasks data."""
|
1681
1713
|
|
1682
1714
|
user: UserData
|