Workout ID Changes - TrainingPeaks/PartnersAPI GitHub Wiki

Workout ID changes from Int32 to Int64

Completed, 4/2022 to 5/2023

Old v1 workout endpoints have been removed and deprecated

  • WorkoutId, and a few related identifiers, will change from from 32 bit integers to 64 bit integers
  • Existing workout IDs will remain as 32 bit integers, and new workout IDs will begin to exceed 32 bits sometime after 2022-11-15

The following identifiers are changing from 32 bit to 64 bit integers

  • Workout.Id
  • WorkoutMeanMaxes.WorkoutId
  • WorkoutDetailsData.WorkoutId
  • WorkoutTimeInZones.WorkoutId
  • TimeInTrainingZones.Id
  • AthleteEvent.WorkoutIds
  • FileStatus.WorkoutIds

The following endpoint URLs are changing

  • Increment API version number
  • Change {workoutId:int} parameters to {workoutId:long}
  • New endpoints return models with the identifier changes mentioned above
Method Old Path New Path
GET /v1/workouts/changes/{sinceDate:datetime} /v2/workouts/changes/{sinceDate:datetime}
GET /v1/workouts/changes/{athleteId:int}/{sinceDate:datetime} /v2/workouts/changes/{athleteId:int}/{sinceDate:datetime}
GET /v1/workouts/changed /v2/workouts/changed
GET /v1/workouts/{athleteId:int}/changed /v2/workouts/{athleteId:int}/changed
GET /v1/workouts/id/{workoutId:int} /v2/workouts/id/{workoutId:long}
GET /v1/workouts/{athleteId:int}/id/{workoutId:int} /v2/workouts/{athleteId:int}/id/{workoutId:long}
GET /v1/workouts/id/{workoutId:int}/meanmaxes /v2/workouts/id/{workoutId:long}/meanmaxes
GET /v1/workouts/{athleteId:int}/id/{workoutId:int}/meanmaxes /v2/workouts/{athleteId:int}/id/{workoutId:long}/meanmaxes
GET /v1/workouts/id/{workoutId:int}/timeinzones /v2/workouts/id/{workoutId:long}/timeinzones
GET /v1/workouts/{athleteId:int}/id/{workoutId:int}/timeinzones /v2/workouts/{athleteId:int}/id/{workoutId:long}/timeinzones
GET /v1/workouts/id/{workoutId:int}/details /v2/workouts/id/{workoutId:long}/details
GET /v1/workouts/{athleteId:int}/id/{workoutId:int}/details /v2/workouts/{athleteId:int}/id/{workoutId:long}/details
GET /v1/workouts/{startDate:datetime}/{endDate:datetime} /v2/workouts/{startDate:datetime}/{endDate:datetime}
GET /v1/workouts/{athleteId:int}/{startDate:datetime}/{endDate:datetime} /v2/workouts/{athleteId:int}/{startDate:datetime}/{endDate:datetime}
DELETE /v1/workouts/id/{workoutId:int} /v2/workouts/id/{workoutId:long}
DELETE /v1/workouts/{athleteId:int}/id/{workoutId:int} /v2/workouts/{athleteId:int}/id/{workoutId:long}
POST /v1/workouts/plan /v2/workouts/plan
PUT /v1/workouts/plan/{workoutId:int} /v2/workouts/plan/{workoutId:long}
GET /v1/workouts/wod/{date:datetime} /v2/workouts/wod/{date:datetime}
GET /v1/workouts/wod/file/{workoutId:int} /v2/workouts/wod/file/{workoutId:long}
POST /v1/file /v2/file/synchronous
POST /v2/file /v3/file
GET /v2/status/{fileTrackingId} /v3/status/{fileTrackingId}
GET /v1/events/next /v2/events/next
GET /v1/events/{date:datetime} /v2/events/{date:datetime}
POST /v1/events /v2/events