Class: Strava::Models::DetailedActivity
- Inherits:
-
Response
- Object
- Hashie::Trash
- Strava::Model
- Response
- Strava::Models::DetailedActivity
- Includes:
- Mixins::AverageSpeed, Mixins::Distance, Mixins::ElapsedTime, Mixins::MovingTime, Mixins::SportType, Mixins::StartDateLocal, Mixins::TotalElevationGain
- Defined in:
- lib/strava/models/detailed_activity.rb
Overview
Represents a detailed Strava activity.
A detailed activity contains all information about a single workout, ride, run, or other athletic pursuit recorded on Strava. This includes basic information (name, type, date), metrics (distance, time, elevation), maps, segments, photos, and social interactions (kudos, comments).
This model includes several mixins that provide helper methods for formatting data:
- Mixins::Distance - distance_s, distance_in_miles, etc.
- Mixins::MovingTime - moving_time_in_hours_s, etc.
- Mixins::ElapsedTime - elapsed_time_in_hours_s, etc.
- Mixins::AverageSpeed - average_speed_s, pace_s, etc.
- Mixins::TotalElevationGain - total_elevation_gain_s, etc.
- Mixins::SportType - sport_type_emoji
Instance Method Summary collapse
-
#achievement_count ⇒ Integer
Number of achievements (segment PRs, CRs, etc.).
-
#athlete ⇒ MetaAthlete
The athlete who performed the activity.
-
#athlete_count ⇒ Integer
Number of athletes who participated (group activities).
-
#available_zones ⇒ Array<String>?
List of available zone types for this activity.
-
#average_cadence ⇒ Float?
Average cadence (RPM for cycling, steps/minute for running).
-
#average_heartrate ⇒ Float?
Average heart rate in beats per minute.
-
#average_speed ⇒ Float
Average speed in meters per second.
-
#average_temp ⇒ Float?
Average temperature during the activity in Celsius.
-
#average_watts ⇒ Float?
Average power in watts.
-
#best_efforts ⇒ Array<DetailedSegmentEffort>
Best efforts (e.g., 400m, 1/2 mile, 1k, etc.).
-
#calories ⇒ Float?
Estimated calories burned.
-
#comment_count ⇒ Integer
Number of comments.
-
#commute ⇒ Boolean
Whether this activity was a commute.
-
#description ⇒ String?
Activity description.
-
#device_name ⇒ String?
Name of the device used to record the activity.
-
#device_watts ⇒ Boolean?
Whether the watts are from a power meter (true) or estimated (false).
-
#display_hide_heartrate_option ⇒ Boolean?
Whether to display the hide heart rate option.
-
#elev_high ⇒ Float?
Highest elevation in meters.
-
#elev_low ⇒ Float?
Lowest elevation in meters.
-
#embed_token ⇒ String?
Embed token for the activity.
-
#end_latlng ⇒ LatLng?
Ending coordinates [latitude, longitude].
-
#external_id ⇒ String?
External ID from the original upload source.
-
#flagged ⇒ Boolean
Whether this activity has been flagged.
-
#from_accepted_tag ⇒ Boolean?
Whether the activity was created from an accepted tag.
-
#gear ⇒ SummaryGear?
The gear (bike/shoes) used for this activity.
-
#gear_id ⇒ String?
Gear (bike/shoes) ID used for this activity.
-
#has_heartrate ⇒ Boolean?
Whether the activity has heart rate data.
-
#has_kudoed ⇒ Boolean
Whether the authenticated athlete has kudoed this activity.
-
#heartrate_opt_out ⇒ Boolean?
Whether the athlete has opted out of heart rate display.
-
#hide_from_home ⇒ Boolean
Whether to hide this activity from the home feed.
-
#highlighted_kudosers ⇒ Array?
List of highlighted athletes who gave kudos.
-
#id ⇒ Integer
Activity ID.
-
#kilojoules ⇒ Float?
Kilojoules of energy expended.
-
#kudos_count ⇒ Integer
Number of kudos received.
-
#laps ⇒ Array<Lap>
Laps for the activity.
-
#leaderboard_opt_out ⇒ Boolean?
Whether the athlete has opted out of all leaderboards.
-
#location_city ⇒ String?
City where the activity took place.
-
#location_country ⇒ String?
Country where the activity took place.
-
#location_state ⇒ String?
State/province where the activity took place.
-
#manual ⇒ Boolean
Whether this activity was manually entered.
-
#map ⇒ Map
Activity map with polyline data.
-
#max_heartrate ⇒ Float?
Maximum heart rate in beats per minute.
-
#max_speed ⇒ Float
Maximum speed in meters per second.
-
#max_watts ⇒ Integer?
Maximum power in watts.
-
#name ⇒ String
Activity name.
-
#perceived_exertion ⇒ Integer?
Athlete's perceived exertion rating.
-
#photo_count ⇒ Integer
Number of photos attached.
-
#photos ⇒ PhotosSummary?
Summary of activity photos.
-
#pr_count ⇒ Integer?
Number of personal records achieved in this activity.
-
#prefer_perceived_exertion ⇒ Boolean?
Whether to prefer perceived exertion over calculated metrics.
-
#private ⇒ Boolean
Whether this activity is set to private.
-
#resource_state ⇒ Integer?
Resource state indicator.
-
#segment_efforts ⇒ Array<DetailedSegmentEffort>
All segment efforts for this activity.
-
#segment_leaderboard_opt_out ⇒ Boolean?
Whether the athlete has opted out of segment leaderboards.
-
#similar_activities ⇒ SimilarActivities?
Information about similar activities.
-
#splits_metric ⇒ Array<Split>
Metric splits (per kilometer).
-
#splits_standard ⇒ Array<Split>
Standard/imperial splits (per mile).
-
#start_date ⇒ Time
Start date and time (UTC).
-
#start_latlng ⇒ LatLng?
Starting coordinates [latitude, longitude].
-
#stats_visibility ⇒ Array<StatsVisibility>?
Stats visibility settings.
-
#strava_url ⇒ String
Returns the Strava web URL for this activity.
-
#suffer_score ⇒ Integer?
Relative effort score (suffer score).
-
#timezone ⇒ String
Timezone in which the activity was recorded (e.g., '(GMT-08:00) America/Los_Angeles').
-
#total_photo_count ⇒ Integer
Total number of photos including Instagram.
-
#trainer ⇒ Boolean
Whether this activity was on a stationary trainer.
-
#upload_id ⇒ Integer?
Upload ID.
-
#upload_id_str ⇒ String?
Upload ID as a string.
-
#utc_offset ⇒ Float?
UTC offset in seconds.
-
#visibility ⇒ String?
Activity visibility setting (e.g., 'everyone', 'followers_only').
-
#weighted_average_watts ⇒ Integer?
Weighted average power in watts.
-
#workout_type ⇒ Integer?
Workout type (e.g., 10 = Race, 11 = Workout).
Methods included from Mixins::SportType
#distance_s, #pace_s, #sport_type_emoji
Methods included from Mixins::TotalElevationGain
#total_elevation_gain_in_feet, #total_elevation_gain_in_feet_s, #total_elevation_gain_in_meters, #total_elevation_gain_in_meters_s, #total_elevation_gain_s
Methods included from Mixins::AverageSpeed
#average_speed_kilometer_per_hour_s, #average_speed_meters_per_second, #average_speed_miles_per_hour_s, #average_speed_s, #pace_per_100_meters_s, #pace_per_100_yards_s, #pace_per_kilometer_s, #pace_per_mile_s, #pace_s
Methods included from Mixins::ElapsedTime
Methods included from Mixins::MovingTime
Methods included from Mixins::Distance
#distance_in_feet, #distance_in_kilometers, #distance_in_kilometers_s, #distance_in_meters, #distance_in_meters_s, #distance_in_miles, #distance_in_miles_s, #distance_in_yards, #distance_in_yards_s, #distance_s
Instance Method Details
#achievement_count ⇒ Integer
Returns Number of achievements (segment PRs, CRs, etc.).
77 |
# File 'lib/strava/models/detailed_activity.rb', line 77 property 'achievement_count' |
#athlete ⇒ MetaAthlete
Returns The athlete who performed the activity.
43 |
# File 'lib/strava/models/detailed_activity.rb', line 43 property 'athlete', transform_with: ->(v) { Strava::Models::MetaAthlete.new(v) } |
#athlete_count ⇒ Integer
Returns Number of athletes who participated (group activities).
86 |
# File 'lib/strava/models/detailed_activity.rb', line 86 property 'athlete_count' |
#available_zones ⇒ Array<String>?
Undocumented in official API
Returns List of available zone types for this activity.
255 |
# File 'lib/strava/models/detailed_activity.rb', line 255 property 'available_zones' |
#average_cadence ⇒ Float?
Undocumented in official API
Returns Average cadence (RPM for cycling, steps/minute for running).
263 |
# File 'lib/strava/models/detailed_activity.rb', line 263 property 'average_cadence' |
#average_heartrate ⇒ Float?
Undocumented in official API
Returns Average heart rate in beats per minute.
215 |
# File 'lib/strava/models/detailed_activity.rb', line 215 property 'average_heartrate' |
#average_speed ⇒ Float
Returns Average speed in meters per second.
119 |
# File 'lib/strava/models/detailed_activity.rb', line 119 property 'average_speed' |
#average_temp ⇒ Float?
Undocumented in official API
Returns Average temperature during the activity in Celsius.
207 |
# File 'lib/strava/models/detailed_activity.rb', line 207 property 'average_temp' |
#average_watts ⇒ Float?
Returns Average power in watts.
137 |
# File 'lib/strava/models/detailed_activity.rb', line 137 property 'average_watts' |
#best_efforts ⇒ Array<DetailedSegmentEffort>
Returns Best efforts (e.g., 400m, 1/2 mile, 1k, etc.).
179 |
# File 'lib/strava/models/detailed_activity.rb', line 179 property 'best_efforts', transform_with: ->(v) { v.map { |r| Strava::Models::DetailedSegmentEffort.new(r) } } |
#calories ⇒ Float?
Returns Estimated calories burned.
158 |
# File 'lib/strava/models/detailed_activity.rb', line 158 property 'calories' |
#comment_count ⇒ Integer
Returns Number of comments.
83 |
# File 'lib/strava/models/detailed_activity.rb', line 83 property 'comment_count' |
#commute ⇒ Boolean
Returns Whether this activity was a commute.
101 |
# File 'lib/strava/models/detailed_activity.rb', line 101 property 'commute' |
#description ⇒ String?
Returns Activity description.
149 |
# File 'lib/strava/models/detailed_activity.rb', line 149 property 'description' |
#device_name ⇒ String?
Returns Name of the device used to record the activity.
164 |
# File 'lib/strava/models/detailed_activity.rb', line 164 property 'device_name' |
#device_watts ⇒ Boolean?
Returns Whether the watts are from a power meter (true) or estimated (false).
140 |
# File 'lib/strava/models/detailed_activity.rb', line 140 property 'device_watts' |
#display_hide_heartrate_option ⇒ Boolean?
Undocumented in official API
Returns Whether to display the hide heart rate option.
227 |
# File 'lib/strava/models/detailed_activity.rb', line 227 property 'display_hide_heartrate_option' |
#elev_high ⇒ Float?
Returns Highest elevation in meters.
55 |
# File 'lib/strava/models/detailed_activity.rb', line 55 property 'elev_high' |
#elev_low ⇒ Float?
Returns Lowest elevation in meters.
58 |
# File 'lib/strava/models/detailed_activity.rb', line 58 property 'elev_low' |
#embed_token ⇒ String?
Returns Embed token for the activity.
167 |
# File 'lib/strava/models/detailed_activity.rb', line 167 property 'embed_token' |
#end_latlng ⇒ LatLng?
Returns Ending coordinates [latitude, longitude].
74 |
# File 'lib/strava/models/detailed_activity.rb', line 74 property 'end_latlng', transform_with: ->(v) { Strava::Models::LatLng.new(v) } |
#external_id ⇒ String?
Returns External ID from the original upload source.
37 |
# File 'lib/strava/models/detailed_activity.rb', line 37 property 'external_id' |
#flagged ⇒ Boolean
Returns Whether this activity has been flagged.
110 |
# File 'lib/strava/models/detailed_activity.rb', line 110 property 'flagged' |
#from_accepted_tag ⇒ Boolean?
Undocumented in official API
Returns Whether the activity was created from an accepted tag.
231 |
# File 'lib/strava/models/detailed_activity.rb', line 231 property 'from_accepted_tag' |
#gear ⇒ SummaryGear?
Returns The gear (bike/shoes) used for this activity.
155 |
# File 'lib/strava/models/detailed_activity.rb', line 155 property 'gear', transform_with: ->(v) { Strava::Models::SummaryGear.new(v) } |
#gear_id ⇒ String?
Returns Gear (bike/shoes) ID used for this activity.
131 |
# File 'lib/strava/models/detailed_activity.rb', line 131 property 'gear_id' |
#has_heartrate ⇒ Boolean?
Undocumented in official API
Returns Whether the activity has heart rate data.
211 |
# File 'lib/strava/models/detailed_activity.rb', line 211 property 'has_heartrate' |
#has_kudoed ⇒ Boolean
Returns Whether the authenticated athlete has kudoed this activity.
125 |
# File 'lib/strava/models/detailed_activity.rb', line 125 property 'has_kudoed' |
#heartrate_opt_out ⇒ Boolean?
Undocumented in official API
Returns Whether the athlete has opted out of heart rate display.
223 |
# File 'lib/strava/models/detailed_activity.rb', line 223 property 'heartrate_opt_out' |
#hide_from_home ⇒ Boolean
Returns Whether to hide this activity from the home feed.
128 |
# File 'lib/strava/models/detailed_activity.rb', line 128 property 'hide_from_home' |
#highlighted_kudosers ⇒ Array?
Undocumented in official API
Returns List of highlighted athletes who gave kudos.
267 |
# File 'lib/strava/models/detailed_activity.rb', line 267 property 'highlighted_kudosers' |
#id ⇒ Integer
Returns Activity ID.
34 |
# File 'lib/strava/models/detailed_activity.rb', line 34 property 'id' |
#kilojoules ⇒ Float?
Returns Kilojoules of energy expended.
134 |
# File 'lib/strava/models/detailed_activity.rb', line 134 property 'kilojoules' |
#kudos_count ⇒ Integer
Returns Number of kudos received.
80 |
# File 'lib/strava/models/detailed_activity.rb', line 80 property 'kudos_count' |
#laps ⇒ Array<Lap>
Returns Laps for the activity.
176 |
# File 'lib/strava/models/detailed_activity.rb', line 176 property 'laps', transform_with: ->(v) { v.map { |r| Strava::Models::Lap.new(r) } } |
#leaderboard_opt_out ⇒ Boolean?
Undocumented in official API
Returns Whether the athlete has opted out of all leaderboards.
275 |
# File 'lib/strava/models/detailed_activity.rb', line 275 property 'leaderboard_opt_out' |
#location_city ⇒ String?
Undocumented in official API
Returns City where the activity took place.
191 |
# File 'lib/strava/models/detailed_activity.rb', line 191 property 'location_city' |
#location_country ⇒ String?
Undocumented in official API
Returns Country where the activity took place.
199 |
# File 'lib/strava/models/detailed_activity.rb', line 199 property 'location_country' |
#location_state ⇒ String?
Undocumented in official API
Returns State/province where the activity took place.
195 |
# File 'lib/strava/models/detailed_activity.rb', line 195 property 'location_state' |
#manual ⇒ Boolean
Returns Whether this activity was manually entered.
104 |
# File 'lib/strava/models/detailed_activity.rb', line 104 property 'manual' |
#map ⇒ Map
Returns Activity map with polyline data.
95 |
# File 'lib/strava/models/detailed_activity.rb', line 95 property 'map', transform_with: ->(v) { Strava::Models::Map.new(v) } |
#max_heartrate ⇒ Float?
Undocumented in official API
Returns Maximum heart rate in beats per minute.
219 |
# File 'lib/strava/models/detailed_activity.rb', line 219 property 'max_heartrate' |
#max_speed ⇒ Float
Returns Maximum speed in meters per second.
122 |
# File 'lib/strava/models/detailed_activity.rb', line 122 property 'max_speed' |
#max_watts ⇒ Integer?
Returns Maximum power in watts.
143 |
# File 'lib/strava/models/detailed_activity.rb', line 143 property 'max_watts' |
#name ⇒ String
Returns Activity name.
46 |
# File 'lib/strava/models/detailed_activity.rb', line 46 property 'name' |
#perceived_exertion ⇒ Integer?
Undocumented in official API
Returns Athlete's perceived exertion rating.
243 |
# File 'lib/strava/models/detailed_activity.rb', line 243 property 'perceived_exertion' |
#photo_count ⇒ Integer
Returns Number of photos attached.
89 |
# File 'lib/strava/models/detailed_activity.rb', line 89 property 'photo_count' |
#photos ⇒ PhotosSummary?
Returns Summary of activity photos.
152 |
# File 'lib/strava/models/detailed_activity.rb', line 152 property 'photos', transform_with: ->(v) { Strava::Models::PhotosSummary.new(v) } |
#pr_count ⇒ Integer?
Undocumented in official API
Returns Number of personal records achieved in this activity.
235 |
# File 'lib/strava/models/detailed_activity.rb', line 235 property 'pr_count' |
#prefer_perceived_exertion ⇒ Boolean?
Undocumented in official API
Returns Whether to prefer perceived exertion over calculated metrics.
247 |
# File 'lib/strava/models/detailed_activity.rb', line 247 property 'prefer_perceived_exertion' |
#private ⇒ Boolean
Returns Whether this activity is set to private.
107 |
# File 'lib/strava/models/detailed_activity.rb', line 107 property 'private' |
#resource_state ⇒ Integer?
Undocumented in official API
Returns Resource state indicator.
183 |
# File 'lib/strava/models/detailed_activity.rb', line 183 property 'resource_state' |
#segment_efforts ⇒ Array<DetailedSegmentEffort>
Returns All segment efforts for this activity.
161 |
# File 'lib/strava/models/detailed_activity.rb', line 161 property 'segment_efforts', transform_with: ->(v) { v.map { |r| Strava::Models::DetailedSegmentEffort.new(r) } } |
#segment_leaderboard_opt_out ⇒ Boolean?
Undocumented in official API
Returns Whether the athlete has opted out of segment leaderboards.
271 |
# File 'lib/strava/models/detailed_activity.rb', line 271 property 'segment_leaderboard_opt_out' |
#similar_activities ⇒ SimilarActivities?
Undocumented in official API
Returns Information about similar activities.
259 |
# File 'lib/strava/models/detailed_activity.rb', line 259 property 'similar_activities', transform_with: ->(v) { Strava::Models::SimilarActivities.new(v) } |
#splits_metric ⇒ Array<Split>
Returns Metric splits (per kilometer).
170 |
# File 'lib/strava/models/detailed_activity.rb', line 170 property 'splits_metric', transform_with: ->(v) { v.map { |r| Strava::Models::Split.new(r) } } |
#splits_standard ⇒ Array<Split>
Returns Standard/imperial splits (per mile).
173 |
# File 'lib/strava/models/detailed_activity.rb', line 173 property 'splits_standard', transform_with: ->(v) { v.map { |r| Strava::Models::Split.new(r) } } |
#start_date ⇒ Time
Returns Start date and time (UTC).
63 |
# File 'lib/strava/models/detailed_activity.rb', line 63 property 'start_date', transform_with: ->(v) { Time.parse(v) } |
#start_latlng ⇒ LatLng?
Returns Starting coordinates [latitude, longitude].
71 |
# File 'lib/strava/models/detailed_activity.rb', line 71 property 'start_latlng', transform_with: ->(v) { Strava::Models::LatLng.new(v) } |
#stats_visibility ⇒ Array<StatsVisibility>?
Undocumented in official API
Returns Stats visibility settings.
251 |
# File 'lib/strava/models/detailed_activity.rb', line 251 property 'stats_visibility', transform_with: ->(v) { v.map { |r| Strava::Models::StatsVisibility.new(r) } } |
#strava_url ⇒ String
Returns the Strava web URL for this activity.
287 288 289 |
# File 'lib/strava/models/detailed_activity.rb', line 287 def strava_url "https://www.strava.com/activities/#{id}" end |
#suffer_score ⇒ Integer?
Undocumented in official API
Returns Relative effort score (suffer score).
239 |
# File 'lib/strava/models/detailed_activity.rb', line 239 property 'suffer_score' |
#timezone ⇒ String
Returns Timezone in which the activity was recorded (e.g., '(GMT-08:00) America/Los_Angeles').
68 |
# File 'lib/strava/models/detailed_activity.rb', line 68 property 'timezone' |
#total_photo_count ⇒ Integer
Returns Total number of photos including Instagram.
92 |
# File 'lib/strava/models/detailed_activity.rb', line 92 property 'total_photo_count' |
#trainer ⇒ Boolean
Returns Whether this activity was on a stationary trainer.
98 |
# File 'lib/strava/models/detailed_activity.rb', line 98 property 'trainer' |
#upload_id ⇒ Integer?
Returns Upload ID.
40 |
# File 'lib/strava/models/detailed_activity.rb', line 40 property 'upload_id' |
#upload_id_str ⇒ String?
Returns Upload ID as a string.
116 |
# File 'lib/strava/models/detailed_activity.rb', line 116 property 'upload_id_str' |
#utc_offset ⇒ Float?
Undocumented in official API
Returns UTC offset in seconds.
187 |
# File 'lib/strava/models/detailed_activity.rb', line 187 property 'utc_offset' |
#visibility ⇒ String?
Undocumented in official API
Returns Activity visibility setting (e.g., 'everyone', 'followers_only').
203 |
# File 'lib/strava/models/detailed_activity.rb', line 203 property 'visibility' |
#weighted_average_watts ⇒ Integer?
Returns Weighted average power in watts.
146 |
# File 'lib/strava/models/detailed_activity.rb', line 146 property 'weighted_average_watts' |
#workout_type ⇒ Integer?
Returns Workout type (e.g., 10 = Race, 11 = Workout).
113 |
# File 'lib/strava/models/detailed_activity.rb', line 113 property 'workout_type' |