Under Armour Workouts API
Create, retrieve, update, and delete fitness workouts
Create, retrieve, update, and delete fitness workouts
openapi: 3.0.3
info:
title: MapMyFitness Devices Workouts API
description: The MapMyFitness API (Under Armour Connected Fitness API) provides RESTful access to fitness data including workouts, routes, user profiles, heart rate zones, fitness devices, and webhooks. The platform powers MapMyFitness, MapMyRun, MapMyRide, and MapMyWalk and supports over 400 partner apps and devices. Authentication uses OAuth 2.0.
version: 7.1.0
contact:
name: Under Armour Developer Support
url: https://developer.mapmyfitness.com/
termsOfService: https://developer.mapmyfitness.com/Terms_Of_Service/
servers:
- url: https://api.ua.com
description: Under Armour Connected Fitness API
tags:
- name: Workouts
description: Create, retrieve, update, and delete fitness workouts
paths:
/v7.1/workout/:
get:
operationId: listWorkouts
summary: List Workouts
description: Retrieves a paginated list of workouts for a user. Supports filtering by activity type, date range, and gear.
tags:
- Workouts
parameters:
- name: user
in: query
required: true
description: User resource href or ID to filter workouts by
schema:
type: string
- name: activity_type
in: query
required: false
description: Filter by activity type href or ID (supports multiple, comma-separated)
schema:
type: string
- name: updated_before
in: query
required: false
description: Filter workouts updated before this ISO 8601 datetime
schema:
type: string
format: date-time
- name: updated_after
in: query
required: false
description: Filter workouts updated after this ISO 8601 datetime
schema:
type: string
format: date-time
- name: created_before
in: query
required: false
description: Filter workouts created before this ISO 8601 datetime
schema:
type: string
format: date-time
- name: created_after
in: query
required: false
description: Filter workouts created after this ISO 8601 datetime
schema:
type: string
format: date-time
- name: started_before
in: query
required: false
description: Filter workouts started before this ISO 8601 datetime
schema:
type: string
format: date-time
- name: started_after
in: query
required: false
description: Filter workouts started after this ISO 8601 datetime
schema:
type: string
format: date-time
- name: order_by
in: query
required: false
description: Sort order — start_datetime or -start_datetime (descending)
schema:
type: string
enum:
- start_datetime
- -start_datetime
- name: limit
in: query
required: false
description: Number of results per page
schema:
type: integer
- name: offset
in: query
required: false
description: Pagination offset
schema:
type: integer
responses:
'200':
description: Paginated list of workouts
content:
application/json:
schema:
$ref: '#/components/schemas/WorkoutCollection'
'401':
description: Authentication required
'403':
description: Insufficient permissions
security:
- oauth2:
- read
post:
operationId: createWorkout
summary: Create Workout
description: Creates a new workout for the authenticated user.
tags:
- Workouts
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WorkoutCreate'
responses:
'201':
description: Workout created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Workout'
'400':
description: Invalid request body
'401':
description: Authentication required
security:
- oauth2:
- write
/v7.1/workout/{id}/:
get:
operationId: getWorkout
summary: Get Workout
description: Retrieves a single workout by ID. Use field_set=time_series to include GPS and metric time series data.
tags:
- Workouts
parameters:
- name: id
in: path
required: true
description: Workout ID
schema:
type: string
- name: field_set
in: query
required: false
description: Include additional data — use time_series for GPS/metric samples
schema:
type: string
enum:
- time_series
responses:
'200':
description: Workout details
content:
application/json:
schema:
$ref: '#/components/schemas/Workout'
'401':
description: Authentication required
'403':
description: Access denied — user does not own this workout
'404':
description: Workout not found
security:
- oauth2:
- read
put:
operationId: updateWorkout
summary: Update Workout
description: Updates an existing workout. User must own the workout.
tags:
- Workouts
parameters:
- name: id
in: path
required: true
description: Workout ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WorkoutCreate'
responses:
'200':
description: Workout updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Workout'
'401':
description: Authentication required
'403':
description: Access denied
'404':
description: Workout not found
security:
- oauth2:
- write
delete:
operationId: deleteWorkout
summary: Delete Workout
description: Deletes a workout. User must own the workout.
tags:
- Workouts
parameters:
- name: id
in: path
required: true
description: Workout ID
schema:
type: string
responses:
'204':
description: Workout deleted successfully
'401':
description: Authentication required
'403':
description: Access denied
'404':
description: Workout not found
security:
- oauth2:
- write
components:
schemas:
WorkoutCollection:
type: object
properties:
total_count:
type: integer
_embedded:
type: object
properties:
workouts:
type: array
items:
$ref: '#/components/schemas/Workout'
_links:
type: object
WorkoutAggregates:
type: object
properties:
distance_total:
type: number
description: Total distance in meters
steps_total:
type: integer
description: Total step count
active_time_total:
type: number
description: Total active time in seconds
elapsed_time_total:
type: number
description: Total elapsed time in seconds
metabolic_energy_total:
type: number
description: Total energy expenditure in joules
speed_avg:
type: number
description: Average speed in meters/second
heartrate_avg:
type: number
description: Average heart rate in beats/minute
heartrate_max:
type: number
description: Maximum heart rate in beats/minute
heartrate_min:
type: number
description: Minimum heart rate in beats/minute
WorkoutCreate:
type: object
required:
- name
- start_datetime
- start_locale_timezone
- aggregates
properties:
name:
type: string
description: Workout title
start_datetime:
type: string
format: date-time
description: ISO 8601 start time
start_locale_timezone:
type: string
description: IANA timezone
aggregates:
$ref: '#/components/schemas/WorkoutAggregates'
Workout:
type: object
properties:
_links:
type: object
description: HATEOAS links to related resources
name:
type: string
description: Workout title
start_datetime:
type: string
format: date-time
description: ISO 8601 start time of the workout
start_locale_timezone:
type: string
description: IANA timezone of the workout location
aggregates:
$ref: '#/components/schemas/WorkoutAggregates'
activity_type:
type: object
description: Link to the activity type
source:
type: object
description: Data source information
securitySchemes:
oauth2:
type: oauth2
description: OAuth 2.0 authentication
flows:
authorizationCode:
authorizationUrl: https://www.mapmyfitness.com/v7.1/oauth2/authorize/
tokenUrl: https://api.ua.com/v7.1/oauth2/access_token/
scopes:
read: Read access to fitness data
write: Write access to fitness data
externalDocs:
description: MapMyFitness API Documentation
url: https://developer.mapmyfitness.com/docs/