Class: Strava::Models::DetailedSegment

Inherits:
Response show all
Includes:
Mixins::Distance, Mixins::TotalElevationGain
Defined in:
lib/strava/models/detailed_segment.rb

Overview

Represents detailed information about a Strava segment.

Segments are specific sections of road or trail where athletes can compete for best times. This model contains comprehensive segment information including location, elevation profile, statistics, and the athlete's personal records.

Includes helper mixins for formatting distance and elevation.

Examples:

Get segment details

segment = client.segment(229781)
puts segment.name
puts "#{segment.distance_s} with #{segment.average_grade}% average grade"
puts "Location: #{segment.city}, #{segment.state}"
puts "#{segment.athlete_count} athletes have ridden this segment"

if segment.athlete_segment_stats
  pr = segment.athlete_segment_stats
  puts "Your PR: #{pr.elapsed_time_in_hours_s}"
end

See Also:

Instance Method Summary collapse

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::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

#activity_typeString

Returns Activity type ('Ride' or 'Run').

Returns:

  • (String)

    Activity type ('Ride' or 'Run')



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

property 'activity_type'

#athlete_countInteger

Returns Total number of unique athletes who have attempted this segment.

Returns:

  • (Integer)

    Total number of unique athletes who have attempted this segment



95
# File 'lib/strava/models/detailed_segment.rb', line 95

property 'athlete_count'

#athlete_pr_effortSummaryPRSegmentEffort?

Returns The authenticated athlete's PR on this segment.

Returns:



75
# File 'lib/strava/models/detailed_segment.rb', line 75

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

#athlete_segment_statsSummarySegmentEffort?

Returns The authenticated athlete's statistics on this segment.

Returns:



78
# File 'lib/strava/models/detailed_segment.rb', line 78

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

#average_gradeFloat

Returns Average grade as a percentage.

Returns:

  • (Float)

    Average grade as a percentage



42
# File 'lib/strava/models/detailed_segment.rb', line 42

property 'average_grade'

#cityString?

Returns City where the segment is located.

Returns:

  • (String, nil)

    City where the segment is located



63
# File 'lib/strava/models/detailed_segment.rb', line 63

property 'city'

#climb_categoryInteger

Returns Climb category (0 = uncategorized, 1-5 = category climbs, HC = hors catégorie).

Returns:

  • (Integer)

    Climb category (0 = uncategorized, 1-5 = category climbs, HC = hors catégorie)



60
# File 'lib/strava/models/detailed_segment.rb', line 60

property 'climb_category'

#countryString?

Returns Country where the segment is located.

Returns:

  • (String, nil)

    Country where the segment is located



69
# File 'lib/strava/models/detailed_segment.rb', line 69

property 'country'

#created_atTime

Returns When the segment was created.

Returns:

  • (Time)

    When the segment was created



81
# File 'lib/strava/models/detailed_segment.rb', line 81

property 'created_at', transform_with: ->(v) { Time.parse(v) }

#effort_countInteger

Returns Total number of efforts on this segment.

Returns:

  • (Integer)

    Total number of efforts on this segment



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

property 'effort_count'

#elevation_highFloat

Returns Highest elevation point in meters.

Returns:

  • (Float)

    Highest elevation point in meters



48
# File 'lib/strava/models/detailed_segment.rb', line 48

property 'elevation_high'

#elevation_lowFloat

Returns Lowest elevation point in meters.

Returns:

  • (Float)

    Lowest elevation point in meters



51
# File 'lib/strava/models/detailed_segment.rb', line 51

property 'elevation_low'

#elevation_profileString?

Note:

Undocumented in official API

Returns Elevation profile data (deprecated, use elevation_profiles).

Returns:

  • (String, nil)

    Elevation profile data (deprecated, use elevation_profiles)



109
# File 'lib/strava/models/detailed_segment.rb', line 109

property 'elevation_profile'

#elevation_profilesArray?

Note:

Undocumented in official API

Returns Collection of elevation profile data points.

Returns:

  • (Array, nil)

    Collection of elevation profile data points



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

property 'elevation_profiles'

#end_latlngLatLng

Returns Ending coordinates [latitude, longitude].

Returns:

  • (LatLng)

    Ending coordinates [latitude, longitude]



57
# File 'lib/strava/models/detailed_segment.rb', line 57

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

#hazardousBoolean

Returns Whether this segment has been flagged as hazardous.

Returns:

  • (Boolean)

    Whether this segment has been flagged as hazardous



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

property 'hazardous'

#idInteger

Returns Segment ID.

Returns:

  • (Integer)

    Segment ID



31
# File 'lib/strava/models/detailed_segment.rb', line 31

property 'id'

#local_legendLocalLegend?

Note:

Undocumented in official API

Returns Current Local Legend holder for this segment.

Returns:

  • (LocalLegend, nil)

    Current Local Legend holder for this segment



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

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

#mapMap

Returns Segment map with polyline data.

Returns:

  • (Map)

    Segment map with polyline data



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

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

#maximum_gradeFloat

Returns Maximum grade as a percentage.

Returns:

  • (Float)

    Maximum grade as a percentage



45
# File 'lib/strava/models/detailed_segment.rb', line 45

property 'maximum_grade'

#nameString

Returns Segment name.

Returns:

  • (String)

    Segment name



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

property 'name'

#privateBoolean

Returns Whether this segment is private.

Returns:

  • (Boolean)

    Whether this segment is private



72
# File 'lib/strava/models/detailed_segment.rb', line 72

property 'private'

#resource_stateInteger?

Note:

Undocumented in official API

Returns Resource state indicator.

Returns:

  • (Integer, nil)

    Resource state indicator



105
# File 'lib/strava/models/detailed_segment.rb', line 105

property 'resource_state'

#star_countInteger

Returns Number of athletes who have starred this segment.

Returns:

  • (Integer)

    Number of athletes who have starred this segment



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

property 'star_count'

#starredBoolean?

Note:

Undocumented in official API

Returns Whether the authenticated athlete has starred this segment.

Returns:

  • (Boolean, nil)

    Whether the authenticated athlete has starred this segment



117
# File 'lib/strava/models/detailed_segment.rb', line 117

property 'starred'

#start_latlngLatLng

Returns Starting coordinates [latitude, longitude].

Returns:

  • (LatLng)

    Starting coordinates [latitude, longitude]



54
# File 'lib/strava/models/detailed_segment.rb', line 54

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

#stateString?

Returns State/province where the segment is located.

Returns:

  • (String, nil)

    State/province where the segment is located



66
# File 'lib/strava/models/detailed_segment.rb', line 66

property 'state'

#updated_atTime

Returns When the segment was last updated.

Returns:

  • (Time)

    When the segment was last updated



84
# File 'lib/strava/models/detailed_segment.rb', line 84

property 'updated_at', transform_with: ->(v) { Time.parse(v) }

#xomsXoms?

Note:

Undocumented in official API

Returns QOM/KOM information for this segment.

Returns:

  • (Xoms, nil)

    QOM/KOM information for this segment



121
# File 'lib/strava/models/detailed_segment.rb', line 121

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