otf-api 0.6.1__tar.gz → 0.6.2__tar.gz
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.
- {otf_api-0.6.1 → otf_api-0.6.2}/PKG-INFO +1 -1
- {otf_api-0.6.1 → otf_api-0.6.2}/pyproject.toml +1 -1
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/__init__.py +1 -1
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/body_composition_list.py +12 -10
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/book_class.py +38 -36
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/cancel_booking.py +9 -7
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/challenge_tracker_detail.py +4 -3
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/favorite_studios.py +4 -2
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/lifetime_stats.py +10 -8
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/member_purchases.py +2 -2
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/out_of_studio_workout_history.py +2 -2
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/performance_summary_detail.py +12 -10
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/performance_summary_list.py +5 -2
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/studio_detail.py +4 -2
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/studio_services.py +2 -2
- {otf_api-0.6.1 → otf_api-0.6.2}/AUTHORS.md +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/LICENSE +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/README.md +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/api.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/auth.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/__init__.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/base.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/__init__.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/bookings.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/challenge_tracker_content.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/classes.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/enums.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/latest_agreement.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/member_detail.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/member_membership.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/telemetry.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/telemetry_hr_history.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/telemetry_max_hr.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/total_classes.py +0 -0
- {otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/py.typed +0 -0
@@ -5,6 +5,8 @@ from enum import Enum
|
|
5
5
|
import pint
|
6
6
|
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
7
7
|
|
8
|
+
from otf_api.models.base import OtfItemBase, OtfListBase
|
9
|
+
|
8
10
|
ureg = pint.UnitRegistry()
|
9
11
|
|
10
12
|
DEFAULT_WEIGHT_DIVIDERS = [55.0, 70.0, 85.0, 100.0, 115.0, 130.0, 145.0, 160.0, 175.0, 190.0, 205.0]
|
@@ -98,7 +100,7 @@ def get_body_fat_percent_dividers_female(age: int) -> list[float]:
|
|
98
100
|
return [0.0, 0.0, 0.0, 0.0]
|
99
101
|
|
100
102
|
|
101
|
-
class LeanBodyMass(
|
103
|
+
class LeanBodyMass(OtfItemBase):
|
102
104
|
model_config: ConfigDict = ConfigDict(extra="ignore")
|
103
105
|
left_arm: float = Field(..., alias="lbmOfLeftArm")
|
104
106
|
left_leg: float = Field(..., alias="lbmOfLeftLeg")
|
@@ -107,7 +109,7 @@ class LeanBodyMass(BaseModel):
|
|
107
109
|
trunk: float = Field(..., alias="lbmOfTrunk")
|
108
110
|
|
109
111
|
|
110
|
-
class LeanBodyMassPercent(
|
112
|
+
class LeanBodyMassPercent(OtfItemBase):
|
111
113
|
model_config: ConfigDict = ConfigDict(extra="ignore")
|
112
114
|
left_arm: float = Field(..., alias="lbmPercentOfLeftArm")
|
113
115
|
left_leg: float = Field(..., alias="lbmPercentOfLeftLeg")
|
@@ -116,7 +118,7 @@ class LeanBodyMassPercent(BaseModel):
|
|
116
118
|
trunk: float = Field(..., alias="lbmPercentOfTrunk")
|
117
119
|
|
118
120
|
|
119
|
-
class BodyFatMass(
|
121
|
+
class BodyFatMass(OtfItemBase):
|
120
122
|
model_config: ConfigDict = ConfigDict(extra="ignore")
|
121
123
|
control: float = Field(..., alias="bfmControl")
|
122
124
|
left_arm: float = Field(..., alias="bfmOfLeftArm")
|
@@ -126,7 +128,7 @@ class BodyFatMass(BaseModel):
|
|
126
128
|
trunk: float = Field(..., alias="bfmOfTrunk")
|
127
129
|
|
128
130
|
|
129
|
-
class BodyFatMassPercent(
|
131
|
+
class BodyFatMassPercent(OtfItemBase):
|
130
132
|
model_config: ConfigDict = ConfigDict(extra="ignore")
|
131
133
|
left_arm: float = Field(..., alias="bfmPercentOfLeftArm")
|
132
134
|
left_leg: float = Field(..., alias="bfmPercentOfLeftLeg")
|
@@ -135,7 +137,7 @@ class BodyFatMassPercent(BaseModel):
|
|
135
137
|
trunk: float = Field(..., alias="bfmPercentOfTrunk")
|
136
138
|
|
137
139
|
|
138
|
-
class TotalBodyWeight(
|
140
|
+
class TotalBodyWeight(OtfItemBase):
|
139
141
|
model_config: ConfigDict = ConfigDict(extra="ignore")
|
140
142
|
right_arm: float = Field(..., alias="tbwOfRightArm")
|
141
143
|
left_arm: float = Field(..., alias="tbwOfLeftArm")
|
@@ -144,7 +146,7 @@ class TotalBodyWeight(BaseModel):
|
|
144
146
|
left_leg: float = Field(..., alias="tbwOfLeftLeg")
|
145
147
|
|
146
148
|
|
147
|
-
class IntraCellularWater(
|
149
|
+
class IntraCellularWater(OtfItemBase):
|
148
150
|
model_config: ConfigDict = ConfigDict(extra="ignore")
|
149
151
|
right_arm: float = Field(..., alias="icwOfRightArm")
|
150
152
|
left_arm: float = Field(..., alias="icwOfLeftArm")
|
@@ -153,7 +155,7 @@ class IntraCellularWater(BaseModel):
|
|
153
155
|
left_leg: float = Field(..., alias="icwOfLeftLeg")
|
154
156
|
|
155
157
|
|
156
|
-
class ExtraCellularWater(
|
158
|
+
class ExtraCellularWater(OtfItemBase):
|
157
159
|
model_config: ConfigDict = ConfigDict(extra="ignore")
|
158
160
|
right_arm: float = Field(..., alias="ecwOfRightArm")
|
159
161
|
left_arm: float = Field(..., alias="ecwOfLeftArm")
|
@@ -162,7 +164,7 @@ class ExtraCellularWater(BaseModel):
|
|
162
164
|
left_leg: float = Field(..., alias="ecwOfLeftLeg")
|
163
165
|
|
164
166
|
|
165
|
-
class ExtraCellularWaterOverTotalBodyWater(
|
167
|
+
class ExtraCellularWaterOverTotalBodyWater(OtfItemBase):
|
166
168
|
model_config: ConfigDict = ConfigDict(extra="ignore")
|
167
169
|
right_arm: float = Field(..., alias="ecwOverTBWOfRightArm")
|
168
170
|
left_arm: float = Field(..., alias="ecwOverTBWOfLeftArm")
|
@@ -171,7 +173,7 @@ class ExtraCellularWaterOverTotalBodyWater(BaseModel):
|
|
171
173
|
left_leg: float = Field(..., alias="ecwOverTBWOfLeftLeg")
|
172
174
|
|
173
175
|
|
174
|
-
class BodyCompositionData(
|
176
|
+
class BodyCompositionData(OtfItemBase):
|
175
177
|
member_uuid: str = Field(..., alias="memberUUId")
|
176
178
|
member_id: str = Field(..., alias="memberId")
|
177
179
|
scan_result_uuid: str = Field(..., alias="scanResultUUId")
|
@@ -300,5 +302,5 @@ class BodyCompositionData(BaseModel):
|
|
300
302
|
)
|
301
303
|
|
302
304
|
|
303
|
-
class BodyCompositionList(
|
305
|
+
class BodyCompositionList(OtfListBase):
|
304
306
|
data: list[BodyCompositionData]
|
@@ -1,19 +1,21 @@
|
|
1
1
|
from datetime import datetime
|
2
2
|
from typing import Any
|
3
3
|
|
4
|
-
from pydantic import
|
4
|
+
from pydantic import Field
|
5
5
|
|
6
|
+
from otf_api.models.base import OtfItemBase
|
6
7
|
|
7
|
-
|
8
|
+
|
9
|
+
class MemberProfile(OtfItemBase):
|
8
10
|
is_latest_agreement_signed: bool = Field(..., alias="isLatestAgreementSigned")
|
9
11
|
|
10
12
|
|
11
|
-
class StudioProfiles(
|
13
|
+
class StudioProfiles(OtfItemBase):
|
12
14
|
studio_id: int = Field(..., alias="studioId")
|
13
15
|
is_franchise_agreement_enabled: int = Field(..., alias="isFranchiseAgreementEnabled")
|
14
16
|
|
15
17
|
|
16
|
-
class HomeStudio(
|
18
|
+
class HomeStudio(OtfItemBase):
|
17
19
|
studio_uuid: str = Field(..., alias="studioUUId")
|
18
20
|
studio_name: str = Field(..., alias="studioName")
|
19
21
|
description: str
|
@@ -28,7 +30,7 @@ class HomeStudio(BaseModel):
|
|
28
30
|
studio_profiles: StudioProfiles = Field(..., alias="studioProfiles")
|
29
31
|
|
30
32
|
|
31
|
-
class MemberService(
|
33
|
+
class MemberService(OtfItemBase):
|
32
34
|
member_service_id: int = Field(..., alias="memberServiceId")
|
33
35
|
member_service_uuid: str = Field(..., alias="memberServiceUUId")
|
34
36
|
service_name: str = Field(..., alias="serviceName")
|
@@ -49,13 +51,13 @@ class MemberService(BaseModel):
|
|
49
51
|
is_deleted: bool = Field(..., alias="isDeleted")
|
50
52
|
|
51
53
|
|
52
|
-
class ServiceItem(
|
54
|
+
class ServiceItem(OtfItemBase):
|
53
55
|
service_id: int = Field(..., alias="serviceId")
|
54
56
|
name: str
|
55
57
|
member_service: MemberService = Field(..., alias="MemberService")
|
56
58
|
|
57
59
|
|
58
|
-
class Member(
|
60
|
+
class Member(OtfItemBase):
|
59
61
|
member_id: int = Field(..., alias="memberId")
|
60
62
|
member_uuid: str = Field(..., alias="memberUUId")
|
61
63
|
cognito_id: str = Field(..., alias="cognitoId")
|
@@ -107,7 +109,7 @@ class Member(BaseModel):
|
|
107
109
|
notes: str
|
108
110
|
|
109
111
|
|
110
|
-
class Studio(
|
112
|
+
class Studio(OtfItemBase):
|
111
113
|
studio_uuid: str = Field(..., alias="studioUUId")
|
112
114
|
studio_name: str = Field(..., alias="studioName")
|
113
115
|
description: str
|
@@ -121,12 +123,12 @@ class Studio(BaseModel):
|
|
121
123
|
cr_waitlist_flag_last_updated: datetime = Field(..., alias="crWaitlistFlagLastUpdated")
|
122
124
|
|
123
125
|
|
124
|
-
class Location(
|
126
|
+
class Location(OtfItemBase):
|
125
127
|
location_id: int = Field(..., alias="locationId")
|
126
128
|
location_uuid: str = Field(..., alias="locationUUId")
|
127
129
|
|
128
130
|
|
129
|
-
class Coach(
|
131
|
+
class Coach(OtfItemBase):
|
130
132
|
coach_uuid: str = Field(..., alias="coachUUId")
|
131
133
|
first_name: str = Field(..., alias="firstName")
|
132
134
|
last_name: str = Field(..., alias="lastName")
|
@@ -134,7 +136,7 @@ class Coach(BaseModel):
|
|
134
136
|
name: str
|
135
137
|
|
136
138
|
|
137
|
-
class Class(
|
139
|
+
class Class(OtfItemBase):
|
138
140
|
class_id: int = Field(..., alias="classId")
|
139
141
|
class_uuid: str = Field(..., alias="classUUId")
|
140
142
|
mbo_studio_id: int = Field(..., alias="mboStudioId")
|
@@ -175,16 +177,16 @@ class Class(BaseModel):
|
|
175
177
|
attributes: dict[str, Any]
|
176
178
|
|
177
179
|
|
178
|
-
class Class1(
|
180
|
+
class Class1(OtfItemBase):
|
179
181
|
mbo_studio_id: int = Field(..., alias="mboStudioId")
|
180
182
|
studio_uuid: str = Field(..., alias="studioUUId")
|
181
183
|
|
182
184
|
|
183
|
-
class CustomData(
|
185
|
+
class CustomData(OtfItemBase):
|
184
186
|
otf_class: Class1 = Field(..., alias="class")
|
185
187
|
|
186
188
|
|
187
|
-
class SavedBooking(
|
189
|
+
class SavedBooking(OtfItemBase):
|
188
190
|
class_booking_id: int = Field(..., alias="classBookingId")
|
189
191
|
class_booking_uuid: str = Field(..., alias="classBookingUUId")
|
190
192
|
studio_id: int = Field(..., alias="studioId")
|
@@ -211,19 +213,19 @@ class SavedBooking(BaseModel):
|
|
211
213
|
attributes: dict[str, Any]
|
212
214
|
|
213
215
|
|
214
|
-
class FieldModel(
|
216
|
+
class FieldModel(OtfItemBase):
|
215
217
|
xsi_nil: str = Field(..., alias="xsiNil")
|
216
218
|
|
217
219
|
|
218
|
-
class FacilitySquareFeet(
|
220
|
+
class FacilitySquareFeet(OtfItemBase):
|
219
221
|
field_: FieldModel
|
220
222
|
|
221
223
|
|
222
|
-
class TreatmentRooms(
|
224
|
+
class TreatmentRooms(OtfItemBase):
|
223
225
|
field_: FieldModel
|
224
226
|
|
225
227
|
|
226
|
-
class Location1(
|
228
|
+
class Location1(OtfItemBase):
|
227
229
|
site_id: str | Any = Field(..., alias="siteId")
|
228
230
|
business_description: str | Any = Field(..., alias="businessDescription")
|
229
231
|
additional_image_ur_ls: str | Any = Field(..., alias="additionalImageUrLs")
|
@@ -247,38 +249,38 @@ class Location1(BaseModel):
|
|
247
249
|
longitude: str
|
248
250
|
|
249
251
|
|
250
|
-
class MaxCapacity(
|
252
|
+
class MaxCapacity(OtfItemBase):
|
251
253
|
field_: FieldModel | Any
|
252
254
|
|
253
255
|
|
254
|
-
class WebCapacity(
|
256
|
+
class WebCapacity(OtfItemBase):
|
255
257
|
field_: FieldModel | Any
|
256
258
|
|
257
259
|
|
258
|
-
class TotalBookedWaitlist(
|
260
|
+
class TotalBookedWaitlist(OtfItemBase):
|
259
261
|
field_: FieldModel | Any
|
260
262
|
|
261
263
|
|
262
|
-
class WebBooked(
|
264
|
+
class WebBooked(OtfItemBase):
|
263
265
|
field_: FieldModel | Any
|
264
266
|
|
265
267
|
|
266
|
-
class SemesterId(
|
268
|
+
class SemesterId(OtfItemBase):
|
267
269
|
field_: FieldModel | Any
|
268
270
|
|
269
271
|
|
270
|
-
class Program(
|
272
|
+
class Program(OtfItemBase):
|
271
273
|
id: str
|
272
274
|
name: str
|
273
275
|
schedule_type: str = Field(..., alias="scheduleType")
|
274
276
|
cancel_offset: str = Field(..., alias="cancelOffset")
|
275
277
|
|
276
278
|
|
277
|
-
class DefaultTimeLength(
|
279
|
+
class DefaultTimeLength(OtfItemBase):
|
278
280
|
field_: FieldModel
|
279
281
|
|
280
282
|
|
281
|
-
class SessionType(
|
283
|
+
class SessionType(OtfItemBase):
|
282
284
|
default_time_length: DefaultTimeLength = Field(..., alias="defaultTimeLength")
|
283
285
|
program_id: str = Field(..., alias="programId")
|
284
286
|
num_deducted: str = Field(..., alias="numDeducted")
|
@@ -289,7 +291,7 @@ class SessionType(BaseModel):
|
|
289
291
|
available_for_add_on: str = Field(..., alias="availableForAddOn")
|
290
292
|
|
291
293
|
|
292
|
-
class ClassDescription(
|
294
|
+
class ClassDescription(OtfItemBase):
|
293
295
|
id: str
|
294
296
|
name: str
|
295
297
|
description: str
|
@@ -300,7 +302,7 @@ class ClassDescription(BaseModel):
|
|
300
302
|
session_type: SessionType = Field(..., alias="sessionType")
|
301
303
|
|
302
304
|
|
303
|
-
class Staff(
|
305
|
+
class Staff(OtfItemBase):
|
304
306
|
email: str
|
305
307
|
mobile_phone: str = Field(..., alias="mobilePhone")
|
306
308
|
state: str
|
@@ -318,25 +320,25 @@ class Staff(BaseModel):
|
|
318
320
|
is_male: str = Field(..., alias="isMale")
|
319
321
|
|
320
322
|
|
321
|
-
class AgreementDate(
|
323
|
+
class AgreementDate(OtfItemBase):
|
322
324
|
field_: FieldModel
|
323
325
|
|
324
326
|
|
325
|
-
class ReleasedBy(
|
327
|
+
class ReleasedBy(OtfItemBase):
|
326
328
|
field_: FieldModel
|
327
329
|
|
328
330
|
|
329
|
-
class Liability(
|
331
|
+
class Liability(OtfItemBase):
|
330
332
|
is_released: str = Field(..., alias="isReleased")
|
331
333
|
agreement_date: AgreementDate = Field(..., alias="agreementDate")
|
332
334
|
released_by: ReleasedBy = Field(..., alias="releasedBy")
|
333
335
|
|
334
336
|
|
335
|
-
class FirstAppointmentDate(
|
337
|
+
class FirstAppointmentDate(OtfItemBase):
|
336
338
|
field_: FieldModel
|
337
339
|
|
338
340
|
|
339
|
-
class Client(
|
341
|
+
class Client(OtfItemBase):
|
340
342
|
notes: str
|
341
343
|
mobile_provider: str = Field(..., alias="mobileProvider")
|
342
344
|
appointment_gender_preference: str = Field(..., alias="appointmentGenderPreference")
|
@@ -369,7 +371,7 @@ class Client(BaseModel):
|
|
369
371
|
member_uuid: str = Field(..., alias="memberUUId")
|
370
372
|
|
371
373
|
|
372
|
-
class MboClass(
|
374
|
+
class MboClass(OtfItemBase):
|
373
375
|
class_schedule_id: str = Field(..., alias="classScheduleId")
|
374
376
|
location: Location1
|
375
377
|
max_capacity: MaxCapacity = Field(..., alias="maxCapacity")
|
@@ -394,12 +396,12 @@ class MboClass(BaseModel):
|
|
394
396
|
client: Client
|
395
397
|
|
396
398
|
|
397
|
-
class MboResponseItem(
|
399
|
+
class MboResponseItem(OtfItemBase):
|
398
400
|
class_booking_uuid: str | Any = Field(..., alias="classBookingUUId")
|
399
401
|
action: str | Any
|
400
402
|
otf_class: MboClass | Any = Field(..., alias="class")
|
401
403
|
|
402
404
|
|
403
|
-
class BookClass(
|
405
|
+
class BookClass(OtfItemBase):
|
404
406
|
saved_bookings: list[SavedBooking] = Field(..., alias="savedBookings")
|
405
407
|
mbo_response: list[MboResponseItem] = Field(..., alias="mboResponse")
|
@@ -1,9 +1,11 @@
|
|
1
1
|
from datetime import datetime
|
2
2
|
|
3
|
-
from pydantic import
|
3
|
+
from pydantic import Field
|
4
4
|
|
5
|
+
from otf_api.models.base import OtfItemBase
|
5
6
|
|
6
|
-
|
7
|
+
|
8
|
+
class Studio(OtfItemBase):
|
7
9
|
studio_uuid: str = Field(..., alias="studioUUId")
|
8
10
|
studio_name: str = Field(..., alias="studioName")
|
9
11
|
description: str
|
@@ -17,7 +19,7 @@ class Studio(BaseModel):
|
|
17
19
|
cr_waitlist_flag_last_updated: datetime = Field(..., alias="crWaitlistFlagLastUpdated")
|
18
20
|
|
19
21
|
|
20
|
-
class Coach(
|
22
|
+
class Coach(OtfItemBase):
|
21
23
|
coach_uuid: str = Field(..., alias="coachUUId")
|
22
24
|
name: str
|
23
25
|
first_name: str = Field(..., alias="firstName")
|
@@ -25,7 +27,7 @@ class Coach(BaseModel):
|
|
25
27
|
mbo_coach_id: int = Field(..., alias="mboCoachId")
|
26
28
|
|
27
29
|
|
28
|
-
class Class(
|
30
|
+
class Class(OtfItemBase):
|
29
31
|
class_uuid: str = Field(..., alias="classUUId")
|
30
32
|
name: str
|
31
33
|
description: str
|
@@ -40,7 +42,7 @@ class Class(BaseModel):
|
|
40
42
|
coach: Coach
|
41
43
|
|
42
44
|
|
43
|
-
class HomeStudio(
|
45
|
+
class HomeStudio(OtfItemBase):
|
44
46
|
studio_uuid: str = Field(..., alias="studioUUId")
|
45
47
|
studio_name: str = Field(..., alias="studioName")
|
46
48
|
description: str
|
@@ -54,7 +56,7 @@ class HomeStudio(BaseModel):
|
|
54
56
|
cr_waitlist_flag_last_updated: datetime = Field(..., alias="crWaitlistFlagLastUpdated")
|
55
57
|
|
56
58
|
|
57
|
-
class Member(
|
59
|
+
class Member(OtfItemBase):
|
58
60
|
member_id: int = Field(..., alias="memberId")
|
59
61
|
member_uuid: str = Field(..., alias="memberUUId")
|
60
62
|
email: str
|
@@ -67,7 +69,7 @@ class Member(BaseModel):
|
|
67
69
|
home_studio: HomeStudio = Field(..., alias="homeStudio")
|
68
70
|
|
69
71
|
|
70
|
-
class CancelBooking(
|
72
|
+
class CancelBooking(OtfItemBase):
|
71
73
|
class_booking_id: int = Field(..., alias="classBookingId")
|
72
74
|
class_booking_uuid: str = Field(..., alias="classBookingUUId")
|
73
75
|
studio_id: int = Field(..., alias="studioId")
|
@@ -1,9 +1,9 @@
|
|
1
1
|
from datetime import datetime
|
2
|
-
from typing import Any
|
2
|
+
from typing import Any, ClassVar
|
3
3
|
|
4
4
|
from pydantic import Field
|
5
5
|
|
6
|
-
from otf_api.models.base import OtfItemBase
|
6
|
+
from otf_api.models.base import OtfItemBase, OtfListBase
|
7
7
|
|
8
8
|
|
9
9
|
class MetricEntry(OtfItemBase):
|
@@ -64,5 +64,6 @@ class ChallengeTrackerDetail(OtfItemBase):
|
|
64
64
|
challenge_histories: list[ChallengeHistory] = Field(..., alias="ChallengeHistories")
|
65
65
|
|
66
66
|
|
67
|
-
class ChallengeTrackerDetailList(
|
67
|
+
class ChallengeTrackerDetailList(OtfListBase):
|
68
|
+
collection_field: ClassVar[str] = "details"
|
68
69
|
details: list[ChallengeTrackerDetail]
|
@@ -1,8 +1,9 @@
|
|
1
1
|
from datetime import datetime
|
2
|
+
from typing import ClassVar
|
2
3
|
|
3
4
|
from pydantic import Field
|
4
5
|
|
5
|
-
from otf_api.models.base import OtfItemBase
|
6
|
+
from otf_api.models.base import OtfItemBase, OtfListBase
|
6
7
|
|
7
8
|
|
8
9
|
class Location(OtfItemBase):
|
@@ -94,7 +95,8 @@ class FavoriteStudio(OtfItemBase):
|
|
94
95
|
studio_location: StudioLocation = Field(..., alias="studioLocation")
|
95
96
|
|
96
97
|
|
97
|
-
class FavoriteStudioList(
|
98
|
+
class FavoriteStudioList(OtfListBase):
|
99
|
+
collection_field: ClassVar[str] = "studios"
|
98
100
|
studios: list[FavoriteStudio]
|
99
101
|
|
100
102
|
@property
|
@@ -1,6 +1,8 @@
|
|
1
1
|
from enum import Enum
|
2
2
|
|
3
|
-
from pydantic import
|
3
|
+
from pydantic import Field
|
4
|
+
|
5
|
+
from otf_api.models.base import OtfItemBase
|
4
6
|
|
5
7
|
|
6
8
|
class StatsTime(str, Enum):
|
@@ -19,20 +21,20 @@ class StatsType(str, Enum):
|
|
19
21
|
All = "allStats"
|
20
22
|
|
21
23
|
|
22
|
-
class OutStudioMixin(
|
24
|
+
class OutStudioMixin(OtfItemBase):
|
23
25
|
walking_distance: float = Field(..., alias="walkingDistance")
|
24
26
|
running_distance: float = Field(..., alias="runningDistance")
|
25
27
|
cycling_distance: float = Field(..., alias="cyclingDistance")
|
26
28
|
|
27
29
|
|
28
|
-
class InStudioMixin(
|
30
|
+
class InStudioMixin(OtfItemBase):
|
29
31
|
treadmill_distance: float = Field(..., alias="treadmillDistance")
|
30
32
|
treadmill_elevation_gained: float = Field(..., alias="treadmillElevationGained")
|
31
33
|
rower_distance: float = Field(..., alias="rowerDistance")
|
32
34
|
rower_watt: float = Field(..., alias="rowerWatt")
|
33
35
|
|
34
36
|
|
35
|
-
class BaseStatsData(
|
37
|
+
class BaseStatsData(OtfItemBase):
|
36
38
|
calories: float
|
37
39
|
splat_point: float = Field(..., alias="splatPoint")
|
38
40
|
total_black_zone: float = Field(..., alias="totalBlackZone")
|
@@ -56,7 +58,7 @@ class AllStatsData(OutStudioMixin, InStudioMixin, BaseStatsData):
|
|
56
58
|
pass
|
57
59
|
|
58
60
|
|
59
|
-
class OutStudioTimeStats(
|
61
|
+
class OutStudioTimeStats(OtfItemBase):
|
60
62
|
last_year: OutStudioStatsData = Field(..., alias="lastYear")
|
61
63
|
this_year: OutStudioStatsData = Field(..., alias="thisYear")
|
62
64
|
last_month: OutStudioStatsData = Field(..., alias="lastMonth")
|
@@ -66,7 +68,7 @@ class OutStudioTimeStats(BaseModel):
|
|
66
68
|
all_time: OutStudioStatsData = Field(..., alias="allTime")
|
67
69
|
|
68
70
|
|
69
|
-
class InStudioTimeStats(
|
71
|
+
class InStudioTimeStats(OtfItemBase):
|
70
72
|
last_year: InStudioStatsData = Field(..., alias="lastYear")
|
71
73
|
this_year: InStudioStatsData = Field(..., alias="thisYear")
|
72
74
|
last_month: InStudioStatsData = Field(..., alias="lastMonth")
|
@@ -76,7 +78,7 @@ class InStudioTimeStats(BaseModel):
|
|
76
78
|
all_time: InStudioStatsData = Field(..., alias="allTime")
|
77
79
|
|
78
80
|
|
79
|
-
class AllStatsTimeStats(
|
81
|
+
class AllStatsTimeStats(OtfItemBase):
|
80
82
|
last_year: AllStatsData = Field(..., alias="lastYear")
|
81
83
|
this_year: AllStatsData = Field(..., alias="thisYear")
|
82
84
|
last_month: AllStatsData = Field(..., alias="lastMonth")
|
@@ -86,7 +88,7 @@ class AllStatsTimeStats(BaseModel):
|
|
86
88
|
all_time: AllStatsData = Field(..., alias="allTime")
|
87
89
|
|
88
90
|
|
89
|
-
class StatsResponse(
|
91
|
+
class StatsResponse(OtfItemBase):
|
90
92
|
all_stats: AllStatsTimeStats = Field(..., alias="allStats")
|
91
93
|
in_studio: InStudioTimeStats = Field(..., alias="inStudio")
|
92
94
|
out_studio: OutStudioTimeStats = Field(..., alias="outStudio")
|
@@ -2,7 +2,7 @@ from datetime import datetime
|
|
2
2
|
|
3
3
|
from pydantic import Field
|
4
4
|
|
5
|
-
from otf_api.models.base import OtfItemBase
|
5
|
+
from otf_api.models.base import OtfItemBase, OtfListBase
|
6
6
|
|
7
7
|
|
8
8
|
class Location(OtfItemBase):
|
@@ -131,5 +131,5 @@ class MemberPurchase(OtfItemBase):
|
|
131
131
|
studio: Studio
|
132
132
|
|
133
133
|
|
134
|
-
class MemberPurchaseList(
|
134
|
+
class MemberPurchaseList(OtfListBase):
|
135
135
|
data: list[MemberPurchase]
|
{otf_api-0.6.1 → otf_api-0.6.2}/src/otf_api/models/responses/out_of_studio_workout_history.py
RENAMED
@@ -2,7 +2,7 @@ from datetime import datetime
|
|
2
2
|
|
3
3
|
from pydantic import Field
|
4
4
|
|
5
|
-
from otf_api.models.base import OtfItemBase
|
5
|
+
from otf_api.models.base import OtfItemBase, OtfListBase
|
6
6
|
|
7
7
|
|
8
8
|
class WorkoutType(OtfItemBase):
|
@@ -37,5 +37,5 @@ class OutOfStudioWorkoutHistory(OtfItemBase):
|
|
37
37
|
max_heartrate: int = Field(..., alias="maxHeartrate")
|
38
38
|
|
39
39
|
|
40
|
-
class OutOfStudioWorkoutHistoryList(
|
40
|
+
class OutOfStudioWorkoutHistoryList(OtfListBase):
|
41
41
|
data: list[OutOfStudioWorkoutHistory]
|
@@ -1,7 +1,9 @@
|
|
1
|
-
from pydantic import
|
1
|
+
from pydantic import Field
|
2
2
|
|
3
|
+
from otf_api.models.base import OtfItemBase
|
3
4
|
|
4
|
-
|
5
|
+
|
6
|
+
class ZoneTimeMinutes(OtfItemBase):
|
5
7
|
gray: int
|
6
8
|
blue: int
|
7
9
|
green: int
|
@@ -9,7 +11,7 @@ class ZoneTimeMinutes(BaseModel):
|
|
9
11
|
red: int
|
10
12
|
|
11
13
|
|
12
|
-
class HeartRate(
|
14
|
+
class HeartRate(OtfItemBase):
|
13
15
|
max_hr: int
|
14
16
|
peak_hr: int
|
15
17
|
peak_hr_percent: int
|
@@ -17,19 +19,19 @@ class HeartRate(BaseModel):
|
|
17
19
|
avg_hr_percent: int
|
18
20
|
|
19
21
|
|
20
|
-
class PerformanceMetricFloat(
|
22
|
+
class PerformanceMetricFloat(OtfItemBase):
|
21
23
|
display_value: float
|
22
24
|
display_unit: str
|
23
25
|
metric_value: float
|
24
26
|
|
25
27
|
|
26
|
-
class PerformanceMetricString(
|
28
|
+
class PerformanceMetricString(OtfItemBase):
|
27
29
|
display_value: str
|
28
30
|
display_unit: str
|
29
31
|
metric_value: str
|
30
32
|
|
31
33
|
|
32
|
-
class BaseEquipment(
|
34
|
+
class BaseEquipment(OtfItemBase):
|
33
35
|
avg_pace: PerformanceMetricString
|
34
36
|
avg_speed: PerformanceMetricFloat
|
35
37
|
max_pace: PerformanceMetricString
|
@@ -50,12 +52,12 @@ class Rower(BaseEquipment):
|
|
50
52
|
max_cadence: PerformanceMetricFloat
|
51
53
|
|
52
54
|
|
53
|
-
class EquipmentData(
|
55
|
+
class EquipmentData(OtfItemBase):
|
54
56
|
treadmill: Treadmill
|
55
57
|
rower: Rower
|
56
58
|
|
57
59
|
|
58
|
-
class Details(
|
60
|
+
class Details(OtfItemBase):
|
59
61
|
calories_burned: int
|
60
62
|
splat_points: int
|
61
63
|
step_count: int
|
@@ -65,12 +67,12 @@ class Details(BaseModel):
|
|
65
67
|
equipment_data: EquipmentData
|
66
68
|
|
67
69
|
|
68
|
-
class Class(
|
70
|
+
class Class(OtfItemBase):
|
69
71
|
starts_at_local: str
|
70
72
|
name: str
|
71
73
|
|
72
74
|
|
73
|
-
class PerformanceSummaryDetail(
|
75
|
+
class PerformanceSummaryDetail(OtfItemBase):
|
74
76
|
id: str
|
75
77
|
details: Details
|
76
78
|
ratable: bool
|
@@ -1,6 +1,8 @@
|
|
1
|
+
from typing import ClassVar
|
2
|
+
|
1
3
|
from pydantic import Field
|
2
4
|
|
3
|
-
from otf_api.models.base import OtfItemBase
|
5
|
+
from otf_api.models.base import OtfItemBase, OtfListBase
|
4
6
|
|
5
7
|
|
6
8
|
class ZoneTimeMinutes(OtfItemBase):
|
@@ -64,5 +66,6 @@ class PerformanceSummaryEntry(OtfItemBase):
|
|
64
66
|
ratings: Ratings | None = None
|
65
67
|
|
66
68
|
|
67
|
-
class PerformanceSummaryList(
|
69
|
+
class PerformanceSummaryList(OtfListBase):
|
70
|
+
collection_field: ClassVar[str] = "summaries"
|
68
71
|
summaries: list[PerformanceSummaryEntry]
|
@@ -1,8 +1,9 @@
|
|
1
1
|
from datetime import datetime
|
2
|
+
from typing import ClassVar
|
2
3
|
|
3
4
|
from pydantic import Field
|
4
5
|
|
5
|
-
from otf_api.models.base import OtfItemBase
|
6
|
+
from otf_api.models.base import OtfItemBase, OtfListBase
|
6
7
|
|
7
8
|
|
8
9
|
class Country(OtfItemBase):
|
@@ -107,5 +108,6 @@ class Pagination(OtfItemBase):
|
|
107
108
|
total_pages: int = Field(..., alias="totalPages")
|
108
109
|
|
109
110
|
|
110
|
-
class StudioDetailList(
|
111
|
+
class StudioDetailList(OtfListBase):
|
112
|
+
collection_field: ClassVar[str] = "studios"
|
111
113
|
studios: list[StudioDetail]
|
@@ -2,7 +2,7 @@ from datetime import datetime
|
|
2
2
|
|
3
3
|
from pydantic import Field
|
4
4
|
|
5
|
-
from otf_api.models.base import OtfItemBase
|
5
|
+
from otf_api.models.base import OtfItemBase, OtfListBase
|
6
6
|
|
7
7
|
|
8
8
|
class Currency(OtfItemBase):
|
@@ -53,5 +53,5 @@ class StudioService(OtfItemBase):
|
|
53
53
|
studio: Studio
|
54
54
|
|
55
55
|
|
56
|
-
class StudioServiceList(
|
56
|
+
class StudioServiceList(OtfListBase):
|
57
57
|
data: list[StudioService]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|