Class: Strava::Models::DetailedActivity

Inherits:
Response show all
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:

Examples:

Get and display activity details

activity = client.activity(1234567890)
puts activity.name
puts "Distance: #{activity.distance_s}"
puts "Time: #{activity.moving_time_in_hours_s}"
puts "Pace: #{activity.pace_s}"
puts "Elevation: #{activity.total_elevation_gain_s}"
puts "URL: #{activity.strava_url}"

See Also:

Instance Method Summary collapse

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

#elapsed_time_in_hours_s

Methods included from Mixins::MovingTime

#moving_time_in_hours_s

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_countInteger

Returns Number of achievements (segment PRs, CRs, etc.).

Returns:

  • (Integer)

    Number of achievements (segment PRs, CRs, etc.)



77
# File 'lib/strava/models/detailed_activity.rb', line 77

property 'achievement_count'

#athleteMetaAthlete

Returns The athlete who performed the activity.

Returns:

  • (MetaAthlete)

    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_countInteger

Returns Number of athletes who participated (group activities).

Returns:

  • (Integer)

    Number of athletes who participated (group activities)



86
# File 'lib/strava/models/detailed_activity.rb', line 86

property 'athlete_count'

#available_zonesArray<String>?

Note:

Undocumented in official API

Returns List of available zone types for this activity.

Returns:

  • (Array<String>, nil)

    List of available zone types for this activity



255
# File 'lib/strava/models/detailed_activity.rb', line 255

property 'available_zones'

#average_cadenceFloat?

Note:

Undocumented in official API

Returns Average cadence (RPM for cycling, steps/minute for running).

Returns:

  • (Float, nil)

    Average cadence (RPM for cycling, steps/minute for running)



263
# File 'lib/strava/models/detailed_activity.rb', line 263

property 'average_cadence'

#average_heartrateFloat?

Note:

Undocumented in official API

Returns Average heart rate in beats per minute.

Returns:

  • (Float, nil)

    Average heart rate in beats per minute



215
# File 'lib/strava/models/detailed_activity.rb', line 215

property 'average_heartrate'

#average_speedFloat

Returns Average speed in meters per second.

Returns:

  • (Float)

    Average speed in meters per second



119
# File 'lib/strava/models/detailed_activity.rb', line 119

property 'average_speed'

#average_tempFloat?

Note:

Undocumented in official API

Returns Average temperature during the activity in Celsius.

Returns:

  • (Float, nil)

    Average temperature during the activity in Celsius



207
# File 'lib/strava/models/detailed_activity.rb', line 207

property 'average_temp'

#average_wattsFloat?

Returns Average power in watts.

Returns:

  • (Float, nil)

    Average power in watts



137
# File 'lib/strava/models/detailed_activity.rb', line 137

property 'average_watts'

#best_effortsArray<DetailedSegmentEffort>

Returns Best efforts (e.g., 400m, 1/2 mile, 1k, etc.).

Returns:



179
# File 'lib/strava/models/detailed_activity.rb', line 179

property 'best_efforts', transform_with: ->(v) { v.map { |r| Strava::Models::DetailedSegmentEffort.new(r) } }

#caloriesFloat?

Returns Estimated calories burned.

Returns:

  • (Float, nil)

    Estimated calories burned



158
# File 'lib/strava/models/detailed_activity.rb', line 158

property 'calories'

#comment_countInteger

Returns Number of comments.

Returns:

  • (Integer)

    Number of comments



83
# File 'lib/strava/models/detailed_activity.rb', line 83

property 'comment_count'

#commuteBoolean

Returns Whether this activity was a commute.

Returns:

  • (Boolean)

    Whether this activity was a commute



101
# File 'lib/strava/models/detailed_activity.rb', line 101

property 'commute'

#descriptionString?

Returns Activity description.

Returns:

  • (String, nil)

    Activity description



149
# File 'lib/strava/models/detailed_activity.rb', line 149

property 'description'

#device_nameString?

Returns Name of the device used to record the activity.

Returns:

  • (String, nil)

    Name of the device used to record the activity



164
# File 'lib/strava/models/detailed_activity.rb', line 164

property 'device_name'

#device_wattsBoolean?

Returns Whether the watts are from a power meter (true) or estimated (false).

Returns:

  • (Boolean, nil)

    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_optionBoolean?

Note:

Undocumented in official API

Returns Whether to display the hide heart rate option.

Returns:

  • (Boolean, nil)

    Whether to display the hide heart rate option



227
# File 'lib/strava/models/detailed_activity.rb', line 227

property 'display_hide_heartrate_option'

#elev_highFloat?

Returns Highest elevation in meters.

Returns:

  • (Float, nil)

    Highest elevation in meters



55
# File 'lib/strava/models/detailed_activity.rb', line 55

property 'elev_high'

#elev_lowFloat?

Returns Lowest elevation in meters.

Returns:

  • (Float, nil)

    Lowest elevation in meters



58
# File 'lib/strava/models/detailed_activity.rb', line 58

property 'elev_low'

#embed_tokenString?

Returns Embed token for the activity.

Returns:

  • (String, nil)

    Embed token for the activity



167
# File 'lib/strava/models/detailed_activity.rb', line 167

property 'embed_token'

#end_latlngLatLng?

Returns Ending coordinates [latitude, longitude].

Returns:

  • (LatLng, nil)

    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_idString?

Returns External ID from the original upload source.

Returns:

  • (String, nil)

    External ID from the original upload source



37
# File 'lib/strava/models/detailed_activity.rb', line 37

property 'external_id'

#flaggedBoolean

Returns Whether this activity has been flagged.

Returns:

  • (Boolean)

    Whether this activity has been flagged



110
# File 'lib/strava/models/detailed_activity.rb', line 110

property 'flagged'

#from_accepted_tagBoolean?

Note:

Undocumented in official API

Returns Whether the activity was created from an accepted tag.

Returns:

  • (Boolean, nil)

    Whether the activity was created from an accepted tag



231
# File 'lib/strava/models/detailed_activity.rb', line 231

property 'from_accepted_tag'

#gearSummaryGear?

Returns The gear (bike/shoes) used for this activity.

Returns:

  • (SummaryGear, nil)

    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_idString?

Returns Gear (bike/shoes) ID used for this activity.

Returns:

  • (String, nil)

    Gear (bike/shoes) ID used for this activity



131
# File 'lib/strava/models/detailed_activity.rb', line 131

property 'gear_id'

#has_heartrateBoolean?

Note:

Undocumented in official API

Returns Whether the activity has heart rate data.

Returns:

  • (Boolean, nil)

    Whether the activity has heart rate data



211
# File 'lib/strava/models/detailed_activity.rb', line 211

property 'has_heartrate'

#has_kudoedBoolean

Returns Whether the authenticated athlete has kudoed this activity.

Returns:

  • (Boolean)

    Whether the authenticated athlete has kudoed this activity



125
# File 'lib/strava/models/detailed_activity.rb', line 125

property 'has_kudoed'

#heartrate_opt_outBoolean?

Note:

Undocumented in official API

Returns Whether the athlete has opted out of heart rate display.

Returns:

  • (Boolean, nil)

    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_homeBoolean

Returns Whether to hide this activity from the home feed.

Returns:

  • (Boolean)

    Whether to hide this activity from the home feed



128
# File 'lib/strava/models/detailed_activity.rb', line 128

property 'hide_from_home'

#highlighted_kudosersArray?

Note:

Undocumented in official API

Returns List of highlighted athletes who gave kudos.

Returns:

  • (Array, nil)

    List of highlighted athletes who gave kudos



267
# File 'lib/strava/models/detailed_activity.rb', line 267

property 'highlighted_kudosers'

#idInteger

Returns Activity ID.

Returns:

  • (Integer)

    Activity ID



34
# File 'lib/strava/models/detailed_activity.rb', line 34

property 'id'

#kilojoulesFloat?

Returns Kilojoules of energy expended.

Returns:

  • (Float, nil)

    Kilojoules of energy expended



134
# File 'lib/strava/models/detailed_activity.rb', line 134

property 'kilojoules'

#kudos_countInteger

Returns Number of kudos received.

Returns:

  • (Integer)

    Number of kudos received



80
# File 'lib/strava/models/detailed_activity.rb', line 80

property 'kudos_count'

#lapsArray<Lap>

Returns Laps for the activity.

Returns:

  • (Array<Lap>)

    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_outBoolean?

Note:

Undocumented in official API

Returns Whether the athlete has opted out of all leaderboards.

Returns:

  • (Boolean, nil)

    Whether the athlete has opted out of all leaderboards



275
# File 'lib/strava/models/detailed_activity.rb', line 275

property 'leaderboard_opt_out'

#location_cityString?

Note:

Undocumented in official API

Returns City where the activity took place.

Returns:

  • (String, nil)

    City where the activity took place



191
# File 'lib/strava/models/detailed_activity.rb', line 191

property 'location_city'

#location_countryString?

Note:

Undocumented in official API

Returns Country where the activity took place.

Returns:

  • (String, nil)

    Country where the activity took place



199
# File 'lib/strava/models/detailed_activity.rb', line 199

property 'location_country'

#location_stateString?

Note:

Undocumented in official API

Returns State/province where the activity took place.

Returns:

  • (String, nil)

    State/province where the activity took place



195
# File 'lib/strava/models/detailed_activity.rb', line 195

property 'location_state'

#manualBoolean

Returns Whether this activity was manually entered.

Returns:

  • (Boolean)

    Whether this activity was manually entered



104
# File 'lib/strava/models/detailed_activity.rb', line 104

property 'manual'

#mapMap

Returns Activity map with polyline data.

Returns:

  • (Map)

    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_heartrateFloat?

Note:

Undocumented in official API

Returns Maximum heart rate in beats per minute.

Returns:

  • (Float, nil)

    Maximum heart rate in beats per minute



219
# File 'lib/strava/models/detailed_activity.rb', line 219

property 'max_heartrate'

#max_speedFloat

Returns Maximum speed in meters per second.

Returns:

  • (Float)

    Maximum speed in meters per second



122
# File 'lib/strava/models/detailed_activity.rb', line 122

property 'max_speed'

#max_wattsInteger?

Returns Maximum power in watts.

Returns:

  • (Integer, nil)

    Maximum power in watts



143
# File 'lib/strava/models/detailed_activity.rb', line 143

property 'max_watts'

#nameString

Returns Activity name.

Returns:

  • (String)

    Activity name



46
# File 'lib/strava/models/detailed_activity.rb', line 46

property 'name'

#perceived_exertionInteger?

Note:

Undocumented in official API

Returns Athlete's perceived exertion rating.

Returns:

  • (Integer, nil)

    Athlete's perceived exertion rating



243
# File 'lib/strava/models/detailed_activity.rb', line 243

property 'perceived_exertion'

#photo_countInteger

Returns Number of photos attached.

Returns:

  • (Integer)

    Number of photos attached



89
# File 'lib/strava/models/detailed_activity.rb', line 89

property 'photo_count'

#photosPhotosSummary?

Returns Summary of activity photos.

Returns:



152
# File 'lib/strava/models/detailed_activity.rb', line 152

property 'photos', transform_with: ->(v) { Strava::Models::PhotosSummary.new(v) }

#pr_countInteger?

Note:

Undocumented in official API

Returns Number of personal records achieved in this activity.

Returns:

  • (Integer, nil)

    Number of personal records achieved in this activity



235
# File 'lib/strava/models/detailed_activity.rb', line 235

property 'pr_count'

#prefer_perceived_exertionBoolean?

Note:

Undocumented in official API

Returns Whether to prefer perceived exertion over calculated metrics.

Returns:

  • (Boolean, nil)

    Whether to prefer perceived exertion over calculated metrics



247
# File 'lib/strava/models/detailed_activity.rb', line 247

property 'prefer_perceived_exertion'

#privateBoolean

Returns Whether this activity is set to private.

Returns:

  • (Boolean)

    Whether this activity is set to private



107
# File 'lib/strava/models/detailed_activity.rb', line 107

property 'private'

#resource_stateInteger?

Note:

Undocumented in official API

Returns Resource state indicator.

Returns:

  • (Integer, nil)

    Resource state indicator



183
# File 'lib/strava/models/detailed_activity.rb', line 183

property 'resource_state'

#segment_effortsArray<DetailedSegmentEffort>

Returns All segment efforts for this activity.

Returns:



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_outBoolean?

Note:

Undocumented in official API

Returns Whether the athlete has opted out of segment leaderboards.

Returns:

  • (Boolean, nil)

    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_activitiesSimilarActivities?

Note:

Undocumented in official API

Returns Information about similar activities.

Returns:



259
# File 'lib/strava/models/detailed_activity.rb', line 259

property 'similar_activities', transform_with: ->(v) { Strava::Models::SimilarActivities.new(v) }

#splits_metricArray<Split>

Returns Metric splits (per kilometer).

Returns:

  • (Array<Split>)

    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_standardArray<Split>

Returns Standard/imperial splits (per mile).

Returns:

  • (Array<Split>)

    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_dateTime

Returns Start date and time (UTC).

Returns:

  • (Time)

    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_latlngLatLng?

Returns Starting coordinates [latitude, longitude].

Returns:

  • (LatLng, nil)

    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_visibilityArray<StatsVisibility>?

Note:

Undocumented in official API

Returns Stats visibility settings.

Returns:



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_urlString

Returns the Strava web URL for this activity.

Examples:

activity = client.activity(1234567890)
puts activity.strava_url
# => "https://www.strava.com/activities/1234567890"

Returns:

  • (String)

    Full URL to view the activity on Strava.com



287
288
289
# File 'lib/strava/models/detailed_activity.rb', line 287

def strava_url
  "https://www.strava.com/activities/#{id}"
end

#suffer_scoreInteger?

Note:

Undocumented in official API

Returns Relative effort score (suffer score).

Returns:

  • (Integer, nil)

    Relative effort score (suffer score)



239
# File 'lib/strava/models/detailed_activity.rb', line 239

property 'suffer_score'

#timezoneString

Returns Timezone in which the activity was recorded (e.g., '(GMT-08:00) America/Los_Angeles').

Returns:

  • (String)

    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_countInteger

Returns Total number of photos including Instagram.

Returns:

  • (Integer)

    Total number of photos including Instagram



92
# File 'lib/strava/models/detailed_activity.rb', line 92

property 'total_photo_count'

#trainerBoolean

Returns Whether this activity was on a stationary trainer.

Returns:

  • (Boolean)

    Whether this activity was on a stationary trainer



98
# File 'lib/strava/models/detailed_activity.rb', line 98

property 'trainer'

#upload_idInteger?

Returns Upload ID.

Returns:

  • (Integer, nil)

    Upload ID



40
# File 'lib/strava/models/detailed_activity.rb', line 40

property 'upload_id'

#upload_id_strString?

Returns Upload ID as a string.

Returns:

  • (String, nil)

    Upload ID as a string



116
# File 'lib/strava/models/detailed_activity.rb', line 116

property 'upload_id_str'

#utc_offsetFloat?

Note:

Undocumented in official API

Returns UTC offset in seconds.

Returns:

  • (Float, nil)

    UTC offset in seconds



187
# File 'lib/strava/models/detailed_activity.rb', line 187

property 'utc_offset'

#visibilityString?

Note:

Undocumented in official API

Returns Activity visibility setting (e.g., 'everyone', 'followers_only').

Returns:

  • (String, nil)

    Activity visibility setting (e.g., 'everyone', 'followers_only')



203
# File 'lib/strava/models/detailed_activity.rb', line 203

property 'visibility'

#weighted_average_wattsInteger?

Returns Weighted average power in watts.

Returns:

  • (Integer, nil)

    Weighted average power in watts



146
# File 'lib/strava/models/detailed_activity.rb', line 146

property 'weighted_average_watts'

#workout_typeInteger?

Returns Workout type (e.g., 10 = Race, 11 = Workout).

Returns:

  • (Integer, nil)

    Workout type (e.g., 10 = Race, 11 = Workout)



113
# File 'lib/strava/models/detailed_activity.rb', line 113

property 'workout_type'