Activity data model

ClubActivity (getClubActivitiesById, NO id) and the full DetailedActivity (getActivityById).

View field support, webhooks, and list parameters for each integration on the Supported Integrations page.

FieldTypeRequiredDescription
idstringNoUnique identifier for this activity (not provided by ClubActivity)
created_atstring (date-time)NoThe date that this activity was created (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
updated_atstring (date-time)NoThe last date that this activity was updated (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
group_idstringNoThe group this activity was listed under (reference to HrisGroup)
namestringNoThe name of the activity
descriptionstringNoThe description of the activity (DetailedActivity only)
typeenumNoThe activity type Values: RUNNING, CYCLING, SWIMMING, TRIATHLON, WALKING, HIKING, OTHER
athlete_idstringNoThe id of the athlete who performed the activity (DetailedActivity only)
athlete_namestringNoThe full name of the athlete
distancenumberNoThe activity's distance, in meters
moving_timenumberNoThe activity's moving time, in seconds
elapsed_timenumberNoThe activity's elapsed time, in seconds
total_elevation_gainnumberNoThe activity's total elevation gain, in meters
elevation_highnumberNoThe activity's highest elevation, in meters (DetailedActivity only)
elevation_lownumberNoThe activity's lowest elevation, in meters (DetailedActivity only)
start_atstring (date-time)NoWhen the activity started (UTC) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
timezonestringNoThe timezone of the activity
achievement_countnumberNoThe number of achievements gained during this activity
kudos_countnumberNoThe number of kudos given for this activity
comment_countnumberNoThe number of comments for this activity
athlete_countnumberNoThe number of athletes that took part in this activity
photo_countnumberNoThe number of Instagram photos for this activity
average_speednumberNoThe activity's average speed, in meters per second
max_speednumberNoThe activity's max speed, in meters per second
average_cadencenumberNoThe activity's average cadence
average_heartratenumberNoThe activity's average heart rate, in beats per minute
max_heartratenumberNoThe activity's max heart rate, in beats per minute
average_wattsnumberNoThe activity's average power output, in watts
max_wattsnumberNoThe activity's max power output, in watts
weighted_average_wattsnumberNoThe activity's weighted average power output, in watts
kilojoulesnumberNoThe total work done, in kilojoules
caloriesnumberNoThe number of kilocalories consumed during this activity
has_heartratebooleanNoWhether the activity has heart rate data
is_trainerbooleanNoWhether this activity was recorded on a training machine
is_commutebooleanNoWhether this activity is a commute
is_manualbooleanNoWhether this activity was created manually
is_privatebooleanNoWhether this activity is private
map_polylinestringNoThe detailed polyline of the activity's map
map_summary_polylinestringNoThe summary polyline of the activity's map
workout_typenumberNoThe activity's workout type
suffer_scorenumberNoThe activity's relative effort score
pr_countnumberNoThe number of personal records set during this activity

TypeScript

TypeScript
export type ClubsActivity = {
	id?: string; // Unique identifier for this activity (not provided by ClubActivity)
	created_at?: string-time; // The date that this activity was created (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	updated_at?: string-time; // The last date that this activity was updated (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	group_id?: string; // The group this activity was listed under (reference to HrisGroup)
	name?: string; // The name of the activity
	description?: string; // The description of the activity (DetailedActivity only)
	type?: 'RUNNING' | 'CYCLING' | 'SWIMMING' | 'TRIATHLON' | 'WALKING' | 'HIKING' | 'OTHER'; // The activity type
	athlete_id?: string; // The id of the athlete who performed the activity (DetailedActivity only)
	athlete_name?: string; // The full name of the athlete
	distance?: number; // The activity's distance, in meters
	moving_time?: number; // The activity's moving time, in seconds
	elapsed_time?: number; // The activity's elapsed time, in seconds
	total_elevation_gain?: number; // The activity's total elevation gain, in meters
	elevation_high?: number; // The activity's highest elevation, in meters (DetailedActivity only)
	elevation_low?: number; // The activity's lowest elevation, in meters (DetailedActivity only)
	start_at?: string-time; // When the activity started (UTC) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	timezone?: string; // The timezone of the activity
	achievement_count?: number; // The number of achievements gained during this activity
	kudos_count?: number; // The number of kudos given for this activity
	comment_count?: number; // The number of comments for this activity
	athlete_count?: number; // The number of athletes that took part in this activity
	photo_count?: number; // The number of Instagram photos for this activity
	average_speed?: number; // The activity's average speed, in meters per second
	max_speed?: number; // The activity's max speed, in meters per second
	average_cadence?: number; // The activity's average cadence
	average_heartrate?: number; // The activity's average heart rate, in beats per minute
	max_heartrate?: number; // The activity's max heart rate, in beats per minute
	average_watts?: number; // The activity's average power output, in watts
	max_watts?: number; // The activity's max power output, in watts
	weighted_average_watts?: number; // The activity's weighted average power output, in watts
	kilojoules?: number; // The total work done, in kilojoules
	calories?: number; // The number of kilocalories consumed during this activity
	has_heartrate?: boolean; // Whether the activity has heart rate data
	is_trainer?: boolean; // Whether this activity was recorded on a training machine
	is_commute?: boolean; // Whether this activity is a commute
	is_manual?: boolean; // Whether this activity was created manually
	is_private?: boolean; // Whether this activity is private
	map_polyline?: string; // The detailed polyline of the activity's map
	map_summary_polyline?: string; // The summary polyline of the activity's map
	workout_type?: number; // The activity's workout type
	suffer_score?: number; // The activity's relative effort score
	pr_count?: number; // The number of personal records set during this activity
	raw?: any; // The raw data returned by the integration for this activity
} 

Zod

Zod
import { z } from 'zod';

export const ZodClubsActivity = z.object({
	id: z.string().optional().describe("Unique identifier for this activity (not provided by ClubActivity)"),
	created_at: z.string-time().optional().describe("The date that this activity was created (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	updated_at: z.string-time().optional().describe("The last date that this activity was updated (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	group_id: z.string().optional().describe("The group this activity was listed under (reference to HrisGroup)"),
	name: z.string().optional().describe("The name of the activity"),
	description: z.string().optional().describe("The description of the activity (DetailedActivity only)"),
	type: z.enum("RUNNING", "CYCLING", "SWIMMING", "TRIATHLON", "WALKING", "HIKING", "OTHER").optional().describe("The activity type"),
	athlete_id: z.string().optional().describe("The id of the athlete who performed the activity (DetailedActivity only)"),
	athlete_name: z.string().optional().describe("The full name of the athlete"),
	distance: z.number().optional().describe("The activity's distance, in meters"),
	moving_time: z.number().optional().describe("The activity's moving time, in seconds"),
	elapsed_time: z.number().optional().describe("The activity's elapsed time, in seconds"),
	total_elevation_gain: z.number().optional().describe("The activity's total elevation gain, in meters"),
	elevation_high: z.number().optional().describe("The activity's highest elevation, in meters (DetailedActivity only)"),
	elevation_low: z.number().optional().describe("The activity's lowest elevation, in meters (DetailedActivity only)"),
	start_at: z.string-time().optional().describe("When the activity started (UTC) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	timezone: z.string().optional().describe("The timezone of the activity"),
	achievement_count: z.number().optional().describe("The number of achievements gained during this activity"),
	kudos_count: z.number().optional().describe("The number of kudos given for this activity"),
	comment_count: z.number().optional().describe("The number of comments for this activity"),
	athlete_count: z.number().optional().describe("The number of athletes that took part in this activity"),
	photo_count: z.number().optional().describe("The number of Instagram photos for this activity"),
	average_speed: z.number().optional().describe("The activity's average speed, in meters per second"),
	max_speed: z.number().optional().describe("The activity's max speed, in meters per second"),
	average_cadence: z.number().optional().describe("The activity's average cadence"),
	average_heartrate: z.number().optional().describe("The activity's average heart rate, in beats per minute"),
	max_heartrate: z.number().optional().describe("The activity's max heart rate, in beats per minute"),
	average_watts: z.number().optional().describe("The activity's average power output, in watts"),
	max_watts: z.number().optional().describe("The activity's max power output, in watts"),
	weighted_average_watts: z.number().optional().describe("The activity's weighted average power output, in watts"),
	kilojoules: z.number().optional().describe("The total work done, in kilojoules"),
	calories: z.number().optional().describe("The number of kilocalories consumed during this activity"),
	has_heartrate: z.boolean().optional().describe("Whether the activity has heart rate data"),
	is_trainer: z.boolean().optional().describe("Whether this activity was recorded on a training machine"),
	is_commute: z.boolean().optional().describe("Whether this activity is a commute"),
	is_manual: z.boolean().optional().describe("Whether this activity was created manually"),
	is_private: z.boolean().optional().describe("Whether this activity is private"),
	map_polyline: z.string().optional().describe("The detailed polyline of the activity's map"),
	map_summary_polyline: z.string().optional().describe("The summary polyline of the activity's map"),
	workout_type: z.number().optional().describe("The activity's workout type"),
	suffer_score: z.number().optional().describe("The activity's relative effort score"),
	pr_count: z.number().optional().describe("The number of personal records set during this activity"),

});

Python

Python
import dataclasses

@dataclasses.dataclass
class ClubsActivityType(str, Enum):
	RUNNING = 'RUNNING'
	CYCLING = 'CYCLING'
	SWIMMING = 'SWIMMING'
	TRIATHLON = 'TRIATHLON'
	WALKING = 'WALKING'
	HIKING = 'HIKING'
	OTHER = 'OTHER'

@dataclasses.dataclass
class ClubsActivity:
	"""Unique identifier for this activity (not provided by ClubActivity)"""
	id: Optional[str]
	"""The date that this activity was created (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""The last date that this activity was updated (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	updated_at: Optional[str]
	"""The group this activity was listed under (reference to HrisGroup)"""
	group_id: Optional[str]
	"""The name of the activity"""
	name: Optional[str]
	"""The description of the activity (DetailedActivity only)"""
	description: Optional[str]
	"""The activity type"""
	type: Optional[ClubsActivityType]
	"""The id of the athlete who performed the activity (DetailedActivity only)"""
	athlete_id: Optional[str]
	"""The full name of the athlete"""
	athlete_name: Optional[str]
	"""The activity's distance, in meters"""
	distance: Optional[int]
	"""The activity's moving time, in seconds"""
	moving_time: Optional[int]
	"""The activity's elapsed time, in seconds"""
	elapsed_time: Optional[int]
	"""The activity's total elevation gain, in meters"""
	total_elevation_gain: Optional[int]
	"""The activity's highest elevation, in meters (DetailedActivity only)"""
	elevation_high: Optional[int]
	"""The activity's lowest elevation, in meters (DetailedActivity only)"""
	elevation_low: Optional[int]
	"""When the activity started (UTC) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	start_at: Optional[str]
	"""The timezone of the activity"""
	timezone: Optional[str]
	"""The number of achievements gained during this activity"""
	achievement_count: Optional[int]
	"""The number of kudos given for this activity"""
	kudos_count: Optional[int]
	"""The number of comments for this activity"""
	comment_count: Optional[int]
	"""The number of athletes that took part in this activity"""
	athlete_count: Optional[int]
	"""The number of Instagram photos for this activity"""
	photo_count: Optional[int]
	"""The activity's average speed, in meters per second"""
	average_speed: Optional[int]
	"""The activity's max speed, in meters per second"""
	max_speed: Optional[int]
	"""The activity's average cadence"""
	average_cadence: Optional[int]
	"""The activity's average heart rate, in beats per minute"""
	average_heartrate: Optional[int]
	"""The activity's max heart rate, in beats per minute"""
	max_heartrate: Optional[int]
	"""The activity's average power output, in watts"""
	average_watts: Optional[int]
	"""The activity's max power output, in watts"""
	max_watts: Optional[int]
	"""The activity's weighted average power output, in watts"""
	weighted_average_watts: Optional[int]
	"""The total work done, in kilojoules"""
	kilojoules: Optional[int]
	"""The number of kilocalories consumed during this activity"""
	calories: Optional[int]
	"""Whether the activity has heart rate data"""
	has_heartrate: Optional[bool]
	"""Whether this activity was recorded on a training machine"""
	is_trainer: Optional[bool]
	"""Whether this activity is a commute"""
	is_commute: Optional[bool]
	"""Whether this activity was created manually"""
	is_manual: Optional[bool]
	"""Whether this activity is private"""
	is_private: Optional[bool]
	"""The detailed polyline of the activity's map"""
	map_polyline: Optional[str]
	"""The summary polyline of the activity's map"""
	map_summary_polyline: Optional[str]
	"""The activity's workout type"""
	workout_type: Optional[int]
	"""The activity's relative effort score"""
	suffer_score: Optional[int]
	"""The number of personal records set during this activity"""
	pr_count: Optional[int]
Are we missing anything? Let us know
Was this page helpful?