@dlwiest/ts-tonal-client 0.2.0 → 0.3.0
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.
- package/README.md +40 -1
- package/dist/{index.js → index.cjs} +140 -72
- package/dist/index.d.ts +13 -7
- package/dist/index.esm.js +140 -72
- package/package.json +6 -5
- package/dist/examples/create-workout.d.ts +0 -1
- package/dist/examples/debug-daily-lifts.d.ts +0 -1
- package/dist/examples/delete-workout.d.ts +0 -1
- package/dist/examples/edit-workout.d.ts +0 -1
- package/dist/examples/estimate-workout.d.ts +0 -1
- package/dist/examples/get-achievement-stats.d.ts +0 -2
- package/dist/examples/get-achievements.d.ts +0 -2
- package/dist/examples/get-activity-summaries.d.ts +0 -2
- package/dist/examples/get-current-streak.d.ts +0 -1
- package/dist/examples/get-daily-lifts.d.ts +0 -1
- package/dist/examples/get-daily-metrics.d.ts +0 -1
- package/dist/examples/get-goal-metrics.d.ts +0 -1
- package/dist/examples/get-goals.d.ts +0 -1
- package/dist/examples/get-home-calendar.d.ts +0 -2
- package/dist/examples/get-metric-scores.d.ts +0 -1
- package/dist/examples/get-movements.d.ts +0 -1
- package/dist/examples/get-muscle-readiness.d.ts +0 -1
- package/dist/examples/get-program-by-id.d.ts +0 -1
- package/dist/examples/get-target-scores.d.ts +0 -1
- package/dist/examples/get-training-effect-goals.d.ts +0 -1
- package/dist/examples/get-training-types.d.ts +0 -1
- package/dist/examples/get-user-info.d.ts +0 -1
- package/dist/examples/get-user-settings.d.ts +0 -1
- package/dist/examples/get-user-statistics.d.ts +0 -2
- package/dist/examples/get-user-workouts.d.ts +0 -1
- package/dist/examples/get-workout-by-id.d.ts +0 -1
- package/dist/examples/get-workout-by-share-url.d.ts +0 -1
- package/dist/examples/raw-daily-lifts-test.d.ts +0 -1
- package/dist/src/auth/auth-manager.d.ts +0 -15
- package/dist/src/client.d.ts +0 -40
- package/dist/src/http/http-client.d.ts +0 -12
- package/dist/src/index.d.ts +0 -4
- package/dist/src/services/movement-service.d.ts +0 -9
- package/dist/src/services/user-service.d.ts +0 -51
- package/dist/src/services/workout-service.d.ts +0 -14
- package/dist/src/types/auth.d.ts +0 -18
- package/dist/src/types/common.d.ts +0 -1
- package/dist/src/types/index.d.ts +0 -6
- package/dist/src/types/movements.d.ts +0 -30
- package/dist/src/types/programs.d.ts +0 -46
- package/dist/src/types/users.d.ts +0 -418
- package/dist/src/types/workouts.d.ts +0 -120
- package/dist/src/types.d.ts +0 -125
- package/dist/src/utils/cache-manager.d.ts +0 -11
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '../http/http-client';
|
|
2
|
-
import { TonalUserInfo, TonalGoal, TonalTrainingEffectGoalsResponse, TonalTrainingType, TonalGoalMetric, TonalDeviceRegistration, TonalUserDevice, TonalUserPermissions, TonalUserSettings, TonalDailyMetrics, TonalCurrentStreak, TonalActivitySummary, TonalUserStatistics, TonalAchievementStats, TonalEarnedAchievement, TonalHomeCalendar, TonalMuscleReadiness, TonalProgram, TonalTargetScoresResponse, TonalMetricScoresResponse } from '../types';
|
|
3
|
-
export declare class UserService {
|
|
4
|
-
private httpClient;
|
|
5
|
-
constructor(httpClient: HttpClient);
|
|
6
|
-
getUserInfo(): Promise<TonalUserInfo>;
|
|
7
|
-
getGoals(): Promise<TonalGoal[]>;
|
|
8
|
-
getTrainingEffectGoals(): Promise<TonalTrainingEffectGoalsResponse>;
|
|
9
|
-
getTrainingTypes(): Promise<TonalTrainingType[]>;
|
|
10
|
-
getGoalMetrics(): Promise<TonalGoalMetric[]>;
|
|
11
|
-
/**
|
|
12
|
-
* Register or update a personal device for the user.
|
|
13
|
-
*
|
|
14
|
-
* NOTE: This endpoint has side effects and should be used with caution.
|
|
15
|
-
* It registers the device with Tonal's system and may affect notification
|
|
16
|
-
* settings and device management. For reverse-engineered clients, this
|
|
17
|
-
* could be considered unauthorized device registration.
|
|
18
|
-
*
|
|
19
|
-
* @internal This method is primarily for API completeness and documentation
|
|
20
|
-
*/
|
|
21
|
-
registerPersonalDevice(userId: string, deviceInfo: TonalDeviceRegistration): Promise<TonalUserDevice>;
|
|
22
|
-
/**
|
|
23
|
-
* Get user privacy permissions/settings.
|
|
24
|
-
*
|
|
25
|
-
* Returns what information this user has made public vs private.
|
|
26
|
-
* Useful for understanding social features and respecting privacy preferences.
|
|
27
|
-
*
|
|
28
|
-
* @internal This method is for understanding user privacy settings
|
|
29
|
-
*/
|
|
30
|
-
getUserPermissions(userId: string): Promise<TonalUserPermissions>;
|
|
31
|
-
/**
|
|
32
|
-
* Get comprehensive user settings and preferences.
|
|
33
|
-
*
|
|
34
|
-
* Returns audio/visual settings, feature flags, onboarding states, and user preferences.
|
|
35
|
-
* Provides insight into Tonal's full feature ecosystem and user customization options.
|
|
36
|
-
*
|
|
37
|
-
* @internal This method is for understanding user preferences and feature usage
|
|
38
|
-
*/
|
|
39
|
-
getUserSettings(userId: string): Promise<TonalUserSettings>;
|
|
40
|
-
getDailyMetrics(userId: string, days?: number): Promise<TonalDailyMetrics[]>;
|
|
41
|
-
getCurrentStreak(userId: string): Promise<TonalCurrentStreak>;
|
|
42
|
-
getActivitySummaries(userId: string): Promise<TonalActivitySummary[]>;
|
|
43
|
-
getUserStatistics(userId: string): Promise<TonalUserStatistics>;
|
|
44
|
-
getAchievementStats(userId: string): Promise<TonalAchievementStats>;
|
|
45
|
-
getAchievements(userId: string): Promise<TonalEarnedAchievement[]>;
|
|
46
|
-
getHomeCalendar(userId: string): Promise<TonalHomeCalendar>;
|
|
47
|
-
getMuscleReadiness(userId: string): Promise<TonalMuscleReadiness>;
|
|
48
|
-
getProgramById(programId: string): Promise<TonalProgram>;
|
|
49
|
-
getTargetScores(userId: string): Promise<TonalTargetScoresResponse>;
|
|
50
|
-
getMetricScores(userId: string, startWeek?: number): Promise<TonalMetricScoresResponse>;
|
|
51
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '../http/http-client';
|
|
2
|
-
import { TonalWorkout, TonalSharedWorkout, TonalWorkoutEstimateSet, TonalWorkoutEstimateResponse, TonalWorkoutCreateRequest, TonalWorkoutUpdateRequest, TonalUserInfo } from '../types';
|
|
3
|
-
export declare class WorkoutService {
|
|
4
|
-
private httpClient;
|
|
5
|
-
constructor(httpClient: HttpClient);
|
|
6
|
-
getUserWorkouts(offset?: number, limit?: number): Promise<TonalWorkout[]>;
|
|
7
|
-
getDailyLifts(userInfo: TonalUserInfo, timeZone?: string): Promise<TonalWorkout[]>;
|
|
8
|
-
getWorkoutById(workoutId: string): Promise<TonalWorkout>;
|
|
9
|
-
getWorkoutByShareUrl(shareUrl: string): Promise<TonalSharedWorkout>;
|
|
10
|
-
estimateWorkoutDuration(sets: TonalWorkoutEstimateSet[]): Promise<TonalWorkoutEstimateResponse>;
|
|
11
|
-
createWorkout(workoutData: TonalWorkoutCreateRequest): Promise<TonalWorkout>;
|
|
12
|
-
updateWorkout(workoutData: TonalWorkoutUpdateRequest): Promise<TonalWorkout>;
|
|
13
|
-
deleteWorkout(workoutId: string): Promise<void>;
|
|
14
|
-
}
|
package/dist/src/types/auth.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export interface TonalApiError {
|
|
2
|
-
error: string;
|
|
3
|
-
error_description?: string;
|
|
4
|
-
statusCode?: number;
|
|
5
|
-
}
|
|
6
|
-
export declare class TonalClientError extends Error {
|
|
7
|
-
readonly statusCode?: number;
|
|
8
|
-
readonly originalError?: unknown;
|
|
9
|
-
constructor(message: string, statusCode?: number, originalError?: unknown);
|
|
10
|
-
}
|
|
11
|
-
export interface OAuthTokenResponse {
|
|
12
|
-
access_token: string;
|
|
13
|
-
id_token: string;
|
|
14
|
-
refresh_token: string;
|
|
15
|
-
scope: string;
|
|
16
|
-
token_type: string;
|
|
17
|
-
expires_in: number;
|
|
18
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type MuscleGroup = 'Obliques' | 'Abs' | 'Shoulders' | 'Glutes' | 'Back' | 'Biceps' | 'Quads' | 'Triceps' | 'Chest' | 'Hamstrings' | 'Calves' | 'Forearms';
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { MuscleGroup } from './common';
|
|
2
|
-
export interface TonalMovement {
|
|
3
|
-
id: string;
|
|
4
|
-
createdAt: string;
|
|
5
|
-
updatedAt: string;
|
|
6
|
-
name: string;
|
|
7
|
-
shortName: string;
|
|
8
|
-
muscleGroups: MuscleGroup[];
|
|
9
|
-
bodyRegion: string;
|
|
10
|
-
bodyRegionDisplay: string;
|
|
11
|
-
baseOfSupport: string;
|
|
12
|
-
pushPull: string;
|
|
13
|
-
family: string;
|
|
14
|
-
familyDisplay: string;
|
|
15
|
-
inFreeLift: boolean;
|
|
16
|
-
onMachine: boolean;
|
|
17
|
-
countReps: boolean;
|
|
18
|
-
isTwoSided: boolean;
|
|
19
|
-
isBilateral: boolean;
|
|
20
|
-
isAlternating: boolean;
|
|
21
|
-
offMachineAccessory: string;
|
|
22
|
-
descriptionHow: string;
|
|
23
|
-
descriptionWhy: string;
|
|
24
|
-
sortOrder: number;
|
|
25
|
-
imageAssetId: string;
|
|
26
|
-
skillLevel: number;
|
|
27
|
-
active: boolean;
|
|
28
|
-
featureGroupIds: null | string[];
|
|
29
|
-
isGeneric: boolean;
|
|
30
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { TonalWorkout } from './workouts';
|
|
2
|
-
export interface TonalProgramWorkout {
|
|
3
|
-
id: string;
|
|
4
|
-
programId: string;
|
|
5
|
-
workoutId: string;
|
|
6
|
-
level: string;
|
|
7
|
-
workoutNumber: number;
|
|
8
|
-
workoutTitle: string;
|
|
9
|
-
programWeek: number;
|
|
10
|
-
programDay: number;
|
|
11
|
-
duration: number;
|
|
12
|
-
}
|
|
13
|
-
export interface TonalProgramTrainingEffectGoal {
|
|
14
|
-
goalID: string;
|
|
15
|
-
score: number;
|
|
16
|
-
goalMet: boolean;
|
|
17
|
-
}
|
|
18
|
-
export interface TonalProgram {
|
|
19
|
-
id: string;
|
|
20
|
-
createdAt: string;
|
|
21
|
-
name: string;
|
|
22
|
-
description: string;
|
|
23
|
-
productionCode: string;
|
|
24
|
-
workoutsPerWeek: number;
|
|
25
|
-
cadence: boolean[];
|
|
26
|
-
weeks: number;
|
|
27
|
-
publishState: string;
|
|
28
|
-
publishedAt: string;
|
|
29
|
-
level: string;
|
|
30
|
-
workouts: TonalWorkout[];
|
|
31
|
-
assetId: string;
|
|
32
|
-
goalIds: string[];
|
|
33
|
-
groupIds: string[];
|
|
34
|
-
coachId: string;
|
|
35
|
-
coachIds: string[];
|
|
36
|
-
trainingTypeIds: string[];
|
|
37
|
-
isAdjustable: boolean;
|
|
38
|
-
programWorkoutIds: string[];
|
|
39
|
-
programWorkouts: TonalProgramWorkout[];
|
|
40
|
-
nonComparableWorkouts: boolean;
|
|
41
|
-
mobileFriendly: boolean;
|
|
42
|
-
supportedDevices: string[];
|
|
43
|
-
featureGroupIds: string[] | null;
|
|
44
|
-
excludeFromCoachHighlights: boolean;
|
|
45
|
-
trainingEffectGoals: TonalProgramTrainingEffectGoal[];
|
|
46
|
-
}
|
|
@@ -1,418 +0,0 @@
|
|
|
1
|
-
export interface TonalUserDevice {
|
|
2
|
-
deviceId: string;
|
|
3
|
-
tonalDeviceId: string;
|
|
4
|
-
userId: string;
|
|
5
|
-
createdAt: string;
|
|
6
|
-
updatedAt: string;
|
|
7
|
-
loggedIn: boolean;
|
|
8
|
-
postWorkoutNotifs: boolean;
|
|
9
|
-
reminderNotifs: boolean;
|
|
10
|
-
productUpdateNotifs: boolean;
|
|
11
|
-
socialNotifs: boolean;
|
|
12
|
-
blogNotifs: boolean;
|
|
13
|
-
chatbotNotifs: boolean;
|
|
14
|
-
deviceModel: string;
|
|
15
|
-
osVersion: string;
|
|
16
|
-
appVersion: string;
|
|
17
|
-
platform: string;
|
|
18
|
-
}
|
|
19
|
-
export interface TonalDeviceRegistration {
|
|
20
|
-
userId: string;
|
|
21
|
-
tonalDeviceId: string;
|
|
22
|
-
deviceId: string;
|
|
23
|
-
deviceModel: string;
|
|
24
|
-
osVersion: string;
|
|
25
|
-
appVersion: string;
|
|
26
|
-
platform: string;
|
|
27
|
-
loggedIn: boolean;
|
|
28
|
-
}
|
|
29
|
-
export interface TonalUserPermissions {
|
|
30
|
-
userId: string;
|
|
31
|
-
memberDate: 'Public' | 'Private';
|
|
32
|
-
gender: 'Public' | 'Private';
|
|
33
|
-
age: 'Public' | 'Private';
|
|
34
|
-
streak: 'Public' | 'Private';
|
|
35
|
-
workoutCalendar: 'Public' | 'Private';
|
|
36
|
-
strengthScore: 'Public' | 'Private';
|
|
37
|
-
achievements: 'Public' | 'Private';
|
|
38
|
-
leaderboard: 'Public' | 'Private';
|
|
39
|
-
volume: 'Public' | 'Private';
|
|
40
|
-
workouts: 'Public' | 'Private';
|
|
41
|
-
movements: 'Public' | 'Private';
|
|
42
|
-
programs: 'Public' | 'Private';
|
|
43
|
-
activity: 'Public' | 'Private';
|
|
44
|
-
publicProfile: 'Public' | 'Private';
|
|
45
|
-
location: 'Public' | 'Private';
|
|
46
|
-
fullName: 'Public' | 'Private';
|
|
47
|
-
}
|
|
48
|
-
export interface TonalUserSettings {
|
|
49
|
-
userId: string;
|
|
50
|
-
overallVolume: number;
|
|
51
|
-
musicVolume: number;
|
|
52
|
-
coachVolume: number;
|
|
53
|
-
soundEffectsVolume: number;
|
|
54
|
-
coachingCuesVolume: number;
|
|
55
|
-
bluetoothOverallVolume: number;
|
|
56
|
-
bluetoothMusicVolume: number;
|
|
57
|
-
bluetoothCoachVolume: number;
|
|
58
|
-
bluetoothSoundEffectsVolume: number;
|
|
59
|
-
feedFmStation: string;
|
|
60
|
-
feedFmAutoPlay: boolean;
|
|
61
|
-
feedFmClientId: string;
|
|
62
|
-
preferredMusicService: string;
|
|
63
|
-
timeZone: string;
|
|
64
|
-
screenBrightness: number;
|
|
65
|
-
closedCaptions: boolean;
|
|
66
|
-
coachingCuesVoiceType: number;
|
|
67
|
-
workoutGraph: string;
|
|
68
|
-
workoutDemo: boolean;
|
|
69
|
-
demoPlayerSize: string;
|
|
70
|
-
dataInGuidedWorkouts: boolean;
|
|
71
|
-
defaultRecoveryWeightTooltipCount: number;
|
|
72
|
-
activeRecoveryRecoveryWeightTooltipCount: number;
|
|
73
|
-
timedWeightOffDisabledByDefault: boolean;
|
|
74
|
-
timedWeightOffDelayBeforeRampMs: number;
|
|
75
|
-
hasRequestedAccountDeletion: boolean;
|
|
76
|
-
isSmartViewEnabled: boolean;
|
|
77
|
-
smartViewMode: string;
|
|
78
|
-
hasSeenLeaderboardIntroTile: boolean;
|
|
79
|
-
hasSeenYearInReviewBanner: boolean;
|
|
80
|
-
hasSeenYearInReviewPromo: boolean;
|
|
81
|
-
hasSeenWarmUpSetsModal: boolean;
|
|
82
|
-
hasSeenWorkoutRemindersPopUp: boolean;
|
|
83
|
-
hasSeenScheduleWorkoutToolTip: boolean;
|
|
84
|
-
hasSeenPublicProfilePopUp: boolean;
|
|
85
|
-
hasSharedPublicProfile: boolean;
|
|
86
|
-
hasHiddenReferralPromo2022: boolean;
|
|
87
|
-
hasClosedTonal101Ad: boolean;
|
|
88
|
-
hasConnectedVisionCamera: boolean;
|
|
89
|
-
hasSeenTonalVisionPromo: boolean;
|
|
90
|
-
hasSeenARCoreDisclaimer: boolean;
|
|
91
|
-
hasSeenEditorialContentsPromo: boolean;
|
|
92
|
-
hasOpenedEditorialContentsPromo: boolean;
|
|
93
|
-
hasSeenCustomMovementDescriptions: boolean;
|
|
94
|
-
hasSeenMovementInfoAndGraphsFtue: boolean;
|
|
95
|
-
hasSeenFreeLiftMovementInfoFtue: boolean;
|
|
96
|
-
hasSeenMovementReplacementModal: boolean;
|
|
97
|
-
hasSeenRomPowerGraphModal: boolean;
|
|
98
|
-
hasSeenCustomMovementReplacementModal: boolean;
|
|
99
|
-
hasSeenAnkleStrapsPromo: boolean;
|
|
100
|
-
hasHiddenAnkleStraps: boolean;
|
|
101
|
-
hasSeenPilatesLoopsPromo: boolean;
|
|
102
|
-
hasHiddenPilatesLoops: boolean;
|
|
103
|
-
hasSeenPilatesLoopsPreOrderPromo: boolean;
|
|
104
|
-
hasHiddenPreOrderPilatesLoops: boolean;
|
|
105
|
-
hasSeenExclusionFiltersTooltip: boolean;
|
|
106
|
-
hasSeenExclusionFiltersTrainerTooltip: boolean;
|
|
107
|
-
hasSeenSmartViewInfoVid: boolean;
|
|
108
|
-
hasHiddenSmartViewDiscoveryTooltip: boolean;
|
|
109
|
-
hasSeenSmartViewMovementsTabToolTip: boolean;
|
|
110
|
-
hasSeenSmartViewClipsToolTip: boolean;
|
|
111
|
-
hasSeenLinkTonalOrderDialog: boolean;
|
|
112
|
-
hasSeenThirdPartyMetricsPromo: boolean;
|
|
113
|
-
hasDismissedUpdatePreferencesBanner: boolean;
|
|
114
|
-
hasDismissedThirdPartyMuscleReadinessTile: boolean;
|
|
115
|
-
hasSeenUpdatedAppleHealthScreen: boolean;
|
|
116
|
-
hasDismissedTrainingEffectGoalsBanner: boolean;
|
|
117
|
-
hasSeenTrainingEffectGoalsPromo: boolean;
|
|
118
|
-
hasSeenTrainingMetricsPromo: boolean;
|
|
119
|
-
hasSeenBodygramInstructions: boolean;
|
|
120
|
-
hasSeenChatbotAnnouncementModal: boolean;
|
|
121
|
-
hasDismissedChatbotTooltip: boolean;
|
|
122
|
-
hasSeenDropSetsPromo: boolean;
|
|
123
|
-
hasHiddenDropSetsPromoBanner: boolean;
|
|
124
|
-
hasSeenScorecardPromo: boolean;
|
|
125
|
-
hasHiddenScorecardPopover: boolean;
|
|
126
|
-
hasHiddenProgramScorecardPopover: boolean;
|
|
127
|
-
hasHiddenAeroPromoBanner: boolean;
|
|
128
|
-
hasSeenPostWorkoutSelfiePromo: boolean;
|
|
129
|
-
hasSeenCoachingCuesPopup: boolean;
|
|
130
|
-
hasSeenCoachingCuesVolumeTooltip: boolean;
|
|
131
|
-
hasSeenCounterPopover: boolean;
|
|
132
|
-
hasSeenDailyLiftPromo: boolean;
|
|
133
|
-
joinProgramPromptEnabled: boolean;
|
|
134
|
-
hasSeenTosUpdate: boolean;
|
|
135
|
-
hasSeenShareCustomWorkoutToolTip: boolean;
|
|
136
|
-
hasSeenCustomTabSharingToolTip: boolean;
|
|
137
|
-
hasSeenCustomWorkoutsSharingPromo: boolean;
|
|
138
|
-
}
|
|
139
|
-
export interface TonalDailyMetrics {
|
|
140
|
-
date: string;
|
|
141
|
-
totalVolume: number;
|
|
142
|
-
totalWorkouts: number;
|
|
143
|
-
totalDuration: number;
|
|
144
|
-
totalExternalActivities: number;
|
|
145
|
-
totalWork: number;
|
|
146
|
-
totalTimeUnderTension: number;
|
|
147
|
-
}
|
|
148
|
-
export interface TonalCurrentStreak {
|
|
149
|
-
userId: string;
|
|
150
|
-
currentStreak: number;
|
|
151
|
-
currentStreakStartDate: string;
|
|
152
|
-
lastUpdatedWeek: string;
|
|
153
|
-
maxStreak: number;
|
|
154
|
-
maxStreakStartDate: string;
|
|
155
|
-
updatedByActivityId: string;
|
|
156
|
-
}
|
|
157
|
-
export interface TonalActivitySummary {
|
|
158
|
-
id: string;
|
|
159
|
-
deletedAt: string | null;
|
|
160
|
-
userId: string;
|
|
161
|
-
name: string;
|
|
162
|
-
workoutId: string;
|
|
163
|
-
isInProgram: boolean;
|
|
164
|
-
isGuidedWorkout: boolean;
|
|
165
|
-
isBaselineWorkout: boolean;
|
|
166
|
-
timestamp: string;
|
|
167
|
-
UTCTimestamp: string;
|
|
168
|
-
localTimestamp: string;
|
|
169
|
-
endTime: string;
|
|
170
|
-
timeZone: string;
|
|
171
|
-
assetID?: string;
|
|
172
|
-
targetArea: string;
|
|
173
|
-
duration: number;
|
|
174
|
-
timeUnderTension: number;
|
|
175
|
-
repGoalPercentage: number | null;
|
|
176
|
-
totalReps: number;
|
|
177
|
-
totalVolume: number;
|
|
178
|
-
totalWork: number;
|
|
179
|
-
level: string;
|
|
180
|
-
programWeeks: number;
|
|
181
|
-
programWorkoutsPerWeek: number;
|
|
182
|
-
groupIds: string[];
|
|
183
|
-
workoutType: string;
|
|
184
|
-
completed: boolean;
|
|
185
|
-
deviceId: string;
|
|
186
|
-
appVersion: string;
|
|
187
|
-
activityType: string;
|
|
188
|
-
triggeredTimedWeightOff: boolean;
|
|
189
|
-
}
|
|
190
|
-
export interface TonalUserStatistics {
|
|
191
|
-
volume: {
|
|
192
|
-
total: number;
|
|
193
|
-
maxVolumeInWorkout: number;
|
|
194
|
-
maxVolumeInAWeek: number;
|
|
195
|
-
avgVolumePerWorkout: number;
|
|
196
|
-
avgVolumePerWeek: number;
|
|
197
|
-
};
|
|
198
|
-
workouts: {
|
|
199
|
-
total: number;
|
|
200
|
-
maxWorkoutDuration: number;
|
|
201
|
-
avgWorkoutDuration: number;
|
|
202
|
-
totalDuration: number;
|
|
203
|
-
totalTimeUnderTension: number;
|
|
204
|
-
maxWorkoutsPerWeek: number;
|
|
205
|
-
avgWorkoutsPerWeek: number;
|
|
206
|
-
totalFreeliftWorkouts: number;
|
|
207
|
-
totalCustomWorkouts: number;
|
|
208
|
-
};
|
|
209
|
-
movements: {
|
|
210
|
-
total: number;
|
|
211
|
-
movementIds: string[];
|
|
212
|
-
};
|
|
213
|
-
programs: {
|
|
214
|
-
total: number;
|
|
215
|
-
totalProgramVolume: number;
|
|
216
|
-
totalProgramWorkouts: number;
|
|
217
|
-
totalDuration: number;
|
|
218
|
-
programSummaries: unknown | null;
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
export interface TonalAchievementMilestone {
|
|
222
|
-
id: string;
|
|
223
|
-
name: string;
|
|
224
|
-
description: string;
|
|
225
|
-
shortDescription: string;
|
|
226
|
-
achievementCategoryId: string;
|
|
227
|
-
achievementCategory: unknown | null;
|
|
228
|
-
assetId: string;
|
|
229
|
-
value: number;
|
|
230
|
-
iconAssetId: string;
|
|
231
|
-
active: boolean;
|
|
232
|
-
needsTemplate: boolean;
|
|
233
|
-
}
|
|
234
|
-
export interface TonalAchievementStats {
|
|
235
|
-
totalAchievements: number;
|
|
236
|
-
nextMilestones: TonalAchievementMilestone[];
|
|
237
|
-
}
|
|
238
|
-
export interface TonalAchievementCategory {
|
|
239
|
-
id: string;
|
|
240
|
-
name: string;
|
|
241
|
-
type: string;
|
|
242
|
-
}
|
|
243
|
-
export interface TonalAchievementDefinition {
|
|
244
|
-
id: string;
|
|
245
|
-
name: string;
|
|
246
|
-
description: string;
|
|
247
|
-
shortDescription: string;
|
|
248
|
-
achievementCategoryId: string;
|
|
249
|
-
achievementCategory: TonalAchievementCategory;
|
|
250
|
-
assetId: string;
|
|
251
|
-
value: number | null;
|
|
252
|
-
iconAssetId: string;
|
|
253
|
-
active: boolean;
|
|
254
|
-
needsTemplate: boolean;
|
|
255
|
-
}
|
|
256
|
-
export interface TonalEarnedAchievement {
|
|
257
|
-
id: string;
|
|
258
|
-
achievementId: string;
|
|
259
|
-
userId: string;
|
|
260
|
-
createdAt: string;
|
|
261
|
-
name: string;
|
|
262
|
-
description: string;
|
|
263
|
-
shortDescription: string;
|
|
264
|
-
assetId: string;
|
|
265
|
-
workoutActivityId?: string;
|
|
266
|
-
iconAssetId: string;
|
|
267
|
-
achievement: TonalAchievementDefinition;
|
|
268
|
-
localTimestamp: string;
|
|
269
|
-
}
|
|
270
|
-
export interface TonalMuscleUtilization {
|
|
271
|
-
muscleGroup: string;
|
|
272
|
-
value: number;
|
|
273
|
-
}
|
|
274
|
-
export interface TonalWorkoutSummaryData {
|
|
275
|
-
workoutActivityId: string;
|
|
276
|
-
duration: number;
|
|
277
|
-
volume: number;
|
|
278
|
-
work: number;
|
|
279
|
-
muscleUtilization: TonalMuscleUtilization[];
|
|
280
|
-
}
|
|
281
|
-
export interface TonalCompatibilityStatus {
|
|
282
|
-
status: string;
|
|
283
|
-
lockedReason: string | null;
|
|
284
|
-
}
|
|
285
|
-
export interface TonalCalendarTile {
|
|
286
|
-
type: string;
|
|
287
|
-
assetId: string;
|
|
288
|
-
title: string;
|
|
289
|
-
duration: number;
|
|
290
|
-
completed?: boolean;
|
|
291
|
-
workoutId: string;
|
|
292
|
-
targetArea: string;
|
|
293
|
-
level?: string;
|
|
294
|
-
trainingTypeIds?: string[];
|
|
295
|
-
coachId?: string;
|
|
296
|
-
accessories?: string[];
|
|
297
|
-
compatibilityStatus?: TonalCompatibilityStatus;
|
|
298
|
-
workoutSummaryData?: TonalWorkoutSummaryData;
|
|
299
|
-
}
|
|
300
|
-
export interface TonalDailySchedule {
|
|
301
|
-
date: string;
|
|
302
|
-
recommendationType?: string;
|
|
303
|
-
tiles: TonalCalendarTile[];
|
|
304
|
-
}
|
|
305
|
-
export interface TonalHomeCalendar {
|
|
306
|
-
dailySchedules: TonalDailySchedule[];
|
|
307
|
-
}
|
|
308
|
-
export interface TonalGoal {
|
|
309
|
-
id: string;
|
|
310
|
-
name: string;
|
|
311
|
-
description: string;
|
|
312
|
-
active: boolean;
|
|
313
|
-
filterItemId: string;
|
|
314
|
-
}
|
|
315
|
-
export interface TonalTrainingEffectGoal {
|
|
316
|
-
id: string;
|
|
317
|
-
name: string;
|
|
318
|
-
description: string;
|
|
319
|
-
active: boolean;
|
|
320
|
-
filterItemId: string;
|
|
321
|
-
}
|
|
322
|
-
export interface TonalTrainingEffectGoalRelation {
|
|
323
|
-
id: string;
|
|
324
|
-
secondary: string[];
|
|
325
|
-
tertiary: string[];
|
|
326
|
-
}
|
|
327
|
-
export interface TonalTrainingEffectGoalsResponse {
|
|
328
|
-
goals: TonalTrainingEffectGoal[];
|
|
329
|
-
relations: TonalTrainingEffectGoalRelation[];
|
|
330
|
-
}
|
|
331
|
-
export interface TonalTrainingType {
|
|
332
|
-
id: string;
|
|
333
|
-
name: string;
|
|
334
|
-
description: string;
|
|
335
|
-
assetId: string;
|
|
336
|
-
infoVidId: string;
|
|
337
|
-
filterItemId: string;
|
|
338
|
-
}
|
|
339
|
-
export interface TonalGoalMetric {
|
|
340
|
-
id: string;
|
|
341
|
-
name: string;
|
|
342
|
-
goalId: string;
|
|
343
|
-
description: string;
|
|
344
|
-
}
|
|
345
|
-
export interface TonalUserGoal {
|
|
346
|
-
id: string;
|
|
347
|
-
userID: string;
|
|
348
|
-
goalID: string;
|
|
349
|
-
tier: number;
|
|
350
|
-
}
|
|
351
|
-
export interface TonalMuscleReadiness {
|
|
352
|
-
Chest: number;
|
|
353
|
-
Shoulders: number;
|
|
354
|
-
Back: number;
|
|
355
|
-
Triceps: number;
|
|
356
|
-
Biceps: number;
|
|
357
|
-
Abs: number;
|
|
358
|
-
Obliques: number;
|
|
359
|
-
Quads: number;
|
|
360
|
-
Glutes: number;
|
|
361
|
-
Hamstrings: number;
|
|
362
|
-
Calves: number;
|
|
363
|
-
}
|
|
364
|
-
export interface TonalTargetScore {
|
|
365
|
-
userId: string;
|
|
366
|
-
weekNumber: number;
|
|
367
|
-
metricId: string;
|
|
368
|
-
target: number;
|
|
369
|
-
lowRange: number;
|
|
370
|
-
highRange: number;
|
|
371
|
-
}
|
|
372
|
-
export interface TonalTargetScoresResponse {
|
|
373
|
-
[metricId: string]: TonalTargetScore[];
|
|
374
|
-
}
|
|
375
|
-
export interface TonalMetricScore {
|
|
376
|
-
userId: string;
|
|
377
|
-
weekNumber: number;
|
|
378
|
-
metricId: string;
|
|
379
|
-
score: number;
|
|
380
|
-
}
|
|
381
|
-
export interface TonalMetricScoresResponse {
|
|
382
|
-
[metricId: string]: TonalMetricScore[];
|
|
383
|
-
}
|
|
384
|
-
export interface TonalUserInfo {
|
|
385
|
-
id: string;
|
|
386
|
-
createdAt: string;
|
|
387
|
-
updatedAt: string;
|
|
388
|
-
deletedAt: string | null;
|
|
389
|
-
email: string;
|
|
390
|
-
firstName: string;
|
|
391
|
-
lastName: string;
|
|
392
|
-
gender: 'MALE' | 'FEMALE' | string;
|
|
393
|
-
heightInches: number;
|
|
394
|
-
weightPounds: number;
|
|
395
|
-
auth0Id: string;
|
|
396
|
-
dateOfBirth: string;
|
|
397
|
-
isGuestAccount: boolean;
|
|
398
|
-
isDemoAccount: boolean;
|
|
399
|
-
watchedSafetyVideo: boolean;
|
|
400
|
-
recentMobileDevice: TonalUserDevice;
|
|
401
|
-
emailVerified: boolean;
|
|
402
|
-
username: string;
|
|
403
|
-
workoutsPerWeek: number;
|
|
404
|
-
tonalStatus: 'purchased' | string;
|
|
405
|
-
social: unknown | null;
|
|
406
|
-
profileAssetID: string | null;
|
|
407
|
-
mobileWorkoutsEnabled: boolean;
|
|
408
|
-
accountType: 'PublicUser' | string;
|
|
409
|
-
location: string;
|
|
410
|
-
sharingCustomWorkoutsDisabled: boolean;
|
|
411
|
-
level: 'BEGINNER' | 'INTERMEDIATE' | 'ADVANCED' | string;
|
|
412
|
-
goalId: string;
|
|
413
|
-
goals: TonalUserGoal[];
|
|
414
|
-
workoutDurationMin: number;
|
|
415
|
-
workoutDurationMax: number;
|
|
416
|
-
updatedPreferencesAt: string;
|
|
417
|
-
primaryDeviceType: 'Classic' | string;
|
|
418
|
-
}
|