swagger: "2.0"
info:
  title: Polar AccessLink Dynamic API
  version: v4
  description: Polar AccessLink Dynamic API documentation
  contact:
    name: Support
    url: 'https://www.polar.com/accesslink'
    email: b2bhelpdesk@polar.com
  license:
    name: Polar Electro AccessLink Limited License Agreement
    url: 'https://www.polar.com/en/legal/polar-api-agreement'
tags:
  - name: Subscription
    description: Endpoints for user subscriptions related data.
  - name: Training targets
    description: Endpoints for training targets data. Training targets are structured workout plans or goals that users can create and follow to guide their exercise sessions. A training target can specify parameters such as exercise type, duration, distance, intensity, heart rate zones, or phases (e.g., warm-up, intervals, cool-down).
  - name: Favorites
    description: Endpoints for favorites data. Favorites are pre-defined training targets or routes that users have saved in their Polar Flow account for easy access and repeated use. Favorites can include specific workouts, training sessions, or routes with set parameters such as duration, distance, intensity, or heart rate targets.
  - name: Training Sessions
    description: Endpoints for managing training sessions.
  - name: User account
    description: Endpoints for managing user account data.
  - name: Daily activity
    description: Endpoints for managing daily activity data.
  - name: Calendar
    description: Endpoints for managing calendar entries.
  - name: Tests
    description: Endpoints for managing user tests.
  - name: Profile Pictures
    description: Endpoints for managing user profile pictures.
  - name: Sports and Sport Profiles
    description: Endpoints for Polar sports and user sport profiles. Sports are a Polar-managed catalogue (you can’t create new sports) that define defaults like speed/pace view, GPS, and supported features. Sport profiles are the user’s configurable per‑sport settings and training views managed in Polar Flow.
  - name: Sleep
    description: Endpoints for sleep data.
  - name: Routes
    description: Endpoints for route data. Routes are navigational paths the user saves in Polar Flow Favorites for use on supported devices; they can be imported (GPX/TCX), organized per device, and synced to the device for guidance during training.
  - name: User Devices
    description: Endpoints for managing user devices.
  - name: Pulse to pulse interval data
    description: Endpoints for loading pulse to pulse interval (PPI) data.
  - name: Nightly Recharge
    description: Endpoints for nightly recharge data.
  - name: Continuous samples
    description: Endpoints for managing continuous samples.
  - name: Skin Contact
    description: Endpoint for Skin Contact data.
  - name: Temperature Measurement
    description: 'Endpoint for Temperature Measurement data. These device recorded measurements may include, for example: skin temperatures.'
consumes:
  - application/json
produces:
  - application/json
paths:
  /subscriptions:
    get:
      summary: /subscriptions
      description: List all user subscriptions and their related entitlements.
      operationId: UserEntitlementService_ListSubscriptions
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/subscriptionListSubscriptionsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainssubscriptionErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainssubscriptionErrorResponse'
        "500":
          description: Internal Error
          schema:
            $ref: '#/definitions/domainssubscriptionErrorResponse'
      tags:
        - Subscription
      security:
        - OAuth2:
            - user_subscription:read
  /training-target/calendar-targets:
    get:
      summary: Load user training targets for given date range
      operationId: TrainingTargetService_LoadTargets
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/trainingtargetLoadTargetsResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/domainstrainingtargetErrorResponse'
      parameters:
        - name: fromDate
          description: Required. Date in ISO 8601 format. Inclusive start date for the requested period.
          in: query
          required: false
          type: string
        - name: toDate
          description: Required. Date in ISO 8601 format. Exclusive end date for the requested period.
          in: query
          required: false
          type: string
      tags:
        - Training targets
      security:
        - OAuth2:
            - training_targets:read
  /training-target/favorites:
    get:
      summary: Load user favorites
      operationId: FavoritesService_LoadFavorites
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/trainingtargetLoadFavoritesResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/domainstrainingtargetErrorResponse'
      tags:
        - Favorites
      security:
        - OAuth2:
            - training_targets:read
  /training-sessions/list:
    get:
      summary: List user training sessions
      description: Lists all Training Sessions of a user in a given date range. Parameters 'from' and 'to' control the range of the data. When no features are in use, date range can be 90 days. If features are used, only one day at a time can be requested.
      operationId: TrainingSessionService_List
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/domainstrainingsessionListResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainstrainingsessionErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainstrainingsessionErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/domainstrainingsessionErrorResponse'
      parameters:
        - name: from
          description: Required. Date in ISO 8601 format. Inclusive start date for the requested period.
          in: query
          required: false
          type: string
        - name: to
          description: Required. Date in ISO 8601 format. Exclusive end date for the requested period.
          in: query
          required: false
          type: string
        - name: features
          description: |-
            Optional. List of features to include in the response.
            Available features:
             samples,
             test-results,
             training-load-report,
             laps,
             hill-splits,
             routes,
             statistics,
             zones,
             pause-times,
             strength-training-results,
             comments
          in: query
          required: false
          type: array
          items:
            type: string
          collectionFormat: multi
      tags:
        - Training Sessions
      security:
        - OAuth2:
            - training_sessions:read
  /user/account-data:
    get:
      summary: Load user account data
      description: Returns all user's account data.
      operationId: AccountService_List
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/domainsaccountLoadResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainsaccountErrorResponse'
      tags:
        - User account
      security:
        - OAuth2:
            - profile:read
  /activity/list:
    get:
      summary: List user daily activity
      description: Lists all days where user has activity data stored.Parameters 'from' and 'to' control the range of the data. When no features are in use, date range can be 90 days. If features are used, only one day at a time can be requested.Without features the response contains only the dates where activity data is available.
      operationId: ActivityService_List
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/domainsactivityListResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainsactivityErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainsactivityErrorResponse'
        "500":
          description: Internal Error
          schema:
            $ref: '#/definitions/domainsactivityErrorResponse'
      parameters:
        - name: from
          description: |-
            Inclusive start date for the requested period.

            Required. Date in ISO 8601 format.
          in: query
          required: false
          type: string
        - name: to
          description: |-
            Exclusive end date for the requested period.

            Required. Date in ISO 8601 format.
          in: query
          required: false
          type: string
        - name: features
          description: |-
            Optional. List of features to include in the response.
            Available features: samples, activity-target, physical-information
          in: query
          required: false
          type: array
          items:
            type: string
          collectionFormat: multi
      tags:
        - Daily activity
      security:
        - OAuth2:
            - activity:read
  /calendar/list:
    get:
      summary: List calendar entries
      description: List user calendar entries within requested range. Parameters 'from' and 'to' control the range of the data. Maximum date range is 90 days. Use features to select which calendar entry types are to be returned .
      operationId: CalendarService_List
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/domainscalendarLoadResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainscalendarErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainscalendarErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/domainscalendarErrorResponse'
      parameters:
        - name: from
          description: |-
            Inclusive start date for the requested period.
            Date in ISO 8601 format.
          in: query
          required: true
          type: string
        - name: to
          description: |-
            Exclusive end date for the requested period.
            Date in ISO 8601 format.
          in: query
          required: true
          type: string
        - name: features
          description: |-
            Optional. List of features to include in the response.
            Available features: notes, feeling, feedback, perceived-recovery, weight, physical-information
          in: query
          required: false
          type: array
          items:
            type: string
          collectionFormat: multi
      tags:
        - Calendar
      security:
        - OAuth2:
            - calendar:read
  /tests/list:
    get:
      summary: List user test results
      description: List user test results within requested range. Parameters 'from' and 'to' control the range of the data. When no features are in use, date range can be 90 days. If features are used, only one day at a time can be requested.
      operationId: TestsService_List
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/domainstestsLoadResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainstestsErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainstestsErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/domainstestsErrorResponse'
      parameters:
        - name: from
          description: |-
            Inclusive start date for the requested period.
            Date in ISO 8601 format.
          in: query
          required: true
          type: string
        - name: to
          description: |-
            Exclusive end date for the requested period.
            Date in ISO 8601 format.
          in: query
          required: true
          type: string
        - name: features
          description: |-
            Optional. List of features to include in the response.
            Available features:
             samples
          in: query
          required: false
          type: array
          items:
            type: string
          collectionFormat: multi
      tags:
        - Tests
      security:
        - OAuth2:
            - tests:read
  /user/profile-picture:
    get:
      summary: Load profile picture
      description: Load profile picture of a user in a given size. The endpoint returns image data (e.g., JPEG, PNG) with the appropriate Content-Type header. Parameter 'size' is used to specify the size of the profile picture.
      operationId: ProfilePictureService_LoadProfilePicture
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/profilepictureHttpBody'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainsprofilepictureErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainsprofilepictureErrorResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/domainsprofilepictureErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/domainsprofilepictureErrorResponse'
      parameters:
        - name: size
          description: Size of the profile picture.
          in: query
          required: true
          type: string
          enum:
            - small
            - medium
            - large
      tags:
        - Profile Pictures
      produces:
        - image/*
      security:
        - OAuth2:
            - profile:read
  /sports/list:
    get:
      summary: Retrieves all Sports available in the Polar ecosystem.
      description: Returns the Polar sports catalogue used when creating sport profiles. Use this as a reference for sport_id values in profiles.
      operationId: SportService_ListSports
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/sportListSportsResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/domainssportErrorResponse'
      tags:
        - Sports and Sport Profiles
      security:
        - OAuth2:
            - sports:read
  /sports/profile-list-catalog:
    get:
      summary: Load user's sport profile list catalog.
      description: 'Loads the user’s sport profile list catalogue including the active list index and the ordered profile UUIDs. This mirrors Flow’s Sport profiles ordering: active list items are transferred to devices on sync (up to device limits, typically 20). Use this to inspect or manage which profiles are active and their order before initiating a sync in Flow.'
      operationId: SportService_LoadProfileListCatalog
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/sportLoadProfileListCatalogResponse'
        "404":
          description: Profile list catalog does not exist
          schema:
            $ref: '#/definitions/domainssportErrorResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/domainssportErrorResponse'
      tags:
        - Sports and Sport Profiles
      security:
        - OAuth2:
            - sports:read
  /sports/profiles:
    get:
      summary: List user's Sport profiles.
      description: Lists the user’s sport profiles from Polar Flow. A sport profile contains per‑sport settings and training views (e.g., speed/pace view, GPS, zones, reminders, product‑specific displays).
      operationId: SportService_ListProfiles
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/sportListProfilesResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/domainssportErrorResponse'
      tags:
        - Sports and Sport Profiles
      security:
        - OAuth2:
            - sports:read
  /sleep-wake-vectors:
    get:
      summary: /sleep-wake-vectors
      description: Lists user's sleep/wake state vectors in the given date range. Range maximum length is 7 days. Data is only available for the last 90 days.
      operationId: SleepService_ListSleepWakeVectors
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/sleepListSleepWakeVectorsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainssleepErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainssleepErrorResponse'
        "500":
          description: Internal Error
          schema:
            $ref: '#/definitions/domainssleepErrorResponse'
      parameters:
        - name: from
          description: Inclusive start date for the requested period. Date in ISO 8601 format.
          in: query
          required: true
          type: string
        - name: to
          description: Exclusive end date for the requested period. Date in ISO 8601 format.
          in: query
          required: true
          type: string
      tags:
        - Sleep
      security:
        - OAuth2:
            - sleep:read
  /sleeps:
    get:
      summary: /sleeps
      description: Lists user's sleep data in a given date range. Parameters 'from' and 'to' control the range of the data. When no features are in use, maximum date range is 30 days. If features are used, only one day at a time can be requested. Without features the response contains only the dates where sleep data is available.
      operationId: SleepService_ListSleeps
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/sleepListSleepsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainssleepErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainssleepErrorResponse'
        "500":
          description: Internal Error
          schema:
            $ref: '#/definitions/domainssleepErrorResponse'
      parameters:
        - name: from
          description: Inclusive start date for the requested period. Date in ISO 8601 format.
          in: query
          required: true
          type: string
        - name: to
          description: Exclusive end date for the requested period. Date in ISO 8601 format.
          in: query
          required: true
          type: string
        - name: features
          description: |-
            List of features to include in the response.
            Available features:
             sleep-result,
             original-sleep-result,
             sleep-evaluation,
             sleep-score.
          in: query
          required: false
          type: array
          items:
            type: string
          collectionFormat: multi
      tags:
        - Sleep
      security:
        - OAuth2:
            - sleep:read
  /routes/{routeId}:
    get:
      description: Loads route data using route id. Note that loading 3rd party routes (e.g. Komoot, Strava, ...) is not supported.
      operationId: RouteService_LoadRoute
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/apiLoadRouteResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/routeapiErrorResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/routeapiErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/routeapiErrorResponse'
      parameters:
        - name: routeId
          description: |-
            Route id - Mandatory.

            Route id can be acquired by first fetching a list of Favorite or Calendar targets:
            - Calendar Training Targets (GET: /training-target/calendar-targets).
            - Favorites (GET: /training-target/favorites).

            and then extracting the wanted Route id from the response data.
          in: path
          required: true
          type: string
          format: uint64
      tags:
        - Routes
      security:
        - OAuth2:
            - routes:read
  /user-devices:
    get:
      summary: List user devices
      description: Load all user device data.
      operationId: UserDeviceService_ListUserDevices
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/userdeviceListUserDevicesResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainsuserdeviceErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainsuserdeviceErrorResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/domainsuserdeviceErrorResponse'
      tags:
        - User Devices
      security:
        - OAuth2:
            - devices:read
  /ppi-samples:
    get:
      summary: /ppi-samples
      description: Lists user's pulse-to-pulse interval samples in given range. Parameters 'from' and 'to' control the range of the data. When no features are in use, date range can be 90 days. If features are used, only one day at a time can be requested. Without features only dates and last modified timestamps are returned for days containing PPI data
      operationId: PpiDataService_ListPpiSamples
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/ppiListPpiSamplesResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainsppiErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainsppiErrorResponse'
        "500":
          description: Internal Error
          schema:
            $ref: '#/definitions/domainsppiErrorResponse'
      parameters:
        - name: from
          description: Date in ISO 8601 format. Inclusive start date for the requested period.
          in: query
          required: true
          type: string
        - name: to
          description: Date in ISO 8601 format. Exclusive end date for the requested period.
          in: query
          required: true
          type: string
        - name: features
          description: |-
            Optional. List of features to include in the response.
            Available features: samples.
          in: query
          required: false
          type: array
          items:
            type: string
          collectionFormat: multi
      tags:
        - Pulse to pulse interval data
      security:
        - OAuth2:
            - ppi_data:read
  /nightly-recharge-results:
    get:
      summary: ' /nightly-recharge-results'
      description: Lists all Nightly Recharge results of a user in a given date range.Parameters 'from' and 'to' control the range of the data. When no features are in use, date range can be 28 days. If features are used, only one day at a time can be requested.
      operationId: NightlyRecoveryService_List
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/domainsnightlyrechargeListResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainsnightlyrechargeErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainsnightlyrechargeErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/domainsnightlyrechargeErrorResponse'
      parameters:
        - name: from
          description: Date in ISO 8601 format. Inclusive start date for the requested period.
          in: query
          required: true
          type: string
        - name: to
          description: Date in ISO 8601 format. Exclusive end date for the requested period.
          in: query
          required: true
          type: string
        - name: features
          description: |-
            List of features to include in the response.
            Available features:
            samples
          in: query
          required: false
          type: array
          items:
            type: string
          collectionFormat: multi
      tags:
        - Nightly Recharge
      security:
        - OAuth2:
            - nightly_recharge:read
  /continuous-samples:
    get:
      summary: Load continuous samples
      description: Loads samples for a user by date range. Parameters 'from' and 'to' control the range of the data. Maximum date range for heart rate samples is 30 days. Uses features to specify the sample types.
      operationId: ContinuousSamplesService_LoadContinuousSamples
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/domainscontinuoussamplesLoadResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/domainscontinuoussamplesErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/domainscontinuoussamplesErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/domainscontinuoussamplesErrorResponse'
      parameters:
        - name: from
          description: Inclusive start date for the requested period. Date in ISO 8601 format.
          in: query
          required: true
          type: string
        - name: to
          description: Exclusive end date for the requested period. Date in ISO 8601 format.
          in: query
          required: true
          type: string
        - name: features
          description: |-
            List of features to include in the response.
            Available features: heart-rate-samples
          in: query
          required: false
          type: array
          items:
            type: string
          collectionFormat: multi
      tags:
        - Continuous samples
      security:
        - OAuth2:
            - continuous_samples:read
  /skin-contacts:
    get:
      summary: /skin-contacts
      description: Lists all Skin Contact data of a user in a given date range. Parameters 'from' and 'to' control the range of the data. Range is inclusive for 'from' and exclusive for 'to'. Range is limited to 90 days.
      operationId: SkinContactService_List
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/skincontactSkinContactListResponse'
        "400":
          description: Bad Request
          schema:
            $ref: .com.polar.domains.skincontact.TemperatureMeasurementErrorResponse
        "403":
          description: Forbidden
          schema:
            $ref: .com.polar.domains.skincontact.ErrorResponse
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/skincontactSkinContactErrorResponse'
      parameters:
        - name: from
          description: Inclusive start date for the requested period. Date in ISO 8601 format.
          in: query
          required: true
          type: string
        - name: to
          description: Exclusive end date for the requested period. Date in ISO 8601 format.
          in: query
          required: true
          type: string
      tags:
        - Skin Contact
      security:
        - OAuth2:
            - skin_contact:read
  /temperature-measurements:
    get:
      summary: /temperature-measurements
      description: Lists all temperature measurements of a user in a given date range.Parameters 'from' and 'to' control the range of the data. Range is inclusive for 'from' and exclusive for 'to'. Range is limited to 90 days.
      operationId: TemperatureMeasurementService_List
      responses:
        "200":
          description: Success
          schema:
            $ref: '#/definitions/temperaturemeasurementTemperatureMeasurementListResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/temperaturemeasurementTemperatureMeasurementErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: .com.polar.domains.temperaturemeasurement.ErrorResponse
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/temperaturemeasurementTemperatureMeasurementErrorResponse'
      parameters:
        - name: from
          description: Inclusive start date for the requested period. Date in ISO 8601 format.
          in: query
          required: true
          type: string
        - name: to
          description: Exclusive end date for the requested period. Date in ISO 8601 format.
          in: query
          required: true
          type: string
      tags:
        - Temperature Measurement
      security:
        - OAuth2:
            - temperature_measurement:read
  /hello:
    get:
      tags:
        - Hello World
      summary: Returns a greeting message
      responses:
        '200':
          description: A successful response
          content:
            text/plain:
              schema:
                type: string
                example: Hello, world!
definitions:
  SubscriptionPlanStore:
    type: string
    enum:
      - STORE_UNKNOWN
      - GOOGLE_PLAY_STORE
      - POLAR_BETA
      - APPLE_APP_STORE
    default: STORE_UNKNOWN
  domainssubscriptionErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
  subscriptionEntitlement:
    type: object
    properties:
      name:
        type: string
        example: atp
        description: Name of the entitlement.
        maxLength: 64
    description: Entitlement represents a feature or service that a user can access through their subscription.
    required:
      - name
  subscriptionEventLogEntity:
    type: object
    properties:
      event:
        type: string
        example: CREATED
        description: Name of the event.
        maxLength: 128
      generatedBy:
        type: string
        example: Apple App Store notification
        description: Identifier of the component that generated the event.
        maxLength: 64
      createdAt:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Time when the event was created in ISO 8601 format.
    description: EventLogEntity represents an event log related to a user subscription.
    required:
      - event
      - generatedBy
      - createdAt
  subscriptionListSubscriptionsResponse:
    type: object
    properties:
      userSubscriptions:
        $ref: '#/definitions/subscriptionUserSubscriptions'
  subscriptionSubscriptionPlan:
    type: object
    properties:
      subscriptionProduct:
        $ref: '#/definitions/subscriptionSubscriptionProduct'
        title: Subscription product details
      duration:
        type: string
        example: P1M
        description: Duration of the subscription in ISO 8601 format.
      store:
        $ref: '#/definitions/SubscriptionPlanStore'
        description: Store where the subscription was purchased.
    description: SubscriptionPlan represents a store specific subscription plan.
    required:
      - duration
  subscriptionSubscriptionProduct:
    type: object
    properties:
      subscriptionProductName:
        type: string
        example: paidcontent
        description: Name of the subscription product.
        maxLength: 64
      entitlements:
        type: array
        items:
          type: object
          $ref: '#/definitions/subscriptionEntitlement'
        description: Entitlements gained through this subscription product.
    description: SubscriptionProduct represents a subscription product that a user can purchase.
    required:
      - subscriptionProductName
  subscriptionUserSubscription:
    type: object
    properties:
      subscriptionPlan:
        $ref: '#/definitions/subscriptionSubscriptionPlan'
        title: Subscription plan
      status:
        $ref: '#/definitions/subscriptionUserSubscriptionStatus'
        title: User subscription status
      purchasedAt:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Time when the user subscription was purchased in ISO 8601 format.
      expiresAt:
        type: string
        format: date-time
        example: 2025-02-01T10:12:33.435
        description: Time when the user subscription expires in ISO 8601 format.
      createdAt:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Time when the user subscription entry was created in ISO 8601 format.
      modifiedAt:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Time when the user subscription entry was last modified in ISO 8601 format.
      isFreeTrial:
        type: boolean
        description: Indicates if the user subscription is currently in free trial.
      eventLogs:
        type: array
        items:
          type: object
          $ref: '#/definitions/subscriptionEventLogEntity'
        description: Event logs related to the user subscription.
    title: User subscription
    required:
      - purchasedAt
      - expiresAt
      - createdAt
      - modifiedAt
  subscriptionUserSubscriptionStatus:
    type: string
    enum:
      - STATUS_UNKNOWN
      - ACTIVE
      - CANCELLED
      - PAUSED
      - IN_GRACE_PERIOD
      - IN_BILLING_RETRY
      - EXPIRED
    default: STATUS_UNKNOWN
  subscriptionUserSubscriptions:
    type: object
    properties:
      userSubscriptions:
        type: array
        items:
          type: object
          $ref: '#/definitions/subscriptionUserSubscription'
        title: User subscriptions
    title: User subscriptions
  ExerciseTargetExerciseType:
    type: string
    enum:
      - FREE
      - VOLUME
      - PHASED
      - STEADY_RACE_PACE
      - ROUTE
      - SEGMENT
      - STRENGTH
    default: FREE
    description: |2-
       - FREE: Free target. This type of target has no guidance or goal.
       - VOLUME: Target that tracks a volume metric.
      One of distance, duration, calories must be set for this type of target.
       - PHASED: Phased target. A target with a series of phases and repeats.
       - STEADY_RACE_PACE: Steady race pace target. Tracks race pace, which is a function of distance and duration.
      Both duration and distance must be set for this type of target.
       - ROUTE: Target based on a training route.
       - SEGMENT: Target based on a Strava segment.
       - STRENGTH: Strength training target.
  PhaseGoalGoalType:
    type: string
    enum:
      - MANUAL
      - DURATION
      - DISTANCE
    default: MANUAL
    description: |2-
       - MANUAL: Phase lasts until user manually changes the phase.
       - DURATION: Phase lasts for a set duration of time.
       - DISTANCE: Phase lasts for a set distance.
  PhaseIntensityIntensityType:
    type: string
    enum:
      - NONE
      - HEART_RATE_ZONES
      - POWER_ZONES
      - SPEED_ZONES
    default: NONE
    description: |2-
       - NONE: Nothing is tracked.
       - HEART_RATE_ZONES: Heart rate data is tracked.
       - POWER_ZONES: Power data is tracked.
       - SPEED_ZONES: Speed data is tracked.
  PhaseOrRepeatChangeType:
    type: string
    enum:
      - MANUAL
      - AUTOMATIC
    default: MANUAL
    description: |-
      Type of behaviour wrist unit should follow during phase change.

       - MANUAL: User manually changes the exercise phase.
       - AUTOMATIC: Wrist unit automatically changes the exercise phase.
  domainstrainingtargetErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
  trainingtargetDateTime:
    type: object
    properties:
      year:
        type: integer
        format: int64
      month:
        type: integer
        format: int64
      day:
        type: integer
        format: int64
      hour:
        type: integer
        format: int64
      min:
        type: integer
        format: int64
      sec:
        type: integer
        format: int64
    title: Date time in UTC
  trainingtargetExerciseTarget:
    type: object
    properties:
      idx:
        type: integer
        format: int64
        description: |-
          Required. Each exercise target of a session target or a favorite has a unique index number.
          Determines exercise target order during training session.
      type:
        $ref: '#/definitions/ExerciseTargetExerciseType'
        description: Required. Type of target.
      duration:
        type: integer
        format: int64
        description: |-
          Goal duration. Required for STEADY_RACE_PACE type targets. See details under ExerciseType.
          Milliseconds between 1000 (0:00:01) and 359999000 (99:59:59).
        maximum: 3.59999e+08
        minimum: 1000
      distance:
        type: number
        format: float
        description: |-
          Goal distance. Required for STEADY_RACE_PACE type targets. See details under ExerciseType.
          Meters between 1 and 9 999 000 (9 999 km).
        maximum: 9.999e+06
        minimum: 1
      kiloCalories:
        type: integer
        format: int64
        description: |-
          Optional. Goal calories. Relevant for VOLUME type target. See details under ExerciseType.
          Kilocalories between 1 and 65535 kcal.
        maximum: 65535
        minimum: 1
      sportId:
        type: string
        format: uint64
        description: Optional. Database id of the exercise target sport.
      routeId:
        type: string
        format: uint64
        description: A reference to the route in route-service. Required for ROUTE type targets.
      segmentId:
        type: string
        format: uint64
        description: Database id of the Strava segment this target is based on. Required for SEGMENT type targets.
      phaseOrRepeat:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingtargetPhaseOrRepeat'
        description: |-
          List of phases and repeats for this target. Required for PHASED target types.
          PHASED type target must have 1 to 20 unique phases, ignoring repeats. Repeat structure can be max 2 levels deep.
          Maximum total number of phases is 200 when taking repeats into account.
        maxItems: 200
    description: Target representing a single exercise.
    required:
      - idx
  trainingtargetFavoriteTarget:
    type: object
    properties:
      favorite:
        $ref: '#/definitions/trainingtargetFavoriteTrainingSessionTarget'
        description: Target representing a user favorite target. Required in requests, and will be filled in responses.
      exercise:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingtargetExerciseTarget'
          required:
            - exercise
        description: |-
          Target representing a single exercise. Required in requests, and will be filled in responses.
          In theory one favorite session can have multiple exercise targets,
          but in practice only one exercise target is expected.
        minItems: 1
    description: |-
      *
      Favorite target.
      Training targets can be generated by using favorites as templates.
      Favorites can include routes and Strava segments in addition to standard target types.
      See "ExerciseType" for all possible target types.
    required:
      - favorite
  trainingtargetFavoriteTrainingSessionTarget:
    type: object
    properties:
      id:
        type: string
        format: uint64
        description: Database ID. Required for update requests. Will be filled in responses.
      created:
        $ref: '#/definitions/trainingtargetDateTime'
        description: Database time of creation. Optional for requests. Will be filled in responses.
      modified:
        $ref: '#/definitions/trainingtargetDateTime'
        description: Database time of last modification. Optional for requests. Will be filled in responses.
      name:
        type: string
        description: Required. Favorite name.
        maxLength: 45
        minLength: 1
      description:
        type: string
        description: Optional. Description of favorite.
        maxLength: 500
      organisationId:
        type: string
        format: uint64
        description: Database id of organisation this favorite belongs to. Required if favorite belongs to an organisation.
    description: Favorite target.
    required:
      - name
  trainingtargetLoadFavoritesResponse:
    type: object
    properties:
      favoriteTarget:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingtargetFavoriteTarget'
  trainingtargetLoadTargetsResponse:
    type: object
    properties:
      trainingTarget:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingtargetTrainingTarget'
  trainingtargetPhaseGoal:
    type: object
    properties:
      type:
        $ref: '#/definitions/PhaseGoalGoalType'
        description: Required. Type of phase goal.
      duration:
        type: integer
        format: int64
        description: Required for DURATION goal type. Goal duration of phase. Milliseconds between 1000 (0:00:01) and 359999000 (99:59:59).
        maximum: 3.59999e+08
        minimum: 1000
      distance:
        type: number
        format: float
        description: Required for DISTANCE goal type. Goal distance of phase. Meters between 1 and 9 999 000 (9 999 km).
        maximum: 9.999e+06
        minimum: 1
    description: Phase goal. Determines when the phase will be complete.
  trainingtargetPhaseIntensity:
    type: object
    properties:
      type:
        $ref: '#/definitions/PhaseIntensityIntensityType'
        description: Required. Type of phase intensity.
      lowerZone:
        type: integer
        format: int64
        description: |-
          Lower zone bound for data tracking. Required for intensity types other than NONE.
          If tracked, goal of the phase is to stay at or above this zone limit, value from 1 to 5.
        maximum: 5
        minimum: 1
      upperZone:
        type: integer
        format: int64
        description: |-
          Upper zone bound for data tracking. Required for intensity types other than NONE.
          If tracked, goal of the phase is to stay at or below this zone limit, value from 1 to 5.
        maximum: 5
        minimum: 1
    title: Type of metric that will be tracked during the phase
  trainingtargetPhaseOrRepeat:
    type: object
    properties:
      name:
        type: string
        description: |-
          Phases will have these fields
          Required. Name of phase.
        maxLength: 45
        minLength: 1
      changeType:
        $ref: '#/definitions/PhaseOrRepeatChangeType'
        description: |-
          Required. Phase change type.
          Type of behaviour wrist unit should follow during phase change.
      goal:
        $ref: '#/definitions/trainingtargetPhaseGoal'
        description: Required. Phase goal. Determines when the phase will be complete.
      intensity:
        $ref: '#/definitions/trainingtargetPhaseIntensity'
        title: Required. Intensity type of the phase. Tells what metrics are tracked during the phase
      repeatCount:
        type: integer
        format: int64
        description: |-
          Repeats will have these fields
          How many times the child phases will be repeated, valid between 2 and 99 for repeats, unset for phases.
        maximum: 99
        minimum: 2
      phaseOrRepeat:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingtargetPhaseOrRepeat'
        description: Required for repeats. Child phases.
    title: |-
      Phase or repeat that is part of a exercise target.
      Phases do not have repeats
      Repeats can have phases, or more repeats
    required:
      - name
      - goal
  trainingtargetTrainingSessionTarget:
    type: object
    properties:
      id:
        type: string
        format: uint64
        description: Database ID. Required for update requests. Will be filled in responses.
      created:
        $ref: '#/definitions/trainingtargetDateTime'
        description: Database time of creation. Optional for requests. Will be filled in responses.
      modified:
        $ref: '#/definitions/trainingtargetDateTime'
        description: Database time of last modification. Optional for requests. Will be filled in responses.
      name:
        type: string
        description: Required. Name of the target. Max length is 45 characters.
        maxLength: 45
        minLength: 1
      sportId:
        type: string
        format: uint64
        description: |-
          Sport of the target.
          All available sports can be loaded from the /v4/data/sports/list endpoint.
      description:
        type: string
        description: Optional. Description of the target. Max length is 500 characters.
        maxLength: 500
      startTime:
        $ref: '#/definitions/trainingtargetDateTime'
        description: Required. Target start time.
      done:
        type: boolean
        description: |-
          Optional. Tells if the target is done or not.
          If true, it's expected that a training session exists that was executed based on the target and the session has the
          id of the target as a link.
      favoriteId:
        type: string
        format: uint64
        description: Database id of the favorite this target was based on. Required if target is based on a favorite.
      programId:
        type: string
        format: uint64
        description: Database id of program this target is part of. Required if target is part of an ETP program.
      eventId:
        type: string
        format: uint64
        description: |-
          Database id of an event training program event this target is for. Required for event targets.
          For example is user has ETP with goal of running a marathon, this is the event for the marathon.
      onDemandTypeId:
        type: integer
        format: int64
        description: On-demand type id. Not a DB id. Required for FitSpark targets.
      programUuid:
        type: string
        description: UUID of training program this target is part of. Required if target is part of a (non-ETP) training program.
      programTargetUuid:
        type: string
        description: UUID of specific training program target this target is based on. Required if target is part of a (non-ETP) training program.
      programSourceType:
        type: string
        description: |-
          Type of program this target belongs to. Required if target belongs to any program.
          ETP (Event Training Program) or ATP (Adaptive Training Program) for example.
      guidance:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingtargetTrainingSessionTargetGuidances'
        description: |-
          Optional. Guidances related to training target.
          How to do movements, possibly links to relevant videos etc.
      version:
        type: integer
        format: int64
        description: |-
          The version of target. Used for optimistic locking. Required for update requests. The set value is ignored and
          overwritten when saving a new target. Will be filled in responses.
      nonUserEditable:
        type: boolean
        description: Whether the target is not editable by the user. An unset value is interpreted as false.
    description: Target representing a full training session.
    required:
      - name
      - startTime
  trainingtargetTrainingSessionTargetGuidances:
    type: object
    properties:
      dataSerializationType:
        type: integer
        format: int64
        description: Required. Type of serialization. Required so that clients know how to deserialize the data.
      data:
        type: string
        description: Required. Serialized data containing the guidance.
        minLength: 1
    title: Guidance related to training target
    required:
      - dataSerializationType
      - data
  trainingtargetTrainingTarget:
    type: object
    properties:
      session:
        $ref: '#/definitions/trainingtargetTrainingSessionTarget'
        description: Target representing a full training session. Required in requests, and will be filled in responses.
      exercise:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingtargetExerciseTarget'
          required:
            - exercise
        description: |-
          Target representing a single exercise. Required in requests, and will be filled in responses.
          In theory one session can have multiple exercise targets, but in practice only one exercise target is expected.
        minItems: 1
    description: |-
      *
      Training target.
      A target in user's calendar that will be used by wrist unit to suggest and guide exercises.
      See "ExerciseType" for all possible target types.
    required:
      - session
  CalibrationOffsetSampleSourceType:
    type: string
    example: SAMPLE_SOURCE_TYPE_WRIST_METRICS
    enum:
      - SAMPLE_SOURCE_TYPE_UNSPECIFIED
      - SAMPLE_SOURCE_TYPE_WRIST_METRICS
      - SAMPLE_SOURCE_TYPE_CHEST_METRICS
      - SAMPLE_SOURCE_TYPE_UPPER_BACK_METRICS
      - SAMPLE_SOURCE_TYPE_COMBINED_CHEST_METRICS_AND_GPS
      - SAMPLE_SOURCE_TYPE_COMBINED_UPPER_BACK_METRICS_AND_GPS
      - SAMPLE_SOURCE_TYPE_UNDEFINED
      - SAMPLE_SOURCE_TYPE_OFFLINE
      - SAMPLE_SOURCE_TYPE_HEART_RATE
      - SAMPLE_SOURCE_TYPE_HEART_RATE_BLE
      - SAMPLE_SOURCE_TYPE_HEART_RATE_5_KHZ
      - SAMPLE_SOURCE_TYPE_HEART_RATE_OPTICAL
      - SAMPLE_SOURCE_TYPE_GPS
      - SAMPLE_SOURCE_TYPE_STRIDE
      - SAMPLE_SOURCE_TYPE_BIKE_PEDAL
      - SAMPLE_SOURCE_TYPE_BIKE_WHEEL
      - SAMPLE_SOURCE_TYPE_BIKE_CRANK
    default: SAMPLE_SOURCE_TYPE_UNSPECIFIED
    description: The sample source type.
    title: SampleSourceType
  CompletedRoundCompletedRoundType:
    type: string
    example: COMPLETED_ROUND_TYPE_AMRAP
    enum:
      - COMPLETED_ROUND_TYPE_UNSPECIFIED
      - COMPLETED_ROUND_TYPE_AMRAP
      - COMPLETED_ROUND_TYPE_EMOM
      - COMPLETED_ROUND_TYPE_NORMAL
    default: COMPLETED_ROUND_TYPE_UNSPECIFIED
    description: The completed round type.
    title: CompletedRoundType
  CompletedRoundWorkoutPhase:
    type: string
    example: WORKOUT_PHASE_WARMUP
    enum:
      - WORKOUT_PHASE_UNSPECIFIED
      - WORKOUT_PHASE_WARMUP
      - WORKOUT_PHASE_WORK
      - WORKOUT_PHASE_COOLDOWN
    default: WORKOUT_PHASE_UNSPECIFIED
    description: The workout phase.
    title: WorkoutPhase
  CompletedSetCompletedSetType:
    type: string
    example: SET_TYPE_WORK
    enum:
      - SET_TYPE_UNSPECIFIED
      - SET_TYPE_WORK
      - SET_TYPE_RECOVERY
      - SET_TYPE_HR_RECOVERY
    default: SET_TYPE_UNSPECIFIED
    description: The completed set type.
    title: CompletedSetType
  CompletedSetResistanceType:
    type: string
    example: RESISTANCE_BODY_WEIGHT
    enum:
      - RESISTANCE_UNSPECIFIED
      - RESISTANCE_BODY_WEIGHT
    default: RESISTANCE_UNSPECIFIED
    description: The resistance type.
    title: ResistanceType
  HillHillType:
    type: string
    example: HILL_TYPE_UPHILL
    enum:
      - HILL_TYPE_UNKNOWN
      - HILL_TYPE_UPHILL
      - HILL_TYPE_DOWNHILL
    default: HILL_TYPE_UNKNOWN
    description: The hill type.
    title: HillType
  IntervalValuesSampleType:
    type: string
    example: HEART_RATE
    enum:
      - UNKNOWN_INTERVAL
      - ALTITUDE
      - SPEED
      - DISTANCE
      - TEMPERATURE
      - FORWARD_ACCELERATION
      - LEFT_RIGHT_BALANCE
      - HEART_RATE
      - CADENCE
      - STRIDE_LENGTH
      - MOVING_TYPE
      - LEFT_CRANK_CURRENT_POWER
      - LEFT_CRANK_CUMULATIVE_REVOLUTIONS
      - LEFT_CRANK_CUMULATIVE_TIMESTAMP_MILLIS
      - LEFT_CRANK_FORCE_MAGNITUDE_MIN
      - LEFT_CRANK_FORCE_MAGNITUDE_MAX
      - LEFT_CRANK_FORCE_MAGNITUDE_MIN_ANGLE
      - LEFT_CRANK_FORCE_MAGNITUDE_MAX_ANGLE
      - LEFT_CRANK_BOTTOM_DEAD_SPOT_ANGLE
      - LEFT_CRANK_TOP_DEAD_SPOT_ANGLE
      - RIGHT_CRANK_CURRENT_POWER
      - RIGHT_CRANK_CUMULATIVE_REVOLUTIONS
      - RIGHT_CRANK_CUMULATIVE_TIMESTAMP_MILLIS
      - RIGHT_CRANK_FORCE_MAGNITUDE_MIN
      - RIGHT_CRANK_FORCE_MAGNITUDE_MAX
      - RIGHT_CRANK_FORCE_MAGNITUDE_MIN_ANGLE
      - RIGHT_CRANK_FORCE_MAGNITUDE_MAX_ANGLE
      - RIGHT_CRANK_BOTTOM_DEAD_SPOT_ANGLE
      - RIGHT_CRANK_TOP_DEAD_SPOT_ANGLE
      - BODY_TEMPERATURE
    default: UNKNOWN_INTERVAL
    description: The sample type.
    title: SampleType
  PhysicalInformationMaximumAerobicSpeedSource:
    type: string
    example: MAXIMUM_AEROBIC_SPEED_SOURCE_USER
    enum:
      - MAXIMUM_AEROBIC_SPEED_SOURCE_UNSPECIFIED
      - MAXIMUM_AEROBIC_SPEED_SOURCE_ESTIMATE
      - MAXIMUM_AEROBIC_SPEED_SOURCE_USER
    default: MAXIMUM_AEROBIC_SPEED_SOURCE_UNSPECIFIED
    description: The maximum aerobic speed source of the user.
    title: MaximumAerobicSpeedSource
  RunningTestRunningTestCategory:
    type: string
    example: RUNNING_TEST_CATEGORY_MAXIMAL
    enum:
      - RUNNING_TEST_CATEGORY_UNKNOWN
      - RUNNING_TEST_CATEGORY_MAXIMAL
      - RUNNING_TEST_CATEGORY_SUBMAXIMAL
      - RUNNING_TEST_CATEGORY_FAILED
    default: RUNNING_TEST_CATEGORY_UNKNOWN
    description: The running test category.
    title: RunningTestCategory
  StatisticsStatisticsType:
    type: string
    example: STATISTICS_TYPE_SPEED
    enum:
      - STATISTICS_TYPE_UNSPECIFIED
      - STATISTICS_TYPE_CADENCE
      - STATISTICS_TYPE_HEART_RATE
      - STATISTICS_TYPE_INCLINE
      - STATISTICS_TYPE_POWER
      - STATISTICS_TYPE_SPEED
      - STATISTICS_TYPE_STRIDE_LENGTH
      - STATISTICS_TYPE_ALTITUDE
      - STATISTICS_TYPE_LEFT_RIGHT_BALANCE
      - STATISTICS_TYPE_BODY_TEMPERATURE
    default: STATISTICS_TYPE_UNSPECIFIED
    description: The statistics type.
    title: StatisticsType
  SwimmingStatisticsPoolUnit:
    type: string
    example: POOL_UNIT_METERS
    enum:
      - POOL_UNIT_UNSPECIFIED
      - POOL_UNIT_METERS
      - POOL_UNIT_YARDS
    default: POOL_UNIT_UNSPECIFIED
    description: The pool unit.
    title: PoolUnit
  TrainingLoadReportLoadInterpretation:
    type: string
    example: LOAD_INTERPRETATION_MEDIUM
    enum:
      - LOAD_INTERPRETATION_UNKNOWN
      - LOAD_INTERPRETATION_VERY_LOW
      - LOAD_INTERPRETATION_LOW
      - LOAD_INTERPRETATION_MEDIUM
      - LOAD_INTERPRETATION_HIGH
      - LOAD_INTERPRETATION_VERY_HIGH
      - LOAD_INTERPRETATION_NOT_AVAILABLE
    default: LOAD_INTERPRETATION_UNKNOWN
    description: The load interpretation.
    title: LoadInterpretation
  TrainingLoadReportSessionRPE:
    type: string
    example: RPE_MODERATE
    enum:
      - RPE_UNKNOWN
      - RPE_NONE
      - RPE_EASY
      - RPE_LIGHT
      - RPE_FAIRLY_BRISK
      - RPE_BRISK
      - RPE_MODERATE
      - RPE_FAIRLY_HARD
      - RPE_HARD
      - RPE_EXHAUSTING
      - RPE_EXTREME
    default: RPE_UNKNOWN
    description: The session RPE (rate of perceived exertion).
    title: SessionRPE
  TrainingSessionTrainingBenefit:
    type: string
    example: TRAINING_BENEFIT_RECOVERY_TRAINING
    enum:
      - TRAINING_BENEFIT_UNSPECIFIED
      - TRAINING_BENEFIT_NONE
      - TRAINING_BENEFIT_RECOVERY_TRAINING
      - TRAINING_BENEFIT_BASIC_TRAINING
      - TRAINING_BENEFIT_BASIC_TRAINING_LONG
      - TRAINING_BENEFIT_BASIC_AND_STEADY_STATE_TRAINING
      - TRAINING_BENEFIT_BASIC_AND_STEADY_STATE_TRAINING_LONG
      - TRAINING_BENEFIT_STEADY_STATE_TRAINING
      - TRAINING_BENEFIT_STEADY_STATE_AND_BASIC_TRAINING
      - TRAINING_BENEFIT_STEADY_STATE_AND_BASIC_TRAINING_LONG
      - TRAINING_BENEFIT_STEADY_STATE_TRAINING_PLUS
      - TRAINING_BENEFIT_STEADY_STATE_AND_TEMPO_TRAINING
      - TRAINING_BENEFIT_TEMPO_AND_STEADY_STATE_TRAINING
      - TRAINING_BENEFIT_TEMPO_TRAINING
      - TRAINING_BENEFIT_TEMPO_TRAINING_PLUS
      - TRAINING_BENEFIT_TEMPO_AND_MAXIMUM_TRAINING
      - TRAINING_BENEFIT_MAXIMUM_TRAINING
      - TRAINING_BENEFIT_MAXIMUM_AND_TEMPO_TRAINING
      - TRAINING_BENEFIT_MAXIMUM_TRAINING_PLUS
    default: TRAINING_BENEFIT_UNSPECIFIED
    description: The training benefit.
    title: TrainingBenefit
  TrainingSessionTrainingStartTrigger:
    type: string
    example: TRAINING_START_MANUAL
    enum:
      - TRAINING_START_TRIGGER_UNSPECIFIED
      - TRAINING_START_MANUAL
      - TRAINING_START_AUTOMATIC_TRAINING_DETECTION
    default: TRAINING_START_TRIGGER_UNSPECIFIED
    description: The training start trigger.
    title: TrainingStartTrigger
  WalkingTestVO2maxFitnessClass:
    type: string
    example: VO2MAX_FITNESS_CLASS_GOOD
    enum:
      - VO2MAX_FITNESS_CLASS_UNRECOGNIZED
      - VO2MAX_FITNESS_CLASS_VERY_LOW
      - VO2MAX_FITNESS_CLASS_LOW
      - VO2MAX_FITNESS_CLASS_FAIR
      - VO2MAX_FITNESS_CLASS_MODERATE
      - VO2MAX_FITNESS_CLASS_GOOD
      - VO2MAX_FITNESS_CLASS_VERY_GOOD
      - VO2MAX_FITNESS_CLASS_ELITE
    default: VO2MAX_FITNESS_CLASS_UNRECOGNIZED
    description: The VO2max fitness class.
    title: VO2maxFitnessClass
  WalkingTestWalkingTestCategory:
    type: string
    example: WALKING_TEST_CATEGORY_TIMED_15_MIN
    enum:
      - WALKING_TEST_CATEGORY_UNKNOWN
      - WALKING_TEST_CATEGORY_FAILED
      - WALKING_TEST_CATEGORY_TIMED_15_MIN
    default: WALKING_TEST_CATEGORY_UNKNOWN
    description: The walking test category.
    title: WalkingTestCategory
  ZonesZoneType:
    type: string
    example: ZONE_TYPE_HEART_RATE
    enum:
      - ZONE_TYPE_UNSPECIFIED
      - ZONE_TYPE_HEART_RATE
      - ZONE_TYPE_POWER
      - ZONE_TYPE_SPEED
      - ZONE_TYPE_FIT_FAT
    default: ZONE_TYPE_UNSPECIFIED
    description: The zone type.
    title: ZoneType
  domainstrainingsessionErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
  domainstrainingsessionListResponse:
    type: object
    properties:
      trainingSessions:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionTrainingSession'
  domainstrainingsessionLocation:
    type: object
    properties:
      longitude:
        type: number
        format: double
        example: -122.4194
        description: Longitude, in degrees.
        maximum: 180
        minimum: -180
      latitude:
        type: number
        format: double
        example: 37.7749
        description: Latitude, in degrees.
        maximum: 90
        minimum: -90
      altitude:
        type: number
        format: double
        example: 15
        description: Altitude above sea level, in meters.
        maximum: 9000
        minimum: -550
      elapsedMillis:
        type: integer
        format: int64
        description: Elapsed time in milliseconds since the route's start time.
    title: Location
    required:
      - longitude
      - latitude
      - altitude
      - elapsedMillis
  domainstrainingsessionPhysicalInformation:
    type: object
    properties:
      modified:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      created:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      birthday:
        type: string
        example: "2025-01-01"
        description: Date in ISO 8601 format.
      sex:
        $ref: '#/definitions/domainstrainingsessionPhysicalInformationSex'
      weightKg:
        type: number
        format: float
        example: 88.5
        description: Weight in kilograms.
        maximum: 300
        minimum: 15
      heightCm:
        type: integer
        format: int64
        example: 180
        description: Height in centimeters.
        maximum: 240
        minimum: 90
      maximumHeartRate:
        type: integer
        format: int64
        example: 128
        description: Maximum heart rate in beats per minute (bpm).
        maximum: 240
      restingHeartRate:
        type: integer
        format: int64
        example: 57
        description: Resting heart rate in beats per minute (bpm).
        maximum: 240
      aerobicThreshold:
        type: integer
        format: int64
        example: 137
        description: Aerobic threshold in beats per minute (bpm).
        maximum: 216
        minimum: 50
      anaerobicThreshold:
        type: integer
        format: int64
        example: 182
        description: Anaerobic threshold in beats per minute (bpm).
        maximum: 228
        minimum: 70
      vo2Max:
        type: integer
        format: int64
        example: 55
        description: VO2 max in ml/kg/min.
        maximum: 95
        minimum: 10
      trainingBackground:
        $ref: '#/definitions/domainstrainingsessionPhysicalInformationTrainingBackground'
      typicalDay:
        $ref: '#/definitions/domainstrainingsessionPhysicalInformationTypicalDay'
      metThreshold:
        type: number
        format: double
        example: 2.125
        description: Metabolic equivalent of task (MET) in METs. 0.0 means not set. Otherwise range [0.875 - 31.875] in steps of 0.125.
        maximum: 31.857
      weeklyRtSum:
        type: number
        format: double
      functionalThresholdPower:
        type: integer
        format: int64
        example: 250
        description: Functional threshold power (FTP) in watts.
        maximum: 600
        minimum: 60
      speedCalibrationOffset:
        type: number
        format: float
        example: 0
        maximum: 50
        minimum: -50
      weightSource:
        $ref: '#/definitions/domainstrainingsessionPhysicalInformationWeightSource'
      sleepGoalMinutes:
        type: integer
        format: int64
        example: 450
        description: Sleep goal in minutes.
        maximum: 1200
        minimum: 240
      maximumAerobicPower:
        type: integer
        format: int64
        example: 300
        description: Maximum aerobic power in watts.
        maximum: 900
        minimum: 60
      maximumAerobicSpeedKmh:
        type: number
        format: float
        example: 12.3
        description: Maximum aerobic speed in km/h.
        maximum: 27.3
        minimum: 2.8
      maximumAerobicSpeedSource:
        $ref: '#/definitions/PhysicalInformationMaximumAerobicSpeedSource'
    title: PhysicalInformation
    required:
      - modified
      - created
      - birthday
  domainstrainingsessionPhysicalInformationSex:
    type: string
    example: SEX_MALE
    enum:
      - SEX_UNSPECIFIED
      - SEX_MALE
      - SEX_FEMALE
    default: SEX_UNSPECIFIED
    description: The sex of the user.
    title: Sex
  domainstrainingsessionPhysicalInformationTrainingBackground:
    type: string
    example: TRAINING_BACKGROUND_REGULAR
    enum:
      - TRAINING_BACKGROUND_UNSPECIFIED
      - TRAINING_BACKGROUND_OCCASIONAL
      - TRAINING_BACKGROUND_REGULAR
      - TRAINING_BACKGROUND_FREQUENT
      - TRAINING_BACKGROUND_HEAVY
      - TRAINING_BACKGROUND_SEMI_PRO
      - TRAINING_BACKGROUND_PRO
    default: TRAINING_BACKGROUND_UNSPECIFIED
    description: The training background of the user.
    title: TrainingBackground
  domainstrainingsessionPhysicalInformationTypicalDay:
    type: string
    example: TYPICAL_DAY_MOSTLY_SITTING
    enum:
      - TYPICAL_DAY_UNSPECIFIED
      - TYPICAL_DAY_MOSTLY_SITTING
      - TYPICAL_DAY_TYPICAL_DAY_MOSTLY_STANDING
      - TYPICAL_DAY_MOSTLY_MOVING
    default: TYPICAL_DAY_UNSPECIFIED
    description: The typical day of the user.
    title: TypicalDay
  domainstrainingsessionPhysicalInformationWeightSource:
    type: string
    example: WEIGHT_SOURCE_SOURCE_USER
    enum:
      - WEIGHT_SOURCE_UNSPECIFIED
      - WEIGHT_SOURCE_SOURCE_DEFAULT
      - WEIGHT_SOURCE_SOURCE_ESTIMATE
      - WEIGHT_SOURCE_SOURCE_USER
      - WEIGHT_SOURCE_SOURCE_MEASURED
      - WEIGHT_SOURCE_SOURCE_KEEP
    default: WEIGHT_SOURCE_UNSPECIFIED
    description: The weight source of the user.
    title: WeightSource
  domainstrainingsessionRoute:
    type: object
    properties:
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      wayPoints:
        type: array
        items:
          type: object
          $ref: '#/definitions/domainstrainingsessionLocation'
          required:
            - way_points
        description: List of waypoints.
    title: Route
    required:
      - startTime
  domainstrainingsessionSportReference:
    type: object
    properties:
      id:
        type: string
        example: "22353647432"
        maxLength: 36
    title: SportReference
    required:
      - id
  domainstrainingsessionZones:
    type: object
    properties:
      type:
        $ref: '#/definitions/ZonesZoneType'
      zones:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionZone'
          required:
            - zones
    title: Zones
    required:
      - type
  trainingsessionApplicationReference:
    type: object
    properties:
      name:
        type: string
        example: Polar Flow
        maxLength: 36
    title: ApplicationReference
    required:
      - name
  trainingsessionCalibrationOffset:
    type: object
    properties:
      sampleSourceType:
        $ref: '#/definitions/CalibrationOffsetSampleSourceType'
      value:
        type: number
        format: double
        description: Value unit and range depends on the sample source type.
    title: CalibrationOffset
    required:
      - sampleSourceType
      - value
  trainingsessionCompletedRound:
    type: object
    properties:
      type:
        $ref: '#/definitions/CompletedRoundCompletedRoundType'
      startTimeDeltaMillis:
        type: integer
        format: int64
        example: 60000
        description: Elapsed time in milliseconds since the start of exercise.
      endTimeDeltaMillis:
        type: integer
        format: int64
        example: 80000
        description: Elapsed time in milliseconds since the start of exercise.
      workoutPhase:
        $ref: '#/definitions/CompletedRoundWorkoutPhase'
      completedSets:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionCompletedSet'
    title: CompletedRound
    required:
      - type
      - startTimeDeltaMillis
      - endTimeDeltaMillis
  trainingsessionCompletedSet:
    type: object
    properties:
      type:
        $ref: '#/definitions/CompletedSetCompletedSetType'
      startTimeDeltaMillis:
        type: integer
        format: int64
        example: 60000
        description: Elapsed time in milliseconds since the start of exercise.
      endTimeDeltaMillis:
        type: integer
        format: int64
        example: 80000
        description: Elapsed time in milliseconds since the start of exercise.
      resistanceType:
        $ref: '#/definitions/CompletedSetResistanceType'
        description: Resistance type required when set type is WORK, otherwise it is optional.
      movement:
        type: string
        title: Movement name
      avgHeartRate:
        type: integer
        format: int64
        example: 120
        description: Average heart rate in beats per minute (bpm).
        maximum: 240
      maxHeartRate:
        type: integer
        format: int64
        example: 140
        description: Maximum heart rate in beats per minute (bpm).
        maximum: 240
    title: CompletedSet
    required:
      - type
      - startTimeDeltaMillis
      - endTimeDeltaMillis
  trainingsessionCyclingTest:
    type: object
    properties:
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      endTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      warmup:
        $ref: '#/definitions/trainingsessionTestPhase'
      performance:
        $ref: '#/definitions/trainingsessionTestPhase'
      cooldown:
        $ref: '#/definitions/trainingsessionTestPhase'
      fitnessClass:
        $ref: '#/definitions/trainingsessionCyclingTestFitnessClass'
      functionalThresholdPower:
        type: integer
        format: int64
        example: 250
        description: Functional threshold power (FTP) in watts.
        maximum: 600
        minimum: 60
      previousFunctionalThresholdPower:
        type: integer
        format: int64
        example: 240
        description: Previous functional threshold power (FTP) in watts.
        maximum: 600
        minimum: 60
      vo2max:
        type: integer
        format: int64
        example: 55
        description: VO2max in ml/kg/min.
        maximum: 95
        minimum: 10
    title: CyclingTest
    required:
      - startTime
      - endTime
      - warmup
      - performance
      - cooldown
      - fitnessClass
      - functionalThresholdPower
      - vo2max
  trainingsessionCyclingTestFitnessClass:
    type: string
    example: FITNESS_CLASS_GOOD
    enum:
      - FITNESS_CLASS_UNRECOGNIZED
      - FITNESS_CLASS_UNTRAINED
      - FITNESS_CLASS_FAIR
      - FITNESS_CLASS_MODERATE
      - FITNESS_CLASS_GOOD
      - FITNESS_CLASS_VERY_GOOD
      - FITNESS_CLASS_EXCELLENT
      - FITNESS_CLASS_EXCEPTIONAL
      - FITNESS_CLASS_WORLD_CLAS
    default: FITNESS_CLASS_UNRECOGNIZED
    description: The fitness class.
    title: FitnessClass
  trainingsessionDownHill:
    type: object
    properties:
      downhillNumber:
        type: integer
        format: int64
        description: Downhill index number.
      descentMeters:
        type: number
        format: float
        example: 80
        description: Descent in meters.
        maximum: 9.999e+06
      avgDeclinePercent:
        type: number
        format: float
        example: 4
        description: Average decline in percentage.
        maximum: 100
    title: DownHill
    required:
      - downhillNumber
      - descentMeters
      - avgDeclinePercent
  trainingsessionExercise:
    type: object
    properties:
      identifier:
        $ref: '#/definitions/trainingsessionExerciseReference'
      created:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      modified:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      stopTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      durationMillis:
        type: integer
        format: int64
        example: 3.6e+06
        description: Milliseconds. Maximum value 99 hours 59 mins 59 secs and 999 milliseconds.
        maximum: 3.6e+08
      distanceMeters:
        type: number
        format: double
        example: 9840
        description: Meters. Maximum value 9999 km.
        maximum: 9.999e+06
      calories:
        type: integer
        format: int64
        example: 500
        description: Calories, measured in kilocalories (kcal).
        maximum: 65535
      fatPercentage:
        type: integer
        format: int64
        example: 30
        description: Percentage of fat burned from total energy consumption in the exercise session.
        maximum: 100
      recoveryTimeMillis:
        type: string
        format: uint64
        example: 3.6e+06
        description: Milliseconds. Maximum value 45 days.
        maximum: 6.5535e+07
      trainingLoad:
        type: integer
        format: int64
        example: 350
        maximum: 65535
      carboPercentage:
        type: integer
        format: int64
        example: 60
        description: Percentage of carbohydrates burned from total energy consumption in the exercise session.
        maximum: 100
      proteinPercentage:
        type: integer
        format: int64
        example: 10
        description: Percentage of protein burned from total energy consumption in the exercise session.
        maximum: 100
      runningIndex:
        type: integer
        format: int64
        example: 55
        maximum: 100
        minimum: 25
      latitude:
        type: number
        format: double
        example: 37.7749
        description: Latitude in degrees.
        maximum: 90
        minimum: -90
      longitude:
        type: number
        format: double
        example: -122.4194
        description: Longitude in degrees.
        maximum: 180
        minimum: -180
      ascentMeters:
        type: number
        format: float
        example: 500
        description: Ascent in meters.
        maximum: 99000
      descentMeters:
        type: number
        format: float
        example: 450
        description: Descent in meters.
        maximum: 99000
      sprintCounter:
        type: integer
        format: int32
        example: 15
        maximum: 65535
      walkingDurationMillis:
        type: integer
        format: int64
        example: 3.6e+06
        description: Walking duration in milliseconds. Maximum 99 hours 59 mins 59 secs and 999 milliseconds.
        maximum: 3.6e+08
      walkingDistanceMeters:
        type: number
        format: double
        example: 9840
        description: Walking distance in meters. Maximum value 9999 km.
        maximum: 9.999e+06
      speedCalibrationOffset:
        type: number
        format: double
        example: 0
        maximum: 50
        minimum: -50
      timezoneOffsetMinutes:
        type: integer
        format: int32
        example: 180
        description: Timezone offset in minutes.
        maximum: 840
        minimum: -720
      calibrationOffsets:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionCalibrationOffset'
      nutritionData:
        $ref: '#/definitions/trainingsessionNutritionData'
      sport:
        $ref: '#/definitions/domainstrainingsessionSportReference'
      strengthTrainingResults:
        $ref: '#/definitions/trainingsessionStrengthTrainingResults'
      trainingLoadReport:
        $ref: '#/definitions/trainingsessionTrainingLoadReport'
      laps:
        $ref: '#/definitions/trainingsessionLaps'
      statistics:
        $ref: '#/definitions/trainingsessionExerciseStatistics'
      zones:
        type: array
        items:
          type: object
          $ref: '#/definitions/domainstrainingsessionZones'
      samples:
        $ref: '#/definitions/trainingsessionSamples'
      routes:
        $ref: '#/definitions/trainingsessionRoutes'
      pauseTimes:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionPauseTime'
    required:
      - created
      - modified
      - startTime
      - stopTime
  trainingsessionExerciseReference:
    type: object
    properties:
      id:
        type: string
        example: "2353647432"
        maxLength: 36
    title: ExerciseReference
    required:
      - id
  trainingsessionExerciseStatistics:
    type: object
    properties:
      statistics:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionStatistics'
      swimmingStatistics:
        $ref: '#/definitions/trainingsessionSwimmingStatistics'
      trainingPeaksStatistics:
        $ref: '#/definitions/trainingsessionTrainingPeaksStatistics'
    title: ExerciseStatistics
  trainingsessionFavoriteTargetReference:
    type: object
    properties:
      id:
        type: string
        example: "2353647432"
        maxLength: 36
    title: FavoriteTargetReference
    required:
      - id
  trainingsessionHill:
    type: object
    properties:
      type:
        $ref: '#/definitions/HillHillType'
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      endTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      upHill:
        $ref: '#/definitions/trainingsessionUpHill'
        description: Relevant only for uphill type.
      downHill:
        $ref: '#/definitions/trainingsessionDownHill'
        description: Relevant only for downhill type.
      distanceMeters:
        type: integer
        format: int64
        example: 500
        description: Distance in meters.
        maximum: 9.999e+06
      maxSpeedKmh:
        type: number
        format: float
        example: 25
        description: Maximum speed in km/h.
        maximum: 27.3
        minimum: 2.8
      avgSpeedKmh:
        type: number
        format: float
        example: 20
        description: Average speed in km/h.
        maximum: 27.3
        minimum: 2.8
      startAltitudeMeters:
        type: number
        format: float
        example: 100
        description: Start altitude in meters.
        maximum: 9000
        minimum: -550
      endAltitudeMeters:
        type: number
        format: float
        example: 150
        description: End altitude in meters.
        maximum: 9000
        minimum: -550
      avgHrBpm:
        type: integer
        format: int64
        example: 80
        description: Average heart rate in beats per minute (bpm).
        maximum: 240
      maxHrBpm:
        type: integer
        format: int64
        example: 120
        description: Maximum heart rate in beats per minute (bpm).
        maximum: 240
      duration:
        type: integer
        format: int64
        example: 900000
      avgCadence:
        type: integer
        format: int64
        example: 80
        description: Average cadence in rounds per minute (rpm).
        maximum: 199
      maxCadence:
        type: integer
        format: int64
        example: 90
        description: Maximum cadence in rounds per minute (rpm).
        maximum: 199
      avgPower:
        type: integer
        format: int64
        example: 200
        description: Average power in watts.
        maximum: 900
      maxPower:
        type: integer
        format: int64
        example: 730
        description: Maximum power in watts.
        maximum: 900
    title: Hill
    required:
      - type
      - startTime
      - endTime
      - distanceMeters
      - maxSpeedKmh
      - avgSpeedKmh
      - startAltitudeMeters
      - endAltitudeMeters
      - avgHrBpm
      - maxHrBpm
      - duration
      - avgCadence
      - maxCadence
      - avgPower
      - maxPower
  trainingsessionHillSplits:
    type: object
    properties:
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      endTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      totalUphillDistanceMeters:
        type: integer
        format: int64
        example: 1500
        description: Total uphill distance in meters.
        maximum: 9.999e+06
      totalDownhillDistanceMeters:
        type: integer
        format: int64
        example: 1000
        description: Total downhill distance in meters.
        maximum: 9.999e+06
      totalUphillCount:
        type: integer
        format: int64
        example: 10
        maximum: 65535
      totalDownhillCount:
        type: integer
        format: int64
        example: 9
        maximum: 65535
      hills:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionHill'
          required:
            - hills
    title: HillSplits
    required:
      - startTime
      - endTime
      - totalUphillDistanceMeters
      - totalDownhillDistanceMeters
      - totalUphillCount
      - totalDownhillCount
  trainingsessionIntervalValues:
    type: object
    properties:
      type:
        $ref: '#/definitions/IntervalValuesSampleType'
      intervalMillis:
        type: integer
        format: int64
        example: 1000
        description: Values interval in milliseconds.
      values:
        type: array
        example:
          - 88
          - 89
          - 90
        items:
          type: number
          format: double
          required:
            - values
        description: Values for the sample type. Range depends on the sample type.
    title: IntervalValues
    required:
      - type
      - intervalMillis
  trainingsessionLap:
    type: object
    properties:
      splitTimeMillis:
        type: integer
        format: int64
        description: Elapsed time from start of exercise start time as milliseconds.
      durationMillis:
        type: integer
        format: int64
        example: 600000
        description: Duration in milliseconds.
        maximum: 3.6e+08
      distanceMeters:
        type: number
        format: double
        example: 1500
        description: Distance in meters.
        maximum: 9.999e+06
      startLocationLatitude:
        type: number
        format: double
        example: 37.7749
        description: Latitude in degrees.
        maximum: 90
        minimum: -90
      startLocationLongitude:
        type: number
        format: double
        example: -122.4194
        title: Longitude in degrees
        maximum: 180
        minimum: -180
      startLocationAltitude:
        type: number
        format: double
        example: 15
        description: Altitude in meters.
        maximum: 9000
        minimum: -550
      startLocationTimeMillis:
        type: integer
        format: int64
        description: Elapsed time from start of exercise start time as milliseconds.
      ascentMeters:
        type: number
        format: double
        example: 100
        description: Ascent in meters.
        maximum: 9.999e+06
      descentMeters:
        type: number
        format: double
        example: 80
        description: Descent in meters.
        maximum: 9.999e+06
      statistics:
        $ref: '#/definitions/trainingsessionLapStatistics'
    title: Lap
    required:
      - splitTimeMillis
      - durationMillis
  trainingsessionLapStatistics:
    type: object
    properties:
      statistics:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionStatistics'
      swimmingStatistics:
        $ref: '#/definitions/trainingsessionLapSwimStatistics'
      trainingPeaksStatistics:
        $ref: '#/definitions/trainingsessionTrainingPeaksStatistics'
    title: LapStatistics
  trainingsessionLapSwimStatistics:
    type: object
    properties:
      avgSecsPerPool:
        type: number
        format: float
        description: Average duration taken from pool end to end in seconds.
      poolsSwum:
        type: integer
        format: int64
        example: 10
        description: Number of pools swum.
        maximum: 65535
      strokes:
        type: integer
        format: int64
        example: 81
        description: Total number of strokes swum.
        maximum: 65535
    title: LapSwimStatistics
  trainingsessionLaps:
    type: object
    properties:
      laps:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionLap'
        description: List of manual laps.
      autoLaps:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionLap'
        description: List automatic laps.
    title: Laps
  trainingsessionNutritionData:
    type: object
    properties:
      carbohydrateGrams:
        type: number
        format: float
      proteinGrams:
        type: number
        format: float
      fatGrams:
        type: number
        format: float
    title: NutritionData
  trainingsessionPauseTime:
    type: object
    properties:
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      endTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
    title: PauseTime
    required:
      - startTime
      - endTime
  trainingsessionProductReference:
    type: object
    properties:
      modelName:
        type: string
        example: POLAR VANTAGE V
        maxLength: 16
    title: ProductReference
    required:
      - modelName
  trainingsessionRRSample:
    type: object
    properties:
      durationMillis:
        type: integer
        format: int64
        example: 800
        description: Duration in milliseconds.
      offline:
        type: boolean
        description: '''True'' in case the sample is marked offline.'
    title: RRSample
    required:
      - durationMillis
      - offline
  trainingsessionRoutes:
    type: object
    properties:
      route:
        $ref: '#/definitions/domainstrainingsessionRoute'
      transitionRoute:
        $ref: '#/definitions/domainstrainingsessionRoute'
        description: Only populated for multisport training sessions; not set for single exercise sessions.
    title: Routes
    required:
      - route
  trainingsessionRunningTest:
    type: object
    properties:
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      endTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      warmup:
        $ref: '#/definitions/trainingsessionTestPhase'
      performance:
        $ref: '#/definitions/trainingsessionTestPhase'
      cooldown:
        $ref: '#/definitions/trainingsessionTestPhase'
      category:
        $ref: '#/definitions/RunningTestRunningTestCategory'
      maxAerobicSpeedKmh:
        type: number
        format: float
        description: Maximum aerobic speed in km/h.
        maximum: 27.3
        minimum: 2.8
      maxAerobicPower:
        type: integer
        format: int64
        example: 300
        description: Maximum aerobic power in watts.
        maximum: 900
        minimum: 60
      maxHrBpm:
        type: integer
        format: int64
        example: 182
        description: Maximum heart rate in beats per minute (bpm).
        maximum: 240
      vo2max:
        type: integer
        format: int64
        example: 55
        description: VO2max in ml/kg/min.
        maximum: 95
        minimum: 10
      initialSpeedKmh:
        type: integer
        format: int64
        example: 8
        description: Initial speed in km/h.
        maximum: 27.3
        minimum: 2.8
      speedIncreaseRate:
        type: number
        format: float
        example: 0.5
      qualityRatePercent:
        type: integer
        format: int64
        example: 95
        description: Quality rate in percentage.
        maximum: 100
    title: RunningTest
    required:
      - startTime
      - endTime
      - warmup
      - performance
      - cooldown
      - category
      - maxAerobicSpeedKmh
      - maxAerobicPower
      - maxHrBpm
      - vo2max
      - initialSpeedKmh
      - speedIncreaseRate
      - qualityRatePercent
  trainingsessionSamples:
    type: object
    properties:
      samples:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionIntervalValues'
      transitionSamples:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionIntervalValues'
        description: Only populated for multisport training sessions; not set for single exercise sessions.
      rrSamples:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionRRSample'
      transitionRrSamples:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionRRSample'
        description: Only populated for multisport training sessions; not set for single exercise sessions.
      swimmingPhases:
        $ref: '#/definitions/trainingsessionSwimmingPhases'
    title: Samples
  trainingsessionStatistics:
    type: object
    properties:
      type:
        $ref: '#/definitions/StatisticsStatisticsType'
      min:
        type: number
        format: double
        description: Unit and range depends on the statistics type.
      avg:
        type: number
        format: double
        description: Unit and range depends on the statistics type.
      max:
        type: number
        format: double
        description: Unit and range depends on the statistics type.
    title: Statistics
    required:
      - type
  trainingsessionStrengthTrainingResults:
    type: object
    properties:
      completedRounds:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionCompletedRound'
    title: StrengthTrainingResults
  trainingsessionSwimmingPhase:
    type: object
    properties:
      startOffsetMillis:
        type: integer
        format: int64
        example: 32423
        description: Elapsed time from start of swimming phases start time as milliseconds.
      durationMillis:
        type: integer
        format: int64
        example: 67500
        description: Duration of swimming phase in milliseconds.
      style:
        $ref: '#/definitions/trainingsessionSwimmingPhaseSwimmingStyle'
      strokes:
        type: integer
        format: int64
        example: 31
        maximum: 65535
    title: SwimmingPhase
    required:
      - startOffsetMillis
      - durationMillis
      - style
  trainingsessionSwimmingPhaseSwimmingStyle:
    type: string
    example: BREASTSTROKE
    enum:
      - OTHER
      - TURN
      - OTHER_SWIMMING
      - FREESTYLE
      - BREASTSTROKE
      - BACKSTROKE
      - BUTTERFLY
      - DRILL
    default: OTHER
    description: The swimming style.
    title: SwimmingStyle
  trainingsessionSwimmingPhases:
    type: object
    properties:
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time zone.
      phases:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionSwimmingPhase'
          required:
            - phases
    title: SwimmingPhases
    required:
      - startTime
  trainingsessionSwimmingStatistics:
    type: object
    properties:
      distanceMeters:
        type: number
        format: float
        example: 1500
        description: Distance in meters.
        maximum: 9.9999e+07
      totalStrokeCount:
        type: integer
        format: int64
        example: 100
        maximum: 65535
      poolsSwum:
        type: integer
        format: int64
        example: 10
        maximum: 65535
      poolUnits:
        $ref: '#/definitions/SwimmingStatisticsPoolUnit'
        title: Used pool unit -setting
      poolLength:
        type: number
        format: float
        example: 25
        description: Pool length in meters.
        maximum: 999900
      swimmingStyles:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionSwimmingStyleStatistics'
    title: SwimmingStatistics
    required:
      - distanceMeters
  trainingsessionSwimmingStyleStatistics:
    type: object
    properties:
      style:
        $ref: '#/definitions/trainingsessionSwimmingStyleStatisticsSwimmingStyle'
      distanceMeters:
        type: number
        format: float
        example: 500
        description: Distance in meters.
        maximum: 9.999e+06
      strokeCount:
        type: integer
        format: int64
        example: 81
        maximum: 65535
      swimmingTimeTotalMillis:
        type: integer
        format: int64
        description: Swimming time in milliseconds.
      poolTimeMinMillis:
        type: integer
        format: int64
        description: Pool time in milliseconds.
      hrAvg:
        type: integer
        format: int64
        example: 120
        description: Average heart rate in beats per minute (bpm).
        maximum: 240
      hrMax:
        type: integer
        format: int64
        example: 140
        description: Maximum heart rate in beats per minute (bpm).
        maximum: 240
      swolfAvg:
        type: number
        format: float
        example: 30
        description: Time (in seconds) and the number of strokes it takes to swim a pool length.
        maximum: 9.999e+06
    title: SwimmingStyleStatistics
    required:
      - style
      - distanceMeters
  trainingsessionSwimmingStyleStatisticsSwimmingStyle:
    type: string
    example: SWIMMING_STYLE_FREESTYLE
    enum:
      - SWIMMING_STYLE_UNSPECIFIED
      - SWIMMING_STYLE_OTHER
      - SWIMMING_STYLE_TURN
      - SWIMMING_STYLE_OTHER_SWIMMING
      - SWIMMING_STYLE_FREESTYLE
      - SWIMMING_STYLE_BREASTSTROKE
      - SWIMMING_STYLE_BACKSTROKE
      - SWIMMING_STYLE_BUTTERFLY
    default: SWIMMING_STYLE_UNSPECIFIED
    description: The swimming style.
    title: SwimmingStyle
  trainingsessionTestPhase:
    type: object
    properties:
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      endTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      durationMillis:
        type: integer
        format: int64
        example: 600000
        description: Duration in milliseconds.
        maximum: 3.6e+08
      avgHrBpm:
        type: integer
        format: int64
        example: 120
        description: Average heart rate in beats per minute (bpm).
        maximum: 240
      maxHrBpm:
        type: integer
        format: int64
        example: 140
        description: Maximum heart rate in beats per minute (bpm).
        maximum: 240
      avgSpeedKmh:
        type: number
        format: float
        example: 8
        description: Average speed in km/h.
        maximum: 27.3
        minimum: 2.8
      maxSpeedKmh:
        type: number
        format: float
        example: 10
        description: Maximum speed in km/h.
        maximum: 27.3
        minimum: 2.8
      avgCadence:
        type: integer
        format: int64
        example: 80
        description: Average cadence in rounds per minute (rpm).
        maximum: 199
      maxCadence:
        type: integer
        format: int64
        example: 90
        description: Maximum cadence in rounds per minute (rpm).
        maximum: 199
      avgPower:
        type: integer
        format: int64
        example: 200
        description: Average power in watts.
        maximum: 900
      maxPower:
        type: integer
        format: int64
        example: 730
        description: Maximum power in watts.
        maximum: 900
    title: TestPhase
    required:
      - startTime
      - endTime
      - durationMillis
      - avgHrBpm
      - maxHrBpm
      - avgSpeedKmh
      - maxSpeedKmh
      - avgCadence
      - maxCadence
      - avgPower
      - maxPower
  trainingsessionTestResults:
    type: object
    properties:
      cyclingTest:
        $ref: '#/definitions/trainingsessionCyclingTest'
      runningTest:
        $ref: '#/definitions/trainingsessionRunningTest'
      walkingTest:
        $ref: '#/definitions/trainingsessionWalkingTest'
    title: TestResults where only one of the test data type can be set at a time
  trainingsessionTrainingLoadReport:
    type: object
    properties:
      cardioLoad:
        type: number
        format: float
        example: 123.45
        maximum: 65535
      muscleLoad:
        type: number
        format: float
        example: 234.56
        maximum: 65535
      cardioLoadInterpretation:
        $ref: '#/definitions/TrainingLoadReportLoadInterpretation'
      muscleLoadInterpretation:
        $ref: '#/definitions/TrainingLoadReportLoadInterpretation'
      calculationTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: When the loads for this training session/exercise were last calculated (modified). Datetime in ISO 8601 format. UTC time.
      sessionRpe:
        $ref: '#/definitions/TrainingLoadReportSessionRPE'
        description: Session RPE (rate of perceived exertion).
      perceivedLoad:
        type: number
        format: float
        description: Perceived load value for training session.
      perceivedLoadInterpretation:
        $ref: '#/definitions/TrainingLoadReportLoadInterpretation'
        description: Perceived load interpretation.
    title: TrainingLoadReport
    required:
      - calculationTime
  trainingsessionTrainingPeaksStatistics:
    type: object
    properties:
      intensityFactor:
        type: number
        format: double
      normalizedPower:
        type: integer
        format: int32
        example: 200
        description: Normalized power in watts.
        maximum: 900
      trainingStressScore:
        type: number
        format: double
    title: TrainingPeaksStatistics
  trainingsessionTrainingSession:
    type: object
    properties:
      identifier:
        $ref: '#/definitions/trainingsessionTrainingSessionReference'
      created:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Required. Datetime in ISO 8601 format. UTC time.
      modified:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Required. Datetime in ISO 8601 format. UTC time.
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Required. Datetime in ISO 8601 format. In user local time zone.
      stopTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Required. Datetime in ISO 8601 format.
      durationMillis:
        type: integer
        format: int64
        example: 3.6e+06
        description: Milliseconds. Maximum value 99 hours 59 mins 59 secs and 999 milliseconds.
        maximum: 3.6e+08
      name:
        type: string
        example: Some training
        maxLength: 100
      feeling:
        type: number
        format: double
        example: 0.8
        maximum: 1
      deviceId:
        type: string
        example: ABC102003
        maxLength: 36
      note:
        type: string
        example: Some notes
        maxLength: 10000
      latitude:
        type: number
        format: double
        example: 37.7749
        description: Latitude in degrees.
        maximum: 90
        minimum: -90
      longitude:
        type: number
        format: double
        example: -122.4194
        description: Longitude in degrees.
        maximum: 180
        minimum: -180
      distanceMeters:
        type: number
        format: double
        example: 9840
        description: Meters. Maximum value 9999 km.
        maximum: 9.999e+06
      calories:
        type: integer
        format: int64
        example: 500
        description: Calories, measured in kilocalories (kcal).
        maximum: 65535
      trainingLoad:
        type: integer
        format: int64
        example: 350
        maximum: 65535
      trainingBenefit:
        $ref: '#/definitions/TrainingSessionTrainingBenefit'
      carboPercentage:
        type: integer
        format: int64
        example: 60
        description: Percentage of carbohydrates burned from total energy consumption.
        maximum: 100
      fatPercentage:
        type: integer
        format: int64
        example: 30
        description: Percentage of fat burned from total energy consumption.
        maximum: 100
      proteinPercentage:
        type: integer
        format: int64
        example: 10
        description: Percentage of protein burned from total energy consumption.
        maximum: 100
      recoveryTimeMillis:
        type: string
        format: uint64
        example: 3.6e+06
        description: Milliseconds. Maximum value 45 days.
        maximum: 6.5535e+07
      hrMax:
        type: integer
        format: int64
        example: 180
        description: Heart rate as beats per minute (bpm).
        maximum: 240
      hrAvg:
        type: integer
        format: int64
        example: 160
        description: Heart rate as beats per minute (bpm).
        maximum: 240
      timezoneOffsetMinutes:
        type: integer
        format: int32
        example: 180
        description: Timezone offset in minutes.
        maximum: 840
        minimum: -720
      nutritionData:
        $ref: '#/definitions/trainingsessionNutritionData'
      startTrigger:
        $ref: '#/definitions/TrainingSessionTrainingStartTrigger'
      physicalInformation:
        $ref: '#/definitions/domainstrainingsessionPhysicalInformation'
      application:
        $ref: '#/definitions/trainingsessionApplicationReference'
      sport:
        $ref: '#/definitions/domainstrainingsessionSportReference'
      product:
        $ref: '#/definitions/trainingsessionProductReference'
      trainingTarget:
        $ref: '#/definitions/trainingsessionTrainingTargetReference'
      favoriteTarget:
        $ref: '#/definitions/trainingsessionFavoriteTargetReference'
      exercises:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionExercise'
      testResults:
        $ref: '#/definitions/trainingsessionTestResults'
      hillSplits:
        $ref: '#/definitions/trainingsessionHillSplits'
      trainingLoadReport:
        $ref: '#/definitions/trainingsessionTrainingLoadReport'
      comments:
        type: array
        items:
          type: object
          $ref: '#/definitions/trainingsessionTrainingSessionComment'
    title: TrainingSession
    required:
      - created
      - modified
      - startTime
      - stopTime
      - durationMillis
  trainingsessionTrainingSessionComment:
    type: object
    properties:
      identifier:
        $ref: '#/definitions/trainingsessionTrainingSessionCommentReference'
      created:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      modified:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      note:
        type: string
        maxLength: 400
      fromOtherUser:
        type: boolean
        description: Is 'true' when comment is not from training-session user him self. E.g. from coach.
    title: TrainingSessionComment
    required:
      - created
      - modified
      - note
  trainingsessionTrainingSessionCommentReference:
    type: object
    properties:
      id:
        type: string
        maxLength: 36
    title: TrainingSessionCommentReference
    required:
      - id
  trainingsessionTrainingSessionReference:
    type: object
    properties:
      id:
        type: string
        example: "123466345"
        maxLength: 36
    title: TrainingSession reference
    required:
      - id
  trainingsessionTrainingTargetReference:
    type: object
    properties:
      id:
        type: string
        example: "2353647432"
        maxLength: 36
    title: TrainingTargetReference
    required:
      - id
  trainingsessionUpHill:
    type: object
    properties:
      uphillNumber:
        type: integer
        format: int64
        description: Uphill index number.
      ascentMeters:
        type: number
        format: float
        example: 100
        description: Ascent in meters.
        maximum: 9.999e+06
      avgInclinePercent:
        type: number
        format: float
        example: 5
        description: Average incline in percentage.
        maximum: 100
    title: UpHill
    required:
      - uphillNumber
      - ascentMeters
      - avgInclinePercent
  trainingsessionWalkingTest:
    type: object
    properties:
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      endTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      warmup:
        $ref: '#/definitions/trainingsessionTestPhase'
      performance:
        $ref: '#/definitions/trainingsessionTestPhase'
      cooldown:
        $ref: '#/definitions/trainingsessionTestPhase'
      category:
        $ref: '#/definitions/WalkingTestWalkingTestCategory'
      fitnessClass:
        $ref: '#/definitions/WalkingTestVO2maxFitnessClass'
      avgSpeedKmh:
        type: number
        format: float
        example: 8
        description: Average speed in km/h.
        maximum: 27.3
        minimum: 2.8
      maxSpeedKmh:
        type: number
        format: float
        example: 10
        description: Maximum speed in km/h.
        maximum: 27.3
        minimum: 2.8
      testDistanceMeters:
        type: number
        format: float
        example: 1500
        description: Distance in meters.
        maximum: 9.999e+06
      steps:
        type: integer
        format: int64
        example: 2000
        maximum: 65535
      avgCadence:
        type: integer
        format: int64
        example: 80
        description: Average cadence in rounds per minute (rpm).
        maximum: 199
      maxCadence:
        type: integer
        format: int64
        example: 90
        description: Maximum cadence in rounds per minute (rpm).
        maximum: 199
      testHrBpm:
        type: integer
        format: int64
        example: 120
        description: Heart rate in beats per minute (bpm).
        maximum: 240
      maxHrBpm:
        type: integer
        format: int64
        example: 140
        description: Maximum heart rate in beats per minute (bpm).
        maximum: 240
      vo2max:
        type: integer
        format: int64
        example: 55
        description: Vo2max in ml/kg/min.
        maximum: 95
        minimum: 10
      walkingPercent:
        type: integer
        format: int64
        example: 70
        description: Percentage of walking in the test.
        maximum: 100
      speedVariationPercent:
        type: integer
        format: int64
        example: 30
        description: Percentage of speed variation in the test.
        maximum: 100
      cadenceVariationPercent:
        type: integer
        format: int64
        example: 20
        description: Percentage of cadence variation in the test.
        maximum: 100
      hrAbove65ProsMaxHr:
        type: integer
        format: int64
        example: 15
      allCriterionQualityPercent:
        type: integer
        format: int64
        example: 90
        maximum: 100
      steadyWalkingGuidance:
        type: integer
        format: int64
        example: 85
      walkingSpeedGuidance:
        type: integer
        format: int64
        example: 5
      duration:
        type: integer
        format: int64
        example: 900000
    title: WalkingTest
    required:
      - startTime
      - endTime
      - warmup
      - performance
      - cooldown
      - category
      - fitnessClass
      - avgSpeedKmh
      - maxSpeedKmh
      - testDistanceMeters
      - steps
      - avgCadence
      - maxCadence
      - testHrBpm
      - maxHrBpm
      - vo2max
      - walkingPercent
      - speedVariationPercent
      - cadenceVariationPercent
      - hrAbove65ProsMaxHr
      - allCriterionQualityPercent
      - steadyWalkingGuidance
      - walkingSpeedGuidance
      - duration
  trainingsessionZone:
    type: object
    properties:
      lowerLimit:
        type: number
        format: double
        example: 100
        description: Lower limit of the zone. Unit depends on the zone type.
      higherLimit:
        type: number
        format: double
        example: 120
        description: Higher limit of the zone. Unit depends on the zone type.
      inZone:
        type: integer
        format: int64
        example: 100
        description: Time spent in the zone in milliseconds.
      distanceMeters:
        type: number
        format: float
        example: 1000
        description: Distance in the zone in meters. Only relevant in speed zone types.
      muscleLoad:
        type: number
        format: float
        example: 100
        description: Muscle load in the zone. Only relevant in power zone types.
    title: Zone
    required:
      - lowerLimit
      - higherLimit
      - inZone
  ConsentHistoryStateState:
    type: string
    example: ACCEPTED
    enum:
      - UNSPECIFIED
      - WITHDRAWN
      - ACCEPTED
    default: UNSPECIFIED
    description: The consent history state.
    title: ConsentHistoryState
  LocalizationSettingsDateFormat:
    type: string
    example: DATE_FORMAT_DAY_MONTH_YEAR
    enum:
      - DATE_FORMAT_UNSPECIFIED
      - DATE_FORMAT_DAY_MONTH_YEAR
      - DATE_FORMAT_MONTH_DAY_YEAR
      - DATE_FORMAT_YEAR_MONTH_DAY
    default: DATE_FORMAT_UNSPECIFIED
    description: The date format.
    title: DateFormat
  LocalizationSettingsDateSeparator:
    type: string
    example: DATE_SEPARATOR_SLASH
    enum:
      - DATE_SEPARATOR_UNSPECIFIED
      - DATE_SEPARATOR_PERIOD
      - DATE_SEPARATOR_SLASH
      - DATE_SEPARATOR_HYPHEN
    default: DATE_SEPARATOR_UNSPECIFIED
    description: The date separator.
    title: DateSeparator
  LocalizationSettingsFirstDayOfWeek:
    type: string
    example: FIRST_DAY_OF_WEEK_MONDAY
    enum:
      - FIRST_DAY_OF_WEEK_UNSPECIFIED
      - FIRST_DAY_OF_WEEK_SUNDAY
      - FIRST_DAY_OF_WEEK_MONDAY
      - FIRST_DAY_OF_WEEK_TUESDAY
      - FIRST_DAY_OF_WEEK_WEDNESDAY
      - FIRST_DAY_OF_WEEK_THURSDAY
      - FIRST_DAY_OF_WEEK_FRIDAY
      - FIRST_DAY_OF_WEEK_SATURDAY
    default: FIRST_DAY_OF_WEEK_UNSPECIFIED
    description: The first day of the week.
    title: FirstDayOfWeek
  LocalizationSettingsMeasurementUnit:
    type: string
    example: MEASUREMENT_UNIT_METRIC
    enum:
      - MEASUREMENT_UNIT_UNSPECIFIED
      - MEASUREMENT_UNIT_IMPERIAL
      - MEASUREMENT_UNIT_METRIC
    default: MEASUREMENT_UNIT_UNSPECIFIED
    description: The measurement unit.
    title: MeasurementUnit
  LocalizationSettingsTimeFormat:
    type: string
    example: TIME_FORMAT_TWENTY_FOUR_HOUR
    enum:
      - TIME_FORMAT_UNSPECIFIED
      - TIME_FORMAT_TWENTY_FOUR_HOUR
      - TIME_FORMAT_TWELVE_HOUR
    default: TIME_FORMAT_UNSPECIFIED
    description: The time format.
    title: TimeFormat
  LocalizationSettingsTimeFormatSeparator:
    type: string
    example: TIME_SEPARATOR_COLON
    enum:
      - TIME_SEPARATOR_UNSPECIFIED
      - TIME_SEPARATOR_COLON
      - TIME_SEPARATOR_PERIOD
    default: TIME_SEPARATOR_UNSPECIFIED
    description: The time format separator.
    title: TimeFormatSeparator
  accountAccountData:
    type: object
    properties:
      basicInfo:
        $ref: '#/definitions/accountBasicInfo'
      profileInformation:
        $ref: '#/definitions/accountProfileInformation'
      localizationSettings:
        $ref: '#/definitions/accountLocalizationSettings'
      generalSettings:
        type: array
        items:
          type: object
          $ref: '#/definitions/accountUserSetting'
      physicalInformation:
        $ref: '#/definitions/accountUserPhysicalInformation'
      contactInformation:
        $ref: '#/definitions/accountContactInformation'
      consents:
        type: array
        items:
          type: object
          $ref: '#/definitions/accountConsent'
      userTestPreferences:
        $ref: '#/definitions/accountUserTestPreferences'
      consentHistoryStates:
        type: array
        items:
          type: object
          $ref: '#/definitions/accountConsentHistoryState'
    title: AccountData
  accountAddress:
    type: object
    properties:
      street1:
        type: string
        example: 123 Main St
        description: Street address row 1.
        maxLength: 85
      street2:
        type: string
        example: Apt 4B
        description: Street address row 2.
        maxLength: 85
      street3:
        type: string
        example: Suite 100
        description: Street address row 3.
        maxLength: 85
      countryCode:
        type: string
        example: US
        description: Country code as ISO 3166-1 alpha-2 country code.
        maxLength: 2
        minLength: 2
      stateCode:
        type: string
        example: NY
        description: State code.
        maxLength: 45
      city:
        type: string
        example: New York
        description: City.
        maxLength: 45
      zipCode:
        type: string
        example: "10001"
        description: Zip code.
        maxLength: 15
  accountBasicInfo:
    type: object
    properties:
      firstName:
        type: string
        example: John
        description: User's first name.
        maxLength: 45
      lastName:
        type: string
        example: Doe
        description: User's last name.
        maxLength: 45
      email:
        type: string
        example: john.doe@example.com
        description: User's email.
        maxLength: 128
      nickname:
        type: string
        example: Johnny
        description: User's nickname. Not in use in current ecosystem.
        maxLength: 128
      created:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Datetime in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Datetime in ISO 8601 format. UTC time.
    title: BasicInfo
    required:
      - firstName
      - lastName
      - email
      - created
      - modified
  accountConsent:
    type: object
    properties:
      type:
        type: string
        example: GDPR
        description: Type of the consent.
      version:
        type: string
        example: "2023-10-01"
        description: Version of the consent. Date in ISO 8601 format.
      accepted:
        type: boolean
        example: "true"
        description: Has user accepted the consent.
      metadata:
        type: array
        items:
          type: object
          $ref: '#/definitions/accountConsentMetadata'
        description: Metadata of the consent.
      approvedDataTypes:
        type: array
        items:
          type: string
        description: Possible data types that have been approved by the user.
      unapprovedDataTypes:
        type: array
        items:
          type: string
        description: Possible data types that have not been approved by the user.
    required:
      - type
      - version
      - accepted
  accountConsentHistoryState:
    type: object
    properties:
      type:
        type: string
        description: Type of the consent.
      version:
        type: string
        description: Version of the consent. Date in ISO 8601 format.
      created:
        type: string
        format: date-time
        description: Consent state created time in ISO 8601 format. UTC time.
      state:
        $ref: '#/definitions/ConsentHistoryStateState'
        description: State of the consent.
      consentMetadata:
        type: array
        items:
          type: object
          $ref: '#/definitions/accountConsentMetadata'
        description: Metadata of the consent.
  accountConsentMetadata:
    type: object
    properties:
      description:
        type: string
        example: GDPR consent metadata description
        description: Description of the consent metadata.
      content:
        type: string
        example: GDPR consent metadata content
        description: Content of the metadata.
    required:
      - description
      - content
  accountContactInformation:
    type: object
    properties:
      phoneNumber:
        type: string
        example: "+358123456789"
        description: User's phone number.
        maxLength: 35
      address:
        $ref: '#/definitions/accountAddress'
        description: User's address.
  accountLocalizationSettings:
    type: object
    properties:
      firstDayOfWeek:
        $ref: '#/definitions/LocalizationSettingsFirstDayOfWeek'
        description: User's preferred first day of week.
      measurementUnit:
        $ref: '#/definitions/LocalizationSettingsMeasurementUnit'
        description: User's preferred measurement unit.
      dateFormat:
        $ref: '#/definitions/LocalizationSettingsDateFormat'
        description: User's preferred date format.
      dateSeparator:
        $ref: '#/definitions/LocalizationSettingsDateSeparator'
        description: User's preferred date separator.
      timeFormat:
        $ref: '#/definitions/LocalizationSettingsTimeFormat'
        description: User's preferred time format.
      timeSeparator:
        $ref: '#/definitions/LocalizationSettingsTimeFormatSeparator'
        description: User's preferred time separator.
      timezoneOffsetMinutes:
        type: integer
        format: int32
        example: 180
        description: User's preferred timezone as offset minutes from UTC.
        maximum: 840
        minimum: -720
      language:
        type: string
        example: en
        description: User's preferred language as ISO 639-1 language code.
        maxLength: 5
        minLength: 2
      flowLanguage:
        type: string
        example: en
        description: User's preferred language in Flow as ISO 639-1 language code.
        maxLength: 5
        minLength: 2
    title: LocalizationSettings
  accountProfileInformation:
    type: object
    properties:
      motto:
        type: string
        example: No pain, no gain
        description: User's motto.
        maxLength: 256
      favoriteSports:
        type: array
        items:
          type: object
          $ref: '#/definitions/domainsaccountSportReference'
        description: User's favourite sports.
    title: ProfileInformation
  accountUserPhysicalInformation:
    type: object
    properties:
      sex:
        $ref: '#/definitions/accountUserPhysicalInformationSex'
      birthday:
        type: string
        example: "2000-01-01"
        description: Users birthday. Date in ISO 8601 format.
      height:
        type: number
        format: float
        example: "180.0"
        description: User height in cm.
        maximum: 240
        minimum: 90
      weight:
        type: number
        format: float
        example: "70.0"
        description: User weight in kg.
        maximum: 300
        minimum: 15
      weightSource:
        $ref: '#/definitions/accountUserPhysicalInformationWeightSource'
        description: Source of the measured weight.
      trainingBackground:
        $ref: '#/definitions/accountUserPhysicalInformationTrainingBackground'
        description: User's training background.
      vo2Max:
        type: integer
        format: int32
        example: "50"
        description: User VO2 max in ml/kg/min.
        maximum: 95
        minimum: 10
      maximumHeartRate:
        type: integer
        format: int32
        example: "180"
        description: User maximum heart rate in beats per minute (bpm).
        maximum: 240
        minimum: 100
      restingHeartRate:
        type: integer
        format: int32
        example: "60"
        description: User resting heart rate in beats per minute (bpm).
        maximum: 240
      aerobicThreshold:
        type: integer
        format: int32
        example: "140"
        description: User aerobic threshold in beats per minute (bpm).
        maximum: 240
      anaerobicThreshold:
        type: integer
        format: int32
        example: "160"
        description: User anaerobic threshold in beats per minute (bpm).
        maximum: 240
      sleepGoal:
        type: string
        format: uint64
        example: "28800000"
        description: User's daily sleep goal in milliseconds. Valid range is from 4 to 20 hours.
        maximum: 7.2e+07
        minimum: 1.44e+07
      typicalDay:
        $ref: '#/definitions/accountUserPhysicalInformationTypicalDay'
        description: User's typical day.
      metThreshold:
        type: number
        format: double
        example: "0.875"
        description: User's MET threshold.
        maximum: 31.875
        minimum: 0.875
      weeklyRecoveryTimeSum:
        type: number
        format: double
        example: "28.35"
        description: User's weekly RT sum. Units and range unknown.
      functionalThresholdPower:
        type: integer
        format: int32
        example: "200"
        description: User's functional threshold power in watts.
        maximum: 600
        minimum: 60
      speedCalibrationOffset:
        type: number
        format: float
        example: "2.5"
        description: Calibration offset calculated from two speed sources (km/h).
        maximum: 50
        minimum: -50
      maximumAerobicPower:
        type: integer
        format: int32
        example: "200"
        description: User's maximum aerobic power in watts.
        maximum: 900
        minimum: 60
      maximumAerobicSpeed:
        type: number
        format: float
        example: "3.0"
        description: User's maximum aerobic speed in min/km.
        maximum: 27.3
        minimum: 2.8
      created:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Created time in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Modified time in ISO 8601 format. UTC time.
      weightLastModified:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Modified time in ISO 8601 format. UTC time.
      trainingBackgroundLastModified:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Modified time in ISO 8601 format. UTC time.
      vo2MaxLastModified:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Modified time in ISO 8601 format. UTC time.
      sleepGoalLastModified:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Modified time in ISO 8601 format. UTC time.
      weeklyRecoveryTimeSumLastModified:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Modified time in ISO 8601 format. UTC time.
      functionalThresholdPowerLastModified:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Modified time in ISO 8601 format. UTC time.
      maximumAerobicPowerLastModified:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Modified time in ISO 8601 format. UTC time.
      maximumAerobicSpeedLastModified:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Modified time in ISO 8601 format. UTC time.
    required:
      - created
      - modified
  accountUserPhysicalInformationSex:
    type: string
    example: SEX_MALE
    enum:
      - SEX_UNSPECIFIED
      - SEX_MALE
      - SEX_FEMALE
    default: SEX_UNSPECIFIED
    description: The sex of the user.
    title: Sex
  accountUserPhysicalInformationTrainingBackground:
    type: string
    example: TRAINING_BACKGROUND_REGULAR
    enum:
      - TRAINING_BACKGROUND_UNSPECIFIED
      - TRAINING_BACKGROUND_OCCASIONAL
      - TRAINING_BACKGROUND_REGULAR
      - TRAINING_BACKGROUND_FREQUENT
      - TRAINING_BACKGROUND_HEAVY
      - TRAINING_BACKGROUND_SEMI_PRO
      - TRAINING_BACKGROUND_PRO
    default: TRAINING_BACKGROUND_UNSPECIFIED
    description: The classification of the user's training background.
    title: TrainingBackground
  accountUserPhysicalInformationTypicalDay:
    type: string
    example: TYPICAL_DAY_MOSTLY_SITTING
    enum:
      - TYPICAL_DAY_UNSPECIFIED
      - TYPICAL_DAY_MOSTLY_SITTING
      - TYPICAL_DAY_MOSTLY_STANDING
      - TYPICAL_DAY_MOSTLY_MOVING
    default: TYPICAL_DAY_UNSPECIFIED
    description: The user's typical day activity level.
    title: TypicalDay
  accountUserPhysicalInformationWeightSource:
    type: string
    example: WEIGHT_SOURCE_MEASURED
    enum:
      - WEIGHT_SOURCE_UNSPECIFIED
      - WEIGHT_SOURCE_DEFAULT
      - WEIGHT_SOURCE_ESTIMATE
      - WEIGHT_SOURCE_USER
      - WEIGHT_SOURCE_MEASURED
      - WEIGHT_SOURCE_KEEP
    default: WEIGHT_SOURCE_UNSPECIFIED
    description: The source of the weight measurement.
    title: WeightSource
  accountUserSetting:
    type: object
    properties:
      name:
        type: string
        example: setting_key_name
        description: Name of the setting.
      value:
        type: string
        example: setting value
        description: Value of the setting.
    required:
      - name
      - value
  accountUserTestPreferences:
    type: object
    properties:
      orthostaticResetDate:
        type: string
        example: "2023-10-01T12:00:00Z"
        description: Datetime in ISO 8601 format. User's local time.
      created:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Datetime in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: "2023-10-01T12:00:00Z"
        description: Datetime in ISO 8601 format. UTC time.
    required:
      - created
      - modified
  domainsaccountErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
  domainsaccountLoadResponse:
    type: object
    properties:
      accountData:
        $ref: '#/definitions/accountAccountData'
  domainsaccountSportReference:
    type: object
    properties:
      id:
        type: string
        example: "22353647432"
        maxLength: 36
    title: SportReference
    required:
      - id
  ActivityInfoActivityClass:
    type: string
    example: ACTIVITY_CLASS_SLEEP
    enum:
      - ACTIVITY_CLASS_UNKNOWN
      - ACTIVITY_CLASS_SLEEP
      - ACTIVITY_CLASS_SEDENTARY
      - ACTIVITY_CLASS_LIGHT
      - ACTIVITY_CLASS_CONTINUOUS_MODERATE
      - ACTIVITY_CLASS_INTERMITTENT_MODERATE
      - ACTIVITY_CLASS_CONTINUOUS_VIGOROUS
      - ACTIVITY_CLASS_INTERMITTENT_VIGOROUS
      - ACTIVITY_CLASS_NON_WEAR
      - ACTIVITY_CLASS_NO_DATA
    default: ACTIVITY_CLASS_UNKNOWN
    description: The classification of the activity level.
    title: ActivityClass
  activityActivities:
    type: object
    properties:
      activityDays:
        type: array
        items:
          type: object
          $ref: '#/definitions/activityActivityDay'
          required:
            - activity_days
        description: Each element represents a single day of activity data.
  activityActivityDay:
    type: object
    properties:
      date:
        type: string
        example: "2000-01-01"
        description: The date of the activity data. Date in ISO 8601 format.
      target:
        $ref: '#/definitions/activityActivityTarget'
      physicalInformation:
        $ref: '#/definitions/domainsactivityPhysicalInformation'
      activitiesPerDevice:
        type: array
        items:
          type: object
          $ref: '#/definitions/activityDeviceRecordedActivity'
          required:
            - activities_per_device
        description: Activity data collected by all devices user has in their use. Single element represents activity data collected by a specific device.
    title: ActivityDay
    required:
      - date
      - target
      - physicalInformation
  activityActivityInfo:
    type: object
    properties:
      activityClass:
        $ref: '#/definitions/ActivityInfoActivityClass'
      time:
        type: string
        example: "14:41:45"
        description: The time of activity day at which the new activity class was detected. Time in ISO 8601 format.
      factor:
        type: number
        format: float
        example: "2.0"
        description: The activity factor. Range 0.0 - 10.0.
        maximum: 10
    required:
      - time
      - factor
  activityActivityTarget:
    type: object
    properties:
      minDailyMetGoal:
        type: integer
        format: int64
        example: "345.4"
    description: A value representing the target met accumulation of single day.
    required:
      - minDailyMetGoal
  activityDeviceRecordedActivity:
    type: object
    properties:
      deviceReference:
        $ref: '#/definitions/domainsactivityDeviceReference'
        description: Identifies the device that has collected the activity data.
      activitySamples:
        type: array
        items:
          type: object
          $ref: '#/definitions/activityRecordedActivity'
          required:
            - activity_samples
        description: Collection of activities of a device that are all part of the activity day. Since a certain device might not be kept on for a full day, there can be gaps in the data.
    title: DeviceRecordedActivity
    required:
      - deviceReference
  activityInactivityInfo:
    type: object
    properties:
      time:
        type: string
        example: "14:41:45"
        description: The time of activity day at which the inactivity was detected. Time in ISO 8601 format.
    required:
      - time
  activityMetSamples:
    type: object
    properties:
      startTime:
        type: string
        example: "14:41:45"
        description: The time of the first sample bucket. Time in ISO 8601 format.
      interval:
        type: integer
        format: int64
        example: "60000"
        description: The size of the sample buckets, in milliseconds.
      mets:
        type: array
        items:
          type: number
          format: double
          required:
            - mets
        description: The mets for the sample buckets.
    description: |-
      A vector of double valued samples, defining a sampling rate for each bucket and a
      bucket for holding a value for the given duration.
      Bucket duration is defined by the interval attribute.
      That is, if interval is 1 minute, then each cell of the samples array specifies
      the sampled value for the given minute.
    required:
      - startTime
      - interval
  activityRecordedActivity:
    type: object
    properties:
      sportInfos:
        type: array
        items:
          type: object
          $ref: '#/definitions/activitySportInfo'
        description: A set of sport factor has changes.
      activityInfos:
        type: array
        items:
          type: object
          $ref: '#/definitions/activityActivityInfo'
        description: A set of activity level has changes.
      inactivityInfos:
        type: array
        items:
          type: object
          $ref: '#/definitions/activityInactivityInfo'
        description: A set of detected inactivities.
      stepSamples:
        $ref: '#/definitions/activityStepSamples'
        description: Step samples, describing how many steps the user has taken.
      metSamples:
        $ref: '#/definitions/activityMetSamples'
        description: Met samples, describing accrued met value for each sampling duration.
  activitySportInfo:
    type: object
    properties:
      factor:
        type: number
        format: float
        example: "2.0"
        description: Sport activity factor. Related to training load.
        maximum: 10
      time:
        type: string
        example: "14:41:45"
        description: The time of activity day at which the sports factor comes into effect. Time in ISO 8601 format.
    required:
      - factor
      - time
  activityStepSamples:
    type: object
    properties:
      startTime:
        type: string
        example: "14:41:45"
        description: The time of the first sample bucket. Time in ISO 8601 format.
      interval:
        type: integer
        format: int64
        example: "60000"
        description: The interval of the sample buckets, in milliseconds.
      steps:
        type: array
        items:
          type: integer
          format: int64
          required:
            - steps
        description: The steps for the sample buckets.
    description: |-
      A vector of integer valued step samples, defining a sampling rate for each bucket and a
      bucket for holding a value for the given duration.
      Bucket duration is defined by the interval attribute.
      That is, if interval is 1 minute, then each cell of the samples array specifies
      the sampled value for the given minute.
    required:
      - startTime
      - interval
  domainsactivityDeviceReference:
    type: object
    properties:
      deviceId:
        type: string
        example: ABC102003
        title: Polar device ID
        maxLength: 36
    description: Identifies the device that has collected the activity data.
    required:
      - deviceId
  domainsactivityErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
  domainsactivityListResponse:
    type: object
    properties:
      activities:
        $ref: '#/definitions/activityActivities'
        description: The list of activity days for the requested period.
  domainsactivityPhysicalInformation:
    type: object
    properties:
      birthday:
        type: string
        example: "1995-05-13"
        description: Date in ISO 8601 format.
      sex:
        $ref: '#/definitions/domainsactivityPhysicalInformationSex'
      height:
        type: integer
        format: int64
        example: "172.0"
        description: User height in cm.
        maximum: 240
        minimum: 90
      weight:
        type: integer
        format: int64
        example: "79.0"
        description: User weight in kg.
        maximum: 300
        minimum: 15
      maximumHeartRate:
        type: integer
        format: int64
        example: "195"
        description: User maximum heart rate in bpm.
        maximum: 240
      restingHeartRate:
        type: integer
        format: int64
        example: "55"
        description: User resting heart rate in bpm.
        maximum: 240
      aerobicThreshold:
        type: integer
        format: int64
        example: "130"
        description: User aerobic threshold in bpm.
        maximum: 240
      anaerobicThreshold:
        type: integer
        format: int64
        example: "175"
        description: User anaerobic threshold in bpm.
        maximum: 240
      vo2Max:
        type: integer
        format: int64
        example: "55"
        title: User VO2 max in ml/kg/min
        maximum: 95
        minimum: 10
      trainingBackground:
        $ref: '#/definitions/domainsactivityPhysicalInformationTrainingBackground'
        description: User's training background.
      weightSource:
        $ref: '#/definitions/domainsactivityPhysicalInformationWeightSource'
        description: User's weight source.
      sleepGoal:
        type: string
        format: uint64
        example: "14400000"
        description: User's sleep goal in milliseconds.
        maximum: 7.2e+07
        minimum: 1.44e+07
    description: User's physical information for the activity day.
  domainsactivityPhysicalInformationSex:
    type: string
    enum:
      - SEX_UNSPECIFIED
      - SEX_MALE
      - SEX_FEMALE
    default: SEX_UNSPECIFIED
    title: Sex
  domainsactivityPhysicalInformationTrainingBackground:
    type: string
    enum:
      - TRAINING_BACKGROUND_UNSPECIFIED
      - TRAINING_BACKGROUND_OCCASIONAL
      - TRAINING_BACKGROUND_REGULAR
      - TRAINING_BACKGROUND_FREQUENT
      - TRAINING_BACKGROUND_HEAVY
      - TRAINING_BACKGROUND_SEMI_PRO
      - TRAINING_BACKGROUND_PRO
    default: TRAINING_BACKGROUND_UNSPECIFIED
    description: Classification of the user's training background.
  domainsactivityPhysicalInformationWeightSource:
    type: string
    enum:
      - WEIGHT_SOURCE_UNSPECIFIED
      - WEIGHT_SOURCE_DEFAULT
      - WEIGHT_SOURCE_ESTIMATE
      - WEIGHT_SOURCE_USER
      - WEIGHT_SOURCE_MEASURED
      - WEIGHT_SOURCE_KEEP
    default: WEIGHT_SOURCE_UNSPECIFIED
    description: Classification of the user's weight source.
  PerceivedRecoveryMuscleSoreness:
    type: string
    enum:
      - MUSCLE_SORENESS_UNSPECIFIED
      - MUSCLE_SORENESS_NONE
      - MUSCLE_SORENESS_SOME
      - MUSCLE_SORENESS_MUCH
    default: MUSCLE_SORENESS_UNSPECIFIED
    title: MuscleSoreness
  PerceivedRecoveryOverallFatigue:
    type: string
    enum:
      - OVERALL_FATIGUE_UNSPECIFIED
      - OVERALL_FATIGUE_NORMAL
      - OVERALL_FATIGUE_LITTLE
      - OVERALL_FATIGUE_MUCH
    default: OVERALL_FATIGUE_UNSPECIFIED
    title: OverallFatigue
  PerceivedRecoverySleepUserRating:
    type: string
    enum:
      - SLEEP_USER_RATING_UNSPECIFIED
      - SLEEP_USER_RATING_SLEPT_POORLY
      - SLEEP_USER_RATING_SLEPT_SOMEWHAT_POORLY
      - SLEEP_USER_RATING_SLEPT_NEITHER_POORLY_NOR_WELL
      - SLEEP_USER_RATING_SLEPT_SOMEWHAT_WELL
      - SLEEP_USER_RATING_SLEPT_WELL
    default: SLEEP_USER_RATING_UNSPECIFIED
    title: SleepUserRating
  calendarCalendarEntries:
    type: object
    properties:
      entries:
        type: array
        items:
          type: object
          $ref: '#/definitions/calendarCalendarEntry'
    title: CalendarEntries
  calendarCalendarEntry:
    type: object
    properties:
      note:
        $ref: '#/definitions/calendarNote'
        description: User's note for the day.
      feeling:
        $ref: '#/definitions/calendarFeeling'
        description: User's feeling for the day.
      feedback:
        $ref: '#/definitions/calendarFeedback'
        description: User's feedback for the day.
      perceivedRecovery:
        $ref: '#/definitions/calendarPerceivedRecovery'
        description: User's perceived recovery for the day.
      weight:
        $ref: '#/definitions/calendarWeight'
        description: User's weight for the day.
      physicalInformation:
        $ref: '#/definitions/domainscalendarPhysicalInformation'
        description: User's physical information.
    title: 'CalendarEntry (contains one of the following: note, feeling, feedback, perceived-recovery, weight, physical-information)'
  calendarFeedback:
    type: object
    properties:
      created:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      dateTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      value:
        type: string
    title: Feedback
    required:
      - created
      - modified
      - dateTime
  calendarFeeling:
    type: object
    properties:
      created:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
      modified:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      dateTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      value:
        type: number
        format: float
        title: |-
          User's feeling for the day.
          Value description: AWESOME 0.0-0.1999... GREAT 0.2-0.39999... OKAY 0.4-0.5999... NOT_GOOD 0.6-0.7999... BAD 0.8-1.0
        maximum: 1
      comment:
        type: string
        example: Some comment
        maxLength: 140
    title: Feeling
    required:
      - created
      - modified
      - dateTime
  calendarNote:
    type: object
    properties:
      created:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      dateTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      value:
        type: string
        example: Some notes
        description: User's note for the day.
        maxLength: 10000
    title: Note
    required:
      - created
      - modified
      - dateTime
  calendarPerceivedRecovery:
    type: object
    properties:
      created:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      dateTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      muscleSoreness:
        $ref: '#/definitions/PerceivedRecoveryMuscleSoreness'
        description: User's perceived muscle soreness.
      overallFatigue:
        $ref: '#/definitions/PerceivedRecoveryOverallFatigue'
        description: User's perceived overall fatigue.
      sleepUserRating:
        $ref: '#/definitions/PerceivedRecoverySleepUserRating'
        description: User's perceived sleep quality.
    title: PerceivedRecovery
    required:
      - created
      - modified
      - dateTime
  calendarWeight:
    type: object
    properties:
      created:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      dateTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      value:
        type: number
        format: float
        description: User weight in kg.
        maximum: 300
        minimum: 15
    title: Weight
    required:
      - created
      - modified
      - dateTime
      - value
  domainscalendarErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
    title: ErrorResponse
  domainscalendarLoadResponse:
    type: object
    properties:
      data:
        $ref: '#/definitions/calendarCalendarEntries'
    title: LoadResponse
  domainscalendarPhysicalInformation:
    type: object
    properties:
      created:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      dateTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      height:
        type: number
        format: float
        description: User height in cm.
        maximum: 240
        minimum: 90
      weight:
        type: number
        format: float
        description: User weight in kg.
        maximum: 300
        minimum: 15
      maximumHeartRate:
        type: integer
        format: int64
        description: User maximum heart rate in beats per minute (bpm).
        maximum: 240
        minimum: 100
      restingHeartRate:
        type: integer
        format: int64
        description: User resting heart rate in beats per minute (bpm).
        maximum: 240
      aerobicThreshold:
        type: integer
        format: int64
        description: User aerobic threshold in beats per minute (bpm).
        maximum: 240
      anaerobicThreshold:
        type: integer
        format: int64
        description: User anaerobic threshold in beats per minute (bpm).
        maximum: 240
      vo2Max:
        type: integer
        format: int64
        description: User VO2 max in ml/kg/min.
        maximum: 95
        minimum: 10
      trainingBackground:
        $ref: '#/definitions/domainscalendarPhysicalInformationTrainingBackground'
        description: User's training background.
      weightSource:
        $ref: '#/definitions/domainscalendarPhysicalInformationWeightSource'
        description: User's weight source.
      sleepGoal:
        type: string
        format: uint64
        description: User's sleep goal in milliseconds. Range (4 - 20 hours).
        maximum: 7.2e+07
        minimum: 1.44e+07
      typicalDay:
        $ref: '#/definitions/domainscalendarPhysicalInformationTypicalDay'
        description: User's typical day setting.
      weeklyRtSum:
        type: number
        format: float
        description: User's weekly RT sum.
      functionalThresholdPower:
        type: integer
        format: int64
        description: User's functional threshold power in watts.
        maximum: 600
        minimum: 60
    title: PhysicalInformation
    required:
      - created
      - modified
      - dateTime
  domainscalendarPhysicalInformationTrainingBackground:
    type: string
    enum:
      - TRAINING_BACKGROUND_UNSPECIFIED
      - TRAINING_BACKGROUND_OCCASIONAL
      - TRAINING_BACKGROUND_REGULAR
      - TRAINING_BACKGROUND_FREQUENT
      - TRAINING_BACKGROUND_HEAVY
      - TRAINING_BACKGROUND_SEMI_PRO
      - TRAINING_BACKGROUND_PRO
    default: TRAINING_BACKGROUND_UNSPECIFIED
    title: TrainingBackground
  domainscalendarPhysicalInformationTypicalDay:
    type: string
    enum:
      - TYPICAL_DAY_UNSPECIFIED
      - TYPICAL_DAY_MOSTLY_SITTING
      - TYPICAL_DAY_MOSTLY_STANDING
      - TYPICAL_DAY_MOSTLY_MOVING
    default: TYPICAL_DAY_UNSPECIFIED
    title: TypicalDay
  domainscalendarPhysicalInformationWeightSource:
    type: string
    enum:
      - WEIGHT_SOURCE_UNSPECIFIED
      - WEIGHT_SOURCE_DEFAULT
      - WEIGHT_SOURCE_ESTIMATE
      - WEIGHT_SOURCE_USER
      - WEIGHT_SOURCE_MEASURED
      - WEIGHT_SOURCE_KEEP
    default: WEIGHT_SOURCE_UNSPECIFIED
    title: WeightSource
  ECGTestResultECGHeartRateVariabilityLevel:
    type: string
    example: ECG_HRV_LEVEL_USUAL
    enum:
      - ECG_HRV_LEVEL_UNKNOWN
      - ECG_HRV_LEVEL_NO_BASELINE
      - ECG_HRV_LEVEL_BELOW_USUAL
      - ECG_HRV_LEVEL_USUAL
      - ECG_HRV_LEVEL_ABOVE_USUAL
    default: ECG_HRV_LEVEL_UNKNOWN
    description: The ECG heart rate variability level.
    title: ECGHeartRateVariabilityLevel
  ECGTestResultECGQualityLevel:
    type: string
    example: ECG_QUALITY_HIGH
    enum:
      - ECG_QUALITY_UNKNOWN
      - ECG_QUALITY_NO_CONTACT
      - ECG_QUALITY_LOW
      - ECG_QUALITY_HIGH
    default: ECG_QUALITY_UNKNOWN
    description: The ECG quality level.
    title: ECGQualityLevel
  ECGTestResultECGQualityMeasurement:
    type: object
    properties:
      recordingTimeDeltaMs:
        type: integer
        format: int64
        example: 1000
        description: Recording time. Delta in milliseconds from test_time.
      qualityLevel:
        $ref: '#/definitions/ECGTestResultECGQualityLevel'
        description: Measurement quality.
    title: ECGQualityMeasurement
    required:
      - recordingTimeDeltaMs
      - qualityLevel
  ECGTestResultECGSample:
    type: object
    properties:
      recordingTimeDeltaMs:
        type: integer
        format: int64
        example: 1000
        description: Recording time. Delta in milliseconds from start_time.
      amplitudeMv:
        type: number
        format: float
        example: 0.5
        description: Amplitude in mV.
        maximum: 5
        minimum: -5
    title: ECGSample
    required:
      - recordingTimeDeltaMs
      - amplitudeMv
  JumpTestResultJumpTestType:
    type: string
    example: JUMP_TEST_TYPE_SQUAT
    enum:
      - JUMP_TEST_TYPE_UNSPECIFIED
      - JUMP_TEST_TYPE_SQUAT
      - JUMP_TEST_TYPE_COUNTER
      - JUMP_TEST_TYPE_CONTINUOUS
    default: JUMP_TEST_TYPE_UNSPECIFIED
    description: The jump test type.
    title: JumpTestType
  LegMuscleRecoveryRecoveryStatus:
    type: string
    example: RECOVERED
    enum:
      - NOT_AVAILABLE
      - UNRECOVERED
      - RECOVERED
    default: NOT_AVAILABLE
    description: The recovery status.
    title: RecoveryStatus
  SpO2TestResultDeviationFromBaseline:
    type: string
    example: DEVIATION_USUAL
    enum:
      - DEVIATION_FROM_BASELINE_UNKNOWN
      - DEVIATION_NO_BASELINE
      - DEVIATION_BELOW_USUAL
      - DEVIATION_USUAL
      - DEVIATION_ABOVE_USUAL
    default: DEVIATION_FROM_BASELINE_UNKNOWN
    description: The deviation from baseline.
    title: DeviationFromBaseline
  SpO2TestResultSpO2Class:
    type: string
    example: SPO2_CLASS_NORMAL
    enum:
      - SPO2_CLASS_UNKNOWN
      - SPO2_CLASS_VERY_LOW
      - SPO2_CLASS_LOW
      - SPO2_CLASS_NORMAL
    default: SPO2_CLASS_UNKNOWN
    description: The SpO2 class.
    title: SpO2Class
  SpO2TestResultSpO2TestStatus:
    type: string
    example: SPO2_TEST_PASSED
    enum:
      - SPO2_TEST_STATUS_UNKNOWN
      - SPO2_TEST_PASSED
      - SPO2_TEST_INCONCLUSIVE_TOO_LOW_QUALITY_IN_SAMPLES
      - SPO2_TEST_INCONCLUSIVE_TOO_LOW_OVERALL_QUALITY
      - SPO2_TEST_INCONCLUSIVE_TOO_MANY_MISSING_SAMPLES
    default: SPO2_TEST_STATUS_UNKNOWN
    description: The SpO2 test status.
    title: SpO2TestStatus
  domainstestsErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
    title: ErrorResponse
  domainstestsLoadResponse:
    type: object
    properties:
      data:
        $ref: '#/definitions/testsTests'
    title: LoadResponse
  domainstestsPhysicalInformation:
    type: object
    properties:
      birthday:
        type: string
        example: "2010-02-21"
        description: Birthday as date in ISO 8601 format (YYYY-MM-DD).
      sex:
        $ref: '#/definitions/domainstestsPhysicalInformationSex'
        description: User sex.
      height:
        type: number
        format: float
        example: 172
        description: User height in cm.
        maximum: 240
        minimum: 90
      weight:
        type: number
        format: float
        example: 79.4
        description: User weight in kg.
        maximum: 300
        minimum: 15
      maximumHeartRate:
        type: integer
        format: int64
        description: User maximum heart rate in beats per minute (bpm).
        maximum: 240
        minimum: 100
      restingHeartRate:
        type: integer
        format: int64
        example: 55
        description: User resting heart rate in beats per minute (bpm).
        maximum: 240
      aerobicThreshold:
        type: integer
        format: int64
        description: User aerobic threshold in beats per minute (bpm).
        maximum: 240
      anaerobicThreshold:
        type: integer
        format: int64
        example: 175
        description: User anaerobic threshold in beats per minute (bpm).
        maximum: 240
      vo2Max:
        type: integer
        format: int64
        example: 45
        description: User VO2 max in ml/kg/min.
        maximum: 95
        minimum: 10
      trainingBackground:
        $ref: '#/definitions/domainstestsPhysicalInformationTrainingBackground'
        description: User training background.
      weightSource:
        $ref: '#/definitions/domainstestsPhysicalInformationWeightSource'
        description: User weight source.
      sleepGoal:
        type: string
        format: uint64
        example: 2.88e+07
        description: User sleep goal in milliseconds. Range (4 - 20 hours).
        maximum: 7.2e+07
        minimum: 1.44e+07
    title: PhysicalInformation
    required:
      - birthday
  domainstestsPhysicalInformationSex:
    type: string
    example: MALE
    enum:
      - UNSPECIFIED
      - MALE
      - FEMALE
    default: UNSPECIFIED
    description: The sex of the user.
    title: Sex
  domainstestsPhysicalInformationTrainingBackground:
    type: string
    example: TRAINING_BACKGROUND_REGULAR
    enum:
      - TRAINING_BACKGROUND_UNSPECIFIED
      - TRAINING_BACKGROUND_OCCASIONAL
      - TRAINING_BACKGROUND_REGULAR
      - TRAINING_BACKGROUND_FREQUENT
      - TRAINING_BACKGROUND_HEAVY
      - TRAINING_BACKGROUND_SEMI_PRO
      - TRAINING_BACKGROUND_PRO
    default: TRAINING_BACKGROUND_UNSPECIFIED
    description: The training background of the user.
    title: TrainingBackground
  domainstestsPhysicalInformationWeightSource:
    type: string
    example: WEIGHT_SOURCE_DEFAULT
    enum:
      - WEIGHT_SOURCE_UNSPECIFIED
      - WEIGHT_SOURCE_DEFAULT
      - WEIGHT_SOURCE_ESTIMATE
      - WEIGHT_SOURCE_USER
      - WEIGHT_SOURCE_MEASURED
      - WEIGHT_SOURCE_KEEP
    default: WEIGHT_SOURCE_UNSPECIFIED
    description: The weight source.
    title: WeightSource
  testsECGTestResult:
    type: object
    properties:
      testTime:
        type: string
        example: 2025-04-03T12:29:25.266
        description: Datetime in ISO 8601 format. In user local time.
      stopTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      timeZoneOffsetMinutes:
        type: integer
        format: int32
        example: 60
        description: Time zone offset in minutes.
        maximum: 840
        minimum: -720
      deviceReference:
        $ref: '#/definitions/testsTestDeviceReference'
        description: Device reference.
      averageHeartRateBpm:
        type: integer
        format: int64
        example: 70
        description: Average heart rate bpm.
        maximum: 240
        minimum: 15
      heartRateVariabilityMs:
        type: number
        format: float
        example: 970
        description: Heart rate variability in ms.
        maximum: 2000
      heartRateVariabilityLevel:
        $ref: '#/definitions/ECGTestResultECGHeartRateVariabilityLevel'
        description: Heart rate variability level.
      rriMs:
        type: number
        format: float
        example: 857
        description: Average RR interval in ms.
        maximum: 4000
      pulseArrivalTimeAtContractionMs:
        type: number
        format: float
        example: 100
        description: Pulse arrival time at contraction in ms (i.e. pulse transit time in systolic phase).
        maximum: 1000
      pulseArrivalTimeAtRelaxationMs:
        type: number
        format: float
        example: 200
        description: Pulse arrival time at relaxation in ms (i.e. pulse transit time in diastolic phase).
        maximum: 1000
      pulseTransitTimeQualityIndex:
        type: number
        format: float
        example: 98
        description: Quality index of pulse transit time.
        maximum: 100
      samples:
        type: array
        items:
          type: object
          $ref: '#/definitions/ECGTestResultECGSample'
          required:
            - samples
        description: ECG Samples.
      qualityMeasurements:
        type: array
        items:
          type: object
          $ref: '#/definitions/ECGTestResultECGQualityMeasurement'
          required:
            - quality_measurements
        description: ECG Quality measurements.
    title: ECGTestResult
    required:
      - testTime
      - stopTime
      - deviceReference
  testsFitnessTestResult:
    type: object
    properties:
      ownIndex:
        type: integer
        format: int64
        example: 45
        description: Polar OwnIndex™ value. Comparable to VO2 max in ml/kg/min.
        maximum: 95
        minimum: 10
      maximumHeartRate:
        type: integer
        format: int64
        example: 180
        description: User maximum heart rate in beats per minute (bpm).
        maximum: 240
        minimum: 100
      averageHeartRate:
        type: integer
        format: int64
        example: 60
        description: User resting heart rate in beats per minute (bpm).
        maximum: 240
      fitnessClass:
        $ref: '#/definitions/testsFitnessTestResultFitnessClass'
      timezoneOffsetMinutes:
        type: integer
        format: int32
        example: 60
        description: Timezone offset in minutes.
        maximum: 840
        minimum: -720
      physicalInformation:
        $ref: '#/definitions/domainstestsPhysicalInformation'
    title: FitnessTestResult
  testsFitnessTestResultFitnessClass:
    type: string
    example: GOOD
    enum:
      - UNSPECIFIED
      - ELITE
      - VERY_GOOD
      - GOOD
      - MODERATE
      - FAIR
      - LOW
      - VERY_LOW
    default: UNSPECIFIED
    description: The classification of the fitness level.
    title: FitnessClass
  testsJump:
    type: object
    properties:
      flightTime:
        type: integer
        format: int64
        example: 350
        description: Jump air time in milliseconds.
        maximum: 250000
      contactTime:
        type: integer
        format: int64
        example: 250
        description: Jump contact time in milliseconds.
        maximum: 250000
    title: Jump
    required:
      - flightTime
      - contactTime
  testsJumpTestResult:
    type: object
    properties:
      jumpTestType:
        $ref: '#/definitions/JumpTestResultJumpTestType'
      durationMillis:
        type: string
        format: uint64
        example: 60000
        description: Duration of the test in milliseconds.
        maximum: 1e+06
      legMuscleRecovery:
        $ref: '#/definitions/testsLegMuscleRecovery'
      jumps:
        type: array
        items:
          type: object
          $ref: '#/definitions/testsJump'
    title: JumpTestResult
  testsLegMuscleRecovery:
    type: object
    properties:
      recoveryStatus:
        $ref: '#/definitions/LegMuscleRecoveryRecoveryStatus'
      lowLimit:
        type: number
        format: double
      baseline:
        type: number
        format: double
    title: LegMuscleRecovery
  testsOrthostaticTestResult:
    type: object
    properties:
      rrAvgSupine:
        type: integer
        format: int64
        example: 829
        description: RR average in supine position in milliseconds.
      rrMinStandup:
        type: integer
        format: int64
        example: 567
        description: RR minimum in standup position in milliseconds.
      rrAvgStand:
        type: integer
        format: int64
        example: 675
        description: RR average in standup position in milliseconds.
      rrLtAvgSupine:
        type: integer
        format: int64
        example: 942
        description: RR long term average in supine position in milliseconds.
      rrLtAvgMinStandup:
        type: integer
        format: int64
        example: 615
        description: RR long term average minimum after standup position in milliseconds.
      rrLtAvgStand:
        type: integer
        format: int64
        example: 648
        description: RR long term average in standup position in milliseconds.
      rmssdSupine:
        type: integer
        format: int64
        example: 47
        description: RMSSD (Root mean square of the successive differences) in supine position.
      rmssdLtAvgSupine:
        type: integer
        format: int64
        example: 40
        description: RMSSD (Root mean square of the successive differences) long term average in supine position.
      rmssdStand:
        type: integer
        format: int64
        example: 16
        description: RMSSD (Root mean square of the successive differences) average in standup position.
      rmssdLtAvgStand:
        type: integer
        format: int64
        example: 19
        description: RMSSD (Root mean square of the successive differences) long term average in standup position.
      rrSamples:
        type: array
        items:
          type: integer
          format: int64
        description: Intervals between heartbeats in millis. Does not include "offline" entries.
      lastResetDate:
        type: string
        example: "2021-01-01"
        description: Reset date in ISO 8601 format. In user local time.
    title: OrthostaticTestResult
    required:
      - lastResetDate
  testsRRRecording:
    type: object
    properties:
      maximumHeartRate:
        type: integer
        format: int64
        example: 180
        description: Maximum heart rate in beats per minute (bpm).
        maximum: 240
      minimumHeartRate:
        type: integer
        format: int64
        example: 100
        description: Minimum heart rate in beats per minute (bpm).
        maximum: 240
      averageHeartRate:
        type: integer
        format: int64
        example: 130
        description: Average heart rate in beats per minute (bpm).
        maximum: 240
      endTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      rrSamples:
        type: array
        items:
          type: integer
          format: int64
        description: Intervals between heartbeats in millis. Does not include "offline" entries.
    title: RRRecording
    required:
      - maximumHeartRate
      - minimumHeartRate
      - averageHeartRate
      - endTime
  testsSpO2TestResult:
    type: object
    properties:
      testTime:
        type: string
        example: "2025-04-03T12:29:25.266Z"
        description: Datetime in ISO 8601 format. User's local time.
      stopTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. User's local time.
      deviceReference:
        $ref: '#/definitions/testsTestDeviceReference'
        description: Device reference.
      timeZoneOffsetMinutes:
        type: integer
        format: int32
        example: 60
        description: Time zone offset in minutes.
        maximum: 840
        minimum: -720
      testStatus:
        $ref: '#/definitions/SpO2TestResultSpO2TestStatus'
        description: SpO2 test status.
      bloodOxygenPercent:
        type: integer
        format: int32
        example: 97
        description: Blood oxygen percent.
        maximum: 100
      spo2Class:
        $ref: '#/definitions/SpO2TestResultSpO2Class'
        description: SpO2 class.
      spo2ValueDeviationFromBaseline:
        $ref: '#/definitions/SpO2TestResultDeviationFromBaseline'
        description: SpO2 value deviation from baseline.
      spo2QualityAveragePercent:
        type: number
        format: float
        example: 98
        description: Average quality of SPO2 signal during test.
        maximum: 100
      averageHeartRateBpm:
        type: integer
        format: int64
        example: 70
        description: Average heart rate pbm.
        maximum: 240
        minimum: 15
      heartRateVariabilityMs:
        type: number
        format: float
        example: 970
        description: Heart rate variability in ms.
        maximum: 2000
      spo2HrvDeviationFromBaseline:
        $ref: '#/definitions/SpO2TestResultDeviationFromBaseline'
        description: SpO2 hrv deviation from baseline.
      altitudeMeters:
        type: number
        format: float
        example: 150
        description: Altitude during test in meters.
        maximum: 10000
        minimum: -300
    title: SpO2TestResult
    required:
      - testTime
      - stopTime
      - deviceReference
      - testStatus
  testsTest:
    type: object
    properties:
      created:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. UTC time.
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time.
      jumpTestResult:
        $ref: '#/definitions/testsJumpTestResult'
      orthostaticTestResult:
        $ref: '#/definitions/testsOrthostaticTestResult'
      fitnessTestResult:
        $ref: '#/definitions/testsFitnessTestResult'
      rrRecording:
        $ref: '#/definitions/testsRRRecording'
      ecgTestResult:
        $ref: '#/definitions/testsECGTestResult'
      spo2TestResult:
        $ref: '#/definitions/testsSpO2TestResult'
    title: 'Test (contains one of the following: jump_test_result, orthostatic_test_result, fitness_test_result, rr_recording)'
    required:
      - created
      - modified
      - startTime
  testsTestDeviceReference:
    type: object
    properties:
      uuid:
        type: string
        example: 0e030000-0084-0000-0000-00001234abcd
        description: Unique identifier of the device.
        maxLength: 36
        minLength: 36
    title: DeviceReference
    required:
      - uuid
  testsTests:
    type: object
    properties:
      tests:
        type: array
        items:
          type: object
          $ref: '#/definitions/testsTest'
    title: Tests
  domainsprofilepictureErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
    title: ErrorResponse
  profilepictureHttpBody:
    type: object
    description: HTTP body contains the image data.
    title: HttpBody
  AutoPauseAutoPauseTrigger:
    type: string
    enum:
      - AUTO_PAUSE_TRIGGER_OFF
      - AUTO_PAUSE_TRIGGER_TRIGGER_SPEED
    default: AUTO_PAUSE_TRIGGER_OFF
  SportProfileProductInfoAltitudeSetting:
    type: string
    enum:
      - ALTITUDE_SETTING_OFF
      - ALTITUDE_SETTING_ON
    default: ALTITUDE_SETTING_OFF
  SportProfileProductInfoHeartRateView:
    type: string
    enum:
      - HEART_RATE_VIEW_BPM
      - HEART_RATE_VIEW_PERCENTS_OF_HR_RESERVE
      - HEART_RATE_VIEW_PERCENTS_OF_MAX_HR
    default: HEART_RATE_VIEW_BPM
  SportProfileProductInfoSportTapButtonSensitivity:
    type: string
    enum:
      - SPORT_TAP_BUTTON_SENSITIVITY_OFF
      - SPORT_TAP_BUTTON_SENSITIVITY_VERY_LOW
      - SPORT_TAP_BUTTON_SENSITIVITY_LOW
      - SPORT_TAP_BUTTON_SENSITIVITY_MEDIUM
      - SPORT_TAP_BUTTON_SENSITIVITY_HIGH
    default: SPORT_TAP_BUTTON_SENSITIVITY_OFF
  SportProfileProductInfoTapButtonAction:
    type: string
    enum:
      - TAP_BUTTON_ACTION_OFF
      - TAP_BUTTON_ACTION_TAKE_LAP
      - TAP_BUTTON_ACTION_CHANGE_TRAINING_VIEW
      - TAP_BUTTON_ACTION_ACTIVATE_BACKLIGHT
    default: TAP_BUTTON_ACTION_OFF
  SportProfileSettingsMuscleLoadSetting:
    type: string
    enum:
      - MUSCLE_LOAD_SETTING_OFF
      - MUSCLE_LOAD_SETTING_ON
    default: MUSCLE_LOAD_SETTING_OFF
  SportProfileSettingsPowerView:
    type: string
    enum:
      - POWER_VIEW_WATT
      - POWER_VIEW_WATT_PER_KG
      - POWER_VIEW_FTP_PERCENT
    default: POWER_VIEW_WATT
  SportProfileSettingsRemoteButtonAction:
    type: string
    enum:
      - REMOTE_BUTTON_ACTION_RING_BELL
      - REMOTE_BUTTON_ACTION_ACTIVATE_BACKLIGHT
      - REMOTE_BUTTON_ACTION_CHANGE_TRAINING_VIEW
      - REMOTE_BUTTON_ACTION_TAKE_LAP
      - REMOTE_BUTTON_ACTION_ACTIVATE_SAFETY_LIGHT
      - REMOTE_BUTTON_ACTION_BROWSE_UP
      - REMOTE_BUTTON_ACTION_BROWSE_DOWN
    default: REMOTE_BUTTON_ACTION_RING_BELL
  SportProfileSettingsStrideSpeedSource:
    type: string
    enum:
      - STRIDE_SPEED_SOURCE_STRIDE
      - STRIDE_SPEED_SOURCE_GPS
    default: STRIDE_SPEED_SOURCE_STRIDE
  SportProfileSettingsSwimmingUnits:
    type: string
    enum:
      - SWIMMING_UNITS_METERS
      - SWIMMING_UNITS_YARDS
    default: SWIMMING_UNITS_METERS
  SportProfileSettingsZoneOptimizerSetting:
    type: string
    enum:
      - ZONE_OPTIMIZER_SETTING_OFF
      - ZONE_OPTIMIZER_SETTING_MODIFIED_OFF
      - ZONE_OPTIMIZER_SETTING_DEFAULT
      - ZONE_OPTIMIZER_SETTING_MODIFIED
    default: ZONE_OPTIMIZER_SETTING_OFF
  SportSportType:
    type: string
    enum:
      - SINGLE_SPORT
      - MULTI_SPORT
      - SUB_SPORT
      - FREE_MULTI_SPORT
    default: SINGLE_SPORT
    description: |-
      Sport types.

       - SINGLE_SPORT: The sport is a single sport.
       - MULTI_SPORT: The sport is a multi-sport, which can include multiple sports of type SUB_SPORT.
       - SUB_SPORT: The sport is a sub-sport, which is part of a multi-sport. For example triathlon.
       - FREE_MULTI_SPORT: The sport is a free multi-sport, which can include multiple sports of type SINGLE_SPORT.
  SprintDetectionSprintDetectionSource:
    type: string
    enum:
      - SPRINT_DETECTION_SOURCE_OFF
      - SPRINT_DETECTION_SOURCE_SOURCE_ACCELERATION
      - SPRINT_DETECTION_SOURCE_SOURCE_SPEED
    default: SPRINT_DETECTION_SOURCE_OFF
  StrideSensorCalibSettingsRunningFactorSource:
    type: string
    enum:
      - RUNNING_FACTOR_SOURCE_DEFAULT
      - RUNNING_FACTOR_SOURCE_AUTO_CALIBRATION
      - RUNNING_FACTOR_SOURCE_MANUAL_CALIBRATION
    default: RUNNING_FACTOR_SOURCE_DEFAULT
  StrideSensorCalibSettingsStrideCalibType:
    type: string
    enum:
      - STRIDE_CALIB_TYPE_MANUAL
      - STRIDE_CALIB_TYPE_AUTO
    default: STRIDE_CALIB_TYPE_MANUAL
  SwimmingPoolInfoSwimmingPoolUnits:
    type: string
    enum:
      - SWIMMING_POOL_UNITS_METERS
      - SWIMMING_POOL_UNITS_YARDS
    default: SWIMMING_POOL_UNITS_METERS
  TrainingReminderTrainingReminderType:
    type: string
    enum:
      - TRAINING_REMINDER_TYPE_OFF
      - TRAINING_REMINDER_TYPE_CALORIES_BASED
      - TRAINING_REMINDER_TYPE_DISTANCE_BASED
      - TRAINING_REMINDER_TYPE_TIME_BASED
    default: TRAINING_REMINDER_TYPE_OFF
  ZonesHeartRateZoneSettingSource:
    type: string
    enum:
      - HEART_RATE_ZONE_SETTING_SOURCE_DEFAULT
      - HEART_RATE_ZONE_SETTING_SOURCE_THRESHOLD
      - HEART_RATE_ZONE_SETTING_SOURCE_FREE
    default: HEART_RATE_ZONE_SETTING_SOURCE_DEFAULT
  ZonesPowerZoneCalculationMethod:
    type: string
    enum:
      - POWER_ZONE_CALCULATION_METHOD_UNKNOWN
      - POWER_ZONE_CALCULATION_METHOD_FTP_BASED
      - POWER_ZONE_CALCULATION_METHOD_MAP_BASED
    default: POWER_ZONE_CALCULATION_METHOD_UNKNOWN
  ZonesPowerZoneSettingSource:
    type: string
    enum:
      - POWER_ZONE_SETTING_SOURCE_DEFAULT
      - POWER_ZONE_SETTING_SOURCE_FREE
    default: POWER_ZONE_SETTING_SOURCE_DEFAULT
  ZonesSpeedZoneCalculationMethod:
    type: string
    enum:
      - SPEED_ZONE_CALCULATION_METHOD_UNKNOWN
      - SPEED_ZONE_CALCULATION_METHOD_SPORT_SPECIFIC_PREDEFINED
      - SPEED_ZONE_CALCULATION_METHOD_MAS_BASED
    default: SPEED_ZONE_CALCULATION_METHOD_UNKNOWN
  ZonesSpeedZoneSettingSource:
    type: string
    enum:
      - SPEED_ZONE_SETTING_SOURCE_DEFAULT
      - SPEED_ZONE_SETTING_SOURCE_FREE
    default: SPEED_ZONE_SETTING_SOURCE_DEFAULT
  domainssportErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
  domainssportSportReference:
    type: object
    properties:
      id:
        type: integer
        format: int64
    description: Sport identifier.
    title: SportReference
    required:
      - id
  domainssportZones:
    type: object
    properties:
      heartRateZones:
        type: array
        items:
          type: object
          $ref: '#/definitions/sportHeartRateZone'
      speedZones:
        type: array
        items:
          type: object
          $ref: '#/definitions/sportSpeedZone'
      powerZones:
        type: array
        items:
          type: object
          $ref: '#/definitions/sportPowerZone'
      heartRateSettingSource:
        $ref: '#/definitions/ZonesHeartRateZoneSettingSource'
      powerSettingSource:
        $ref: '#/definitions/ZonesPowerZoneSettingSource'
      speedSettingSource:
        $ref: '#/definitions/ZonesSpeedZoneSettingSource'
      powerZoneCalculationMethod:
        $ref: '#/definitions/ZonesPowerZoneCalculationMethod'
      speedZoneCalculationMethod:
        $ref: '#/definitions/ZonesSpeedZoneCalculationMethod'
    description: Training zones.
  sportAlcorSiriusDisplaySettings:
    type: object
    properties:
      display:
        type: array
        items:
          type: object
          $ref: '#/definitions/sportTrainingDisplay'
        description: List of training displays.
      lastShownDisplay:
        type: integer
        format: int64
        description: |-
          This field is encoded and decoded view identifier in training computer.
          Bits 28-31 tells the number of displays in the view.
          Bits 20-27 tell the first display value of enum value.
          Bits 13-19 tell second.
          Bits 7-12 tell the third.
          Bits 0-6 tell the fourth.
      addedDefaultDisplays:
        type: integer
        format: int64
        description: |-
          Status bitfield of adding default displays in training computer.
          Bit 0:  True if Power data related default display is added to displays.
          Bit 1:  True if HR data related default display is added to displays.
          Bit 2:  True if Speed data related default display is added to displays.
          Bit 3:  True if Cadence data related default display is added to displays.
          Bit 4:  True if Speed And Hr data related default display is added to displays.
          Bit 5:  True if Altitude related default display is added to displays.
    description: |-
      Represents a list of training displays and their settings for Alcor and Sirius platforms.
      Alcor products are: M100 and M200. Sirius products are: A300, M400, M430, M450, M460 and V800.
  sportAutoLapSettings:
    type: object
    properties:
      automaticLap:
        $ref: '#/definitions/sportAutoLapSettingsAutomaticLap'
      automaticLapDistance:
        type: number
        format: float
      automaticLapDuration:
        type: integer
        format: int32
  sportAutoLapSettingsAutomaticLap:
    type: string
    enum:
      - AUTOMATIC_LAP_OFF
      - AUTOMATIC_LAP_DISTANCE
      - AUTOMATIC_LAP_DURATION
      - AUTOMATIC_LAP_LOCATION
    default: AUTOMATIC_LAP_OFF
  sportAutoPause:
    type: object
    properties:
      trigger:
        $ref: '#/definitions/AutoPauseAutoPauseTrigger'
      speedThreshold:
        type: number
        format: float
  sportCapellaDisplaySettings:
    type: object
    properties:
      trainingDisplay:
        type: array
        items:
          type: object
          $ref: '#/definitions/sportTrainingDisplay'
      lapDisplay:
        type: array
        items:
          type: object
          $ref: '#/definitions/sportTrainingDisplay'
    description: Represents a list of training displays and their settings for Capella platform.
  sportHeartRateZone:
    type: object
    properties:
      lowerLimit:
        type: integer
        format: int32
      higherLimit:
        type: integer
        format: int32
  sportListProfilesResponse:
    type: object
    properties:
      profiles:
        type: array
        items:
          type: object
          $ref: '#/definitions/sportUserSportProfile'
  sportListSportsResponse:
    type: object
    properties:
      sports:
        type: array
        items:
          type: object
          $ref: '#/definitions/sportSport'
        description: List of sports available in the Polar ecosystem.
  sportLoadProfileListCatalogResponse:
    type: object
    properties:
      catalog:
        $ref: '#/definitions/sportUserSportProfileCatalog'
  sportLocalizedName:
    type: object
    properties:
      longName:
        type: string
        description: Full name of the sport. Defaults to the translation key if not translated.
        maxLength: 65535
    description: Localized name of a sport in different languages.
    title: LocalizedName
    required:
      - longName
  sportPowerZone:
    type: object
    properties:
      lowerLimit:
        type: integer
        format: int32
      higherLimit:
        type: integer
        format: int32
  sportProduct:
    type: object
    properties:
      modelName:
        type: string
        description: Product model name e.g. 'Polar M460', 'Polar Jeep', 'Polar_INW6G'.
  sportSpeedZone:
    type: object
    properties:
      lowerLimit:
        type: number
        format: float
      higherLimit:
        type: number
        format: float
  sportSport:
    type: object
    properties:
      id:
        $ref: '#/definitions/domainssportSportReference'
        description: Sport identifier.
      modified:
        type: string
        format: date-time
        example: "2024-03-26T07:07:33Z"
        description: Last modification time in UTC time in ISO 8601 format.
      localizedNames:
        type: object
        additionalProperties:
          $ref: '#/definitions/sportLocalizedName'
        description: A map of localized sport names, where the key is a 2-5 letter ISO 639-1 language code.
      parentSport:
        $ref: '#/definitions/domainssportSportReference'
        description: |-
          Parent sport identifier. Indicates what kind of sport this is e.g. hiking's parent sport is walking and road cycling's is cycling.
          For top-level sports, this references itself (e.g., Running sport's parent_sport is Running). Has nothing to do with multisports.
      type:
        $ref: '#/definitions/SportSportType'
        description: Sport type.
      defaultSpeedView:
        $ref: '#/definitions/sportSportSpeedView'
        description: Whether displaying speed or pace by default.
      defaultGpsSetting:
        $ref: '#/definitions/sportSportGPSSetting'
        description: Default GPS setting.
      defaultAltitudeActive:
        type: boolean
        description: Whether barometer based altitude measurement is active by default.
      defaultAutomaticLap:
        $ref: '#/definitions/sportSportAutomaticLap'
        description: Default Automatic lap detection settings.
      defaultTapActive:
        type: boolean
        description: Whether tap gestures (tapping the display to trigger actions like laps, view changes, or backlight) are active by default.
      supportedFeatures:
        $ref: '#/definitions/sportSupportedFeatures'
        description: Supported features for this sport.
    description: Represents a sport in the Polar ecosystem, including its type, settings, and localized names.
    title: Sport
    required:
      - modified
      - type
      - defaultSpeedView
      - defaultGpsSetting
      - defaultAltitudeActive
      - defaultAutomaticLap
      - defaultTapActive
  sportSportAutomaticLap:
    type: string
    enum:
      - AUTOMATIC_LAP_OFF
      - AUTOMATIC_LAP_DISTANCE
      - AUTOMATIC_LAP_DURATION
      - AUTOMATIC_LAP_LOCATION
    default: AUTOMATIC_LAP_OFF
    description: |-
      Automatic lap detection settings.

       - AUTOMATIC_LAP_OFF: No automatic lap detection.
       - AUTOMATIC_LAP_DISTANCE: Automatic lap based on distance.
       - AUTOMATIC_LAP_DURATION: Automatic lap based on time.
       - AUTOMATIC_LAP_LOCATION: Automatic lap based on location.
  sportSportGPSSetting:
    type: string
    enum:
      - GPS_SETTING_OFF
      - GPS_SETTING_ON_NORMAL
      - GPS_SETTING_ON_LONG
      - GPS_SETTING_ON_10_HZ
      - GPS_SETTING_ON_MEDIUM
    default: GPS_SETTING_OFF
    description: |-
      GPS settings.

       - GPS_SETTING_OFF: GPS is off.
       - GPS_SETTING_ON_NORMAL: Normal GPS recoding rate which typically is 1 Hz. Normal recording reta may differ between devices.
       - GPS_SETTING_ON_LONG: Long GPS recoding rate which typically is 1/60 Hz (1 minute sample interval) or 1/120 Hz (2 minutes sample interval). Long recording reta may differ between devices.
       - GPS_SETTING_ON_10_HZ: 10 Hz recording rate.
       - GPS_SETTING_ON_MEDIUM: Medium GPS recoding rate which typically is 1/60 Hz (1 minute sample interval). Medium recording reta may differ between devices.
  sportSportProfile:
    type: object
    properties:
      sportId:
        type: integer
        format: int64
        description: |-
          Sport identifier.
          All available sports can be loaded from the /v4/data/sports/list endpoint.
      settings:
        $ref: '#/definitions/sportSportProfileSettings'
        description: Sport profile settings.
      sportFactor:
        type: number
        format: float
        description: |-
          Used in training load calculation (e.g. running and cycling have different training impacts).
          Range: 0.0 - 9.9.
      aerobicThreshold:
        type: integer
        format: int32
        description: |-
          Aerobic heart rate threshold in beats per minute (bpm).
          Range: 50 - 210.
      anaerobicThreshold:
        type: integer
        format: int32
        description: |-
          Anaerobic heart rate threshold in beats per minute (bpm).
          Range: 70 - 228.
      sprintDetectionSettings:
        $ref: '#/definitions/sportSprintDetection'
        description: Sprint detection settings.
      productSettings:
        type: array
        items:
          type: object
          $ref: '#/definitions/sportSportProfileProductInfo'
        description: Product specific sport profile settings.
      subProfileUuids:
        type: array
        items:
          type: string
        description: UUIDs of subprofiles for multisport profiles. Note that the referred-to profiles have to be dedicated multisport subprofiles.
  sportSportProfileList:
    type: object
    properties:
      index:
        type: integer
        format: int64
        description: Index of the sport profile list. The index is used to identify the active sport profile list.
      sportProfileUuids:
        type: array
        items:
          type: string
        description: Ordered list of sport profile identifiers.
  sportSportProfileProductInfo:
    type: object
    properties:
      product:
        $ref: '#/definitions/sportProduct'
        description: Identifies the product for which the settings are valid.
      vibration:
        type: boolean
        description: Vibration feedback during exercise.
      autoScrolling:
        type: boolean
        description: Auto scrolling of training views.
      strideSensorCalibSettings:
        $ref: '#/definitions/sportStrideSensorCalibSettings'
        description: Stride sensor calibration settings.
      swimmingPool:
        $ref: '#/definitions/sportSwimmingPoolInfo'
        description: Swimming pool used in swimming sport profile.
      altitudeSetting:
        $ref: '#/definitions/SportProfileProductInfoAltitudeSetting'
        description: Altitude recording setting.
      gpsSetting:
        $ref: '#/definitions/sportSportProfileProductInfoGPSSetting'
        description: GPS recording setting.
      autoPause:
        $ref: '#/definitions/sportAutoPause'
        description: Automatic pausing and resuming settings.
      autolapSettings:
        $ref: '#/definitions/sportAutoLapSettings'
        description: Autolap related settings.
      heartRateView:
        $ref: '#/definitions/SportProfileProductInfoHeartRateView'
        description: Heart rate view setting.
      capellaDisplaySettings:
        $ref: '#/definitions/sportCapellaDisplaySettings'
        description: Capella Platform Sport profile display settings.
      alcorSiriusDisplaySettings:
        $ref: '#/definitions/sportAlcorSiriusDisplaySettings'
        description: Alcor & Sirius display settings.
      tapButtonAction:
        $ref: '#/definitions/SportProfileProductInfoTapButtonAction'
        description: Tap button action.
      sportTapButtonSensitivity:
        $ref: '#/definitions/SportProfileProductInfoSportTapButtonSensitivity'
        description: Tap button sensitivity.
      voiceGuidance:
        type: boolean
        description: Indicates whether voice guidance is enabled.
    description: Represents a product specific sport profile settings.
  sportSportProfileProductInfoGPSSetting:
    type: string
    enum:
      - GPS_SETTING_OFF
      - GPS_SETTING_ON_NORMAL
      - GPS_SETTING_ON_LONG
      - GPS_SETTING_ON_10_HZ
      - GPS_SETTING_ON_MEDIUM
    default: GPS_SETTING_OFF
  sportSportProfileSettings:
    type: object
    properties:
      sensorBroadcastingHr:
        type: boolean
        description: Indicates whether heart rate broadcasting is enabled.
      hrZoneLockAvailable:
        type: boolean
        description: Indicates whether heart rate zone lock is available.
      speedZoneLockAvailable:
        type: boolean
        description: Indicates whether speed zone lock is available.
      powerZoneLockAvailable:
        type: boolean
        description: Indicates whether power zone lock is available.
      volume:
        $ref: '#/definitions/sportVolume'
        description: Volume of sounds during exercise.
      speedView:
        $ref: '#/definitions/sportSportProfileSettingsSpeedView'
        description: Speed view type.
      zoneOptimizerSetting:
        $ref: '#/definitions/SportProfileSettingsZoneOptimizerSetting'
        description: Zone optimizer setting values.
      zoneLimits:
        $ref: '#/definitions/domainssportZones'
        description: Sport specific hr, speed, power etc based zone limits.
      trainingReminder:
        $ref: '#/definitions/sportTrainingReminder'
        description: Training reminder settings for products with TRAINING_REMINDER capability.
      powerView:
        $ref: '#/definitions/SportProfileSettingsPowerView'
        description: Power view type.
      strideSpeedSource:
        $ref: '#/definitions/SportProfileSettingsStrideSpeedSource'
        description: Preferred stride sensor speed source.
      swimmingUnits:
        $ref: '#/definitions/SportProfileSettingsSwimmingUnits'
        description: Swimming pool units.
      muscleLoadSetting:
        $ref: '#/definitions/SportProfileSettingsMuscleLoadSetting'
        description: Muscle load setting.
      remoteButtonActions:
        type: array
        items:
          $ref: '#/definitions/SportProfileSettingsRemoteButtonAction'
        description: Configuration for remote control buttons.
  sportSportProfileSettingsSpeedView:
    type: string
    enum:
      - SPEED_VIEW_PACE
      - SPEED_VIEW_SPEED
    default: SPEED_VIEW_PACE
  sportSportSpeedView:
    type: string
    enum:
      - SPEED_VIEW_PACE
      - SPEED_VIEW_SPEED
    default: SPEED_VIEW_PACE
    description: |-
      Speed view options.

       - SPEED_VIEW_PACE: Speed is displayed as pace (e.g., min/km).
       - SPEED_VIEW_SPEED: Speed is displayed as speed (e.g., km/h).
  sportSprintDetection:
    type: object
    properties:
      source:
        $ref: '#/definitions/SprintDetectionSprintDetectionSource'
      sprintThresholdAcceleration:
        type: number
        format: float
        description: Sprint threshold for acceleration m/s^2.
      sprintThresholdSpeed:
        type: number
        format: float
        description: Sprint threshold for speed km/h.
  sportStrideSensorCalibSettings:
    type: object
    properties:
      runningFactor:
        type: number
        format: float
      calibType:
        $ref: '#/definitions/StrideSensorCalibSettingsStrideCalibType'
      runningFactorSource:
        $ref: '#/definitions/StrideSensorCalibSettingsRunningFactorSource'
  sportSupportedFeatures:
    type: object
    properties:
      speedZones:
        type: boolean
        description: Whether speed zones are relevant for this sport.
      sensorBroadcastingHr:
        type: boolean
        description: Whether heart rate broadcasting is enabled by default.
    description: Supported features for a sport, indicating whether certain functionalities are available or enabled by default.
    title: SupportedFeatures
    required:
      - speedZones
      - default_sensor_broadcasting_hr
  sportSwimmingPoolInfo:
    type: object
    properties:
      swimmingPoolType:
        $ref: '#/definitions/SwimmingPoolInfoSwimmingPoolUnits'
      poolLength:
        type: number
        format: float
  sportTrainingDisplay:
    type: object
    properties:
      items:
        type: array
        items:
          type: object
          $ref: '#/definitions/sportTrainingDisplayItem'
    description: Represents a training display.
  sportTrainingDisplayItem:
    type: object
    properties:
      name:
        type: string
      id:
        type: integer
        format: int64
    description: Represent a single item in a training display.
  sportTrainingReminder:
    type: object
    properties:
      type:
        $ref: '#/definitions/TrainingReminderTrainingReminderType'
        description: Type of the reminder.
      text:
        type: string
        description: Reminder text to be shown in the product during exercise.
      calorie:
        type: integer
        format: int32
        description: Set when type is CALORIES_BASED.
      time:
        type: integer
        format: int32
        description: Set when type is TIME_BASED.
      distance:
        type: number
        format: float
        description: Set when type is DISTANCE_BASED.
    description: Configuration for training reminders in products with the TRAINING_REMINDER capability. Displays a message after a specified duration, distance, or calorie threshold is reached.
  sportUserSportProfile:
    type: object
    properties:
      uuid:
        type: string
        description: Sport profile ecosystem identifier.
      created:
        type: string
        format: date-time
        description: Creation time of the sport profile in UTC time in format (yyyy-mm-ddThh:mm:ssssssZ).
      modified:
        type: string
        format: date-time
        description: Last modification time of the sport profile in UTC time in format (yyyy-mm-ddThh:mm:ssssssZ).
      profile:
        $ref: '#/definitions/sportSportProfile'
    description: Aggregate root for sport profile data.
  sportUserSportProfileCatalog:
    type: object
    properties:
      uuid:
        type: string
        description: Sport profile catalog ecosystem identifier.
      created:
        type: string
        format: date-time
        description: Creation time of the catalog in UTC time in format (yyyy-mm-ddThh:mm:ssssssZ).
      modified:
        type: string
        format: date-time
        description: Last modification time of the catalog in UTC time in format (yyyy-mm-ddThh:mm:ssssssZ).
      activeSportProfileListIndex:
        type: integer
        format: int64
        description: The index of the active sport profile list (see SportProfileList.index). Not set if there are no profile lists.
      lists:
        type: array
        items:
          type: object
          $ref: '#/definitions/sportSportProfileList'
    description: Aggregate root for sport profile list catalog.
  sportVolume:
    type: object
    properties:
      volume:
        type: integer
        format: int32
        description: 'Volume level range: 0 (minimum) to 100 (maximum).'
  HypnogramSleepRating:
    type: string
    enum:
      - SLEEP_RATING_UNKNOWN
      - SLEEP_RATING_SLEPT_BAD
      - SLEEP_RATING_SLEPT_QUITE_BAD
      - SLEEP_RATING_SLEPT_NEITHER_BAD_NOR_WELL
      - SLEEP_RATING_SLEPT_QUITE_WELL
      - SLEEP_RATING_SLEPT_WELL
    default: SLEEP_RATING_UNKNOWN
    title: SleepRating
  SleepStateChangeSleepState:
    type: string
    enum:
      - SLEEP_STATE_WAKE
      - SLEEP_STATE_REM
      - SLEEP_STATE_NON_REM1
      - SLEEP_STATE_NON_REM2
      - SLEEP_STATE_NON_REM3
      - SLEEP_STATE_UNKNOWN
    default: SLEEP_STATE_WAKE
    description: |-
      - SLEEP_STATE_WAKE: This is regarded as an interruption of sleep during night.
       - SLEEP_STATE_REM: rem sleep.
       - SLEEP_STATE_NON_REM1: non rem sleep.
       - SLEEP_STATE_NON_REM2: non rem sleep.
       - SLEEP_STATE_NON_REM3: Deepest sleep.
       - SLEEP_STATE_UNKNOWN: State is unknown e.g. because of bad skin contact.
    title: SleepState
  SleepWakeStateChangeSleepWakeState:
    type: string
    enum:
      - SLEEP_WAKE_STATE_SLEEP
      - SLEEP_WAKE_STATE_WAKE
      - SLEEP_WAKE_STATE_NO_DATA
    default: SLEEP_WAKE_STATE_SLEEP
    title: SleepWakeState
  domainssleepDeviceReference:
    type: object
    properties:
      uuid:
        type: string
        example: 0e030000-0084-0000-0000-00001234abcd
        description: Unique identifier of the device.
        maxLength: 36
        minLength: 36
    title: DeviceReference
    required:
      - uuid
  domainssleepErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
    title: ErrorResponse
  sleepAnalysis:
    type: object
    properties:
      efficiencyPercent:
        type: number
        format: double
        description: 'Sleep efficiency in percent. Range: [0.0 - 100.0].'
        maximum: 100
      continuityIndex:
        type: number
        format: double
        description: 'Sleep continuity index. Range: [0.0 - 5.0].'
        maximum: 5
      continuityClass:
        type: integer
        format: int32
        description: 'Sleep continuity class. Range: [0 - 5].'
        maximum: 5
      feedback:
        type: string
        example: "01101"
        description: |-
          Sleep feedback.
          Contains 5 digits, order of digits: [own sleep time goal, sleep efficiency, sleep continuity, own sleep rating, recommended sleep time].
          Values: 0 = below, 1 = above and 2 = no evaluation.
        pattern: ^[0-2]{5}$
    title: Analysis
    required:
      - efficiencyPercent
      - continuityIndex
      - continuityClass
  sleepHypnogram:
    type: object
    properties:
      sleepStart:
        type: string
        example: "2025-01-01T23:12:33.435+02:00"
        description: Sleep start time in ISO-8601 offset date-time format. User's local time.
      sleepEnd:
        type: string
        example: "2025-01-02T08:12:33.435+02:00"
        description: Sleep end time in ISO-8601 offset date-time format. User's local time.
      alarmStopTime:
        type: string
        example: "2025-01-02T08:15:33.435+02:00"
        description: Time when the user stopped the alarm in ISO-8601 offset date-time format. User's local time. Optional.
      alarmSnoozeTimes:
        type: array
        example:
          - "2025-01-01T08:05:00.435+02:00"
          - "2025-01-01T08:10:00.435+02:00"
        items:
          type: string
        description: List of times when the user snoozed the alarm in ISO-8601 offset date-time format. User's local time.
      sleepStateChanges:
        type: array
        items:
          type: object
          $ref: '#/definitions/sleepSleepStateChange'
        description: List of changes in the depth of user's sleep.
      sleepStartOffsetSeconds:
        type: integer
        format: int32
        description: Offset seconds for sleep start time. Used in sleep trimming. Value can be negative or positive.
        multipleOf: 30
        maximum: 10800
        minimum: -3600
      sleepEndOffsetSeconds:
        type: integer
        format: int32
        description: Offset seconds for sleep end time. Used in sleep trimming. Value can be negative or positive.
        multipleOf: 30
        maximum: 3600
        minimum: -10800
      sleepRating:
        $ref: '#/definitions/HypnogramSleepRating'
        description: Sleep quality rating. Optional.
      sleepGoal:
        type: string
        example: 28800s
        description: Sleep duration goal. Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
        maximum: 72000
        minimum: 14400
      birthday:
        type: string
        example: "2000-01-01"
        description: The user's birthday in ISO 8601 date format.
      deviceReference:
        $ref: '#/definitions/domainssleepDeviceReference'
        description: The recording Device ID. Optional.
      batteryRanOut:
        type: boolean
        description: Tells whether the sleep recording was stopped because of low battery. Default is false.
    title: Hypnogram
    required:
      - sleepStart
      - sleepEnd
      - birthday
      - batteryRanOut
  sleepInterruptions:
    type: object
    properties:
      totalDuration:
        type: string
        example: 220s
        description: Total duration of interruptions. Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
      longDuration:
        type: string
        example: 180s
        description: Duration of long interruptions. Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
      shortDuration:
        type: string
        example: 40s
        description: Duration of short interruptions. Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
      totalCount:
        type: integer
        format: int32
        description: Total count of interruptions.
      longCount:
        type: integer
        format: int32
        description: Count of long interruptions.
      shortCount:
        type: integer
        format: int32
        description: Count of short interruptions.
    title: Interruptions
    required:
      - totalDuration
      - longDuration
      - shortDuration
      - totalCount
      - longCount
      - shortCount
  sleepListSleepWakeVectorsResponse:
    type: object
    properties:
      sleepWakeVectors:
        type: array
        items:
          type: object
          $ref: '#/definitions/sleepSleepWakeVector'
        description: The list of sleep/wake state vectors for the requested range.
    title: ListSleepWakeVectorsResponse
  sleepListSleepsResponse:
    type: object
    properties:
      nightSleeps:
        type: array
        items:
          type: object
          $ref: '#/definitions/sleepNightSleep'
        description: The list of night sleeps from the requested range.
    title: ListSleepsResponse
  sleepNightSleep:
    type: object
    properties:
      sleepDate:
        type: string
        example: "2025-01-02"
        description: Date of the sleep in ISO 8601 format.
      sleepResult:
        $ref: '#/definitions/sleepSleepResult'
        description: Sleep result.
      originalSleepResult:
        $ref: '#/definitions/sleepSleepResult'
        description: Sleep result as it was originally before any edits. Only available if the sleep has been edited.
      sleepScore:
        $ref: '#/definitions/sleepSleepScoreData'
        description: Sleep score data.
      sleepEvaluation:
        $ref: '#/definitions/sleepSleepEvaluation'
        description: Sleep evaluation.
    title: NightSleep
    required:
      - sleepDate
  sleepPhaseDurations:
    type: object
    properties:
      wake:
        type: string
        example: 60s
        description: Duration of wake phase. Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
      rem:
        type: string
        example: 70s
        description: Duration of rem phase. Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
      light:
        type: string
        example: 80s
        description: Duration of light sleep. Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
      deep:
        type: string
        example: 90s
        description: Duration of deep sleep. Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
      unknown:
        type: string
        example: 100s
        description: Duration of unknown phase. Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
      remPercentage:
        type: number
        format: double
        description: 'Percentage of time spent in rem phase. Range: [0.0 - 100.0].'
        maximum: 100
      deepPercentage:
        type: number
        format: double
        description: 'Percentage of time spent in deep sleep. Range: [0.0 - 100.0].'
        maximum: 100
    title: PhaseDurations
    required:
      - wake
      - rem
      - light
      - deep
      - unknown
      - remPercentage
      - deepPercentage
  sleepSleepCycle:
    type: object
    properties:
      secondsFromSleepStart:
        type: integer
        format: int64
        description: Start offset from the beginning of the sleep.
      sleepDepthAtCycleStart:
        type: number
        format: float
        description: 'Sleep depth at the start of sleep cycle. Range: [0.0 - 2.0].'
        maximum: 2
    title: SleepCycle
    required:
      - secondsFromSleepStart
      - sleepDepthAtCycleStart
  sleepSleepEvaluation:
    type: object
    properties:
      sleepType:
        $ref: '#/definitions/sleepSleepType'
      sleepSpan:
        type: string
        description: Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
      asleepDuration:
        type: string
        description: Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
      age:
        type: number
        format: double
        description: User age in years.
      analysis:
        $ref: '#/definitions/sleepAnalysis'
        description: Sleep analysis.
      interruptions:
        $ref: '#/definitions/sleepInterruptions'
        description: Sleep interruptions.
      phaseDurations:
        $ref: '#/definitions/sleepPhaseDurations'
        description: Sleep phases durations.
    title: SleepEvaluation
  sleepSleepResult:
    type: object
    properties:
      hypnogram:
        $ref: '#/definitions/sleepHypnogram'
        description: Hypnogram data.
      sleepCycles:
        type: array
        items:
          type: object
          $ref: '#/definitions/sleepSleepCycle'
        description: Sleep cycles.
    title: SleepResult
  sleepSleepScoreData:
    type: object
    properties:
      created:
        type: string
        format: date-time
        example: "2025-05-20T03:00:59.064Z"
        description: Creation time in UTC. Timestamp in RFC 3339 format "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z".
      lastModified:
        type: string
        format: date-time
        example: "2025-05-20T03:00:59.064Z"
        description: Last modification time in UTC. Timestamp in RFC 3339 format "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z".
      sleepScore:
        type: number
        format: float
        description: Average score of the overall sleep. (1 to 100).
        maximum: 100
        minimum: 1
      sleepTimeOwnTargetScore:
        type: number
        format: float
        description: Score of the sleep w.r.t. ownTargetSleepTime. (1 to 100).
        maximum: 100
        minimum: 1
      sleepTimeRecommendationScore:
        type: number
        format: float
        description: Score of the sleep w.r.t recommended sleep time. (1 to 100).
        maximum: 100
        minimum: 1
      continuityScore:
        type: number
        format: float
        description: Score of the sleep w.r.t continuityIndex. (1 to 100).
        maximum: 100
        minimum: 1
      efficiencyScore:
        type: number
        format: float
        description: Score of the sleep w.r.t SleepEfficiency. (1 to 100).
        maximum: 100
        minimum: 1
      remScore:
        type: number
        format: float
        description: Score of the sleep w.r.t REM sleep. (1 to 100).
        maximum: 100
        minimum: 1
      n3Score:
        type: number
        format: float
        description: Score of the sleep w.r.t N3 sleep. (1 to 100).
        maximum: 100
        minimum: 1
      longInterruptionsTimeScore:
        type: number
        format: float
        description: Score of the sleep w.r.t long interruption time. (1 to 100).
        maximum: 100
        minimum: 1
      groupDurationScore:
        type: number
        format: float
        description: Average score of duration variables.
        maximum: 100
        minimum: 1
      groupSolidityScore:
        type: number
        format: float
        description: Average score of solidity variables.
        maximum: 100
        minimum: 1
      groupRefreshScore:
        type: number
        format: float
        description: Average score of refresh variables.
        maximum: 100
        minimum: 1
      scoreRate:
        type: integer
        format: int32
        description: Rating of sleep score status in scale 1-5 compared to own usual level (1 = worst, 5 = best).
        maximum: 5
        minimum: 1
    title: SleepScoreData
    required:
      - created
      - lastModified
      - sleepScore
      - sleepTimeOwnTargetScore
      - sleepTimeRecommendationScore
      - continuityScore
      - efficiencyScore
      - remScore
      - n3Score
      - longInterruptionsTimeScore
      - groupDurationScore
      - groupSolidityScore
      - groupRefreshScore
  sleepSleepStateChange:
    type: object
    properties:
      offsetFromStart:
        type: string
        example: 30s
        description: Offset from the start of the sleep. Format is seconds with optional fraction of seconds in maximum of nanoseconds precision like "3.000000001s".
      newState:
        $ref: '#/definitions/SleepStateChangeSleepState'
        description: The state the user went into.
    title: SleepStateChange
    required:
      - offsetFromStart
  sleepSleepType:
    type: string
    enum:
      - SLEEP_TYPE_UNKNOWN
      - SLEEP_TYPE_SLEEP_TIME_ONLY
      - SLEEP_TYPE_SLEEP_PLUS
      - SLEEP_TYPE_SLEEP_PLUS_STAGES
    default: SLEEP_TYPE_UNKNOWN
    description: |-
      - SLEEP_TYPE_UNKNOWN: Sleep type is unknown.
       - SLEEP_TYPE_SLEEP_TIME_ONLY: Sleep information contains sleep time only, no sleep stages and sleep cycles.
       - SLEEP_TYPE_SLEEP_PLUS: Sleep information contains sleep time with sleep stages, no sleep cycles.
       - SLEEP_TYPE_SLEEP_PLUS_STAGES: Sleep information contains sleep time with sleep stages and sleep cycles.
    title: SleepType
  sleepSleepWakeStateChange:
    type: object
    properties:
      startOffset:
        type: integer
        format: int64
        description: Start of the new state as milliseconds from the start of the day.
      newState:
        $ref: '#/definitions/SleepWakeStateChangeSleepWakeState'
    title: SleepWakeStateChange
    required:
      - startOffset
  sleepSleepWakeVector:
    type: object
    properties:
      date:
        type: string
        example: "2025-01-02"
        description: Start date of the vector. Date in ISO-8601 format.
      deviceReference:
        $ref: '#/definitions/domainssleepDeviceReference'
        description: The recording device reference.
      sleepWakeStateChanges:
        type: array
        items:
          type: object
          $ref: '#/definitions/sleepSleepWakeStateChange'
        description: List of sleep/wake state changes for the date.
    title: SleepWakeVector
    required:
      - date
  DirectionInstructionContinueStraight:
    type: object
  DirectionInstructionFork:
    type: object
    properties:
      direction:
        $ref: '#/definitions/ForkForkDirection'
        description: Direction of the fork.
  DirectionInstructionRoundaboutExit:
    type: object
    properties:
      currentExitNumber:
        type: integer
        format: int64
        description: |-
          The number of the exit
          The exit through which the roundabout is entered is number 0
          In range [0, total_exits-1].
      targetExitNumber:
        type: integer
        format: int64
        description: |-
          The target exit's number to which this instruction is guiding the user to.
          In range [1, total_exits-1].
      totalExits:
        type: integer
        format: int64
        description: |-
          The total number of exits in this roundabout.
          Also counts exits that are not part of the route.
      orientation:
        $ref: '#/definitions/RoundaboutExitRoundaboutOrientation'
        description: Orientation of the roundabout.
  DirectionInstructionTurn:
    type: object
    properties:
      direction:
        $ref: '#/definitions/TurnTurnDirection'
        description: Direction of the turn.
      type:
        $ref: '#/definitions/TurnTurnType'
        description: Type of the turn.
  DirectionInstructionUTurn:
    type: object
  ForkForkDirection:
    type: string
    enum:
      - NO_DIRECTION
      - LEFT
      - RIGHT
    default: NO_DIRECTION
    description: |2-
       - NO_DIRECTION: No direction specified.
       - LEFT: Fork left.
       - RIGHT: Fork right.
  RoundaboutExitRoundaboutOrientation:
    type: string
    enum:
      - UNKNOWN
      - CLOCKWISE
      - COUNTERCLOCKWISE
    default: UNKNOWN
    description: |2-
       - UNKNOWN: Unknown orientation.
       - CLOCKWISE: Clockwise orientation.
       - COUNTERCLOCKWISE: Counterclockwise orientation.
  TurnTurnDirection:
    type: string
    enum:
      - NO_DIRECTION
      - LEFT
      - RIGHT
    default: NO_DIRECTION
    description: |2-
       - NO_DIRECTION: No direction specified.
       - LEFT: Turn left.
       - RIGHT: Turn right.
  TurnTurnType:
    type: string
    enum:
      - REGULAR
      - SLIGHT
      - SHARP
    default: REGULAR
    description: |2-
       - REGULAR: Regular turn: right angle: ~90 degrees.
       - SLIGHT: Slight turn: obtuse angle: ~100-180 degrees.
       - SHARP: Sharp turn: acute angle: ~0-80 degrees.
  apiLoadRouteResponse:
    type: object
    properties:
      userRoute:
        $ref: '#/definitions/routeUserRoute'
        description: Route data.
  datamodelrouteLocation:
    type: object
    properties:
      longitude:
        type: number
        format: double
        description: Longitude of the location.
      latitude:
        type: number
        format: double
        description: Latitude of the location.
      altitudeMeters:
        type: number
        format: double
        description: Altitude of the location in meters.
    title: Location
  datamodelrouteRoute:
    type: object
    properties:
      name:
        type: string
        description: Route name.
      distanceMeters:
        type: number
        format: double
        description: Route distance in meters.
      routeSource:
        type: string
        description: |-
          Route source.
      sourceId:
        type: string
        description: Route source Id.
      sourceVersionIdentifier:
        type: string
        description: Route source version identifier.
      routePoints:
        type: array
        items:
          type: object
          $ref: '#/definitions/routeRoutePoint'
        description: Route points.
      hasInstructions:
        type: boolean
        description: Does the route have instructions.
      sportId:
        type: integer
        format: int64
        description: |-
          Route's sport identifier.
          All available sports can be loaded from the /v4/data/sports/list endpoint.
    title: Route
  routeDirectionInstruction:
    type: object
    properties:
      turn:
        $ref: '#/definitions/DirectionInstructionTurn'
        description: Turn instruction.
      fork:
        $ref: '#/definitions/DirectionInstructionFork'
        description: Fork instruction.
      continueStraight:
        $ref: '#/definitions/DirectionInstructionContinueStraight'
        description: Continue straight instruction.
      uTurn:
        $ref: '#/definitions/DirectionInstructionUTurn'
        description: U-turn instruction.
      roundaboutExit:
        $ref: '#/definitions/DirectionInstructionRoundaboutExit'
    title: DirectionInstruction
  routeRoutePoint:
    type: object
    properties:
      location:
        $ref: '#/definitions/datamodelrouteLocation'
        description: Location of the route point.
      distanceFromStartMeters:
        type: number
        format: double
        description: Distance from the start of the route in meters.
      timeOffsetFromStartMillis:
        type: integer
        format: int64
        description: Time offset from the start of the route in milliseconds.
      instructions:
        type: array
        items:
          type: object
          $ref: '#/definitions/routeDirectionInstruction'
        description: Direction instructions for the route point.
    title: RoutePoint
  routeUserRoute:
    type: object
    properties:
      id:
        type: string
        description: Route ecosystem identifier - Required.
      route:
        $ref: '#/definitions/datamodelrouteRoute'
        description: Route data.
      created:
        type: string
        format: date-time
        description: |-
          Route creation time in UTC time in RFC 3339 format (yyyy-mm-ddThh:mm:sssZ).
      modified:
        type: string
        format: date-time
        description: |-
          Last modification time of the route in UTC time in RFC 3339 format (yyyy-mm-ddThh:mm:sssZ).
      legacyRouteId:
        type: string
        format: uint64
        description: |-
          Legacy route ecosystem identifier.
    title: UserRoute
  routeapiErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
        description: Response error message.
  DeviceRegistrationEventEventType:
    type: string
    enum:
      - EVENT_TYPE_UNSPECIFIED
      - EVENT_TYPE_ADDED
      - EVENT_TYPE_DELETED
    default: EVENT_TYPE_UNSPECIFIED
  deviceDevice:
    type: object
    properties:
      deviceReference:
        $ref: '#/definitions/domainsdeviceDeviceReference'
        description: Device reference.
      firmwareVersion:
        type: string
        example: 1.2.3
        description: Firmware version of the device if known.
        maxLength: 100
      hardwareIdentifier:
        type: string
        example: "00123456.01"
        description: Hardware identifier of the device if known.
        maxLength: 15
      salesRegion:
        type: string
        example: GLOBAL
        description: Sales region where the device was sold.
        maxLength: 32
      productVariant:
        $ref: '#/definitions/deviceProductVariantReference'
        description: Product type of the device.
    title: Device
    required:
      - deviceReference
      - productVariant
  deviceProductVariantReference:
    type: object
    properties:
      productDescription:
        type: string
        example: Polar Vantage V
        title: Product description
        maxLength: 500
      productColor:
        type: string
        example: Black
        title: Optional product color variant
        maxLength: 50
    title: ProductVariantReference
    required:
      - productDescription
  domainsdeviceDeviceReference:
    type: object
    properties:
      uuid:
        type: string
        example: 0e030000-0084-0000-0000-00001234abcd
        description: Unique identifier of the device.
        maxLength: 36
        minLength: 36
    title: DeviceReference
    required:
      - uuid
  domainsuserdeviceErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
  userdeviceActiveUserDevice:
    type: object
    properties:
      deviceReference:
        $ref: '#/definitions/domainsdeviceDeviceReference'
        description: Device reference.
      registered:
        type: string
        format: date-time
        example: "2025-01-01T10:12:33Z"
        description: Time when device was registered for user in ISO 8601 format.
      deviceSettings:
        type: array
        items:
          type: object
          $ref: '#/definitions/userdeviceUserDeviceSetting'
          required:
            - device_settings
        description: User device settings.
    title: ActiveUserDevice
    required:
      - deviceReference
      - registered
  userdeviceArchivedUserDevice:
    type: object
    properties:
      deviceReference:
        $ref: '#/definitions/domainsdeviceDeviceReference'
        description: Device reference.
      deregistered:
        type: string
        format: date-time
        example: "2025-01-01T10:12:33Z"
        description: Time when device was deregistered in ISO 8601 format.
    title: ArchivedUserDevice
    required:
      - deviceReference
      - deregistered
  userdeviceDeviceRegistrationEvent:
    type: object
    properties:
      eventTimestamp:
        type: string
        format: date-time
        example: "2025-01-01T10:12:33.435Z"
        description: Time when device registration event occurred in ISO 8601 format.
      deviceReference:
        $ref: '#/definitions/domainsdeviceDeviceReference'
        description: Device reference.
      eventType:
        $ref: '#/definitions/DeviceRegistrationEventEventType'
        example: EVENT_TYPE_ADDED
        description: Type of the registration event.
    title: DeviceRegistrationEvent
    required:
      - eventTimestamp
      - deviceReference
      - eventType
  userdeviceListUserDevicesResponse:
    type: object
    properties:
      devicesData:
        type: array
        items:
          type: object
          $ref: '#/definitions/deviceDevice'
        description: List of devices associated with the user.
      userDevicesData:
        $ref: '#/definitions/userdeviceUserDevicesData'
        description: User associated device data.
  userdeviceUserDeviceSetting:
    type: object
    properties:
      name:
        type: string
        example: language
        description: Setting name.
        maxLength: 255
      value:
        type: string
        example: en
        description: Setting value.
        maxLength: 255
    title: UserDeviceSetting
    required:
      - name
      - value
  userdeviceUserDevicesData:
    type: object
    properties:
      activeDevices:
        type: array
        items:
          type: object
          $ref: '#/definitions/userdeviceActiveUserDevice'
        description: List of devices on user's account.
      archivedDevices:
        type: array
        items:
          type: object
          $ref: '#/definitions/userdeviceArchivedUserDevice'
        description: List of devices deregistered from user's account.
      deviceRegistrationEvents:
        type: array
        items:
          type: object
          $ref: '#/definitions/userdeviceDeviceRegistrationEvent'
        description: List of device registration and deregistration events.
    title: UserDeviceData
  domainsppiDeviceReference:
    type: object
    properties:
      uuid:
        type: string
        example: 0e030000-0084-0000-0000-00001234abcd
        description: Unique identifier of the device.
        maxLength: 36
        minLength: 36
    title: DeviceReference
    required:
      - uuid
  domainsppiErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
    title: ErrorResponse
  ppiDailyPpiSamples:
    type: object
    properties:
      date:
        type: string
        example: "2025-08-01"
        description: Date of the PPI samples in ISO 8601 format.
      modified:
        type: string
        format: date-time
        example: "2025-08-01T12:00:00Z"
        description: Timestamp in ISO 8601 format. UTC time. Returned if data has been found for the date.
      ppiSamplesPerDevice:
        type: array
        items:
          type: object
          $ref: '#/definitions/ppiRecordedPpiSamples'
          required:
            - ppi_samples_per_device
    title: DailyPpiSamples
    required:
      - date
  ppiListPpiSamplesResponse:
    type: object
    properties:
      dailyPpiSamples:
        type: array
        items:
          type: object
          $ref: '#/definitions/ppiDailyPpiSamples'
        description: Pulse to pulse interval samples per day.
    title: ListPpiSamplesResponse
  ppiPpiSample:
    type: object
    properties:
      offsetMillis:
        type: integer
        format: int64
        example: 70
        description: Offset of the sample from the beginning of the day in milliseconds.
      ppInterval:
        type: integer
        format: int64
        example: 1052
        description: Pulse to pulse interval value in milliseconds.
      errorEstimateMillis:
        type: integer
        format: int64
        example: 10
        description: Error estimate for the PPI value in milliseconds. Describes the quality of PPI sample.
      skinContact:
        type: boolean
        example: true
        description: Skin contact status. True if skin contact is detected, false otherwise.
      movement:
        type: boolean
        example: false
        description: Movement status. True if movement is detected, false otherwise.
      offline:
        type: boolean
        example: false
        description: Offline status. True if the PPI sample is recorded during an offline period, false otherwise.
    title: PpiSample
    required:
      - offsetMillis
      - ppInterval
      - errorEstimateMillis
      - skinContact
      - movement
      - offline
  ppiRecordedPpiSamples:
    type: object
    properties:
      recordingDevice:
        $ref: '#/definitions/domainsppiDeviceReference'
        description: Reference to the device that recorded the PPI samples.
      ppiSamples:
        type: array
        items:
          type: object
          $ref: '#/definitions/ppiPpiSample'
          required:
            - ppi_samples
        description: Recorded PPI samples.
      recordingTriggerTypeChanges:
        type: array
        items:
          type: object
          $ref: '#/definitions/ppiRecordingTriggerTypeChange'
          required:
            - recording_trigger_type_changes
        description: Recording trigger type changes for the recorded PPI samples.
    title: RecordedPpiSamples
    required:
      - recordingDevice
  ppiRecordingTriggerTypeChange:
    type: object
    properties:
      triggerType:
        $ref: '#/definitions/ppiRecordingTriggerTypeChangeTriggerType'
        example: TRIGGER_TYPE_AUTOMATIC
        description: Type of the recording trigger.
      offsetMillis:
        type: integer
        format: int64
        example: 70
        description: Offset of the recording trigger type change in milliseconds from the beginning of the day.
    title: RecordingTriggerTypeChange
    required:
      - triggerType
      - offsetMillis
  ppiRecordingTriggerTypeChangeTriggerType:
    type: string
    enum:
      - TRIGGER_TYPE_UNDEFINED
      - TRIGGER_TYPE_AUTOMATIC
      - TRIGGER_TYPE_MANUAL
    default: TRIGGER_TYPE_UNDEFINED
    description: |-
      - TRIGGER_TYPE_UNDEFINED: Undefined.
       - TRIGGER_TYPE_AUTOMATIC: Automatic recording (for example 24/7 recording).
       - TRIGGER_TYPE_MANUAL: Manual recording (started by user).
    title: TriggerType
  domainsnightlyrechargeErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
  domainsnightlyrechargeListResponse:
    type: object
    properties:
      nightlyRechargeResults:
        $ref: '#/definitions/nightlyrechargeNightlyRechargeResults'
  nightlyrechargeNightlyRechargeBreathingRateSamples:
    type: object
    properties:
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time zone.
      sampleInterval:
        type: string
        example: 300s
        description: Sampling interval in seconds.
      breathingRateValues:
        type: array
        items:
          type: number
          format: double
        title: List of values in in br/min
    title: NightlyRechargeBreathingRateSamples
    required:
      - startTime
      - sampleInterval
  nightlyrechargeNightlyRechargeHrvSamples:
    type: object
    properties:
      startTime:
        type: string
        example: 2025-01-01T10:12:33.435
        description: Datetime in ISO 8601 format. In user local time zone.
      sampleInterval:
        type: string
        example: 300s
        description: Sampling interval in seconds.
      hrvValues:
        type: array
        items:
          type: number
          format: double
        title: List of values in ms
    title: NightlyRechargeHrvSamples
    required:
      - startTime
      - sampleInterval
  nightlyrechargeNightlyRechargeResult:
    type: object
    properties:
      created:
        type: string
        format: date-time
        example: "2025-01-01T10:12:33.435Z"
        description: Time when the result was created in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: "2025-01-01T10:12:33.435Z"
        description: Time when the result was last modified in ISO 8601 format. UTC time.
      ansStatus:
        type: number
        format: double
        title: |-
          The limit of ansStatus is from -15.7068 to 15.7068. A value over 0 is representing
          higher parasympathetic activity than usually (and lower sympathetic) and value below 0
          is representing lower parasympathetic activity than usually (and higher sympathetic)
        maximum: 15.7068
        minimum: -15.7068
      recoveryIndicator:
        type: integer
        format: int64
        description: The combination of normalized ANS status and normalized Sleep Score and Sleep Metric. Between 1 to 6.
        maximum: 6
        minimum: 1
      recoveryIndicatorSubLevel:
        type: integer
        format: int64
        description: |-
          This is a number between 0-100 and it indicates in more detail what is the level of combination of ANS
          and Sleep inside the recoveryIndicator class. I.e. if your recovery_indicator is 2, then
          recovery_indicator_sub_level 0 indicates that you are at the bottom of that class and ~100
          indicates that you are at almost recovery_indicator level 3.
        maximum: 100
      ansRate:
        type: integer
        format: int64
        title: Rating of ans status in scale 1-5 compared to own usual level. (5 = best, 1 = worst)
        maximum: 5
        minimum: 1
      meanNightlyRecoveryRri:
        type: integer
        format: int64
        example: 800
        title: Mean of the HR (after 0.5h from sleep start to 4,5h after sleep start hr) samples to beat interval time. (ms)
      meanNightlyRecoveryRmssd:
        type: integer
        format: int64
        example: 800
        title: Mean of the PPI (after 0.5h from sleep start to 4,5h after sleep start PPI) calculated RMSSD values. (ms)
      meanNightlyRecoveryRespirationInterval:
        type: integer
        format: int64
        example: 800
        title: Mean of the respiration interval (after 0.5h from sleep start to 4,5h after sleep start) samples. (ms)
      meanBaselineRri:
        type: integer
        format: int64
        example: 800
        title: The mean RRI from the baseline calculation. (ms)
      sdBaselineRri:
        type: integer
        format: int64
        example: 800
        description: The standard deviation of RRI from baseline calculation.
      meanBaselineRmssd:
        type: integer
        format: int64
        example: 800
        description: The mean RMSSD from the baseline calculation.
      sdBaselineRmssd:
        type: integer
        format: int64
        example: 800
        description: The standard deviation of RMSSD from baseline calculation.
      meanBaselineRespirationInterval:
        type: integer
        format: int64
        example: 800
        title: mean Respiration Interval from the baseline calculation. (ms)
      sdBaselineRespirationInterval:
        type: integer
        format: int64
        example: 800
        description: The standard deviation of Respiration Interval from baseline calculation.
      sleepTip:
        type: string
        example: Consider reserving more time for sleep in your schedule. Keep your diet healthy, and take a moment for yourself for relaxing. This might improve the regenerative qualities of your sleep.
        description: Chosen sleep tip for the user.
      vitalityTip:
        type: string
        example: Take a nap, if you like. A power nap of no more than 20-30 minutes might do the trick. The best remedy for low energy levels today is reserving some time for rest.
        description: Chosen vitality tip for the user.
      exerciseTip:
        type: string
        example: You can train today, even if you might feel you're not 100% up for it.
        description: Chosen exercise tip for the user.
      sleepResultDate:
        type: string
        example: "2025-01-01"
        description: |-
          Date for which the sleep result and nightly recovery result is for
          Date in ISO 8601 format. In user local time zone.
      hrvSamples:
        type: array
        items:
          type: object
          $ref: '#/definitions/nightlyrechargeNightlyRechargeHrvSamples'
        title: Heart rate variability samples
      breathingRateSamples:
        type: array
        items:
          type: object
          $ref: '#/definitions/nightlyrechargeNightlyRechargeBreathingRateSamples'
        title: Breathing rate samples
    title: NightlyRechargeResult
    required:
      - created
      - modified
      - sleepResultDate
  nightlyrechargeNightlyRechargeResults:
    type: object
    properties:
      nightlyRechargeResults:
        type: array
        items:
          type: object
          $ref: '#/definitions/nightlyrechargeNightlyRechargeResult'
    title: NightlyRechargeResults
  continuoussamplesContinuousSamples:
    type: object
    properties:
      heartRateSamplesPerDay:
        type: array
        items:
          type: object
          $ref: '#/definitions/continuoussamplesDailyHeartRateSamplesForDevice'
        description: Collection of heart rate samples for each day.
    title: ContinuousSamples
  continuoussamplesDailyHeartRateSamplesForDevice:
    type: object
    properties:
      date:
        type: string
        example: "2025-01-01"
        description: Date in ISO 8601 format. In user local time.
      deviceRef:
        $ref: '#/definitions/domainscontinuoussamplesDeviceReference'
        description: Reference to the device that recorded the heart rate samples.
      state:
        type: integer
        format: int32
        example: 1.23456789e+08
        description: A hash of the heart rate samples binary data.
      samples:
        type: array
        items:
          type: object
          $ref: '#/definitions/continuoussamplesHeartRateSample'
          required:
            - samples
        description: A collection of heart rate samples for the day.
    title: DailyHeartRateSamplesForDevice
    required:
      - date
      - deviceRef
      - state
  continuoussamplesHeartRateSample:
    type: object
    properties:
      heartRate:
        type: integer
        format: int64
        example: 80
        description: Heart rate in beats per minute.
        maximum: 240
      offsetMillis:
        type: integer
        format: int64
        example: 300
        description: Millis since the start of the day.
      triggerType:
        $ref: '#/definitions/continuoussamplesHeartRateSampleTriggerType'
        description: Source of the heart rate sample.
    title: HeartRateSample
    required:
      - heartRate
      - offsetMillis
      - triggerType
  continuoussamplesHeartRateSampleTriggerType:
    type: string
    example: TRIGGER_TIMED_247
    enum:
      - TRIGGER_UNKNOWN
      - TRIGGER_TIMED_247
      - TRIGGER_LOW_247
      - TRIGGER_HIGH_247
      - TRIGGER_MANUAL
    default: TRIGGER_UNKNOWN
    description: Source of the heart rate sample.
    title: TriggerType
  domainscontinuoussamplesDeviceReference:
    type: object
    properties:
      deviceId:
        type: string
        example: A1B2C3D4E5
        description: Reference to a device by its unique identifier.
    title: DeviceReference
    required:
      - deviceId
  domainscontinuoussamplesErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
    title: ErrorResponse
  domainscontinuoussamplesLoadResponse:
    type: object
    properties:
      continuousSamples:
        $ref: '#/definitions/continuoussamplesContinuousSamples'
    title: LoadResponse
  skincontactSkinContactDeviceReference:
    type: object
    properties:
      uuid:
        type: string
        example: 0e030000-0084-0000-0000-00001234abcd
        description: Unique identifier of the device.
        maxLength: 36
        minLength: 36
    title: DeviceReference
    required:
      - uuid
  skincontactSkinContactErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
    title: SkinContactErrorResponse
  skincontactSkinContactListResponse:
    type: object
    properties:
      skinContactPeriods:
        type: array
        items:
          type: object
          $ref: '#/definitions/skincontactSkinContactPeriod'
    title: SkinContactListResponse
  skincontactSkinContactPeriod:
    type: object
    properties:
      created:
        type: string
        format: date-time
        example: "2025-04-03T00:00:00Z"
        description: Timestamp in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: "2025-04-03T12:29:25.266Z"
        description: Timestamp in ISO 8601 format. UTC time.
      startTime:
        type: string
        example: 2025-04-04T00:00:00
        description: Datetime in ISO 8601 format. User's local time.
      stopTime:
        type: string
        example: 2025-04-04T14:00:00
        description: Datetime in ISO 8601 format. User's local time.
      deviceReference:
        $ref: '#/definitions/skincontactSkinContactDeviceReference'
        title: DeviceReference
      skinContactChanges:
        type: array
        items:
          type: object
          $ref: '#/definitions/skincontactSkinContactSample'
          required:
            - skin_contact_changes
        description: |-
          Skin contact changes.
          After first sample a new sample is saved only when skin contact value changes.
    title: SkinContactPeriod
    required:
      - created
      - modified
      - startTime
      - stopTime
      - deviceReference
  skincontactSkinContactSample:
    type: object
    properties:
      recordingTimeDeltaMilliseconds:
        type: string
        format: uint64
        example: 1000
        description: Recording time. Delta in milliseconds from start_time of the period.
      skinContact:
        type: boolean
        description: Skin contact. True if the device is in skin contact with user.
    title: SkinContactSample
    required:
      - recordingTimeDeltaMilliseconds
      - skinContact
  temperaturemeasurementSensorLocation:
    type: string
    enum:
      - SL_UNKNOWN
      - SL_DISTAL
      - SL_PROXIMAL
    default: SL_UNKNOWN
    description: |-
      - SL_UNKNOWN: Unknown sensor location.
       - SL_DISTAL: Distal from core.
       - SL_PROXIMAL: Proximal from core.
    title: SensorLocation
  temperaturemeasurementTemperatureMeasurementDeviceReference:
    type: object
    properties:
      uuid:
        type: string
        example: 0e030000-0084-0000-0000-00001234abcd
        description: Unique identifier of the device.
        maxLength: 36
        minLength: 36
    title: DeviceReference
    required:
      - uuid
  temperaturemeasurementTemperatureMeasurementErrorResponse:
    type: object
    properties:
      errorMessage:
        type: string
    title: TemperatureMeasurementErrorResponse
  temperaturemeasurementTemperatureMeasurementListResponse:
    type: object
    properties:
      temperatureMeasurementPeriod:
        type: array
        items:
          type: object
          $ref: '#/definitions/temperaturemeasurementTemperatureMeasurementPeriod'
    title: TemperatureMeasurementListResponse
  temperaturemeasurementTemperatureMeasurementPeriod:
    type: object
    properties:
      created:
        type: string
        format: date-time
        example: "2025-04-04T00:00:00Z"
        description: Timestamp in ISO 8601 format. UTC time.
      modified:
        type: string
        format: date-time
        example: "2025-04-04T11:00:01.342Z"
        description: Timestamp in ISO 8601 format. UTC time.
      startTime:
        type: string
        example: 2025-04-04T00:00:00
        description: Datetime in ISO 8601 format. User's local time.
      stopTime:
        type: string
        example: 2025-04-04T14:00:00
        description: Datetime in ISO 8601 format. User's local time.
      measurementType:
        $ref: '#/definitions/temperaturemeasurementTemperatureMeasurementType'
        example: TM_SKIN_TEMPERATURE
        description: Temperature measurement type.
      deviceReference:
        $ref: '#/definitions/temperaturemeasurementTemperatureMeasurementDeviceReference'
        description: DeviceReference.
      sensorLocation:
        $ref: '#/definitions/temperaturemeasurementSensorLocation'
        example: SL_PROXIMAL
        description: Sensor location of source device.
      temperatureMeasurementSamples:
        type: array
        items:
          type: object
          $ref: '#/definitions/temperaturemeasurementTemperatureMeasurementSample'
        description: Temperature measurement samples.
    title: TemperatureMeasurementPeriod
    required:
      - created
      - modified
      - startTime
      - stopTime
      - measurementType
      - deviceReference
      - sensorLocation
  temperaturemeasurementTemperatureMeasurementSample:
    type: object
    properties:
      recordingTimeDeltaMilliseconds:
        type: string
        format: uint64
        example: 1000
        description: Recording time. Delta in milliseconds from start_time of the period.
      temperatureCelsius:
        type: number
        format: float
        example: 36.5
        description: Temperature in celsius.
        maximum: 125
        minimum: -40
    title: TemperatureMeasurementSample
    required:
      - recordingTimeDeltaMilliseconds
      - temperatureCelsius
  temperaturemeasurementTemperatureMeasurementType:
    type: string
    enum:
      - TM_UNKNOWN
      - TM_SKIN_TEMPERATURE
      - TM_CORE_TEMPERATURE
    default: TM_UNKNOWN
    title: TemperatureMeasurementType
servers:
  - url: 'https://www.polaraccesslink.com/v4/data'
securityDefinitions:
  Basic:
    type: basic
  OAuth2:
    type: oauth2
    flow: accessCode
    authorizationUrl: https://auth.polar.com/oauth/authorize
    tokenUrl: https://auth.polar.com/oauth/token
    scopes:
      accesslink.read_all: Allows read access to user's data
