Under Armour Workouts API

Create, retrieve, update, and delete fitness workouts

OpenAPI Specification

under-armour-workouts-api-openapi.yml Raw ↑
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/