openapi: 3.0.0
info:
description: Polar AccessLink API documentation
version: v3
title: Polar AccessLink API
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: Users
description: This resource provides all the necessary functions to manage users.
- name: Physical info
description: >-
This resource allows partners to access their users' physical information.
- name: Pull notifications
description: >-
This resource allows partners to check if their users have available data
for downloading. Use client credentials authentication. Returns object
holding list of available data objects.
- name: Exercises
description: >-
Resources for getting information about exercise. These endpoints do not require an active transaction, but they
use hashed id.
- name: Daily activity
description: >-
This resource allows partners to access their users' daily activity data.
Webhooks are used to notify partners when new data is available.
- name: Continuous Heart Rate
description: >-
This resource allows partners to access their users' continuous heart rate data.
Continuous heart rate is recorded with supported devices when the heart rate tracking is turned on
in device settings. Samples are recording in 5 minute intervals. Heart rate samples from training sessions are not available through this resource.
Training sessions samples have more precise sampling interval and they can be accessed from the [training data resource](#exercises).
Supported devices
- name: Cardio load
description: >-
Cardio load is based on training impulse calculation (TRIMP), a commonly accepted and scientifically proven method to quantify training load.
Your Cardio load value tells you how much strain your training session put on your cardiovascular system.
The higher the Cardio load, the more strenuous the training session was for the cardiovascular system.
Cardio load is calculated after every workout from your heart rate data and session duration.
For more detailed information please check [cardio load](https://support.polar.com/e_manuals/unite/polar-unite-user-manual-english/cardio-load.htm).
- name: SleepWise™
description: >-
This resource allows partners to access their users' SleepWise™ data. All time values are UTC times.
SleepWise™ data is calculated for [SleepWise™](https://support.polar.com/en/polar-sleepwise) supported devices
when minimum of 5 days of sleep data is available. SleepWise™ data consists of alertness periods and circadian bedtime periods.
- name: Elixir™ Biosensing
description: >-
This resource allows partners to access their users' Elixir™ Biosensing data. All time values are UTC times.
Elixir™ Biosensing data consists of body temperature data, sleep skin temperature data, skin contacts data, wrist ECG test report data and SpO2 test report data.
- name: Webhooks
description: Webhook resources provides endpoints for creating, modifying and deleting webhooks.
- name: Sleep
description: >-
Sleep endpoints support [Polar Sleep Plus™](https://www.polar.com/en/smart-coaching/polar-sleep-plus) and
[Sleep Plus Stages™](https://www.polar.com/en/smart-coaching/sleep-plus-stages). Available data is presented in
section [Schemas](#schemas).
- name: Nightly Recharge
description: >-
Nightly Recharge™ is a recovery measurement that shows how well your body recovers from daily training and stress.
It is based on heart rate variability (HRV) and overnight heart rate data. The higher the Nightly Recharge score, the better your body has recovered.
For more detailed information please check [Nightly Recharge](https://support.polar.com/e_manuals/unite/polar-unite-user-manual-english/nightly-recharge.htm).
- name: Physical info (deprecated)
description: >-
This resource allows partners to access their users' physical information.
Whenever some user's physical information changes, new entry containing
full physical info is stored to AccessLink. Pull notifications can be used
to check if user have new physical information available. Available data
presented in section [Schemas](#schemas).
This resource is deprecated. Please use non-transactional [Physical info](#physical-info) instead.
- name: Daily activity (deprecated)
description: >-
This resource allows partners to access their users' daily activity data.
During the transfer, the activity data is copied also into the AccessLink
database so the end-users cannot change the data that is accessible via
AccessLink afterwards. Begin and end of day are determined by the time set
on the device used. No timezone information is available. Each transaction
will consist of at most 50 activity summaries. Available data presented in
section [Schemas](#schemas). Only data that has been uploaded to Flow after
the user has been registered to your client will be available.
Only data that has been uploaded in the last 28 days will be available.
This resource is deprecated. Please use non-transactional [Daily activity](#daily-activity) instead.
- name: Exercises (deprecated)
description: >-
This resource allows partners to access their users' training data. All
time values are UTC except start-time. Start-time is the time set on the
training computer. Each transaction will consist of at most 50 training
sessions. Available data presented in section [Schemas](#schemas). Only data
that has been uploaded to Flow after the user has been registered to your client will be available.
Only data that has been uploaded in the last 28 days will be available.
This resource is deprecated. Please use non-transactional [Exercises](#exercises) instead.
paths:
/v3/exercises:
get:
tags:
- Exercises
summary: List exercises
description: >-
List users exercises available in AccessLink. Only Exercises uploaded to Flow in the last 30 days are returned.
Only exercises that have been uploaded to Flow after the user is registered with your client will be returned.
Use samples and zones query parameters to return optional samples and zone information of the exercises.
Training Load Pro data will be included in the exercise object if the exercise is recorded with a specific wrist unit model,
please check [compatible devices](https://www.polar.com/en/smart-coaching/training-load-pro) for more information.
operationId: listExercisesWithoutTransaction
parameters:
- name: samples
in: query
description: Return all sample data for this exercise.
required: false
schema:
type: boolean
- name: zones
in: query
description: Return all zones data for this exercise.
required: false
schema:
type: boolean
- name: route
in: query
description: Return all route data for this exercise.
required: false
schema:
type: boolean
responses:
'200':
description: List of users exercises.
content:
application/json:
schema:
$ref: '#/components/schemas/exercisesHashId'
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
/v3/exercises/{exerciseId}:
get:
tags:
- Exercises
summary: Get exercise
description: >-
Get users exercise using hashed id. Only Exercises uploaded to Flow in the last 30 days are available.
Only exercises that have been uploaded to Flow after the user is registered with your client will be available.
Use samples and zones query parameters to return optional samples and zone information of the exercise.
operationId: getExerciseWithoutTransaction
parameters:
- name: exerciseId
in: path
description: Hashed exercise id.
required: true
schema:
type: string
- name: samples
in: query
description: Return all sample data for this exercise.
required: false
schema:
type: boolean
- name: zones
in: query
description: Return all zones data for this exercise.
required: false
schema:
type: boolean
- name: route
in: query
description: Return all route data for this exercise.
required: false
schema:
type: boolean
responses:
'200':
description: Exercise information.
content:
application/json:
schema:
$ref: '#/components/schemas/exerciseHashId'
'404':
description: Exercise not found.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
/v3/exercises/{exerciseId}/fit:
get:
tags:
- Exercises
summary: Get exercise FIT
description: >-
FIT file for users exercise. Only Exercises uploaded to Flow in the last 30 days are available.
Only exercises that have been uploaded to Flow after the user is registered with your client will be available.
See [FIT sport mappings in appendix](#sport-type-mapping-in-fit-files).
parameters:
- name: exerciseId
in: path
description: Hashed exercise id.
required: true
schema:
type: string
operationId: getExerciseFitWithoutTransaction
responses:
'200':
description: Return FIT file.
content:
'*/*':
schema:
type: string
format: binary
'404':
description: Exercise not found.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
/v3/exercises/{exerciseId}/tcx:
get:
tags:
- Exercises
summary: Get exercise TCX
description: >-
TCX file for users exercise without an AccessLink "transaction". Only Exercises uploaded to Flow in the last 30 days are available.
Only exercises that have been uploaded to Flow after the user is registered with your client will be available.
parameters:
- name: exerciseId
in: path
description: Hashed exercise id.
required: true
schema:
type: string
operationId: getExerciseTcxWithoutTransaction
responses:
'200':
description: Return gzipped TCX.
content:
application/vnd.garmin.tcx+xml:
schema:
type: string
format: binary
'404':
description: Exercise not found.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
/v3/exercises/{exerciseId}/gpx:
get:
tags:
- Exercises
summary: Get exercise GPX
description: >-
GPX file for users exercise without an AccessLink "transaction". Only Exercises uploaded to Flow in the last 30 days are available.
Only exercises that have been uploaded to Flow after the user is registered with your client will be available.
parameters:
- name: exerciseId
in: path
description: Hashed exercise id.
required: true
schema:
type: string
operationId: getExerciseGpxWithoutTransaction
responses:
'200':
description: Return exercise in GPX (GPS Exchange format).
content:
application/gpx+xml:
schema:
type: string
format: binary
'404':
description: Exercise not found.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
/v3/users:
post:
tags:
- Users
summary: Register user
description: >-
Once partner has been authorized by user, partner must register the user
before being able to access its data. API user-id and Polar User Id (polar-user-id) are interchangeable terms.
operationId: registerUser
responses:
'200':
description: User's base information.
content:
application/json:
schema:
$ref: '#/components/schemas/user'
application/xml:
schema:
$ref: '#/components/schemas/user'
'204':
description: No content when user with given userId is not found.
'409':
description: User already registered to partner or duplicated member-id.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
requestBody:
content:
application/xml:
schema:
$ref: '#/components/schemas/register'
application/json:
schema:
$ref: '#/components/schemas/register'
required: true
'/v3/users/{user-id}':
get:
tags:
- Users
summary: Get user information
description: >-
List user basic information.
Note: Although it is possible to get users weight and height from this
resource, the [get physical info](#get-physical-info) should be used
instead.
operationId: getUserInformation
parameters:
- name: user-id
in: path
description: User identifier
required: true
example: 475
schema:
type: integer
format: int64
pattern: '[0-9]+'
responses:
'200':
description: User's base information.
content:
application/json:
schema:
$ref: '#/components/schemas/user'
application/xml:
schema:
$ref: '#/components/schemas/user'
'204':
description: No content when user with given userId is not found.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
delete:
tags:
- Users
summary: Delete user
description: >-
When partner wishes no longer to receive user data, user can be
de-registered. This will revoke the access token authorized by user.
operationId: deleteUser
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
format: int64
pattern: '[0-9]+'
responses:
'204':
description: will be returned when user is successfully de-registered.
security:
- OAuth2:
- accesslink.read_all
/v3/users/physical-info:
get:
tags:
- Physical info
summary: Get user's physical info
description: >-
Retrieve user's physical information.
operationId: getUserPhysicalInformation
responses:
'200':
description: User's physical information.
content:
application/json:
schema:
$ref: '#/components/schemas/physical-info'
application/xml:
schema:
$ref: '#/components/schemas/physical-info'
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
'404':
description: User not found.
security:
- OAuth2:
- accesslink.read_all
/v3/notifications:
get:
tags:
- Pull notifications
summary: List
description: Get list of available exercises and activities for users
operationId: list
responses:
'200':
description: List of available data
content:
application/json:
schema:
$ref: '#/components/schemas/available-user-datas'
application/xml:
schema:
$ref: '#/components/schemas/available-user-datas'
'204':
description: No content when no available data found
security:
- Basic: [ ]
'/v3/users/{user-id}/exercise-transactions':
post:
tags:
- Exercises (deprecated)
summary: Create transaction
description: >-
Check for new training data and create a new transaction if found.
Only data uploaded to Flow in the last 30 days will be available.
Only data that has been uploaded to Flow after the user is registered with your client will be available.
operationId: createExerciseTransaction
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
pattern: '[0-9]+'
responses:
'201':
description: >-
Return link to created transaction containing new training session data.
content:
application/json:
schema:
$ref: '#/components/schemas/transaction-location'
application/xml:
schema:
$ref: '#/components/schemas/transaction-location'
'204':
description: No content when there is no new training session data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/exercise-transactions/{transaction-id}':
get:
tags:
- Exercises (deprecated)
summary: List exercises
description: >-
After successfully initiating a transaction, training sessions included
within it can be retrieved with the provided transactionId.
operationId: listExercises
parameters:
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
format: int64
pattern: '[0-9]+'
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
pattern: '[0-9]+'
responses:
'200':
description: >-
Return list of hyperlinks to training sessions contained within the transaction.
content:
application/json:
schema:
$ref: '#/components/schemas/exercises'
application/xml:
schema:
$ref: '#/components/schemas/exercises'
example:
exercises:
exercise:
- https://www.polaraccesslink.com/v3/users/12/exercise-transactions/34/exercises/56
- https://www.polaraccesslink.com/v3/users/12/exercise-transactions/34/exercises/120
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
put:
tags:
- Exercises (deprecated)
summary: Commit transaction
description: >-
After successfully retrieving training session data within a
transaction, partners are expected to commit the transaction.
operationId: commitExerciseTransaction
parameters:
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
format: int64
pattern: '[0-9]+'
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
pattern: '[0-9]+'
responses:
'200':
description: Transaction has been committed and data deleted.
'204':
description: No content when there is no data available.
'404':
description: No transaction was found with given transaction id.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/exercise-transactions/{transaction-id}/exercises/{exercise-id}':
get:
tags:
- Exercises (deprecated)
summary: Get exercise summary
description: Retrieve training session summary data
operationId: getExerciseSummary
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
- name: exercise-id
in: path
description: Exercise identifier
required: true
schema:
type: integer
responses:
'200':
description: Exercise summary.
content:
application/json:
schema:
$ref: '#/components/schemas/exercise'
application/xml:
schema:
$ref: '#/components/schemas/exercise'
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/exercise-transactions/{transaction-id}/exercises/{exercise-id}/fit':
get:
tags:
- Exercises (deprecated)
summary: Get FIT
description: >-
Retrieve exercise in FIT format. See [FIT sport mappings in appendix](#sport-type-mapping-in-fit-files).
operationId: getFit
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
- name: exercise-id
in: path
description: Exercise identifier
required: true
schema:
type: integer
responses:
'200':
description: Return FIT file.
content:
'*/*':
schema:
type: string
'204':
description: No FIT available for exercise.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/exercise-transactions/{transaction-id}/exercises/{exercise-id}/gpx':
get:
tags:
- Exercises (deprecated)
summary: Get GPX
description: Retrieve training session summary data in GPX format
operationId: getGpx
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
- name: exercise-id
in: path
description: Exercise identifier
required: true
schema:
type: integer
- name: includePauseTimes
in: query
description: Whether to add pauses as part of the route. Default is false.
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Return training session in GPX (GPS Exchange format).
content:
application/gpx+xml:
schema:
type: string
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/exercise-transactions/{transaction-id}/exercises/{exercise-id}/heart-rate-zones':
get:
tags:
- Exercises (deprecated)
summary: Get heart rate zones
description: Retrieve heart rate zones in training session
operationId: getHeartRateZones
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
- name: exercise-id
in: path
description: Exercise identifier
required: true
schema:
type: integer
responses:
'200':
description: Return heart rate zones in training session.
content:
application/json:
schema:
$ref: '#/components/schemas/zones'
application/xml:
schema:
$ref: '#/components/schemas/zones'
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/exercise-transactions/{transaction-id}/exercises/{exercise-id}/samples':
get:
tags:
- Exercises (deprecated)
summary: Get available samples
description: Retrieve list of links to available samples in training session
operationId: getAvailableSamples
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
- name: exercise-id
in: path
description: Exercise identifier
required: true
schema:
type: integer
responses:
'200':
description: Return list of hyperlinks to available samples in training session.
content:
application/json:
schema:
$ref: '#/components/schemas/samples'
application/xml:
schema:
$ref: '#/components/schemas/samples'
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/exercise-transactions/{transaction-id}/exercises/{exercise-id}/samples/{type-id}':
get:
tags:
- Exercises (deprecated)
summary: Get samples
description: Retrieve sample data of given type
operationId: getSamples
parameters:
- name: type-id
in: path
description: Sample type id
required: true
schema:
type: string
format: byte
pattern: '[0-9]+'
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
- name: exercise-id
in: path
description: Exercise identifier
required: true
schema:
type: integer
responses:
'200':
description: Return sample data.
content:
application/json:
schema:
$ref: '#/components/schemas/sample'
application/xml:
schema:
$ref: '#/components/schemas/sample'
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/exercise-transactions/{transaction-id}/exercises/{exercise-id}/tcx':
get:
tags:
- Exercises (deprecated)
summary: Get TCX
description: Retrieve exercise in TCX format
operationId: getTcx
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
- name: exercise-id
in: path
description: Exercise identifier
required: true
schema:
type: integer
responses:
'200':
description: Return gzipped TCX.
content:
application/vnd.garmin.tcx+xml:
schema:
type: string
'204':
description: No TCX available for exercise.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/activity-transactions':
post:
tags:
- Daily activity (deprecated)
summary: Create transaction
description: |-
Initiate activity transaction.
Check for new activity summaries and create a new transaction if found.
Only data uploaded to Flow in the last 30 days will be available.
Only data that has been uploaded to Flow after the user is registered with your client will be available.
operationId: createActivityTransaction
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
pattern: '[0-9]+'
responses:
'201':
description: Return link to created transaction containing new activity data.
content:
application/json:
schema:
$ref: '#/components/schemas/transaction-location'
application/xml:
schema:
$ref: '#/components/schemas/transaction-location'
'204':
description: No content when there is no new activity data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/activity-transactions/{transaction-id}':
get:
tags:
- Daily activity (deprecated)
summary: List activities
description: >-
List new activity data.
After successfully initiating a transaction, activity summaries included
within it can be retrieved with the provided transactionId.
operationId: listActivities
parameters:
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
format: int64
pattern: '[0-9]+'
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
pattern: '[0-9]+'
responses:
'200':
description: >-
Return list of hyperlinks to activity summaries contained within the transaction.
content:
application/json:
schema:
$ref: '#/components/schemas/activity-log'
application/xml:
schema:
$ref: '#/components/schemas/activity-log'
'204':
description: No content when there is no data available.
'404':
description: No transaction was found with given transaction id.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
put:
tags:
- Daily activity (deprecated)
summary: Commit transaction
description: >-
After successfully retrieving activity summary data within a
transaction, partners are expected to commit the transaction.
operationId: commitActivityTransaction
parameters:
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
format: int64
pattern: '[0-9]+'
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
pattern: '[0-9]+'
responses:
'200':
description: Transaction has been committed and data deleted.
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/activity-transactions/{transaction-id}/activities/{activity-id}':
get:
tags:
- Daily activity (deprecated)
summary: Get activity summary
description: ''
operationId: getActivitySummary
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
- name: activity-id
in: path
description: Activity summary identifier
required: true
schema:
type: integer
responses:
'200':
description: Return activity summary contained within the transaction.
content:
application/json:
schema:
$ref: '#/components/schemas/activity'
application/xml:
schema:
$ref: '#/components/schemas/activity'
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/activity-transactions/{transaction-id}/activities/{activity-id}/step-samples':
get:
tags:
- Daily activity (deprecated)
summary: Get step samples
description: >-
Get activity step samples. Example data can be seen from
[appendix](#activity-step-time-series).
operationId: getStepSamples
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
- name: activity-id
in: path
description: Activity summary identifier
required: true
schema:
type: integer
responses:
'200':
description: Return activity step samples.
content:
application/json:
schema:
$ref: '#/components/schemas/activity-step-samples'
application/xml:
schema:
$ref: '#/components/schemas/activity-step-samples'
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/activity-transactions/{transaction-id}/activities/{activity-id}/zone-samples':
get:
tags:
- Daily activity (deprecated)
summary: Get zone samples
description: >-
Get activity zone samples. Example data can be seen from
[appendix](#activity-zone-time-series).
operationId: getZoneSamples
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
- name: activity-id
in: path
description: Activity summary identifier
required: true
schema:
type: integer
responses:
'200':
description: Return activity zone samples.
content:
application/json:
schema:
$ref: '#/components/schemas/activity-zone-samples'
application/xml:
schema:
$ref: '#/components/schemas/activity-zone-samples'
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/activities':
get:
tags:
- Daily activity
summary: List activities
description: >-
List users activities available in AccessLink. When no date range is given, activities from the last 28 days are returned.
When `from` is given, activities for the specified date range are returned.
From date cannot be older than 365 days from today and the maximum range between from and to is 28 days.
operationId: listActivitiesWithoutTransaction
parameters:
- name: from
in: query
description: Start date in format YYYY-MM-DD. If not given, defaults to 28 days ago.
required: false
schema:
type: string
format: date
example: '2023-01-01'
- name: to
in: query
description: End date in format YYYY-MM-DD. If not given, defaults to today.
required: false
schema:
type: string
format: date
example: '2023-01-28'
- name: steps
in: query
description: include steps samples for activity summary.
required: false
schema:
type: boolean
- name: activity_zones
in: query
description: include activity zones samples for activity summary.
required: false
schema:
type: boolean
- name: inactivity_stamps
in: query
description: include inactivity stamps for activity summary.
required: false
schema:
type: boolean
responses:
'200':
description: List of extended daily activities with all samples.
content:
application/json:
schema:
$ref: '#/components/schemas/array-of-activity-summary-with-all-samples'
'400':
description: Invalid or too old date. Cannot be older than 365 days.
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/activities/{date}':
get:
tags:
- Daily activity
summary: Get activity for given date
description: >-
Get users activity for given date. Date cannot be older than 365 days from today.
operationId: getActivityWithoutTransaction
parameters:
- name: date
in: path
description: Date in format YYYY-MM-DD.
required: true
schema:
type: string
format: date
- name: steps
in: query
schema:
type: boolean
description: include steps samples for activity summary.
- name: activity_zones
in: query
schema:
type: boolean
description: include activity zones samples for activity summary.
- name: inactivity_stamps
in: query
schema:
type: boolean
description: include inactivity stamps for activity summary.
responses:
'200':
description: Extended activity summaries with all samples.
content:
application/json:
schema:
$ref: '#/components/schemas/activity-summary-with-all-samples'
'204':
description: No content when no activity found for given date.
'403':
description: User has not accepted all mandatory consents.
'401':
description: Unauthorized.
'400':
description: Invalid or too old date. Cannot be older than 365 days.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/activities/samples':
get:
tags:
- Daily activity
summary: List activity samples
description: >-
List users activity samples available in AccessLink. When no date range is given, activity samples from the last 28 days are returned.
When `from` is given, activity samples for the specified date range are returned.
From date cannot be older than 365 days from today and the maximum range between from and to is 28 days.
operationId: listActivitySamplesWithoutTransaction
parameters:
- name: from
in: query
description: Start date in format YYYY-MM-DD. If not given, defaults to 28 days ago.
required: false
schema:
type: string
format: date
example: '2023-01-01'
- name: to
in: query
description: End date in format YYYY-MM-DD. If not given, defaults to today.
required: false
schema:
type: string
format: date
example: '2023-01-31'
responses:
'200':
description: List of users activity samples.
content:
application/json:
schema:
$ref: '#/components/schemas/array-of-activity-day-with-samples'
'400':
description: Invalid or too old date. Cannot be older than 365 days.
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/activities/samples/{date}':
get:
tags:
- Daily activity
summary: Get activity samples for given date
description: >-
Get users activity samples for given date. Date cannot be older than 365 days from today.
operationId: getActivitySamplesWithoutTransaction
parameters:
- name: date
in: path
description: Date in format YYYY-MM-DD.
required: true
schema:
type: string
format: date
responses:
'200':
description: Activity samples for given date.
content:
application/json:
schema:
$ref: '#/components/schemas/activity-day-with-samples'
'204':
description: No content when no activity samples found for given date.
'403':
description: User has not accepted all mandatory consents.
'401':
description: Unauthorized.
'400':
description: Invalid or too old date. Cannot be older than 365 days.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/physical-information-transactions':
post:
tags:
- Physical info (deprecated)
summary: Create transaction
description: |-
Initiate physical info transaction.
Check for new physical info and create a new transaction if found.
operationId: createPhysicalInfoTransaction
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
responses:
'201':
description: Return link to created transaction containing new physical info data.
content:
application/json:
schema:
$ref: '#/components/schemas/transaction-location'
application/xml:
schema:
$ref: '#/components/schemas/transaction-location'
'204':
description: No content when there is no new physical info data available.
'403':
description: User has not accepted all mandatory consents.
'401':
description: Unauthorized.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/physical-information-transactions/{transaction-id}':
get:
tags:
- Physical info (deprecated)
summary: List physical infos
description: >-
List new physical info data.
After successfully initiating a transaction, physical infos included
within it can be retrieved with the provided transactionId.
operationId: listPhysicalInfos
parameters:
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
format: int64
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
responses:
'200':
description: >-
Return list of hyperlinks to physical information contained within the transaction.
content:
application/json:
schema:
$ref: '#/components/schemas/physical-informations'
application/xml:
schema:
$ref: '#/components/schemas/physical-informations'
example:
physical-informations:
physical-information:
- https://www.polaraccesslink.com/v3/users/12/physical-information-transactions/12/physical-informations/56
- https://www.polaraccesslink.com/v3/users/12/physical-information-transactions/12/physical-informations/120
'204':
description: No content when there is no data available.
'404':
description: No transaction was found with given transaction id.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
put:
tags:
- Physical info (deprecated)
summary: Commit transaction
description: >-
After successfully retrieving physical information within a transaction,
partners are expected to commit the transaction.
operationId: commitPhysicalInfoTransaction
parameters:
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
format: int64
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
responses:
'200':
description: Transaction has been committed and data deleted.
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/{user-id}/physical-information-transactions/{transaction-id}/physical-informations/{physical-info-id}':
get:
tags:
- Physical info (deprecated)
summary: Get physical info
description: Get physical info entity data
operationId: getPhysicalInfo
parameters:
- name: user-id
in: path
description: User identifier
required: true
schema:
type: integer
- name: transaction-id
in: path
description: Transaction identifier
required: true
schema:
type: integer
- name: physical-info-id
in: path
description: Physical information identifier
required: true
schema:
type: integer
responses:
'200':
description: Physical information.
content:
application/json:
schema:
$ref: '#/components/schemas/physical-information'
application/xml:
schema:
$ref: '#/components/schemas/physical-information'
'204':
description: No content when there is no data available.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/webhooks':
post:
tags:
- Webhooks
summary: Create webhook
description: >-
Create new webhook.
When creating webhook the AccessLink sends a ping message to the url in request body.
The ping message must be answered with 200 OK or otherwise the webhook is not created.
Created webhook is by default in activated state and will send push notifications about subscribed events.
Webhook will be automatically deactivated if push notifications have not been successful for a period of seven (7) days.
**Note!** Save the *signature_secret_key* from response since this is the only chance to get it.
operationId: createWebhook
responses:
'201':
description: Created webhook.
content:
application/json:
schema:
$ref: '#/components/schemas/createdWebhook'
'400':
description: Webhook cannot be created.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
'409':
description: Webhook already exists.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
security:
- Basic: [ ]
requestBody:
description: Webhook to create.
content:
application/json:
schema:
$ref: '#/components/schemas/webhookRequest'
required: true
get:
tags:
- Webhooks
summary: Get webhook
description: >-
Returns created webhook if exists.
operationId: getWebhook
responses:
'200':
description: Existing webhook.
content:
application/json:
schema:
$ref: '#/components/schemas/webhookInfo'
security:
- Basic: [ ]
'/v3/webhooks/activate':
post:
tags:
- Webhooks
summary: Activate webhook
description: >-
Activate deactivated webhook. Activation is successful if the configured webhook url returns HTTP status 200 (OK) for the issued ping request.
responses:
'200':
description: Webhook has been successfully activated.
'204':
description: Webhook does not exist and it cannot be activated.
security:
- Basic: [ ]
'/v3/webhooks/deactivate':
post:
tags:
- Webhooks
summary: Deactivate webhook
description: >-
Deactivate activated webhook. Deactivated webhook does not push notifications about subscribed events.
responses:
'200':
description: Webhook has been successfully deactivated.
'204':
description: Webhook does not exist and it cannot be deactivated.
security:
- Basic: [ ]
'/v3/webhooks/{webhook-id}':
patch:
tags:
- Webhooks
summary: Update webhook
description: >-
Edit webhook event types and/or url.
When updating webhook url the AccessLink sends a ping message to the new address. The ping message must be
answered with 200 OK or otherwise the webhook is not updated.
operationId: updateWebhook
parameters:
- name: webhook-id
in: path
description: Webhook id to update
required: true
schema:
type: string
requestBody:
description: New value(s) for events and/or url.
content:
application/json:
schema:
$ref: '#/components/schemas/webhookPatch'
required: true
responses:
'200':
description: Webhook updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/webhookInfo'
'400':
description: Webhook cannot be updated.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
'404':
description: Webhook not found.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
security:
- Basic: [ ]
delete:
tags:
- Webhooks
summary: Delete webhook
description: >-
Delete webhook by id.
operationId: deleteWebhook
parameters:
- name: webhook-id
in: path
description: Webhook id to delete
required: true
schema:
type: string
responses:
'204':
description: Webhook deleted successfully.
'404':
description: Webhook not found.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
security:
- Basic: [ ]
'/v3/users/sleep':
get:
tags:
- Sleep
summary: List nights
operationId: listNights
description: >-
List sleep data of user for the last 28 days.
responses:
'200':
description: Request was successful
content:
application/json:
schema:
$ref: '#/components/schemas/nights'
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/sleep/{date}':
get:
tags:
- Sleep
parameters:
- name: date
in: path
description: 'Date of sleep as ISO-8601 date string, example: "2020-01-01"'
required: true
schema:
type: string
summary: Get Sleep
description: >-
Get Users sleep data for given date.
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/sleep'
'400':
description: Invalid date.
'404':
description: No data found for date.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/sleep/available':
get:
tags:
- Sleep
summary: Get available sleep times
description: >-
Get the dates with sleep start and end times, where user has sleep data available in the last 28 days.
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/available-sleeps'
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/nightly-recharge':
get:
tags:
- Nightly Recharge
summary: List Nightly Recharges
operationId: listNightlyRecharge
description: >-
List Nightly Recharge data of user for the last 28 days.
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/recharges'
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/nightly-recharge/{date}':
get:
tags:
- Nightly Recharge
parameters:
- name: date
in: path
description: 'Date of Nightly Recharge as ISO-8601 date string, example: "2020-01-01"'
required: true
schema:
type: string
summary: Get Nightly Recharge
description: >-
Get Users Nightly Recharge data for given date.
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/nightly-recharge'
'400':
description: Invalid date.
'404':
description: No data found for date.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/continuous-heart-rate/{date}':
get:
tags:
- Continuous Heart Rate
parameters:
- name: date
in: path
description: 'Date of Continuous Heart Rate as ISO-8601 date string, example: "2022-01-01"'
required: true
schema:
type: string
format: date
summary: Get Continuous Heart rate samples
description: >-
Get users continuous heart rate values for given date.
Supported devices
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/continuous-heartrate'
'400':
description: Invalid request.
'401':
description: Unauthorized.
'404':
description: No data found for date.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/continuous-heart-rate':
get:
tags:
- Continuous Heart Rate
parameters:
- name: from
in: query
description: 'Inclusive start date of range as ISO-8601 date string, example: "2022-01-01"'
required: true
schema:
type: string
format: date
- name: to
in: query
description: 'Inclusive end date of range as ISO-8601 date string, example: "2022-01-28"'
required: true
schema:
type: string
format: date
summary: Get Continuous Heart rate samples with range
description: >-
Get users continuous heart rate values for given date range.
Supported devices
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/continuous-heartrate'
'400':
description: Invalid request.
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/cardio-load':
get:
tags:
- Cardio load
summary: List cardio loads
description: >-
Returns cardio load data for the last 28 days.
The response list contains cardio load objects for every day in the range, even if values cannot be calculated —
in that case the cardio load status is represented as LOAD_STATUS_NOT_AVAILABLE.
responses:
'200':
description: List of user cardio loads.
content:
application/json:
schema:
$ref: '#/components/schemas/cardio-load-schema'
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/cardio-load/{date}':
get:
tags:
- Cardio load
summary: Get cardio load by date
description: >-
Returns cardio load data for selected date.
parameters:
- name: date
in: path
description: 'Date as ISO-8601 date string, example: "2022-01-01"'
required: true
schema:
type: string
format: date
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/cardio-load-schema'
'400':
description: Invalid request.
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/cardio-load/date':
get:
tags:
- Cardio load
summary: Get cardio load by date range
description: >-
Returns cardio load data for selected date range.
The response list contains cardio load objects for every day between range even if the cardio load values cannot be calculated,
in this case the cardio load status is represented as LOAD_STATUS_NOT_AVAILABLE.
parameters:
- name: from
in: query
description: 'Inclusive as ISO-8601 date string, example: "2022-01-01"'
required: true
schema:
type: string
format: date
- name: to
in: query
description: 'Inclusive as ISO-8601 date string, example: "2022-01-01"'
required: true
schema:
type: string
format: date
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/cardio-load-schema'
'400':
description: Invalid request.
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/cardio-load/period/days/{days}':
get:
tags:
- Cardio load
summary: Get historical data by days
description: >-
Returns historical cardio load data for selected period of days counting from current date.
parameters:
- name: days
in: path
description: 'Period of days.'
required: true
schema:
type: integer
minimum: 1
maximum: 180
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/cardio-load-schema'
'400':
description: Invalid request.
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/cardio-load/period/months/{months}':
get:
tags:
- Cardio load
parameters:
- name: months
in: path
description: 'Period of months.'
required: true
schema:
type: integer
minimum: 1
maximum: 6
summary: Get historical data by months
description: >-
Returns historical cardio load data for selected period of months counting from current date.
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/cardio-load-schema'
'400':
description: Invalid request.
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/sleepwise/alertness':
get:
tags:
- SleepWise™
summary: Alertness period data (last 28 days)
description: >-
Get user's alertness period data for the last 28 days.
Supported devices
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/alertness'
'204':
description: No data found for last 28 days.
'400':
description: Invalid request.
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/sleepwise/alertness/date':
get:
tags:
- SleepWise™
parameters:
- name: from
in: query
description: 'Inclusive start date of range as ISO-8601 date string, example: "2022-01-01"'
required: true
schema:
type: string
format: date
- name: to
in: query
description: 'Inclusive end date of range as ISO-8601 date string, example: "2022-01-28"'
required: true
schema:
type: string
format: date
summary: Alertness period data (date range)
description: >-
Get user's alertness period data for given date range. Maximum date range between from and to cannot
be more than 28 days. Supported devices
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/alertness'
'204':
description: No data found for date range.
'400':
description: Invalid request.
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/sleepwise/circadian-bedtime':
get:
tags:
- SleepWise™
summary: Circadian bedtime period data (last 28 days)
description: >-
Get user's circadian bedtime period data for the last 28 days.
Supported devices
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/circadian-bedtime'
'204':
description: No data found for last 28 days.
'400':
description: Invalid request.
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/sleepwise/circadian-bedtime/date':
get:
tags:
- SleepWise™
parameters:
- name: from
in: query
description: 'Inclusive start date of range as ISO-8601 date string, example: "2022-01-01"'
required: true
schema:
type: string
format: date
- name: to
in: query
description: 'Inclusive end date of range as ISO-8601 date string, example: "2022-01-28"'
required: true
schema:
type: string
format: date
summary: Circadian bedtime period data (date range)
description: >-
Get user's circadian bedtime period data for given date range. Maximum date range between from and to cannot
be more than 28 days. Supported devices
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/circadian-bedtime'
'204':
description: No data found for date range.
'400':
description: Invalid request.
'401':
description: Unauthorized.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/biosensing/bodytemperature':
get:
tags:
- Elixir™ Biosensing
parameters:
- name: from
in: query
description: 'Inclusive start date of range as ISO-8601 date string, example: "2023-10-01"'
required: false
schema:
type: string
format: date
- name: to
in: query
description: 'Inclusive end date of range as ISO-8601 date string, example: "2023-10-28"'
required: false
schema:
type: string
format: date
summary: Body temperature data
description: >-
Get user's body temperature data for last 28 days or for given date range. Maximum date range between from and to cannot
be more than 28 days.
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/body-temperature-period'
'400':
description: Invalid request.
'401':
description: Unauthorized.
'204':
description: No data found.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/biosensing/skintemperature':
get:
tags:
- Elixir™ Biosensing
parameters:
- name: from
in: query
description: 'Inclusive start date of range as ISO-8601 date string, example: "2023-10-01"'
required: false
schema:
type: string
format: date
- name: to
in: query
description: 'Inclusive end date of range as ISO-8601 date string, example: "2023-10-28"'
required: false
schema:
type: string
format: date
summary: Sleep skin temperature data
description: >-
Get user's sleep skin temperature data for last 28 days or for given date range. Maximum date range between from and to cannot
be more than 28 days.
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/skin-temperature'
'400':
description: Invalid request.
'401':
description: Unauthorized.
'204':
description: No data found.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/biosensing/skincontacts':
get:
tags:
- Elixir™ Biosensing
parameters:
- name: from
in: query
description: 'Inclusive start date of range as ISO-8601 date string, example: "2023-10-01"'
required: false
schema:
type: string
format: date
- name: to
in: query
description: 'Inclusive end date of range as ISO-8601 date string, example: "2023-10-28"'
required: false
schema:
type: string
format: date
summary: Skin contacts data
description: >-
Get user's skin contacts data for last 28 days or for given date range. Maximum date range between from and to cannot
be more than 28 days.
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/skin-contact-period'
'400':
description: Invalid request.
'401':
description: Unauthorized.
'204':
description: No data found.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/biosensing/ecg':
get:
tags:
- Elixir™ Biosensing
parameters:
- name: from
in: query
description: 'Inclusive start date of range as ISO-8601 date string, example: "2023-10-01"'
required: false
schema:
type: string
format: date
- name: to
in: query
description: 'Inclusive end date of range as ISO-8601 date string, example: "2023-10-28"'
required: false
schema:
type: string
format: date
summary: Wrist ECG test result data
description: >-
Get user's wrist ECG test result data for last 28 days or for given date range. Maximum date range between from and to cannot
be more than 28 days.
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ecg-test-result'
'400':
description: Invalid request.
'401':
description: Unauthorized.
'204':
description: No data found.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
'/v3/users/biosensing/spo2':
get:
tags:
- Elixir™ Biosensing
parameters:
- name: from
in: query
description: 'Inclusive start date of range as ISO-8601 date string, example: "2023-10-01"'
required: false
schema:
type: string
format: date
- name: to
in: query
description: 'Inclusive end date of range as ISO-8601 date string, example: "2023-10-28"'
required: false
schema:
type: string
format: date
summary: SpO2 test result data
description: >-
Get user's SpO2 test result data for last 28 days or for given date range. Maximum date range between from and to cannot
be more than 28 days.
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/spo2-test-result'
'400':
description: Invalid request.
'401':
description: Unauthorized.
'204':
description: No data found.
'403':
description: User has not accepted all mandatory consents.
security:
- OAuth2:
- accesslink.read_all
servers:
- url: 'https://www.polaraccesslink.com/'
components:
securitySchemes:
Basic:
type: http
scheme: basic
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: 'https://flow.polar.com/oauth2/authorization'
tokenUrl: 'https://polarremote.com/v2/oauth2/token'
scopes:
accesslink.read_all: Allows read access to user's data
schemas:
training-load-pro-rpe-enum:
description: Quantifies internal training load of a session.
type: string
enum:
- UNKNOWN
- RPE_NONE
- RPE_EASY
- RPE_LIGHT
- RPE_FAIRLY_BRISK
- RPE_BRISK
- RPE_MODERATE
- RPE_FAIRLY_HARD
- RPE_HARD
- RPE_EXHAUSTING
- RPE_EXTREME
training-load-pro-load-enum:
type: string
enum:
- UNKNOWN
- VERY_LOW
- LOW
- MEDIUM
- HIGH
- VERY_HIGH
- NOT_AVAILABLE
training-load-pro-sample:
type: object
properties:
date:
type: string
format: date
description: Date in format YYYY-MM-DD.
example: "2023-01-01"
cardio-load:
type: number
format: float
description: User cardio load value.
example: 1.0
muscle-load:
type: number
format: float
description: User muscle load value.
example: 1.0
perceived-load:
type: number
format: float
description: User perceived load value.
example: 1.0
cardio-load-interpretation:
$ref: '#/components/schemas/training-load-pro-load-enum'
muscle-load-interpretation:
$ref: '#/components/schemas/training-load-pro-load-enum'
perceived-load-interpretation:
$ref: '#/components/schemas/training-load-pro-load-enum'
user-rpe:
$ref: '#/components/schemas/training-load-pro-rpe-enum'
cardio-load-schema:
description: List of cardio loads.
type: array
items:
$ref: '#/components/schemas/cardio-load'
cardio-load:
description: Cardio load model.
properties:
date:
type: string
format: date
description: Date in format YYYY-MM-DD.
example: "2023-01-01"
cardio_load_status:
$ref: '#/components/schemas/cardio-load-status-enum'
cardio_load:
type: number
format: float
example: 0.2
description: Cardio load (training impulse, TRIMP) shows your cardiac response to a training session.
strain:
type: number
format: float
example: 0.3
description: Strain shows how much you have strained yourself with training lately. It shows your average daily load from the past 7 days.
tolerance:
type: number
format: float
example: 0.4
description: Tolerance describes how prepared you are to endure cardio training. It shows your average daily load from the past 28 days.
cardio_load_ratio:
type: number
format: float
example: 0.1
description: Ratio between strain and tolerance.
cardio_load_level:
$ref: "#/components/schemas/cardio-load-levels"
cardio-load-status-enum:
description: Text representation of cardio load status.
type: string
enum:
- LOAD_STATUS_NOT_AVAILABLE
- DETRAINING
- MAINTAINING
- PRODUCTIVE
- OVERREACHING
- RECOVERY_AFTER_OVERREACHING
- PRODUCTIVE_DROPPED_FROM_OVERREACHING
- PRODUCTIVE_ALMOST_OVERREACHING
- UNRECOGNIZED
cardio-load-levels:
description: Cardio load levels indicate how hard a training session was compared to your session average from the past 90 days.
type: object
properties:
very_low:
type: number
format: float
example: 0.1
low:
type: number
format: float
example: 0.1
medium:
type: number
format: float
example: 0.1
high:
type: number
format: float
example: 0.1
very-high:
type: number
format: float
example: 0.1
AvailableUserData:
type: object
xml:
name: available-user-data
properties:
user-id:
type: integer
format: int64
example: 475
description: User identifier who has available data.
data-type:
type: string
example: ACTIVITY_SUMMARY
description: Type of available data.
enum:
- EXERCISE
- ACTIVITY_SUMMARY
- PHYSICAL_INFORMATION
url:
type: string
example: 'https://www.polaraccesslink.com/v3/users/475/activity-transactions'
description: URI pointing to transaction initiation endpoint for user
description: Model contains information of the data available.
DurationZone:
type: object
xml:
name: activity-zones
properties:
index:
type: integer
format: int32
example: 1
xml:
attribute: true
description: Activity zone index
inzone:
type: string
example: PT51M5S
description: Time duration spent in the zone ISO 8601
description: Model contains the time spent in certain activity zone.
HeartRate:
type: object
properties:
average:
type: integer
format: int32
example: 129
description: Average heart-rate
maximum:
type: integer
format: int32
example: 147
description: Maximum heart-rate
description: Heart-rate statistics information
UserExtraInfo:
type: object
xml:
name: extra-info
properties:
value:
type: string
example: '2'
description: Value provided by the customer
index:
type: integer
format: int32
example: 0
xml:
attribute: true
description: Item index
name:
type: string
example: number-of-children
xml:
attribute: true
description: Name of the extra info asked from customer
description: User's answers to the custom extra-info fields requested by partners
activity:
type: object
properties:
id:
type: integer
format: int64
example: 1234
xml:
attribute: true
description: Activity summary id
polar-user:
type: string
example: 'https://www.polaraccesslink/v3/users/1'
xml:
attribute: true
description: Absolute link to user owning the activity
transaction-id:
type: integer
format: int64
example: 179879
xml:
attribute: true
description: Id of the activity-transaction this activity was transferred in
date:
type: string
example: '2010-12-31'
description: 'Date when activity summary was recorded, in format YYYY-MM-DD'
created:
type: string
example: '2016-04-27T20:11:33.000Z'
description: >-
The time activity summary was created in AccessLink, in format
YYYY-MM-DDTHH:mm:ss.SSS
calories:
type: integer
format: int32
example: 2329
description: Total daily calories in kilo calories including BMR
active-calories:
type: integer
format: int32
example: 428
description: >-
Total daily calories not including BMR. Precise calculation requires
that user's physical data is entered into Polar Flow
duration:
type: string
example: PT2H44M
description: The time interval as specified in ISO 8601
active-steps:
type: integer
format: int32
example: 250
description: >-
You could consider this as a kind of activity unit. If you take one
step the active-steps should increase by one and any activity
comparable to one physical step would also increase the number by
one
description: Summary of user's daily activity
xml:
name: activity
array-of-activity-summary-with-all-samples:
type: array
items:
$ref: '#/components/schemas/activity-summary-with-all-samples'
description: >-
Array of activity summaries with all samples. Each item in the array
contains a summary of the activity for a specific day, including all
samples.
xml:
name: activity-summary-with-all-samples
activity-summary-with-all-samples:
type: object
properties:
start_time:
type: string
example: '2025-08-13T08:15:30'
description: Start time of the activity in UTC
end_time:
type: string
example: '2025-08-13T23:59:59'
description: End time of the activity in UTC
active_duration:
type: string
example: PT3H11M
description: The duration of the activity in ISO8601 format
inactive_duration:
type: string
example: PT18H23M30S
description: The duration of the inactivity in ISO8601 format
daily_activity:
type: number
format: float
example: 89.1
description: Daily activity score / percentage
calories:
type: integer
format: int32
example: 2500
description: Total calories burned during the day
active_calories:
type: integer
format: int32
example: 1500
description: Active calories burned during the day, excluding BMR
steps:
type: integer
format: int32
example: 8823
description: Total number of steps taken during the day
inactivity_alert_count:
type: integer
format: int32
example: 1
description: Number of inactivity alerts received during the day
distance_from_steps:
type: number
format: float
example: 4590.53
description: Distance covered based on steps taken, in meters
samples:
$ref: '#/components/schemas/activity-day-with-samples'
description: Activity days with all samples.
xml:
name: activity-summary-with-all-samples
activity-summary:
type: object
properties:
start_time:
type: string
example: '2025-08-13T08:15:30'
description: Start time of the activity in UTC
end_time:
type: string
example: '2025-08-13T23:59:59'
description: End time of the activity in UTC
active_duration:
type: string
example: PT3H11M
description: The duration of the activity in ISO8601 format
inactive_duration:
type: string
example: PT18H23M30S
description: The duration of the inactivity in ISO8601 format
daily_activity:
type: number
format: float
example: 89.1
description: Daily activity score / percentage
calories:
type: integer
format: int32
example: 2500
description: Total calories burned during the day
active_calories:
type: integer
format: int32
example: 1500
description: Active calories burned during the day, excluding BMR
steps:
type: integer
format: int32
example: 8823
description: Total number of steps taken during the day
inactivity_alert_count:
type: integer
format: int32
example: 1
description: Number of inactivity alerts received during the day
distance_from_steps:
type: number
format: float
example: 4590.53
description: Distance covered based on steps taken, in meters
activity-log:
type: object
properties:
activity-log:
type: array
description: >-
Absolute links to individual activity summaries within the
transaction
items:
type: string
example:
- https://www.polaraccesslink.com/v3/users/12/activity-transactions/34/activities/56
- https://www.polaraccesslink.com/v3/users/12/activity-transactions/34/activities/120
description: Activity transaction container
xml:
name: activity-logs
activity-step-sample:
type: object
properties:
steps:
type: integer
format: int32
description: >-
Number of steps in sample segment. If element is null, step samples
are not available for current segment.
time:
type: string
example: '12:37:33.000'
description: Start time of sample segment.
description: Model contains number of steps in certain time period.
xml:
name: sample
array-of-activity-day-with-samples:
type: array
items:
$ref: '#/components/schemas/activity-day-with-samples'
description: >-
Array of activity days with samples. Each item in the array contains a
summary of the activity for a specific day, including all samples.
xml:
name: activity-day-with-samples
activity-day-with-samples:
type: object
properties:
date:
type: string
example: '2022-02-10'
description: Activity day date
steps:
$ref: '#/components/schemas/activity-steps2'
activity_zones:
$ref: '#/components/schemas/activity-zone-samples2'
inactivity_stamps:
type: array
items:
type: object
properties:
stamp:
type: string
example: '2022-02-10T16:04'
description: time of inactivity stamp
description: Activity day samples.
xml:
name: activity-day-with-samples
activity-steps2:
type: object
properties:
interval_ms:
type: integer
format: int32
description: Sample interval in milliseconds.
total_steps:
type: integer
format: int32
description: Total number of steps in activity day.
samples:
type: array
items:
$ref: '#/components/schemas/activity-step-sample2'
description: List of individual step sample objects.
description: >-
Activity step samples for a day. Contains total number of steps and
list of individual step samples with time and number of steps in that
time period. Note that consecutive repeated (same steps count) samples are filtered out from the list
to reduce the payload size. If time between two consecutive samples is larger than interval_ms,
one or more samples have been filtered out.
activity-step-sample2:
type: object
properties:
steps:
type: integer
format: int32
description: >-
Number of steps in sample segment.
timestamp:
type: string
example: '2025-08-14T00:02'
description: Start time of sample segment.
description: Model contains number of steps in certain time period.
activity-step-samples:
type: object
properties:
date:
type: string
example: '2022-02-10'
description: Activity step sample date
interval:
type: integer
format: int32
description: Sample interval in minutes.
samples:
type: array
xml:
wrapped: true
description: List of individual step sample objects.
items:
$ref: '#/components/schemas/activity-step-sample'
description: Wrapper model for partner step samples.
xml:
name: activity-step-samples
activity-zone-sample:
type: object
properties:
activity-zones:
type: array
description: List of heart rate zones with duration.
items:
$ref: '#/components/schemas/DurationZone'
time:
type: string
description: Start time of sample segment.
description: Model contains number of steps in certain time period.
xml:
name: sample
activity-zone-sample2:
type: object
properties:
zone:
type: string
description: Activity zone type.
enum:
- SEDENTARY
- LIGHT
- SLEEP
- MODERATE
- VIGOROUS
timestamp:
type: string
example: '2025-08-14T00:08:30'
activity-zone-samples2:
type: object
properties:
samples:
type: array
description: List of activity zones samples.
items:
$ref: '#/components/schemas/activity-zone-sample2'
activity-zone-samples:
type: object
properties:
date:
type: string
example: '2022-02-10'
description: Activity zone sample date
interval:
type: integer
format: int32
description: Sample interval in minutes.
samples:
type: array
xml:
wrapped: true
description: List of individual zone sample objects.
items:
$ref: '#/components/schemas/activity-zone-sample'
description: >-
List containing the times (in zone) in different heart rate zones (i.e.
Heart rate between lower and upper values). Zone is null if no zone
information available.
xml:
name: activity-zone-samples
available-user-datas:
type: object
properties:
available-user-data:
type: array
description: List of available user datas.
items:
$ref: '#/components/schemas/AvailableUserData'
description: 'AvailableUserDatas is a container model for AvailableUserData. '
xml:
name: available-user-datas
error:
type: object
description: Error model which contains useful info about the error occurred.
properties:
timestamp:
type: string
format: date-time
description: Timestamp of the error.
status:
type: integer
description: Http status code
errorType:
type: string
description: Error type.
message:
type: string
description: Human readable error message.
corrId:
type: string
description: Correlation id of the response for problem solving and debugging use.
exercise:
type: object
properties:
id:
type: integer
format: int64
example: 1937529874
xml:
attribute: true
description: Id of the training session
upload-time:
type: string
example: '2008-10-13T10:40:0.000Z'
xml:
attribute: true
description: Time of the transfer from wrist unit to Polar database
polar-user:
type: string
example: 'https://www.polaraccesslink/v3/users/1'
xml:
attribute: true
description: Absolute link to Polar user owning the training
transaction-id:
type: integer
format: int64
example: 179879
xml:
attribute: true
description: Id of the exercise-transaction this training was transferred in
device:
type: string
example: Polar M400
description: Polar product used in training
device-id:
type: string
example: 1111AAAA
description: Id of the Polar device
start-time:
type: string
example: '2008-10-13T10:40:02'
description: Start time of the training session in local time
start-time-utc-offset:
type: integer
format: int32
example: 180
description: The offset from UTC (in minutes) when the training session was started
duration:
type: string
example: PT2H44M45S
description: The duration of the training session as specified in ISO8601
calories:
type: integer
format: int32
example: 530
description: Expended calories during training in kilocalories
distance:
type: number
format: float
example: 1600.2
description: Distance in meters travelled during training
heart-rate:
$ref: '#/components/schemas/HeartRate'
training-load:
type: number
format: float
example: 143.22
description: Training load effect to user
sport:
type: string
example: OTHER
description: Sport name
has-route:
type: boolean
example: true
description: Boolean indicating if the exercise has route data
club-id:
type: integer
format: int64
example: 999
description: >-
Has value if the exercise is from "Flow For Club", otherwise not
printed. Value -1 indicates that there were errors finding the club
club-name:
type: string
example: Polar Club
description: >-
Has value if the exercise is from "Flow For Club", otherwise not
printed. Value "Ambiguous club location. Please contact support." is
printed in case of error (and the club-id is -1).
detailed-sport-info:
type: string
example: RUNNING
description: >-
String containing the name of a Polar Flow-compatible sport, if one
is set for the exercise.
fat-percentage:
type: integer
format: int32
example: 60
description: >-
Fat percentage of exercise calories. Has value if the exercise is from
training device supporting Energy sources, otherwise not printed.
carbohydrate-percentage:
type: integer
format: int32
example: 38
description: >-
Carbohydrate percentage of exercise calories. Has value if the exercise
is from training device supporting Energy sources, otherwise not printed.
protein-percentage:
type: integer
format: int32
example: 2
description: >-
Protein percentage of exercise calories. Has value if the exercise is
from training device supporting Energy sources, otherwise not printed.
running-index:
type: integer
format: int32
example: 51
description: >-
Running index is a score automatically calculated every run based on your
heart rate and speed data collected via GPS or stride sensor.
training-load-pro:
$ref: '#/components/schemas/training-load-pro-sample'
description: Training session summary data
xml:
name: exercise
exerciseHashId:
type: object
properties:
id:
type: string
example: 2AC312F
xml:
attribute: true
description: Hashed id of the training session
upload_time:
type: string
example: '2008-10-13T10:40:02.000Z'
xml:
attribute: true
description: Time of the transfer from wrist unit to Polar database
polar_user:
type: string
example: 'https://www.polaraccesslink/v3/users/1'
xml:
attribute: true
description: Absolute link to Polar user owning the training
device:
type: string
example: Polar M400
description: Polar product used in training
device_id:
type: string
example: 1111AAAA
description: Id of the Polar device
start_time:
type: string
example: '2008-10-13T10:40:02'
description: Start time of the training session in local time
start_time_utc_offset:
type: integer
format: int32
example: 180
description: The offset from UTC (in minutes) when the training session was started
duration:
type: string
example: PT2H44M
description: The duration of the training session as specified in ISO8601
calories:
type: integer
format: int32
example: 530
description: Expended calories during training in kilocalories
distance:
type: number
format: float
example: 1600
description: Distance in meters travelled during training
heart_rate:
$ref: '#/components/schemas/HeartRate'
training_load:
type: number
format: float
example: 143.22
description: Training load effect to user
sport:
type: string
example: OTHER
description: Sport name
has_route:
type: boolean
example: true
description: Boolean indicating if the exercise has route data
club_id:
type: integer
format: int64
example: 999
description: >-
Has value if the exercise is from "Flow For Club", otherwise not
printed. Value -1 indicates that there were errors finding the club
club_name:
type: string
example: Polar Club
description: >-
Has value if the exercise is from "Flow For Club", otherwise not
printed. Value "Ambiguous club location. Please contact support." is
printed in case of error (and the club-id is -1).
detailed_sport_info:
type: string
example: WATERSPORTS_WATERSKI
description: >-
String containing the name of a Polar Flow-compatible sport, if one
is set for the exercise.
fat_percentage:
type: integer
format: int32
example: 60
description: >-
Fat percentage of exercise calories. Has value if the exercise is from
training device supporting Energy sources, otherwise not printed.
carbohydrate_percentage:
type: integer
format: int32
example: 38
description: >-
Carbohydrate percentage of exercise calories. Has value if the exercise
is from training device supporting Energy sources, otherwise not printed.
protein_percentage:
type: integer
format: int32
example: 2
description: >-
Protein percentage of exercise calories. Has value if the exercise is
from training device supporting Energy sources, otherwise not printed.
running-index:
type: integer
format: int32
example: 51
description: >-
Running index is a score automatically calculated every run based on your
heart rate and speed data collected via GPS or stride sensor.
heart_rate_zones:
description: >-
Heart rate zones for this exercise.
Returned when query parameter 'zones=true' is used.
type: array
items:
$ref: '#/components/schemas/zone'
samples:
description: >-
List of all samples available for this exercise.
Returned when query parameter 'samples=true' is used.
type: array
items:
$ref: '#/components/schemas/sample'
route:
description: >-
List of all route points/locations available for this exercise.
Returned when query parameter 'route=true' is used.
type: array
items:
$ref: '#/components/schemas/location'
training_load_pro:
$ref: '#/components/schemas/training-load-pro-sample'
description: Training session summary data
exercisesHashId:
type: array
description: List of exercises.
items:
$ref: '#/components/schemas/exerciseHashId'
exercises:
type: object
properties:
exercises:
type: array
description: Absolute links to individual exercises within the transaction
items:
type: string
example:
- https://www.polaraccesslink.com/v3/users/12/exercise-transactions/34/exercises/56
- https://www.polaraccesslink.com/v3/users/12/exercise-transactions/34/exercises/120
description: Exercise transaction container
xml:
name: exercises
physical-info:
type: object
properties:
weight:
type: number
format: float
description: User's weight in kilograms.
example: 70.5
height:
type: number
format: float
description: User's height in centimeters.
example: 175.0
created:
type: string
format: date-time
description: Creation timestamp of the physical info.
example: '2024-06-01T12:00:00Z'
modified:
type: string
format: date-time
description: Last modification timestamp of the physical info.
example: '2024-06-10T12:00:00Z'
birthday:
type: string
format: date
description: User's date of birth.
example: '1990-01-01'
gender:
type: string
description: User's gender.
enum: [MALE, FEMALE]
example: MALE
maximum_heart_rate:
type: integer
format: int32
description: User's maximum heart rate.
example: 190
resting_heart_rate:
type: integer
format: int32
description: User's resting heart rate.
example: 60
aerobic_threshold:
type: integer
format: int32
description: User's aerobic threshold.
example: 140
anaerobic_threshold:
type: integer
format: int32
description: User's anaerobic threshold.
example: 170
vo2_max:
type: integer
format: int32
description: User's VO2 max value.
example: 50
weight_source:
type: string
description: Source of the weight information.
enum: [SOURCE_DEFAULT, SOURCE_ESTIMATE, SOURCE_USER, SOURCE_MEASURED, SOURCE_KEEP]
example: SOURCE_USER
training_background:
type: string
description: User's training background.
enum: [OCCASIONAL, REGULAR, FREQUENT, HEAVY, SEMI_PRO, PRO]
example: REGULAR
typical_day:
type: string
description: User's typical day description.
enum: [MOSTLY_SITTING, MOSTLY_STANDING, MOSTLY_MOVING]
example: MOSTLY_MOVING
sleep_goal:
type: string
description: User's sleep goal as ISO 8601 duration.
example: 'PT8H'
physical-information:
type: object
properties:
id:
type: integer
format: int64
example: 123
xml:
attribute: true
description: Physical information id
transaction-id:
type: integer
format: int64
example: 179879
xml:
attribute: true
description: >-
Id of the physical-information-transaction this physical information was
transferred in
created:
type: string
example: '2016-04-27T20:11:33.000Z'
description: >-
The time physical information was created in AccessLink, in format
YYYY-MM-DDTHH:mm:ss.SSSZ
polar-user:
type: string
example: 'https://www.polaraccesslink/v3/users/1'
xml:
attribute: true
description: Absolute link to user owning the activity
weight:
type: number
format: float
example: 80
description: Weight
height:
type: number
format: float
example: 180
description: Height
maximum-heart-rate:
type: integer
format: int32
example: 160
description: Maximum heart rate
resting-heart-rate:
type: integer
format: int32
example: 60
description: Resting heart rate
aerobic-threshold:
type: integer
format: int32
example: 123
description: Aerobic threshold
anaerobic-threshold:
type: integer
format: int32
example: 123
description: Anaerobic threshold
vo2-max:
type: integer
format: int32
example: 12
description: VO2 max
weight-source:
type: string
example: SOURCE_MEASURED
description: Weight source
enum:
- SOURCE_MEASURED
- SOURCE_USER
description: User's physical information
xml:
name: physical-information
physical-informations:
type: object
properties:
physical-informations:
type: array
description: >-
Absolute links to individual physical information within the
transaction
items:
type: string
example:
- https://www.polaraccesslink.com/v3/users/12/physical-information-transactions/12/physical-informations/56
- https://www.polaraccesslink.com/v3/users/12/physical-information-transactions/12/physical-informations/120
description: Physical information transaction container
xml:
name: physical-informations
register:
type: object
required:
- member-id
properties:
member-id:
type: string
example: User_id_999
description: Partner's custom identifier for user.
description: Model for registering user to partner.
xml:
name: register
sample:
type: object
properties:
recording-rate:
type: integer
format: int32
example: 5
description: >-
Sample recording rate in seconds. Null when recording rate is not
applicable - currently only with RR-data.
sample-type:
type: string
format: byte
example: '1'
description: Sample type
data:
type: string
example: >-
0,100,102,97,97,101,103,106,96,89,88,87,98,108,113,112,114,115,118,121,121,121,121,123,117,119,122
description: >-
Sample values as a comma-separated list of strings. Can contain null
-values which indicate a situation where sensor was offline.
description: Training session sample data
xml:
name: sample
samples:
type: object
properties:
samples:
type: array
description: List of URIs pointing to single sample type data.
items:
type: string
xml:
name: sample
example:
- https://www.polaraccesslink.com/v3/users/12/exercise-transactions/34/exercises/56/samples/0
- https://www.polaraccesslink.com/v3/users/12/exercise-transactions/34/exercises/56/samples/3
description: List of URIs pointing to single sample type data.
xml:
name: samples
location:
type: object
properties:
latitude:
type: number
format: double
example: 60.21982833
description: The latitude, expressed in degrees.
longitude:
type: number
format: double
example: 25.13925
description: The longitude, expressed in degrees.
time:
type: string
example: 'PT210.026S'
description: The time, expressed as a duration.
satellites:
type: integer
format: int64
example: 4
description: Satellites. A byte-sized value with a maximum of 63.
fix:
type: integer
format: int64
example: 1
description: Fix. A byte-sized value with a maximum of three.
description: Exercise route point/location.
xml:
name: location
route:
type: array
items:
$ref: '#/components/schemas/location'
description: List of route points/locations of the exercise.
xml:
name: route
wrapped: true
transaction-location:
type: object
properties:
transaction-id:
type: integer
format: int64
example: 122
description: Id of the created transaction
resource-uri:
type: string
format: uri
example: >-
https://polaraccesslink.com/v3/users/21/physical-information-transactions/32
description: Absolute links to the created transaction
description: Contains absolute link to the created transaction.
xml:
name: transaction-location
user:
type: object
properties:
polar-user-id:
type: integer
format: int64
example: 2278512
xml:
attribute: true
description: User's id in Polar database
member-id:
type: string
example: i09u9ujj
description: User's identifier in partner's database
registration-date:
type: string
format: date-time
example: '2011-10-14T12:50:37.000Z'
description: Timestamp marked when ACCEPTED
first-name:
type: string
example: Eka
description: User's first name
last-name:
type: string
example: Toka
description: User's surname
birthdate:
type: string
example: '1985-09-06'
description: User's birthdate as YYYY-MM-DD
gender:
type: string
example: MALE
description: User's sex
enum:
- MALE
- FEMALE
weight:
type: number
format: float
example: 66
description: User's weight in kg
height:
type: number
format: float
example: 170
description: Users height in centimeters
extra-info:
type: array
xml:
name: extra-info
wrapped: true
description: >-
List containing answers given by the user to a number of
partner-specific questions. Extra-info is null if there are no
required fields defined by the partner.
items:
$ref: '#/components/schemas/UserExtraInfo'
description: User's basic information
xml:
name: user
createdWebhook:
type: object
properties:
data:
type: object
properties:
id:
type: string
example: abdf33
description: Id of the new webhook.
events:
type: array
items:
$ref: '#/components/schemas/webhookType'
description: Subscribed event types.
example: [ EXERCISE ]
url:
type: string
format: uri
example: https://myapp.example.com/acl_webhook
description: Url where the webhook notification is sent.
signature_secret_key:
type: string
example: abe1f3ae-fd33-11e8-8eb2-f2801f1b9fd1
description: Signing key for verifying that sender is actually Polar.
webhookInfo:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
example: abdf33
description: Id of the webhook.
events:
type: array
items:
$ref: '#/components/schemas/webhookType'
description: Subscribed event types.
example: [ EXERCISE ]
url:
type: string
format: uri
example: https://myapp.example.com/acl_webhook
description: Url where the webhook notification is sent.
active:
type: boolean
example: true
description: Is the webhook active.
webhookPatch:
type: object
properties:
events:
type: array
items:
$ref: '#/components/schemas/webhookType'
description: Type of events to subscribe.
example: [ EXERCISE ]
url:
type: string
format: uri
example: https://myapp.example.com/acl_webhook
description: Url where the webhook notification is sent.
webhookPayloadExercise:
description:
Payload example for webhook payload for event type EXERCISE. This event is sent when new exercise data is available for the user.
type: object
properties:
event:
type: string
example: EXERCISE
description: Type of available data.
user_id:
type: integer
format: int64
example: 475
description: Id of the user who has new data.
entity_id:
type: string
example: 'aQlC83'
description: Id of the available data.
timestamp:
type: string
format: date-time
example: '2018-05-15T14:22:24Z'
description: Time when webhook notification is sent.
url:
type: string
format: uri
example: https://www.polaraccesslink.com/v3/exercises/aQlC83
description: Url to the new available data.
webhookPayloadSleep:
description:
Payload example for webhook payload for event type SLEEP. This event is sent when new sleep data is available for the user.
type: object
properties:
event:
type: string
example: SLEEP
description: Type of available data.
user_id:
type: integer
format: int64
example: 475
description: Id of the user who has new data.
date:
type: string
example: '2019-12-31'
description: Date of the available sleep data.
timestamp:
type: string
format: date-time
example: '2018-05-15T14:22:24Z'
description: Time when webhook notification is sent.
url:
type: string
format: uri
example: https://www.polaraccesslink.com/v3/users/sleep/2019-12-31
description: Url to the new available data.
webhookPayloadContinuousHeartRate:
description:
Payload example for webhook payload for event type CONTINUOUS_HEART_RATE. This event is sent when new continuous heart rate data is available for the user.
type: object
properties:
event:
type: string
example: CONTINUOUS_HEART_RATE
description: Type of available data.
user_id:
type: integer
format: int64
example: 475
description: Id of the user who has new data.
date:
type: string
example: '2022-09-30'
description: Date of the available continuous hr data.
timestamp:
type: string
format: date-time
example: '2018-05-15T14:22:24Z'
description: Time when webhook notification is sent.
url:
type: string
format: uri
example: https://www.polaraccesslink.com/v3/users/continuous-heart-rate/2022-09-30
description: Url to the new available data.
webhookPayloadCircadianBedtime:
description:
Payload example for webhook payload for event type SLEEP_WISE_CIRCADIAN_BEDTIME. This event is sent when new circadian bedtime data is available for the user.
type: object
properties:
event:
type: string
example: SLEEP_WISE_CIRCADIAN_BEDTIME
description: Type of available data.
user_id:
type: integer
format: int64
example: 475
description: Id of the user who has new data.
from:
type: string
example: '2022-09-30'
description: Start date of the available circadian bedtime data.
to:
type: string
example: '2022-10-02'
description: End date of the available circadian bedtime data.
timestamp:
type: string
format: date-time
example: '2022-10-02T14:22:24Z'
description: Time when webhook notification is sent.
url:
type: string
format: uri
example: https://www.polaraccesslink.com/v3/users/sleepwise/circadian-bedtime/date?from=2022-09-30&to=2022-10-02
description: Url to the new available data.
webhookPayloadAlertness:
description:
Payload example for webhook payload for event type SLEEP_WISE_ALERTNESS. This event is sent when new alertness data is available for the user.
type: object
properties:
event:
type: string
example: SLEEP_WISE_ALERTNESS
description: Type of available data.
user_id:
type: integer
format: int64
example: 475
description: Id of the user who has new data.
from:
type: string
example: '2022-09-30'
description: Start date of the available alertness data.
to:
type: string
example: '2022-10-02'
description: End date of the available alertness data.
timestamp:
type: string
format: date-time
example: '2022-10-02T14:22:24Z'
description: Time when webhook notification is sent.
url:
type: string
format: uri
example: https://www.polaraccesslink.com/v3/users/sleepwise/alertness/date?from=2022-09-30&to=2022-10-02
description: Url to the new available data.
webhookPayloadActivitySummary:
description:
Payload example for webhook payload for event type ACTIVITY_SUMMARY. This event is sent when new activity summary data is available for the user.
type: object
properties:
event:
type: string
example: ACTIVITY_SUMMARY
description: Type of available data.
user_id:
type: integer
format: int64
example: 475
description: Id of the user who has new data.
date:
type: string
example: '2022-09-30'
description: Date of the available activity summary data.
timestamp:
type: string
format: date-time
example: '2022-10-02T14:22:24Z'
description: Time when webhook notification is sent.
url:
type: string
format: uri
example: https://www.polaraccesslink.com/v3/users/activities/2022-09-30
description: Url to the new available data.
webhookPayloadPhysicalInformation:
description:
Payload example for webhook payload for event type PHYSICAL_INFORMATION. This event is sent when new physical information data is available for the user.
type: object
properties:
event:
type: string
example: PHYSICAL_INFORMATION
description: Type of available data.
user_id:
type: integer
format: int64
example: 475
description: Id of the user who has new data.
timestamp:
type: string
format: date-time
example: '2025-12-31T14:22:24Z'
description: Time when webhook notification is sent.
url:
type: string
format: uri
example: https://www.polaraccesslink.com/v3/users/physical-info
description: Url to the new available data.
webhookPing:
type: object
properties:
timestamp:
type: string
format: date-time
example: '2018-05-15T14:22:24Z'
description: Time when webhook ping is sent.
event:
type: string
enum:
- PING
description: Only possible value is PING for ping message.
description: >-
AccessLink sends ping message as HTTP POST to callback URL being registered when creating new or modifying
webhook. Ping message is sent to verify webhook URL. Receiving service must response to ping message with 200 OK
or the webhook is not created/modified.
webhookRequest:
type: object
properties:
events:
type: array
items:
$ref: '#/components/schemas/webhookType'
description: Type of events to subscribe.
example: [ EXERCISE ]
url:
type: string
format: uri
example: https://myapp.example.com/acl_webhook
description: Url where the webhook notification is sent.
required:
- events
- url
webhookType:
type: string
enum:
- EXERCISE
- SLEEP
- CONTINUOUS_HEART_RATE
- SLEEP_WISE_CIRCADIAN_BEDTIME
- SLEEP_WISE_ALERTNESS
- ACTIVITY_SUMMARY
- PHYSICAL_INFORMATION
description: Event type to subscribe. Currently EXERCISE, SLEEP, CONTINUOUS_HEART_RATE, SLEEP_WISE_CIRCADIAN_BEDTIME, SLEEP_WISE_ALERTNESS, ACTIVITY_SUMMARY and PHYSICAL_INFORMATION are supported.
zone:
type: object
properties:
index:
type: integer
format: int32
example: 1
description: Zone list index
lower-limit:
type: integer
format: int32
example: 110
description: Lower heart-rate boundary of the zone
upper-limit:
type: integer
format: int32
example: 130
description: Upper heart-rate boundary of the zone
in-zone:
type: string
example: PT4S
description: Time duration spent in the zone ISO 8601
description: Heart-rate zone information
xml:
name: zone
zones:
type: object
properties:
zone:
type: array
description: List of heart rate zones.
items:
$ref: '#/components/schemas/zone'
description: >-
List containing the times (in zone) in different heart rate zones (i.e.
Heart rate between lower and upper values). Zone is null if no zone
information available.
xml:
name: zones
sleep:
type: object
properties:
polar_user:
type: string
example: 'https://www.polaraccesslink/v3/users/1'
description: Absolute link to user owning the sleep
date:
type: string
format: date
description: Result date of the sleep
example: '2020-01-01'
sleep_start_time:
type: string
format: date-time
description: Start timestamp of the sleep as ISO-8601 datetime string
example: '2020-01-01T00:39:07+03:00'
sleep_end_time:
type: string
format: date-time
description: End timestamp of the sleep as ISO-8601 datetime string
example: '2020-01-01T09:19:37+03:00'
device_id:
type: string
description: Id of the device the sleep was measured with
example: 1111AAAA
continuity:
type: number
format: float
example: 2.1
description: >-
Continuity is an estimate of how continuous the sleep was on a scale of 1.0 – 5.0, where 5.0 reflects
uninterrupted sleep. The lower the value the more fragmented the sleep was.
continuity_class:
type: integer
format: int32
example: 2
description: >-
Verbal assessments of sleep continuity
Very continuous sleep (5)
Continuous sleep (4)
Fairly continuous sleep (3)
Fairly fragmented sleep (2)
Fragmented sleep (1)
light_sleep:
type: integer
format: int32
example: 1000
description: >-
Total time in seconds spent in light sleep stage between when you fell asleep and when you woke up.
Corresponds to N1+ N2 according to AASM classification.
deep_sleep:
type: integer
format: int32
example: 1000
description: >-
Total time in seconds spent in the deep sleep stage between when you fell asleep and when you woke up.
Corresponds to N3 according to AASM classification.
rem_sleep:
type: integer
format: int32
example: 1000
description: >-
Total time in seconds spent in REM sleep stage between when you fell asleep and when you woke up.
REM stands for rapid eye movement.
unrecognized_sleep_stage:
type: integer
format: int32
example: 1000
description: >-
Total time in seconds spent in unrecognised sleep stage. Sometimes it's impossible to recognize sleep stages.
This might happen when, for example, the wrist strap is not tight enough, or if you sleep on your hand.
sleep_score:
type: integer
format: int32
example: 80
description: >-
Sleep score summarizes the amount and quality of your sleep into a single number on a scale of 1 – 100.
Sleep score tells you how well you slept compared to the indicators of a good night's sleep based on the current sleep science.
It consists of six components; sleep time, long interruptions, continuity, actual sleep, REM sleep, and deep sleep.
total_interruption_duration:
type: integer
format: int32
example: 1000
description: >-
The total time in seconds you spent awake between when you fell asleep and when you woke up.
sleep_charge:
type: integer
format: int32
example: 3
description: >-
Sleep score compared to your usual level from the past 28 days.Scale: much below usual (1) – below usual (2) – usual (3) – above usual (4) – much above usual(5).
sleep_goal:
type: integer
format: int32
example: 28800
description: >-
Time goal in seconds for sleep selected by user. A default value of the setting is based on age-related sleep duration recommendations.
sleep_rating:
type: integer
format: int32
example: 3
description: >-
Numeric value given by user for representing the quality of sleep. Selection scale: Very poorly(1), poorly(2), ok(3), well(4), very well(5). 0 means no value is given.
short_interruption_duration:
type: integer
format: int32
example: 500
description: >-
Total time in seconds of short interruptions. Short interruption is interruption in sleep of less than 90 seconds.
long_interruption_duration:
type: integer
format: int32
example: 300
description: >-
Total time in seconds of long interruptions. Long interruption is interruption in sleep of 90 seconds or more.
sleep_cycles:
type: integer
format: int32
example: 6
description: >-
Number of sleep cycles.
group_duration_score:
type: number
format: float
example: 100.0
description: >-
Sleep score consists of six components that are grouped under three themes. Score for sleep duration theme
looks at your sleep time compared to your ‘preferred sleep time’ setting and the age-related duration
recommendations. Group duration score ranges from 1.0 to 100.0. It is interpreted as textual feedback:
poor, moderate or good amount.
group_solidity_score:
type: number
format: float
example: 75.0
description: >-
Sleep score consists of six components that are grouped under three themes. Score for sleep solidity
theme is the average of the component scores of long interruptions, continuity and actual sleep. Group
solidity score ranges from 1.0 to 100.0. It is interpreted as textual feedback:
poor, moderate or good solidity.
group_regeneration_score:
type: number
format: float
example: 54.2
description: >-
Sleep score consists of six components that are grouped under three themes. Score for regeneration
theme is the average of the scores of REM sleep and deep sleep.
Group regeneration score ranges from 1.0 to 100.0. It is interpreted as textual feedback:
poor, moderate or good regeneration
hypnogram:
type: object
example: {
"00:39": 2,
"00:50": 3,
"01:23": 5
}
description: >-
The time span between when you fell asleep and when you woke up is classified into light,
deep or REM sleep, or unrecognised or wake in 30-s epochs.
0 = WAKE, 1 = REM, 2 = LIGHTER NON-REM, 3 = LIGHT NON-REM, 4 = DEEP NON-REM, 5 = UNKNOWN (eg. due to bad skin contact).
heart_rate_samples:
type: object
example: {
"00:41": 76,
"00:46": 77,
"00:51": 76
}
description: >-
5 min average samples of heart rate from the duration of the sleep. Default time between samples is 5
minutes. There may be periods with samples more often than every 5 minutes. Unit of samples is beats
per minute (bpm).
nights:
type: object
properties:
nights:
type: array
description: List of sleep objects
items:
$ref: '#/components/schemas/sleep'
description: Sleep list
available-sleep:
type: object
properties:
date:
type: string
format: date
description: Result date of the sleep
example: '2020-01-01'
start_time:
type: string
format: date-time
description: Start timestamp of the sleep as ISO-8601 datetime string
example: '2020-01-01T00:39:07+03:00'
end_time:
type: string
format: date-time
description: End timestamp of the sleep as ISO-8601 datetime string
example: '2020-01-01T09:39:07+03:00'
available-sleeps:
type: object
properties:
available:
type: array
description: List of available sleep data
items:
$ref: '#/components/schemas/available-sleep'
nightly-recharge:
type: object
properties:
polar_user:
type: string
example: 'https://www.polaraccesslink/v3/users/1'
description: Absolute link to user owning the sleep
date:
type: string
format: date
description: Result date of the Nightly Recharge
example: '2020-01-01'
heart_rate_avg:
type: integer
format: int32
example: 70
description: >-
Average heart rate as beats per minute (bpm) during a 4-hour period starting at 30 minutes after falling asleep.
beat_to_beat_avg:
type: integer
format: int32
example: 816
description: >-
Average time in milliseconds (ms) between successive heart beats during a 4-hour period starting at 30 minutes after falling asleep.
heart_rate_variability_avg:
type: integer
format: int32
example: 28
description: >-
Average variation in the time in milliseconds (ms) between successive heart beats during a 4-hour period starting at 30 minutes after falling asleep.
The Heart rate variability is Root Mean Square of Successive Differences (RMSSD) in beat-to-beat intervals.
breathing_rate_avg:
type: number
format: float
example: 14.1
description: >-
Average breathing rate as breaths per minute (bpm) during a 4-hour period starting at 30 minutes after falling asleep.
nightly_recharge_status:
type: integer
format: int32
example: 3
description: >-
The Nightly Recharge status shows how your body was able to recover from training and stress during the night.
Scores for both ANS charge and sleep charge are taken into account.
Nightly Recharge status has the following (6-item) scale: very poor (1) – poor (2) – compromised (3) – OK (4) – good (5) – very good (6).
ans_charge:
type: number
format: float
example: 0.0
description:
ANS stands for autonomic nervous system. ANS charge is formed by measuring heart rate, heart rate variability
and breathing rate during roughly the first four hours of your sleep. It is formed comparing your last night
to your usual levels from the past 28 days. The scale is from -10.0 to +10.0. Around zero is your usual level.
ans_charge_status:
type: integer
format: int32
example: 3
description:
ANS charge status = much below usual (1) - below usual (2) - usual (3) - above usual (4) - much above usual (5)
hrv_samples:
type: object
example: {
"00:41": 14,
"00:46": 14,
"00:51": 15
}
description: >-
5-minute average samples of heart rate variability. Unit of samples is milliseconds(ms).
breathing_samples:
type: object
example: {
"00:39": 13.4,
"00:44": 13.5,
"00:49": 13.5
}
description: >-
5-minute average samples of breathing rate. Unit of samples is breaths per minute (bpm).
continuous-heartrate:
type: object
properties:
polar_user:
type: string
example: 'https://www.polaraccesslink/v3/users/1'
description: Absolute link to user owning the continuous heart rate samples
date:
type: string
format: date
description: Result date of the Continuous Heart Rate
example: '2020-01-01'
heart_rate_samples:
type: array
items:
type: object
properties:
heart_rate:
type: integer
description: Heart rate in beats per minute (bpm).
sample_time:
type: string
description: Measurement time of heart rate in HH:mm:ss format. Device time used for measurement.
example:
{
"polar_user": "https://polaraccesslink.com/v3/users/627139",
"date": "2022-09-12",
"heart_rate_samples": [
{
"heart_rate": 63,
"sample_time": "00:02:08"
},
{
"heart_rate": 62,
"sample_time": "00:07:08"
}
]
}
description: >-
5 min average samples of heart rate from the duration of the continuous heart rate measurement. Default
time between samples is 5 minutes. There may be periods with samples more often than every 5 minutes.
Unit of samples is beats per minute (bpm).
recharges:
type: object
properties:
recharges:
type: array
description: List of Nightly Recharge objects
items:
$ref: '#/components/schemas/nightly-recharge'
description: Nightly Recharge list
alertness:
type: object
properties:
grade:
type: number
format: double
example: 9.9
description: Grade
grade_validity_seconds:
type: integer
format: int32
example: 57600
description: Grade validity seconds
grade_type:
type: string
example: GRADE_TYPE_PRIMARY
description: Grade type
enum:
- GRADE_TYPE_UNKNOWN
- GRADE_TYPE_PRIMARY
- GRADE_TYPE_ADDITIONAL
grade_classification:
type: string
example: GRADE_CLASSIFICATION_STRONG
description: Grade classification
enum:
- GRADE_CLASSIFICATION_UNKNOWN
- GRADE_CLASSIFICATION_WEAK
- GRADE_CLASSIFICATION_FAIR
- GRADE_CLASSIFICATION_STRONG
- GRADE_CLASSIFICATION_EXCELLENT
validity:
type: string
example: VALIDITY_ESTIMATE
description: Validity
enum:
- VALIDITY_UNKNOWN
- VALIDITY_RESET
- VALIDITY_NOT_VALID
- VALIDITY_ESTIMATE
- VALIDITY_VALID
sleep_inertia:
type: string
example: SLEEP_INERTIA_MILD
description: Sleep inertia
enum:
- SLEEP_INERTIA_UNKNOWN
- SLEEP_INERTIA_NO_INERTIA
- SLEEP_INERTIA_MILD
- SLEEP_INERTIA_MODERATE
- SLEEP_INERTIA_HEAVY
sleep_type:
type: string
example: SLEEP_TYPE_PRIMARY
description: Sleep type
enum:
- SLEEP_TYPE_UNKNOWN
- SLEEP_TYPE_PRIMARY
- SLEEP_TYPE_SECONDARY
- SLEEP_TYPE_ARTIFICIAL
result_type:
type: string
example: ALERTNESS_TYPE_HISTORY
description: Result type
enum:
- ALERTNESS_TYPE_UNKNOWN
- ALERTNESS_TYPE_PREDICTION
- ALERTNESS_TYPE_HISTORY
period_start_time:
type: string
format: date-time
description: Alertness period start time (UTC)
example: '2022-11-20T20:52:20'
period_end_time:
type: string
format: date-time
description: Alertness period end time (UTC)
example: '2022-11-21T19:15:52'
sleep_period_start_time:
type: string
format: date-time
description: Sleep period start time (UTC)
example: '2022-11-20T20:52:20.57'
sleep_period_end_time:
type: string
format: date-time
description: Sleep period end time (UTC)
example: '2022-11-21T04:11:20.57'
sleep_timezone_offset_minutes:
type: integer
format: int32
example: 120
description: Sleep timezone offset minutes
hourly_data:
type: array
description: >-
Alertness hourly data for the alertness period
items:
$ref: '#/components/schemas/alertness-hourly-data'
description: Alertness period data
example:
{
"grade": 9.9,
"grade_validity_seconds": 57600,
"grade_type": "GRADE_TYPE_PRIMARY",
"grade_classification": "GRADE_CLASSIFICATION_STRONG",
"validity": "VALIDITY_ESTIMATE",
"sleep_inertia": "SLEEP_INERTIA_MILD",
"sleep_type": "SLEEP_TYPE_PRIMARY",
"result_type": "ALERTNESS_TYPE_HISTORY",
"period_start_time": "2022-11-20T20:52:20",
"period_end_time": "2022-11-21T19:15:52",
"sleep_period_start_time": "2022-11-20T20:52:20.57",
"sleep_period_end_time": "2022-11-21T04:11:20.57",
"sleep_timezone_offset_minutes": 120,
"hourly_data": [
{
"validity": "VALIDITY_ESTIMATE",
"alertness_level": "ALERTNESS_LEVEL_LOW",
"start_time": "2022-11-21T04:12:00",
"end_time": "2022-11-21T05:00:00"
}
]
}
circadian-bedtime:
type: object
properties:
validity:
type: string
example: VALIDITY_ESTIMATE
description: Validity
enum:
- VALIDITY_UNKNOWN
- VALIDITY_RESET
- VALIDITY_NOT_VALID
- VALIDITY_ESTIMATE
- VALIDITY_VALID
quality:
type: string
example: CIRCADIAN_BEDTIME_QUALITY_COMPROMISED
description: Quality
enum:
- CIRCADIAN_BEDTIME_QUALITY_UNKNOWN
- CIRCADIAN_BEDTIME_QUALITY_WEAK
- CIRCADIAN_BEDTIME_QUALITY_COMPROMISED
- CIRCADIAN_BEDTIME_QUALITY_CLEARLY_RECOGNIZABLE
result_type:
type: string
example: CIRCADIAN_BEDTIME_TYPE_HISTORY
description: Result type
enum:
- CIRCADIAN_BEDTIME_TYPE_UNKNOWN
- CIRCADIAN_BEDTIME_TYPE_PREDICTION
- CIRCADIAN_BEDTIME_TYPE_HISTORY
period_start_time:
type: string
format: date-time
description: Circadian bedtime period start time (UTC)
example: '2022-11-20T21:18:30'
period_end_time:
type: string
format: date-time
description: Circadian bedtime period end time (UTC)
example: '2022-11-21T05:18:30'
preferred_sleep_period_start_time:
type: string
format: date-time
description: Circadian bedtime preferred sleep period start time (UTC)
example: '2022-11-20T21:18:30'
preferred_sleep_period_end_time:
type: string
format: date-time
description: Circadian bedtime preferred sleep period end time (UTC)
example: '2022-11-21T05:18:30'
sleep_gate_start_time:
type: string
format: date-time
description: Circadian bedtime sleep gate (suggested fall a sleep window) start time (UTC)
example: '2022-11-20T21:18:30'
sleep_gate_end_time:
type: string
format: date-time
description: Circadian bedtime sleep gate (suggested fall a sleep window) end time (UTC)
example: '2022-11-21T05:18:30'
sleep_timezone_offset_minutes:
type: integer
format: int32
example: 120
description: Sleep timezone offset minutes
description: Circadian bedtime period data
example:
{
"validity": "VALIDITY_ESTIMATE",
"quality": "CIRCADIAN_BEDTIME_QUALITY_COMPROMISED",
"result_type": "CIRCADIAN_BEDTIME_TYPE_HISTORY",
"period_start_time": "2022-11-20T21:18:30",
"period_end_time": "2022-11-21T05:18:30",
"preferred_sleep_period_start_time": "2022-11-20T21:18:30",
"preferred_sleep_period_end_time": "2022-11-21T05:18:30",
"sleep_gate_start_time": "2022-11-20T21:03:30",
"sleep_gate_end_time": "2022-11-20T21:33:30",
"sleep_timezone_offset_minutes": 120
}
alertness-hourly-data:
type: object
properties:
validity:
type: string
example: VALIDITY_ESTIMATE
description: Validity
enum:
- VALIDITY_UNKNOWN
- VALIDITY_RESET
- VALIDITY_NOT_VALID
- VALIDITY_ESTIMATE
- VALIDITY_VALID
alertness_level:
type: string
example: ALERTNESS_LEVEL_VERY_HIGH
description: Alertness level
enum:
- ALERTNESS_LEVEL_UNKNOWN
- ALERTNESS_LEVEL_MINIMAL
- ALERTNESS_LEVEL_VERY_LOW
- ALERTNESS_LEVEL_LOW
- ALERTNESS_LEVEL_HIGH
- ALERTNESS_LEVEL_VERY_HIGH
start_time:
type: string
format: date-time
description: Alertness period start time (UTC)
example: '2022-11-21T04:00:00'
end_time:
type: string
format: date-time
description: Alertness period end time (UTC)
example: '2022-11-21T05:00:00'
description: Hourly data for the alertness period
body-temperature-period:
type: object
properties:
source_device_id:
type: string
example: 1111AAAA
measurement_type:
type: string
example: TM_CORE_TEMPERATURE
description: Measurement type
enum:
- TM_UNKNOWN
- TM_SKIN_TEMPERATURE
- TM_CORE_TEMPERATURE
sensor_location:
type: string
example: SL_PROXIMAL
description: Sensor location
enum:
- SL_UNKNOWN
- SL_DISTAL
- SL_PROXIMAL
start_time:
type: string
example: '2023-10-20T04:00:00'
format: date-time
description: Measurement period start time (UTC)
end_time:
type: string
example: '2023-10-20T05:00:00'
format: date-time
description: Measurement period end time (UTC)
modified_time:
type: string
example: '2023-10-20T04:00:00'
format: date-time
description: Measurement period modified time (UTC)
samples:
type: array
items:
$ref: '#/components/schemas/body-temperature-sample'
body-temperature-sample:
type: object
properties:
temperature_celsius:
type: number
example: 36.5
format: float
recording_time_delta_milliseconds:
type: integer
example: 123
format: int64
pattern: '[0-9]+'
skin-temperature:
type: object
properties:
sleep_time_skin_temperature_celsius:
type: number
example: 36.5
format: float
deviation_from_baseline_celsius:
type: number
example: 0.5
format: float
sleep_date:
type: string
example: '2023-10-20'
format: date
skin-contact-period:
type: object
properties:
source_device_id:
type: string
example: 1111AAAA
start_time:
type: string
format: date-time
description: Measurement period start time (UTC)
example: '2023-10-20T04:00:00'
end_time:
type: string
format: date-time
description: Measurement period end time (UTC)
example: '2023-10-20T05:00:00'
modified_time:
type: string
format: date-time
description: Measurement period modified time (UTC)
example: '2023-10-20T04:00:00'
skin_contact_changes:
type: array
items:
$ref: '#/components/schemas/skin-contact-change'
skin-contact-change:
type: object
properties:
skin_contact:
type: boolean
example: true
recording_time_delta_milliseconds:
type: integer
example: 123
format: int64
pattern: '[0-9]+'
ecg-test-result:
type: object
properties:
source_device_id:
type: string
example: 1111AAAA
test_time:
type: integer
example: 1697787256
format: int64
time_zone_offset:
type: integer
example: 180
format: int32
average_heart_rate_bpm:
type: integer
example: 60
format: int32
heart_rate_variability_ms:
type: number
example: 0.0
format: float
heart_rate_variability_level:
type: string
example: ECG_HRV_LEVEL_NO_BASELINE
enum:
- ECG_HRV_LEVEL_NO_BASELINE
- ECG_HRV_LEVEL_BELOW_USUAL
- ECG_HRV_LEVEL_USUAL
- ECG_HRV_LEVEL_ABOVE_USUAL
rri_ms:
type: number
example: 100.0
format: float
pulse_transit_time_systolic_ms:
type: number
example: 100.0
format: float
pulse_transit_time_diastolic_ms:
type: number
example: 100.0
format: float
pulse_transit_time_quality_index:
type: number
example: 100.0
format: float
samples:
type: array
items:
$ref: '#/components/schemas/ecg-sample'
quality_measurements:
type: array
items:
$ref: '#/components/schemas/quality-measurement'
ecg-sample:
type: object
properties:
recording_time_delta_ms:
type: integer
example: 123
format: int32
amplitude_mv:
type: number
example: 0.1
format: float
quality-measurement:
type: object
properties:
recording_time_delta_ms:
type: integer
example: 123
format: int32
quality_level:
type: string
example: ECG_QUALITY_HIGH
enum:
- ECG_QUALITY_UNKNOWN
- ECG_QUALITY_NO_CONTACT
- ECG_QUALITY_LOW
- ECG_QUALITY_HIGH
spo2-test-result:
type: object
properties:
source_device_id:
type: string
example: 1111AAAA
test_time:
type: integer
example: 1697787256
format: int64
time_zone_offset:
type: integer
example: 180
format: int32
test_status:
type: string
example: SPO2_TEST_PASSED
enum:
- 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
blood_oxygen_percent:
type: integer
example: 95
format: int32
spo2_class:
type: string
example: SPO2_CLASS_NORMAL
enum:
- SPO2_CLASS_UNKNOWN
- SPO2_CLASS_VERY_LOW
- SPO2_CLASS_LOW
- SPO2_CLASS_NORMAL
spo2_value_deviation_from_baseline:
type: string
example: DEVIATION_NO_BASELINE
enum:
- DEVIATION_NO_BASELINE
- DEVIATION_BELOW_USUAL
- DEVIATION_USUAL
- DEVIATION_ABOVE_USUAL
spo2_quality_average_percent:
type: number
example: 90.0
format: float
average_heart_rate_bpm:
type: integer
example: 60
format: int32
heart_rate_variability_ms:
type: number
example: 100.0
format: float
spo2_hrv_deviation_from_baseline:
type: string
example: DEVIATION_NO_BASELINE
enum:
- DEVIATION_NO_BASELINE
- DEVIATION_BELOW_USUAL
- DEVIATION_USUAL
- DEVIATION_ABOVE_USUAL
altitude_meters:
type: number
example: 50.0
format: float