sweatstack 0.45.0__py3-none-any.whl → 0.46.0__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.
- sweatstack/openapi_schemas.py +309 -6
- {sweatstack-0.45.0.dist-info → sweatstack-0.46.0.dist-info}/METADATA +2 -1
- {sweatstack-0.45.0.dist-info → sweatstack-0.46.0.dist-info}/RECORD +5 -5
- {sweatstack-0.45.0.dist-info → sweatstack-0.46.0.dist-info}/WHEEL +0 -0
- {sweatstack-0.45.0.dist-info → sweatstack-0.46.0.dist-info}/entry_points.txt +0 -0
sweatstack/openapi_schemas.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: openapi.json
|
|
3
|
-
# timestamp: 2025-
|
|
3
|
+
# timestamp: 2025-08-01T16:59:37+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -8,19 +8,44 @@ from datetime import datetime, timedelta
|
|
|
8
8
|
from enum import Enum
|
|
9
9
|
from typing import List, Literal, Optional, Union
|
|
10
10
|
|
|
11
|
-
from pydantic import
|
|
11
|
+
from pydantic import (
|
|
12
|
+
AnyUrl,
|
|
13
|
+
BaseModel,
|
|
14
|
+
EmailStr,
|
|
15
|
+
Field,
|
|
16
|
+
RootModel,
|
|
17
|
+
SecretStr,
|
|
18
|
+
confloat,
|
|
19
|
+
conint,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class Activity(BaseModel):
|
|
24
|
+
id: str = Field(..., title='Id')
|
|
25
|
+
start_date_local: datetime = Field(..., title='Start Date Local')
|
|
12
26
|
|
|
13
27
|
|
|
14
28
|
class ActivityUpdate(BaseModel):
|
|
15
29
|
tags: Optional[List[str]] = Field(None, title='Tags')
|
|
16
30
|
|
|
17
31
|
|
|
32
|
+
class Prompt(Enum):
|
|
33
|
+
none = 'none'
|
|
34
|
+
login = 'login'
|
|
35
|
+
consent = 'consent'
|
|
36
|
+
select_account = 'select_account'
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class BodyAddEmailPartialsAddEmailPost(BaseModel):
|
|
40
|
+
email: EmailStr = Field(..., title='Email')
|
|
41
|
+
|
|
42
|
+
|
|
18
43
|
class BodyCreateApplicationApplicationsPost(BaseModel):
|
|
19
44
|
name: str = Field(..., title='Name')
|
|
20
45
|
description: str = Field(..., title='Description')
|
|
21
46
|
url: AnyUrl = Field(..., title='Url')
|
|
22
47
|
image: AnyUrl = Field(..., title='Image')
|
|
23
|
-
redirect_uris: List[
|
|
48
|
+
redirect_uris: List[str] = Field(..., title='Redirect Uris')
|
|
24
49
|
privacy_statement: AnyUrl = Field(..., title='Privacy Statement')
|
|
25
50
|
published: Optional[bool] = Field(False, title='Published')
|
|
26
51
|
|
|
@@ -133,6 +158,7 @@ class Tz(Enum):
|
|
|
133
158
|
America_Coral_Harbour = 'America/Coral_Harbour'
|
|
134
159
|
America_Cordoba = 'America/Cordoba'
|
|
135
160
|
America_Costa_Rica = 'America/Costa_Rica'
|
|
161
|
+
America_Coyhaique = 'America/Coyhaique'
|
|
136
162
|
America_Creston = 'America/Creston'
|
|
137
163
|
America_Cuiaba = 'America/Cuiaba'
|
|
138
164
|
America_Curacao = 'America/Curacao'
|
|
@@ -635,13 +661,13 @@ class Tz(Enum):
|
|
|
635
661
|
|
|
636
662
|
|
|
637
663
|
class BodyLoginPostLoginPost(BaseModel):
|
|
638
|
-
email:
|
|
664
|
+
email: EmailStr = Field(..., title='Email')
|
|
639
665
|
password: SecretStr = Field(..., title='Password')
|
|
640
666
|
tz: Tz = Field(..., title='Tz')
|
|
641
667
|
|
|
642
668
|
|
|
643
669
|
class BodyRegisterPostRegisterPost(BaseModel):
|
|
644
|
-
email:
|
|
670
|
+
email: EmailStr = Field(..., title='Email')
|
|
645
671
|
password: SecretStr = Field(..., title='Password')
|
|
646
672
|
tz: Tz = Field(..., title='Tz')
|
|
647
673
|
|
|
@@ -654,12 +680,17 @@ class BodySaveOrUpdateIntegrationProviderTenantsTenantIdIntegrationProvidersInte
|
|
|
654
680
|
redirect_url: str = Field(..., title='Redirect Url')
|
|
655
681
|
|
|
656
682
|
|
|
683
|
+
class BodySendVerificationEmailPartialsSendVerificationEmailPost(BaseModel):
|
|
684
|
+
email: EmailStr = Field(..., title='Email')
|
|
685
|
+
tz: Tz = Field(..., title='Tz')
|
|
686
|
+
|
|
687
|
+
|
|
657
688
|
class BodyUpdateApplicationApplicationsApplicationIdPut(BaseModel):
|
|
658
689
|
name: str = Field(..., title='Name')
|
|
659
690
|
description: str = Field(..., title='Description')
|
|
660
691
|
url: AnyUrl = Field(..., title='Url')
|
|
661
692
|
image: AnyUrl = Field(..., title='Image')
|
|
662
|
-
redirect_uris: List[
|
|
693
|
+
redirect_uris: List[str] = Field(..., title='Redirect Uris')
|
|
663
694
|
privacy_statement: AnyUrl = Field(..., title='Privacy Statement')
|
|
664
695
|
published: Optional[bool] = Field(False, title='Published')
|
|
665
696
|
|
|
@@ -669,6 +700,10 @@ class BodyUpdateUserUsersUserIdPut(BaseModel):
|
|
|
669
700
|
last_name: str = Field(..., title='Last Name')
|
|
670
701
|
|
|
671
702
|
|
|
703
|
+
class BodyUploadActivityFileApiV1ActivitiesUploadPost(BaseModel):
|
|
704
|
+
files: List[bytes] = Field(..., max_length=10, title='Files')
|
|
705
|
+
|
|
706
|
+
|
|
672
707
|
class BodyUploadActivityFileDataUploadPost(BaseModel):
|
|
673
708
|
files: List[bytes] = Field(..., title='Files')
|
|
674
709
|
|
|
@@ -690,6 +725,13 @@ class ElevationSummary(BaseModel):
|
|
|
690
725
|
max: Optional[int] = Field(None, title='Max')
|
|
691
726
|
|
|
692
727
|
|
|
728
|
+
class GarminBackfillBody(BaseModel):
|
|
729
|
+
start: datetime = Field(..., title='Start')
|
|
730
|
+
end: datetime = Field(..., title='End')
|
|
731
|
+
user_id__in: Optional[List[str]] = Field(None, title='User Id In')
|
|
732
|
+
user_id__not_in: Optional[List[str]] = Field(None, title='User Id Not In')
|
|
733
|
+
|
|
734
|
+
|
|
693
735
|
class GarminDeregistration(BaseModel):
|
|
694
736
|
userId: str = Field(..., title='Userid')
|
|
695
737
|
userAccessToken: str = Field(..., title='Useraccesstoken')
|
|
@@ -718,8 +760,33 @@ class HeartRateSummary(BaseModel):
|
|
|
718
760
|
end: Optional[float] = Field(None, title='End')
|
|
719
761
|
|
|
720
762
|
|
|
763
|
+
class Instruction(BaseModel):
|
|
764
|
+
type: Literal['instruction'] = Field('instruction', title='Type')
|
|
765
|
+
text: str = Field(..., title='Text')
|
|
766
|
+
|
|
767
|
+
|
|
721
768
|
class IntegrationName(Enum):
|
|
722
769
|
garmin_connect = 'garmin_connect'
|
|
770
|
+
intervals_icu = 'intervals_icu'
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
class IntensityQuantity(Enum):
|
|
774
|
+
speed = 'speed'
|
|
775
|
+
power = 'power'
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
class IntervalsIcuWebhookEventType(Enum):
|
|
779
|
+
APP_SCOPE_CHANGED = 'APP_SCOPE_CHANGED'
|
|
780
|
+
CALENDAR_UPDATED = 'CALENDAR_UPDATED'
|
|
781
|
+
CALENDAR_EVENT_UPDATED = 'CALENDAR_EVENT_UPDATED'
|
|
782
|
+
CALENDAR_EVENT_DELETED = 'CALENDAR_EVENT_DELETED'
|
|
783
|
+
ACTIVITY_UPLOADED = 'ACTIVITY_UPLOADED'
|
|
784
|
+
ACTIVITY_ANALYZED = 'ACTIVITY_ANALYZED'
|
|
785
|
+
ACTIVITY_UPDATED = 'ACTIVITY_UPDATED'
|
|
786
|
+
ACTIVITY_DELETED = 'ACTIVITY_DELETED'
|
|
787
|
+
ACTIVITY_ACHIEVEMENTS = 'ACTIVITY_ACHIEVEMENTS'
|
|
788
|
+
WELLNESS_UPDATED = 'WELLNESS_UPDATED'
|
|
789
|
+
FITNESS_UPDATED = 'FITNESS_UPDATED'
|
|
723
790
|
|
|
724
791
|
|
|
725
792
|
class Metric(Enum):
|
|
@@ -748,6 +815,16 @@ class PowerSummary(BaseModel):
|
|
|
748
815
|
max: Optional[float] = Field(None, title='Max')
|
|
749
816
|
|
|
750
817
|
|
|
818
|
+
class Reference(Enum):
|
|
819
|
+
absolute = 'absolute'
|
|
820
|
+
tte = 'tte'
|
|
821
|
+
parameter = 'parameter'
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
class RepeatQuantity(Enum):
|
|
825
|
+
number = 'number'
|
|
826
|
+
|
|
827
|
+
|
|
751
828
|
class Scope(Enum):
|
|
752
829
|
data_read = 'data:read'
|
|
753
830
|
data_write = 'data:write'
|
|
@@ -819,6 +896,22 @@ class TemperatureSummary(BaseModel):
|
|
|
819
896
|
max: Optional[float] = Field(None, title='Max')
|
|
820
897
|
|
|
821
898
|
|
|
899
|
+
class TemplateDay(BaseModel):
|
|
900
|
+
sports: List[Sport] = Field(..., title='Sports')
|
|
901
|
+
avg_training_duration: timedelta = Field(..., title='Avg Training Duration')
|
|
902
|
+
typical_training_duration: timedelta = Field(..., title='Typical Training Duration')
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
class TemplateWeekResponse(BaseModel):
|
|
906
|
+
monday: TemplateDay
|
|
907
|
+
tuesday: TemplateDay
|
|
908
|
+
wednesday: TemplateDay
|
|
909
|
+
thursday: TemplateDay
|
|
910
|
+
friday: TemplateDay
|
|
911
|
+
saturday: TemplateDay
|
|
912
|
+
sunday: TemplateDay
|
|
913
|
+
|
|
914
|
+
|
|
822
915
|
class TokenRequest(BaseModel):
|
|
823
916
|
grant_type: GrantType
|
|
824
917
|
client_id: Optional[str] = Field(None, title='Client Id')
|
|
@@ -850,11 +943,18 @@ class TraceCreateOrUpdate(BaseModel):
|
|
|
850
943
|
sport: Optional[Sport] = None
|
|
851
944
|
|
|
852
945
|
|
|
946
|
+
class UserFlow(Enum):
|
|
947
|
+
session = 'session'
|
|
948
|
+
signup = 'signup'
|
|
949
|
+
login = 'login'
|
|
950
|
+
|
|
951
|
+
|
|
853
952
|
class UserInfoResponse(BaseModel):
|
|
854
953
|
sub: str = Field(..., title='Sub')
|
|
855
954
|
given_name: Optional[str] = Field(None, title='Given Name')
|
|
856
955
|
family_name: Optional[str] = Field(None, title='Family Name')
|
|
857
956
|
email: Optional[str] = Field(None, title='Email')
|
|
957
|
+
registered_at: datetime = Field(..., title='Registered At')
|
|
858
958
|
name: str = Field(..., title='Name')
|
|
859
959
|
|
|
860
960
|
|
|
@@ -872,6 +972,17 @@ class ValidationError(BaseModel):
|
|
|
872
972
|
type: str = Field(..., title='Error Type')
|
|
873
973
|
|
|
874
974
|
|
|
975
|
+
class Value(BaseModel):
|
|
976
|
+
reference: Reference
|
|
977
|
+
value: Union[int, float] = Field(..., title='Value')
|
|
978
|
+
parameter: Optional[str] = Field(None, title='Parameter')
|
|
979
|
+
|
|
980
|
+
|
|
981
|
+
class VolumeQuantity(Enum):
|
|
982
|
+
duration = 'duration'
|
|
983
|
+
distance = 'distance'
|
|
984
|
+
|
|
985
|
+
|
|
875
986
|
class ActivitySummarySummary(BaseModel):
|
|
876
987
|
power: Optional[PowerSummary] = None
|
|
877
988
|
speed: Optional[SpeedSummary] = None
|
|
@@ -883,6 +994,18 @@ class ActivitySummarySummary(BaseModel):
|
|
|
883
994
|
smo2: Optional[Smo2Summary] = None
|
|
884
995
|
|
|
885
996
|
|
|
997
|
+
class AuthorizeQueryParams(BaseModel):
|
|
998
|
+
client_id: str = Field(..., title='Client Id')
|
|
999
|
+
redirect_uri: Optional[str] = Field(None, title='Redirect Uri')
|
|
1000
|
+
scope: List[Scope] = Field(..., min_length=1, title='Scope')
|
|
1001
|
+
state: Optional[str] = Field(None, title='State')
|
|
1002
|
+
nonce: Optional[str] = Field(None, title='Nonce')
|
|
1003
|
+
code_challenge: Optional[str] = Field(None, title='Code Challenge')
|
|
1004
|
+
code_challenge_method: Optional[str] = Field(None, title='Code Challenge Method')
|
|
1005
|
+
prompt: Optional[Prompt] = Field('consent', title='Prompt')
|
|
1006
|
+
user_flow: Optional[UserFlow] = 'session'
|
|
1007
|
+
|
|
1008
|
+
|
|
886
1009
|
class BodyAuthorizeOauthAuthorizePost(BaseModel):
|
|
887
1010
|
client_id: str = Field(..., title='Client Id')
|
|
888
1011
|
redirect_uri: Optional[str] = Field(None, title='Redirect Uri')
|
|
@@ -893,10 +1016,32 @@ class BodyAuthorizeOauthAuthorizePost(BaseModel):
|
|
|
893
1016
|
code_challenge_method: Optional[str] = Field(None, title='Code Challenge Method')
|
|
894
1017
|
|
|
895
1018
|
|
|
1019
|
+
class BodyExpressAddEmailPostExpressAddEmailPost(BaseModel):
|
|
1020
|
+
email: EmailStr = Field(..., title='Email')
|
|
1021
|
+
state: Optional[str] = Field(None, title='State')
|
|
1022
|
+
user_flow: Optional[UserFlow] = 'session'
|
|
1023
|
+
|
|
1024
|
+
|
|
896
1025
|
class BodyGenerateApiKeyPartialsGenerateApiKeyPost(BaseModel):
|
|
897
1026
|
scopes: List[Scope] = Field(..., title='Scopes')
|
|
898
1027
|
|
|
899
1028
|
|
|
1029
|
+
class ConstantValueInput(BaseModel):
|
|
1030
|
+
type: Literal['constant'] = Field('constant', title='Type')
|
|
1031
|
+
quantity: Union[VolumeQuantity, IntensityQuantity, RepeatQuantity] = Field(
|
|
1032
|
+
..., title='Quantity'
|
|
1033
|
+
)
|
|
1034
|
+
value: Value
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
class ConstantValueOutput(BaseModel):
|
|
1038
|
+
type: Literal['constant'] = Field('constant', title='Type')
|
|
1039
|
+
quantity: Union[VolumeQuantity, IntensityQuantity, RepeatQuantity] = Field(
|
|
1040
|
+
..., title='Quantity'
|
|
1041
|
+
)
|
|
1042
|
+
value: Value
|
|
1043
|
+
|
|
1044
|
+
|
|
900
1045
|
class DelegatedTokenRequest(BaseModel):
|
|
901
1046
|
sub: str = Field(..., title='Sub')
|
|
902
1047
|
scopes: Optional[List[Scope]] = Field(None, title='Scopes')
|
|
@@ -922,6 +1067,13 @@ class HTTPValidationError(BaseModel):
|
|
|
922
1067
|
detail: Optional[List[ValidationError]] = Field(None, title='Detail')
|
|
923
1068
|
|
|
924
1069
|
|
|
1070
|
+
class IntervalsIcuWebhookEvent(BaseModel):
|
|
1071
|
+
athlete_id: str = Field(..., title='Athlete Id')
|
|
1072
|
+
type: IntervalsIcuWebhookEventType
|
|
1073
|
+
timestamp: datetime = Field(..., title='Timestamp')
|
|
1074
|
+
activity: Activity
|
|
1075
|
+
|
|
1076
|
+
|
|
925
1077
|
class Lap(BaseModel):
|
|
926
1078
|
power: Optional[PowerSummary] = None
|
|
927
1079
|
speed: Optional[SpeedSummary] = None
|
|
@@ -938,6 +1090,155 @@ class Lap(BaseModel):
|
|
|
938
1090
|
end_local: datetime = Field(..., title='End Local')
|
|
939
1091
|
|
|
940
1092
|
|
|
1093
|
+
class RampValueInput(BaseModel):
|
|
1094
|
+
type: Literal['ramp'] = Field('ramp', title='Type')
|
|
1095
|
+
quantity: Union[VolumeQuantity, IntensityQuantity, RepeatQuantity] = Field(
|
|
1096
|
+
..., title='Quantity'
|
|
1097
|
+
)
|
|
1098
|
+
start: Value
|
|
1099
|
+
end: Value
|
|
1100
|
+
|
|
1101
|
+
|
|
1102
|
+
class RampValueOutput(BaseModel):
|
|
1103
|
+
type: Literal['ramp'] = Field('ramp', title='Type')
|
|
1104
|
+
quantity: Union[VolumeQuantity, IntensityQuantity, RepeatQuantity] = Field(
|
|
1105
|
+
..., title='Quantity'
|
|
1106
|
+
)
|
|
1107
|
+
start: Value
|
|
1108
|
+
end: Value
|
|
1109
|
+
|
|
1110
|
+
|
|
1111
|
+
class RangeValueInput(BaseModel):
|
|
1112
|
+
type: Literal['range'] = Field('range', title='Type')
|
|
1113
|
+
quantity: Union[VolumeQuantity, IntensityQuantity, RepeatQuantity] = Field(
|
|
1114
|
+
..., title='Quantity'
|
|
1115
|
+
)
|
|
1116
|
+
min: Optional[Value] = None
|
|
1117
|
+
max: Optional[Value] = None
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
class RangeValueOutput(BaseModel):
|
|
1121
|
+
type: Literal['range'] = Field('range', title='Type')
|
|
1122
|
+
quantity: Union[VolumeQuantity, IntensityQuantity, RepeatQuantity] = Field(
|
|
1123
|
+
..., title='Quantity'
|
|
1124
|
+
)
|
|
1125
|
+
min: Optional[Value] = None
|
|
1126
|
+
max: Optional[Value] = None
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
class IntervalInput(BaseModel):
|
|
1130
|
+
type: Literal['interval'] = Field('interval', title='Type')
|
|
1131
|
+
volume: Union[ConstantValueInput, RangeValueInput, RampValueInput] = Field(
|
|
1132
|
+
..., discriminator='type', title='Volume'
|
|
1133
|
+
)
|
|
1134
|
+
intensity: Union[ConstantValueInput, RangeValueInput, RampValueInput] = Field(
|
|
1135
|
+
..., discriminator='type', title='Intensity'
|
|
1136
|
+
)
|
|
1137
|
+
|
|
1138
|
+
|
|
1139
|
+
class IntervalOutput(BaseModel):
|
|
1140
|
+
type: Literal['interval'] = Field('interval', title='Type')
|
|
1141
|
+
volume: Union[ConstantValueOutput, RangeValueOutput, RampValueOutput] = Field(
|
|
1142
|
+
..., discriminator='type', title='Volume'
|
|
1143
|
+
)
|
|
1144
|
+
intensity: Union[ConstantValueOutput, RangeValueOutput, RampValueOutput] = Field(
|
|
1145
|
+
..., discriminator='type', title='Intensity'
|
|
1146
|
+
)
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
class IntervalsIcuWebhookBody(BaseModel):
|
|
1150
|
+
secret: str = Field(..., title='Secret')
|
|
1151
|
+
events: List[IntervalsIcuWebhookEvent] = Field(..., title='Events')
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
class RepeatInput(BaseModel):
|
|
1155
|
+
type: Literal['repeat'] = Field(..., title='Type')
|
|
1156
|
+
count: Union[ConstantValueInput, RangeValueInput] = Field(
|
|
1157
|
+
..., discriminator='type', title='Count'
|
|
1158
|
+
)
|
|
1159
|
+
content: List[Union[IntervalInput, RepeatInput, Instruction]] = Field(
|
|
1160
|
+
..., title='Content'
|
|
1161
|
+
)
|
|
1162
|
+
|
|
1163
|
+
|
|
1164
|
+
class RepeatOutput(BaseModel):
|
|
1165
|
+
type: Literal['repeat'] = Field(..., title='Type')
|
|
1166
|
+
count: Union[ConstantValueOutput, RangeValueOutput] = Field(
|
|
1167
|
+
..., discriminator='type', title='Count'
|
|
1168
|
+
)
|
|
1169
|
+
content: List[Union[IntervalOutput, RepeatOutput, Instruction]] = Field(
|
|
1170
|
+
..., title='Content'
|
|
1171
|
+
)
|
|
1172
|
+
|
|
1173
|
+
|
|
1174
|
+
class SectionInput(BaseModel):
|
|
1175
|
+
type: Literal['section'] = Field('section', title='Type')
|
|
1176
|
+
name: Optional[str] = Field(..., title='Name')
|
|
1177
|
+
content: List[Union[IntervalInput, RepeatInput, Instruction]] = Field(
|
|
1178
|
+
..., title='Content'
|
|
1179
|
+
)
|
|
1180
|
+
|
|
1181
|
+
|
|
1182
|
+
class SectionOutput(BaseModel):
|
|
1183
|
+
type: Literal['section'] = Field('section', title='Type')
|
|
1184
|
+
name: Optional[str] = Field(..., title='Name')
|
|
1185
|
+
content: List[Union[IntervalOutput, RepeatOutput, Instruction]] = Field(
|
|
1186
|
+
..., title='Content'
|
|
1187
|
+
)
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
class Content(RootModel[Union[IntervalInput, RepeatInput, SectionInput, Instruction]]):
|
|
1191
|
+
root: Union[IntervalInput, RepeatInput, SectionInput, Instruction] = Field(
|
|
1192
|
+
..., discriminator='type'
|
|
1193
|
+
)
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
class WorkoutInput(BaseModel):
|
|
1197
|
+
version: Optional[str] = Field('0.1.0', title='Version')
|
|
1198
|
+
title: Optional[str] = Field(None, title='Title')
|
|
1199
|
+
description: Optional[str] = Field(None, title='Description')
|
|
1200
|
+
content: List[Content] = Field(..., title='Content')
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
class Content1(
|
|
1204
|
+
RootModel[Union[IntervalOutput, RepeatOutput, SectionOutput, Instruction]]
|
|
1205
|
+
):
|
|
1206
|
+
root: Union[IntervalOutput, RepeatOutput, SectionOutput, Instruction] = Field(
|
|
1207
|
+
..., discriminator='type'
|
|
1208
|
+
)
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
class WorkoutOutput(BaseModel):
|
|
1212
|
+
version: Optional[str] = Field('0.1.0', title='Version')
|
|
1213
|
+
title: Optional[str] = Field(None, title='Title')
|
|
1214
|
+
description: Optional[str] = Field(None, title='Description')
|
|
1215
|
+
content: List[Content1] = Field(..., title='Content')
|
|
1216
|
+
|
|
1217
|
+
|
|
1218
|
+
class LibraryWorkoutCreate(BaseModel):
|
|
1219
|
+
swf: WorkoutInput
|
|
1220
|
+
sport: Sport
|
|
1221
|
+
|
|
1222
|
+
|
|
1223
|
+
class LibraryWorkoutResponse(BaseModel):
|
|
1224
|
+
id: str = Field(..., title='Id')
|
|
1225
|
+
swf: WorkoutOutput
|
|
1226
|
+
sport: Sport
|
|
1227
|
+
|
|
1228
|
+
|
|
1229
|
+
class ScheduledWorkoutCreate(BaseModel):
|
|
1230
|
+
swf: WorkoutInput
|
|
1231
|
+
sport: Sport
|
|
1232
|
+
start: datetime = Field(..., title='Start')
|
|
1233
|
+
|
|
1234
|
+
|
|
1235
|
+
class ScheduledWorkoutResponse(BaseModel):
|
|
1236
|
+
id: str = Field(..., title='Id')
|
|
1237
|
+
swf: WorkoutOutput
|
|
1238
|
+
sport: Sport
|
|
1239
|
+
start: Optional[datetime] = Field(..., title='Start')
|
|
1240
|
+
|
|
1241
|
+
|
|
941
1242
|
class ActivityDetails(BaseModel):
|
|
942
1243
|
tags: Optional[List[str]] = Field(None, title='Tags')
|
|
943
1244
|
id: str = Field(..., title='Id')
|
|
@@ -987,5 +1288,7 @@ class TraceDetails(BaseModel):
|
|
|
987
1288
|
timestamp_local: datetime = Field(..., title='Timestamp Local')
|
|
988
1289
|
|
|
989
1290
|
|
|
1291
|
+
RepeatInput.model_rebuild()
|
|
1292
|
+
RepeatOutput.model_rebuild()
|
|
990
1293
|
ActivityDetails.model_rebuild()
|
|
991
1294
|
ActivitySummary.model_rebuild()
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sweatstack
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.46.0
|
|
4
4
|
Summary: The official Python client for SweatStack
|
|
5
5
|
Author-email: Aart Goossens <aart@gssns.io>
|
|
6
6
|
Requires-Python: >=3.9
|
|
7
|
+
Requires-Dist: email-validator>=2.2.0
|
|
7
8
|
Requires-Dist: httpx>=0.28.1
|
|
8
9
|
Requires-Dist: pandas>=2.2.3
|
|
9
10
|
Requires-Dist: platformdirs>=4.0.0
|
|
@@ -4,14 +4,14 @@ sweatstack/client.py,sha256=bea8IY72fH93PES-dKMbNaB02k_GepRDzVMxEQuBI4g,46966
|
|
|
4
4
|
sweatstack/constants.py,sha256=fGO6ksOv5HeISv9lHRoYm4besW1GTveXS8YD3K0ljg0,41
|
|
5
5
|
sweatstack/ipython_init.py,sha256=OtBB9dQvyLXklD4kA2x1swaVtU9u73fG4V4-zz4YRAg,139
|
|
6
6
|
sweatstack/jupyterlab_oauth2_startup.py,sha256=YcjXvzeZ459vL_dCkFi1IxX_RNAu80ZX9rwa0OXJfTM,1023
|
|
7
|
-
sweatstack/openapi_schemas.py,sha256=
|
|
7
|
+
sweatstack/openapi_schemas.py,sha256=GaA16d2jAryI1xsxAmRPzyyqhE4jvVKiF6omyIAK4bA,46028
|
|
8
8
|
sweatstack/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
sweatstack/schemas.py,sha256=cYefSktNv9VJoq4PQ5SrUvZRRwB637xNOaj7kjzjocM,3667
|
|
10
10
|
sweatstack/streamlit.py,sha256=_PER03s0dYu5eF1MZdewPDqSvYHqMr0lZLu_EnGit3Y,13257
|
|
11
11
|
sweatstack/sweatshell.py,sha256=MYLNcWbOdceqKJ3S0Pe8dwHXEeYsGJNjQoYUXpMTftA,333
|
|
12
12
|
sweatstack/utils.py,sha256=AwHRdC1ziOZ5o9RBIB21Uxm-DoClVRAJSVvgsmSmvps,1801
|
|
13
13
|
sweatstack/Sweat Stack examples/Getting started.ipynb,sha256=k2hiSffWecoQ0VxjdpDcgFzBXDQiYEebhnAYlu8cgX8,6335204
|
|
14
|
-
sweatstack-0.
|
|
15
|
-
sweatstack-0.
|
|
16
|
-
sweatstack-0.
|
|
17
|
-
sweatstack-0.
|
|
14
|
+
sweatstack-0.46.0.dist-info/METADATA,sha256=RLthZaCIu9YSePVaHuDfPX9TI5KpJX2Td0i0rm4TrYg,852
|
|
15
|
+
sweatstack-0.46.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
16
|
+
sweatstack-0.46.0.dist-info/entry_points.txt,sha256=kCzOUQI3dqbTpEYqtgYDeiKFaqaA7BMlV6D24BMzCFU,208
|
|
17
|
+
sweatstack-0.46.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|