package strava import "time" type TokenRequest struct { ClientID int32 `json:"client_id"` ClientSecret string `json:"client_secret"` Code string `json:"code"` GrantType string `json:"grant_type"` } type RefreshTokenRequest struct { ClientID int32 `json:"client_id"` ClientSecret string `json:"client_secret"` RefreshToken string `json:"refresh_token"` GrantType string `json:"grant_type"` } type RefreshTokenResponse struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` ExpiresAt int64 `json:"expires_at"` } type StravaIntegration struct { Active bool `json:"active"` Routes bool `json:"routes"` Activities bool `json:"activities"` ClientID int32 `json:"clientId"` ClientSecret string `json:"clientSecret"` AccessToken string `json:"accessToken,omitempty"` RefreshToken string `json:"refreshToken,omitempty"` ExpiresAt int64 `json:"expiresAt,omitempty"` } type StravaRoute struct { Athlete Athlete `json:"athlete"` Description string `json:"description"` Distance float32 `json:"distance"` ElevationGain float32 `json:"elevation_gain"` ID int64 `json:"id"` IDStr string `json:"id_str"` Map Map `json:"map"` Name string `json:"name"` Private bool `json:"private"` Starred bool `json:"starred"` Timestamp int `json:"timestamp"` Type int `json:"type"` SubType int `json:"sub_type"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` EstimatedMovingTime int `json:"estimated_moving_time"` Segments []Segments `json:"segments"` Waypoints []Waypoints `json:"waypoints"` } type Athlete struct { ID int64 `json:"id"` ResourceState int `json:"resource_state"` Firstname string `json:"firstname"` Lastname string `json:"lastname"` ProfileMedium string `json:"profile_medium"` Profile string `json:"profile"` City string `json:"city"` State string `json:"state"` Country string `json:"country"` Sex string `json:"sex"` Premium bool `json:"premium"` Summit bool `json:"summit"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type Map struct { ID string `json:"id"` Polyline string `json:"polyline"` SummaryPolyline string `json:"summary_polyline"` } type AthletePrEffort struct { PrActivityID int64 `json:"pr_activity_id"` PrElapsedTime int `json:"pr_elapsed_time"` PrDate time.Time `json:"pr_date"` EffortCount int `json:"effort_count"` } type AthleteSegmentStats struct { ID int `json:"id"` ActivityID int `json:"activity_id"` ElapsedTime int `json:"elapsed_time"` StartDate time.Time `json:"start_date"` StartDateLocal time.Time `json:"start_date_local"` Distance float32 `json:"distance"` IsKom bool `json:"is_kom"` } type Segments struct { ID int64 `json:"id"` Name string `json:"name"` ActivityType string `json:"activity_type"` Distance float32 `json:"distance"` AverageGrade float32 `json:"average_grade"` MaximumGrade float32 `json:"maximum_grade"` ElevationHigh float32 `json:"elevation_high"` ElevationLow float32 `json:"elevation_low"` StartLatlng []float32 `json:"start_latlng"` EndLatlng []float32 `json:"end_latlng"` ClimbCategory int `json:"climb_category"` City string `json:"city"` State string `json:"state"` Country string `json:"country"` Private bool `json:"private"` AthletePrEffort AthletePrEffort `json:"athlete_pr_effort"` AthleteSegmentStats AthleteSegmentStats `json:"athlete_segment_stats"` } type Waypoints struct { Latlng []float32 `json:"latlng"` TargetLatlng []float32 `json:"target_latlng"` Categories []string `json:"categories"` Title string `json:"title"` Description string `json:"description"` DistanceIntoRoute float64 `json:"distance_into_route"` } type StravaActivity struct { ResourceState int `json:"resource_state"` Athlete Athlete `json:"athlete"` Name string `json:"name"` Distance float64 `json:"distance"` MovingTime int `json:"moving_time"` ElapsedTime int `json:"elapsed_time"` TotalElevationGain float64 `json:"total_elevation_gain"` Type string `json:"type"` SportType string `json:"sport_type"` WorkoutType any `json:"workout_type"` ID int64 `json:"id"` ExternalID string `json:"external_id"` UploadID int64 `json:"upload_id"` StartDate time.Time `json:"start_date"` StartDateLocal time.Time `json:"start_date_local"` Timezone string `json:"timezone"` StartLatlng any `json:"start_latlng"` EndLatlng any `json:"end_latlng"` LocationCity any `json:"location_city"` LocationState any `json:"location_state"` LocationCountry string `json:"location_country"` AchievementCount int `json:"achievement_count"` KudosCount int `json:"kudos_count"` CommentCount int `json:"comment_count"` AthleteCount int `json:"athlete_count"` PhotoCount int `json:"photo_count"` Map Map `json:"map"` Trainer bool `json:"trainer"` Commute bool `json:"commute"` Manual bool `json:"manual"` Private bool `json:"private"` Flagged bool `json:"flagged"` GearID string `json:"gear_id"` FromAcceptedTag bool `json:"from_accepted_tag"` AverageSpeed float64 `json:"average_speed"` MaxSpeed float64 `json:"max_speed"` AverageCadence float64 `json:"average_cadence"` AverageWatts float64 `json:"average_watts"` WeightedAverageWatts int `json:"weighted_average_watts"` Kilojoules float64 `json:"kilojoules"` DeviceWatts bool `json:"device_watts"` HasHeartrate bool `json:"has_heartrate"` AverageHeartrate float64 `json:"average_heartrate"` MaxHeartrate float64 `json:"max_heartrate"` MaxWatts int `json:"max_watts"` PrCount int `json:"pr_count"` TotalPhotoCount int `json:"total_photo_count"` HasKudoed bool `json:"has_kudoed"` SufferScore float64 `json:"suffer_score"` } type DetailedStravaActivity struct { ID int64 `json:"id"` ResourceState int `json:"resource_state"` ExternalID string `json:"external_id"` UploadID int64 `json:"upload_id"` Athlete Athlete `json:"athlete"` Name string `json:"name"` Distance float64 `json:"distance"` MovingTime int `json:"moving_time"` ElapsedTime int `json:"elapsed_time"` TotalElevationGain float64 `json:"total_elevation_gain"` Type string `json:"type"` SportType string `json:"sport_type"` StartDate time.Time `json:"start_date"` StartDateLocal time.Time `json:"start_date_local"` Timezone string `json:"timezone"` StartLatlng []float64 `json:"start_latlng"` EndLatlng []float64 `json:"end_latlng"` AchievementCount int `json:"achievement_count"` KudosCount int `json:"kudos_count"` CommentCount int `json:"comment_count"` AthleteCount int `json:"athlete_count"` PhotoCount int `json:"photo_count"` Map Map `json:"map"` Trainer bool `json:"trainer"` Commute bool `json:"commute"` Manual bool `json:"manual"` Private bool `json:"private"` Flagged bool `json:"flagged"` GearID string `json:"gear_id"` FromAcceptedTag bool `json:"from_accepted_tag"` AverageSpeed float64 `json:"average_speed"` MaxSpeed float64 `json:"max_speed"` AverageCadence float64 `json:"average_cadence"` AverageTemp int `json:"average_temp"` AverageWatts float64 `json:"average_watts"` WeightedAverageWatts int `json:"weighted_average_watts"` Kilojoules float64 `json:"kilojoules"` DeviceWatts bool `json:"device_watts"` HasHeartrate bool `json:"has_heartrate"` MaxWatts int `json:"max_watts"` ElevHigh float64 `json:"elev_high"` ElevLow float64 `json:"elev_low"` PrCount int `json:"pr_count"` TotalPhotoCount int `json:"total_photo_count"` HasKudoed bool `json:"has_kudoed"` WorkoutType int `json:"workout_type"` SufferScore float64 `json:"suffer_score"` Description string `json:"description"` Calories float64 `json:"calories"` SegmentEfforts []SegmentEfforts `json:"segment_efforts"` SplitsMetric []SplitsMetric `json:"splits_metric"` Laps []Laps `json:"laps"` Gear Gear `json:"gear"` PartnerBrandTag any `json:"partner_brand_tag"` Photos Photos `json:"photos"` HighlightedKudosers []HighlightedKudosers `json:"highlighted_kudosers"` HideFromHome bool `json:"hide_from_home"` DeviceName string `json:"device_name"` EmbedToken string `json:"embed_token"` SegmentLeaderboardOptOut bool `json:"segment_leaderboard_opt_out"` LeaderboardOptOut bool `json:"leaderboard_opt_out"` } type SegmentActivity struct { ID int64 `json:"id"` ResourceState int `json:"resource_state"` } type Segment struct { ID int64 `json:"id"` ResourceState int `json:"resource_state"` Name string `json:"name"` ActivityType string `json:"activity_type"` Distance float64 `json:"distance"` AverageGrade float64 `json:"average_grade"` MaximumGrade float64 `json:"maximum_grade"` ElevationHigh float64 `json:"elevation_high"` ElevationLow float64 `json:"elevation_low"` StartLatlng []float64 `json:"start_latlng"` EndLatlng []float64 `json:"end_latlng"` ClimbCategory int `json:"climb_category"` City string `json:"city"` State string `json:"state"` Country string `json:"country"` Private bool `json:"private"` Hazardous bool `json:"hazardous"` Starred bool `json:"starred"` } type SegmentEfforts struct { ID int64 `json:"id"` ResourceState int `json:"resource_state"` Name string `json:"name"` Activity SegmentActivity `json:"activity"` Athlete Athlete `json:"athlete"` ElapsedTime int `json:"elapsed_time"` MovingTime int `json:"moving_time"` StartDate time.Time `json:"start_date"` StartDateLocal time.Time `json:"start_date_local"` Distance float64 `json:"distance"` StartIndex int `json:"start_index"` EndIndex int `json:"end_index"` AverageCadence float64 `json:"average_cadence"` DeviceWatts bool `json:"device_watts"` AverageWatts float64 `json:"average_watts"` Segment Segment `json:"segment"` KomRank any `json:"kom_rank"` PrRank any `json:"pr_rank"` Achievements []any `json:"achievements"` Hidden bool `json:"hidden"` } type SplitsMetric struct { Distance float64 `json:"distance"` ElapsedTime int `json:"elapsed_time"` ElevationDifference float64 `json:"elevation_difference"` MovingTime int `json:"moving_time"` Split int `json:"split"` AverageSpeed float64 `json:"average_speed"` PaceZone int `json:"pace_zone"` } type Laps struct { ID int64 `json:"id"` ResourceState int `json:"resource_state"` Name string `json:"name"` Activity SegmentActivity `json:"activity"` Athlete Athlete `json:"athlete"` ElapsedTime int `json:"elapsed_time"` MovingTime int `json:"moving_time"` StartDate time.Time `json:"start_date"` StartDateLocal time.Time `json:"start_date_local"` Distance float64 `json:"distance"` StartIndex int `json:"start_index"` EndIndex int `json:"end_index"` TotalElevationGain float64 `json:"total_elevation_gain"` AverageSpeed float64 `json:"average_speed"` MaxSpeed float64 `json:"max_speed"` AverageCadence float64 `json:"average_cadence"` DeviceWatts bool `json:"device_watts"` AverageWatts float64 `json:"average_watts"` LapIndex int `json:"lap_index"` Split int `json:"split"` } type Gear struct { ID string `json:"id"` Primary bool `json:"primary"` Name string `json:"name"` ResourceState int `json:"resource_state"` Distance int `json:"distance"` } type Urls struct { Num100 string `json:"100"` Num600 string `json:"600"` } type Primary struct { ID any `json:"id"` UniqueID string `json:"unique_id"` Urls Urls `json:"urls"` Source int `json:"source"` } type Photos struct { Primary Primary `json:"primary"` UsePrimaryPhoto bool `json:"use_primary_photo"` Count int `json:"count"` } type HighlightedKudosers struct { DestinationURL string `json:"destination_url"` DisplayName string `json:"display_name"` AvatarURL string `json:"avatar_url"` ShowName bool `json:"show_name"` } type ActivityStreamResponse struct { LatLng LatLngStream `json:"latlng"` Altitude AltitudeStream `json:"altitude"` Time TimeStream `json:"time"` } type ActivityStream struct { OriginalSize int `json:"original_size"` Resolution string `json:"resolution"` SeriesType string `json:"series_type"` } type TimeStream struct { ActivityStream Data []int `json:"data"` } type LatLngStream struct { ActivityStream Data [][]float64 `json:"data"` } type AltitudeStream struct { ActivityStream Data []float64 `json:"data"` }