diff --git a/src/libs/Terra/Generated/Terra.IWorkoutsClient.WorkoutsCreateWorkout.g.cs b/src/libs/Terra/Generated/Terra.IWorkoutsClient.WorkoutsCreateWorkout.g.cs
index cb26869..eabd429 100644
--- a/src/libs/Terra/Generated/Terra.IWorkoutsClient.WorkoutsCreateWorkout.g.cs
+++ b/src/libs/Terra/Generated/Terra.IWorkoutsClient.WorkoutsCreateWorkout.g.cs
@@ -55,10 +55,10 @@ public partial interface IWorkoutsClient
/// Estimated calories burned
///
///
- /// Planned training stress score, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned training stress score (0-9999), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
///
- /// Planned intensity factor, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned intensity factor (0-5), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
///
/// Terra identifier of the stored template. Set by Terra in responses; ignored on create.
diff --git a/src/libs/Terra/Generated/Terra.Models.PlannedWorkout.g.cs b/src/libs/Terra/Generated/Terra.Models.PlannedWorkout.g.cs
index bc86ee7..64eac5b 100644
--- a/src/libs/Terra/Generated/Terra.Models.PlannedWorkout.g.cs
+++ b/src/libs/Terra/Generated/Terra.Models.PlannedWorkout.g.cs
@@ -23,10 +23,11 @@ public sealed partial class PlannedWorkout
public string? WorkoutId { get; set; }
///
- /// Scheduled date (YYYY-MM-DD). Null for provider entries that are not attached to a date, such as a routine library.
+ /// Scheduled date (YYYY-MM-DD)
///
[global::System.Text.Json.Serialization.JsonPropertyName("planned_date")]
- public string? PlannedDate { get; set; }
+ [global::System.Text.Json.Serialization.JsonRequired]
+ public required string PlannedDate { get; set; }
///
/// Identifier of the workout on the provider's side, in the form the provider's own API uses for it
@@ -95,6 +96,9 @@ public sealed partial class PlannedWorkout
///
/// Initializes a new instance of the class.
///
+ ///
+ /// Scheduled date (YYYY-MM-DD)
+ ///
///
/// Adjustments made while converting between Terra's template and the provider's format. On Terra-created workouts these come from the push to the provider; on external workouts, from reading the provider's workout into a template. Empty when the conversion was exact.
///
@@ -107,9 +111,6 @@ public sealed partial class PlannedWorkout
///
/// Identifier of the workout template this was planned from. Null for workouts created on the provider side; a non-null value means the workout is managed through Terra and can be rescheduled or deleted.
///
- ///
- /// Scheduled date (YYYY-MM-DD). Null for provider entries that are not attached to a date, such as a routine library.
- ///
///
/// Identifier of the workout on the provider's side, in the form the provider's own API uses for it
///
@@ -127,11 +128,11 @@ public sealed partial class PlannedWorkout
[global::System.Diagnostics.CodeAnalysis.SetsRequiredMembers]
#endif
public PlannedWorkout(
+ string plannedDate,
global::System.Collections.Generic.IList warnings,
bool isExternal,
string? plannedWorkoutId,
string? workoutId,
- string? plannedDate,
string? providerWorkoutId,
string? createdAt,
string? lastUpdatedAt,
@@ -140,7 +141,7 @@ public PlannedWorkout(
{
this.PlannedWorkoutId = plannedWorkoutId;
this.WorkoutId = workoutId;
- this.PlannedDate = plannedDate;
+ this.PlannedDate = plannedDate ?? throw new global::System.ArgumentNullException(nameof(plannedDate));
this.ProviderWorkoutId = providerWorkoutId;
this.Warnings = warnings ?? throw new global::System.ArgumentNullException(nameof(warnings));
this.CreatedAt = createdAt;
diff --git a/src/libs/Terra/Generated/Terra.Models.PlannedWorkoutBody.g.cs b/src/libs/Terra/Generated/Terra.Models.PlannedWorkoutBody.g.cs
index 853d023..d2f2643 100644
--- a/src/libs/Terra/Generated/Terra.Models.PlannedWorkoutBody.g.cs
+++ b/src/libs/Terra/Generated/Terra.Models.PlannedWorkoutBody.g.cs
@@ -59,13 +59,13 @@ public sealed partial class PlannedWorkoutBody
public double? EstimatedCalories { get; set; }
///
- /// Planned training stress score, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned training stress score (0-9999), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
[global::System.Text.Json.Serialization.JsonPropertyName("estimated_tss")]
public double? EstimatedTss { get; set; }
///
- /// Planned intensity factor, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned intensity factor (0-5), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
[global::System.Text.Json.Serialization.JsonPropertyName("estimated_intensity_factor")]
public double? EstimatedIntensityFactor { get; set; }
@@ -117,10 +117,10 @@ public sealed partial class PlannedWorkoutBody
/// Estimated calories burned
///
///
- /// Planned training stress score, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned training stress score (0-9999), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
///
- /// Planned intensity factor, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned intensity factor (0-5), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
///
/// Terra identifier of the stored template. Set by Terra in responses; ignored on create.
diff --git a/src/libs/Terra/Generated/Terra.Models.WorkoutTemplate.g.cs b/src/libs/Terra/Generated/Terra.Models.WorkoutTemplate.g.cs
index bd65c5b..965802d 100644
--- a/src/libs/Terra/Generated/Terra.Models.WorkoutTemplate.g.cs
+++ b/src/libs/Terra/Generated/Terra.Models.WorkoutTemplate.g.cs
@@ -59,13 +59,13 @@ public sealed partial class WorkoutTemplate
public double? EstimatedCalories { get; set; }
///
- /// Planned training stress score, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned training stress score (0-9999), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
[global::System.Text.Json.Serialization.JsonPropertyName("estimated_tss")]
public double? EstimatedTss { get; set; }
///
- /// Planned intensity factor, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned intensity factor (0-5), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
[global::System.Text.Json.Serialization.JsonPropertyName("estimated_intensity_factor")]
public double? EstimatedIntensityFactor { get; set; }
@@ -117,10 +117,10 @@ public sealed partial class WorkoutTemplate
/// Estimated calories burned
///
///
- /// Planned training stress score, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned training stress score (0-9999), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
///
- /// Planned intensity factor, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned intensity factor (0-5), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
///
/// Terra identifier of the stored template. Set by Terra in responses; ignored on create.
diff --git a/src/libs/Terra/Generated/Terra.WorkoutsClient.WorkoutsCreateWorkout.g.cs b/src/libs/Terra/Generated/Terra.WorkoutsClient.WorkoutsCreateWorkout.g.cs
index be98911..ed08c98 100644
--- a/src/libs/Terra/Generated/Terra.WorkoutsClient.WorkoutsCreateWorkout.g.cs
+++ b/src/libs/Terra/Generated/Terra.WorkoutsClient.WorkoutsCreateWorkout.g.cs
@@ -532,10 +532,10 @@ partial void ProcessWorkoutsCreateWorkoutResponseContent(
/// Estimated calories burned
///
///
- /// Planned training stress score, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned training stress score (0-9999), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
///
- /// Planned intensity factor, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.
+ /// Planned intensity factor (0-5), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure instead.
///
///
/// Terra identifier of the stored template. Set by Terra in responses; ignored on create.
diff --git a/src/libs/Terra/openapi.yaml b/src/libs/Terra/openapi.yaml
index 8216c31..d90b550 100644
--- a/src/libs/Terra/openapi.yaml
+++ b/src/libs/Terra/openapi.yaml
@@ -2,7 +2,7 @@ openapi: 3.0.3
info:
description: The Terra API (v2 surface, served at access.tryterra.co/api/v2).
title: TerraAPI
- version: 2026.09.04.2
+ version: 2026.09.08
license:
name: Apache-2.0
url: https://github.com/tryterra/openapi/blob/master/LICENSE
@@ -2222,12 +2222,14 @@ components:
anyOf:
- type: number
- type: 'null'
- description: 'Planned training stress score, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.'
+ description: Planned training stress score (0-9999), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from
+ the structure instead.
estimated_intensity_factor:
anyOf:
- type: number
- type: 'null'
- description: 'Planned intensity factor, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.'
+ description: Planned intensity factor (0-5), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure
+ instead.
workout_id:
anyOf:
- type: string
@@ -2331,12 +2333,14 @@ components:
anyOf:
- type: number
- type: 'null'
- description: 'Planned training stress score, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.'
+ description: Planned training stress score (0-9999), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from
+ the structure instead.
estimated_intensity_factor:
anyOf:
- type: number
- type: 'null'
- description: 'Planned intensity factor, where the provider or author supplies one. Read-only today: accepted on create but not forwarded to providers.'
+ description: Planned intensity factor (0-5), where the provider or author supplies one. Forwarded to TrainingPeaks, which ignores it when any step target is not RPE and derives it from the structure
+ instead.
workout_id:
anyOf:
- type: string
@@ -9352,10 +9356,8 @@ components:
description: Identifier of the workout template this was planned from. Null for workouts created on the provider side; a non-null value means the workout is managed through Terra and can be rescheduled
or deleted.
planned_date:
- anyOf:
- - type: string
- - type: 'null'
- description: Scheduled date (YYYY-MM-DD). Null for provider entries that are not attached to a date, such as a routine library.
+ type: string
+ description: Scheduled date (YYYY-MM-DD)
provider_workout_id:
anyOf:
- type: string