{"openapi":"3.0.0","paths":{"/v1/achievements":{"get":{"operationId":"AchievementsController_getAchievements","parameters":[],"responses":{"200":{"description":""}},"tags":["Achievements"],"security":[{"bearer":[]}]}},"/v1/achievements/earned":{"get":{"operationId":"AchievementsController_getUserAchievements","parameters":[{"name":"rideId","required":false,"in":"query","schema":{"type":"number"}},{"name":"page","required":true,"in":"query","schema":{"default":1,"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"default":20,"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Achievements"],"security":[{"bearer":[]}]}},"/v1/notifications":{"get":{"operationId":"NotificationsController_getNotifications","parameters":[],"responses":{"200":{"description":""}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/v1/notifications/unread-count":{"get":{"operationId":"NotificationsController_getNotificationCount","parameters":[{"name":"type","required":true,"in":"query","schema":{"enum":["all","unread-statuses"],"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/v1/notifications/{id}/read":{"post":{"operationId":"NotificationsController_readNotification","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}},{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/v1/auth/refresh":{"post":{"operationId":"AuthController_refresh","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshAccessTokenDto"}}}},"responses":{"201":{"description":""}},"tags":["Authentication"]}},"/v1/auth/logout":{"post":{"operationId":"AuthController_logout","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoutBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Authentication"]}},"/v1/auth/google":{"get":{"operationId":"AuthController_authGoogle","parameters":[],"responses":{"200":{"description":""}},"tags":["Authentication"]}},"/v1/auth/google/redirect":{"get":{"operationId":"AuthController_authGoogleRedirect","parameters":[],"responses":{"200":{"description":""}},"tags":["Authentication"]}},"/v1/auth/apple":{"get":{"operationId":"AuthController_authApple","parameters":[],"responses":{"200":{"description":""}},"tags":["Authentication"]}},"/v1/auth/apple/redirect":{"post":{"operationId":"AuthController_authAppleRedirect","parameters":[],"responses":{"201":{"description":""}},"tags":["Authentication"]}},"/v1/auth/strava":{"get":{"operationId":"AuthController_authStrava","parameters":[],"responses":{"200":{"description":""}},"tags":["Authentication"]}},"/v1/auth/strava/redirect":{"get":{"operationId":"AuthController_authStravaRedirect","parameters":[],"responses":{"200":{"description":""}},"tags":["Authentication"]}},"/v1/auth/link/strava/redirect":{"get":{"operationId":"AuthController_linkStravaRedirect","parameters":[{"name":"state","required":false,"in":"query","schema":{"type":"string"}},{"name":"code","required":true,"in":"query","schema":{"type":"string"}},{"name":"scope","required":true,"in":"query","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":""}},"tags":["Authentication"],"security":[{"bearer":[]}]}},"/v1/auth/garmin":{"get":{"operationId":"AuthController_authGarmin","parameters":[],"responses":{"200":{"description":""}},"tags":["Authentication"]}},"/v1/auth/link/garmin/redirect":{"get":{"operationId":"AuthController_linkGarminRedirect","parameters":[],"responses":{"200":{"description":""}},"tags":["Authentication"],"security":[{"bearer":[]}]}},"/v1/auth/magic-link":{"post":{"operationId":"AuthController_authMagicLink","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostAuthMagicLinkBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Authentication"]}},"/v1/auth/magic-link/redirect":{"get":{"operationId":"AuthController_authMagicLinkRedirect","parameters":[],"responses":{"200":{"description":""}},"tags":["Authentication"]}},"/v1/users":{"get":{"operationId":"UsersController_getUsers","parameters":[{"name":"name","required":false,"in":"query","schema":{"type":"string"}},{"name":"type","required":false,"in":"query","schema":{"enum":["following","followers"],"type":"string"}},{"name":"approved","required":false,"in":"query","schema":{"type":"boolean"}},{"name":"page","required":true,"in":"query","schema":{"default":1,"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"default":20,"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]}},"/v1/users/me":{"get":{"operationId":"UsersController_getProfile","parameters":[],"responses":{"200":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]},"delete":{"operationId":"UsersController_deleteAccount","parameters":[],"responses":{"200":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]},"patch":{"operationId":"UsersController_updateProfile","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchUserMeBodyDto"}}}},"responses":{"200":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]}},"/v1/users/me/reset-account":{"post":{"operationId":"UsersController_resetAccount","parameters":[],"responses":{"200":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]}},"/v1/users/me/internal-trial":{"post":{"operationId":"UsersController_startInternalTrial","parameters":[],"responses":{"201":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]}},"/v1/users/me/track-client-event":{"post":{"operationId":"UsersController_trackClientEvent","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackClientEventBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]}},"/v1/users/{id}":{"get":{"operationId":"UsersController_getUser","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]}},"/v1/users/me/summary":{"get":{"operationId":"UsersController_getUserSummary","parameters":[],"responses":{"200":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]}},"/v1/users/{id}/summary":{"get":{"operationId":"UsersController_getUserSummaryForFollower","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]}},"/v1/users/me/reports/weeks":{"get":{"operationId":"UsersController_getReports","parameters":[{"name":"weekDate","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]}},"/v1/users/me/reports/longitudinal":{"get":{"operationId":"UsersController_getLongitudinalReports","parameters":[{"name":"fromDate","required":true,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"toDate","required":true,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]}},"/v1/users/push-token":{"post":{"operationId":"UsersController_updatePushToken","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePushTokenDto"}}}},"responses":{"201":{"description":""}},"tags":["Users"],"security":[{"bearer":[]}]}},"/admin/users/{userId}":{"delete":{"operationId":"UsersAdminController_deleteProfile","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Users","Admin"]}},"/admin/users/{userId}/backfill-rides":{"post":{"operationId":"UsersAdminController_backfillRides","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Users","Admin"]}},"/v1/customer-io/webhook/events/weekly-insight-report":{"post":{"operationId":"CustomerIoWebhookController_processCustomerIoWeeklyInsightsReportEvent","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerIoWeeklyInsightReportEventBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Customer.io"]}},"/v1/ride-segments":{"get":{"operationId":"RideSegmentsV1Controller_getRideSegments","parameters":[{"name":"duration","required":true,"in":"query","schema":{"type":"number"}},{"name":"isPersonalRecord","required":false,"in":"query","schema":{"type":"boolean"}},{"name":"fromDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"toDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"page","required":true,"in":"query","schema":{"default":1,"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"default":20,"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Ride Segments"],"security":[{"bearer":[]}]}},"/v1/ride-segments/stats":{"get":{"operationId":"RideSegmentsV1Controller_getRideSegmentStatistics","parameters":[{"name":"fromDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"toDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":""}},"tags":["Ride Segments"],"security":[{"bearer":[]}]}},"/admin/benchmarks/refresh-data":{"post":{"operationId":"BenchmarksAdminController_refreshData","parameters":[{"name":"authToken","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["Benchmarks","Admin"]}},"/v1/benchmarks/level-thresholds":{"get":{"operationId":"BenchmarksV1Controller_getLevels","parameters":[{"name":"duration","required":false,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Benchmarks"],"security":[{"bearer":[]}]}},"/v1/recovery-data/stats":{"get":{"operationId":"RecoveryDataController_getStats","parameters":[{"name":"from","required":true,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"to","required":true,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":""}},"tags":["Recovery data"],"security":[{"bearer":[]}]}},"/v1/following":{"post":{"operationId":"FollowersController_followUser","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowUserBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Social"],"security":[{"bearer":[]}]}},"/v1/following/{userId}":{"delete":{"operationId":"FollowersController_unfollowUser","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Social"],"security":[{"bearer":[]}]}},"/v1/followers/{userId}/approval":{"post":{"operationId":"FollowersController_approveFollowerUser","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"201":{"description":""}},"tags":["Social"],"security":[{"bearer":[]}]}},"/v1/followers/{userId}":{"delete":{"operationId":"FollowersController_removeFollowerUser","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Social"],"security":[{"bearer":[]}]}},"/v1/rides":{"get":{"operationId":"RidesController_getAll","parameters":[{"name":"fromDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"toDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"orderBy","required":false,"in":"query","schema":{"enum":["startedAt","-startedAt"],"type":"string"}},{"name":"classification","required":false,"in":"query","schema":{"enum":["unclassified","recovery","endurance","intensity"],"type":"string"}},{"name":"isCapacity","required":false,"in":"query","schema":{"type":"boolean"}},{"name":"page","required":true,"in":"query","schema":{"default":1,"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"default":20,"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Rides"],"security":[{"bearer":[]}]}},"/v1/rides/weekday-stats":{"get":{"operationId":"RidesController_getWeekdayStats","parameters":[{"name":"weekDate","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Rides"],"security":[{"bearer":[]}]}},"/v1/rides/active-days-distribution":{"get":{"operationId":"RidesController_getActiveDaysStats","parameters":[],"responses":{"200":{"description":""}},"tags":["Rides"],"security":[{"bearer":[]}]}},"/v1/rides/stats":{"get":{"operationId":"RidesController_getRideStats","parameters":[],"responses":{"200":{"description":""}},"tags":["Rides"],"security":[{"bearer":[]}]}},"/v1/rides/{id}":{"get":{"operationId":"RidesController_getOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Rides"],"security":[{"bearer":[]}]},"put":{"operationId":"RidesController_updateOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutRideBodyDto"}}}},"responses":{"200":{"description":""}},"tags":["Rides"],"security":[{"bearer":[]}]},"delete":{"operationId":"RidesController_deleteOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Rides"],"security":[{"bearer":[]}]}},"/v1/rides/{id}/restore":{"post":{"operationId":"RidesController_restoreOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"201":{"description":""}},"tags":["Rides"],"security":[{"bearer":[]}]}},"/v1/rides/{id}/exclude-from-statistics":{"post":{"operationId":"RidesController_excludeFromStatistics","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExcludeRideBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Rides"],"security":[{"bearer":[]}]}},"/v1/rides/dynamic":{"post":{"operationId":"RidesController_getDynamicRideDta","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DynamicRideData"}}}},"responses":{"200":{"description":""}},"tags":["Rides"],"security":[{"bearer":[]}]}},"/v1/team-feed-items/{teamFeedItemId}/reactions/{reactionId}/user-reactions":{"get":{"operationId":"TeamFeedItemsController_getUsersReactions","parameters":[{"name":"teamFeedItemId","required":true,"in":"path","schema":{"type":"number"}},{"name":"reactionId","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["TeamFeedItems"],"security":[{"bearer":[]}]}},"/v1/team-feed-items/{id}":{"get":{"operationId":"TeamFeedItemsController_findById","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["TeamFeedItems"],"security":[{"bearer":[]}]}},"/v1/user-reactions":{"post":{"operationId":"UserReactionsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserReactionCreateBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["UserReactions"],"security":[{"bearer":[]}]}},"/v1/user-reactions/{id}":{"delete":{"operationId":"UserReactionsController_delete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["UserReactions"],"security":[{"bearer":[]}]}},"/v1/teams":{"get":{"operationId":"TeamsController_getAll","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]},"post":{"operationId":"TeamsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsCreateBodyDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}]}},"/v1/teams/friends":{"get":{"operationId":"TeamsController_getFriendsTeamDetail","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/teams/{id}":{"get":{"operationId":"TeamsController_getTeamDetail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/teams/{id}/invitations":{"post":{"operationId":"TeamsController_invite","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsInviteUserBodyDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}]},"delete":{"operationId":"TeamsController_uninvite","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}},{"name":"userId","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/teams/{id}/invitations/decline":{"post":{"operationId":"TeamsController_declineInvitation","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/teams/{teamId}/users/{userId}":{"delete":{"operationId":"TeamsController_removeUserFromTeam","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"number"}},{"name":"userId","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/teams/{id}/invitations/accept":{"post":{"operationId":"TeamsController_acceptInvitation","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/teams/friends/feed":{"get":{"operationId":"TeamsController_getFriendsTeamFeed","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/teams/{id}/feed":{"get":{"operationId":"TeamsController_getFeed","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/teams/friends/members":{"get":{"operationId":"TeamsController_getFriendsTeamMembers","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/teams/{id}/members":{"get":{"operationId":"TeamsController_getTeamMembers","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/user-zones/heart-rate":{"get":{"operationId":"UserZonesController_getAllHeartRateZones","parameters":[{"name":"heartRateMaximum","required":false,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["User Zones"],"security":[{"bearer":[]}]}},"/v1/user-zones/power":{"get":{"operationId":"UserZonesController_getAllPowerZones","parameters":[{"name":"ftp","required":false,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["User Zones"],"security":[{"bearer":[]}]}},"/v1/localization/translation":{"post":{"operationId":"LocalizationController_getTranslation","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Localization"]}},"/v1/localization/translations":{"post":{"operationId":"LocalizationController_getTranslations","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationsBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Localization"]}},"/v1/user-heart-rate-maximum-entries":{"post":{"operationId":"UserHeartRateMaximumEntriesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserHeartRateMaximumEntryCreateBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["User Heart Rate Maximum Entries"],"security":[{"bearer":[]}]}},"/v1/user-heart-rate-maximum-entries/latest":{"get":{"operationId":"UserHeartRateMaximumEntriesController_getLatest","parameters":[{"name":"source","required":true,"in":"query","schema":{"enum":["manual","whoop","estimated"],"type":"string"}}],"responses":{"200":{"description":""}},"tags":["User Heart Rate Maximum Entries"],"security":[{"bearer":[]}]}},"/v1/user-ftp-entries/estimated":{"post":{"operationId":"UserFtpEntriesController_createEstimated","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserFtpEntryCreateEstimatedBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["User FTP Entries"],"security":[{"bearer":[]}]}},"/v1/user-ftp-entries":{"post":{"operationId":"UserFtpEntriesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserFtpEntryCreateBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["User FTP Entries"],"security":[{"bearer":[]}]}},"/v1/user-ftp-entries/latest":{"get":{"operationId":"UserFtpEntriesController_getLatest","parameters":[{"name":"source","required":true,"in":"query","schema":{"enum":["manual","apple-health","estimated"],"type":"string"}}],"responses":{"200":{"description":""}},"tags":["User FTP Entries"],"security":[{"bearer":[]}]}},"/v1/user-active-day-preferences":{"post":{"operationId":"UserActiveDayPreferencesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserActiveDayPreferenceCreateBodyDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}]}},"/v1/user-training-goals":{"post":{"operationId":"UserTrainingGoalsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserTrainingGoalCreateBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["User Training Goals"],"security":[{"bearer":[]}]}},"/v1/user-training-goals/{id}":{"delete":{"operationId":"UserTrainingGoalsController_delete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["User Training Goals"],"security":[{"bearer":[]}]}},"/v1/race-event-courses/{id}":{"get":{"operationId":"RaceEventCoursesController_getRaceEventCourse","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/preferences/modes":{"post":{"operationId":"UserModePreferencesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserModePreferenceCreateBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Preferences"],"security":[{"bearer":[]}]},"get":{"operationId":"UserModePreferencesController_getAll","parameters":[{"name":"activeDayPreferenceRecoveryCount","required":false,"in":"query","schema":{"type":"number"}},{"name":"activeDayPreferenceEnduranceCount","required":false,"in":"query","schema":{"type":"number"}},{"name":"activeDayPreferenceIntensityCount","required":false,"in":"query","schema":{"type":"number"}},{"name":"activeDayPreferenceCapacityCount","required":false,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Preferences"],"security":[{"bearer":[]}]}},"/v1/interrogations":{"get":{"operationId":"InterrogationController_getAll","parameters":[{"name":"page","required":true,"in":"query","schema":{"default":1,"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"default":20,"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Interrogations"],"security":[{"bearer":[]}]}},"/v1/interrogations/{id}/{responseIndex}":{"put":{"operationId":"InterrogationController_respondToInterrogation","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}},{"name":"responseIndex","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Interrogations"],"security":[{"bearer":[]}]}},"/v1/guidance":{"get":{"operationId":"GuidanceController_getAll","parameters":[],"responses":{"200":{"description":""}},"tags":["Guidance"],"security":[{"bearer":[]}]}},"/v1/guidance/week-plan":{"get":{"operationId":"GuidanceController_getWeekPlan","parameters":[{"name":"additionalWeeks","required":false,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Guidance"],"security":[{"bearer":[]}]}},"/v1/guidance/capacity-projection":{"get":{"operationId":"GuidanceController_getCapacityProjection","parameters":[{"name":"targetDate","required":true,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"recoveryRideCount","required":true,"in":"query","schema":{"type":"number"}},{"name":"enduranceRideCount","required":true,"in":"query","schema":{"type":"number"}},{"name":"intensityRideCount","required":true,"in":"query","schema":{"type":"number"}},{"name":"capacityRideCount","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Guidance"],"security":[{"bearer":[]}]}},"/v1/guidance/{id}":{"get":{"operationId":"GuidanceController_getOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Guidance"],"security":[{"bearer":[]}]}},"/v1/workout/{id}/exports/zwo":{"get":{"operationId":"WorkoutsController_exportZwiftFile","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/v1/workouts/{id}/exports/zwo":{"get":{"operationId":"WorkoutsController_exportZwiftFile","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/v1/workout/{id}":{"get":{"operationId":"WorkoutsController_getWorkout","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/v1/workouts/{id}":{"get":{"operationId":"WorkoutsController_getWorkout","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/v1/workout/groups/{workoutGroupId}":{"get":{"operationId":"WorkoutsController_getWorkoutByWorkoutGroupId","parameters":[{"name":"workoutGroupId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/v1/workouts/groups/{workoutGroupId}":{"get":{"operationId":"WorkoutsController_getWorkoutByWorkoutGroupId","parameters":[{"name":"workoutGroupId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/v1/workout/generate-ai-workout/jobs/{jobId}/import-status":{"get":{"operationId":"WorkoutsController_getWorkoutStatus","parameters":[{"name":"jobId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/v1/workouts/generate-ai-workout/jobs/{jobId}/import-status":{"get":{"operationId":"WorkoutsController_getWorkoutStatus","parameters":[{"name":"jobId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/v1/workout/generate-ai-workout/{id}":{"post":{"operationId":"WorkoutsController_generateAiWorkout","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/v1/workouts/generate-ai-workout/{id}":{"post":{"operationId":"WorkoutsController_generateAiWorkout","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/v1/workout/{id}/bookmark":{"post":{"operationId":"WorkoutsController_bookmarkWorkout","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"201":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/v1/workouts/{id}/bookmark":{"post":{"operationId":"WorkoutsController_bookmarkWorkout","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"201":{"description":""}},"tags":["Workouts"],"security":[{"bearer":[]}]}},"/admin/workouts/{id}/regenerate":{"post":{"operationId":"WorkoutsAdminController_regenerateWorkout","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateWorkoutRequestDto"}}}},"responses":{"200":{"description":""}},"tags":["Workouts","Admin"]}},"/admin/workouts/generate-ai-workout-description":{"post":{"operationId":"WorkoutsAdminController_generateAIWorkoutDescription","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateSegmentsRequestDto"}}}},"responses":{"200":{"description":""}},"tags":["Workouts","Admin"]}},"/v1/user-guidance-workouts-providers-preferences":{"get":{"operationId":"UserGuidanceWorkoutsProvidersPreferencesController_getAll","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]},"post":{"operationId":"UserGuidanceWorkoutsProvidersPreferencesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGuidanceWorkoutsProvidersPreferenceCreateBodyDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}]}},"/v1/user-guidance-workouts-providers-preferences/{id}":{"delete":{"operationId":"UserGuidanceWorkoutsProvidersPreferencesController_delete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/reactions":{"get":{"operationId":"ReactionsController_getAll","parameters":[],"responses":{"200":{"description":""}},"tags":["Reactions"],"security":[{"bearer":[]}]}},"/v1/user-challenges":{"get":{"operationId":"UserChallengesController_getAll","parameters":[],"responses":{"200":{"description":""}},"tags":["User Challenges"],"security":[{"bearer":[]}]}},"/v1/user-challenges/completed":{"get":{"operationId":"UserChallengesController_getCompleted","parameters":[{"name":"from","required":false,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":""}},"tags":["User Challenges"],"security":[{"bearer":[]}]}},"/v1/user-challenges/accept":{"post":{"operationId":"UserChallengesController_accept","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptChallengeBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["User Challenges"],"security":[{"bearer":[]}]}},"/v1/user-challenges/{id}/decline":{"post":{"operationId":"UserChallengesController_decline","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"201":{"description":""}},"tags":["User Challenges"],"security":[{"bearer":[]}]}},"/v1/benchmarks/age-brackets":{"get":{"operationId":"BenchmarkAgeCompensationsController_getAll","parameters":[],"responses":{"200":{"description":""}},"tags":["Benchmarks","Age Brackets"],"security":[{"bearer":[]}]}},"/v1/objectives":{"get":{"operationId":"ObjectivesController_getAll","parameters":[{"name":"startsAtFrom","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"startsAtTo","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"endsAtFrom","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"endsAtTo","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"page","required":true,"in":"query","schema":{"default":1,"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"default":20,"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/activities":{"get":{"operationId":"ActivitiesController_getActivities","parameters":[{"name":"fromDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"toDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"orderBy","required":false,"in":"query","schema":{"enum":["startedAt","-startedAt"],"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"default":1,"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"default":20,"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Activities"],"security":[{"bearer":[]}]}},"/v1/activities/{id}":{"get":{"operationId":"ActivitiesController_getActivity","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Activities"],"security":[{"bearer":[]}]},"put":{"operationId":"ActivitiesController_updateActivity","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutActivityBodyDto"}}}},"responses":{"200":{"description":""}},"tags":["Activities"],"security":[{"bearer":[]}]},"delete":{"operationId":"ActivitiesController_deleteActivity","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Activities"],"security":[{"bearer":[]}]}},"/v1/activities/{id}/restore":{"post":{"operationId":"ActivitiesController_restoreOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"201":{"description":""}},"tags":["Activities"],"security":[{"bearer":[]}]}},"/v1/activities/{id}/exclude-from-statistics":{"post":{"operationId":"ActivitiesController_excludeFromStatistics","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExcludeActivityBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Activities"],"security":[{"bearer":[]}]}},"/v1/classes/recommended":{"get":{"operationId":"WorkoutClassesV1Controller_getRecommendedClasses","parameters":[{"name":"duration","required":true,"in":"query","schema":{"type":"number"}},{"name":"provider","required":false,"in":"query","schema":{"enum":["peloton","breakaway"],"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"default":1,"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"default":20,"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Classes"],"security":[{"bearer":[]}]}},"/v1/classes/home":{"get":{"operationId":"WorkoutClassesV1Controller_getHomeClasses","parameters":[{"name":"page","required":true,"in":"query","schema":{"default":1,"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"default":20,"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Classes"],"security":[{"bearer":[]}]}},"/v1/classes/{id}":{"get":{"operationId":"WorkoutClassesV1Controller_getOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Classes"],"security":[{"bearer":[]}]}},"/v1/classes/{id}/bookmark":{"post":{"operationId":"WorkoutClassesV1Controller_bookmarkClass","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"201":{"description":""}},"tags":["Classes"],"security":[{"bearer":[]}]}},"/v1/data-sources/peloton/connect":{"post":{"operationId":"DataSourcesController_connectPeloton","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectPelotonDto"}}}},"responses":{"201":{"description":""}},"tags":["Data Sources","Peloton"],"security":[{"bearer":[]}]},"put":{"operationId":"DataSourcesController_updatePelotonCredentials","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePelotonPasswordDto"}}}},"responses":{"200":{"description":""}},"tags":["Data Sources","Peloton"],"security":[{"bearer":[]}]}},"/v1/data-sources/peloton/disconnect":{"post":{"operationId":"DataSourcesController_disconnectPeloton","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Peloton"],"security":[{"bearer":[]}]}},"/v1/data-sources/strava/connect":{"post":{"operationId":"DataSourcesController_connectStrava","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Strava"],"security":[{"bearer":[]}]}},"/v1/data-sources/strava/disconnect":{"post":{"operationId":"DataSourcesController_disconnectStrava","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Strava"],"security":[{"bearer":[]}]}},"/v1/data-sources/strava/webhook":{"get":{"operationId":"DataSourcesController_validateWebhookStrava","parameters":[{"name":"hubMode","required":true,"in":"query","schema":{"type":"string"}},{"name":"hubVerifyToken","required":true,"in":"query","schema":{"type":"string"}},{"name":"hubChallenge","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Data Sources","Strava"]},"post":{"operationId":"DataSourcesController_webhookStrava","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StravaWebhookBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Data Sources","Strava"]}},"/v1/data-sources/garmin/connect":{"post":{"operationId":"DataSourcesController_connectGarmin","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Garmin"],"security":[{"bearer":[]}]}},"/v1/data-sources/garmin/disconnect":{"post":{"operationId":"DataSourcesController_disconnectGarmin","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Garmin"],"security":[{"bearer":[]}]}},"/v1/data-sources/garmin/webhook/activity-details":{"post":{"operationId":"DataSourcesController_webhookGarminActivityDetails","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Buffer"}}}},"responses":{"200":{"description":""}},"tags":["Data Sources","Garmin"]}},"/v1/data-sources/garmin/webhook/activity-files":{"post":{"operationId":"DataSourcesController_webhookGarminActivityFiles","parameters":[],"responses":{"200":{"description":""}},"tags":["Data Sources","Garmin"]}},"/v1/data-sources/garmin/webhook/deregistrations":{"post":{"operationId":"DataSourcesController_webhookGarminDeregistration","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GarminWebhookDeregistrationBodyDto"}}}},"responses":{"200":{"description":""}},"tags":["Data Sources","Garmin"]}},"/v1/data-sources/zwift/connect":{"post":{"operationId":"DataSourcesController_connectZwift","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectVitalPasswordProviderDto"}}}},"responses":{"201":{"description":""}},"tags":["Data Sources","Zwift"],"security":[{"bearer":[]}]},"put":{"operationId":"DataSourcesController_updateZwiftCredentials","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVitalPasswordProviderDto"}}}},"responses":{"200":{"description":""}},"tags":["Data Sources","Zwift"],"security":[{"bearer":[]}]}},"/v1/data-sources/zwift/disconnect":{"post":{"operationId":"DataSourcesController_disconnectZwift","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Zwift"],"security":[{"bearer":[]}]}},"/v1/data-sources/hammerhead/connect":{"post":{"operationId":"DataSourcesController_connectHammerHead","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectVitalPasswordProviderDto"}}}},"responses":{"201":{"description":""}},"tags":["Data Sources","Hammerhead"],"security":[{"bearer":[]}]},"put":{"operationId":"DataSourcesController_updateHammerheadCredentials","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVitalPasswordProviderDto"}}}},"responses":{"200":{"description":""}},"tags":["Data Sources","Hammerhead"],"security":[{"bearer":[]}]}},"/v1/data-sources/hammerhead/disconnect":{"post":{"operationId":"DataSourcesController_disconnectHammerhead","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Hammerhead"],"security":[{"bearer":[]}]}},"/v1/data-sources/vital/webhook/workouts":{"get":{"operationId":"DataSourcesController_validateWebhookVital","parameters":[{"name":"verifyToken","required":true,"in":"query","schema":{"type":"string"}},{"name":"challenge","required":true,"in":"query","schema":{"type":"string"}},{"name":"eventType","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Data Sources","Vital"]},"post":{"operationId":"DataSourcesController_webhookVitalActivities","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VitalActivityWebhookBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Data Sources","Vital"]}},"/v1/data-sources/wahoo/connect":{"post":{"operationId":"DataSourcesController_terraWahooConnect","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Wahoo"],"security":[{"bearer":[]}]}},"/v1/data-sources/wahoo/terra/disconnect":{"post":{"operationId":"DataSourcesController_terraWahooDisconnect","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Wahoo"],"security":[{"bearer":[]}]}},"/v1/data-sources/wahoo/connect/begin":{"get":{"operationId":"DataSourcesController_beginWahooConnect","parameters":[],"responses":{"200":{"description":""}},"tags":["Data Sources","Wahoo"],"security":[{"bearer":[]}]}},"/v1/data-sources/wahoo/connect/end":{"get":{"operationId":"DataSourcesController_endWahooConnect","parameters":[{"name":"code","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["Data Sources","Wahoo"],"security":[{"bearer":[]}]}},"/v1/data-sources/wahoo/disconnect":{"post":{"operationId":"DataSourcesController_wahooDisconnect","parameters":[],"responses":{"200":{"description":""}},"tags":["Data Sources","Wahoo"],"security":[{"bearer":[]}]}},"/v1/data-sources/wahoo/webhook":{"post":{"operationId":"DataSourcesController_wahooWebhook","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Wahoo"]}},"/v1/data-sources/terra/webhook":{"post":{"operationId":"DataSourcesController_terraWebhook","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Terra"]}},"/v1/data-sources/oura/connect/begin":{"get":{"operationId":"DataSourcesController_beginOuraConnect","parameters":[{"name":"redirectUrl","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Data Sources","Oura"],"security":[{"bearer":[]}]}},"/v1/data-sources/oura/connect/end":{"get":{"operationId":"DataSourcesController_endOuraConnect","parameters":[{"name":"code","required":true,"in":"query","schema":{"type":"string"}},{"name":"redirectUrl","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["Data Sources","Oura"],"security":[{"bearer":[]}]}},"/v1/data-sources/oura/disconnect":{"post":{"operationId":"DataSourcesController_ouraDisconnect","parameters":[],"responses":{"200":{"description":""}},"tags":["Data Sources","Oura"],"security":[{"bearer":[]}]}},"/v1/data-sources/oura/webhook":{"get":{"operationId":"DataSourcesController_ouraWebhookGet","parameters":[{"name":"verificationToken","required":true,"in":"query","schema":{"type":"string"}},{"name":"challenge","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Data Sources","Oura"]},"post":{"operationId":"DataSourcesController_ouraWebhookPost","parameters":[],"responses":{"200":{"description":""}},"tags":["Data Sources","Oura"]}},"/v1/data-sources/whoop/connect/begin":{"get":{"operationId":"DataSourcesController_beginWhoopConnect","parameters":[{"name":"redirectUrl","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Data Sources","Whoop"],"security":[{"bearer":[]}]}},"/v1/data-sources/whoop/connect/end":{"get":{"operationId":"DataSourcesController_endWhoopConnect","parameters":[{"name":"code","required":true,"in":"query","schema":{"type":"string"}},{"name":"state","required":true,"in":"query","schema":{"type":"string"}},{"name":"redirectUrl","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Data Sources","Whoop"],"security":[{"bearer":[]}]}},"/v1/data-sources/whoop/disconnect":{"post":{"operationId":"DataSourcesController_whoopDisconnect","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Whoop"],"security":[{"bearer":[]}]}},"/v1/data-sources/whoop/webhook":{"post":{"operationId":"DataSourcesController_whoopHandleWebhook","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Whoop"]}},"/v1/data-sources/manual-upload/presigned-url":{"get":{"operationId":"DataSourcesController_getManualActivityUploadPresignedUrl","parameters":[],"responses":{"200":{"description":""}},"tags":["Data Sources","Manual upload"],"security":[{"bearer":[]}]},"post":{"operationId":"DataSourcesController_processManualActivityUploadPresignedUrl","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualUploadPresignedUrlBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Data Sources","Manual upload"],"security":[{"bearer":[]}]}},"/v1/data-sources/apple-health/connect":{"post":{"operationId":"DataSourcesController_appleHealthConnect","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Apple Health"],"security":[{"bearer":[]}]}},"/v1/data-sources/apple-health/mark-import-completed":{"post":{"operationId":"DataSourcesController_appleHealthMarkImportCompleted","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleHealthMarkImportCompletedBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Data Sources","Apple Health"],"security":[{"bearer":[]}]}},"/v1/data-sources/apple-health/disconnect":{"post":{"operationId":"DataSourcesController_appleHealthDisconnect","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources","Apple Health"],"security":[{"bearer":[]}]}},"/v1/data-sources/apple-health/webhook":{"post":{"operationId":"DataSourcesController_appleHealthHandleWebhook","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleHealthWebhookBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Data Sources","Apple Health"],"security":[{"bearer":[]}]}},"/v1/data-sources/update":{"post":{"operationId":"DataSourcesController_updateData","parameters":[],"responses":{"201":{"description":""}},"tags":["Data Sources"],"security":[{"bearer":[]}]}},"/health":{"get":{"operationId":"HealthController_getHealth","parameters":[],"responses":{"200":{"description":""}}}},"/v1/leaderboards":{"get":{"operationId":"LeaderboardsController_getFollowingWithStats","parameters":[{"name":"page","required":true,"in":"query","schema":{"default":1,"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"default":20,"type":"number"}},{"name":"type","required":true,"in":"query","schema":{"enum":["following"],"type":"string"}},{"name":"duration","required":true,"in":"query","schema":{"type":"number"}},{"name":"timeScope","required":true,"in":"query","schema":{"default":"all-time","enum":["all-time","recent-interval"],"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Leaderboards"],"security":[{"bearer":[]}]}},"/v1/store/app-store/purchases/process":{"post":{"operationId":"ProductPurchasesController_processAppStorePurchase","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessAppStorePurchaseBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Store"],"security":[{"bearer":[]}]}},"/v1/revenue-cat/webhook/events/update":{"post":{"operationId":"RevenueCatController_processRevenueCatWebhookEvent","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevenueCatWebhookUpdateBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Revenue Cat"]}},"/v1/user-feed":{"get":{"operationId":"UserFeedController_getAll","parameters":[{"name":"from","required":true,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":""}},"tags":["User Feed"],"security":[{"bearer":[]}]}},"/v1/videos/keys/{key}":{"get":{"operationId":"VideosController_getVideo","parameters":[{"name":"key","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Videos"],"security":[{"bearer":[]}]}},"/v1/coaches":{"get":{"operationId":"CoachesController_getCoaches","parameters":[{"name":"page","required":true,"in":"query","schema":{"default":1,"type":"number"}},{"name":"limit","required":true,"in":"query","schema":{"default":20,"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Coaches"],"security":[{"bearer":[]}]}},"/v1/coaching-snapshots":{"post":{"operationId":"CoachingSnapshotsController_create","parameters":[],"responses":{"201":{"description":""}},"tags":["Coaching Snapshots"],"security":[{"bearer":[]}]}},"/v1/coaching-snapshots/latest-diff":{"get":{"operationId":"CoachingSnapshotsController_getLatestDiff","parameters":[],"responses":{"200":{"description":""}},"tags":["Coaching Snapshots"],"security":[{"bearer":[]}]}},"/admin/queues/*":{"all":{"operationId":"BullBoardController_admin","parameters":[],"responses":{"200":{"description":""}}}},"/v1/platform/status":{"get":{"operationId":"PlatformController_getPlatformStatus","parameters":[],"responses":{"200":{"description":""}},"tags":["Platform"]}},"/v1/coach-gpt/data":{"get":{"operationId":"CoachGptController_getUserDataStatsQueryDto","parameters":[],"responses":{"200":{"description":""}},"tags":["Coach GPT"],"security":[{"bearer":[]}]}},"/v1/coach-gpt/ride-data/{id}":{"get":{"operationId":"CoachGptController_getRideDataStats","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Coach GPT"],"security":[{"bearer":[]}]}},"/v1/coach-gpt/feedbacks":{"post":{"operationId":"CoachGptController_createCoachGptFeedback","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostCoachGptFeedbackBodyDto"}}}},"responses":{"201":{"description":""}},"tags":["Coach GPT"],"security":[{"bearer":[]}]}},"/v1/race-events/upcoming":{"get":{"operationId":"RaceEventsController_getRaceEvents","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}},"/v1/race-events/{id}":{"get":{"operationId":"RaceEventsController_getRaceEventById","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}]}}},"info":{"title":"Breakaway API","description":"The Breakaway API description","version":"0.0.1","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"RefreshAccessTokenDto":{"type":"object","properties":{"refreshToken":{"type":"string"}},"required":["refreshToken"]},"LogoutBodyDto":{"type":"object","properties":{"refreshToken":{"type":"string"},"pushToken":{"type":"string"}},"required":["refreshToken"]},"PostAuthMagicLinkBodyDto":{"type":"object","properties":{"destination":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"}},"required":["destination"]},"TrackClientEventBodyDto":{"type":"object","properties":{"eventType":{"type":"string","enum":["ride-badge-reset","revenue-cat-user-alias-registered","notification-read","notification-read-with-mark-all-as-read"]}},"required":["eventType"]},"PatchUserMeBodyDto":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"gender":{"type":"string","nullable":true,"enum":["male","female","nb","na"]},"genderToCompareWith":{"type":"string","nullable":true,"enum":["male","female"]},"birthday":{"format":"date-time","type":"string"},"weight":{"type":"number"},"avatarMediaUrl":{"type":"string"},"profileVisibility":{"type":"string","enum":["public","private"]},"timeZone":{"type":"string"},"preferredHeartRateMaximumEntrySource":{"type":"string","enum":["manual","whoop","estimated"]},"preferredFtpEntrySource":{"type":"string","enum":["manual","estimated","apple-health"]},"isStravaPostingAllowed":{"type":"boolean"}}},"UpdatePushTokenDto":{"type":"object","properties":{"pushToken":{"type":"string"}},"required":["pushToken"]},"CustomerIoWeeklyInsightReportEventBodyDto":{"type":"object","properties":{"userId":{"type":"number"}},"required":["userId"]},"FollowUserBodyDto":{"type":"object","properties":{"userId":{"type":"number"}},"required":["userId"]},"PutRideBodyDto":{"type":"object","properties":{"rpe":{"type":"number"}},"required":["rpe"]},"ExcludeRideBodyDto":{"type":"object","properties":{"excludeFromStatistics":{"type":"boolean"}},"required":["excludeFromStatistics"]},"ValueRange":{"type":"object","properties":{"fromValue":{"type":"number","nullable":true},"toValue":{"type":"number","nullable":true}}},"WhereConstrains":{"type":"object","properties":{"startedAtLocal":{"type":"object"},"kilojoules":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/ValueRange"}]},"distance":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/ValueRange"}]},"totalElevationGain":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/ValueRange"}]},"averageHeartRate":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/ValueRange"}]},"averageSpeed":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/ValueRange"}]},"averageCadence":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/ValueRange"}]},"rpe":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/ValueRange"}]},"classification":{"type":"string","nullable":true,"enum":["unclassified","recovery","endurance","intensity"]},"isIndoor":{"type":"boolean","nullable":true}}},"DynamicAction":{"type":"object","properties":{"max":{"type":"boolean","nullable":true},"min":{"type":"boolean","nullable":true},"sum":{"type":"boolean","nullable":true},"select":{"type":"boolean","nullable":true},"average":{"type":"boolean","nullable":true},"count":{"type":"boolean","nullable":true}}},"AggregateAttribute":{"type":"object","properties":{"startedAtLocal":{"type":"boolean","nullable":true},"id":{"type":"boolean","nullable":true},"kilojoules":{"type":"boolean","nullable":true},"distance":{"type":"boolean","nullable":true},"totalElevationGain":{"type":"boolean","nullable":true},"averageHeartRate":{"type":"boolean","nullable":true},"averageWatts":{"type":"boolean","nullable":true},"averageSpeed":{"type":"boolean","nullable":true},"averageCadence":{"type":"boolean","nullable":true},"rpe":{"type":"boolean","nullable":true},"classification":{"type":"boolean","nullable":true},"isIndoor":{"type":"boolean","nullable":true},"movingDuration":{"type":"boolean","nullable":true}}},"DynamicRideData":{"type":"object","properties":{"limit":{"type":"number"},"orderBy":{"type":"string","enum":["startedAtLocal","kilojoules","movingDuration","distance","totalElevationGain","averageHeartRate","averageWatts","averageSpeed","averageCadence","rpe","classification","isIndoor"]},"orderDirection":{"type":"string","enum":["desc","asc"]},"where":{"$ref":"#/components/schemas/WhereConstrains"},"action":{"$ref":"#/components/schemas/DynamicAction"},"aggregateAttribute":{"$ref":"#/components/schemas/AggregateAttribute"}},"required":["limit","orderBy","orderDirection","where","action","aggregateAttribute"]},"UserReactionCreateBodyDto":{"type":"object","properties":{"teamFeedItemId":{"type":"number"},"reactionId":{"type":"number"}},"required":["teamFeedItemId","reactionId"]},"TeamsCreateBodyDto":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"TeamsInviteUserBodyDto":{"type":"object","properties":{"userId":{"type":"number"},"role":{"type":"object"}},"required":["userId","role"]},"TranslationBodyDto":{"type":"object","properties":{"key":{"type":"string"}},"required":["key"]},"TranslationsBodyDto":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"}}},"required":["keys"]},"UserHeartRateMaximumEntryCreateBodyDto":{"type":"object","properties":{"heartRateMaximum":{"type":"number"},"source":{"type":"string","nullable":true,"enum":["manual","whoop"]}},"required":["heartRateMaximum"]},"UserFtpEntryCreateEstimatedBodyDto":{"type":"object","properties":{"level":{"type":"string","enum":["beginner","intermediate","athletic","sport","elite","pro"]}},"required":["level"]},"UserFtpEntryCreateBodyDto":{"type":"object","properties":{"ftp":{"type":"number"},"source":{"type":"string","nullable":true,"enum":["manual","apple-health"]}},"required":["ftp"]},"UserActiveDayPreferenceCreateBodyDto":{"type":"object","properties":{"recoveryRideCount":{"type":"number"},"enduranceRideCount":{"type":"number"},"capacityRideCount":{"type":"number"},"intensityRideCount":{"type":"number"}},"required":["recoveryRideCount","enduranceRideCount","capacityRideCount","intensityRideCount"]},"UserTrainingGoalCreateBodyDto":{"type":"object","properties":{"targetCapacityKilojoules":{"type":"number"},"targetDate":{"format":"date-time","type":"string"},"name":{"type":"string","nullable":true},"targetDistance":{"type":"number","nullable":true},"targetElevationGain":{"type":"number","nullable":true},"raceEventCourseId":{"type":"number","nullable":true}},"required":["targetCapacityKilojoules","targetDate"]},"UserModePreferenceCreateBodyDto":{"type":"object","properties":{"modeSlug":{"type":"string","enum":["maintain","build","build-capacity","target-event","rest"]}},"required":["modeSlug"]},"WorkoutSegmentDto":{"type":"object","properties":{"timestamp":{"type":"number"},"text":{"type":"string"},"isPersonalized":{"type":"boolean"}},"required":["timestamp","text","isPersonalized"]},"RegenerateWorkoutRequestDto":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"segments":{"type":"array","items":{"$ref":"#/components/schemas/WorkoutSegmentDto"}}},"required":["title","description","segments"]},"GenerateSegmentsRequestDto":{"type":"object","properties":{"duration":{"type":"number"},"zwoFileContent":{"type":"string"}},"required":["duration","zwoFileContent"]},"UserGuidanceWorkoutsProvidersPreferenceCreateBodyDto":{"type":"object","properties":{"providerSlug":{"type":"string","enum":["zwift","peloton"]}},"required":["providerSlug"]},"AcceptChallengeBodyDto":{"type":"object","properties":{"challengeId":{"type":"number"},"targetWatts":{"type":"number"}},"required":["challengeId","targetWatts"]},"PutActivityBodyDto":{"type":"object","properties":{"rpe":{"type":"number"}},"required":["rpe"]},"ExcludeActivityBodyDto":{"type":"object","properties":{"excludeFromStatistics":{"type":"boolean"}},"required":["excludeFromStatistics"]},"ConnectPelotonDto":{"type":"object","properties":{"pelotonLogin":{"type":"string"},"pelotonPassword":{"type":"string"},"providerLogin":{"type":"string"},"providerPassword":{"type":"string"}}},"UpdatePelotonPasswordDto":{"type":"object","properties":{"pelotonPassword":{"type":"string"},"providerPassword":{"type":"string"}}},"StravaWebhookUpdatesDto":{"type":"object","properties":{"title":{"type":"string"},"type":{"type":"string","enum":["AlpineSki","BackcountrySki","Canoeing","Crossfit","EBikeRide","Elliptical","Golf","Handcycle","Hike","IceSkate","InlineSkate","Kayaking","Kitesurf","NordicSki","Ride","RockClimbing","RollerSki","Rowing","Run","Sail","Skateboard","Snowboard","Snowshoe","Soccer","StairStepper","StandUpPaddling","Surfing","Swim","Velomobile","VirtualRide","VirtualRun","Walk","WeightTraining","Wheelchair","Windsurf","Workout","Yoga"]},"private":{"type":"boolean"},"authorized":{"type":"boolean"}}},"StravaWebhookBodyDto":{"type":"object","properties":{"objectType":{"type":"string","enum":["activity","athlete"]},"objectId":{"type":"string"},"aspectType":{"type":"string"},"updates":{"$ref":"#/components/schemas/StravaWebhookUpdatesDto"},"ownerId":{"type":"string"},"subscriptionId":{"type":"number"},"eventTime":{"format":"date-time","type":"string"}},"required":["objectType","objectId","aspectType","updates","ownerId","subscriptionId","eventTime"]},"Buffer":{"type":"object","properties":{}},"GarminWebhookDeregistration":{"type":"object","properties":{"userId":{"type":"string"},"userAccessToken":{"type":"string"}},"required":["userId","userAccessToken"]},"GarminWebhookDeregistrationBodyDto":{"type":"object","properties":{"deregistrations":{"type":"array","items":{"$ref":"#/components/schemas/GarminWebhookDeregistration"}}},"required":["deregistrations"]},"ConnectVitalPasswordProviderDto":{"type":"object","properties":{"providerLogin":{"type":"string"},"providerPassword":{"type":"string"},"zwiftLogin":{"type":"string"},"zwiftPassword":{"type":"string"}}},"UpdateVitalPasswordProviderDto":{"type":"object","properties":{"providerPassword":{"type":"string"},"zwiftPassword":{"type":"string"}}},"VitalActivityWebhookBodyDto":{"type":"object","properties":{"eventType":{"type":"string","enum":["daily.data.workouts.created","daily.data.workouts.updated","daily.data.workout_stream.created","historical.data.workouts.created","historical.data.profile.created","provider.connection.error"]},"data":{"type":"object"}},"required":["eventType","data"]},"ManualUploadPresignedUrlBodyDto":{"type":"object","properties":{"fileKey":{"type":"string"}},"required":["fileKey"]},"AppleHealthMarkImportCompletedBodyDto":{"type":"object","properties":{"dataSyncType":{"type":"object"}},"required":["dataSyncType"]},"AppleHealthWebhookWorkoutStreamDateIntervalDto":{"type":"object","properties":{"startDate":{"format":"date-time","type":"string"},"duration":{"type":"number"}},"required":["startDate","duration"]},"AppleHealthWebhookWorkoutStreamItemDto":{"type":"object","properties":{"dateInterval":{"$ref":"#/components/schemas/AppleHealthWebhookWorkoutStreamDateIntervalDto"},"value":{"type":"number"}},"required":["dateInterval","value"]},"AppleHealthWebhookWorkoutDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"startedAt":{"format":"date-time","type":"string"},"timezone":{"type":"string"},"workoutType":{"type":"string"},"distanceMeters":{"type":"number"},"totalDurationSeconds":{"type":"number"},"movingDurationSeconds":{"type":"number"},"averagePowerWatts":{"type":"number"},"averageHeartRateBpm":{"type":"number"},"averageSpeedMps":{"type":"number"},"averageCadenceRpm":{"type":"number"},"activeKilocalories":{"type":"number"},"totalKilocalories":{"type":"number"},"isIndoor":{"type":"boolean"},"streamHeartRateBpm":{"type":"array","items":{"$ref":"#/components/schemas/AppleHealthWebhookWorkoutStreamItemDto"}},"streamPowerWatts":{"type":"array","items":{"$ref":"#/components/schemas/AppleHealthWebhookWorkoutStreamItemDto"}},"streamSpeedMps":{"type":"array","items":{"$ref":"#/components/schemas/AppleHealthWebhookWorkoutStreamItemDto"}},"streamCadenceRpm":{"type":"array","items":{"$ref":"#/components/schemas/AppleHealthWebhookWorkoutStreamItemDto"}},"sourceName":{"type":"string"}},"required":["id","name","startedAt","timezone","workoutType","totalDurationSeconds","isIndoor"]},"AppleHealthWebhookBodyDto":{"type":"object","properties":{"workout":{"$ref":"#/components/schemas/AppleHealthWebhookWorkoutDto"}},"required":["workout"]},"ProcessAppStorePurchaseBodyDto":{"type":"object","properties":{"receipt":{"type":"string"}},"required":["receipt"]},"RevenueCatWebhookUpdatesDto":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"}},"appUserId":{"type":"object"},"currency":{"type":"string"},"entitlementId":{"type":"string"},"entitlementIds":{"type":"array","items":{"type":"string"}},"environment":{"type":"string"},"eventTimestampMs":{"type":"number"},"expirationAtMs":{"type":"number"},"id":{"type":"string"},"isFamilyShare":{"type":"boolean"},"transferredFrom":{"type":"array","items":{"type":"string"}},"transferredTo":{"type":"array","items":{"type":"string"}},"originalAppUserId":{"type":"string"},"originalTransactionId":{"type":"string"},"periodType":{"type":"string"},"presentedOfferingId":{"type":"string"},"price":{"type":"number"},"priceInPurchasedCurrency":{"type":"number"},"productId":{"type":"string"},"newProductId":{"type":"string"},"purchasedAtMs":{"type":"number"},"store":{"type":"string"},"subscriberAttributes":{"type":"object"},"takehomePercentage":{"type":"number"},"transactionId":{"type":"string"},"type":{"type":"string","enum":["TEST","INITIAL_PURCHASE","NON_RENEWING_PURCHASE","RENEWAL","PRODUCT_CHANGE","CANCELLATION","UNCANCELLATION","BILLING_ISSUE","SUBSCRIBER_ALIAS","SUBSCRIPTION_PAUSED","TRANSFER","EXPIRATION"]}}},"RevenueCatWebhookUpdateBodyDto":{"type":"object","properties":{"apiVersion":{"type":"string"},"event":{"$ref":"#/components/schemas/RevenueCatWebhookUpdatesDto"}},"required":["apiVersion","event"]},"PostCoachGptFeedbackBodyDto":{"type":"object","properties":{"context":{"type":"array","items":{"type":"object"}},"message":{"type":"string"},"feedback":{"type":"number"}},"required":["context","message","feedback"]}}}}