A recorded physical activity such as a bike ride.
tid
Timestamp-based ID
Properties
avgCadence
integer
Optional
Average cadence in revolutions per minute.
minimum: 0avgHeartRate
integer
Optional
Average heart rate in beats per minute.
minimum: 0avgPower
integer
Optional
Average power output in watts.
minimum: 0avgSpeed
string
Optional
Average speed in meters per second. String-encoded decimal number.
maxLength: 64 bytescalories
integer
Optional
Estimated calories burned.
minimum: 0createdAt
string
datetime
Required
Timestamp of when this record was created.
description
string
Optional
User-provided description of the activity.
maxLength: 3000 bytesdevice
string
Optional
Name of the device that recorded the activity.
maxLength: 300 bytesdistance
string
Required
Total distance in meters. String-encoded decimal number, e.g. '51214.6'.
maxLength: 64 byteselapsedTime
integer
Required
Total elapsed time in seconds, including stopped time.
minimum: 0elevationGain
string
Optional
Total elevation gain in meters. String-encoded decimal number.
maxLength: 64 byteselevationLoss
string
Optional
Total elevation loss in meters. String-encoded decimal number.
maxLength: 64 bytesimages
array
of
ref
#image
Optional
Photos from the activity.
maxLength: 8 itemsmaxCadence
integer
Optional
Maximum cadence in revolutions per minute.
minimum: 0maxHeartRate
integer
Optional
Maximum heart rate in beats per minute.
minimum: 0maxPower
integer
Optional
Maximum power output in watts.
minimum: 0maxSpeed
string
Optional
Maximum speed in meters per second. String-encoded decimal number.
maxLength: 64 bytesmovingTime
integer
Required
Time spent in motion in seconds.
minimum: 0perceivedExertion
integer
Optional
Rate of perceived exertion (RPE), typically 1-10.
minimum: 0polyline
string
Optional
Encoded polyline string representing a simplified, privacy-trimmed route for map display. Uses Google's encoded polyline algorithm format. Ingestion services should simplify polylines to fit within the 20,000 byte limit. This limit may be revisited if it proves insufficient.
maxLength: 20000 bytessource
string
Optional
Where the activity data was imported from.
maxLength: 128 bytesgarmin, strava, wahoo, manual, fit-file, gpx-filesourceId
string
Optional
Identifier for this activity in the source system, e.g. a Strava activity ID.
maxLength: 256 bytessportType
string
Required
The type of activity.
maxLength: 128 bytesridestartedAt
string
datetime
Required
When the activity started.
title
string
Optional
User-provided name for the activity.
maxLength: 300 bytestotalWork
integer
Optional
Total mechanical work in kilojoules.
minimum: 0weather
ref
#weather
Optional
Weather conditions during the activity.
weightedAvgPower
integer
Optional
Normalized/weighted average power in watts.
minimum: 0View raw schema
{
"description": "A recorded physical activity such as a bike ride.",
"key": "tid",
"record": {
"properties": {
"avgCadence": {
"description": "Average cadence in revolutions per minute.",
"minimum": 0,
"type": "integer"
},
"avgHeartRate": {
"description": "Average heart rate in beats per minute.",
"minimum": 0,
"type": "integer"
},
"avgPower": {
"description": "Average power output in watts.",
"minimum": 0,
"type": "integer"
},
"avgSpeed": {
"description": "Average speed in meters per second. String-encoded decimal number.",
"maxLength": 64,
"type": "string"
},
"calories": {
"description": "Estimated calories burned.",
"minimum": 0,
"type": "integer"
},
"createdAt": {
"description": "Timestamp of when this record was created.",
"format": "datetime",
"type": "string"
},
"description": {
"description": "User-provided description of the activity.",
"maxLength": 3000,
"type": "string"
},
"device": {
"description": "Name of the device that recorded the activity.",
"maxLength": 300,
"type": "string"
},
"distance": {
"description": "Total distance in meters. String-encoded decimal number, e.g. '51214.6'.",
"maxLength": 64,
"type": "string"
},
"elapsedTime": {
"description": "Total elapsed time in seconds, including stopped time.",
"minimum": 0,
"type": "integer"
},
"elevationGain": {
"description": "Total elevation gain in meters. String-encoded decimal number.",
"maxLength": 64,
"type": "string"
},
"elevationLoss": {
"description": "Total elevation loss in meters. String-encoded decimal number.",
"maxLength": 64,
"type": "string"
},
"images": {
"description": "Photos from the activity.",
"items": {
"ref": "#image",
"type": "ref"
},
"maxLength": 8,
"type": "array"
},
"maxCadence": {
"description": "Maximum cadence in revolutions per minute.",
"minimum": 0,
"type": "integer"
},
"maxHeartRate": {
"description": "Maximum heart rate in beats per minute.",
"minimum": 0,
"type": "integer"
},
"maxPower": {
"description": "Maximum power output in watts.",
"minimum": 0,
"type": "integer"
},
"maxSpeed": {
"description": "Maximum speed in meters per second. String-encoded decimal number.",
"maxLength": 64,
"type": "string"
},
"movingTime": {
"description": "Time spent in motion in seconds.",
"minimum": 0,
"type": "integer"
},
"perceivedExertion": {
"description": "Rate of perceived exertion (RPE), typically 1-10.",
"minimum": 0,
"type": "integer"
},
"polyline": {
"description": "Encoded polyline string representing a simplified, privacy-trimmed route for map display. Uses Google's encoded polyline algorithm format. Ingestion services should simplify polylines to fit within the 20,000 byte limit. This limit may be revisited if it proves insufficient.",
"maxLength": 20000,
"type": "string"
},
"source": {
"description": "Where the activity data was imported from.",
"knownValues": [
"garmin",
"strava",
"wahoo",
"manual",
"fit-file",
"gpx-file"
],
"maxLength": 128,
"type": "string"
},
"sourceId": {
"description": "Identifier for this activity in the source system, e.g. a Strava activity ID.",
"maxLength": 256,
"type": "string"
},
"sportType": {
"description": "The type of activity.",
"knownValues": [
"ride"
],
"maxLength": 128,
"type": "string"
},
"startedAt": {
"description": "When the activity started.",
"format": "datetime",
"type": "string"
},
"title": {
"description": "User-provided name for the activity.",
"maxLength": 300,
"type": "string"
},
"totalWork": {
"description": "Total mechanical work in kilojoules.",
"minimum": 0,
"type": "integer"
},
"weather": {
"description": "Weather conditions during the activity.",
"ref": "#weather",
"type": "ref"
},
"weightedAvgPower": {
"description": "Normalized/weighted average power in watts.",
"minimum": 0,
"type": "integer"
}
},
"required": [
"sportType",
"startedAt",
"elapsedTime",
"movingTime",
"distance",
"createdAt"
],
"type": "object"
},
"type": "record"
}