otf-api 0.6.2__py3-none-any.whl → 0.6.4__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.
- otf_api/__init__.py +1 -1
- otf_api/models/__init__.py +0 -2
- otf_api/models/responses/__init__.py +1 -2
- otf_api/models/responses/book_class.py +13 -13
- otf_api/models/responses/bookings.py +0 -66
- otf_api/models/responses/cancel_booking.py +2 -2
- otf_api/models/responses/challenge_tracker_detail.py +4 -4
- otf_api/models/responses/classes.py +2 -32
- otf_api/models/responses/enums.py +0 -29
- otf_api/models/responses/member_detail.py +7 -7
- otf_api/models/responses/member_purchases.py +3 -3
- otf_api/models/responses/studio_detail.py +2 -2
- otf_api/models/responses/telemetry.py +1 -1
- {otf_api-0.6.2.dist-info → otf_api-0.6.4.dist-info}/METADATA +1 -1
- {otf_api-0.6.2.dist-info → otf_api-0.6.4.dist-info}/RECORD +18 -18
- {otf_api-0.6.2.dist-info → otf_api-0.6.4.dist-info}/AUTHORS.md +0 -0
- {otf_api-0.6.2.dist-info → otf_api-0.6.4.dist-info}/LICENSE +0 -0
- {otf_api-0.6.2.dist-info → otf_api-0.6.4.dist-info}/WHEEL +0 -0
otf_api/__init__.py
CHANGED
otf_api/models/__init__.py
CHANGED
@@ -11,7 +11,6 @@ from .responses import (
|
|
11
11
|
DoW,
|
12
12
|
EquipmentType,
|
13
13
|
FavoriteStudioList,
|
14
|
-
HistoryClassStatus,
|
15
14
|
LatestAgreement,
|
16
15
|
MemberDetail,
|
17
16
|
MemberMembership,
|
@@ -45,7 +44,6 @@ __all__ = [
|
|
45
44
|
"DoW",
|
46
45
|
"EquipmentType",
|
47
46
|
"FavoriteStudioList",
|
48
|
-
"HistoryClassStatus",
|
49
47
|
"LatestAgreement",
|
50
48
|
"MemberDetail",
|
51
49
|
"MemberMembership",
|
@@ -5,7 +5,7 @@ from .cancel_booking import CancelBooking
|
|
5
5
|
from .challenge_tracker_content import ChallengeTrackerContent
|
6
6
|
from .challenge_tracker_detail import ChallengeTrackerDetailList
|
7
7
|
from .classes import ClassType, DoW, OtfClassList
|
8
|
-
from .enums import ChallengeType, EquipmentType
|
8
|
+
from .enums import ChallengeType, EquipmentType
|
9
9
|
from .favorite_studios import FavoriteStudioList
|
10
10
|
from .latest_agreement import LatestAgreement
|
11
11
|
from .lifetime_stats import StatsResponse, StatsTime
|
@@ -35,7 +35,6 @@ __all__ = [
|
|
35
35
|
"DoW",
|
36
36
|
"EquipmentType",
|
37
37
|
"FavoriteStudioList",
|
38
|
-
"HistoryClassStatus",
|
39
38
|
"LatestAgreement",
|
40
39
|
"MemberDetail",
|
41
40
|
"MemberMembership",
|
@@ -70,16 +70,16 @@ class Member(OtfItemBase):
|
|
70
70
|
first_name: str = Field(..., alias="firstName")
|
71
71
|
last_name: str = Field(..., alias="lastName")
|
72
72
|
email: str
|
73
|
-
profile_picture_url: None = Field(..., alias="profilePictureUrl")
|
73
|
+
profile_picture_url: str | None = Field(..., alias="profilePictureUrl")
|
74
74
|
alternate_emails: None = Field(..., alias="alternateEmails")
|
75
|
-
address_line1: None = Field(..., alias="addressLine1")
|
76
|
-
address_line2: None = Field(..., alias="addressLine2")
|
77
|
-
city: None
|
78
|
-
state: None
|
79
|
-
postal_code: None = Field(..., alias="postalCode")
|
75
|
+
address_line1: str | None = Field(..., alias="addressLine1")
|
76
|
+
address_line2: str | None = Field(..., alias="addressLine2")
|
77
|
+
city: str | None
|
78
|
+
state: str | None
|
79
|
+
postal_code: str | None = Field(..., alias="postalCode")
|
80
80
|
phone_number: str = Field(..., alias="phoneNumber")
|
81
81
|
home_phone: str = Field(..., alias="homePhone")
|
82
|
-
work_phone: None = Field(..., alias="workPhone")
|
82
|
+
work_phone: str | None = Field(..., alias="workPhone")
|
83
83
|
phone_type: None = Field(..., alias="phoneType")
|
84
84
|
birth_day: str = Field(..., alias="birthDay")
|
85
85
|
cc_last4: str = Field(..., alias="ccLast4")
|
@@ -195,13 +195,13 @@ class SavedBooking(OtfItemBase):
|
|
195
195
|
member_id: int = Field(..., alias="memberId")
|
196
196
|
mbo_member_id: str = Field(..., alias="mboMemberId")
|
197
197
|
mbo_class_id: int = Field(..., alias="mboClassId")
|
198
|
-
mbo_visit_id: None = Field(..., alias="mboVisitId")
|
199
|
-
mbo_waitlist_entry_id: None = Field(..., alias="mboWaitlistEntryId")
|
200
|
-
mbo_sync_message: None = Field(..., alias="mboSyncMessage")
|
198
|
+
mbo_visit_id: int | None = Field(..., alias="mboVisitId")
|
199
|
+
mbo_waitlist_entry_id: int | None = Field(..., alias="mboWaitlistEntryId")
|
200
|
+
mbo_sync_message: str | None = Field(..., alias="mboSyncMessage")
|
201
201
|
status: str
|
202
202
|
booked_date: datetime = Field(..., alias="bookedDate")
|
203
|
-
checked_in_date: None = Field(..., alias="checkedInDate")
|
204
|
-
cancelled_date: None = Field(..., alias="cancelledDate")
|
203
|
+
checked_in_date: datetime | None = Field(..., alias="checkedInDate")
|
204
|
+
cancelled_date: datetime | None = Field(..., alias="cancelledDate")
|
205
205
|
created_by: str | None = Field(None, alias="createdBy")
|
206
206
|
created_date: datetime | None = Field(None, alias="createdDate")
|
207
207
|
updated_by: str | None = Field(None, alias="updatedBy")
|
@@ -376,7 +376,7 @@ class MboClass(OtfItemBase):
|
|
376
376
|
location: Location1
|
377
377
|
max_capacity: MaxCapacity = Field(..., alias="maxCapacity")
|
378
378
|
web_capacity: WebCapacity = Field(..., alias="webCapacity")
|
379
|
-
total_booked: None = Field(..., alias="totalBooked")
|
379
|
+
total_booked: int | None = Field(..., alias="totalBooked")
|
380
380
|
total_booked_waitlist: TotalBookedWaitlist = Field(..., alias="totalBookedWaitlist")
|
381
381
|
web_booked: WebBooked = Field(..., alias="webBooked")
|
382
382
|
semester_id: SemesterId = Field(..., alias="semesterId")
|
@@ -2,7 +2,6 @@ from datetime import datetime
|
|
2
2
|
from enum import Enum
|
3
3
|
from typing import ClassVar
|
4
4
|
|
5
|
-
from inflection import humanize
|
6
5
|
from pydantic import Field
|
7
6
|
|
8
7
|
from otf_api.models.base import OtfItemBase, OtfListBase
|
@@ -17,10 +16,6 @@ class StudioStatus(str, Enum):
|
|
17
16
|
TEMP_CLOSED = "Temporarily Closed"
|
18
17
|
PERM_CLOSED = "Permanently Closed"
|
19
18
|
|
20
|
-
@classmethod
|
21
|
-
def all_statuses(cls) -> list[str]:
|
22
|
-
return list(cls.__members__.values())
|
23
|
-
|
24
19
|
|
25
20
|
class BookingStatus(str, Enum):
|
26
21
|
CheckedIn = "Checked In"
|
@@ -34,46 +29,6 @@ class BookingStatus(str, Enum):
|
|
34
29
|
CheckinRequested = "Checkin Requested"
|
35
30
|
CheckinCancelled = "Checkin Cancelled"
|
36
31
|
|
37
|
-
@classmethod
|
38
|
-
def get_from_key_insensitive(cls, key: str) -> "BookingStatus":
|
39
|
-
lcase_to_actual = {item.lower(): item for item in cls._member_map_}
|
40
|
-
val = cls.__members__.get(lcase_to_actual[key.lower()])
|
41
|
-
if not val:
|
42
|
-
raise ValueError(f"Invalid BookingStatus: {key}")
|
43
|
-
return val
|
44
|
-
|
45
|
-
@classmethod
|
46
|
-
def get_case_insensitive(cls, value: str) -> str:
|
47
|
-
lcase_to_actual = {item.value.lower(): item.value for item in cls}
|
48
|
-
return lcase_to_actual[value.lower()]
|
49
|
-
|
50
|
-
@classmethod
|
51
|
-
def all_statuses(cls) -> list[str]:
|
52
|
-
return list(cls.__members__.values())
|
53
|
-
|
54
|
-
|
55
|
-
class BookingStatusCli(str, Enum):
|
56
|
-
"""Flipped enum so that the CLI does not have values with spaces"""
|
57
|
-
|
58
|
-
CheckedIn = "CheckedIn"
|
59
|
-
CancelCheckinPending = "CancelCheckinPending"
|
60
|
-
CancelCheckinRequested = "CancelCheckinRequested"
|
61
|
-
Cancelled = "Cancelled"
|
62
|
-
LateCancelled = "LateCancelled"
|
63
|
-
Booked = "Booked"
|
64
|
-
Waitlisted = "Waitlisted"
|
65
|
-
CheckinPending = "CheckinPending"
|
66
|
-
CheckinRequested = "CheckinRequested"
|
67
|
-
CheckinCancelled = "CheckinCancelled"
|
68
|
-
|
69
|
-
@classmethod
|
70
|
-
def to_standard_case_insensitive(cls, key: str) -> BookingStatus:
|
71
|
-
lcase_to_actual = {item.lower(): item for item in cls._member_map_}
|
72
|
-
val = cls.__members__.get(lcase_to_actual[key.lower()])
|
73
|
-
if not val:
|
74
|
-
raise ValueError(f"Invalid BookingStatus: {key}")
|
75
|
-
return BookingStatus(val)
|
76
|
-
|
77
32
|
@classmethod
|
78
33
|
def get_case_insensitive(cls, value: str) -> str:
|
79
34
|
lcase_to_actual = {item.value.lower(): item.value for item in cls}
|
@@ -162,23 +117,6 @@ class OtfClass(OtfItemBase, OtfClassTimeMixin):
|
|
162
117
|
location: Location
|
163
118
|
virtual_class: bool | None = Field(None, alias="virtualClass")
|
164
119
|
|
165
|
-
@classmethod
|
166
|
-
def attr_to_column_header(cls, attr: str) -> str:
|
167
|
-
attr_map = {k: humanize(k) for k in cls.model_fields}
|
168
|
-
overrides = {
|
169
|
-
"day_of_week": "Class DoW",
|
170
|
-
"date": "Class Date",
|
171
|
-
"time": "Class Time",
|
172
|
-
"duration": "Class Duration",
|
173
|
-
"name": "Class Name",
|
174
|
-
"is_home_studio": "Home Studio",
|
175
|
-
"is_booked": "Booked",
|
176
|
-
}
|
177
|
-
|
178
|
-
attr_map.update(overrides)
|
179
|
-
|
180
|
-
return attr_map.get(attr, attr)
|
181
|
-
|
182
120
|
|
183
121
|
class Member(OtfItemBase):
|
184
122
|
member_uuid: str = Field(alias="memberUUId")
|
@@ -216,10 +154,6 @@ class Booking(OtfItemBase):
|
|
216
154
|
otf_class: OtfClass = Field(alias="class")
|
217
155
|
is_home_studio: bool | None = Field(None, description="Custom helper field to determine if at home studio")
|
218
156
|
|
219
|
-
@property
|
220
|
-
def id_val(self) -> str:
|
221
|
-
return self.class_booking_id
|
222
|
-
|
223
157
|
|
224
158
|
class BookingList(OtfListBase):
|
225
159
|
collection_field: ClassVar[str] = "bookings"
|
@@ -79,11 +79,11 @@ class CancelBooking(OtfItemBase):
|
|
79
79
|
mbo_member_id: str = Field(..., alias="mboMemberId")
|
80
80
|
mbo_class_id: int = Field(..., alias="mboClassId")
|
81
81
|
mbo_visit_id: int = Field(..., alias="mboVisitId")
|
82
|
-
mbo_waitlist_entry_id: None = Field(..., alias="mboWaitlistEntryId")
|
82
|
+
mbo_waitlist_entry_id: int | None = Field(..., alias="mboWaitlistEntryId")
|
83
83
|
mbo_sync_message: str = Field(..., alias="mboSyncMessage")
|
84
84
|
status: str
|
85
85
|
booked_date: datetime = Field(..., alias="bookedDate")
|
86
|
-
checked_in_date: None = Field(..., alias="checkedInDate")
|
86
|
+
checked_in_date: datetime | None = Field(..., alias="checkedInDate")
|
87
87
|
cancelled_date: datetime = Field(..., alias="cancelledDate")
|
88
88
|
created_by: str = Field(..., alias="createdBy")
|
89
89
|
created_date: datetime = Field(..., alias="createdDate")
|
@@ -22,15 +22,15 @@ class BenchmarkHistory(OtfItemBase):
|
|
22
22
|
date_created: datetime = Field(..., alias="DateCreated")
|
23
23
|
date_updated: datetime = Field(..., alias="DateUpdated")
|
24
24
|
class_time: datetime = Field(..., alias="ClassTime")
|
25
|
-
challenge_sub_category_id: None = Field(..., alias="ChallengeSubCategoryId")
|
25
|
+
challenge_sub_category_id: int | None = Field(..., alias="ChallengeSubCategoryId")
|
26
26
|
class_id: int = Field(..., alias="ClassId")
|
27
27
|
substitute_id: int | None = Field(..., alias="SubstituteId")
|
28
28
|
weight_lbs: int = Field(..., alias="WeightLBS")
|
29
29
|
class_name: str = Field(..., alias="ClassName")
|
30
30
|
coach_name: str = Field(..., alias="CoachName")
|
31
31
|
coach_image_url: str = Field(..., alias="CoachImageUrl")
|
32
|
-
workout_type_id: None = Field(..., alias="WorkoutTypeId")
|
33
|
-
workout_id: None = Field(..., alias="WorkoutId")
|
32
|
+
workout_type_id: int | None = Field(..., alias="WorkoutTypeId")
|
33
|
+
workout_id: int | None = Field(..., alias="WorkoutId")
|
34
34
|
linked_challenges: list[Any] = Field(
|
35
35
|
..., alias="LinkedChallenges"
|
36
36
|
) # not sure what this will be, never seen it before
|
@@ -50,7 +50,7 @@ class ChallengeHistory(OtfItemBase):
|
|
50
50
|
|
51
51
|
class ChallengeTrackerDetail(OtfItemBase):
|
52
52
|
challenge_category_id: int = Field(..., alias="ChallengeCategoryId")
|
53
|
-
challenge_sub_category_id: None = Field(..., alias="ChallengeSubCategoryId")
|
53
|
+
challenge_sub_category_id: int | None = Field(..., alias="ChallengeSubCategoryId")
|
54
54
|
equipment_id: int = Field(..., alias="EquipmentId")
|
55
55
|
equipment_name: str = Field(..., alias="EquipmentName")
|
56
56
|
metric_entry: MetricEntry = Field(..., alias="MetricEntry")
|
@@ -18,8 +18,8 @@ class DoW(str, Enum):
|
|
18
18
|
sunday = "sunday"
|
19
19
|
|
20
20
|
@classmethod
|
21
|
-
def get_case_insensitive(cls, value: str) ->
|
22
|
-
lcase_to_actual = {item.value.lower(): item
|
21
|
+
def get_case_insensitive(cls, value: str) -> "DoW":
|
22
|
+
lcase_to_actual = {item.value.lower(): item for item in cls}
|
23
23
|
return lcase_to_actual[value.lower()]
|
24
24
|
|
25
25
|
|
@@ -34,38 +34,12 @@ class ClassType(str, Enum):
|
|
34
34
|
VIP_CLASS = "VIP Class"
|
35
35
|
OTHER = "Other"
|
36
36
|
|
37
|
-
@classmethod
|
38
|
-
def all_statuses(cls) -> list[str]:
|
39
|
-
return list(cls.__members__.values())
|
40
|
-
|
41
|
-
@classmethod
|
42
|
-
def get_from_key_insensitive(cls, key: str) -> "ClassType":
|
43
|
-
lcase_to_actual = {item.lower(): item for item in cls._member_map_}
|
44
|
-
val = cls.__members__.get(lcase_to_actual[key.lower()])
|
45
|
-
if not val:
|
46
|
-
raise ValueError(f"Invalid ClassType: {key}")
|
47
|
-
return val
|
48
|
-
|
49
37
|
@classmethod
|
50
38
|
def get_case_insensitive(cls, value: str) -> str:
|
51
39
|
lcase_to_actual = {item.value.lower(): item.value for item in cls}
|
52
40
|
return lcase_to_actual[value.lower()]
|
53
41
|
|
54
42
|
|
55
|
-
class ClassTypeCli(str, Enum):
|
56
|
-
"""Flipped enum so that the CLI does not have values with spaces"""
|
57
|
-
|
58
|
-
ORANGE_60_MIN_2G = "Orange_60_Min_2G"
|
59
|
-
TREAD_50 = "Tread_50"
|
60
|
-
STRENGTH_50 = "Strength_50"
|
61
|
-
ORANGE_3G = "Orange_3G"
|
62
|
-
ORANGE_60_TORNADO = "Orange_60_Tornado"
|
63
|
-
ORANGE_TORNADO = "Orange_Tornado"
|
64
|
-
ORANGE_90_MIN_3G = "Orange_90_Min_3G"
|
65
|
-
VIP_CLASS = "VIP_Class"
|
66
|
-
OTHER = "Other"
|
67
|
-
|
68
|
-
|
69
43
|
class Address(OtfItemBase):
|
70
44
|
line1: str
|
71
45
|
city: str
|
@@ -163,10 +137,6 @@ class OtfClass(OtfItemBase, OtfClassTimeMixin):
|
|
163
137
|
def has_availability(self) -> bool:
|
164
138
|
return not self.full
|
165
139
|
|
166
|
-
@property
|
167
|
-
def id_val(self) -> str:
|
168
|
-
return self.ot_class_uuid
|
169
|
-
|
170
140
|
@property
|
171
141
|
def day_of_week_enum(self) -> DoW:
|
172
142
|
dow = self.starts_at_local.strftime("%A")
|
@@ -21,32 +21,3 @@ class ChallengeType(int, Enum):
|
|
21
21
|
RemixInSix = 65
|
22
22
|
Push = 66
|
23
23
|
BackAtIt = 84
|
24
|
-
|
25
|
-
|
26
|
-
class HistoryBookingStatus(str, Enum):
|
27
|
-
Attended = "Attended"
|
28
|
-
Cancelled = "Cancelled"
|
29
|
-
LateCancelled = "Late Cancelled"
|
30
|
-
|
31
|
-
@classmethod
|
32
|
-
def all_statuses(cls) -> list[str]:
|
33
|
-
return list(cls.__members__.values())
|
34
|
-
|
35
|
-
|
36
|
-
class HistoryClassStatus(str, Enum):
|
37
|
-
CheckedIn = "Checked In"
|
38
|
-
CancelCheckinPending = "Cancel Checkin Pending"
|
39
|
-
CancelCheckinRequested = "Cancel Checkin Requested"
|
40
|
-
LateCancelled = "Late Cancelled"
|
41
|
-
Booked = "Booked"
|
42
|
-
Waitlisted = "Waitlisted"
|
43
|
-
CheckinPending = "Checkin Pending"
|
44
|
-
CheckinRequested = "Checkin Requested"
|
45
|
-
CheckinCancelled = "Checkin Cancelled"
|
46
|
-
Pending = "Pending"
|
47
|
-
Confirmed = "Confirmed"
|
48
|
-
Requested = "Requested"
|
49
|
-
|
50
|
-
@classmethod
|
51
|
-
def all_statuses(cls) -> list[str]:
|
52
|
-
return list(cls.__members__.values())
|
@@ -93,16 +93,16 @@ class MemberDetail(OtfItemBase):
|
|
93
93
|
first_name: str = Field(..., alias="firstName")
|
94
94
|
last_name: str = Field(..., alias="lastName")
|
95
95
|
email: str
|
96
|
-
profile_picture_url: None = Field(..., alias="profilePictureUrl")
|
96
|
+
profile_picture_url: str | None = Field(..., alias="profilePictureUrl")
|
97
97
|
alternate_emails: None = Field(..., alias="alternateEmails")
|
98
|
-
address_line1: None = Field(..., alias="addressLine1")
|
99
|
-
address_line2: None = Field(..., alias="addressLine2")
|
100
|
-
city: None
|
101
|
-
state: None
|
102
|
-
postal_code: None = Field(..., alias="postalCode")
|
98
|
+
address_line1: str | None = Field(..., alias="addressLine1")
|
99
|
+
address_line2: str | None = Field(..., alias="addressLine2")
|
100
|
+
city: str | None
|
101
|
+
state: str | None
|
102
|
+
postal_code: str | None = Field(..., alias="postalCode")
|
103
103
|
phone_number: str = Field(..., alias="phoneNumber")
|
104
104
|
home_phone: str | None = Field(..., alias="homePhone")
|
105
|
-
work_phone: None = Field(..., alias="workPhone")
|
105
|
+
work_phone: str | None = Field(..., alias="workPhone")
|
106
106
|
phone_type: None = Field(..., alias="phoneType")
|
107
107
|
birth_day: date | str = Field(..., alias="birthDay")
|
108
108
|
cc_last4: str = Field(..., alias="ccLast4")
|
@@ -44,7 +44,7 @@ class StudioLocation(OtfItemBase):
|
|
44
44
|
bill_to_country_id: int = Field(..., alias="billToCountryId")
|
45
45
|
bill_to_country: str = Field(..., alias="billToCountry")
|
46
46
|
ship_to_address: str = Field(..., alias="shipToAddress")
|
47
|
-
ship_to_address2: None = Field(..., alias="shipToAddress2")
|
47
|
+
ship_to_address2: str | None = Field(..., alias="shipToAddress2")
|
48
48
|
ship_to_city: str = Field(..., alias="shipToCity")
|
49
49
|
ship_to_state: str = Field(..., alias="shipToState")
|
50
50
|
ship_to_postal_code: str = Field(..., alias="shipToPostalCode")
|
@@ -52,7 +52,7 @@ class StudioLocation(OtfItemBase):
|
|
52
52
|
ship_to_country_id: int = Field(..., alias="shipToCountryId")
|
53
53
|
ship_to_country: str = Field(..., alias="shipToCountry")
|
54
54
|
physical_address: str = Field(..., alias="physicalAddress")
|
55
|
-
physical_address2: None = Field(..., alias="physicalAddress2")
|
55
|
+
physical_address2: str | None = Field(..., alias="physicalAddress2")
|
56
56
|
physical_city: str = Field(..., alias="physicalCity")
|
57
57
|
physical_state: str = Field(..., alias="physicalState")
|
58
58
|
physical_postal_code: str = Field(..., alias="physicalPostalCode")
|
@@ -120,7 +120,7 @@ class MemberPurchase(OtfItemBase):
|
|
120
120
|
status: str
|
121
121
|
member_service_id: int | None = Field(..., alias="memberServiceId")
|
122
122
|
member_membership_id: int | None = Field(..., alias="memberMembershipId")
|
123
|
-
member_fee_id: None = Field(..., alias="memberFeeId")
|
123
|
+
member_fee_id: int | None = Field(..., alias="memberFeeId")
|
124
124
|
pos_contract_id: int | None = Field(..., alias="posContractId")
|
125
125
|
pos_product_id: int = Field(..., alias="posProductId")
|
126
126
|
pos_description_id: int | None = Field(..., alias="posDescriptionId")
|
@@ -35,8 +35,8 @@ class Language(OtfItemBase):
|
|
35
35
|
|
36
36
|
class StudioLocationLocalized(OtfItemBase):
|
37
37
|
language: Language
|
38
|
-
studio_name: None = Field(..., alias="studioName")
|
39
|
-
studio_address: None = Field(..., alias="studioAddress")
|
38
|
+
studio_name: str | None = Field(..., alias="studioName")
|
39
|
+
studio_address: str | None = Field(..., alias="studioAddress")
|
40
40
|
|
41
41
|
|
42
42
|
class StudioProfiles(OtfItemBase):
|
@@ -35,7 +35,7 @@ class RowData(OtfItemBase):
|
|
35
35
|
|
36
36
|
class TelemetryItem(OtfItemBase):
|
37
37
|
relative_timestamp: int = Field(..., alias="relativeTimestamp")
|
38
|
-
hr: int
|
38
|
+
hr: int | None = None
|
39
39
|
agg_splats: int = Field(..., alias="aggSplats")
|
40
40
|
agg_calories: int = Field(..., alias="aggCalories")
|
41
41
|
timestamp: datetime | None = Field(
|
@@ -1,35 +1,35 @@
|
|
1
|
-
otf_api/__init__.py,sha256=
|
1
|
+
otf_api/__init__.py,sha256=9dl1vObg-jQX4JSv6kUWZnAklknfJet8UkivLcaxQ_0,237
|
2
2
|
otf_api/api.py,sha256=QlRHXDwzbB97aCfacb_9FVox-5AuPLMweRQAZkz-EE0,34885
|
3
3
|
otf_api/auth.py,sha256=XzwLSi5M3DyG7bE7DmWAzXF2y6fkJyAZxHUA9lpW25M,10231
|
4
|
-
otf_api/models/__init__.py,sha256=
|
4
|
+
otf_api/models/__init__.py,sha256=bSElQBSVfwOV4KyFfa134WyCIqPctCXiDVjQkAgOfnc,1378
|
5
5
|
otf_api/models/base.py,sha256=gsMf3XGKqc68CRC-Mp3ARdnXKCpbWWGttZ8pfUwuEu0,664
|
6
|
-
otf_api/models/responses/__init__.py,sha256=
|
6
|
+
otf_api/models/responses/__init__.py,sha256=cbTfcMieu6Hc91NC2x7fLTacS5dAVuLZUJYKA99fhW4,1901
|
7
7
|
otf_api/models/responses/body_composition_list.py,sha256=N1amk4sWzgiBFmnCUUlMGSwOh_XGucqW_8MvE0XsRKY,12271
|
8
|
-
otf_api/models/responses/book_class.py,sha256=
|
9
|
-
otf_api/models/responses/bookings.py,sha256=
|
10
|
-
otf_api/models/responses/cancel_booking.py,sha256=
|
8
|
+
otf_api/models/responses/book_class.py,sha256=2GLmGXkryUdRUCFNpuSxMAtKcZc9823LLqGcDsQdcK0,15605
|
9
|
+
otf_api/models/responses/bookings.py,sha256=0bKxwNCWt23sXB_PIANdyuperMmZJu1_UdBaUJb8xMI,6295
|
10
|
+
otf_api/models/responses/cancel_booking.py,sha256=O23utnhBs7oxmAgmbq7rD8EC2lvJjibg8Of4bGwAGvE,3922
|
11
11
|
otf_api/models/responses/challenge_tracker_content.py,sha256=KKpSWyyg3viN0vf1Sg2zTMlMZExLe3I6wowmUPWvRCA,1423
|
12
|
-
otf_api/models/responses/challenge_tracker_detail.py,sha256=
|
13
|
-
otf_api/models/responses/classes.py,sha256=
|
14
|
-
otf_api/models/responses/enums.py,sha256=
|
12
|
+
otf_api/models/responses/challenge_tracker_detail.py,sha256=82LZ0E7YsUXDYRbaXvMAaSjbYEo_Ys4cRGAXcgMTjbA,3143
|
13
|
+
otf_api/models/responses/classes.py,sha256=czg6BFNNt0_f-NaEPXS45qmRqVFmwK-laTyONu2jb7Q,3820
|
14
|
+
otf_api/models/responses/enums.py,sha256=qPhRrU-W7SF3W9aKPpq8al1rIlG_KXuvbJNTy7jPnDk,381
|
15
15
|
otf_api/models/responses/favorite_studios.py,sha256=Ho6K_qhkp_MyS8xGiYBp3DeBdcL7xQh6_ZpaKW8QwTY,5071
|
16
16
|
otf_api/models/responses/latest_agreement.py,sha256=aE8hbWE4Pgguw4Itah7a1SqwOLpJ6t9oODFwLQ8Wzo0,774
|
17
17
|
otf_api/models/responses/lifetime_stats.py,sha256=n8pZOwvc2boGa98oAde4coJNjmv7V4Ekt3olTj28BUk,3387
|
18
|
-
otf_api/models/responses/member_detail.py,sha256=
|
18
|
+
otf_api/models/responses/member_detail.py,sha256=STVJagQdmEl2frY7lAsTdSFjoL_7HdAOSG2mbqtUYvM,6073
|
19
19
|
otf_api/models/responses/member_membership.py,sha256=_z301T9DrdQW9vIgnx_LeZmkRhvMVhkxrn_v6DDfCUk,995
|
20
|
-
otf_api/models/responses/member_purchases.py,sha256=
|
20
|
+
otf_api/models/responses/member_purchases.py,sha256=Gr0xAhrgNDXd5lGd2j7kwNm2_p1o3IGQDJS5LfVyebw,6116
|
21
21
|
otf_api/models/responses/out_of_studio_workout_history.py,sha256=Nl2KGgErkI0rMpIYD8xisFZO_vp_Ffgflx2putIKebU,1722
|
22
22
|
otf_api/models/responses/performance_summary_detail.py,sha256=U7GbVet_klwv7Joc8DiBJw4tjb3OmjoT19KGxorrNYo,1637
|
23
23
|
otf_api/models/responses/performance_summary_list.py,sha256=JDJoQEYx9llg43YjZc7AeMatUNJ6Ah40MjoVZt0-dkQ,1354
|
24
|
-
otf_api/models/responses/studio_detail.py,sha256
|
24
|
+
otf_api/models/responses/studio_detail.py,sha256=wZudL8uORrm4SRlPyRgwOrLLBEArQE3HuF9L3BKF6MY,5108
|
25
25
|
otf_api/models/responses/studio_services.py,sha256=cnnSljjOLauWAdvbf3ujKfXkrCvBsQGCXoBTARhmIqQ,1849
|
26
|
-
otf_api/models/responses/telemetry.py,sha256=
|
26
|
+
otf_api/models/responses/telemetry.py,sha256=OtM3vI_KWYdWKpqMdMsav26sVVquflYl5KDHiNTWPus,2026
|
27
27
|
otf_api/models/responses/telemetry_hr_history.py,sha256=vDcLb4wTHVBw8O0mGblUujHfJegkflOCWW-bnTXNCI0,763
|
28
28
|
otf_api/models/responses/telemetry_max_hr.py,sha256=xKxH0fIlOqFyZv8UW98XsxF-GMoIs9gnCTAbu88ZQtg,266
|
29
29
|
otf_api/models/responses/total_classes.py,sha256=WrKkWbq0eK8J0RC4qhZ5kmXnv_ZTDbyzsoRm7XKGlss,288
|
30
30
|
otf_api/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
31
|
-
otf_api-0.6.
|
32
|
-
otf_api-0.6.
|
33
|
-
otf_api-0.6.
|
34
|
-
otf_api-0.6.
|
35
|
-
otf_api-0.6.
|
31
|
+
otf_api-0.6.4.dist-info/AUTHORS.md,sha256=FcNWMxpe8KDuTq4Qau0SUXsabQwGs9TGnMp1WkXRnj8,123
|
32
|
+
otf_api-0.6.4.dist-info/LICENSE,sha256=UaPT9ynYigC3nX8n22_rC37n-qmTRKLFaHrtUwF9ktE,1071
|
33
|
+
otf_api-0.6.4.dist-info/METADATA,sha256=wwGIgTWoSZMygc-xuKWNrbDDG3ra-mai3tJ2myI7BNc,1989
|
34
|
+
otf_api-0.6.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
35
|
+
otf_api-0.6.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|