{ "READ_THIS_FIRST": { "instruction_for_ai": "DO NOT calculate totals from individual activities. Use the pre-calculated values in 'summary', 'weekly_summary', and 'derived_metrics' sections below. These are already computed accurately from the API data.", "display_formatting": "For durations and sleep, always display the '_formatted' fields (e.g., sleep_formatted, duration_formatted, total_training_formatted) instead of converting decimal '_hours' values. The formatted fields are pre-calculated from raw seconds and avoid rounding errors.", "data_period": "Last 7 days (including today)", "extended_data_note": "ACWR and baselines calculated from 28 days of data", "capability_metrics_note": "The 'capability' block in derived_metrics contains durability trend (aggregate decoupling 7d/28d), efficiency factor trend (aggregate EF 7d/28d), HRRc trend (heart rate recovery 7d/28d), TID comparison (7d vs 28d distribution drift), power curve delta (MMP shift at anchor durations across 28d windows \u2014 energy system adaptation direction), HR curve delta (max sustained HR shift at anchor durations \u2014 cardiac adaptation, cross-sport), sustainability profile (per-sport power/HR sustainability table for race estimation \u2014 42d window, sport-filtered), and DFA a1 profile (per-session non-linear HRV index from AlphaHRV Connect IQ field \u2014 latest_session + trailing_by_sport with crossing-band LT1/LT2 estimates). These measure HOW the athlete expresses fitness, not just load. Use these for coaching context alongside traditional load metrics. Durability and EF trend direction matters more than absolute values. HRRc is display only \u2014 higher = better parasympathetic recovery. Power curve delta rotation_index reveals whether gains are sprint-biased (positive) or endurance-biased (negative). HR curve delta is ambiguous \u2014 rising max sustained HR may indicate fitness or fatigue; cross-reference with resting HRV/HR and RPE. Sustainability profile provides race estimation lookup: actual MMP, Coggan predicted (cycling only), CP/W' model (cycling only), model_divergence_pct (actual vs CP \u2014 divergence IS the coaching signal). CP/W' is primary for durations \u226420min; Coggan duration factors are the established reference for \u226560min. Source flag (observed_outdoor/observed_indoor) matters for cycling race estimation \u2014 indoor MMP is typically 3-5% lower. DFA a1 profile: thresholds (1.0 \u2248 LT1, 0.5 \u2248 LT2) cycling-validated only \u2014 non-cycling sports get rollups but validated=False. Crossing-band estimates: HR is pooled across all sessions; watts are split by environment for cycling (watts_outdoor, watts_indoor with per-environment n_sessions) \u2014 compare watts_outdoor against ftp, watts_indoor against ftp_indoor. Non-cycling sports keep pooled watts. Estimates are provisional at confidence='low' (suppressed for calibration delta surfacing) and usable at 'moderate' or 'high'. DFA a1 is a Tier-2 interpretive signal \u2014 does NOT enter readiness P0\u2013P3 ladder, does NOT auto-update dossier zones; surfaces calibration deltas only. Quality gate: refuse to interpret when latest_session.sufficient=false or trailing confidence=null. See SECTION_11.md DFA a1 Protocol for full interpretation rules.", "readiness_decision_note": "The 'readiness_decision' block contains a pre-computed go/modify/skip recommendation with priority level (P0=safety, P1=overload, P2=fatigue, P3=green), individual signal statuses, phase-adjusted thresholds, and structured modification guidance. Use this as the baseline for pre-workout recommendations. Override with explanation in the coach note if the AI's contextual judgment disagrees.", "zone_preference": "default (power preferred, HR fallback)", "wellness_field_scales": { "note": "All categorical wellness fields use a 1-4 positional scale where 1 = best state, 4 = worst state. Labels differ per field but direction is consistent. Fields are null when not reported.", "sleep_quality": { "1": "GREAT", "2": "OK", "3": "POOR", "4": "WORST" }, "fatigue": { "1": "None", "2": "Some", "3": "High", "4": "Extreme", "ui_note": "Labeled 'Pre training' in Intervals.icu" }, "soreness": { "1": "None", "2": "Some", "3": "High", "4": "Extreme", "ui_note": "Labeled 'Pre training' in Intervals.icu" }, "stress": { "1": "LOW", "2": "AVG", "3": "HIGH", "4": "EXTREME" }, "mood": { "1": "GREAT", "2": "GOOD", "3": "OK", "4": "GRUMPY" }, "motivation": { "1": "EXTREME", "2": "HIGH", "3": "AVG", "4": "LOW" }, "injury": { "1": "NONE", "2": "NIGGLE", "3": "POOR", "4": "INJURED" }, "hydration": { "1": "GOOD", "2": "OK", "3": "POOR", "4": "BAD" }, "menstrual": "menstrual_phase and menstrual_phase_predicted are not on the 1-4 scale. Values: PERIOD, FOLLICULAR, OVULATION, LUTEAL, etc." }, "quick_stats": { "total_training_hours": 16.06, "total_training_formatted": "16h3m", "total_activities": 13, "total_tss": 810 } }, "metadata": { "athlete_id": "REDACTED", "last_updated": "2026-05-01T20:01:00.207740", "data_range_days": 7, "extended_range_days": 28, "version": "3.108" }, "athlete_profile": { "date_of_birth": "1996-11-02", "age": 29, "height_m": 1.83, "sex": "M", "location": "Manchester, Greater Manchester, United Kingdom", "timezone": "Europe/London", "platform_activated": "2023-08-24", "years_on_platform": 2 }, "athlete_notes": null, "alerts": [ { "metric": "rhr", "value": 43, "severity": "warning", "threshold": "\u2191\u22655bpm vs baseline (37)", "context": "RHR 43 is 6bpm above baseline. Monitor \u2014 alarm if persists >2 days.", "persistence_days": 1, "tier": 1 }, { "metric": "acwr", "value": 1.31, "severity": "warning", "threshold": "1.3", "context": "ACWR 1.31 at edge of optimal range. Monitor closely. Alarm at 1.35.", "persistence_days": null, "tier": 2 } ], "readiness_decision": { "recommendation": "modify", "priority": 1, "signals": { "hrv": { "status": "green", "value": 95.0, "baseline_7d": 93.3, "delta_pct": 1.8 }, "rhr": { "status": "red", "value": 43, "baseline_7d": 37, "delta_bpm": 6 }, "sleep": { "status": "green", "hours": 8.18, "quality": 2 }, "acwr": { "status": "amber", "value": 1.31 }, "ri": { "status": "green", "value": 0.88, "value_yesterday": 1.04 } }, "signal_summary": { "green": 3, "amber": 1, "red": 1, "unavailable": 0 }, "phase_context": { "phase": "Base", "phase_week": 1, "amber_threshold": 2, "modifier_applied": "default" }, "race_week_defers": false, "modification": { "triggers": [ "acwr" ], "suggested_adjustments": { "intensity": "reduce", "volume": "reduce", "cap_zone": "Z2" } }, "reason": "P1 acute overload (modify). ACWR 1.31 >= 1.3.", "alarm_refs": [] }, "history": { "available": true, "last_generated": "2026-04-27", "age_days": 4, "total_months": 34, "history_confidence": "high" }, "summary": { "period_description": "Last 7 days of training (including today)", "note": "Duration calculated from API moving_time field.", "total_duration_decimal_hours": 16.06, "total_activities": 13, "by_activity_type": { "Ride": { "duration_decimal_hours": 13.75, "count": 10, "tss": 782, "distance_km": 376.5 }, "WeightTraining": { "duration_decimal_hours": 2.3, "count": 3, "tss": 28, "distance_km": 0.0 } } }, "current_status": { "fitness": { "ctl": 86.65, "atl": 96.78, "tsb": -10.13, "ramp_rate": 4.33, "fitness_source": "From Intervals.icu API (reflects completed workouts)" }, "thresholds": { "eftp": 279.3, "w_prime": 23952, "w_prime_kj": 24.0, "p_max": 1184, "vo2max": null, "sports": { "cycling": { "lthr": 173, "max_hr": 193, "threshold_pace": null, "pace_units": null, "ftp": 275, "ftp_indoor": 275 }, "run": { "lthr": 173, "max_hr": 193, "threshold_pace": 4.02838, "pace_units": "MINS_KM", "ftp": 457, "ftp_indoor": null }, "swim": { "lthr": 182, "max_hr": 200, "threshold_pace": 0.8333333, "pace_units": "SECS_100M", "ftp": null, "ftp_indoor": null } } }, "current_metrics": { "weight_kg": 76.2, "resting_hr": 43, "hrv": 95.0, "sleep_quality": 2, "sleep_hours": 8.18, "sleep_formatted": "8h11m", "sleep_score": 86.0, "fatigue": 3, "soreness": 3, "stress": null, "mood": null, "motivation": null, "injury": null, "hydration": null, "spO2": 98.13461, "blood_glucose": null, "systolic": null, "diastolic": null, "baevsky_si": null, "lactate": null, "respiration": 11.739884, "body_fat_pct": 13.5, "abdomen_cm": null, "steps": 4238, "hydration_volume_l": 0.09116382, "kcal_consumed": 653, "carbohydrates_g": 160.32745, "protein_g": 6.57687, "fat_g": 0.56421, "menstrual_phase": null, "menstrual_phase_predicted": null, "readiness": null } }, "derived_metrics": { "recovery_index": 0.88, "recovery_index_yesterday": 1.04, "hrv_baseline_7d": 93.3, "rhr_baseline_7d": 37, "hrv_baseline_28d": 90.0, "rhr_baseline_28d": 37.1, "latest_hrv": 95.0, "latest_rhr": 43, "acwr": 1.31, "acwr_interpretation": "caution", "monotony": 2.45, "monotony_interpretation": "elevated (primary sport 2.25, total 2.45 inflated by multi-sport)", "primary_sport": "cycling", "primary_sport_monotony": 2.25, "primary_sport_tss_7d": 782.0, "effective_monotony": 2.25, "multi_sport_detected": true, "strain": 1985.0, "stress_tolerance": 8.1, "load_recovery_ratio": 9.2, "tss_7d_total": 810.0, "tss_28d_total": 2482.0, "zone_distribution_7d": { "z1_hours": 6.26, "z2_hours": 5.08, "z3_hours": 2.41, "z4_plus_hours": 2.33, "total_hours": 16.08, "zone_basis": "mixed" }, "grey_zone_percentage": 15.0, "grey_zone_note": "Gray Zone % (Z3/tempo) - minimize in polarized training", "quality_intensity_percentage": 14.5, "quality_intensity_note": "Quality Intensity % (Z4+/threshold+) - target ~20% in polarized training", "easy_time_ratio": 0.71, "easy_time_ratio_note": "Easy time (Z1+Z2) / Total - target ~80% in polarized training", "hard_days_this_week": 2, "hard_days_note": "Power ladder: z3+ >= 30min, z4+ >= 10min, z5+ >= 5min, z6+ >= 2min, z7 >= 1min. HR fallback (when no power): z4+ >= 10min, z5+ >= 5min. Per Seiler 3-zone model + Foster. HR-based days flagged with intensity_basis: hr", "seiler_tid_7d": { "z1_seconds": 40832, "z2_seconds": 8680, "z3_seconds": 8389, "z1_pct": 70.5, "z2_pct": 15.0, "z3_pct": 14.5, "polarization_index": null, "classification": "Pyramidal", "zone_basis": "mixed" }, "seiler_tid_7d_primary": { "z1_seconds": 32532, "z2_seconds": 8680, "z3_seconds": 8389, "z1_pct": 65.6, "z2_pct": 17.5, "z3_pct": 16.9, "polarization_index": null, "classification": "Pyramidal", "zone_basis": "mixed", "sport": "cycling" }, "seiler_tid_28d": { "z1_seconds": 158023, "z2_seconds": 21495, "z3_seconds": 22032, "z1_pct": 78.4, "z2_pct": 10.7, "z3_pct": 10.9, "polarization_index": 1.91, "classification": "Pyramidal", "zone_basis": "mixed" }, "seiler_tid_28d_primary": { "z1_seconds": 106611, "z2_seconds": 20890, "z3_seconds": 22016, "z1_pct": 71.3, "z2_pct": 14.0, "z3_pct": 14.7, "polarization_index": 1.88, "classification": "Pyramidal", "zone_basis": "mixed", "sport": "cycling" }, "capability": { "durability": { "mean_decoupling_7d": null, "mean_decoupling_28d": null, "high_drift_count_7d": 0, "high_drift_count_28d": 0, "qualifying_sessions_7d": 0, "qualifying_sessions_28d": 1, "trend": null, "reliability_limited": true, "reliability_note": "insufficient qualifying sessions for alert evaluation: 7d N=0 (min 3), 28d N=1 (min 5)", "note": "Steady-state power sessions only (VI <= 1.05, VI > 0, >= 90min, power data). Negative decoupling = strong durability. Trend compares 7d vs 28d mean (+/-1% = stable). Alerts require N28>=5 (alarm) or N7>=3 AND N28>=5 (declining warning) for statistical reliability." }, "efficiency_factor": { "mean_ef_7d": null, "mean_ef_28d": 1.59, "qualifying_sessions_7d": 0, "qualifying_sessions_28d": 4, "trend": null, "note": "Steady-state cycling sessions only (VI <= 1.05, VI > 0, >= 20min, power+HR data). Rising EF = improving aerobic efficiency. Compare like-for-like sessions only \u2014 EF varies with intensity. Trend compares 7d vs 28d mean (+/-0.03 = stable)." }, "hrrc": { "mean_hrrc_7d": null, "mean_hrrc_28d": null, "qualifying_sessions_7d": 0, "qualifying_sessions_28d": 0, "trend": null, "note": "HRRc = heart rate recovery (largest 60s HR drop in bpm after exceeding threshold HR for >1 min). Higher = better parasympathetic recovery. Null when threshold not reached, recording stopped before cooldown, or no HR data. Trend: 7d mean vs 28d mean, >10% = meaningful (min 1 session/7d, 3 sessions/28d). Display only \u2014 not wired into readiness_decision signals." }, "tid_comparison": { "classification_7d": "Pyramidal", "classification_28d": "Pyramidal", "pi_7d": null, "pi_28d": 1.91, "pi_delta": null, "drift": "consistent", "note": "Compares 7d vs 28d Seiler TID to detect distribution shifts. pi_delta positive = more polarized acutely." }, "power_curve_delta": { "window_days": 28, "current_window": { "start": "2026-04-04", "end": "2026-05-01" }, "previous_window": { "start": "2026-03-07", "end": "2026-04-03" }, "anchors": { "5s": { "current_watts": 967, "previous_watts": 1072, "pct_change": -9.8 }, "60s": { "current_watts": 462, "previous_watts": 417, "pct_change": 10.8 }, "300s": { "current_watts": 344, "previous_watts": 323, "pct_change": 6.5 }, "1200s": { "current_watts": 267, "previous_watts": 295, "pct_change": -9.5 }, "3600s": { "current_watts": 235, "previous_watts": 247, "pct_change": -4.9 } }, "rotation_index": 7.7, "note": "Compares MMP at 5 anchor durations (5s neuromuscular, 60s anaerobic, 300s MAP, 1200s threshold, 3600s endurance) across two 28d windows. rotation_index = mean(5s,60s pct_change) - mean(1200s,3600s pct_change). Positive = sprint-biased gains, negative = endurance-biased. 300s excluded from rotation (transitional). Null when either window has fewer than 3 valid anchor durations." }, "hr_curve_delta": { "window_days": 28, "current_window": { "start": "2026-04-04", "end": "2026-05-01" }, "previous_window": { "start": "2026-03-07", "end": "2026-04-03" }, "anchors": { "60s": { "current_bpm": 171, "previous_bpm": 179, "pct_change": -4.5 }, "300s": { "current_bpm": 170, "previous_bpm": 176, "pct_change": -3.4 }, "1200s": { "current_bpm": 164, "previous_bpm": 172, "pct_change": -4.7 }, "3600s": { "current_bpm": 151, "previous_bpm": 152, "pct_change": -0.7 } }, "rotation_index": -1.2, "note": "Compares max sustained HR at 4 anchor durations (60s anaerobic ceiling, 300s VO2max HR, 1200s threshold HR, 3600s endurance HR) across two 28d windows. rotation_index = mean(60s,300s pct_change) - mean(1200s,3600s pct_change). Positive = intensity-biased HR shift, negative = endurance-biased. No sport filter \u2014 HR is cross-sport physiological (dominated by hardest efforts). IMPORTANT: rising max sustained HR is ambiguous \u2014 may indicate improved cardiac output (good) or accumulated fatigue/dehydration/heat (bad). Cross-reference with resting HRV, resting HR, RPE, and environmental context before interpreting. Null when either window has fewer than 3 valid anchor durations." }, "sustainability_profile": { "window": { "days": 42, "start": "2026-03-21", "end": "2026-05-01" }, "weight_kg": 76.2, "weight_source": "wellness_recent", "cycling": { "anchors": { "300s": { "actual_watts": 344, "actual_wpkg": 4.51, "actual_hr": 170, "pct_lthr": 98.3, "source": "observed_outdoor", "coggan_watts": 292, "coggan_wpkg": 3.83, "cp_model_watts": 355, "cp_model_wpkg": 4.66, "model_divergence_pct": -3.1 }, "600s": { "actual_watts": 306, "actual_wpkg": 4.02, "actual_hr": 168, "pct_lthr": 97.1, "source": "observed_outdoor", "coggan_watts": 267, "coggan_wpkg": 3.5, "cp_model_watts": 315, "cp_model_wpkg": 4.13, "model_divergence_pct": -2.9 }, "1200s": { "actual_watts": 270, "actual_wpkg": 3.54, "actual_hr": 164, "pct_lthr": 94.8, "source": "observed_outdoor", "coggan_watts": 256, "coggan_wpkg": 3.36, "cp_model_watts": 295, "cp_model_wpkg": 3.87, "model_divergence_pct": -8.5 }, "1800s": { "actual_watts": 255, "actual_wpkg": 3.35, "actual_hr": 157, "pct_lthr": 90.8, "source": "observed_outdoor", "coggan_watts": 248, "coggan_wpkg": 3.25, "cp_model_watts": 288, "cp_model_wpkg": 3.78, "model_divergence_pct": -11.5 }, "3600s": { "actual_watts": 247, "actual_wpkg": 3.24, "actual_hr": 152, "pct_lthr": 87.9, "source": "observed_outdoor", "coggan_watts": 236, "coggan_wpkg": 3.1, "cp_model_watts": 282, "cp_model_wpkg": 3.7, "model_divergence_pct": -12.4 }, "5400s": { "actual_watts": 230, "actual_wpkg": 3.02, "actual_hr": 146, "pct_lthr": 84.4, "source": "observed_outdoor", "coggan_watts": 226, "coggan_wpkg": 2.97, "cp_model_watts": 279, "cp_model_wpkg": 3.66, "model_divergence_pct": -17.6 }, "7200s": { "actual_watts": 218, "actual_wpkg": 2.86, "actual_hr": 145, "pct_lthr": 83.8, "source": "observed_outdoor", "coggan_watts": 214, "coggan_wpkg": 2.81, "cp_model_watts": 278, "cp_model_wpkg": 3.65, "model_divergence_pct": -21.6 } }, "coverage_ratio": 1.0, "ftp_used": 275, "w_prime_used": 23952, "ftp_staleness_days": 0, "model_trust_note": "CP/W' model (P=CP+W'/t) is primary for durations \u226420min where W' contribution is meaningful. Coggan duration factors (Allen & Coggan, 3rd ed.) are the established reference for \u226560min. 30min is the crossover zone where both apply. model_divergence_pct = (actual - CP_model) / CP_model \u00d7 100. Positive divergence at short durations may indicate strong anaerobic capacity or stale W' value. Indoor MMP is typically 3-5% lower than outdoor (cooling, motivation) \u2014 source flag indicates which environment produced each anchor." } }, "dfa_a1_profile": { "latest_session": { "activity_id": "i144469945", "date": "2026-05-01", "name": "Endurance + Tempo Touches", "sport": "Ride", "validated": true, "avg": 0.988, "tiz_split_pct": { "below_lt1": 47.2, "lt1_transition": 26.1, "transition_lt2": 21.4, "above_lt2": 5.3 }, "drift_delta": 0.058, "drift_interpretable": true, "quality_pct": 96.1, "sufficient": true }, "trailing_by_sport": { "cycling": { "n_sessions": 7, "date_range": [ "2026-04-21", "2026-05-01" ], "avg_dfa_a1": 0.928, "drift_delta_mean": 0.025, "lt1_crossing_sessions": 7, "lt2_crossing_sessions": 6, "lt1_estimate": { "hr": 124, "watts_outdoor": 173, "watts_indoor": 163, "n_sessions": 7, "n_sessions_outdoor": 6, "n_sessions_indoor": 1 }, "lt2_estimate": { "hr": 138, "watts_outdoor": 224, "watts_indoor": 233, "n_sessions": 6, "n_sessions_outdoor": 5, "n_sessions_indoor": 1 }, "quality_avg_pct": 95.7, "validated": true, "confidence": "high" }, "run": { "n_sessions": 1, "date_range": [ "2026-04-22", "2026-04-22" ], "avg_dfa_a1": 0.729, "drift_delta_mean": -0.134, "lt1_crossing_sessions": 1, "lt2_crossing_sessions": 1, "lt1_estimate": null, "lt2_estimate": null, "quality_avg_pct": 100.0, "validated": false, "confidence": null, "note": "DFA a1 threshold mapping (1.0/0.5) is cycling-validated. run thresholds may differ \u2014 treat estimates as informational only." } } } }, "consistency_index": 1.0, "consistency_details": { "planned_days": 6, "completed_days": 7, "matched_days": 6, "planned_dates": [ "2026-04-25", "2026-04-27", "2026-04-28", "2026-04-29", "2026-04-30", "2026-05-01" ], "completed_dates": [ "2026-04-25", "2026-04-26", "2026-04-27", "2026-04-28", "2026-04-29", "2026-04-30", "2026-05-01" ] }, "phase_detection": { "phase": "Base", "confidence": "medium", "reason_codes": [], "basis": { "stream_1": { "ctl_slope": -0.4, "acwr_trend": "falling", "hard_day_pattern": 3, "weeks_available": 4 }, "stream_2": { "planned_tss_delta": 0.35, "hard_sessions_planned": 2, "current_week_hard_days_completed": 2, "current_week_hard_days_total": 4, "race_proximity": 2, "next_week_load": 1.01, "plan_coverage_current_week": 0.13, "plan_coverage_next_week": 0.47 }, "data_quality": "good", "stream_agreement": null }, "previous_phase": null, "phase_duration_weeks": 1, "dossier_declared": null, "dossier_agreement": null }, "phase_detected": "Base", "phase_triggers": [], "seasonal_context": "Build / Early Race Season", "benchmark_indoor": { "current_ftp": 275, "ftp_8_weeks_ago": null, "benchmark_index": null, "benchmark_percentage": null, "seasonal_expected": null }, "benchmark_outdoor": { "current_ftp": 275, "ftp_8_weeks_ago": null, "benchmark_index": null, "benchmark_percentage": null, "seasonal_expected": null }, "eftp": 279.3, "w_prime": 23952, "w_prime_kj": 24.0, "p_max": 1184, "power_model_source": "wellness.sportInfo", "vo2max": null, "calculation_timestamp": "2026-05-01T20:01:00.206549", "data_quality": { "hrv_data_points": 7, "rhr_data_points": 7, "activities_7d": 13, "activities_28d": 58, "planned_workouts_7d": 6, "ftp_history_days": { "indoor": 8, "outdoor": 8 } } }, "recent_activities": [ { "id": "i144469945", "date": "2026-05-01T06:14:47", "type": "Ride", "name": "Endurance + Tempo Touches", "duration_hours": 1.88, "distance_km": 52.7, "tss": 85, "intensity_factor": 67.27273, "avg_power": 170, "normalized_power": 185, "avg_hr": 124, "max_hr": 147, "avg_cadence": 88.6633, "avg_speed": 28.1, "avg_speed_unit": "KPH", "max_speed": 56.0, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 1185.5, "calories": 1359, "carbs_used": 238, "carbs_ingested": null, "variability_index": 1.0882353, "decoupling": 2.2430186, "efficiency_factor": 1.4919355, "hrrc": null, "elevation_m": 362.0, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 6467, "z2_time": 288, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 1183, "z2_time": 4194, "z3_time": 1123, "z4_time": 185, "z5_time": 35, "z6_time": 29, "z7_time": 6 } }, "has_intervals": true, "has_dfa": true, "dfa_summary": { "avg": 0.988, "dominant_band": "below_lt1", "tiz_pct": { "below_lt1": 47.2, "lt1_transition": 26.1, "transition_lt2": 21.4, "above_lt2": 5.3 }, "valid_pct": 96.1, "sufficient": true, "drift_delta": 0.058, "drift_interpretable": true, "lt1_watts": 174, "lt1_hr": 125, "lt2_watts": 190, "lt2_hr": 133 }, "terrain_summary": { "source": "activity_streams", "total_distance_km": 52.8, "total_elevation_m": 427, "elevation_per_km": 8.1, "course_character": "rolling", "max_grade_pct": 9.5, "grade_distribution": { "flat_pct": 58.7, "gentle_pct": 30.1, "moderate_pct": 8.9, "steep_pct": 2.3 }, "start_coords": [ 53.43374, -2.22158 ], "climbs": [ { "position_km": 18.7, "distance_km": 2.2, "elevation_m": 71, "avg_gradient_pct": 3.2, "start_coords": [ 53.29288, -2.23445 ], "end_coords": [ 53.29246, -2.21301 ], "max_gradient_pct": 9.6, "category": null } ], "descents": [] }, "weather_status": "unavailable" }, { "id": "i144354435", "date": "2026-04-30T17:02:43", "type": "WeightTraining", "name": "Strength", "duration_hours": 0.69, "distance_km": 0.0, "tss": 9, "intensity_factor": 36.247326, "avg_power": null, "normalized_power": null, "avg_hr": 93, "max_hr": 137, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 238, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 2468, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i144240005", "date": "2026-04-30T06:21:19", "type": "Ride", "name": "Tempo 2x20", "duration_hours": 1.88, "distance_km": 55.97, "tss": 110, "intensity_factor": 76.36364, "avg_power": 191, "normalized_power": 210, "avg_hr": 137, "max_hr": 156, "avg_cadence": 91.16613, "avg_speed": 29.8, "avg_speed_unit": "KPH", "max_speed": 53.2, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 1316.6, "calories": 1494, "carbs_used": 270, "carbs_ingested": null, "variability_index": 1.0994765, "decoupling": 3.5673738, "efficiency_factor": 1.5328467, "hrrc": null, "elevation_m": 265.0, "feel": 4, "rpe": 5, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 3166, "z2_time": 3571, "z3_time": 32, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 1304, "z2_time": 1450, "z3_time": 2960, "z4_time": 970, "z5_time": 68, "z6_time": 17, "z7_time": 0 } }, "has_intervals": true, "has_dfa": true, "dfa_summary": { "avg": 0.775, "dominant_band": "above_lt2", "tiz_pct": { "below_lt1": 33.4, "lt1_transition": 12.5, "transition_lt2": 18.9, "above_lt2": 35.2 }, "valid_pct": 94.3, "sufficient": true, "drift_delta": 0.141, "drift_interpretable": false, "lt1_watts": 169, "lt1_hr": 134, "lt2_watts": 218, "lt2_hr": 146 }, "terrain_summary": { "source": "activity_streams", "total_distance_km": 56.1, "total_elevation_m": 352, "elevation_per_km": 6.3, "course_character": "rolling", "max_grade_pct": 5.4, "grade_distribution": { "flat_pct": 68.3, "gentle_pct": 26.2, "moderate_pct": 5.4, "steep_pct": 0.0 }, "start_coords": [ 53.43357, -2.22176 ], "climbs": [], "descents": [] }, "weather_status": "unavailable", "description": "Little bit of bonus tempo too" }, { "id": "i144146222", "date": "2026-04-29T18:53:07", "type": "Ride", "name": "Base", "duration_hours": 1.38, "distance_km": 38.89, "tss": 57, "intensity_factor": 64.36364, "avg_power": 167, "normalized_power": 177, "avg_hr": 126, "max_hr": 142, "avg_cadence": 90.99005, "avg_speed": 28.2, "avg_speed_unit": "KPH", "max_speed": 51.3, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 853.5, "calories": 981, "carbs_used": 167, "carbs_ingested": null, "variability_index": 1.0598803, "decoupling": -0.7323258, "efficiency_factor": 1.4047619, "hrrc": null, "elevation_m": 210.0, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 4957, "z2_time": 21, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 642, "z2_time": 3988, "z3_time": 299, "z4_time": 35, "z5_time": 8, "z6_time": 4, "z7_time": 2 } }, "has_intervals": false, "has_dfa": true, "dfa_summary": { "avg": 1.15, "dominant_band": "below_lt1", "tiz_pct": { "below_lt1": 76.7, "lt1_transition": 20.9, "transition_lt2": 2.4, "above_lt2": 0.0 }, "valid_pct": 95.7, "sufficient": true, "drift_delta": 0.006, "drift_interpretable": true, "lt1_watts": 179, "lt1_hr": 129 }, "terrain_summary": { "source": "activity_streams", "total_distance_km": 39.0, "total_elevation_m": 291, "elevation_per_km": 7.5, "course_character": "rolling", "max_grade_pct": 7.1, "grade_distribution": { "flat_pct": 66.0, "gentle_pct": 28.8, "moderate_pct": 4.2, "steep_pct": 1.0 }, "start_coords": [ 53.43359, -2.2216 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i144100188", "date": "2026-04-29T17:20:58", "type": "Ride", "name": "Stockport Cycling", "duration_hours": 0.3, "distance_km": 7.14, "tss": 17, "intensity_factor": 72.72924, "avg_power": null, "normalized_power": null, "avg_hr": 105, "max_hr": 130, "avg_cadence": null, "avg_speed": 23.2, "avg_speed_unit": "KPH", "max_speed": 38.3, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 149, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 34.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1110, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": true, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 52, "elevation_per_km": 7.2, "course_character": "rolling", "max_grade_pct": 4.3, "grade_distribution": { "flat_pct": 48.1, "gentle_pct": 40.7, "moderate_pct": 11.2, "steep_pct": 0.0 }, "start_coords": [ 53.39935, -2.15421 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i143941180", "date": "2026-04-29T07:56:51", "type": "Ride", "name": "Manchester Cycling", "duration_hours": 0.34, "distance_km": 7.13, "tss": 19, "intensity_factor": 69.79824, "avg_power": null, "normalized_power": null, "avg_hr": 102, "max_hr": 123, "avg_cadence": null, "avg_speed": 20.5, "avg_speed_unit": "KPH", "max_speed": 45.5, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 150, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 70.0, "feel": 5, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1252, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": true, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 87, "elevation_per_km": 12.1, "course_character": "rolling", "max_grade_pct": 4.7, "grade_distribution": { "flat_pct": 49.2, "gentle_pct": 36.7, "moderate_pct": 14.1, "steep_pct": 0.0 }, "start_coords": [ 53.43371, -2.22169 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i143767628", "date": "2026-04-28T17:14:02", "type": "WeightTraining", "name": "Rehab", "duration_hours": 0.45, "distance_km": 0.0, "tss": 9, "intensity_factor": 44.55664, "avg_power": null, "normalized_power": null, "avg_hr": 103, "max_hr": 137, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 205, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 1634, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i143588792", "date": "2026-04-28T06:26:59", "type": "Ride", "name": "Threshold 2x20", "duration_hours": 1.78, "distance_km": 52.09, "tss": 110, "intensity_factor": 78.545456, "avg_power": 184, "normalized_power": 216, "avg_hr": 139, "max_hr": 169, "avg_cadence": 89.78553, "avg_speed": 29.4, "avg_speed_unit": "KPH", "max_speed": 58.2, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 1219.6, "calories": 1385, "carbs_used": 296, "carbs_ingested": null, "variability_index": 1.173913, "decoupling": 10.929783, "efficiency_factor": 1.5539569, "hrrc": null, "elevation_m": 340.0, "feel": 3, "rpe": 7, "effort_response": "negative", "zone_distribution": { "hr_zones": { "z1_time": 3583, "z2_time": 680, "z3_time": 1163, "z4_time": 970, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 1565, "z2_time": 1890, "z3_time": 761, "z4_time": 2104, "z5_time": 55, "z6_time": 18, "z7_time": 3 } }, "has_intervals": true, "has_dfa": true, "dfa_summary": { "avg": 0.752, "dominant_band": "above_lt2", "tiz_pct": { "below_lt1": 33.5, "lt1_transition": 17.8, "transition_lt2": 10.0, "above_lt2": 38.7 }, "valid_pct": 95.7, "sufficient": true, "drift_delta": 0.447, "drift_interpretable": false, "lt1_watts": 148, "lt1_hr": 128, "lt2_watts": 220, "lt2_hr": 150 }, "terrain_summary": { "source": "activity_streams", "total_distance_km": 52.2, "total_elevation_m": 440, "elevation_per_km": 8.4, "course_character": "rolling", "max_grade_pct": 8.0, "grade_distribution": { "flat_pct": 63.6, "gentle_pct": 29.3, "moderate_pct": 5.5, "steep_pct": 1.6 }, "start_coords": [ 53.43359, -2.22165 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i143438628", "date": "2026-04-27T17:11:29", "type": "Ride", "name": "Stockport Cycling", "duration_hours": 0.32, "distance_km": 7.14, "tss": 18, "intensity_factor": 73.362526, "avg_power": null, "normalized_power": null, "avg_hr": 99, "max_hr": 127, "avg_cadence": null, "avg_speed": 21.9, "avg_speed_unit": "KPH", "max_speed": 33.7, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 136, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 33.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1171, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": true, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 48, "elevation_per_km": 6.7, "course_character": "rolling", "max_grade_pct": 4.9, "grade_distribution": { "flat_pct": 51.2, "gentle_pct": 37.4, "moderate_pct": 11.4, "steep_pct": 0.0 }, "start_coords": [ 53.39949, -2.15419 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i143290405", "date": "2026-04-27T07:55:22", "type": "Ride", "name": "Recovery", "duration_hours": 0.34, "distance_km": 7.16, "tss": 18, "intensity_factor": 71.04034, "avg_power": null, "normalized_power": null, "avg_hr": 107, "max_hr": 122, "avg_cadence": null, "avg_speed": 20.7, "avg_speed_unit": "KPH", "max_speed": 43.8, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 174, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 69.0, "feel": 3, "rpe": 3, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1248, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": true, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 79, "elevation_per_km": 11.0, "course_character": "rolling", "max_grade_pct": 4.7, "grade_distribution": { "flat_pct": 49.4, "gentle_pct": 36.5, "moderate_pct": 14.0, "steep_pct": 0.0 }, "start_coords": [ 53.43374, -2.22159 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i143282897", "date": "2026-04-27T06:20:56", "type": "WeightTraining", "name": "Strength", "duration_hours": 1.17, "distance_km": 0.0, "tss": 10, "intensity_factor": 29.290953, "avg_power": null, "normalized_power": null, "avg_hr": 79, "max_hr": 121, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 254, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 4198, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i143072989", "date": "2026-04-26T09:16:25", "type": "Ride", "name": "Stockport Cycling", "duration_hours": 2.72, "distance_km": 69.55, "tss": 163, "intensity_factor": 77.454544, "avg_power": 169, "normalized_power": 213, "avg_hr": 119, "max_hr": 169, "avg_cadence": 84.39784, "avg_speed": 25.6, "avg_speed_unit": "KPH", "max_speed": 54.7, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 1668.9, "calories": 1921, "carbs_used": 355, "carbs_ingested": null, "variability_index": 1.260355, "decoupling": 12.532827, "efficiency_factor": 1.7899159, "hrrc": null, "elevation_m": 872.0, "feel": 3, "rpe": 3, "effort_response": "positive", "zone_distribution": { "hr_zones": { "z1_time": 8931, "z2_time": 519, "z3_time": 127, "z4_time": 216, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 3528, "z2_time": 2778, "z3_time": 1731, "z4_time": 788, "z5_time": 524, "z6_time": 376, "z7_time": 68 } }, "has_intervals": true, "has_dfa": true, "dfa_summary": { "avg": 1.247, "dominant_band": "below_lt1", "tiz_pct": { "below_lt1": 85.8, "lt1_transition": 8.0, "transition_lt2": 3.3, "above_lt2": 2.9 }, "valid_pct": 91.9, "sufficient": true, "drift_delta": 0.011, "drift_interpretable": true, "lt1_watts": 181, "lt1_hr": 124, "lt2_watts": 272, "lt2_hr": 154 }, "terrain_summary": { "source": "activity_streams", "total_distance_km": 69.8, "total_elevation_m": 991, "elevation_per_km": 14.2, "course_character": "rolling", "max_grade_pct": 13.4, "grade_distribution": { "flat_pct": 41.2, "gentle_pct": 38.6, "moderate_pct": 12.6, "steep_pct": 7.6 }, "start_coords": [ 53.40346, -2.07603 ], "climbs": [ { "position_km": 45.1, "distance_km": 4.7, "elevation_m": 130, "avg_gradient_pct": 2.8, "start_coords": [ 53.23626, -2.10918 ], "end_coords": [ 53.26617, -2.08182 ], "max_gradient_pct": 13.9, "category": "Cat 4" } ], "descents": [ { "position_km": 48.8, "distance_km": 5.7, "elevation_m": -135, "avg_gradient_pct": -2.4, "start_coords": [ 53.25847, -2.08696 ], "end_coords": [ 53.29646, -2.09239 ] } ] }, "weather_status": "unavailable" }, { "id": "i142753018", "date": "2026-04-25T07:06:41", "type": "Ride", "name": "Manchester Cycling", "duration_hours": 2.81, "distance_km": 78.7, "tss": 185, "intensity_factor": 81.09091, "avg_power": 201, "normalized_power": 223, "avg_hr": 145, "max_hr": 168, "avg_cadence": 92.18568, "avg_speed": 28.0, "avg_speed_unit": "KPH", "max_speed": 62.7, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 2074.8, "calories": 2333, "carbs_used": 449, "carbs_ingested": null, "variability_index": 1.1094527, "decoupling": 6.880401, "efficiency_factor": 1.5379311, "hrrc": null, "elevation_m": 1109.0, "feel": 4, "rpe": 5, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 2736, "z2_time": 4914, "z3_time": 1159, "z4_time": 1320, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 1238, "z2_time": 3991, "z3_time": 1806, "z4_time": 2552, "z5_time": 500, "z6_time": 34, "z7_time": 8 } }, "has_intervals": true, "has_dfa": true, "dfa_summary": { "avg": 0.797, "dominant_band": "below_lt1", "tiz_pct": { "below_lt1": 30.3, "lt1_transition": 20.5, "transition_lt2": 21.7, "above_lt2": 27.5 }, "valid_pct": 97.7, "sufficient": true, "drift_delta": 0.175, "drift_interpretable": false, "lt1_watts": 185, "lt1_hr": 142, "lt2_watts": 220, "lt2_hr": 152 }, "terrain_summary": { "source": "activity_streams", "total_distance_km": 78.9, "total_elevation_m": 1217, "elevation_per_km": 15.4, "course_character": "rolling", "max_grade_pct": 13.0, "grade_distribution": { "flat_pct": 35.0, "gentle_pct": 29.9, "moderate_pct": 23.6, "steep_pct": 11.6 }, "start_coords": [ 53.43359, -2.22172 ], "climbs": [ { "position_km": 18.8, "distance_km": 8.3, "elevation_m": 208, "avg_gradient_pct": 2.5, "start_coords": [ 53.3439, -2.08599 ], "end_coords": [ 53.30945, -2.04471 ], "max_gradient_pct": 10.1, "category": "Cat 3" }, { "position_km": 29.0, "distance_km": 4.1, "elevation_m": 234, "avg_gradient_pct": 5.8, "start_coords": [ 53.3109, -2.02693 ], "end_coords": [ 53.28721, -2.00722 ], "max_gradient_pct": 10.0, "category": "Cat 3" }, { "position_km": 35.9, "distance_km": 5.7, "elevation_m": 232, "avg_gradient_pct": 4.1, "start_coords": [ 53.27204, -1.98392 ], "end_coords": [ 53.24468, -2.00035 ], "max_gradient_pct": 9.7, "category": "Cat 3" } ], "descents": [ { "position_km": 27.2, "distance_km": 1.8, "elevation_m": -129, "avg_gradient_pct": -7.0, "start_coords": [ 53.30945, -2.04471 ], "end_coords": [ 53.3109, -2.02693 ] }, { "position_km": 33.1, "distance_km": 2.9, "elevation_m": -185, "avg_gradient_pct": -6.5, "start_coords": [ 53.28721, -2.00722 ], "end_coords": [ 53.27204, -1.98392 ] } ] }, "weather_status": "unavailable" }, { "id": "i142657312", "date": "2026-04-24T21:09:24", "type": "Ride", "name": "Manchester Cycling", "duration_hours": 0.11, "distance_km": 2.42, "tss": 9, "intensity_factor": null, "avg_power": null, "normalized_power": null, "avg_hr": 109, "max_hr": 121, "avg_cadence": null, "avg_speed": 20.9, "avg_speed_unit": "KPH", "max_speed": 28.8, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 64, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 5.0, "feel": 3, "rpe": 1, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 416, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": true, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 2.4, "total_elevation_m": 10, "elevation_per_km": 4.2, "course_character": "flat", "max_grade_pct": 0.7, "grade_distribution": { "flat_pct": 100.0, "gentle_pct": 0.0, "moderate_pct": 0.0, "steep_pct": 0.0 }, "start_coords": [ 53.41696, -2.22986 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i142620984", "date": "2026-04-24T18:21:07", "type": "Ride", "name": "Manchester Cycling", "duration_hours": 0.14, "distance_km": 3.08, "tss": 10, "intensity_factor": null, "avg_power": null, "normalized_power": null, "avg_hr": 112, "max_hr": 122, "avg_cadence": null, "avg_speed": 21.7, "avg_speed_unit": "KPH", "max_speed": 27.3, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 82, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 8.0, "feel": 3, "rpe": 1, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 511, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": true, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 3.1, "total_elevation_m": 16, "elevation_per_km": 5.2, "course_character": "rolling", "max_grade_pct": 2.9, "grade_distribution": { "flat_pct": 85.8, "gentle_pct": 14.2, "moderate_pct": 0.0, "steep_pct": 0.0 }, "start_coords": [ 53.43354, -2.22169 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i142601560", "date": "2026-04-24T17:11:52", "type": "Ride", "name": "Stockport Cycling", "duration_hours": 0.29, "distance_km": 7.05, "tss": 16, "intensity_factor": 71.93888, "avg_power": null, "normalized_power": null, "avg_hr": 104, "max_hr": 123, "avg_cadence": null, "avg_speed": 24.1, "avg_speed_unit": "KPH", "max_speed": 37.5, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 139, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 33.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1055, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": true, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.1, "total_elevation_m": 41, "elevation_per_km": 5.8, "course_character": "rolling", "max_grade_pct": 4.4, "grade_distribution": { "flat_pct": 56.8, "gentle_pct": 28.9, "moderate_pct": 14.3, "steep_pct": 0.0 }, "start_coords": [ 53.4001, -2.15501 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i142471829", "date": "2026-04-24T08:04:42", "type": "Ride", "name": "Recovery", "duration_hours": 0.35, "distance_km": 7.15, "tss": 19, "intensity_factor": 70.684845, "avg_power": null, "normalized_power": null, "avg_hr": 116, "max_hr": 131, "avg_cadence": null, "avg_speed": 19.8, "avg_speed_unit": "KPH", "max_speed": 45.2, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 211, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 72.0, "feel": 5, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1303, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": true, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 87, "elevation_per_km": 12.1, "course_character": "rolling", "max_grade_pct": 4.4, "grade_distribution": { "flat_pct": 55.1, "gentle_pct": 30.8, "moderate_pct": 14.2, "steep_pct": 0.0 }, "start_coords": [ 53.43362, -2.22166 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i142464844", "date": "2026-04-24T06:41:08", "type": "WeightTraining", "name": "Morning Weight Training", "duration_hours": 1.06, "distance_km": 0.0, "tss": 13, "intensity_factor": 35.00645, "avg_power": null, "normalized_power": null, "avg_hr": 93, "max_hr": 128, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 349, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 3821, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i142355239", "date": "2026-04-23T17:14:22", "type": "Ride", "name": "2x20 Threshold", "duration_hours": 1.9, "distance_km": 56.09, "tss": 110, "intensity_factor": 76.14035, "avg_power": 194, "normalized_power": 217, "avg_hr": 143, "max_hr": 170, "avg_cadence": 87.82242, "avg_speed": 29.9, "avg_speed_unit": "KPH", "max_speed": 54.3, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": 14.206319, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 1330.1, "calories": 1311, "carbs_used": 303, "carbs_ingested": null, "variability_index": 1.1185567, "decoupling": 7.813191, "efficiency_factor": 1.5174825, "hrrc": null, "elevation_m": 243.0, "feel": 3, "rpe": 7, "effort_response": "negative", "zone_distribution": { "hr_zones": { "z1_time": 3466, "z2_time": 993, "z3_time": 680, "z4_time": 1702, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 1527, "z2_time": 2517, "z3_time": 774, "z4_time": 1908, "z5_time": 104, "z6_time": 11, "z7_time": 0 } }, "has_intervals": true, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 56.2, "total_elevation_m": 344, "elevation_per_km": 6.1, "course_character": "rolling", "max_grade_pct": 6.7, "grade_distribution": { "flat_pct": 69.4, "gentle_pct": 24.4, "moderate_pct": 5.8, "steep_pct": 0.4 }, "start_coords": [ 53.43353, -2.22173 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i142206011", "date": "2026-04-23T07:48:27", "type": "WeightTraining", "name": "Rehab", "duration_hours": 0.43, "distance_km": 0.0, "tss": 7, "intensity_factor": 40.17897, "avg_power": null, "normalized_power": null, "avg_hr": 102, "max_hr": 136, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 194, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 1563, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i142083604", "date": "2026-04-22T18:06:38", "type": "Run", "name": "Lil tester", "duration_hours": 0.34, "distance_km": 3.78, "tss": 21, "intensity_factor": 75.0547, "avg_power": 342, "normalized_power": 343, "avg_hr": 126, "max_hr": 136, "avg_cadence": 83.41943, "avg_speed": 11.3, "avg_speed_unit": "KPH", "max_speed": 12.6, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": 21.908113, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 413.5, "calories": 268, "carbs_used": null, "carbs_ingested": null, "variability_index": 1.002924, "decoupling": 1.8551725, "efficiency_factor": 2.7222223, "hrrc": null, "elevation_m": 25.089752, "feel": 2, "rpe": 2, "effort_response": "positive", "zone_distribution": { "hr_zones": { "z1_time": 1206, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 21, "z2_time": 564, "z3_time": 605, "z4_time": 16, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": true, "has_dfa": true, "dfa_summary": { "avg": 0.729, "dominant_band": "transition_lt2", "tiz_pct": { "below_lt1": 11.7, "lt1_transition": 30.5, "transition_lt2": 46.0, "above_lt2": 11.8 }, "valid_pct": 100.0, "sufficient": true, "drift_delta": -0.134, "drift_interpretable": true, "lt1_watts": 335, "lt1_hr": 122, "lt2_watts": 343, "lt2_hr": 129 }, "terrain_summary": { "source": "activity_streams", "total_distance_km": 3.8, "total_elevation_m": 34, "elevation_per_km": 8.9, "course_character": "rolling", "max_grade_pct": 5.2, "grade_distribution": { "flat_pct": 69.0, "gentle_pct": 25.7, "moderate_pct": 5.3, "steep_pct": 0.0 }, "start_coords": [ 53.40367, -2.07606 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i141805540", "date": "2026-04-21T17:32:20", "type": "VirtualRide", "name": "FTP Test", "duration_hours": 0.87, "distance_km": 38.27, "tss": 60, "intensity_factor": 83.1579, "avg_power": 205, "normalized_power": 237, "avg_hr": 141, "max_hr": 172, "avg_cadence": 90.531975, "avg_speed": 43.8, "avg_speed_unit": "KPH", "max_speed": 50.0, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 645.8, "calories": 725, "carbs_used": 154, "carbs_ingested": null, "variability_index": 1.1560975, "decoupling": 11.97329, "efficiency_factor": 1.6808511, "hrrc": null, "elevation_m": null, "feel": 3, "rpe": 10, "effort_response": "negative", "zone_distribution": { "hr_zones": { "z1_time": 888, "z2_time": 121, "z3_time": 154, "z4_time": 816, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 1296, "z2_time": 441, "z3_time": 72, "z4_time": 1169, "z5_time": 125, "z6_time": 44, "z7_time": 0 } }, "has_intervals": true, "has_dfa": true, "dfa_summary": { "avg": 0.784, "dominant_band": "below_lt1", "tiz_pct": { "below_lt1": 39.9, "lt1_transition": 15.6, "transition_lt2": 9.7, "above_lt2": 34.8 }, "valid_pct": 98.4, "sufficient": true, "drift_delta": -0.035, "drift_interpretable": false, "lt1_watts": 163, "lt1_hr": 84, "lt2_watts": 233, "lt2_hr": 92 } }, { "id": "i141493036", "date": "2026-04-20T17:15:45", "type": "Ride", "name": "Stockport Cycling", "duration_hours": 0.3, "distance_km": 7.12, "tss": 16, "intensity_factor": 71.01959, "avg_power": null, "normalized_power": null, "avg_hr": 104, "max_hr": 125, "avg_cadence": null, "avg_speed": 23.7, "avg_speed_unit": "KPH", "max_speed": 38.7, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 142, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 34.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1082, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 52, "elevation_per_km": 7.2, "course_character": "rolling", "max_grade_pct": 5.2, "grade_distribution": { "flat_pct": 48.2, "gentle_pct": 37.7, "moderate_pct": 14.1, "steep_pct": 0.0 }, "start_coords": [ 53.39939, -2.15406 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i141338687", "date": "2026-04-20T08:09:38", "type": "Ride", "name": "Manchester Cycling", "duration_hours": 0.34, "distance_km": 7.15, "tss": 18, "intensity_factor": 71.01269, "avg_power": null, "normalized_power": null, "avg_hr": 112, "max_hr": 132, "avg_cadence": null, "avg_speed": 20.8, "avg_speed_unit": "KPH", "max_speed": 43.6, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 192, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 74.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1243, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 88, "elevation_per_km": 12.2, "course_character": "rolling", "max_grade_pct": 4.8, "grade_distribution": { "flat_pct": 45.2, "gentle_pct": 40.7, "moderate_pct": 14.1, "steep_pct": 0.0 }, "start_coords": [ 53.43364, -2.22164 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i141328838", "date": "2026-04-20T06:29:47", "type": "VirtualRide", "name": "Z2 with openers", "duration_hours": 1.0, "distance_km": 43.92, "tss": 49, "intensity_factor": 70.17544, "avg_power": 193, "normalized_power": 200, "avg_hr": 116, "max_hr": 144, "avg_cadence": 90.80217, "avg_speed": 43.9, "avg_speed_unit": "KPH", "max_speed": 48.0, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 696.5, "calories": 787, "carbs_used": 166, "carbs_ingested": null, "variability_index": 1.0362694, "decoupling": 0.2326358, "efficiency_factor": 1.7241379, "hrrc": null, "elevation_m": null, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 3480, "z2_time": 126, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 62, "z2_time": 3264, "z3_time": 101, "z4_time": 26, "z5_time": 150, "z6_time": 3, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i140919769", "date": "2026-04-18T14:20:38", "type": "VirtualRide", "name": "Priming / Fit Test", "duration_hours": 2.05, "distance_km": 85.74, "tss": 98, "intensity_factor": 69.12281, "avg_power": 169, "normalized_power": 197, "avg_hr": 126, "max_hr": 158, "avg_cadence": 91.34943, "avg_speed": 41.8, "avg_speed_unit": "KPH", "max_speed": 86.3, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 1250.2, "calories": 1434, "carbs_used": 293, "carbs_ingested": null, "variability_index": 1.1656805, "decoupling": -14.131412, "efficiency_factor": 1.5634921, "hrrc": null, "elevation_m": null, "feel": 4, "rpe": 3, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 6725, "z2_time": 504, "z3_time": 136, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 1696, "z2_time": 4966, "z3_time": 105, "z4_time": 537, "z5_time": 11, "z6_time": 11, "z7_time": 39 } }, "has_intervals": false, "has_dfa": false }, { "id": "i140679027", "date": "2026-04-17T17:32:13", "type": "VirtualRide", "name": "Z2", "duration_hours": 1.46, "distance_km": 54.61, "tss": 63, "intensity_factor": 65.96491, "avg_power": 186, "normalized_power": 188, "avg_hr": 122, "max_hr": 133, "avg_cadence": 94.25898, "avg_speed": 37.5, "avg_speed_unit": "KPH", "max_speed": 39.8, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 978.5, "calories": 1109, "carbs_used": 172, "carbs_ingested": null, "variability_index": 1.0107527, "decoupling": -2.8921895, "efficiency_factor": 1.5409836, "hrrc": null, "elevation_m": null, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 5249, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 369, "z2_time": 4805, "z3_time": 69, "z4_time": 6, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i140439064", "date": "2026-04-16T17:16:38", "type": "Ride", "name": "Hard Start Sweetspot 3x15'", "duration_hours": 1.78, "distance_km": 54.76, "tss": 109, "intensity_factor": 78.24561, "avg_power": 187, "normalized_power": 223, "avg_hr": 136, "max_hr": 166, "avg_cadence": 87.38338, "avg_speed": 31.0, "avg_speed_unit": "KPH", "max_speed": 60.1, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": 11.857142, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 1206.0, "calories": 1202, "carbs_used": 282, "carbs_ingested": 86, "variability_index": 1.1925133, "decoupling": 13.066908, "efficiency_factor": 1.6397059, "hrrc": null, "elevation_m": 221.0, "feel": 3, "rpe": 7, "effort_response": "negative", "zone_distribution": { "hr_zones": { "z1_time": 3197, "z2_time": 599, "z3_time": 2031, "z4_time": 576, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 2326, "z2_time": 952, "z3_time": 1130, "z4_time": 1712, "z5_time": 225, "z6_time": 53, "z7_time": 4 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 52.7, "total_elevation_m": 311, "elevation_per_km": 5.9, "course_character": "rolling", "max_grade_pct": 7.5, "grade_distribution": { "flat_pct": 70.8, "gentle_pct": 23.0, "moderate_pct": 5.1, "steep_pct": 1.2 }, "start_coords": [ 53.43373, -2.22159 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i140259307", "date": "2026-04-16T07:31:47", "type": "WeightTraining", "name": "Morning Weight Training", "duration_hours": 0.72, "distance_km": 0.0, "tss": 5, "intensity_factor": 26.362486, "avg_power": null, "normalized_power": null, "avg_hr": 66, "max_hr": 111, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 65, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 2592, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i140149035", "date": "2026-04-15T18:02:45", "type": "VirtualRide", "name": "MyWhoosh - Z2", "duration_hours": 1.0, "distance_km": 30.99, "tss": 40, "intensity_factor": 62.80702, "avg_power": 178, "normalized_power": 179, "avg_hr": 110, "max_hr": 122, "avg_cadence": 89.68294, "avg_speed": 30.9, "avg_speed_unit": "KPH", "max_speed": 44.3, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 639.8, "calories": 639, "carbs_used": 126, "carbs_ingested": null, "variability_index": 1.005618, "decoupling": 1.1429752, "efficiency_factor": 1.6272727, "hrrc": null, "elevation_m": 73.4, "feel": 3, "rpe": 3, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 3606, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 539, "z2_time": 3038, "z3_time": 29, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i140119546", "date": "2026-04-15T17:22:13", "type": "Ride", "name": "Stockport Cycling", "duration_hours": 0.31, "distance_km": 7.12, "tss": 16, "intensity_factor": 69.16685, "avg_power": null, "normalized_power": null, "avg_hr": 106, "max_hr": 129, "avg_cadence": null, "avg_speed": 22.5, "avg_speed_unit": "KPH", "max_speed": 37.3, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 104, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 32.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1142, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 42, "elevation_per_km": 5.8, "course_character": "rolling", "max_grade_pct": 4.4, "grade_distribution": { "flat_pct": 59.5, "gentle_pct": 26.5, "moderate_pct": 14.0, "steep_pct": 0.0 }, "start_coords": [ 53.39925, -2.15426 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i139962561", "date": "2026-04-15T07:55:09", "type": "Ride", "name": "Morning Ride", "duration_hours": 0.63, "distance_km": 13.16, "tss": 31, "intensity_factor": 67.67127, "avg_power": null, "normalized_power": null, "avg_hr": 110, "max_hr": 129, "avg_cadence": null, "avg_speed": 20.6, "avg_speed_unit": "KPH", "max_speed": 36.3, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 220, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 105.0, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 2299, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 13.3, "total_elevation_m": 134, "elevation_per_km": 10.1, "course_character": "rolling", "max_grade_pct": 4.6, "grade_distribution": { "flat_pct": 58.0, "gentle_pct": 32.9, "moderate_pct": 9.2, "steep_pct": 0.0 }, "start_coords": [ 53.48213, -2.22119 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i139853361", "date": "2026-04-14T19:33:07", "type": "Ride", "name": "Manchester Cycling", "duration_hours": 0.3, "distance_km": 6.93, "tss": 16, "intensity_factor": 71.681725, "avg_power": null, "normalized_power": null, "avg_hr": 120, "max_hr": 141, "avg_cadence": null, "avg_speed": 22.7, "avg_speed_unit": "KPH", "max_speed": 36.3, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 134, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 40.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1073, "z2_time": 26, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.0, "total_elevation_m": 59, "elevation_per_km": 8.4, "course_character": "rolling", "max_grade_pct": 2.4, "grade_distribution": { "flat_pct": 67.2, "gentle_pct": 32.8, "moderate_pct": 0.0, "steep_pct": 0.0 }, "start_coords": [ 53.43438, -2.22168 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i139825209", "date": "2026-04-14T17:16:51", "type": "VirtualRide", "name": "MyWhoosh - 40/20s", "duration_hours": 1.05, "distance_km": 23.31, "tss": 73, "intensity_factor": 83.1579, "avg_power": 205, "normalized_power": 237, "avg_hr": 137, "max_hr": 171, "avg_cadence": 95.82638, "avg_speed": 22.2, "avg_speed_unit": "KPH", "max_speed": 57.0, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 776.3, "calories": 776, "carbs_used": 195, "carbs_ingested": null, "variability_index": 1.1560975, "decoupling": 0.064503245, "efficiency_factor": 1.7299271, "hrrc": null, "elevation_m": 497.00003, "feel": 3, "rpe": 8, "effort_response": "negative", "zone_distribution": { "hr_zones": { "z1_time": 2041, "z2_time": 449, "z3_time": 336, "z4_time": 959, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 1894, "z2_time": 574, "z3_time": 301, "z4_time": 124, "z5_time": 593, "z6_time": 299, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i139652353", "date": "2026-04-14T07:22:28", "type": "WeightTraining", "name": "Rehab", "duration_hours": 0.68, "distance_km": 0.0, "tss": 5, "intensity_factor": 27.177437, "avg_power": null, "normalized_power": null, "avg_hr": 72, "max_hr": 119, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 92, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 2439, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i139508637", "date": "2026-04-13T17:25:37", "type": "Ride", "name": "Stockport Cycling", "duration_hours": 0.3, "distance_km": 7.14, "tss": 15, "intensity_factor": 69.65452, "avg_power": null, "normalized_power": null, "avg_hr": 101, "max_hr": 115, "avg_cadence": null, "avg_speed": 23.7, "avg_speed_unit": "KPH", "max_speed": 39.3, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 90, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 38.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1085, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 48, "elevation_per_km": 6.7, "course_character": "rolling", "max_grade_pct": 5.3, "grade_distribution": { "flat_pct": 45.5, "gentle_pct": 43.2, "moderate_pct": 11.3, "steep_pct": 0.0 }, "start_coords": [ 53.39957, -2.15432 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i139358610", "date": "2026-04-13T08:07:49", "type": "Ride", "name": "Recovery", "duration_hours": 0.34, "distance_km": 7.17, "tss": 17, "intensity_factor": 68.19425, "avg_power": null, "normalized_power": null, "avg_hr": 116, "max_hr": 129, "avg_cadence": null, "avg_speed": 20.7, "avg_speed_unit": "KPH", "max_speed": 44.1, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 140, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 67.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1246, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 81, "elevation_per_km": 11.2, "course_character": "rolling", "max_grade_pct": 4.8, "grade_distribution": { "flat_pct": 46.6, "gentle_pct": 42.3, "moderate_pct": 11.2, "steep_pct": 0.0 }, "start_coords": [ 53.43357, -2.22177 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i139346694", "date": "2026-04-13T06:26:47", "type": "WeightTraining", "name": "Strength", "duration_hours": 1.13, "distance_km": 0.0, "tss": 4, "intensity_factor": 18.849201, "avg_power": null, "normalized_power": null, "avg_hr": 71, "max_hr": 120, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 144, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 4055, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i139171980", "date": "2026-04-12T12:49:13", "type": "Ride", "name": "Cycling", "duration_hours": 1.75, "distance_km": 52.49, "tss": 106, "intensity_factor": 77.89474, "avg_power": 176, "normalized_power": 222, "avg_hr": 114, "max_hr": 161, "avg_cadence": 80.34971, "avg_speed": 29.9, "avg_speed_unit": "KPH", "max_speed": 58.3, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": 5.8784275, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 1127.1, "calories": 1108, "carbs_used": 245, "carbs_ingested": null, "variability_index": 1.2613636, "decoupling": 0.23468344, "efficiency_factor": 1.9473684, "hrrc": null, "elevation_m": 340.0, "feel": 3, "rpe": 4, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 6062, "z2_time": 217, "z3_time": 33, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 2081, "z2_time": 1726, "z3_time": 1557, "z4_time": 600, "z5_time": 202, "z6_time": 67, "z7_time": 79 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 50.3, "total_elevation_m": 421, "elevation_per_km": 8.4, "course_character": "rolling", "max_grade_pct": 7.1, "grade_distribution": { "flat_pct": 57.7, "gentle_pct": 30.9, "moderate_pct": 9.8, "steep_pct": 1.6 }, "start_coords": [ 53.40367, -2.07619 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i138916282", "date": "2026-04-11T11:35:13", "type": "Ride", "name": "Solo Saturday Wildboar Clough", "duration_hours": 2.78, "distance_km": 83.07, "tss": 192, "intensity_factor": 83.1579, "avg_power": 218, "normalized_power": 237, "avg_hr": 144, "max_hr": 172, "avg_cadence": 88.02124, "avg_speed": 30.0, "avg_speed_unit": "KPH", "max_speed": 70.2, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": 6.0925593, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 2183.9, "calories": 2166, "carbs_used": 473, "carbs_ingested": null, "variability_index": 1.0871559, "decoupling": 4.870653, "efficiency_factor": 1.6458334, "hrrc": null, "elevation_m": 1002.0, "feel": 1, "rpe": 7, "effort_response": "negative", "zone_distribution": { "hr_zones": { "z1_time": 2233, "z2_time": 6127, "z3_time": 1170, "z4_time": 490, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 1552, "z2_time": 817, "z3_time": 4939, "z4_time": 1979, "z5_time": 645, "z6_time": 84, "z7_time": 4 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 80.0, "total_elevation_m": 1098, "elevation_per_km": 13.7, "course_character": "rolling", "max_grade_pct": 19.0, "grade_distribution": { "flat_pct": 40.9, "gentle_pct": 33.5, "moderate_pct": 15.9, "steep_pct": 9.7 }, "start_coords": [ 53.43353, -2.22171 ], "climbs": [ { "position_km": 48.2, "distance_km": 2.8, "elevation_m": 106, "avg_gradient_pct": 3.8, "start_coords": [ 53.23381, -2.02612 ], "end_coords": [ 53.25696, -2.03602 ], "max_gradient_pct": 10.2, "category": "Cat 4" }, { "position_km": 52.0, "distance_km": 2.4, "elevation_m": 85, "avg_gradient_pct": 3.5, "start_coords": [ 53.26563, -2.03764 ], "end_coords": [ 53.28518, -2.0404 ], "max_gradient_pct": 13.4, "category": null } ], "descents": [ { "position_km": 41.0, "distance_km": 2.7, "elevation_m": -152, "avg_gradient_pct": -5.6, "start_coords": [ 53.20544, -2.07026 ], "end_coords": [ 53.20376, -2.04682 ] }, { "position_km": 51.0, "distance_km": 1.0, "elevation_m": -102, "avg_gradient_pct": -10.0, "start_coords": [ 53.25696, -2.03602 ], "end_coords": [ 53.26563, -2.03764 ] }, { "position_km": 54.5, "distance_km": 21.5, "elevation_m": -366, "avg_gradient_pct": -1.7, "start_coords": [ 53.28518, -2.0404 ], "end_coords": [ 53.40445, -2.21791 ] } ] }, "weather_status": "unavailable" }, { "id": "i138720941", "date": "2026-04-10T17:12:47", "type": "Ride", "name": "Stockport Cycling", "duration_hours": 0.3, "distance_km": 7.14, "tss": 16, "intensity_factor": 70.37548, "avg_power": null, "normalized_power": null, "avg_hr": 103, "max_hr": 129, "avg_cadence": null, "avg_speed": 23.4, "avg_speed_unit": "KPH", "max_speed": 38.1, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 138, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 37.0, "feel": 3, "rpe": 3, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1096, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 44, "elevation_per_km": 6.1, "course_character": "rolling", "max_grade_pct": 4.5, "grade_distribution": { "flat_pct": 51.5, "gentle_pct": 37.2, "moderate_pct": 11.3, "steep_pct": 0.0 }, "start_coords": [ 53.39937, -2.15414 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i138595228", "date": "2026-04-10T08:15:17", "type": "Ride", "name": "Recovery", "duration_hours": 0.36, "distance_km": 7.15, "tss": 18, "intensity_factor": 67.98506, "avg_power": null, "normalized_power": null, "avg_hr": 113, "max_hr": 124, "avg_cadence": null, "avg_speed": 19.6, "avg_speed_unit": "KPH", "max_speed": 38.6, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 203, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 68.0, "feel": 5, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1312, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 75, "elevation_per_km": 10.4, "course_character": "rolling", "max_grade_pct": 4.9, "grade_distribution": { "flat_pct": 49.2, "gentle_pct": 36.8, "moderate_pct": 14.1, "steep_pct": 0.0 }, "start_coords": [ 53.43379, -2.2216 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i138584053", "date": "2026-04-10T07:11:39", "type": "WeightTraining", "name": "Rehab", "duration_hours": 0.39, "distance_km": 0.0, "tss": 5, "intensity_factor": 35.641117, "avg_power": null, "normalized_power": null, "avg_hr": 90, "max_hr": 121, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 121, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 1419, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i138498952", "date": "2026-04-09T18:45:55", "type": "WeightTraining", "name": "Strength", "duration_hours": 0.85, "distance_km": 0.0, "tss": 10, "intensity_factor": 34.327774, "avg_power": null, "normalized_power": null, "avg_hr": 85, "max_hr": 128, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 195, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 3057, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i138484365", "date": "2026-04-09T18:11:04", "type": "VirtualRide", "name": "Hard start sweetspot 3x15'", "duration_hours": 0.51, "distance_km": 18.04, "tss": 30, "intensity_factor": 76.8421, "avg_power": 187, "normalized_power": 219, "avg_hr": 119, "max_hr": 155, "avg_cadence": 90.68126, "avg_speed": 33.8, "avg_speed_unit": "KPH", "max_speed": 42.0, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 358.5, "calories": 407, "carbs_used": 96, "carbs_ingested": null, "variability_index": 1.171123, "decoupling": -6.2368546, "efficiency_factor": 1.8403361, "hrrc": null, "elevation_m": null, "feel": 5, "rpe": 7, "effort_response": "negative", "zone_distribution": { "hr_zones": { "z1_time": 1421, "z2_time": 401, "z3_time": 17, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 516, "z2_time": 663, "z3_time": 357, "z4_time": 187, "z5_time": 59, "z6_time": 57, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i138467297", "date": "2026-04-09T17:16:17", "type": "Ride", "name": "Stockport Cycling", "duration_hours": 0.32, "distance_km": 7.12, "tss": 17, "intensity_factor": 70.48072, "avg_power": null, "normalized_power": null, "avg_hr": 101, "max_hr": 120, "avg_cadence": null, "avg_speed": 21.8, "avg_speed_unit": "KPH", "max_speed": 39.5, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 143, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 29.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1176, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 35, "elevation_per_km": 4.9, "course_character": "flat", "max_grade_pct": 5.2, "grade_distribution": { "flat_pct": 51.6, "gentle_pct": 37.1, "moderate_pct": 11.2, "steep_pct": 0.0 }, "start_coords": [ 53.39943, -2.15411 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i138330223", "date": "2026-04-09T08:04:20", "type": "Ride", "name": "Manchester Cycling", "duration_hours": 0.35, "distance_km": 7.16, "tss": 18, "intensity_factor": 69.17962, "avg_power": null, "normalized_power": null, "avg_hr": 111, "max_hr": 126, "avg_cadence": null, "avg_speed": 20.3, "avg_speed_unit": "KPH", "max_speed": 42.8, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 192, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 67.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1271, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 83, "elevation_per_km": 11.5, "course_character": "rolling", "max_grade_pct": 4.7, "grade_distribution": { "flat_pct": 55.0, "gentle_pct": 30.9, "moderate_pct": 14.0, "steep_pct": 0.0 }, "start_coords": [ 53.4336, -2.22195 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i138232709", "date": "2026-04-08T18:18:18", "type": "Ride", "name": "Base", "duration_hours": 2.01, "distance_km": 62.22, "tss": 88, "intensity_factor": 66.31579, "avg_power": 180, "normalized_power": 189, "avg_hr": 128, "max_hr": 146, "avg_cadence": 89.09492, "avg_speed": 31.1, "avg_speed_unit": "KPH", "max_speed": 56.2, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": 12.89776, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 1311.9, "calories": 1297, "carbs_used": 244, "carbs_ingested": null, "variability_index": 1.05, "decoupling": 2.0017352, "efficiency_factor": 1.4765625, "hrrc": null, "elevation_m": 312.0, "feel": 3, "rpe": 3, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 7089, "z2_time": 134, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 885, "z2_time": 5453, "z3_time": 774, "z4_time": 89, "z5_time": 17, "z6_time": 3, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 59.7, "total_elevation_m": 407, "elevation_per_km": 6.8, "course_character": "rolling", "max_grade_pct": 6.2, "grade_distribution": { "flat_pct": 61.6, "gentle_pct": 29.5, "moderate_pct": 8.2, "steep_pct": 0.7 }, "start_coords": [ 53.43351, -2.22169 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i138167494", "date": "2026-04-08T17:15:22", "type": "Ride", "name": "Stockport Cycling", "duration_hours": 0.31, "distance_km": 7.16, "tss": 16, "intensity_factor": 69.25318, "avg_power": null, "normalized_power": null, "avg_hr": 110, "max_hr": 130, "avg_cadence": null, "avg_speed": 22.7, "avg_speed_unit": "KPH", "max_speed": 38.9, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 166, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 33.0, "feel": 3, "rpe": 3, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1137, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 45, "elevation_per_km": 6.2, "course_character": "rolling", "max_grade_pct": 4.9, "grade_distribution": { "flat_pct": 47.8, "gentle_pct": 38.1, "moderate_pct": 14.1, "steep_pct": 0.0 }, "start_coords": [ 53.39926, -2.15407 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i138029903", "date": "2026-04-08T08:08:36", "type": "Ride", "name": "Manchester Cycling", "duration_hours": 0.33, "distance_km": 7.18, "tss": 17, "intensity_factor": 70.027466, "avg_power": null, "normalized_power": null, "avg_hr": 113, "max_hr": 129, "avg_cadence": null, "avg_speed": 21.3, "avg_speed_unit": "KPH", "max_speed": 43.6, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 190, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 68.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1211, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 77, "elevation_per_km": 10.7, "course_character": "rolling", "max_grade_pct": 4.4, "grade_distribution": { "flat_pct": 49.3, "gentle_pct": 36.5, "moderate_pct": 14.2, "steep_pct": 0.0 }, "start_coords": [ 53.43374, -2.2217 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i138022913", "date": "2026-04-08T07:07:48", "type": "WeightTraining", "name": "Rehab", "duration_hours": 0.39, "distance_km": 0.0, "tss": 2, "intensity_factor": 22.710335, "avg_power": null, "normalized_power": null, "avg_hr": 89, "max_hr": 122, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 115, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 1398, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i137935418", "date": "2026-04-07T18:11:16", "type": "Ride", "name": "Base", "duration_hours": 1.87, "distance_km": 58.51, "tss": 86, "intensity_factor": 67.7193, "avg_power": 183, "normalized_power": 193, "avg_hr": 128, "max_hr": 146, "avg_cadence": 88.60493, "avg_speed": 31.7, "avg_speed_unit": "KPH", "max_speed": 57.9, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": 13.433038, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 1241.4, "calories": 1228, "carbs_used": 223, "carbs_ingested": null, "variability_index": 1.0546448, "decoupling": 2.8556848, "efficiency_factor": 1.5078125, "hrrc": null, "elevation_m": 184.0, "feel": 3, "rpe": 3, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 6616, "z2_time": 128, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 970, "z2_time": 4481, "z3_time": 1164, "z4_time": 102, "z5_time": 15, "z6_time": 10, "z7_time": 2 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 56.2, "total_elevation_m": 325, "elevation_per_km": 5.8, "course_character": "rolling", "max_grade_pct": 24.2, "grade_distribution": { "flat_pct": 70.2, "gentle_pct": 25.1, "moderate_pct": 4.0, "steep_pct": 0.7 }, "start_coords": [ 53.43361, -2.22171 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i137897090", "date": "2026-04-07T17:13:07", "type": "Ride", "name": "Stockport Cycling", "duration_hours": 0.28, "distance_km": 7.11, "tss": 15, "intensity_factor": 70.19264, "avg_power": null, "normalized_power": null, "avg_hr": 107, "max_hr": 145, "avg_cadence": null, "avg_speed": 25.1, "avg_speed_unit": "KPH", "max_speed": 42.4, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 143, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 33.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1005, "z2_time": 15, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.1, "total_elevation_m": 50, "elevation_per_km": 7.0, "course_character": "rolling", "max_grade_pct": 5.3, "grade_distribution": { "flat_pct": 42.6, "gentle_pct": 46.1, "moderate_pct": 11.3, "steep_pct": 0.0 }, "start_coords": [ 53.39961, -2.15421 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i137783842", "date": "2026-04-07T07:53:58", "type": "Ride", "name": "Manchester Cycling", "duration_hours": 0.35, "distance_km": 7.17, "tss": 18, "intensity_factor": 69.93258, "avg_power": null, "normalized_power": null, "avg_hr": 116, "max_hr": 128, "avg_cadence": null, "avg_speed": 20.4, "avg_speed_unit": "KPH", "max_speed": 40.6, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 209, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 68.0, "feel": 3, "rpe": 2, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 1268, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 7.2, "total_elevation_m": 83, "elevation_per_km": 11.5, "course_character": "rolling", "max_grade_pct": 4.8, "grade_distribution": { "flat_pct": 57.8, "gentle_pct": 28.1, "moderate_pct": 14.1, "steep_pct": 0.0 }, "start_coords": [ 53.43358, -2.22176 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i137774520", "date": "2026-04-07T06:25:04", "type": "WeightTraining", "name": "Morning Workout", "duration_hours": 1.06, "distance_km": 0.0, "tss": 7, "intensity_factor": 25.684351, "avg_power": null, "normalized_power": null, "avg_hr": 75, "max_hr": 112, "avg_cadence": null, "avg_speed": null, "avg_speed_unit": "KPH", "max_speed": null, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 186, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": null, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 3822, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false }, { "id": "i137669597", "date": "2026-04-06T17:05:00", "type": "Ride", "name": "Cycling", "duration_hours": 1.61, "distance_km": 41.65, "tss": 141, "intensity_factor": 93.333336, "avg_power": 211, "normalized_power": 266, "avg_hr": 142, "max_hr": 171, "avg_cadence": 78.19512, "avg_speed": 25.8, "avg_speed_unit": "KPH", "max_speed": 56.8, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": 9.24428, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": 1225.9, "calories": 1215, "carbs_used": 324, "carbs_ingested": null, "variability_index": 1.2606635, "decoupling": 9.160783, "efficiency_factor": 1.8732394, "hrrc": null, "elevation_m": 926.0, "feel": 5, "rpe": 8, "effort_response": "neutral", "zone_distribution": { "hr_zones": { "z1_time": 2387, "z2_time": 1511, "z3_time": 698, "z4_time": 1212, "z5_time": 0, "z6_time": 0, "z7_time": 0 }, "power_zones": { "z1_time": 1718, "z2_time": 979, "z3_time": 838, "z4_time": 514, "z5_time": 988, "z6_time": 732, "z7_time": 38 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 40.2, "total_elevation_m": 1059, "elevation_per_km": 26.3, "course_character": "hilly", "max_grade_pct": 58.7, "grade_distribution": { "flat_pct": 11.7, "gentle_pct": 31.0, "moderate_pct": 26.8, "steep_pct": 30.5 }, "start_coords": [ 53.40361, -2.07627 ], "climbs": [ { "position_km": 0.0, "distance_km": 1.4, "elevation_m": 149, "avg_gradient_pct": 10.5, "start_coords": [ 53.40361, -2.07627 ], "end_coords": [ 53.39686, -2.06428 ], "max_gradient_pct": 61.3, "category": "Cat 4" }, { "position_km": 2.4, "distance_km": 5.3, "elevation_m": 196, "avg_gradient_pct": 3.7, "start_coords": [ 53.4007, -2.05356 ], "end_coords": [ 53.39096, -2.00503 ], "max_gradient_pct": 11.2, "category": "Cat 4" }, { "position_km": 11.0, "distance_km": 4.1, "elevation_m": 171, "avg_gradient_pct": 4.2, "start_coords": [ 53.37842, -1.9693 ], "end_coords": [ 53.3619, -1.9295 ], "max_gradient_pct": 11.2, "category": "Cat 4" }, { "position_km": 21.2, "distance_km": 2.8, "elevation_m": 126, "avg_gradient_pct": 4.4, "start_coords": [ 53.32393, -1.91285 ], "end_coords": [ 53.32739, -1.94683 ], "max_gradient_pct": 11.9, "category": "Cat 4" }, { "position_km": 27.8, "distance_km": 2.4, "elevation_m": 155, "avg_gradient_pct": 6.4, "start_coords": [ 53.32911, -1.98351 ], "end_coords": [ 53.33887, -2.00801 ], "max_gradient_pct": 12.4, "category": "Cat 4" } ], "descents": [ { "position_km": 1.4, "distance_km": 1.0, "elevation_m": -62, "avg_gradient_pct": -6.0, "start_coords": [ 53.39686, -2.06428 ], "end_coords": [ 53.4007, -2.05356 ] }, { "position_km": 15.1, "distance_km": 2.9, "elevation_m": -135, "avg_gradient_pct": -4.7, "start_coords": [ 53.3619, -1.9295 ], "end_coords": [ 53.34031, -1.93625 ] }, { "position_km": 24.1, "distance_km": 3.7, "elevation_m": -182, "avg_gradient_pct": -4.9, "start_coords": [ 53.32739, -1.94683 ], "end_coords": [ 53.32911, -1.98351 ] }, { "position_km": 30.2, "distance_km": 10.0, "elevation_m": -210, "avg_gradient_pct": -2.1, "start_coords": [ 53.33887, -2.00801 ], "end_coords": [ 53.40339, -2.07603 ] } ] }, "weather_status": "unavailable" }, { "id": "i137409684", "date": "2026-04-05T12:30:45", "type": "Walk", "name": "Derwent Water", "duration_hours": 3.02, "distance_km": 15.16, "tss": 17, "intensity_factor": 23.17392, "avg_power": null, "normalized_power": null, "avg_hr": 72, "max_hr": 114, "avg_cadence": 54.35981, "avg_speed": 4.8, "avg_speed_unit": "KPH", "max_speed": 6.7, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 934, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 295.0, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 10776, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 15.4, "total_elevation_m": 257, "elevation_per_km": 16.7, "course_character": "rolling", "max_grade_pct": 9.0, "grade_distribution": { "flat_pct": 50.4, "gentle_pct": 36.5, "moderate_pct": 9.1, "steep_pct": 3.9 }, "start_coords": [ 54.60035, -3.13875 ], "climbs": [], "descents": [] }, "weather_status": "unavailable" }, { "id": "i137134297", "date": "2026-04-04T11:17:14", "type": "Hike", "name": "Arthur's Pike", "duration_hours": 2.12, "distance_km": 9.93, "tss": 13, "intensity_factor": 24.20039, "avg_power": null, "normalized_power": null, "avg_hr": 73, "max_hr": 126, "avg_cadence": 52.697704, "avg_speed": 4.5, "avg_speed_unit": "KPH", "max_speed": 6.5, "max_speed_unit": "KPH", "avg_pace": null, "avg_temp": null, "avg_temp_unit": "C", "weather": null, "humidity": null, "wind_speed": null, "wind_speed_unit": "KMH", "work_kj": null, "calories": 352, "carbs_used": null, "carbs_ingested": null, "variability_index": null, "decoupling": null, "efficiency_factor": null, "hrrc": null, "elevation_m": 293.0, "feel": null, "rpe": null, "effort_response": null, "zone_distribution": { "hr_zones": { "z1_time": 7585, "z2_time": 0, "z3_time": 0, "z4_time": 0, "z5_time": 0, "z6_time": 0, "z7_time": 0 } }, "has_intervals": false, "has_dfa": false, "terrain_summary": { "source": "activity_streams", "total_distance_km": 10.1, "total_elevation_m": 283, "elevation_per_km": 28.0, "course_character": "hilly", "max_grade_pct": 15.0, "grade_distribution": { "flat_pct": 21.9, "gentle_pct": 34.2, "moderate_pct": 10.0, "steep_pct": 33.9 }, "start_coords": [ 54.58616, -2.78021 ], "climbs": [ { "position_km": 1.4, "distance_km": 3.6, "elevation_m": 197, "avg_gradient_pct": 5.4, "start_coords": [ 54.5929, -2.79567 ], "end_coords": [ 54.57876, -2.83695 ], "max_gradient_pct": 15.1, "category": "Cat 4" } ], "descents": [ { "position_km": 5.0, "distance_km": 5.0, "elevation_m": -215, "avg_gradient_pct": -4.3, "start_coords": [ 54.57876, -2.83695 ], "end_coords": [ 54.58558, -2.77939 ] } ] }, "weather_status": "unavailable" } ], "wellness_data": [ { "date": "2026-04-25", "weight_kg": 75.3, "resting_hr": 41, "hrv_rmssd": 91.0, "hrv_sdnn": 77.0, "sleep_hours": 7.63, "sleep_formatted": "7h38m", "sleep_quality": 3, "sleep_score": 78.0, "mental_energy": null, "avg_sleeping_hr": null, "vo2max": null, "fatigue": null, "soreness": null, "stress": null, "mood": null, "motivation": null, "injury": null, "hydration": null, "spO2": 98.47298, "blood_glucose": null, "systolic": null, "diastolic": null, "baevsky_si": null, "lactate": null, "respiration": 12.278724, "body_fat_pct": 13.3, "abdomen_cm": null, "steps": 35, "hydration_volume_l": 0.65561473, "kcal_consumed": 4119, "carbohydrates_g": 588.9567, "protein_g": 96.96022, "fat_g": 46.716896, "menstrual_phase": null, "menstrual_phase_predicted": null, "readiness": null }, { "date": "2026-04-26", "weight_kg": 75.95, "resting_hr": 38, "hrv_rmssd": 107.0, "hrv_sdnn": 95.0, "sleep_hours": 8.52, "sleep_formatted": "8h31m", "sleep_quality": 1, "sleep_score": 92.0, "mental_energy": null, "avg_sleeping_hr": 45.0, "vo2max": null, "fatigue": null, "soreness": null, "stress": null, "mood": null, "motivation": null, "injury": null, "hydration": null, "spO2": 98.08572, "blood_glucose": null, "systolic": null, "diastolic": null, "baevsky_si": null, "lactate": null, "respiration": 11.475676, "body_fat_pct": 13.4, "abdomen_cm": null, "steps": 27, "hydration_volume_l": 1.0487385, "kcal_consumed": 4564, "carbohydrates_g": 729.2045, "protein_g": 145.4485, "fat_g": 124.27072, "menstrual_phase": null, "menstrual_phase_predicted": null, "readiness": null }, { "date": "2026-04-27", "weight_kg": 76.15, "resting_hr": 34, "hrv_rmssd": 88.0, "hrv_sdnn": 58.0, "sleep_hours": 8.07, "sleep_formatted": "8h4m", "sleep_quality": 1, "sleep_score": 90.0, "mental_energy": null, "avg_sleeping_hr": 36.0, "vo2max": null, "fatigue": null, "soreness": null, "stress": null, "mood": null, "motivation": null, "injury": null, "hydration": null, "spO2": 98.47298, "blood_glucose": null, "systolic": null, "diastolic": null, "baevsky_si": null, "lactate": null, "respiration": 11.722628, "body_fat_pct": 13.5, "abdomen_cm": null, "steps": 733, "hydration_volume_l": 1.3207641, "kcal_consumed": 3219, "carbohydrates_g": 458.57776, "protein_g": 107.1182, "fat_g": 53.25786, "menstrual_phase": null, "menstrual_phase_predicted": null, "readiness": null }, { "date": "2026-04-28", "weight_kg": 75.2, "resting_hr": 33, "hrv_rmssd": 87.0, "hrv_sdnn": 64.0, "sleep_hours": 7.25, "sleep_formatted": "7h15m", "sleep_quality": 2, "sleep_score": 85.0, "mental_energy": null, "avg_sleeping_hr": 35.0, "vo2max": null, "fatigue": null, "soreness": null, "stress": null, "mood": null, "motivation": null, "injury": null, "hydration": null, "spO2": 98.50588, "blood_glucose": null, "systolic": null, "diastolic": null, "baevsky_si": null, "lactate": null, "respiration": 11.608879, "body_fat_pct": 13.2, "abdomen_cm": null, "steps": 496, "hydration_volume_l": 1.4930863, "kcal_consumed": 4303, "carbohydrates_g": 635.11993, "protein_g": 136.12495, "fat_g": 82.974304, "menstrual_phase": null, "menstrual_phase_predicted": null, "readiness": null }, { "date": "2026-04-29", "weight_kg": 74.9, "resting_hr": 36, "hrv_rmssd": 96.0, "hrv_sdnn": 74.0, "sleep_hours": 8.25, "sleep_formatted": "8h15m", "sleep_quality": 1, "sleep_score": 91.0, "mental_energy": null, "avg_sleeping_hr": null, "vo2max": null, "fatigue": null, "soreness": null, "stress": null, "mood": null, "motivation": null, "injury": null, "hydration": null, "spO2": 98.63507, "blood_glucose": null, "systolic": null, "diastolic": null, "baevsky_si": null, "lactate": null, "respiration": 11.747899, "body_fat_pct": 13.2, "abdomen_cm": null, "steps": 8446, "hydration_volume_l": 0.992675, "kcal_consumed": 4068, "carbohydrates_g": 686.4873, "protein_g": 161.02228, "fat_g": 100.00056, "menstrual_phase": null, "menstrual_phase_predicted": null, "readiness": null }, { "date": "2026-04-30", "weight_kg": 74.85, "resting_hr": 34, "hrv_rmssd": 89.0, "hrv_sdnn": 70.0, "sleep_hours": 8.03, "sleep_formatted": "8h2m", "sleep_quality": 2, "sleep_score": 88.0, "mental_energy": null, "avg_sleeping_hr": null, "vo2max": null, "fatigue": null, "soreness": null, "stress": null, "mood": null, "motivation": null, "injury": null, "hydration": null, "spO2": 98.61855, "blood_glucose": null, "systolic": null, "diastolic": null, "baevsky_si": null, "lactate": null, "respiration": 12.390558, "body_fat_pct": 13.2, "abdomen_cm": null, "steps": 443, "hydration_volume_l": 1.2879384, "kcal_consumed": 4327, "carbohydrates_g": 777.0345, "protein_g": 161.44817, "fat_g": 89.83683, "menstrual_phase": null, "menstrual_phase_predicted": null, "readiness": null }, { "date": "2026-05-01", "weight_kg": 76.2, "resting_hr": 43, "hrv_rmssd": 95.0, "hrv_sdnn": 73.0, "sleep_hours": 8.18, "sleep_formatted": "8h11m", "sleep_quality": 2, "sleep_score": 86.0, "mental_energy": null, "avg_sleeping_hr": null, "vo2max": null, "fatigue": 3, "soreness": 3, "stress": null, "mood": null, "motivation": null, "injury": null, "hydration": null, "spO2": 98.13461, "blood_glucose": null, "systolic": null, "diastolic": null, "baevsky_si": null, "lactate": null, "respiration": 11.739884, "body_fat_pct": 13.5, "abdomen_cm": null, "steps": 4238, "hydration_volume_l": 0.09116382, "kcal_consumed": 653, "carbohydrates_g": 160.32745, "protein_g": 6.57687, "fat_g": 0.56421, "menstrual_phase": null, "menstrual_phase_predicted": null, "readiness": null } ], "planned_workouts": [ { "id": 107400852, "date": "2026-05-01", "name": "Endurance + Tempo Touches", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 96, "duration_hours": 2.15, "duration_formatted": "2h9m", "workout_summary": "10m @172W | 5m @192W | 3\u00d720m @185W / 5m rec | 2\u00d78m @226W / 4m rec | 15m @144W", "has_terrain": false, "description": "Endurance + Tempo Touches (1h50)\n\nWarm Up\n- 10m 60-65%\n- 5m 68-72%\n\nMain Set 3x\n- 20m 65-70%\n- 5m 55-60%\n\nMain Set 2x\n- 8m 80-84%\n- 4m 55-60%\n\nCool Down\n- 15m 50-55%" }, { "id": 103522833, "date": "2026-05-03", "name": "Tour De Manc", "type": "RACE_C", "sport_type": "Ride", "planned_tss": null, "duration_hours": 6.0, "duration_formatted": "6h", "workout_summary": null, "has_terrain": false, "description": "- 180m 80%" }, { "id": 105883455, "date": "2026-05-04", "name": "Recovery", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 33, "duration_hours": 1.0, "duration_formatted": "1h", "workout_summary": null, "has_terrain": false, "description": "- 1h 55-60% power=3s" }, { "id": 105881699, "date": "2026-05-05", "name": "Threshold 3x15", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 107, "duration_hours": 1.58, "duration_formatted": "1h35m", "workout_summary": null, "has_terrain": false, "description": "2026-05-05 \u2013 3x15 Threshold\n\nWarmup\n- 10m 60%\n- 5m 70%\n- 3m 85%\n- 2m 95%\n- 5m 55%\n\nWork\n- 5m 92%\n- 10m 95%\n\n- 5m 55%\n\n- 5m 92%\n- 10m 95%\n\n- 5m 55%\n\n- 5m 92%\n- 10m 95%\n\nCooldown\n- 12m 55%\n- 3m 50%" }, { "id": 105883423, "date": "2026-05-06", "name": "Base", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 52, "duration_hours": 1.33, "duration_formatted": "1h20m", "workout_summary": null, "has_terrain": false, "description": "- 10m 55%\n- 60m 65%\n- 10m 55%" }, { "id": 105881787, "date": "2026-05-07", "name": "Tempo 3x15", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 89, "duration_hours": 1.55, "duration_formatted": "1h33m", "workout_summary": "10m @165W | 5m @192W | 3m @220W | 2m @233W | 5m @151W | 3\u00d715m @233W / 5m rec | 3m @137W", "has_terrain": false, "description": "2026-05-07 \u2013 3x15 Tempo\n\nWarmup\n- 10m 60%\n- 5m 70%\n- 3m 80%\n- 2m 85%\n- 5m 55%\n\nWork\n- 15m 85%\n\n- 5m 55%\n\n- 15m 85%\n\n- 5m 55%\n\n- 15m 85%\n\nCooldown\n- 10m 55%\n- 3m 50%" }, { "id": 105883468, "date": "2026-05-08", "name": "Recovery", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 33, "duration_hours": 1.0, "duration_formatted": "1h", "workout_summary": null, "has_terrain": false, "description": "- 1h 55-60% power=3s" }, { "id": 103519839, "date": "2026-05-09", "name": "Group ride", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 168, "duration_hours": 3.0, "duration_formatted": "3h", "workout_summary": null, "has_terrain": false, "description_preview": "- 3h 70-80% power=3s" }, { "id": 103519852, "date": "2026-05-10", "name": "Base", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 162, "duration_hours": 4.0, "duration_formatted": "4h", "workout_summary": null, "has_terrain": false, "description_preview": "Warm Up\n- 15m ramp 45-60%\nMain Set" }, { "id": 105883457, "date": "2026-05-11", "name": "Recovery", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 33, "duration_hours": 1.0, "duration_formatted": "1h", "workout_summary": null, "has_terrain": false, "description_preview": "- 1h 55-60% power=3s" }, { "id": 105881892, "date": "2026-05-12", "name": "Threshold 30", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 77, "duration_hours": 1.17, "duration_formatted": "1h10m", "workout_summary": null, "has_terrain": false, "description_preview": "2026-05-12 \u2013 30min Continuous Threshold\nWarmup\n- 10m 60%" }, { "id": 105883427, "date": "2026-05-13", "name": "Base", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 52, "duration_hours": 1.33, "duration_formatted": "1h20m", "workout_summary": null, "has_terrain": false, "description_preview": "- 10m 55%\n- 60m 65%\n- 10m 55%" }, { "id": 105881912, "date": "2026-05-14", "name": "Z2", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 53, "duration_hours": 1.33, "duration_formatted": "1h20m", "workout_summary": null, "has_terrain": false, "description_preview": "- 10m 55%\n- 65m 65%\n- 5m 50%" }, { "id": 105883469, "date": "2026-05-15", "name": "Sub-threshold 40", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 85, "duration_hours": 1.33, "duration_formatted": "1h20m", "workout_summary": null, "has_terrain": false, "description_preview": "2026-05-14 \u2013 40min Sub-threshold\nWarmup\n- 10m 60%" }, { "id": 103519840, "date": "2026-05-16", "name": "Group ride", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 168, "duration_hours": 3.0, "duration_formatted": "3h", "workout_summary": null, "has_terrain": false, "description_preview": "- 3h 70-80% power=3s" }, { "id": 103519853, "date": "2026-05-17", "name": "Base", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 162, "duration_hours": 4.0, "duration_formatted": "4h", "workout_summary": null, "has_terrain": false, "description_preview": "Warm Up\n- 15m ramp 45-60%\nMain Set" }, { "id": 105883459, "date": "2026-05-18", "name": "Recovery", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 33, "duration_hours": 1.0, "duration_formatted": "1h", "workout_summary": null, "has_terrain": false, "description_preview": "- 1h 55-60% power=3s" }, { "id": 105881958, "date": "2026-05-19", "name": "Threshold 2x12", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 71, "duration_hours": 1.15, "duration_formatted": "1h9m", "workout_summary": null, "has_terrain": false, "description_preview": "2026-05-19 \u2013 2x12 Threshold\nWarmup\n- 10m 60%" }, { "id": 105883429, "date": "2026-05-20", "name": "Base", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 52, "duration_hours": 1.33, "duration_formatted": "1h20m", "workout_summary": null, "has_terrain": false, "description_preview": "- 10m 55%\n- 60m 65%\n- 10m 55%" }, { "id": 105882010, "date": "2026-05-21", "name": "Z2", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 53, "duration_hours": 1.33, "duration_formatted": "1h20m", "workout_summary": null, "has_terrain": false, "description_preview": "2026-05-21 \u2013 Z2 Aerobic\nWarmup\n- 10m 60%" }, { "id": 105883470, "date": "2026-05-22", "name": "Recovery", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 33, "duration_hours": 1.0, "duration_formatted": "1h", "workout_summary": null, "has_terrain": false, "description_preview": "- 1h 55-60% power=3s" }, { "id": 103521460, "date": "2026-05-23", "name": "Group ride", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 168, "duration_hours": 3.0, "duration_formatted": "3h", "workout_summary": null, "has_terrain": false, "description_preview": "- 3h 70-80% power=3s" }, { "id": 103521785, "date": "2026-05-24", "name": "Base", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 162, "duration_hours": 4.0, "duration_formatted": "4h", "workout_summary": null, "has_terrain": false, "description_preview": "Warm Up\n- 15m ramp 45-60%\nMain Set" }, { "id": 105883460, "date": "2026-05-25", "name": "Recovery", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 33, "duration_hours": 1.0, "duration_formatted": "1h", "workout_summary": null, "has_terrain": false, "description_preview": "- 1h 55-60% power=3s" }, { "id": 105882058, "date": "2026-05-26", "name": "Threshold 2x25", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 112, "duration_hours": 1.6, "duration_formatted": "1h36m", "workout_summary": null, "has_terrain": false, "description_preview": "2026-05-26 \u2013 2x25 Threshold\nWarmup\n- 10m 60%" }, { "id": 105883433, "date": "2026-05-27", "name": "Base", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 52, "duration_hours": 1.33, "duration_formatted": "1h20m", "workout_summary": null, "has_terrain": false, "description_preview": "- 10m 55%\n- 60m 65%\n- 10m 55%" }, { "id": 105882067, "date": "2026-05-28", "name": "Tempo 2x20", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 79, "duration_hours": 1.38, "duration_formatted": "1h23m", "workout_summary": null, "has_terrain": false, "description_preview": "2026-05-28 \u2013 2x20 Tempo\nWarmup\n- 10m 60%" }, { "id": 105883472, "date": "2026-05-29", "name": "Recovery", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 33, "duration_hours": 1.0, "duration_formatted": "1h", "workout_summary": null, "has_terrain": false, "description_preview": "- 1h 55-60% power=3s" }, { "id": 105883480, "date": "2026-05-30", "name": "Group ride", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 168, "duration_hours": 3.0, "duration_formatted": "3h", "workout_summary": null, "has_terrain": false, "description_preview": "- 3h 70-80% power=3s" }, { "id": 105883482, "date": "2026-05-31", "name": "Base", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 162, "duration_hours": 4.0, "duration_formatted": "4h", "workout_summary": null, "has_terrain": false, "description_preview": "Warm Up\n- 15m ramp 45-60%\nMain Set" }, { "id": 106080533, "date": "2026-06-01", "name": "Recovery", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 33, "duration_hours": 1.0, "duration_formatted": "1h", "workout_summary": null, "has_terrain": false, "description_preview": "- 1h 55-60% power=3s" }, { "id": 106078641, "date": "2026-06-02", "name": "Threshold 3x12", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 93, "duration_hours": 1.43, "duration_formatted": "1h26m", "workout_summary": null, "has_terrain": false, "description_preview": "2026-06-02 \u2013 3x12 Threshold\nWarmup\n- 10m 60%" }, { "id": 106080538, "date": "2026-06-03", "name": "Base", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 52, "duration_hours": 1.33, "duration_formatted": "1h20m", "workout_summary": null, "has_terrain": false, "description_preview": "- 10m 55%\n- 60m 65%\n- 10m 55%" }, { "id": 106080523, "date": "2026-06-04", "name": "Sub-threshold 30", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 70, "duration_hours": 1.13, "duration_formatted": "1h8m", "workout_summary": null, "has_terrain": false, "description_preview": "2026-06-04 \u2013 30min Sub-threshold\nWarmup\n- 10m 60%" }, { "id": 106080561, "date": "2026-06-05", "name": "Recovery", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 33, "duration_hours": 1.0, "duration_formatted": "1h", "workout_summary": null, "has_terrain": false, "description_preview": "- 1h 55-60% power=3s" }, { "id": 106080565, "date": "2026-06-06", "name": "Group ride", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 168, "duration_hours": 3.0, "duration_formatted": "3h", "workout_summary": null, "has_terrain": false, "description_preview": "- 3h 70-80% power=3s" }, { "id": 106080569, "date": "2026-06-07", "name": "Base", "type": "WORKOUT", "sport_type": "Ride", "planned_tss": 162, "duration_hours": 4.0, "duration_formatted": "4h", "workout_summary": null, "has_terrain": false, "description_preview": "Warm Up\n- 15m ramp 45-60%\nMain Set" } ], "workout_summary_stats": { "attempted": 36, "success": 2, "patternA": 1, "patternB": 1, "bail_no_workout_doc": 1, "bail_no_match": 34 }, "weekly_summary": { "total_training_hours": 16.06, "total_training_formatted": "16h3m", "total_tss": 810, "activities_count": 13, "avg_hrv": 93.3, "avg_resting_hr": 37.0 }, "race_calendar": { "next_race": { "name": "Tour De Manc", "date": "2026-05-03", "category": "RACE_C", "type": "Ride", "days_until": 2, "moving_time_seconds": 21600, "distance_meters": 165000.0, "has_terrain": false }, "all_races": [ { "name": "Tour De Manc", "date": "2026-05-03", "category": "RACE_C", "type": "Ride", "days_until": 2, "moving_time_seconds": 21600, "distance_meters": 165000.0, "has_terrain": false } ], "taper_alert": { "active": false }, "race_week": { "active": false } } }