This document describes the public API of the Fitrockr platform.

Important
To use this API you need to have an API key from one of our platforms.
Not all data sets may be available for your use case. Supported data sets are determined by platform configuration and Garmin device utilized.
Important
Data is only refreshed when a user manually syncs their Garmin device. Please use data requests on a minute level. DO NOT GET DATA ON A MILLISECOND LEVEL.

Summary

The Fitrockr API consists of 3 API Collections.

User API

The User API contains all api requests focussing on user data. Beside searching for users and querying user details it also contains all APIs to retrieve user data for a specific period like Daily Summaries, Heart Rate, BBI,…​

Health Kpi

The Health Kpi contains all APIs dealing with the Health KPI Reporting. Fitrockr calculates certain KPIs based on the user data that can be bundled into Reports using the Fitrockr Admin Tool. The Health KPI API can be used to generate such Reports in raw or published form.

Status

The Status API can be used for checking, if the basic connection to fitrockr works and if everything is up and running.

Generic HOW TO to get User related data
  1. Connect to the Fitrockr API following the Communication & Authentication chapter

  2. Search for specific users that are relevant for you using the User Search API

  3. Use the id returned by the user search to query specific health values for the user.

Communication & Authentication

Fitrockr API uses an API key to secure the api. The API key is just valid for your instance and can be obtained from the Fitrockr Support & Sales team. Beside the API you have to provide the tenant identifier. This is used by the server to determine the right instance of the api request.

Base URL

The base url of the fitrockr api is https://api.fitrockr.com

API Key

The api key that the Fitrockr team provided you, has to be sent with every request header. The header name is X-API-Key.

Tenant Id

Your Fitrockr instance is identified by a tenant id. You have to send this identifier with every request in the X-Tenant header.

Example

Imagine your tenant key is example-tenant and your api key is 00000000-0000-0000-0000-000000000000. Your request should look like the following example

GET /v1/status/greet HTTP/1.1
Content-Type: application/json
X-Tenant: example-tenant
X-API-Key: 00000000-0000-0000-0000-000000000000
Host: api.fitrockr.com

Status-API

The status api is used to check, if the Fitrockr server is up and running.

Greet

The greet method of the status api is just returning a http 200 response with a constant string "Rock on!". You can use this method to check, if the fitrockr server is available.

Example Request
GET /v1/status/greet HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 10

"Rock on!"

Greet me

The greet me method is returning a constant greeting response containing the name of the registered application you are using. E.g., if the name of the application is "Ext App", this method would return "Rock on, Ext App!".

Example Request
GET /v1/status/greetMe HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 24

"Rock on, External App!"

User-API

The User API gives you access to all user related data like profile, daily summaries, activites,…​

User user search can be used to obtain users. The id of the user that is returned in the response can be used to obtain further data with other methods of the User API.

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/user-search-query/request-parameters.adoc[]

Table 1. Response Object
Path Type Description

[].id

String

Identifier of the user

[].firstName

String

First name of the user

[].lastName

String

Last name of the user

[].profilePicUrl

String

Url to retrieve the user profile picture

User Search V2

User user search can be used to obtain users. The id of the user that is returned in the response can be used to obtain further data with other methods of the User API.

Request Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/user-search-v2/request-parameters.adoc[]

Table 2. Response Fields
Path Type Description

totalUsers

Number

Total response available

pagedContent[]id

String

Identifier of the user

pagedContent[].firstName

String

First name of the user

pagedContent[].lastName

String

Last name of the user

pagedContent[].profilePicUrl

String

Url to retrieve the user profile picture

pagedContent[].email

String

Url to retrieve the user profile picture

pagedContent[].gender

String

Gender of the user (m, f, d)

pagedContent[].countryCode

String

Country code of the user

pagedContent[].location

String

Location or state of the user

pagedContent[].city

String

City of the user

pagedContent[].lastBatteryPercentage

Number

The last transmitted battery percentage of the user’s device

pagedContent[].advertisementConsent

Boolean

True, if advertisement consent is given

pagedContent[].emailNotificationConsent

Boolean

True, if email notifications are turned on

pagedContent[].productEmails

Boolean

True, if prodice emails are turned on

pagedContent[].signUpDate

Object

Sign up date of the user

pagedContent[].assignedEvents

Null

List of event ids the user is assigned to

pagedContent[].assignedChallenges

Null

List of challenge ids the user is assigned to

pagedContent[].assignedLeagues

Null

List of league ids the user is assigned to

pagedContent[].signUpDate

Object

Date and time when the user signed up

pagedContent[].signUpDate.date

Object

Date when the user signed up

pagedContent[].signUpDate.date.year

Number

Year-value of the sign up date

pagedContent[].signUpDate.date.month

Number

Month-value of the sign up date

pagedContent[].signUpDate.date.day

Number

Day-value of the sign up date

pagedContent[].signUpDate.time

Object

Time when the user signed up

pagedContent[].signUpDate.time.hour

Number

Hour-value of the sign up time

pagedContent[].signUpDate.time.minute

Number

Minute-value of the sign up time

pagedContent[].signUpDate.time.second

Number

Second-value of the sign up time

Example Request
GET /v2/users?query=fitrockr&page=1&size=1&requestEvents=true&requestChallenges=true&requestLeagues=true HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 559

{"totalUsers":3,"pagedContent":[{"id":"688d10a84f18f429c1dca78d","firstName":"Dan","lastName":"Donny","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678","email":"test2@fitrockr.com","gender":"m","countryCode":"FR","location":"East","city":"Paris","lastBatteryPercentage":24,"advertisementConsent":false,"emailNotificationConsent":false,"productEmails":false,"signUpDate":{"date":{"year":2025,"month":3,"day":1},"time":{"hour":23,"minute":0,"second":0}},"assignedEvents":null,"assignedChallenges":null,"assignedLeagues":null}]}

User Profile

The detailed profile of a certain user that speficied by the user id within the request path.

Table 3. /v1/users/{userId}/profile
Parameter Description

userId

User Identifier

Table 4. Response Object
Path Type Description

id

String

Identifier of the user

firstName

String

First name of the user

lastName

String

Last name of the user

profilePicUrl

String

Url to retrieve the user profile picture

gender

String

'm' for male or 'f' for female, 'd' for divers

country

String

ISO Country code (e.g. DE)

city

String

Optional City of the user

location

String

Description of the location of a user beside city. E.g. Organization, Room Number,..

language

String

ISO Language code (e.g. de)

timeZone

String

Time Zone Identifier

email

String

Email of the user

yearOfBirth

Number

Year of Birth (used for calc. of basal metabolism)

imperialUnits

Boolean

true, if imperial units are being used. false for metric

height

Number

Height of the user in cm

heightUOM

String

Height Unit (cm or in)

weight

Number

Weight of the user in kg

weightUOM

String

Weight Unit (kg or lbs)

basalMetabolism

Number

Basal Metabolism of the user.

lastSync

String

Last tracker synchronization

dataReceptionBlocked

Boolean

true, if data reception is blocked. false otherwise

trackerName

String

Name of the tracker, the user is currently using

deviceId

String

Device Id of the Garmin Device, in case Fitrockr Apps are used

deviceAddress

String

Mac Address of the Garmin Device, in case Fitrockr Apps are used

customInfo

String

Custom Information of the user

active

Boolean

True, if the user is connected. Otherwise false

usualSleepStartTime

Number

Usual sleep start time (e.g. 2200)

usualSleepEndTime

Number

Usual sleep end time (e.g. 0600)

lastBatteryPercentage

Number

The last transmitted battery percentage of the user’s device (read-only)

Example Request
GET /v1/users/688d10a74f18f429c1dca76b/profile HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 669

{"id":"688d10a74f18f429c1dca76b","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678","basalMetabolism":1234,"gender":"m","country":"DE","city":"Berlin","language":"de","timeZone":"UTC+1","email":"test@fitrockr.com","yearOfBirth":1985,"height":180,"heightUOM":"cm","weight":80,"weightUOM":"kg","lastSync":"2020-03-03T23:00:00+0000","customInfo":"InfoGus","deviceId":"DeviceIdGus","deviceAddress":"DeviceAddressGus","trackerName":"Garmin","active":true,"usualSleepStartTime":2200,"usualSleepEndTime":600,"imperialUnits":false,"location":"Center","dataReceptionBlocked":false,"lastBatteryPercentage":23}

Create User Profile

Create a new user on the platform

Table 5. Request Fields
Path Type Description

id

Null

Identifier of the user

firstName

String

First name of the user

lastName

String

Last name of the user

profilePicUrl

String

Url to retrieve the user profile picture

gender

String

'm' for male or 'f' for female, 'd' for divers

country

String

ISO Country code (e.g. DE)

city

String

Optional City of the user

location

Null

Description of the location of a user beside city. E.g. Organization, Room Number,..

language

String

ISO Language code (e.g. de)

timeZone

String

Time Zone Identifier

email

String

Email of the user

yearOfBirth

Number

Year of Birth (used for calc. of basal metabolism)

imperialUnits

Boolean

true, if imperial units are being used. false for metric

height

Number

Height of the user in cm

heightUOM

Null

Height Unit (cm or in)

weight

Number

Weight of the user in kg

weightUOM

Null

Weight Unit (kg or lbs)

basalMetabolism

Null

Basal Metabolism of the user.

lastSync

Null

Last tracker synchronization

dataReceptionBlocked

Boolean

true, if data reception is blocked. false otherwise

trackerName

Null

Name of the tracker, the user is currently using

deviceId

Null

Device Id of the Garmin Device, in case Fitrockr Apps are used

deviceAddress

Null

Mac Address of the Garmin Device, in case Fitrockr Apps are used

customInfo

Null

Custom Information of the user

active

Null

True, if the user is connected. Otherwise false

usualSleepStartTime

Null

Usual sleep start time (e.g. 2200)

usualSleepEndTime

Null

Usual sleep end time (e.g. 0600)

Response Object
{"id":"688d10a64f18f429c1dca755","firstName":"John","lastName":"Doe","profilePicUrl":null,"basalMetabolism":1750,"gender":"m","country":"DE","city":"Berlin","language":"de","timeZone":"GMT+01:00","email":"john@doe.com","yearOfBirth":1975,"height":180,"heightUOM":"cm","weight":82,"weightUOM":"kg","lastSync":null,"customInfo":null,"deviceId":null,"deviceAddress":null,"trackerName":null,"active":true,"usualSleepStartTime":null,"usualSleepEndTime":null,"imperialUnits":false,"location":null,"dataReceptionBlocked":false,"lastBatteryPercentage":null}
Example Request
POST /v1/users/ HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Content-Length: 553
Host: localhost:8080

{"id":null,"firstName":"John","lastName":"Doe","profilePicUrl":"https://images.fitrockr.com/1234","basalMetabolism":null,"gender":"m","country":"DE","city":"Berlin","language":"de","timeZone":"GMT+1","email":"john@doe.com","yearOfBirth":1975,"height":180,"heightUOM":null,"weight":82,"weightUOM":null,"lastSync":null,"customInfo":null,"deviceId":null,"deviceAddress":null,"trackerName":null,"active":null,"usualSleepStartTime":null,"usualSleepEndTime":null,"imperialUnits":false,"location":null,"dataReceptionBlocked":false,"lastBatteryPercentage":null}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 549

{"id":"688d10a64f18f429c1dca755","firstName":"John","lastName":"Doe","profilePicUrl":null,"basalMetabolism":1750,"gender":"m","country":"DE","city":"Berlin","language":"de","timeZone":"GMT+01:00","email":"john@doe.com","yearOfBirth":1975,"height":180,"heightUOM":"cm","weight":82,"weightUOM":"kg","lastSync":null,"customInfo":null,"deviceId":null,"deviceAddress":null,"trackerName":null,"active":true,"usualSleepStartTime":null,"usualSleepEndTime":null,"imperialUnits":false,"location":null,"dataReceptionBlocked":false,"lastBatteryPercentage":null}

Update User Profile

Update an existing user profile on the platform

Table 6. /v1/users/{userId}
Parameter Description

userId

User Identifier

Table 7. Request Fields
Path Type Description

id

Null

Identifier of the user

firstName

String

First name of the user

lastName

String

Last name of the user

profilePicUrl

String

Url to retrieve the user profile picture

gender

String

'm' for male or 'f' for female, 'd' for divers

gender

String

'm' for male or 'f' for female, 'd' for divers

country

String

ISO Country code (e.g. DE)

city

String

Optional City of the user

location

Null

Description of the location of a user beside city. E.g. Organization, Room Number,..

language

String

ISO Language code (e.g. de)

timeZone

String

Time Zone Identifier

email

String

Email of the user

yearOfBirth

Number

Year of Birth (used for calc. of basal metabolism)

imperialUnits

Boolean

true, if imperial units are being used. false for metric

height

Number

Height of the user in cm

heightUOM

Null

Height Unit (cm or in)

weight

Number

Weight of the user in kg

weightUOM

Null

Weight Unit (kg or lbs)

basalMetabolism

Null

Basal Metabolism of the user.

lastSync

Null

Last tracker synchronization

dataReceptionBlocked

Boolean

true, if data reception is blocked. false otherwise

trackerName

Null

Name of the tracker, the user is currently using

deviceId

Null

Device Id of the Garmin Device, in case Fitrockr Apps are used

deviceAddress

Null

Mac Address of the Garmin Device, in case Fitrockr Apps are used

customInfo

Null

Custom Information of the user

active

Null

True, if the user is connected. Otherwise false

usualSleepStartTime

Null

Usual sleep start time (e.g. 2200)

usualSleepEndTime

Null

Usual sleep end time (e.g. 0600)

Response Object
{"id":"688d10a94f18f429c1dca7a7","firstName":"John","lastName":"Doe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678","basalMetabolism":1750,"gender":"m","country":"DE","city":"Berlin","language":"de","timeZone":"GMT+01:00","email":"john@doe.com","yearOfBirth":1975,"height":180,"heightUOM":"cm","weight":82,"weightUOM":"kg","lastSync":"2020-03-03T23:00:00+0000","customInfo":"InfoGus","deviceId":"DeviceIdGus","deviceAddress":"DeviceAddressGus","trackerName":"Garmin","active":true,"usualSleepStartTime":2200,"usualSleepEndTime":600,"imperialUnits":false,"location":null,"dataReceptionBlocked":true,"lastBatteryPercentage":23}
Example Request
PUT /v1/users/688d10a94f18f429c1dca7a7 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Content-Length: 552
Host: localhost:8080

{"id":null,"firstName":"John","lastName":"Doe","profilePicUrl":"https://images.fitrockr.com/1234","basalMetabolism":null,"gender":"m","country":"DE","city":"Berlin","language":"de","timeZone":"GMT+1","email":"john@doe.com","yearOfBirth":1975,"height":180,"heightUOM":null,"weight":82,"weightUOM":null,"lastSync":null,"customInfo":null,"deviceId":null,"deviceAddress":null,"trackerName":null,"active":null,"usualSleepStartTime":null,"usualSleepEndTime":null,"imperialUnits":false,"location":null,"dataReceptionBlocked":true,"lastBatteryPercentage":null}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 662

{"id":"688d10a94f18f429c1dca7a7","firstName":"John","lastName":"Doe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678","basalMetabolism":1750,"gender":"m","country":"DE","city":"Berlin","language":"de","timeZone":"GMT+01:00","email":"john@doe.com","yearOfBirth":1975,"height":180,"heightUOM":"cm","weight":82,"weightUOM":"kg","lastSync":"2020-03-03T23:00:00+0000","customInfo":"InfoGus","deviceId":"DeviceIdGus","deviceAddress":"DeviceAddressGus","trackerName":"Garmin","active":true,"usualSleepStartTime":2200,"usualSleepEndTime":600,"imperialUnits":false,"location":null,"dataReceptionBlocked":true,"lastBatteryPercentage":23}

Delete User Profile

Delete a user on the platform

Table 8. /v1/users/{userId}
Parameter Description

userId

User Identifier

Example Request
DELETE /v1/users/688d10ac4f18f429c1dca7fa HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

Create user join code

Create a join code for a user and a data collection profile with a license key.

Table 9. /v1/users/{userId}/createJoinCode/{licenseKey}
Parameter Description

userId

User Identifier

licenseKey

8 digit license key of the Project / Data Collection Profile (Multi Sync Tablet QR Code)

Example Request
GET /v1/users/688d10a64f18f429c1dca757/createJoinCode/ABCD1234 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Response Object
{"joinCode":"null-6479","userId":"688d10a64f18f429c1dca757"}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 60

{"joinCode":"null-6479","userId":"688d10a64f18f429c1dca757"}

Creates an url that can be used to link Garmin Connect to the user account specified by the Id

Table 10. /v1/users/{userId}/createGarminConnectLinkUrl
Parameter Description

userId

User Identifier

Example Request
GET /v1/users/688d10a84f18f429c1dca798/createGarminConnectLinkUrl HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Response Object
{"userId":"688d10a84f18f429c1dca798","url":"https://admin.fitrockr.com/connectGarmin/\u003ctenant-id\u003e/GarminConnectUuidGus"}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 129

{"userId":"688d10a84f18f429c1dca798","url":"https://admin.fitrockr.com/connectGarmin/\u003ctenant-id\u003e/GarminConnectUuidGus"}

Daily Summary

A daily summary contains the daily activity data of a user like total calories, steps, distance and also points. This request can be used to get one or more daily summaries. The date range can be specified by request parameters.

Note
The result has always a descending sort order.
Table 11. /v1/users/{userId}/dailySummaries
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/daily-summary/request-parameters.adoc[]

Table 12. Response Object
Path Type Description

[].userId

String

Identifier of user to which this object belongs

[].date.day

Number

Day of Daily Summary

[].date.month

Number

Month of Daily Summary

[].date.year

Number

Year of Daily Summary

[].points

Number

Points of the user on that day

[].calories

Number

Calories of the user on that day

[].steps

Number

Steps of the user on that day

[].distance

Number

Distance of the user on that day

[].activityMinutes

Number

Activity Minutes of the user on that day

Example Request
GET /v1/users/688d10ad4f18f429c1dca81a/dailySummaries?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 295

[{"userId":"688d10ad4f18f429c1dca81a","date":{"year":2025,"month":8,"day":2},"points":14,"calories":12,"steps":11,"distance":13,"activityMinutes":15},{"userId":"688d10ad4f18f429c1dca81a","date":{"year":2025,"month":8,"day":1},"points":9,"calories":7,"steps":6,"distance":8,"activityMinutes":10}]

Daily Details

Daily Details contains more information on daily base compared to the daily summary.

Note
The result has always a descending sort order.
Table 13. /v1/users/{userId}/dailyDetails
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/dailyDetails/request-parameters.adoc[]

Table 14. Response Object
Path Type Description

[].userId

String

Identifier of user to which this record belongs

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].endTime.date.day

Number

Day of the end of this record

[].endTime.date.month

Number

Month of the end of this record

[].endTime.date.year

Number

Year of the end of this record

[].endTime.time.hour

Number

Hour of the end of this record

[].endTime.time.minute

Number

Minute of the end of this record

[].endTime.time.second

Number

Second of the end of this record

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].durationInSeconds

Number

Duration in seconds

[].activeKilocalories

Number

Active calories within the timeframe of this record

[].distanceInMeters

Number

Distance covered

[].moderateIntensityDurationInSeconds

Number

Cumulative duration of activities of moderate intensity (MET 3-6) lasting at least 600s at a time.

[].vigorousIntensityDurationInSeconds

Number

Cumulative duration of activities of vigorous intensity (MET >6) lasting at least 600s at a time

[].floorsClimbed

Number

Total number of floors climbed

[].averageStressLevel

Number

Average stress level of this period

[].maxStressLevel

Number

Maximum stress level in this period

[].stressDurationInSeconds

Number

Total stress duration in seconds

[].restStressDurationInSeconds

Number

Number of seconds with rest stress

[].activityStressDurationInSeconds

Number

Number of seconds the user was engaged in activity and stress duration was unreliable.

[].lowStressDurationInSeconds

Number

Number of seconds with low stress

[].mediumStressDurationInSeconds

Number

Number of seconds with medium stress

[].highStressDurationInSeconds

Number

Number of seconds with high stress

[].stressQualifier

String

Qualitative stress label. Possible values: unknown, calm, balanced, stressful, very_stressful, calm_awake, balanced_awake, stressful_awake, very_stressful_awake, ..

[].stepsGoal

Number

Step goal of the user

[].netKilocaloriesGoal

Number

calorie goal of the user

[].intensityDurationGoalInSeconds

Number

goal for intensity seconds

[].floorsClimbedGoal

Number

goal for floors climbed

[].minHeartRateInBeatsPerMinute

Number

Minimum heart rate (bpm)

[].avgHeartRateInBeatsPerMinute

Number

Average heart rate (bpm)

[].maxHeartRateInBeatsPerMinute

Number

Maximum heart rate (bpm)

[].restingHeartRateInBeatsPerMinute

Number

Resting heart rate (bpm)

[].summaryId

String

Id of this record

[].activityType

String

Type of activity of this record

[].calendarDate

String

Calendar date

[].steps

Number

Number of steps

Example Request
GET /v1/users/688d10aa4f18f429c1dca7ca/dailyDetails?startDate=2025-07-29&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1077

[{"userId":"688d10aa4f18f429c1dca7ca","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":19,"minute":8,"second":27}},"endTime":{"date":{"year":2025,"month":7,"day":31},"time":{"hour":19,"minute":8,"second":27}},"summaryId":"1b7105","calendarDate":"2021-01-01","startTimeInSeconds":1753902507,"startTimeOffsetInSeconds":0,"durationInSeconds":3600,"activityType":"WALKING","steps":1024,"activeKilocalories":2048.0,"distanceInMeters":512.0,"moderateIntensityDurationInSeconds":1200,"vigorousIntensityDurationInSeconds":600,"floorsClimbed":5,"minHeartRateInBeatsPerMinute":80,"avgHeartRateInBeatsPerMinute":100,"maxHeartRateInBeatsPerMinute":120,"restingHeartRateInBeatsPerMinute":70,"averageStressLevel":89,"maxStressLevel":100,"stressDurationInSeconds":200,"restStressDurationInSeconds":100,"activityStressDurationInSeconds":10,"lowStressDurationInSeconds":20,"mediumStressDurationInSeconds":30,"highStressDurationInSeconds":40,"stressQualifier":"balanced","stepsGoal":5000,"netKilocaloriesGoal":3000,"intensityDurationGoalInSeconds":360,"floorsClimbedGoal":10}]

Heart Rate

The user heart rate values

Note
The result has always a descending sort order.
Table 15. /v1/users/{userId}/heartRate
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/heartRate/request-parameters.adoc[]

Table 16. Response Object
Path Type Description

[].userId

String

Identifier of user to which this record belongs

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].calendarDate

String

Calendar date

[].value

Number

The heart rate value.

Example Request
GET /v1/users/688d10aa4f18f429c1dca7c0/heartRate?startDate=2025-07-29&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 939

[{"userId":"688d10aa4f18f429c1dca7c0","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":19,"minute":8,"second":26}},"calendarDate":"2021-01-01","startTimeInSeconds":1753902506,"startTimeOffsetInSeconds":0,"value":83},{"userId":"688d10aa4f18f429c1dca7c0","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":19,"minute":3,"second":26}},"calendarDate":"2021-01-01","startTimeInSeconds":1753902206,"startTimeOffsetInSeconds":0,"value":84},{"userId":"688d10aa4f18f429c1dca7c0","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":18,"minute":58,"second":26}},"calendarDate":"2021-01-01","startTimeInSeconds":1753901906,"startTimeOffsetInSeconds":0,"value":85},{"userId":"688d10aa4f18f429c1dca7c0","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":18,"minute":53,"second":26}},"calendarDate":"2021-01-01","startTimeInSeconds":1753901606,"startTimeOffsetInSeconds":0,"value":86}]

Activities

A daily summary contains the daily activity data of a user like total calories, steps, distance and also points. This request can be used to get one or more daily summaries. The date range can be specified by request parameters.

Note
The result has always a descending sort order.
Table 17. /v1/users/{userId}/activities
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/activities/request-parameters.adoc[]

Table 18. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].externalId

String

External Id of this activity (optional)

[].source

String

Source that recorded this activity

[].userId

String

Identifier of user to which this activity belongs

[].startDate.date.day

Number

Day of the start of this activity

[].startDate.date.month

Number

Month of the start of this activity

[].startDate.date.year

Number

Year of the start of this activity

[].startDate.time.hour

Number

Hour of the start of this activity

[].startDate.time.minute

Number

Minute of the start of this activity

[].startDate.time.second

Number

Second of the start of this activity

[].endDate.date.day

Number

Day of the end of this activity

[].endDate.date.month

Number

Month of the end of this activity

[].endDate.date.year

Number

Year of the end of this activity

[].endDate.time.hour

Number

Hour of the end of this activity

[].endDate.time.minute

Number

Minute of the end of this activity

[].endDate.time.second

Number

Second of the end of this activity

[].type

String

Type of the activity (e.g., Running, Walking, Rowing,..)

[].rawActivityType

Null

Raw Activity Type from the wearable

[].duration

Number

Duration of activity in seconds

[].amount

Number

Main value of the activity. (e.g. Distance for Walking, Strokes for rowing.)

[].unit

String

Unit for amount.

[].calories

Number

Burned calories.

[].distance

Number

Distance covered during activity

[].steps

Number

Steps taken during activity

Example Request
GET /v1/users/688d10ab4f18f429c1dca7e2/activities?startDate=2025-07-31&endDate=2025-08-03 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 876

[{"id":"688d10ab4f18f429c1dca7e8","externalId":"A1235","source":"Fitrockr Hub","userId":"688d10ab4f18f429c1dca7e2","startDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":18,"minute":38,"second":27}},"endDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":27}},"type":"Walking","rawActivityType":null,"duration":1800000,"amount":4000,"unit":"Meter","calories":200,"distance":4000.0,"steps":4000},{"id":"688d10ab4f18f429c1dca7e7","externalId":"A1234","source":"Fitrockr Hub","userId":"688d10ab4f18f429c1dca7e2","startDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":18,"minute":8,"second":27}},"endDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":27}},"type":"Running","rawActivityType":null,"duration":3600000,"amount":9000,"unit":"Meter","calories":400,"distance":9000.0,"steps":8000}]

Activity Details

Returns the details of a certain activity.

Table 19. /v1/users/{userId}/activity/{activityId}
Parameter Description

userId

User Identifier

activityId

Activity Identifier

Table 20. Response Object
Path Type Description

id

String

Unique Identifier of this activity

startDate.date.day

Number

Day of the start of this activity

startDate.date.month

Number

Month of the start of this activity

startDate.date.year

Number

Year of the start of this activity

startDate.time.hour

Number

Hour of the start of this activity

startDate.time.minute

Number

Minute of the start of this activity

startDate.time.second

Number

Second of the start of this activity

endDate.date.day

Number

Day of the end of this activity

endDate.date.month

Number

Month of the end of this activity

endDate.date.year

Number

Year of the end of this activity

endDate.time.hour

Number

Hour of the end of this activity

endDate.time.minute

Number

Minute of the end of this activity

endDate.time.second

Number

Second of the end of this activity

offset

Null

Start time offset in sec

userId

String

Identifier of user to which this activity belongs

source

String

Source that recorded this activity

tracker

Null

Tracker used to record the activity

type

String

Type of the activity (e.g., Running, Walking, Rowing,..)

rawActivityType

Null

duration

Number

Duration of activity in seconds

amount

Number

Main value of the activity. (e.g. Distance for Walking, Strokes for rowing.)

unit

String

Unit for amount.

calories

Number

Burned calories.

distance

Number

Distance covered during activity

steps

Number

Steps taken during activity

averageHeartRate

Null

Average HR in bpm during activity

maxHeartRate

Null

Max HR in bpm during activity

averageRunningCadence

Null

Average running cadence during activity

maxRunningCadence

Null

Maximum running cadence during activity

averageSpeed

Null

Average speed during activity

maxSpeed

Null

Max speed during activity

totalMetMinutes

Null

Total Met Minutes of activity

activitySamples[].startTimeInSeconds

Number

activitySamples[].latitudeInDegree

Null

activitySamples[].longitudeInDegree

Null

activitySamples[].elevationInMeters

Null

activitySamples[].airTemperatureCelcius

Null

activitySamples[].heartRate

Null

activitySamples[].speedMetersPerSecond

Null

activitySamples[].stepsPerMinute

Null

activitySamples[].totalDistanceInMeters

Null

activitySamples[].timerDurationInSeconds

Null

activitySamples[].clockDurationInSeconds

Null

activitySamples[].movingDurationInSeconds

Null

activitySamples[].powerInWatts

Null

activitySamples[].bikeCadenceInRPM

Null

activitySamples[].swimCadenceInStrokesPerMinute

Null

activitySamples[].metMinute

Null

heartRateZoneDistribution.redZoneShare

Number

Red Zone share in Percent

heartRateZoneDistribution.redZoneSeconds

Number

Red Zone Share in Seconds

heartRateZoneDistribution.anerobicZoneShare

Number

Anerobic Zone share in Percent

heartRateZoneDistribution.anerobicZoneSeconds

Number

Anerobic Zone Share in Seconds

heartRateZoneDistribution.aerobicZoneShare

Number

Aerobic Zone share in Percent

heartRateZoneDistribution.aerobicZoneSeconds

Number

Aerobic Zone Share in Seconds

heartRateZoneDistribution.fatBurnZoneShare

Number

Fat Burn Zone share in Percent

heartRateZoneDistribution.fatBurnZoneSeconds

Number

Fat Burn Zone Share in Seconds

heartRateZoneDistribution.healthZoneShare

Number

Health Zone share in Percent

heartRateZoneDistribution.healthZoneSeconds

Number

Health Zone Share in Seconds

heartRateZoneDistribution.noZoneShare

Number

No Zone share in Percent

heartRateZoneDistribution.noZoneSeconds

Number

Nno Zone Share in Seconds

heartRateZoneDistribution.moderateShare

Number

Moderate Zone share in Percent

heartRateZoneDistribution.moderateSeconds

Number

Moderate Zone Share in Seconds

heartRateZoneDistribution.vigorousShare

Number

Vigorous Zone share in Percent

heartRateZoneDistribution.vigorousSeconds

Number

Vigorous Zone Share in Seconds

Example Request
GET /v1/users/688d10ad4f18f429c1dca812/activity/688d10ad4f18f429c1dca817 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1400

{"id":"688d10ad4f18f429c1dca817","startDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":18,"minute":8,"second":29}},"endDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":29}},"offset":null,"userId":"688d10ad4f18f429c1dca812","source":"Fitrockr Hub","tracker":null,"type":"Running","rawActivityType":null,"duration":3600,"amount":9000,"unit":"Meter","calories":400,"distance":9000.0,"steps":8000,"averageHeartRate":null,"maxHeartRate":null,"averageRunningCadence":null,"maxRunningCadence":null,"averageSpeed":null,"maxSpeed":null,"totalMetMinutes":null,"activitySamples":[{"startTimeInSeconds":1,"latitudeInDegree":null,"longitudeInDegree":null,"elevationInMeters":null,"airTemperatureCelcius":null,"heartRate":null,"speedMetersPerSecond":null,"stepsPerMinute":null,"totalDistanceInMeters":null,"timerDurationInSeconds":null,"clockDurationInSeconds":null,"movingDurationInSeconds":null,"powerInWatts":null,"bikeCadenceInRPM":null,"swimCadenceInStrokesPerMinute":null,"metMinute":null}],"heartRateZoneDistribution":{"redZoneShare":0.0,"redZoneSeconds":0,"anerobicZoneShare":0.0,"anerobicZoneSeconds":0,"aerobicZoneShare":0.0,"aerobicZoneSeconds":0,"fatBurnZoneShare":0.0,"fatBurnZoneSeconds":0,"healthZoneShare":0.0,"healthZoneSeconds":0,"noZoneShare":0.0,"noZoneSeconds":0,"moderateShare":0.0,"moderateSeconds":10,"vigorousShare":0.0,"vigorousSeconds":0}}

Intraday

An intraday record contains the recorded data within a day for a certain timeframe. This request can be used to get one or more intraday records. The date range can be specified by request parameters.

Note
The result has always a descending sort order.
Table 21. /v1/users/{userId}/intraDays
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/intraDay/request-parameters.adoc[]

Table 22. Response Object
Path Type Description

[].id

String

Unique Identifier of this intraday record

[].userId

String

Identifier of user to which this record belongs

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].endTime.date.day

Number

Day of the end of this record

[].endTime.date.month

Number

Month of the end of this record

[].endTime.date.year

Number

Year of the end of this record

[].endTime.time.hour

Number

Hour of the end of this record

[].endTime.time.minute

Number

Minute of the end of this record

[].endTime.time.second

Number

Second of the end of this record

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].durationInSeconds

Number

Duration in seconds

[].activeCalories

Number

Active calories within the timeframe of this record

[].distance

Number

Distance covered

[].activeSeconds

Number

Active seconds during the timeframe of this record

[].metValue

Number

Metabolic equivalent of this record

[].intensity

String

Motion intensity category

[].meanMotionIntensity

Number

Mean motion intensity

[].maxMotionIntensity

Number

Maximum motion intensity

[].averageStressLevel

Number

average stress level

[].maxStressLevel

Number

Maximum stress level

[].minHeartRateInBeatsPerMinute

Number

Minimum heart rate (bpm)

[].avgHeartRateInBeatsPerMinute

Number

Average heart rate (bpm)

[].maxHeartRateInBeatsPerMinute

Number

Maximum heart rate (bpm)

[].summaryId

String

Id of this record

[].activityType

String

Type of activity of this record

[].calendarDate

String

Calendar date

[].steps

Number

Number of steps

Example Request
GET /v1/users/688d10ab4f18f429c1dca7db/intraDays?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 730

[{"id":"688d10ab4f18f429c1dca7e0","userId":"688d10ab4f18f429c1dca7db","summaryId":"1b7105","activityType":"SEDENTARY","calendarDate":"2021-01-01","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":0}},"endTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":45,"second":0}},"startTimeInSeconds":1754055600,"startTimeOffsetInSeconds":1754055900,"durationInSeconds":300,"activeCalories":23,"distance":15,"steps":23,"activeSeconds":5,"metValue":1.2,"intensity":"SEDENTARY","meanMotionIntensity":0.73,"maxMotionIntensity":1.3,"averageStressLevel":20,"maxStressLevel":50,"minHeartRateInBeatsPerMinute":70,"avgHeartRateInBeatsPerMinute":90,"maxHeartRateInBeatsPerMinute":120}]

Motion Intensity

This records contains the intensity of the motion that the tracker recorded for a certain timeframe.

Note
The result has always a descending sort order.
Table 23. /v1/users/{userId}/motionIntensity
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/motion-intensity/request-parameters.adoc[]

Table 24. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].userId

String

User identifier

[].activityType

String

Activity type detected at the time of the record

[].durationInSeconds

Number

Duration of this record in sec.

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].motionIntensity

Number

Intensity of the motion

Example Request
GET /v1/users/688d10af4f18f429c1dca832/motionIntensity?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 308

[{"id":"688d10af4f18f429c1dca837","userId":"688d10af4f18f429c1dca832","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":0}},"startTimeInSeconds":1754055600,"startTimeOffsetInSeconds":1754055900,"durationInSeconds":300,"activityType":"GENERIC","motionIntensity":23.4}]

Sleep

Sleep Records for a user

Note
The result has always a descending sort order.
Table 25. /v1/users/{userId}/sleep
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/sleep/request-parameters.adoc[]

Table 26. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].userId

String

Identifier of user to which this activity belongs

[].tags[]

Array

Tagged, if day sleep, night sleep, nap or rem sleep

[].outdated

Boolean

The sleep was marked as outdated, because of new data received afterwards

[].sleepDay.day

Number

Day, the sleep is assigned to

[].sleepDay.month

Number

Month, the sleep is assigned to

[].sleepDay.year

Number

Year, the sleep is assigned to

[].summaryId

String

Internal summary id of this sleep

[].calendarDate

String

Day, the sleep started

[].processingDateTime.date.day

Number

Day of the processing time of this sleep

[].processingDateTime.date.month

Number

Month of the processing time of this sleep

[].processingDateTime.date.year

Number

Year of the processing time of this sleep

[].processingDateTime.time.hour

Number

Hour of the processing time of this sleep

[].processingDateTime.time.minute

Number

Minute of the processing time of this sleep

[].processingDateTime.time.second

Number

Second of the processing time of this sleep

[].startTime.date.day

Number

Day of the start of this sleep

[].startTime.date.month

Number

Month of the start of this sleep

[].startTime.date.year

Number

Year of the start of this sleep

[].startTime.time.hour

Number

Hour of the start of this sleep

[].startTime.time.minute

Number

Minute of the start of this sleep

[].startTime.time.second

Number

Second of the start of this sleep

[].endTime.date.day

Number

Day of the end of this sleep

[].endTime.date.month

Number

Month of the end of this sleep

[].endTime.date.year

Number

Year of the end of this sleep

[].endTime.time.hour

Number

Hour of the end of this sleep

[].endTime.time.minute

Number

Minute of the end of this sleep

[].endTime.time.second

Number

Second of the end of this sleep

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].durationInSeconds

Number

Duration of this record in sec.

[].deepSleepDurationInSeconds

Number

Sum of deep sleep seconds.

[].lightSleepDurationInSeconds

Number

Sum of light sleep seconds

[].awakeDurationInSeconds

Number

Sum of seconds awake.

[].remSleepSeconds

Number

Sum of rem sleep seconds.

[].unmeasurableSeconds

Number

Sum of seconds not measurable.

[].sleepSeconds

Number

Sum of total seconds asleep.

[].sleepEfficiency

Number

Ratio of total seconds asleep vs. awake.

[].source

String

Source of this sleep record

[].sleepLevelsMap.light.[].startTimeInSeconds

Number

Start Time of this sleep phase in sec

[].sleepLevelsMap.light.[].endTimeInSeconds

Number

End Time of this sleep phase in sec

[].sleepLevelsMap.light.[].duration

Number

Duration of this sleep phase in sec

[].sleepScoreValue

Null

Value 0-100 scoring the sleep

[].sleepScoreQualifier

Null

A human readable qualifier for the sleep score

[].sleepAssessments

Null

The

[].sleepScores

Null

[].timeOffsetSleepRespiration

Null

[].timeOffsetSleepSpo2

Null

[].validation

String

Source of sleep validation

Example Request
GET /v1/users/688d10aa4f18f429c1dca7b3/sleep?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1050

[{"id":"688d10aa4f18f429c1dca7b8","userId":"688d10aa4f18f429c1dca7b3","tags":["REM"],"sleepDay":{"year":2025,"month":8,"day":1},"processingDateTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":26}},"startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":0}},"endTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":45,"second":0}},"summaryId":"abcdefg","calendarDate":"2021-01-01","startTimeInSeconds":1754055600,"startTimeOffsetInSeconds":1754055900,"durationInSeconds":3900,"deepSleepDurationInSeconds":600,"lightSleepDurationInSeconds":600,"awakeDurationInSeconds":600,"validation":"Complex","sleepLevelsMap":{"light":[{"startTimeInSeconds":1,"endTimeInSeconds":2,"duration":1}]},"remSleepSeconds":600,"unmeasurableSeconds":600,"sleepSeconds":3600,"sleepEfficiency":0.98,"source":"Hub","outdated":false,"sleepScoreValue":null,"sleepScoreQualifier":null,"sleepAssessments":null,"sleepScores":null,"timeOffsetSleepRespiration":null,"timeOffsetSleepSpo2":null}]

Stress

Stress values for a user

Note
The result has always a descending sort order.
Table 27. /v1/users/{userId}/stress
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/stress/request-parameters.adoc[]

Table 28. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].startTime.date.day

Number

Day of the start of this bbi record

[].startTime.date.month

Number

Month of the start of this bbi record

[].startTime.date.year

Number

Year of the start of this bbi record

[].startTime.time.hour

Number

Hour of the start of this bbi record

[].startTime.time.minute

Number

Minute of the start of this bbi record

[].startTime.time.second

Number

Second of the start of this bbi record

[].startTimeInSeconds

Number

Timestamp of this record in seconds

[].startTimeOffsetInSeconds

Number

Timezone offset in seconds

[].source

String

Description of the origin of this record

[].stressLevelValue

Number

Stress score

[].averageIntensity

Number

Average stress intensity.

[].bodyBattery

Number

Energy level, value: 0 - 100 or 127 for invalid value.

[].bodyBatteryStatus

Number

Status of the every level

[].calendarDate

String

Calendar date of this record as string

Example Request
GET /v1/users/688d10ac4f18f429c1dca800/stress?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1063

[{"id":"688d10ad4f18f429c1dca805","userId":"688d10ac4f18f429c1dca800","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"startTimeInSeconds":1754055601,"startTimeOffsetInSeconds":0,"calendarDate":"2021-01-01","source":"GARMIN","stressLevelValue":50,"averageIntensity":7,"bodyBattery":48,"bodyBatteryStatus":0},{"id":"688d10ad4f18f429c1dca806","userId":"688d10ac4f18f429c1dca800","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"startTimeInSeconds":1754055602,"startTimeOffsetInSeconds":0,"calendarDate":"2021-01-01","source":"GARMIN","stressLevelValue":60,"averageIntensity":7,"bodyBattery":47,"bodyBatteryStatus":0},{"id":"688d10ad4f18f429c1dca807","userId":"688d10ac4f18f429c1dca800","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"startTimeInSeconds":1754055603,"startTimeOffsetInSeconds":0,"calendarDate":"2021-01-01","source":"GARMIN","stressLevelValue":70,"averageIntensity":7,"bodyBattery":46,"bodyBatteryStatus":0}]

BBI

BBI for a user

Note
The result has always a descending sort order.
Table 29. /v1/users/{userId}/bbi
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/bbi/request-parameters.adoc[]

Table 30. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].userId

String

User identifier

[].startTime.date.day

Number

Day of the start of this bbi record

[].startTime.date.month

Number

Month of the start of this bbi record

[].startTime.date.year

Number

Year of the start of this bbi record

[].startTime.time.hour

Number

Hour of the start of this bbi record

[].startTime.time.minute

Number

Minute of the start of this bbi record

[].startTime.time.second

Number

Second of the start of this bbi record

[].timestamp

Number

Timestamp of this record

[].offsetInSec

Number

Offset of the user timezone in sec

[].status

Null

Confidence Status of the bbi record (only set, if enhanced bbi is available)

[].gapDuration

Null

Gap duration in msec (only set, if enhanced bbi is available and status is Gap)

[].value

Number

BBI value in ms.

Example Request
GET /v1/users/688d10a74f18f429c1dca771/bbi?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 757

[{"id":"688d10a74f18f429c1dca776","userId":"688d10a74f18f429c1dca771","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"offsetInSec":0,"timestamp":1754055601000,"value":300,"status":null,"gapDuration":null},{"id":"688d10a74f18f429c1dca777","userId":"688d10a74f18f429c1dca771","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"offsetInSec":0,"timestamp":1754055602000,"value":400,"status":null,"gapDuration":null},{"id":"688d10a74f18f429c1dca778","userId":"688d10a74f18f429c1dca771","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"offsetInSec":0,"timestamp":1754055603000,"value":500,"status":null,"gapDuration":null}]

RMSSD

Rmssd for a user (Garmin connect only)

Table 31. /v1/users/{userId}/rmssd
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/rmssd/request-parameters.adoc[]

Table 32. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].userId

String

User identifier

[].summaryId

String

Garmin Summary Id

[].calendarDate

String

Calendar date of this record

[].startTimeInSeconds

Number

Timestamp of this record in sec

[].startTimeOffsetInSeconds

Number

Offset of the user timezone in sec

[].value

Number

Rmssd value.

Example Request
GET /v1/users/688d10a74f18f429c1dca77a/rmssd?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 568

[{"id":"688d10a74f18f429c1dca77f","userId":"688d10a74f18f429c1dca77a","summaryId":"ABC","calendarDate":"2021-01-01","startTimeInSeconds":1754055601,"startTimeOffsetInSeconds":0,"value":300},{"id":"688d10a74f18f429c1dca780","userId":"688d10a74f18f429c1dca77a","summaryId":"ABC","calendarDate":"2021-01-01","startTimeInSeconds":1754055602,"startTimeOffsetInSeconds":0,"value":400},{"id":"688d10a74f18f429c1dca781","userId":"688d10a74f18f429c1dca77a","summaryId":"ABC","calendarDate":"2021-01-01","startTimeInSeconds":1754055603,"startTimeOffsetInSeconds":0,"value":500}]

Step Log

Step Log for a user

Note
The result has always a descending sort order.
Table 33. /v1/users/{userId}/stepLog
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/stepLog/request-parameters.adoc[]

Table 34. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp.date.day

Number

Day of the start of this record

[].timestamp.date.month

Number

Month of the start of this record

[].timestamp.date.year

Number

Year of the start of this record

[].timestamp.time.hour

Number

Hour of the start of this record

[].timestamp.time.minute

Number

Minute of the start of this record

[].timestamp.time.second

Number

Second of the start of this record

[].timestampMs

Number

Timestamp of this record in milliseconds

[].offsetInSec

Number

Timezone offset in seconds

[].stepCount

Number

Step count within the last time period

[].totalCount

Number

The total steps of this day.

Example Request
GET /v1/users/688d10ae4f18f429c1dca823/stepLog?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 721

[{"id":"688d10ae4f18f429c1dca828","userId":"688d10ae4f18f429c1dca823","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055601000,"stepCount":10,"totalCount":10,"offsetInSec":0},{"id":"688d10ae4f18f429c1dca829","userId":"688d10ae4f18f429c1dca823","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"timestampMs":1754055602000,"stepCount":20,"totalCount":30,"offsetInSec":0},{"id":"688d10ae4f18f429c1dca82a","userId":"688d10ae4f18f429c1dca823","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"timestampMs":1754055603000,"stepCount":30,"totalCount":60,"offsetInSec":0}]

Respiration

Respiration for a user

Note
The result has always a descending sort order.
Table 35. /v1/users/{userId}/respiration
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/respiration/request-parameters.adoc[]

Table 36. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp.date.day

Number

Day of the start of this record

[].timestamp.date.month

Number

Month of the start of this record

[].timestamp.date.year

Number

Year of the start of this record

[].timestamp.time.hour

Number

Hour of the start of this record

[].timestamp.time.minute

Number

Minute of the start of this record

[].timestamp.time.second

Number

Second of the start of this record

[].timestampMs

Number

Timestamp of this record in milliseconds

[].offsetInSec

Number

Timezone offset in seconds

[].source

String

Description of the origin of this record

[].value

Number

The respiration rate

Example Request
GET /v1/users/688d10a94f18f429c1dca79e/respiration?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 715

[{"id":"688d10a94f18f429c1dca7a3","userId":"688d10a94f18f429c1dca79e","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"source":"TEST","timestampMs":1754055601000,"value":50.0,"offsetInSec":0},{"id":"688d10a94f18f429c1dca7a4","userId":"688d10a94f18f429c1dca79e","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"source":"TEST","timestampMs":1754055602000,"value":60.0,"offsetInSec":0},{"id":"688d10a94f18f429c1dca7a5","userId":"688d10a94f18f429c1dca79e","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"source":"TEST","timestampMs":1754055603000,"value":70.0,"offsetInSec":0}]

VO2 Max

VO2 Max of a user

Note
The result has always a descending sort order.
Table 37. /v1/users/{userId}/vo2max
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/vo2max/request-parameters.adoc[]

Table 38. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp

Number

Timestamp of the start of this record

[].offsetInSec

Number

Timezone offset in seconds

[].vo2Max

Number

the VO2 Max value

[].fitnessAge

Number

The fitness age of the user

Example Request
GET /v1/users/688d10ad4f18f429c1dca809/vo2max?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 418

[{"id":"688d10ad4f18f429c1dca80e","userId":"688d10ad4f18f429c1dca809","timestamp":1754055601,"offsetInSec":0,"vo2Max":41.0,"fitnessAge":21},{"id":"688d10ad4f18f429c1dca80f","userId":"688d10ad4f18f429c1dca809","timestamp":1754055602,"offsetInSec":0,"vo2Max":42.0,"fitnessAge":22},{"id":"688d10ad4f18f429c1dca810","userId":"688d10ad4f18f429c1dca809","timestamp":1754055603,"offsetInSec":0,"vo2Max":43.0,"fitnessAge":23}]

Pulse Ox

Pulse Ox of a user

Note
The result has always a descending sort order.
Table 39. /v1/users/{userId}/pulseOx
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/pulseOx/request-parameters.adoc[]

Table 40. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp.date.day

Number

Day of the start of this record

[].timestamp.date.month

Number

Month of the start of this record

[].timestamp.date.year

Number

Year of the start of this record

[].timestamp.time.hour

Number

Hour of the start of this record

[].timestamp.time.minute

Number

Minute of the start of this record

[].timestamp.time.second

Number

Second of the start of this record

[].timestampMs

Number

Timestamp of this record in milliseconds

[].offsetInSec

Number

Timezone offset in seconds

[].value

Number

The pulse ox value on percent

Example Request
GET /v1/users/688d10a74f18f429c1dca783/pulseOx?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 661

[{"id":"688d10a84f18f429c1dca788","userId":"688d10a74f18f429c1dca783","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055601000,"value":95,"offsetInSec":0},{"id":"688d10a84f18f429c1dca789","userId":"688d10a74f18f429c1dca783","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055602000,"value":96,"offsetInSec":0},{"id":"688d10a84f18f429c1dca78a","userId":"688d10a74f18f429c1dca783","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055603000,"value":97,"offsetInSec":0}]

Wearing Time

Wearing Time of a user

Note
The result has always a descending sort order.
Table 41. /v1/users/{userId}/wearingTime
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/wearingTime/request-parameters.adoc[]

Table 42. Response Object
Path Type Description

userId

String

User identifier

items

Array

Wearing time in minutes of the period

items[].timestampInSec

Number

Timestamp

items[].durationInSec

Number

Total duration of this record

items[].wearingTimeSec

Number

Wearing time of the period in sec

wearingTimeInMinutes

Number

Wearing time in minutes of the period

wearingTimePercentage

Number

Wearing time in percentage of this period

Example Request
GET /v1/users/688d10ac4f18f429c1dca7ea/wearingTime?startDate=2021-01-01&endDate=2021-01-02&resolutionInMin=5 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 39870

{"userId":"688d10ac4f18f429c1dca7ea","wearingTimeInMinutes":20,"wearingTimePercentage":0.006944444444444444,"items":[{"timestampInSec":1609455600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609455900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609456200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609456500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609456800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609457100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609457400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609457700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609458000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609458300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609458600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609458900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609459200,"durationInSec":300,"wearingTimeSec":300},{"timestampInSec":1609459500,"durationInSec":300,"wearingTimeSec":300},{"timestampInSec":1609459800,"durationInSec":300,"wearingTimeSec":300},{"timestampInSec":1609460100,"durationInSec":300,"wearingTimeSec":300},{"timestampInSec":1609460400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609460700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609461000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609461300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609461600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609461900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609462200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609462500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609462800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609463100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609463400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609463700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609464000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609464300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609464600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609464900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609465200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609465500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609465800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609466100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609466400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609466700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609467000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609467300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609467600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609467900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609468200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609468500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609468800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609469100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609469400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609469700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609470000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609470300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609470600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609470900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609471200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609471500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609471800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609472100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609472400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609472700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609473000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609473300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609473600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609473900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609474200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609474500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609474800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609475100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609475400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609475700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609476000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609476300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609476600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609476900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609477200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609477500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609477800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609478100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609478400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609478700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609479000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609479300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609479600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609479900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609480200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609480500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609480800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609481100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609481400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609481700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609482000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609482300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609482600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609482900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609483200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609483500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609483800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609484100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609484400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609484700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609485000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609485300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609485600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609485900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609486200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609486500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609486800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609487100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609487400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609487700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609488000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609488300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609488600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609488900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609489200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609489500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609489800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609490100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609490400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609490700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609491000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609491300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609491600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609491900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609492200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609492500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609492800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609493100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609493400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609493700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609494000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609494300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609494600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609494900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609495200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609495500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609495800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609496100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609496400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609496700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609497000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609497300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609497600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609497900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609498200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609498500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609498800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609499100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609499400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609499700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609500000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609500300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609500600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609500900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609501200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609501500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609501800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609502100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609502400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609502700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609503000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609503300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609503600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609503900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609504200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609504500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609504800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609505100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609505400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609505700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609506000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609506300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609506600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609506900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609507200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609507500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609507800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609508100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609508400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609508700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609509000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609509300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609509600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609509900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609510200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609510500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609510800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609511100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609511400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609511700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609512000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609512300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609512600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609512900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609513200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609513500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609513800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609514100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609514400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609514700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609515000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609515300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609515600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609515900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609516200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609516500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609516800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609517100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609517400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609517700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609518000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609518300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609518600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609518900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609519200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609519500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609519800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609520100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609520400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609520700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609521000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609521300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609521600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609521900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609522200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609522500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609522800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609523100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609523400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609523700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609524000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609524300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609524600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609524900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609525200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609525500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609525800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609526100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609526400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609526700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609527000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609527300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609527600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609527900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609528200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609528500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609528800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609529100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609529400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609529700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609530000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609530300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609530600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609530900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609531200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609531500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609531800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609532100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609532400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609532700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609533000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609533300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609533600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609533900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609534200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609534500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609534800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609535100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609535400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609535700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609536000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609536300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609536600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609536900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609537200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609537500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609537800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609538100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609538400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609538700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609539000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609539300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609539600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609539900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609540200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609540500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609540800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609541100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609541400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609541700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609542000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609542300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609542600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609542900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609543200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609543500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609543800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609544100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609544400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609544700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609545000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609545300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609545600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609545900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609546200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609546500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609546800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609547100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609547400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609547700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609548000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609548300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609548600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609548900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609549200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609549500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609549800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609550100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609550400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609550700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609551000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609551300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609551600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609551900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609552200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609552500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609552800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609553100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609553400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609553700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609554000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609554300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609554600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609554900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609555200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609555500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609555800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609556100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609556400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609556700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609557000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609557300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609557600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609557900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609558200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609558500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609558800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609559100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609559400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609559700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609560000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609560300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609560600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609560900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609561200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609561500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609561800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609562100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609562400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609562700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609563000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609563300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609563600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609563900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609564200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609564500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609564800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609565100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609565400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609565700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609566000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609566300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609566600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609566900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609567200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609567500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609567800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609568100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609568400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609568700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609569000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609569300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609569600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609569900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609570200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609570500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609570800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609571100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609571400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609571700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609572000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609572300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609572600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609572900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609573200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609573500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609573800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609574100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609574400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609574700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609575000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609575300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609575600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609575900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609576200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609576500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609576800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609577100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609577400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609577700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609578000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609578300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609578600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609578900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609579200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609579500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609579800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609580100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609580400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609580700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609581000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609581300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609581600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609581900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609582200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609582500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609582800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609583100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609583400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609583700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609584000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609584300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609584600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609584900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609585200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609585500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609585800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609586100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609586400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609586700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609587000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609587300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609587600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609587900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609588200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609588500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609588800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609589100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609589400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609589700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609590000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609590300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609590600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609590900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609591200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609591500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609591800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609592100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609592400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609592700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609593000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609593300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609593600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609593900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609594200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609594500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609594800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609595100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609595400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609595700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609596000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609596300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609596600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609596900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609597200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609597500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609597800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609598100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609598400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609598700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609599000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609599300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609599600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609599900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609600200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609600500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609600800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609601100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609601400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609601700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609602000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609602300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609602600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609602900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609603200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609603500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609603800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609604100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609604400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609604700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609605000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609605300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609605600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609605900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609606200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609606500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609606800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609607100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609607400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609607700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609608000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609608300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609608600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609608900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609609200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609609500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609609800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609610100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609610400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609610700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609611000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609611300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609611600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609611900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609612200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609612500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609612800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609613100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609613400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609613700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609614000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609614300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609614600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609614900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609615200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609615500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609615800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609616100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609616400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609616700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609617000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609617300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609617600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609617900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609618200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609618500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609618800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609619100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609619400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609619700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609620000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609620300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609620600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609620900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609621200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609621500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609621800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609622100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609622400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609622700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609623000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609623300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609623600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609623900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609624200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609624500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609624800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609625100,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609625400,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609625700,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609626000,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609626300,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609626600,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609626900,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609627200,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609627500,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609627800,"durationInSec":300,"wearingTimeSec":0},{"timestampInSec":1609628100,"durationInSec":300,"wearingTimeSec":0}]}

Research Group-API (Project API)

The Research Group API or Project API gives you access to all data related to research groups. A group contains several users and the methods contained in this section can be used to query fitness and health data of all users belonging to a certain research group

A Research group is also known as a project.

Research Group search can be used to obtain research groups. The id of the research group that is returned in the response can be used to obtain further data with other methods of the Research Group API.

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-search-query/request-parameters.adoc[]

Table 43. Response Object
Path Type Description

[].id

String

Identifier of the research group

[].name

String

Name of research group

[].users

Array

List of users

[].users.[].id

String

Identifier of the user

[].users.[].firstName

String

First name of the user

[].users.[].lastName

String

Last name of the user

[].users.[].profilePicUrl

String

Url to retrieve the user profile picture

[].joinCode

String

Join Code of the group

Example Query Request
GET /v1/researchGroups?query=Group&page=0&size=10 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Query Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 396

[{"id":"688d109b4f18f429c1dca6ba","name":"Group","users":[{"id":"688d109b4f18f429c1dca6b7","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"},{"id":"688d109b4f18f429c1dca6b5","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}],"joinCode":"abcdefg"}]
Simple Paging Example Request
GET /v1/researchGroups?page=0&size=10 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Simple Paging Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 623

[{"id":"688d109b4f18f429c1dca6b9","name":"rg","users":[{"id":"688d109b4f18f429c1dca6b6","firstName":"Dan","lastName":"Donny","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}],"joinCode":null},{"id":"688d109b4f18f429c1dca6ba","name":"Group","users":[{"id":"688d109b4f18f429c1dca6b5","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"},{"id":"688d109b4f18f429c1dca6b7","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}],"joinCode":"abcdefg"}]

Research Group Users (Project Users)

The detailed user information of a certain research group that specified by the user id within the request path.

Table 44. /v1/researchGroups/{researchGroupId}/users
Parameter Description

researchGroupId

Research Group Identifier

Table 45. Response Object
Path Type Description

[].id

String

Identifier of the user

[].firstName

String

First name of the user

[].lastName

String

Last name of the user

[].profilePicUrl

String

Url to retrieve the user profile picture

[].gender

String

'm' for male or 'f' for female

[].country

String

ISO Country code (e.g. DE)

[].city

String

Optional City of the user

[].location

String

Description of the location of a user beside city. E.g. Organization, Room Number,..

[].language

String

ISO Language code (e.g. de)

[].timeZone

String

Time Zone Identifier

[].email

String

Email of the user

[].yearOfBirth

Number

Year of Birth (used for calc. of basal metabolism)

[].imperialUnits

Boolean

true, if imperial units are being used. false for metric

[].height

Number

Height of the user in cm

[].heightUOM

String

Height Unit (cm or in)

[].weight

Number

Weight of the user in kg

[].weightUOM

String

Weight Unit (kg or lbs)

[].basalMetabolism

Number

Basal Metabolism of the user.

[].lastSync

String

Last tracker synchronization

[].trackerName

String

Name of the tracker, the user is currently using

[].deviceId

String

Device Id of the Garmin Device, in case Fitrockr Apps are used

[].deviceAddress

String

Mac Address of the Garmin Device, in case Fitrockr Apps are used

[].customInfo

String

Custom Information of the user

[].dataReceptionBlocked

Boolean

true, if data reception is blocked. false otherwise

[].active

Boolean

True, if the user is connected. Otherwise false

[].usualSleepStartTime

Number

Usual sleep start time (e.g. 2200)

[].usualSleepEndTime

Number

Usual sleep end time (e.g. 0600)

[].lastBatteryPercentage

Number

The last transmitted battery percentage of the user’s device (read-only)

Example Request
GET /v1/researchGroups/688d10984f18f429c1dca673/users HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1348

[{"id":"688d10984f18f429c1dca670","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678","basalMetabolism":1234,"gender":"f","country":"DE","city":"Berlin","language":"de","timeZone":"UTC+1","email":"admin@fitrockr.com","yearOfBirth":1985,"height":180,"heightUOM":"cm","weight":80,"weightUOM":"kg","lastSync":"2020-03-03T23:00:00+0000","customInfo":"InfoFran","deviceId":"DeviceIdFran","deviceAddress":"DeviceAddressFran","trackerName":"Garmin","active":true,"usualSleepStartTime":2200,"usualSleepEndTime":600,"imperialUnits":false,"location":"West","dataReceptionBlocked":false,"lastBatteryPercentage":25},{"id":"688d10984f18f429c1dca66e","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678","basalMetabolism":1234,"gender":"m","country":"DE","city":"Berlin","language":"de","timeZone":"UTC+1","email":"test@fitrockr.com","yearOfBirth":1985,"height":180,"heightUOM":"cm","weight":80,"weightUOM":"kg","lastSync":"2020-03-03T23:00:00+0000","customInfo":"InfoGus","deviceId":"DeviceIdGus","deviceAddress":"DeviceAddressGus","trackerName":"Garmin","active":true,"usualSleepStartTime":2200,"usualSleepEndTime":600,"imperialUnits":false,"location":"Center","dataReceptionBlocked":false,"lastBatteryPercentage":23}]

Add Research Group User (Project Users)

This endpoint adds an existing user to a research group.

Table 46. /v1/researchGroups/{groupId}/users/{userId}
Parameter Description

groupId

Identifier of the research group

userId

Identifier of the user

Response Object

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-user-add/response-fields.adoc[]

Example Request
PUT /v1/researchGroups/688d109c4f18f429c1dca6dc/users/688d109c4f18f429c1dca6d7 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 394

{"id":"688d109c4f18f429c1dca6dc","name":"Group","users":[{"id":"688d109c4f18f429c1dca6d7","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"},{"id":"688d109c4f18f429c1dca6d9","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}],"joinCode":"abcdefg"}

Remove Research Group User (Project Users)

This endpoint removes an existing user from a research group

Table 47. /v1/researchGroups/{groupId}/users/{userId}
Parameter Description

groupId

Identifier of the research group

userId

Identifier of the user

Response Object

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-user-remove/response-fields.adoc[]

Example Request
DELETE /v1/researchGroups/688d109c4f18f429c1dca6dc/users/688d109c4f18f429c1dca6d7 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 239

{"id":"688d109c4f18f429c1dca6dc","name":"Group","users":[{"id":"688d109c4f18f429c1dca6d9","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}],"joinCode":"abcdefg"}

Research Group Profile (Project Details)

The detailed profile of a certain research group that specified by the user id within the request path.

Table 48. /v1/researchGroups/{userId}/profile
Parameter Description

userId

User Identifier

Table 49. Response Object
Path Type Description

id

String

Identifier of the research group

name

String

Name of research group

users

Array

List of users

users.[].id

String

Identifier of the user

users.[].firstName

String

First name of the user

users.[].lastName

String

Last name of the user

users.[].profilePicUrl

String

Url to retrieve the user profile picture

joinCode

String

Join Code of the group

Example Request
GET /v1/researchGroups/688d109b4f18f429c1dca6cb/profile HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 394

{"id":"688d109b4f18f429c1dca6cb","name":"Group","users":[{"id":"688d109b4f18f429c1dca6c6","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"},{"id":"688d109b4f18f429c1dca6c8","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}],"joinCode":"abcdefg"}

Daily Summary

A daily summary contains the daily activity data of a user like total calories, steps, distance and also points. This request can be used to get one or more daily summaries. The date range can be specified by request parameters.

Note
The result has always a descending sort order.
Table 50. /v1/researchGroups/{researchGroupId}/dailySummaries
Parameter Description

researchGroupId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-daily-summary/request-parameters.adoc[]

Table 51. Response Object
Path Type Description

[].userId

String

Identifier of user to which this object belongs

[].date.day

Number

Day of Daily Summary

[].date.month

Number

Month of Daily Summary

[].date.year

Number

Year of Daily Summary

[].points

Number

Points of the user on that day

[].calories

Number

Calories of the user on that day

[].steps

Number

Steps of the user on that day

[].distance

Number

Distance of the user on that day

[].activityMinutes

Number

Activity Minutes of the user on that day

Example Request
GET /v1/researchGroups/688d109c4f18f429c1dca6e3/dailySummaries?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 295

[{"userId":"688d109c4f18f429c1dca6e0","date":{"year":2025,"month":8,"day":2},"points":14,"calories":12,"steps":11,"distance":13,"activityMinutes":15},{"userId":"688d109c4f18f429c1dca6de","date":{"year":2025,"month":8,"day":1},"points":9,"calories":7,"steps":6,"distance":8,"activityMinutes":10}]

Daily Details

Daily Details contains more information on daily base compared to the daily summary.

Note
The result has always a descending sort order.
Table 52. /v1/researchGroups/{researchGroupId}/dailyDetails
Parameter Description

researchGroupId

Identifier of the identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-daily-details/request-parameters.adoc[]

Table 53. Response Object
Path Type Description

[].userId

String

Identifier of user to which this record belongs

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].endTime.date.day

Number

Day of the end of this record

[].endTime.date.month

Number

Month of the end of this record

[].endTime.date.year

Number

Year of the end of this record

[].endTime.time.hour

Number

Hour of the end of this record

[].endTime.time.minute

Number

Minute of the end of this record

[].endTime.time.second

Number

Second of the end of this record

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].durationInSeconds

Number

Duration in seconds

[].activeKilocalories

Number

Active calories within the timeframe of this record

[].distanceInMeters

Number

Distance covered

[].moderateIntensityDurationInSeconds

Number

Cumulative duration of activities of moderate intensity (MET 3-6) lasting at least 600s at a time.

[].vigorousIntensityDurationInSeconds

Number

Cumulative duration of activities of vigorous intensity (MET >6) lasting at least 600s at a time

[].floorsClimbed

Number

Total number of floors climbed

[].averageStressLevel

Number

Average stress level of this period

[].maxStressLevel

Number

Maximum stress level in this period

[].stressDurationInSeconds

Number

Total stress duration in seconds

[].restStressDurationInSeconds

Number

Number of seconds with rest stress

[].activityStressDurationInSeconds

Number

Number of seconds the user was engaged in activity and stress duration was unreliable.

[].lowStressDurationInSeconds

Number

Number of seconds with low stress

[].mediumStressDurationInSeconds

Number

Number of seconds with medium stress

[].highStressDurationInSeconds

Number

Number of seconds with high stress

[].stressQualifier

String

Qualitative stress label. Possible values: unknown, calm, balanced, stressful, very_stressful, calm_awake, balanced_awake, stressful_awake, very_stressful_awake, ..

[].stepsGoal

Number

Step goal of the user

[].netKilocaloriesGoal

Number

calorie goal of the user

[].intensityDurationGoalInSeconds

Number

goal for intensity seconds

[].floorsClimbedGoal

Number

goal for floors climbed

[].minHeartRateInBeatsPerMinute

Number

Minimum heart rate (bpm)

[].avgHeartRateInBeatsPerMinute

Number

Average heart rate (bpm)

[].maxHeartRateInBeatsPerMinute

Number

Maximum heart rate (bpm)

[].restingHeartRateInBeatsPerMinute

Number

Resting heart rate (bpm)

[].summaryId

String

Id of this record

[].activityType

String

Type of activity of this record

[].calendarDate

String

Calendar date

[].steps

Number

Number of steps

Example Request
GET /v1/researchGroups/688d109a4f18f429c1dca6a1/dailyDetails?startDate=2025-07-29&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1077

[{"userId":"688d109a4f18f429c1dca69c","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":19,"minute":8,"second":10}},"endTime":{"date":{"year":2025,"month":7,"day":31},"time":{"hour":19,"minute":8,"second":10}},"summaryId":"1b7105","calendarDate":"2021-01-01","startTimeInSeconds":1753902490,"startTimeOffsetInSeconds":0,"durationInSeconds":3600,"activityType":"WALKING","steps":1024,"activeKilocalories":2048.0,"distanceInMeters":512.0,"moderateIntensityDurationInSeconds":1200,"vigorousIntensityDurationInSeconds":600,"floorsClimbed":5,"minHeartRateInBeatsPerMinute":80,"avgHeartRateInBeatsPerMinute":100,"maxHeartRateInBeatsPerMinute":120,"restingHeartRateInBeatsPerMinute":70,"averageStressLevel":89,"maxStressLevel":100,"stressDurationInSeconds":200,"restStressDurationInSeconds":100,"activityStressDurationInSeconds":10,"lowStressDurationInSeconds":20,"mediumStressDurationInSeconds":30,"highStressDurationInSeconds":40,"stressQualifier":"balanced","stepsGoal":5000,"netKilocaloriesGoal":3000,"intensityDurationGoalInSeconds":360,"floorsClimbedGoal":10}]

Heart Rate

The heart rate values of all users belonging to a given research group

Note
The result has always a descending sort order.
Table 54. /v1/researchGroups/{researchGroupId}/heartRate
Parameter Description

researchGroupId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-heart-rate/request-parameters.adoc[]

Table 55. Response Object
Path Type Description

[].userId

String

Identifier of user to which this record belongs

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].calendarDate

String

Calendar date

[].value

Number

The heart rate value.

Example Request
GET /v1/researchGroups/688d109a4f18f429c1dca696/heartRate?startDate=2025-07-29&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 939

[{"userId":"688d10994f18f429c1dca691","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":19,"minute":8,"second":10}},"calendarDate":"2021-01-01","startTimeInSeconds":1753902490,"startTimeOffsetInSeconds":0,"value":83},{"userId":"688d10994f18f429c1dca691","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":19,"minute":3,"second":10}},"calendarDate":"2021-01-01","startTimeInSeconds":1753902190,"startTimeOffsetInSeconds":0,"value":84},{"userId":"688d109a4f18f429c1dca693","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":18,"minute":58,"second":10}},"calendarDate":"2021-01-01","startTimeInSeconds":1753901890,"startTimeOffsetInSeconds":0,"value":85},{"userId":"688d109a4f18f429c1dca693","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":18,"minute":53,"second":10}},"calendarDate":"2021-01-01","startTimeInSeconds":1753901590,"startTimeOffsetInSeconds":0,"value":86}]

Activities

Activites of all users belonging to a certain research group.

Note
The result has always a descending sort order.
Table 56. /v1/researchGroups/{researchGroupId}/activities
Parameter Description

researchGroupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-activities/request-parameters.adoc[]

Table 57. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].externalId

String

External Id of this activity (optional)

[].source

String

Source that recorded this activity

[].userId

String

Identifier of user to which this activity belongs

[].startDate.date.day

Number

Day of the start of this activity

[].startDate.date.month

Number

Month of the start of this activity

[].startDate.date.year

Number

Year of the start of this activity

[].startDate.time.hour

Number

Hour of the start of this activity

[].startDate.time.minute

Number

Minute of the start of this activity

[].startDate.time.second

Number

Second of the start of this activity

[].endDate.date.day

Number

Day of the end of this activity

[].endDate.date.month

Number

Month of the end of this activity

[].endDate.date.year

Number

Year of the end of this activity

[].endDate.time.hour

Number

Hour of the end of this activity

[].endDate.time.minute

Number

Minute of the end of this activity

[].endDate.time.second

Number

Second of the end of this activity

[].type

String

Type of the activity (e.g., Running, Walking, Rowing,..)

[].rawActivityType

Null

Raw Activity Type from the wearable

[].duration

Number

Duration of activity in seconds

[].amount

Number

Main value of the activity. (e.g. Distance for Walking, Strokes for rowing.)

[].unit

String

Unit for amount.

[].calories

Number

Burned calories.

[].distance

Number

Distance covered during activity

[].steps

Number

Steps taken during activity

Example Request
GET /v1/researchGroups/688d109b4f18f429c1dca6b1/activities?startDate=2025-07-31&endDate=2025-08-03 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 876

[{"id":"688d109b4f18f429c1dca6b3","externalId":"A1235","source":"Fitrockr Hub","userId":"688d109b4f18f429c1dca6ae","startDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":18,"minute":38,"second":11}},"endDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":11}},"type":"Walking","rawActivityType":null,"duration":1800000,"amount":4000,"unit":"Meter","calories":200,"distance":4000.0,"steps":4000},{"id":"688d109b4f18f429c1dca6b2","externalId":"A1234","source":"Fitrockr Hub","userId":"688d109a4f18f429c1dca6ac","startDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":18,"minute":8,"second":11}},"endDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":11}},"type":"Running","rawActivityType":null,"duration":3600000,"amount":9000,"unit":"Meter","calories":400,"distance":9000.0,"steps":8000}]

Intraday

An intraday record contains the recorded data within a day for a certain timeframe. This request can be used to get one or more intraday records. The date range can be specified by request parameters.

Note
The result has always a descending sort order.
Table 58. /v1/researchGroups/{researchGroupId}/intraDays
Parameter Description

researchGroupId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-intra-day/request-parameters.adoc[]

Table 59. Response Object
Path Type Description

[].id

String

Unique Identifier of this intraday record

[].userId

String

Identifier of user to which this record belongs

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].endTime.date.day

Number

Day of the end of this record

[].endTime.date.month

Number

Month of the end of this record

[].endTime.date.year

Number

Year of the end of this record

[].endTime.time.hour

Number

Hour of the end of this record

[].endTime.time.minute

Number

Minute of the end of this record

[].endTime.time.second

Number

Second of the end of this record

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].durationInSeconds

Number

Duration in seconds

[].activeCalories

Number

Active calories within the timeframe of this record

[].distance

Number

Distance covered

[].activeSeconds

Number

Active seconds during the timeframe of this record

[].metValue

Number

Metabolic equivalent of this record

[].intensity

String

Motion intensity category

[].meanMotionIntensity

Number

Mean motion intensity

[].maxMotionIntensity

Number

Maximum motion intensity

[].averageStressLevel

Number

average stress level

[].maxStressLevel

Number

Maximum stress level

[].minHeartRateInBeatsPerMinute

Number

Minimum heart rate (bpm)

[].avgHeartRateInBeatsPerMinute

Number

Average heart rate (bpm)

[].maxHeartRateInBeatsPerMinute

Number

Maximum heart rate (bpm)

[].summaryId

String

Id of this record

[].activityType

String

Type of activity of this record

[].calendarDate

String

Calendar date

[].steps

Number

Number of steps

Example Request
GET /v1/researchGroups/688d109a4f18f429c1dca6a9/intraDays?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 730

[{"id":"688d109a4f18f429c1dca6aa","userId":"688d109a4f18f429c1dca6a4","summaryId":"1b7105","activityType":"SEDENTARY","calendarDate":"2021-01-01","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":0}},"endTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":45,"second":0}},"startTimeInSeconds":1754055600,"startTimeOffsetInSeconds":1754055900,"durationInSeconds":300,"activeCalories":23,"distance":15,"steps":23,"activeSeconds":5,"metValue":1.2,"intensity":"SEDENTARY","meanMotionIntensity":0.73,"maxMotionIntensity":1.3,"averageStressLevel":20,"maxStressLevel":50,"minHeartRateInBeatsPerMinute":70,"avgHeartRateInBeatsPerMinute":90,"maxHeartRateInBeatsPerMinute":120}]

Motion Intensity

This records contains the intensity of the motion that the tracker recorded for a certain timeframe.

Note
The result has always a descending sort order.
Table 60. /v1/researchGroups/{researchGroupId}/motionIntensity
Parameter Description

researchGroupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-motion-intensity/request-parameters.adoc[]

Table 61. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].userId

String

User identifier

[].activityType

String

Activity type detected at the time of the record

[].durationInSeconds

Number

Duration of this record in sec.

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].motionIntensity

Number

Intensity of the motion

Example Request
GET /v1/researchGroups/688d109d4f18f429c1dca6f7/motionIntensity?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 308

[{"id":"688d109d4f18f429c1dca6f8","userId":"688d109d4f18f429c1dca6f2","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":0}},"startTimeInSeconds":1754055600,"startTimeOffsetInSeconds":1754055900,"durationInSeconds":300,"activityType":"GENERIC","motionIntensity":23.4}]

Step Log

Step Log for a all users of a research group

Note
The result has always a descending sort order.
Table 62. /v1/researchGroups/{userId}/stepLog
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-step-log/request-parameters.adoc[]

Table 63. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp.date.day

Number

Day of the start of this record

[].timestamp.date.month

Number

Month of the start of this record

[].timestamp.date.year

Number

Year of the start of this record

[].timestamp.time.hour

Number

Hour of the start of this record

[].timestamp.time.minute

Number

Minute of the start of this record

[].timestamp.time.second

Number

Second of the start of this record

[].timestampMs

Number

Timestamp of this record in milliseconds

[].offsetInSec

Number

Timezone offset in seconds

[].stepCount

Number

Step count within the last time period

[].totalCount

Number

The total steps of this day.

Example Request
GET /v1/researchGroups/688d109d4f18f429c1dca6ed/stepLog?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 721

[{"id":"688d109d4f18f429c1dca6ee","userId":"688d109c4f18f429c1dca6e8","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055601000,"stepCount":10,"totalCount":10,"offsetInSec":0},{"id":"688d109d4f18f429c1dca6ef","userId":"688d109c4f18f429c1dca6e8","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"timestampMs":1754055602000,"stepCount":20,"totalCount":30,"offsetInSec":0},{"id":"688d109d4f18f429c1dca6f0","userId":"688d109d4f18f429c1dca6ea","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"timestampMs":1754055603000,"stepCount":30,"totalCount":60,"offsetInSec":0}]

Sleep

Sleep Records for all users for a research group

Note
The result has always a descending sort order.
Table 64. /v1/researchGroups/{researchGroupId}/sleep
Parameter Description

researchGroupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-sleep/request-parameters.adoc[]

Table 65. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].userId

String

Identifier of user to which this activity belongs

[].tags[]

Array

Tagged, if day sleep, night sleep, nap or rem sleep

[].outdated

Boolean

The sleep was marked as outdated, because of new data received afterwards

[].sleepDay.day

Number

Day, the sleep is assigned to

[].sleepDay.month

Number

Month, the sleep is assigned to

[].sleepDay.year

Number

Year, the sleep is assigned to

[].summaryId

String

Internal summary id of this sleep

[].calendarDate

String

Day, the sleep started

[].processingDateTime.date.day

Number

Day of the processing time of this sleep

[].processingDateTime.date.month

Number

Month of the processing time of this sleep

[].processingDateTime.date.year

Number

Year of the processing time of this sleep

[].processingDateTime.time.hour

Number

Hour of the processing time of this sleep

[].processingDateTime.time.minute

Number

Minute of the processing time of this sleep

[].processingDateTime.time.second

Number

Second of the processing time of this sleep

[].startTime.date.day

Number

Day of the start of this sleep

[].startTime.date.month

Number

Month of the start of this sleep

[].startTime.date.year

Number

Year of the start of this sleep

[].startTime.time.hour

Number

Hour of the start of this sleep

[].startTime.time.minute

Number

Minute of the start of this sleep

[].startTime.time.second

Number

Second of the start of this sleep

[].endTime.date.day

Number

Day of the end of this sleep

[].endTime.date.month

Number

Month of the end of this sleep

[].endTime.date.year

Number

Year of the end of this sleep

[].endTime.time.hour

Number

Hour of the end of this sleep

[].endTime.time.minute

Number

Minute of the end of this sleep

[].endTime.time.second

Number

Second of the end of this sleep

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].durationInSeconds

Number

Duration of this record in sec.

[].deepSleepDurationInSeconds

Number

Sum of deep sleep seconds.

[].lightSleepDurationInSeconds

Number

Sum of light sleep seconds

[].awakeDurationInSeconds

Number

Sum of seconds awake.

[].remSleepSeconds

Number

Sum of rem sleep seconds.

[].unmeasurableSeconds

Number

Sum of seconds not measurable.

[].sleepSeconds

Number

Sum of total seconds asleep.

[].sleepEfficiency

Number

Ratio of total seconds asleep vs. awake.

[].source

String

Source of this sleep record

[].sleepLevelsMap.light.[].startTimeInSeconds

Number

Start Time of this sleep phase in sec

[].sleepLevelsMap.light.[].endTimeInSeconds

Number

End Time of this sleep phase in sec

[].sleepLevelsMap.light.[].duration

Number

Duration of this sleep phase in sec

[].sleepScoreValue

Null

Value 0-100 scoring the sleep

[].sleepScoreQualifier

Null

A human readable qualifier for the sleep score

[].sleepAssessments

Null

The

[].sleepScores

Null

[].timeOffsetSleepRespiration

Null

[].timeOffsetSleepSpo2

Null

[].validation

String

Source of sleep validation

Example Request
GET /v1/researchGroups/688d10994f18f429c1dca68e/sleep?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1049

[{"id":"688d10994f18f429c1dca68f","userId":"688d10994f18f429c1dca689","tags":["REM"],"sleepDay":{"year":2025,"month":8,"day":1},"processingDateTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":9}},"startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":0}},"endTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":45,"second":0}},"summaryId":"abcdefg","calendarDate":"2021-01-01","startTimeInSeconds":1754055600,"startTimeOffsetInSeconds":1754055900,"durationInSeconds":3900,"deepSleepDurationInSeconds":600,"lightSleepDurationInSeconds":600,"awakeDurationInSeconds":600,"validation":"Complex","sleepLevelsMap":{"light":[{"startTimeInSeconds":1,"endTimeInSeconds":2,"duration":1}]},"remSleepSeconds":600,"unmeasurableSeconds":600,"sleepSeconds":3600,"sleepEfficiency":0.98,"source":"Hub","outdated":false,"sleepScoreValue":null,"sleepScoreQualifier":null,"sleepAssessments":null,"sleepScores":null,"timeOffsetSleepRespiration":null,"timeOffsetSleepSpo2":null}]

Stress

Stress values for all users belonging to a research group

Note
The result has always a descending sort order.
Table 66. /v1/researchGroups/{researchGroupId}/stress
Parameter Description

researchGroupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-stress/request-parameters.adoc[]

Table 67. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].startTime.date.day

Number

Day of the start of this bbi record

[].startTime.date.month

Number

Month of the start of this bbi record

[].startTime.date.year

Number

Year of the start of this bbi record

[].startTime.time.hour

Number

Hour of the start of this bbi record

[].startTime.time.minute

Number

Minute of the start of this bbi record

[].startTime.time.second

Number

Second of the start of this bbi record

[].startTimeInSeconds

Number

Timestamp of this record in seconds

[].startTimeOffsetInSeconds

Number

Timezone offset in seconds

[].source

String

Description of the origin of this record

[].stressLevelValue

Number

Stress score

[].averageIntensity

Number

Average stress intensity.

[].bodyBattery

Number

Energy level, value: 0 - 100 or 127 for invalid value.

[].bodyBatteryStatus

Number

Status of the every level

[].calendarDate

String

Calendar date of this record as string

Example Request
GET /v1/researchGroups/688d109b4f18f429c1dca6c1/stress?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1063

[{"id":"688d109b4f18f429c1dca6c2","userId":"688d109b4f18f429c1dca6bc","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"startTimeInSeconds":1754055601,"startTimeOffsetInSeconds":0,"calendarDate":"2021-01-01","source":"GARMIN","stressLevelValue":50,"averageIntensity":7,"bodyBattery":48,"bodyBatteryStatus":0},{"id":"688d109b4f18f429c1dca6c3","userId":"688d109b4f18f429c1dca6bc","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"startTimeInSeconds":1754055602,"startTimeOffsetInSeconds":0,"calendarDate":"2021-01-01","source":"GARMIN","stressLevelValue":60,"averageIntensity":7,"bodyBattery":47,"bodyBatteryStatus":0},{"id":"688d109b4f18f429c1dca6c4","userId":"688d109b4f18f429c1dca6be","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"startTimeInSeconds":1754055603,"startTimeOffsetInSeconds":0,"calendarDate":"2021-01-01","source":"GARMIN","stressLevelValue":70,"averageIntensity":7,"bodyBattery":46,"bodyBatteryStatus":0}]

BBI

BBI for all users of a certain research group

Note
The result has always a descending sort order.
Table 68. /v1/researchGroups/{researchGroupId}/bbi
Parameter Description

researchGroupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-bbi/request-parameters.adoc[]

Table 69. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].userId

String

User identifier

[].startTime.date.day

Number

Day of the start of this bbi record

[].startTime.date.month

Number

Month of the start of this bbi record

[].startTime.date.year

Number

Year of the start of this bbi record

[].startTime.time.hour

Number

Hour of the start of this bbi record

[].startTime.time.minute

Number

Minute of the start of this bbi record

[].startTime.time.second

Number

Second of the start of this bbi record

[].timestamp

Number

Timestamp of this record

[].offsetInSec

Number

Offset of the user timezone in sec

[].status

Null

Confidence Status of the bbi record (only set, if enhanced bbi is available)

[].gapDuration

Null

Gap duration in msec (only set, if enhanced bbi is available and status is Gap)

[].value

Number

BBI value in ms.

Example Request
GET /v1/researchGroups/688d10984f18f429c1dca669/bbi?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 757

[{"id":"688d10984f18f429c1dca66a","userId":"688d10984f18f429c1dca664","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"offsetInSec":0,"timestamp":1754055601000,"value":300,"status":null,"gapDuration":null},{"id":"688d10984f18f429c1dca66b","userId":"688d10984f18f429c1dca664","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"offsetInSec":0,"timestamp":1754055602000,"value":400,"status":null,"gapDuration":null},{"id":"688d10984f18f429c1dca66c","userId":"688d10984f18f429c1dca666","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"offsetInSec":0,"timestamp":1754055603000,"value":500,"status":null,"gapDuration":null}]

Respiration

Respiration for all users contained in research groups

Note
The result has always a descending sort order.
Table 70. /v1/researchGroups/{researchGroupId}/respiration
Parameter Description

researchGroupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-respiration/request-parameters.adoc[]

Table 71. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp.date.day

Number

Day of the start of this record

[].timestamp.date.month

Number

Month of the start of this record

[].timestamp.date.year

Number

Year of the start of this record

[].timestamp.time.hour

Number

Hour of the start of this record

[].timestamp.time.minute

Number

Minute of the start of this record

[].timestamp.time.second

Number

Second of the start of this record

[].timestampMs

Number

Timestamp of this record in milliseconds

[].offsetInSec

Number

Timezone offset in seconds

[].source

String

Description of the origin of this record

[].value

Number

The respiration rate

Example Request
GET /v1/researchGroups/688d10994f18f429c1dca684/respiration?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 715

[{"id":"688d10994f18f429c1dca685","userId":"688d10994f18f429c1dca67f","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"source":"TEST","timestampMs":1754055601000,"value":50.0,"offsetInSec":0},{"id":"688d10994f18f429c1dca686","userId":"688d10994f18f429c1dca67f","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"source":"TEST","timestampMs":1754055602000,"value":60.0,"offsetInSec":0},{"id":"688d10994f18f429c1dca687","userId":"688d10994f18f429c1dca681","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"source":"TEST","timestampMs":1754055603000,"value":70.0,"offsetInSec":0}]

VO2 Max

VO2 Max of all users of research groups

Note
The result has always a descending sort order.
Table 72. /v1/researchGroups/{researchGroupId}/vo2max
Parameter Description

researchGroupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-vo2max/request-parameters.adoc[]

Table 73. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp

Number

Timestamp of the start of this record

[].offsetInSec

Number

Timezone offset in seconds

[].vo2Max

Number

the VO2 Max value

[].fitnessAge

Number

The fitness age of the user

Example Request
GET /v1/researchGroups/688d109c4f18f429c1dca6d2/vo2max?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 418

[{"id":"688d109c4f18f429c1dca6d3","userId":"688d109c4f18f429c1dca6cd","timestamp":1754055601,"offsetInSec":0,"vo2Max":41.0,"fitnessAge":21},{"id":"688d109c4f18f429c1dca6d4","userId":"688d109c4f18f429c1dca6cd","timestamp":1754055602,"offsetInSec":0,"vo2Max":42.0,"fitnessAge":22},{"id":"688d109c4f18f429c1dca6d5","userId":"688d109c4f18f429c1dca6cd","timestamp":1754055603,"offsetInSec":0,"vo2Max":43.0,"fitnessAge":23}]

Pulse Ox

Pulse Ox of all users of research groups

Note
The result has always a descending sort order.
Table 74. /v1/researchGroups/{researchGroupId}/pulseOx
Parameter Description

researchGroupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/research-group-pulse-ox/request-parameters.adoc[]

Table 75. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp.date.day

Number

Day of the start of this record

[].timestamp.date.month

Number

Month of the start of this record

[].timestamp.date.year

Number

Year of the start of this record

[].timestamp.time.hour

Number

Hour of the start of this record

[].timestamp.time.minute

Number

Minute of the start of this record

[].timestamp.time.second

Number

Second of the start of this record

[].timestampMs

Number

Timestamp of this record in milliseconds

[].offsetInSec

Number

Timezone offset in seconds

[].value

Number

The pulse ox value on percent

Example Request
GET /v1/researchGroups/688d10994f18f429c1dca67a/pulseOx?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 661

[{"id":"688d10994f18f429c1dca67b","userId":"688d10994f18f429c1dca675","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055601000,"value":95,"offsetInSec":0},{"id":"688d10994f18f429c1dca67c","userId":"688d10994f18f429c1dca675","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055602000,"value":96,"offsetInSec":0},{"id":"688d10994f18f429c1dca67d","userId":"688d10994f18f429c1dca677","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055603000,"value":97,"offsetInSec":0}]

Group-API

The Group API gives you access to all data related to groups. A group contains several users and can be used to group users within a project

Group search can be used to obtain groups. The id of the group that is returned in the response can be used to obtain further data with other methods of the Group API.
Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-search-query/request-parameters.adoc[]

Table 76. Response Object
Path Type Description

[].id

String

Identifier of the research group

[].name

String

Name of research group

[].owner

Array

List of owner of this group

[].owner.[].id

String

Identifier of the user

[].owner.[].firstName

String

First name of the user

[].owner.[].lastName

String

Last name of the user

[].owner.[].profilePicUrl

String

Url to retrieve the user profile picture

[].members

Array

List of users belonging to this group

[].members.[].id

String

Identifier of the user

[].members.[].firstName

String

First name of the user

[].members.[].lastName

String

Last name of the user

[].members.[].profilePicUrl

String

Url to retrieve the user profile picture

Example Query Request
GET /v1/groups?query=Group HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Query Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 542

[{"id":"688d106f4f18f429c1dca391","name":"Group","owner":[{"id":"688d106f4f18f429c1dca38c","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}],"members":[{"id":"688d106f4f18f429c1dca38e","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"},{"id":"688d106f4f18f429c1dca38c","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}]}]
Simple Paging Example Request
GET /v1/groups HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Simple Paging Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 542

[{"id":"688d106f4f18f429c1dca391","name":"Group","owner":[{"id":"688d106f4f18f429c1dca38c","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}],"members":[{"id":"688d106f4f18f429c1dca38c","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"},{"id":"688d106f4f18f429c1dca38e","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}]}]

Group Users (Project Users)

The detailed user information of a certain group that specified by the user id within the request path.

Table 77. /v1/groups/{groupId}/members
Parameter Description

groupId

Research Group Identifier

Table 78. Response Object
Path Type Description

[].id

String

Identifier of the user

[].firstName

String

First name of the user

[].lastName

String

Last name of the user

[].profilePicUrl

String

Url to retrieve the user profile picture

[].gender

String

'm' for male or 'f' for female

[].country

String

ISO Country code (e.g. DE)

[].city

String

Optional City of the user

[].location

String

Description of the location of a user beside city. E.g. Organization, Room Number,..

[].language

String

ISO Language code (e.g. de)

[].timeZone

String

Time Zone Identifier

[].email

String

Email of the user

[].yearOfBirth

Number

Year of Birth (used for calc. of basal metabolism)

[].imperialUnits

Boolean

true, if imperial units are being used. false for metric

[].height

Number

Height of the user in cm

[].heightUOM

String

Height Unit (cm or in)

[].weight

Number

Weight of the user in kg

[].weightUOM

String

Weight Unit (kg or lbs)

[].basalMetabolism

Number

Basal Metabolism of the user.

[].lastSync

String

Last tracker synchronization

[].trackerName

String

Name of the tracker, the user is currently using

[].deviceId

String

Device Id of the Garmin Device, in case Fitrockr Apps are used

[].deviceAddress

String

Mac Address of the Garmin Device, in case Fitrockr Apps are used

[].customInfo

String

Custom Information of the user

[].dataReceptionBlocked

Boolean

true, if data reception is blocked. false otherwise

[].active

Boolean

True, if the user is connected. Otherwise false

[].usualSleepStartTime

Number

Usual sleep start time (e.g. 2200)

[].usualSleepEndTime

Number

Usual sleep end time (e.g. 0600)

[].lastBatteryPercentage

Number

The last transmitted battery percentage of the user’s device (read-only)

Example Request
GET /v1/groups/688d106b4f18f429c1dca343/members HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1348

[{"id":"688d106b4f18f429c1dca340","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678","basalMetabolism":1234,"gender":"f","country":"DE","city":"Berlin","language":"de","timeZone":"UTC+1","email":"admin@fitrockr.com","yearOfBirth":1985,"height":180,"heightUOM":"cm","weight":80,"weightUOM":"kg","lastSync":"2020-03-03T23:00:00+0000","customInfo":"InfoFran","deviceId":"DeviceIdFran","deviceAddress":"DeviceAddressFran","trackerName":"Garmin","active":true,"usualSleepStartTime":2200,"usualSleepEndTime":600,"imperialUnits":false,"location":"West","dataReceptionBlocked":false,"lastBatteryPercentage":25},{"id":"688d106b4f18f429c1dca33e","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678","basalMetabolism":1234,"gender":"m","country":"DE","city":"Berlin","language":"de","timeZone":"UTC+1","email":"test@fitrockr.com","yearOfBirth":1985,"height":180,"heightUOM":"cm","weight":80,"weightUOM":"kg","lastSync":"2020-03-03T23:00:00+0000","customInfo":"InfoGus","deviceId":"DeviceIdGus","deviceAddress":"DeviceAddressGus","trackerName":"Garmin","active":true,"usualSleepStartTime":2200,"usualSleepEndTime":600,"imperialUnits":false,"location":"Center","dataReceptionBlocked":false,"lastBatteryPercentage":23}]

Add Group User (Project Users)

This endpoint adds an existing user to a group.

Table 79. /v1/groups/{groupId}/members/{userId}
Parameter Description

groupId

Identifier of the research group

userId

Identifier of the user

Response Object

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-user-add/response-fields.adoc[]

Example Request
PUT /v1/groups/688d106c4f18f429c1dca354/members/688d106c4f18f429c1dca34f HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 540

{"id":"688d106c4f18f429c1dca354","name":"Group","owner":[{"id":"688d106c4f18f429c1dca34f","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}],"members":[{"id":"688d106c4f18f429c1dca351","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"},{"id":"688d106c4f18f429c1dca34f","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}]}

Remove Group User (Project Users)

This endpoint removes an existing user from a group

Table 80. /v1/groups/{groupId}/members/{userId}
Parameter Description

groupId

Identifier of the research group

userId

Identifier of the user

Response Object

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-user-remove/response-fields.adoc[]

Example Request
DELETE /v1/groups/688d106c4f18f429c1dca354/members/688d106c4f18f429c1dca34f HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 385

{"id":"688d106c4f18f429c1dca354","name":"Group","owner":[{"id":"688d106c4f18f429c1dca34f","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}],"members":[{"id":"688d106c4f18f429c1dca351","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}]}

Group Profile (Project Details)

The detailed profile of a certain group that specified by the user id within the request path.

Table 81. /v1/groups/{userId}/profile
Parameter Description

userId

User Identifier

Table 82. Response Object
Path Type Description

id

String

Identifier of the research group

name

String

Name of research group

owner

Array

List of owner of this group

owner.[].id

String

Identifier of the user

owner.[].firstName

String

First name of the user

owner.[].lastName

String

Last name of the user

owner.[].profilePicUrl

String

Url to retrieve the user profile picture

members

Array

List of users belonging to this group

members.[].id

String

Identifier of the user

members.[].firstName

String

First name of the user

members.[].lastName

String

Last name of the user

members.[].profilePicUrl

String

Url to retrieve the user profile picture

Example Request
GET /v1/groups/688d10704f18f429c1dca3a2/profile HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 540

{"id":"688d10704f18f429c1dca3a2","name":"Group","owner":[{"id":"688d10704f18f429c1dca39d","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}],"members":[{"id":"688d10704f18f429c1dca39d","firstName":"Gus","lastName":"Ferry","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"},{"id":"688d10704f18f429c1dca39f","firstName":"Francisca","lastName":"Lowe","profilePicUrl":"https://api.fitrockr.com/api/images/userProfile/download/12345678"}]}

Daily Summary

A daily summary contains the daily activity data of a user like total calories, steps, distance and also points. This request can be used to get one or more daily summaries. The date range can be specified by request parameters.

Note
The result has always a descending sort order.
Table 83. /v1/groups/{groupId}/dailySummaries
Parameter Description

groupId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-daily-summary/request-parameters.adoc[]

Table 84. Response Object
Path Type Description

[].userId

String

Identifier of user to which this object belongs

[].date.day

Number

Day of Daily Summary

[].date.month

Number

Month of Daily Summary

[].date.year

Number

Year of Daily Summary

[].points

Number

Points of the user on that day

[].calories

Number

Calories of the user on that day

[].steps

Number

Steps of the user on that day

[].distance

Number

Distance of the user on that day

[].activityMinutes

Number

Activity Minutes of the user on that day

Example Request
GET /v1/groups/688d10714f18f429c1dca3b3/dailySummaries?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 295

[{"userId":"688d10714f18f429c1dca3b0","date":{"year":2025,"month":8,"day":2},"points":14,"calories":12,"steps":11,"distance":13,"activityMinutes":15},{"userId":"688d10704f18f429c1dca3ae","date":{"year":2025,"month":8,"day":1},"points":9,"calories":7,"steps":6,"distance":8,"activityMinutes":10}]

Daily Details

Daily Details contains more information on daily base compared to the daily summary.

Note
The result has always a descending sort order.
Table 85. /v1/groups/{groupId}/dailyDetails
Parameter Description

groupId

Identifier of the identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-daily-details/request-parameters.adoc[]

Table 86. Response Object
Path Type Description

[].userId

String

Identifier of user to which this record belongs

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].endTime.date.day

Number

Day of the end of this record

[].endTime.date.month

Number

Month of the end of this record

[].endTime.date.year

Number

Year of the end of this record

[].endTime.time.hour

Number

Hour of the end of this record

[].endTime.time.minute

Number

Minute of the end of this record

[].endTime.time.second

Number

Second of the end of this record

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].durationInSeconds

Number

Duration in seconds

[].activeKilocalories

Number

Active calories within the timeframe of this record

[].distanceInMeters

Number

Distance covered

[].moderateIntensityDurationInSeconds

Number

Cumulative duration of activities of moderate intensity (MET 3-6) lasting at least 600s at a time.

[].vigorousIntensityDurationInSeconds

Number

Cumulative duration of activities of vigorous intensity (MET >6) lasting at least 600s at a time

[].floorsClimbed

Number

Total number of floors climbed

[].averageStressLevel

Number

Average stress level of this period

[].maxStressLevel

Number

Maximum stress level in this period

[].stressDurationInSeconds

Number

Total stress duration in seconds

[].restStressDurationInSeconds

Number

Number of seconds with rest stress

[].activityStressDurationInSeconds

Number

Number of seconds the user was engaged in activity and stress duration was unreliable.

[].lowStressDurationInSeconds

Number

Number of seconds with low stress

[].mediumStressDurationInSeconds

Number

Number of seconds with medium stress

[].highStressDurationInSeconds

Number

Number of seconds with high stress

[].stressQualifier

String

Qualitative stress label. Possible values: unknown, calm, balanced, stressful, very_stressful, calm_awake, balanced_awake, stressful_awake, very_stressful_awake, ..

[].stepsGoal

Number

Step goal of the user

[].netKilocaloriesGoal

Number

calorie goal of the user

[].intensityDurationGoalInSeconds

Number

goal for intensity seconds

[].floorsClimbedGoal

Number

goal for floors climbed

[].minHeartRateInBeatsPerMinute

Number

Minimum heart rate (bpm)

[].avgHeartRateInBeatsPerMinute

Number

Average heart rate (bpm)

[].maxHeartRateInBeatsPerMinute

Number

Maximum heart rate (bpm)

[].restingHeartRateInBeatsPerMinute

Number

Resting heart rate (bpm)

[].summaryId

String

Id of this record

[].activityType

String

Type of activity of this record

[].calendarDate

String

Calendar date

[].steps

Number

Number of steps

Example Request
GET /v1/groups/688d106e4f18f429c1dca378/dailyDetails?startDate=2025-07-29&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1077

[{"userId":"688d106e4f18f429c1dca373","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":19,"minute":7,"second":26}},"endTime":{"date":{"year":2025,"month":7,"day":31},"time":{"hour":19,"minute":7,"second":26}},"summaryId":"1b7105","calendarDate":"2021-01-01","startTimeInSeconds":1753902446,"startTimeOffsetInSeconds":0,"durationInSeconds":3600,"activityType":"WALKING","steps":1024,"activeKilocalories":2048.0,"distanceInMeters":512.0,"moderateIntensityDurationInSeconds":1200,"vigorousIntensityDurationInSeconds":600,"floorsClimbed":5,"minHeartRateInBeatsPerMinute":80,"avgHeartRateInBeatsPerMinute":100,"maxHeartRateInBeatsPerMinute":120,"restingHeartRateInBeatsPerMinute":70,"averageStressLevel":89,"maxStressLevel":100,"stressDurationInSeconds":200,"restStressDurationInSeconds":100,"activityStressDurationInSeconds":10,"lowStressDurationInSeconds":20,"mediumStressDurationInSeconds":30,"highStressDurationInSeconds":40,"stressQualifier":"balanced","stepsGoal":5000,"netKilocaloriesGoal":3000,"intensityDurationGoalInSeconds":360,"floorsClimbedGoal":10}]

Heart Rate

The heart rate values of all users belonging to a given group

Note
The result has always a descending sort order.
Table 87. /v1/groups/{groupId}/heartRate
Parameter Description

groupId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-heart-rate/request-parameters.adoc[]

Table 88. Response Object
Path Type Description

[].userId

String

Identifier of user to which this record belongs

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].calendarDate

String

Calendar date

[].value

Number

The heart rate value.

Example Request
GET /v1/groups/688d106d4f18f429c1dca36d/heartRate?startDate=2025-07-29&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 939

[{"userId":"688d106d4f18f429c1dca368","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":19,"minute":7,"second":25}},"calendarDate":"2021-01-01","startTimeInSeconds":1753902445,"startTimeOffsetInSeconds":0,"value":83},{"userId":"688d106d4f18f429c1dca368","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":19,"minute":2,"second":25}},"calendarDate":"2021-01-01","startTimeInSeconds":1753902145,"startTimeOffsetInSeconds":0,"value":84},{"userId":"688d106d4f18f429c1dca36a","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":18,"minute":57,"second":25}},"calendarDate":"2021-01-01","startTimeInSeconds":1753901845,"startTimeOffsetInSeconds":0,"value":85},{"userId":"688d106d4f18f429c1dca36a","startTime":{"date":{"year":2025,"month":7,"day":30},"time":{"hour":18,"minute":52,"second":25}},"calendarDate":"2021-01-01","startTimeInSeconds":1753901545,"startTimeOffsetInSeconds":0,"value":86}]

Activities

Activites of all users belonging to a certain group.

Note
The result has always a descending sort order.
Table 89. /v1/groups/{groupId}/activities
Parameter Description

groupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-activities/request-parameters.adoc[]

Table 90. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].externalId

String

External Id of this activity (optional)

[].source

String

Source that recorded this activity

[].userId

String

Identifier of user to which this activity belongs

[].startDate.date.day

Number

Day of the start of this activity

[].startDate.date.month

Number

Month of the start of this activity

[].startDate.date.year

Number

Year of the start of this activity

[].startDate.time.hour

Number

Hour of the start of this activity

[].startDate.time.minute

Number

Minute of the start of this activity

[].startDate.time.second

Number

Second of the start of this activity

[].endDate.date.day

Number

Day of the end of this activity

[].endDate.date.month

Number

Month of the end of this activity

[].endDate.date.year

Number

Year of the end of this activity

[].endDate.time.hour

Number

Hour of the end of this activity

[].endDate.time.minute

Number

Minute of the end of this activity

[].endDate.time.second

Number

Second of the end of this activity

[].type

String

Type of the activity (e.g., Running, Walking, Rowing,..)

[].rawActivityType

Null

Raw Activity Type from the wearable

[].duration

Number

Duration of activity in seconds

[].amount

Number

Main value of the activity. (e.g. Distance for Walking, Strokes for rowing.)

[].unit

String

Unit for amount.

[].calories

Number

Burned calories.

[].distance

Number

Distance covered during activity

[].steps

Number

Steps taken during activity

Example Request
GET /v1/groups/688d106f4f18f429c1dca388/activities?startDate=2025-07-31&endDate=2025-08-03 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 876

[{"id":"688d106f4f18f429c1dca38a","externalId":"A1235","source":"Fitrockr Hub","userId":"688d106f4f18f429c1dca385","startDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":18,"minute":37,"second":27}},"endDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":7,"second":27}},"type":"Walking","rawActivityType":null,"duration":1800000,"amount":4000,"unit":"Meter","calories":200,"distance":4000.0,"steps":4000},{"id":"688d106f4f18f429c1dca389","externalId":"A1234","source":"Fitrockr Hub","userId":"688d106e4f18f429c1dca383","startDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":18,"minute":7,"second":27}},"endDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":7,"second":27}},"type":"Running","rawActivityType":null,"duration":3600000,"amount":9000,"unit":"Meter","calories":400,"distance":9000.0,"steps":8000}]

Intraday

An intraday record contains the recorded data within a day for a certain timeframe. This request can be used to get one or more intraday records. The date range can be specified by request parameters.

Note
The result has always a descending sort order.
Table 91. /v1/groups/{groupId}/intraDays
Parameter Description

groupId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-intra-day/request-parameters.adoc[]

Table 92. Response Object
Path Type Description

[].id

String

Unique Identifier of this intraday record

[].userId

String

Identifier of user to which this record belongs

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].endTime.date.day

Number

Day of the end of this record

[].endTime.date.month

Number

Month of the end of this record

[].endTime.date.year

Number

Year of the end of this record

[].endTime.time.hour

Number

Hour of the end of this record

[].endTime.time.minute

Number

Minute of the end of this record

[].endTime.time.second

Number

Second of the end of this record

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].durationInSeconds

Number

Duration in seconds

[].activeCalories

Number

Active calories within the timeframe of this record

[].distance

Number

Distance covered

[].activeSeconds

Number

Active seconds during the timeframe of this record

[].metValue

Number

Metabolic equivalent of this record

[].intensity

String

Motion intensity category

[].meanMotionIntensity

Number

Mean motion intensity

[].maxMotionIntensity

Number

Maximum motion intensity

[].averageStressLevel

Number

average stress level

[].maxStressLevel

Number

Maximum stress level

[].minHeartRateInBeatsPerMinute

Number

Minimum heart rate (bpm)

[].avgHeartRateInBeatsPerMinute

Number

Average heart rate (bpm)

[].maxHeartRateInBeatsPerMinute

Number

Maximum heart rate (bpm)

[].summaryId

String

Id of this record

[].activityType

String

Type of activity of this record

[].calendarDate

String

Calendar date

[].steps

Number

Number of steps

Example Request
GET /v1/groups/688d106e4f18f429c1dca380/intraDays?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 730

[{"id":"688d106e4f18f429c1dca381","userId":"688d106e4f18f429c1dca37b","summaryId":"1b7105","activityType":"SEDENTARY","calendarDate":"2021-01-01","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":0}},"endTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":45,"second":0}},"startTimeInSeconds":1754055600,"startTimeOffsetInSeconds":1754055900,"durationInSeconds":300,"activeCalories":23,"distance":15,"steps":23,"activeSeconds":5,"metValue":1.2,"intensity":"SEDENTARY","meanMotionIntensity":0.73,"maxMotionIntensity":1.3,"averageStressLevel":20,"maxStressLevel":50,"minHeartRateInBeatsPerMinute":70,"avgHeartRateInBeatsPerMinute":90,"maxHeartRateInBeatsPerMinute":120}]

Motion Intensity

This records contains the intensity of the motion that the tracker recorded for a certain timeframe.

Note
The result has always a descending sort order.
Table 93. /v1/groups/{groupId}/motionIntensity
Parameter Description

groupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-motion-intensity/request-parameters.adoc[]

Table 94. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].userId

String

User identifier

[].activityType

String

Activity type detected at the time of the record

[].durationInSeconds

Number

Duration of this record in sec.

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].startTime.date.day

Number

Day of the start of this record

[].startTime.date.month

Number

Month of the start of this record

[].startTime.date.year

Number

Year of the start of this record

[].startTime.time.hour

Number

Hour of the start of this record

[].startTime.time.minute

Number

Minute of the start of this record

[].startTime.time.second

Number

Second of the start of this record

[].motionIntensity

Number

Intensity of the motion

Example Request
GET /v1/groups/688d10714f18f429c1dca3c7/motionIntensity?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 308

[{"id":"688d10714f18f429c1dca3c8","userId":"688d10714f18f429c1dca3c2","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":0}},"startTimeInSeconds":1754055600,"startTimeOffsetInSeconds":1754055900,"durationInSeconds":300,"activityType":"GENERIC","motionIntensity":23.4}]

Step Log

Step Log for a all users of a group

Note
The result has always a descending sort order.
Table 95. /v1/groups/{userId}/stepLog
Parameter Description

userId

User Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-step-log/request-parameters.adoc[]

Table 96. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp.date.day

Number

Day of the start of this record

[].timestamp.date.month

Number

Month of the start of this record

[].timestamp.date.year

Number

Year of the start of this record

[].timestamp.time.hour

Number

Hour of the start of this record

[].timestamp.time.minute

Number

Minute of the start of this record

[].timestamp.time.second

Number

Second of the start of this record

[].timestampMs

Number

Timestamp of this record in milliseconds

[].offsetInSec

Number

Timezone offset in seconds

[].stepCount

Number

Step count within the last time period

[].totalCount

Number

The total steps of this day.

Example Request
GET /v1/groups/688d10714f18f429c1dca3bd/stepLog?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 721

[{"id":"688d10714f18f429c1dca3be","userId":"688d10714f18f429c1dca3b8","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055601000,"stepCount":10,"totalCount":10,"offsetInSec":0},{"id":"688d10714f18f429c1dca3bf","userId":"688d10714f18f429c1dca3b8","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"timestampMs":1754055602000,"stepCount":20,"totalCount":30,"offsetInSec":0},{"id":"688d10714f18f429c1dca3c0","userId":"688d10714f18f429c1dca3ba","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"timestampMs":1754055603000,"stepCount":30,"totalCount":60,"offsetInSec":0}]

Sleep

Sleep Records for all users for a group

Note
The result has always a descending sort order.
Table 97. /v1/groups/{groupId}/sleep
Parameter Description

groupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-sleep/request-parameters.adoc[]

Table 98. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].userId

String

Identifier of user to which this activity belongs

[].tags[]

Array

Tagged, if day sleep, night sleep, nap or rem sleep

[].outdated

Boolean

The sleep was marked as outdated, because of new data received afterwards

[].sleepDay.day

Number

Day, the sleep is assigned to

[].sleepDay.month

Number

Month, the sleep is assigned to

[].sleepDay.year

Number

Year, the sleep is assigned to

[].summaryId

String

Internal summary id of this sleep

[].calendarDate

String

Day, the sleep started

[].processingDateTime.date.day

Number

Day of the processing time of this sleep

[].processingDateTime.date.month

Number

Month of the processing time of this sleep

[].processingDateTime.date.year

Number

Year of the processing time of this sleep

[].processingDateTime.time.hour

Number

Hour of the processing time of this sleep

[].processingDateTime.time.minute

Number

Minute of the processing time of this sleep

[].processingDateTime.time.second

Number

Second of the processing time of this sleep

[].startTime.date.day

Number

Day of the start of this sleep

[].startTime.date.month

Number

Month of the start of this sleep

[].startTime.date.year

Number

Year of the start of this sleep

[].startTime.time.hour

Number

Hour of the start of this sleep

[].startTime.time.minute

Number

Minute of the start of this sleep

[].startTime.time.second

Number

Second of the start of this sleep

[].endTime.date.day

Number

Day of the end of this sleep

[].endTime.date.month

Number

Month of the end of this sleep

[].endTime.date.year

Number

Year of the end of this sleep

[].endTime.time.hour

Number

Hour of the end of this sleep

[].endTime.time.minute

Number

Minute of the end of this sleep

[].endTime.time.second

Number

Second of the end of this sleep

[].startTimeInSeconds

Number

Start time in seconds since begin of epoc

[].startTimeOffsetInSeconds

Number

Time zone offset in sec. at beginning of record

[].durationInSeconds

Number

Duration of this record in sec.

[].deepSleepDurationInSeconds

Number

Sum of deep sleep seconds.

[].lightSleepDurationInSeconds

Number

Sum of light sleep seconds

[].awakeDurationInSeconds

Number

Sum of seconds awake.

[].remSleepSeconds

Number

Sum of rem sleep seconds.

[].unmeasurableSeconds

Number

Sum of seconds not measurable.

[].sleepSeconds

Number

Sum of total seconds asleep.

[].sleepEfficiency

Number

Ratio of total seconds asleep vs. awake.

[].source

String

Source of this sleep record

[].sleepLevelsMap.light.[].startTimeInSeconds

Number

Start Time of this sleep phase in sec

[].sleepLevelsMap.light.[].endTimeInSeconds

Number

End Time of this sleep phase in sec

[].sleepLevelsMap.light.[].duration

Number

Duration of this sleep phase in sec

[].sleepScoreValue

Null

Value 0-100 scoring the sleep

[].sleepScoreQualifier

Null

A human readable qualifier for the sleep score

[].sleepAssessments

Null

The

[].sleepScores

Null

[].timeOffsetSleepRespiration

Null

[].timeOffsetSleepSpo2

Null

[].validation

String

Source of sleep validation

Example Request
GET /v1/groups/688d106d4f18f429c1dca365/sleep?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1050

[{"id":"688d106d4f18f429c1dca366","userId":"688d106c4f18f429c1dca360","tags":["REM"],"sleepDay":{"year":2025,"month":8,"day":1},"processingDateTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":7,"second":25}},"startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":0}},"endTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":45,"second":0}},"summaryId":"abcdefg","calendarDate":"2021-01-01","startTimeInSeconds":1754055600,"startTimeOffsetInSeconds":1754055900,"durationInSeconds":3900,"deepSleepDurationInSeconds":600,"lightSleepDurationInSeconds":600,"awakeDurationInSeconds":600,"validation":"Complex","sleepLevelsMap":{"light":[{"startTimeInSeconds":1,"endTimeInSeconds":2,"duration":1}]},"remSleepSeconds":600,"unmeasurableSeconds":600,"sleepSeconds":3600,"sleepEfficiency":0.98,"source":"Hub","outdated":false,"sleepScoreValue":null,"sleepScoreQualifier":null,"sleepAssessments":null,"sleepScores":null,"timeOffsetSleepRespiration":null,"timeOffsetSleepSpo2":null}]

Stress

Stress values for all users belonging to a group

Note
The result has always a descending sort order.
Table 99. /v1/groups/{groupId}/stress
Parameter Description

groupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-stress/request-parameters.adoc[]

Table 100. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].startTime.date.day

Number

Day of the start of this bbi record

[].startTime.date.month

Number

Month of the start of this bbi record

[].startTime.date.year

Number

Year of the start of this bbi record

[].startTime.time.hour

Number

Hour of the start of this bbi record

[].startTime.time.minute

Number

Minute of the start of this bbi record

[].startTime.time.second

Number

Second of the start of this bbi record

[].startTimeInSeconds

Number

Timestamp of this record in seconds

[].startTimeOffsetInSeconds

Number

Timezone offset in seconds

[].source

String

Description of the origin of this record

[].stressLevelValue

Number

Stress score

[].averageIntensity

Number

Average stress intensity.

[].bodyBattery

Number

Energy level, value: 0 - 100 or 127 for invalid value.

[].bodyBatteryStatus

Number

Status of the every level

[].calendarDate

String

Calendar date of this record as string

Example Request
GET /v1/groups/688d106f4f18f429c1dca398/stress?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1063

[{"id":"688d106f4f18f429c1dca399","userId":"688d106f4f18f429c1dca393","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"startTimeInSeconds":1754055601,"startTimeOffsetInSeconds":0,"calendarDate":"2021-01-01","source":"GARMIN","stressLevelValue":50,"averageIntensity":7,"bodyBattery":48,"bodyBatteryStatus":0},{"id":"688d106f4f18f429c1dca39a","userId":"688d106f4f18f429c1dca393","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"startTimeInSeconds":1754055602,"startTimeOffsetInSeconds":0,"calendarDate":"2021-01-01","source":"GARMIN","stressLevelValue":60,"averageIntensity":7,"bodyBattery":47,"bodyBatteryStatus":0},{"id":"688d106f4f18f429c1dca39b","userId":"688d106f4f18f429c1dca395","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"startTimeInSeconds":1754055603,"startTimeOffsetInSeconds":0,"calendarDate":"2021-01-01","source":"GARMIN","stressLevelValue":70,"averageIntensity":7,"bodyBattery":46,"bodyBatteryStatus":0}]

BBI

BBI for all users of a certain group

Note
The result has always a descending sort order.
Table 101. /v1/groups/{groupId}/bbi
Parameter Description

groupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-bbi/request-parameters.adoc[]

Table 102. Response Object
Path Type Description

[].id

String

Unique Identifier of this activity

[].userId

String

User identifier

[].startTime.date.day

Number

Day of the start of this bbi record

[].startTime.date.month

Number

Month of the start of this bbi record

[].startTime.date.year

Number

Year of the start of this bbi record

[].startTime.time.hour

Number

Hour of the start of this bbi record

[].startTime.time.minute

Number

Minute of the start of this bbi record

[].startTime.time.second

Number

Second of the start of this bbi record

[].timestamp

Number

Timestamp of this record

[].offsetInSec

Number

Offset of the user timezone in sec

[].status

Null

Confidence Status of the bbi record (only set, if enhanced bbi is available)

[].gapDuration

Null

Gap duration in msec (only set, if enhanced bbi is available and status is Gap)

[].value

Number

BBI value in ms.

Example Request
GET /v1/groups/688d106b4f18f429c1dca339/bbi?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 757

[{"id":"688d106b4f18f429c1dca33a","userId":"688d106a4f18f429c1dca334","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"offsetInSec":0,"timestamp":1754055601000,"value":300,"status":null,"gapDuration":null},{"id":"688d106b4f18f429c1dca33b","userId":"688d106a4f18f429c1dca334","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"offsetInSec":0,"timestamp":1754055602000,"value":400,"status":null,"gapDuration":null},{"id":"688d106b4f18f429c1dca33c","userId":"688d106b4f18f429c1dca336","startTime":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"offsetInSec":0,"timestamp":1754055603000,"value":500,"status":null,"gapDuration":null}]

Respiration

Respiration for all users contained in groups

Note
The result has always a descending sort order.
Table 103. /v1/groups/{groupId}/respiration
Parameter Description

groupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-respiration/request-parameters.adoc[]

Table 104. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp.date.day

Number

Day of the start of this record

[].timestamp.date.month

Number

Month of the start of this record

[].timestamp.date.year

Number

Year of the start of this record

[].timestamp.time.hour

Number

Hour of the start of this record

[].timestamp.time.minute

Number

Minute of the start of this record

[].timestamp.time.second

Number

Second of the start of this record

[].timestampMs

Number

Timestamp of this record in milliseconds

[].offsetInSec

Number

Timezone offset in seconds

[].source

String

Description of the origin of this record

[].value

Number

The respiration rate

Example Request
GET /v1/groups/688d106c4f18f429c1dca35b/respiration?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 715

[{"id":"688d106c4f18f429c1dca35c","userId":"688d106c4f18f429c1dca356","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"source":"TEST","timestampMs":1754055601000,"value":50.0,"offsetInSec":0},{"id":"688d106c4f18f429c1dca35d","userId":"688d106c4f18f429c1dca356","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":2}},"source":"TEST","timestampMs":1754055602000,"value":60.0,"offsetInSec":0},{"id":"688d106c4f18f429c1dca35e","userId":"688d106c4f18f429c1dca358","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":3}},"source":"TEST","timestampMs":1754055603000,"value":70.0,"offsetInSec":0}]

VO2 Max

VO2 Max of all users of groups

Note
The result has always a descending sort order.
Table 105. /v1/groups/{groupId}/vo2max
Parameter Description

groupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-vo2max/request-parameters.adoc[]

Table 106. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp

Number

Timestamp of the start of this record

[].offsetInSec

Number

Timezone offset in seconds

[].vo2Max

Number

the VO2 Max value

[].fitnessAge

Number

The fitness age of the user

Example Request
GET /v1/groups/688d10704f18f429c1dca3a9/vo2max?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 418

[{"id":"688d10704f18f429c1dca3aa","userId":"688d10704f18f429c1dca3a4","timestamp":1754055601,"offsetInSec":0,"vo2Max":41.0,"fitnessAge":21},{"id":"688d10704f18f429c1dca3ab","userId":"688d10704f18f429c1dca3a4","timestamp":1754055602,"offsetInSec":0,"vo2Max":42.0,"fitnessAge":22},{"id":"688d10704f18f429c1dca3ac","userId":"688d10704f18f429c1dca3a4","timestamp":1754055603,"offsetInSec":0,"vo2Max":43.0,"fitnessAge":23}]

Pulse Ox

Pulse Ox of all users of groups

Note
The result has always a descending sort order.
Table 107. /v1/groups/{groupId}/pulseOx
Parameter Description

groupId

Research Group Identifier

Query Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/group-pulse-ox/request-parameters.adoc[]

Table 108. Response Object
Path Type Description

[].id

String

Unique Identifier of this record

[].userId

String

User identifier

[].timestamp.date.day

Number

Day of the start of this record

[].timestamp.date.month

Number

Month of the start of this record

[].timestamp.date.year

Number

Year of the start of this record

[].timestamp.time.hour

Number

Hour of the start of this record

[].timestamp.time.minute

Number

Minute of the start of this record

[].timestamp.time.second

Number

Second of the start of this record

[].timestampMs

Number

Timestamp of this record in milliseconds

[].offsetInSec

Number

Timezone offset in seconds

[].value

Number

The pulse ox value on percent

Example Request
GET /v1/groups/688d106b4f18f429c1dca34a/pulseOx?startDate=2025-08-01&endDate=2025-08-02 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 661

[{"id":"688d106b4f18f429c1dca34b","userId":"688d106b4f18f429c1dca345","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055601000,"value":95,"offsetInSec":0},{"id":"688d106b4f18f429c1dca34c","userId":"688d106b4f18f429c1dca345","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055602000,"value":96,"offsetInSec":0},{"id":"688d106b4f18f429c1dca34d","userId":"688d106b4f18f429c1dca347","timestamp":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":13,"minute":40,"second":1}},"timestampMs":1754055603000,"value":97,"offsetInSec":0}]

Health-Report-API

This api is used to generate health kpi reports for a user and a certain timeframe

All Reports

Get all available health reports

Table 109. Response Object
Path Type Description

[].id

String

Identifier of the report

[].defaultReport

Boolean

true, if this is the default report shown in the ui

[].name

String

Name of the report

Example Request
GET /v1/healthReports HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 110

[{"id":"123","defaultReport":true,"name":"Report 123"},{"id":"234","defaultReport":false,"name":"Report 234"}]

Health Kpi Report

Generate a health kpi report for a certain user and timeframe.

Table 110. /v1/healthReports/{reportId}/{userId}/{start}/{end}
Parameter Description

reportId

The Id of the report templated.

userId

The Id of the user that should be reported.

start

ISO Formatted Start Day of Reporting Period.

end

ISO Formatted End Day of Reporting Period.

Table 111. Response Object
Path Type Description

[].key

Null

Identifier of the kpi group

[].name

String

Name of the kpi group

[].kpis

Array

List of generated kpis

[].kpis.[].key

String

Identifier for a kpi

[].kpis.[].name

String

Human readable name

[].kpis.[].description

String

Optional description of the kpi

[].kpis.[].numericValue

Number

Raw numeric value of the kpi

[].kpis.[].formattedValue

String

Formatted value including unit

[].kpis.[].unit

Null

Unit of kpi, if applicable

[].kpis.[].comparisonNumericValue

Null

Raw numeric value of the comparison period

[].kpis.[].comparisonFormattedValue

Null

Formatted value inclusing unit of the comparison period

[].kpis.[].comparisonDifferencePercentage

Null

Comparison difference in percentage

Example Request
GET /v1/healthReports/123/688d10954f18f429c1dca652/2025-07-29/2025-07-31 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1211

[{"key":null,"name":"Base","kpis":[{"key":"avgCalories","name":"avgCalories","description":"avgCalories","numericValue":3000.0,"formattedValue":"3000","unit":null,"comparisonNumericValue":null,"comparisonFormattedValue":null,"comparisonDifferencePercentage":null},{"key":"avgSteps","name":"avgSteps","description":"avgSteps","numericValue":10000.0,"formattedValue":"10000","unit":null,"comparisonNumericValue":null,"comparisonFormattedValue":null,"comparisonDifferencePercentage":null}]},{"key":null,"name":"Body","kpis":[{"key":"avgBMI","name":"avgBMI","description":"avgBMI","numericValue":15.0,"formattedValue":"15.0","unit":null,"comparisonNumericValue":null,"comparisonFormattedValue":null,"comparisonDifferencePercentage":null},{"key":"avgWeight","name":"avgWeight","description":"avgWeight","numericValue":60.0,"formattedValue":"60.0","unit":null,"comparisonNumericValue":null,"comparisonFormattedValue":null,"comparisonDifferencePercentage":null},{"key":"avgBodyFatPercentage","name":"avgBodyFatPercentage","description":"avgBodyFatPercentage","numericValue":30.0,"formattedValue":"30.0","unit":null,"comparisonNumericValue":null,"comparisonFormattedValue":null,"comparisonDifferencePercentage":null}]}]

Health Kpi Report (PDF)

Generate a health kpi report for a certain user and timeframe and return it as application/pdf

Path Parameters

see Health Kpi Report

Example Request
GET /v1/healthReports/123/612b571f5b5a2c50bf1daa1c/2021-08-26/2021-08-28/pdf HTTP/1.1
Content-Type: application/json
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response

Rendered PDF report.

Health Kpi Comparison Report

Generate a health kpi report for a certain user and timeframe with a comparison period.

Table 112. /v1/healthReports/{reportId}/{userId}/{period1Start}/{period1End}/{period2Start}/{period2End}
Parameter Description

reportId

The Id of the report templated.

userId

The Id of the user that should be reported.

period1Start

ISO Formatted Start Day of first Reporting Period.

period1End

ISO Formatted End Day of first Reporting Period.

period2Start

ISO Formatted Start Day of second Reporting Period.

period2End

ISO Formatted End Day of second Reporting Period.

Table 113. Response Object
Path Type Description

[].key

Null

Identifier of the kpi group

[].name

String

Name of the kpi group

[].kpis

Array

List of generated kpis

[].kpis.[].key

String

Identifier for a kpi

[].kpis.[].name

String

Human readable name

[].kpis.[].description

String

Optional description of the kpi

[].kpis.[].numericValue

Number

Raw numeric value of the kpi

[].kpis.[].formattedValue

String

Formatted value including unit

[].kpis.[].unit

Null

Unit of kpi, if applicable

[].kpis.[].comparisonNumericValue

Number

Raw numeric value of the comparison period

[].kpis.[].comparisonFormattedValue

String

Formatted value inclusing unit of the comparison period

[].kpis.[].comparisonDifferencePercentage

Number

Comparison difference in percentage

Example Request
GET /v1/healthReports/123/688d10934f18f429c1dca62a/2025-07-29/2025-07-29/2025-07-31/2025-07-31 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1230

[{"key":null,"name":"Base","kpis":[{"key":"avgCalories","name":"avgCalories","description":"avgCalories","numericValue":2000.0,"formattedValue":"2000","unit":null,"comparisonNumericValue":4000.0,"comparisonFormattedValue":"4000","comparisonDifferencePercentage":50.0},{"key":"avgSteps","name":"avgSteps","description":"avgSteps","numericValue":10000.0,"formattedValue":"10000","unit":null,"comparisonNumericValue":10000.0,"comparisonFormattedValue":"10000","comparisonDifferencePercentage":0.0}]},{"key":null,"name":"Body","kpis":[{"key":"avgBMI","name":"avgBMI","description":"avgBMI","numericValue":20.0,"formattedValue":"20.0","unit":null,"comparisonNumericValue":10.0,"comparisonFormattedValue":"10.0","comparisonDifferencePercentage":-100.0},{"key":"avgWeight","name":"avgWeight","description":"avgWeight","numericValue":40.0,"formattedValue":"40.0","unit":null,"comparisonNumericValue":80.0,"comparisonFormattedValue":"80.0","comparisonDifferencePercentage":50.0},{"key":"avgBodyFatPercentage","name":"avgBodyFatPercentage","description":"avgBodyFatPercentage","numericValue":40.0,"formattedValue":"40.0","unit":null,"comparisonNumericValue":20.0,"comparisonFormattedValue":"20.0","comparisonDifferencePercentage":-100.0}]}]

Health Kpi Comparison Report (PDF)

Generate a health kpi comparison report for a certain user and timeframe and return it as application/pdf

Path Parameters

see Health Kpi Comparison Report

Example Request
GET /v1/healthReports/123/612b9b32f6ff0d62493fecc4/2021-08-26/2021-08-26/2021-08-28/2021-08-28/pdf HTTP/1.1
Content-Type: application/json
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response

Rendered PDF report.

HRV Export API

Endpoint to generate and download hrv exports

Generate HRV Report

Triggers the creation of an hrv report.

Table 114. Request Object
Path Type Description

userIds

Array

List of user identifiers for generating the report

startTime

Object

Start date of the report

startTime.day

Number

Day of the start date of this export

startTime.month

Number

Month of the start date of this export

startTime.year

Number

Year of the start date of this export

endTime.day

Number

Day of the end date of this export

endTime.month

Number

Month of the end date of this export

endTime.year

Number

Year of the end date of this export

timeZone

String

Time zone of the measurements (e.g. UTC)

measurementTimes[].start.hour

Number

Hour of the start of the measurement period

measurementTimes[].start.minute

Number

Minute of the start of the measurement period

measurementTimes[].start.second

Number

Second of the start of the measurement period

measurementTimes[].end.hour

Number

Hour of the end of the measurement period

measurementTimes[].end.minute

Number

Minute of the end of the measurement period

measurementTimes[].end.second

Number

Second of the end of the measurement period

Table 115. Response Object
Path Type Description

timeZoneOffset

Number

timezone offset in seconds that is used in the report

timeframes[]

Array

Name of this export

hrvData[]

Array

The hrv report

hrvData[].userId

class java.lang.String

id of this user of this report item

hrvData[].userName

class java.lang.String

Name of this user of this report item

hrvData[].measurementDay.day

class java.lang.Integer

Day of this measurement

hrvData[].measurementDay.month

class java.lang.Integer

Month of this measurement

hrvData[].measurementDay.year

class java.lang.Integer

Year of this measurement

hrvData[].measurementList[].day

class java.lang.Long

Day

hrvData[].measurementList[].startTime

class java.lang.Long

Start Time as sec of day

hrvData[].measurementList[].endTime

class java.lang.Long

End Time as sec of day

hrvData[].measurementList[].timeframeAsString

class java.lang.String

Timeframe as String

hrvData[].measurementList[].minBbi

class java.lang.Integer

Minimum BBI Value

hrvData[].measurementList[].avgBbi

class java.lang.Integer

Average BBI Value

hrvData[].measurementList[].maxBbi

class java.lang.Integer

Maximum BBI Value

hrvData[].measurementList[].sdnn

class java.lang.Double

SDNN: Standard deviation of the IBI of normal sinus beats (SDNN)

hrvData[].measurementList[].rmssd

class java.lang.Double

RMSSD: Root mean square of successive RR interval differences

hrvData[].measurementList[].sd1Sd2

class java.lang.Double

SD1/SD2: Ratio of SD1 to SD2

hrvData[].measurementList[].pnn50

class java.lang.Double

PNN50: percentage of successive RR intervals that differ by more than 50 ms

hrvData[].measurementList[].lfHfRatio

class java.lang.Double

LF/HF: Ratio of LF to HF power

hrvData[].measurementList[].vlf

class java.lang.Double

VLF: Power in the very low-frequency range (0.0033 – 0.04 Hz)

hrvData[].measurementList[].lf

class java.lang.Double

LF: Power in the low-frequency range (0.04 – 0.15 Hz)

hrvData[].measurementList[].hf

class java.lang.Double

HF: Power in the high-frequency range (0.15 – 0.4 Hz)

hrvData[].measurementList[].tp

class java.lang.Double

TP: Total Power

Example Request
POST /v1/hrvReport HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Content-Length: 249
Host: localhost:8080

{"startTime":{"year":2020,"month":1,"day":1},"endTime":{"year":2020,"month":1,"day":1},"timeZone":"UTC","userIds":["688d10944f18f429c1dca63b"],"measurementTimes":[{"start":{"hour":0,"minute":0,"second":0},"end":{"hour":23,"minute":59,"second":59}}]}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 477

{"timeZoneOffset":0,"timeframes":["00:00 - 23:00"],"hrvData":[{"userId":"688d10944f18f429c1dca63b","userName":"Gus Ferry","measurementDay":{"year":2020,"month":1,"day":1},"measurementList":[{"day":1577836800,"endTime":86399,"startTime":0,"timeframeAsString":"00:00 - 23:00","minBbi":300,"avgBbi":400,"maxBbi":500,"sdnn":81.64965809277261,"rmssd":81.64965809277261,"sd1Sd2":0.12403473458920847,"pnn50":66.66666666666666,"lfHfRatio":null,"vlf":0.0,"lf":0.0,"hf":0.0,"tp":0.0}]}]}

Challenge API

Endpoint to get data from challenges

Get all challenges

Returns the list of all active and inactive challenges

Table 116. Response Object
Path Type Description

[].id

String

Identifier of this challenge

[].title

String

Title describing the challenge

[].description

Null

Description of the challenge

[].visibleFrom.day

Number

Day when the challenge will be visible to the participants for registration

[].visibleFrom.month

Number

Month when the challenge will be visible to the participants for registration

[].visibleFrom.year

Number

Year when the challenge will be visible to the participants for registration

[].visibleTo.day

Number

Day until when the challenge will be visible to the participants

[].visibleTo.month

Number

Month until when the challenge will be visible to the participants

[].visibleTo.year

Number

Year until when the challenge will be visible to the participants

[].activeFrom.day

Number

Day when the challenge will be started

[].activeFrom.month

Number

Month when the challenge will be started

[].activeFrom.year

Number

Year when the challenge will be started

[].activeTo.day

Number

Day when the challenge will end

[].activeTo.month

Number

Month when the challenge will end

[].activeTo.year

Number

Year when the challenge will end

Example Request
GET /v1/challenges HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 469

[{"id":"123","title":"Challenge 123","description":null,"visibleFrom":{"year":2025,"month":8,"day":1},"visibleTo":{"year":2025,"month":8,"day":1},"activeFrom":{"year":2025,"month":8,"day":1},"activeTo":{"year":2025,"month":8,"day":1}},{"id":"234","title":"Challenge 234","description":null,"visibleFrom":{"year":2025,"month":8,"day":1},"visibleTo":{"year":2025,"month":8,"day":1},"activeFrom":{"year":2025,"month":8,"day":1},"activeTo":{"year":2025,"month":8,"day":1}}]

Get challenge by id

Returns an challenge by id.

Table 117. /v1/challenges/{challengeId}
Parameter Description

challengeId

The id the event

Table 118. Response Object
Path Type Description

id

String

Identifier of this challenge

title

String

Title describing the challenge

description

Null

Description of the challenge

visibleFrom.day

Number

Day when the challenge will be visible to the participants for registration

visibleFrom.month

Number

Month when the challenge will be visible to the participants for registration

visibleFrom.year

Number

Year when the challenge will be visible to the participants for registration

visibleTo.day

Number

Day until when the challenge will be visible to the participants

visibleTo.month

Number

Month until when the challenge will be visible to the participants

visibleTo.year

Number

Year until when the challenge will be visible to the participants

activeFrom.day

Number

Day when the challenge will be started

activeFrom.month

Number

Month when the challenge will be started

activeFrom.year

Number

Year when the challenge will be started

activeTo.day

Number

Day when the challenge will end

activeTo.month

Number

Month when the challenge will end

activeTo.year

Number

Year when the challenge will end

Example Request
GET /v1/challenges/123 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 233

{"id":"123","title":"Challenge 123","description":null,"visibleFrom":{"year":2025,"month":8,"day":1},"visibleTo":{"year":2025,"month":8,"day":1},"activeFrom":{"year":2025,"month":8,"day":1},"activeTo":{"year":2025,"month":8,"day":1}}

Data Export API

Endpoint to generate and download data exports

All User Report

Triggers the creation of an all user report.

Table 119. /v1/standardReports/allUserExport/{exportUserId}
Parameter Description

exportUserId

The Id of user triggered this report

Table 120. Response Object
Path Type Description

id

String

Identifier of the report

exportName

String

Name of this export

exportUserId

String

id of this user that created this export

exportUserName

String

name of the user that created this export

exportCreationDate.date.day

Number

Day of the creation of this export

exportCreationDate.date.month

Number

Month of the creation of this export

exportCreationDate.date.year

Number

Year of the creation of this export

exportCreationDate.time.hour

Number

Hour of the creation of this export

exportCreationDate.time.minute

Number

Minute of the creation of this export

exportCreationDate.time.second

Number

Second of the creation of this export

progressMessage

Null

Current export status as textual message

progress

Number

Number of current data items already exported

total

Number

Number of total data items to be exported

exportUser

Boolean

True, if the user data should be exported.

exportAnalytics

Boolean

True, if the analytics data should be exported.

exportDaily

Boolean

True, if the daily data should be exported.

exportActivity

Boolean

True, if the activity data should be exported.

exportMotionIntensity

Boolean

True, if the motion intensity data should be exported.

exportBbi

Boolean

True, if the bbi data should be exported.

exportRmssd

Boolean

True, if the rmssd data should be exported (Garmin Connect only).

exportSpo2Logging

Boolean

True, if the spo2 logging data should be exported.

exportRespiration

Boolean

True, if the respiration data should be exported.

exportStepLog

Boolean

True, if the step logging data should be exported.

exportZeroCrossing

Boolean

True, if the zero crossing data should be exported.

exportBodyComposition

Boolean

True, if the body composition data should be exported.

exportStress

Boolean

True, if the stress data should be exported.

exportHeartRate

Boolean

True, if the heart rate data should be exported.

exportRestingHeartRate

Boolean

True, if the resting heart rate data should be exported.

exportDailyStepsByDate

Boolean

True, if the daily steps by date data should be exported.

exportEpoc

Boolean

True, if the epoc data should be exported.

exportSleep

Boolean

True, if the sleep data should be exported.

exportVo2Max

Boolean

True, if the vo2 max data should be exported.

exportSpo2

Boolean

True, if the spo2 data should be exported.

exportRawAccelerometer

Boolean

True, if the raw accelerometer data should be exported (JSON only).

exportRawGyroscope

Boolean

True, if the raw gyroscope data should be exported (JSON only).

exportDailyHealthLog

Boolean

True, if the daily health log should be exported.

exportHourlyHealthLog

Boolean

True, if the hourly health log should be exported.

exportDetailedHealthLog

Boolean

True, if the detailed health log should be exported.

format

Null

Export format (json, xslx, csv.zip,..)

startDate

Null

Start date (dd.MM.yyyy) of the exported timeframe

endDate

Null

End date (dd.MM.yyyy) of the exported timeframe

timeZoneCode

Null

Time Zone of the start and end date (used to calculate start and end of day)

status

String

Processing status of the export. Ready, if data is available for downloading. Values could be:<br><ul><li>New - Just created</li><li>Queued - Queued for processing</li><li>Processing - Processing the export</li><li>Error - Failed to generate</li><li>Ready - Ready to download</li><ul>

Example Request
GET /v1/standardReports/allUserExport/688d10944f18f429c1dca644 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1032

{"id":"688d10944f18f429c1dca649","exportName":"All Users Export","exportUserId":"688d10944f18f429c1dca644","exportUserName":"Gus Ferry","exportCreationDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":4}},"progressMessage":null,"progress":0,"total":0,"lastUpdate":null,"allUsers":false,"users":[],"exportUser":false,"exportAnalytics":false,"exportDaily":false,"exportActivity":false,"exportMotionIntensity":false,"exportBbi":false,"exportSpo2Logging":false,"exportRespiration":false,"exportStepLog":false,"exportZeroCrossing":false,"exportBodyComposition":false,"exportStress":false,"exportHeartRate":false,"exportRestingHeartRate":false,"exportDailyStepsByDate":false,"exportEpoc":false,"exportSleep":false,"exportVo2Max":false,"exportSpo2":false,"exportRawAccelerometer":false,"exportRawGyroscope":false,"exportRmssd":false,"exportDailyHealthLog":false,"exportHourlyHealthLog":false,"exportDetailedHealthLog":false,"format":null,"startDate":null,"endDate":null,"status":"New","timeZoneCode":null}

All Data Export

Return a list of all available data exports

Table 121. Response Object
Path Type Description

[].id

String

Identifier of the report

[].exportName

String

Name of this export

[].exportUserId

String

id of this user that created this export

[].exportUserName

String

name of the user that created this export

[].exportCreationDate.date.day

Number

Day of the creation of this export

[].exportCreationDate.date.month

Number

Month of the creation of this export

[].exportCreationDate.date.year

Number

Year of the creation of this export

[].exportCreationDate.time.hour

Number

Hour of the creation of this export

[].exportCreationDate.time.minute

Number

Minute of the creation of this export

[].exportCreationDate.time.second

Number

Second of the creation of this export

[].lastUpdate

Null

Day of the last progress update of this export

[].progressMessage

Null

Current export status as textual message

[].progress

Number

Number of current data items already exported

[].total

Number

Number of total data items to be exported

[].users.[].id

String

Id of the item included in the export

[].users.[].type

String

Type of the item (user, group, research group, team,…​) included in the export

[].users.[].name

String

Name of the item included in the export

[].exportUser

Boolean

True, if the user data should be exported.

[].exportAnalytics

Boolean

True, if the analytics data should be exported.

[].exportDaily

Boolean

True, if the daily data should be exported.

[].exportActivity

Boolean

True, if the activity data should be exported.

[].exportMotionIntensity

Boolean

True, if the motion intensity data should be exported.

[].exportBbi

Boolean

True, if the bbi data should be exported.

[].exportRmssd

Boolean

True, if the rmssd data should be exported (Garmin Connect only).

[].exportSpo2Logging

Boolean

True, if the spo2 logging data should be exported.

[].exportRespiration

Boolean

True, if the respiration data should be exported.

[].exportStepLog

Boolean

True, if the step logging data should be exported.

[].exportZeroCrossing

Boolean

True, if the zero crossing data should be exported.

[].exportBodyComposition

Boolean

True, if the body composition data should be exported.

[].exportStress

Boolean

True, if the stress data should be exported.

[].exportHeartRate

Boolean

True, if the heart rate data should be exported.

[].exportRestingHeartRate

Boolean

True, if the resting heart rate data should be exported.

[].exportDailyStepsByDate

Boolean

True, if the daily steps by date data should be exported.

[].exportEpoc

Boolean

True, if the epoc data should be exported.

[].exportSleep

Boolean

True, if the sleep data should be exported.

[].exportVo2Max

Boolean

True, if the vo2 max data should be exported.

[].exportSpo2

Boolean

True, if the spo2 data should be exported.

[].exportRawAccelerometer

Boolean

True, if the raw accelerometer data should be exported (JSON only).

[].exportRawGyroscope

Boolean

True, if the raw gyroscope data should be exported (JSON only).

[].exportDailyHealthLog

Boolean

True, if the daily health log should be exported.

[].exportHourlyHealthLog

Boolean

True, if the hourly health log should be exported.

[].exportDetailedHealthLog

Boolean

True, if the detailed health log should be exported.

[].format

String

Export format (json, xslx, csv.zip,..)

[].startDate

String

Start date (dd.MM.yyyy) of the exported timeframe

[].endDate

String

End date (dd.MM.yyyy) of the exported timeframe

[].timeZoneCode

Null

Time Zone of the start and end date (used to calculate start and end of day)

[].status

String

Processing status of the export. Ready, if data is available for downloading. Values could be:<br><ul><li>New - Just created</li><li>Queued - Queued for processing</li><li>Processing - Processing the export</li><li>Error - Failed to generate</li><li>Ready - Ready to download</li><ul>

Example Request
GET /v1/dataExports HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 2161

[{"id":"124","exportName":"Report 124","exportUserId":"688d10934f18f429c1dca635","exportUserName":"Gus","exportCreationDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":4}},"progressMessage":null,"progress":0,"total":0,"lastUpdate":null,"allUsers":false,"users":[{"id":"688d10934f18f429c1dca635","type":"user","name":"Gus"}],"exportUser":false,"exportAnalytics":false,"exportDaily":false,"exportActivity":false,"exportMotionIntensity":false,"exportBbi":false,"exportSpo2Logging":false,"exportRespiration":false,"exportStepLog":false,"exportZeroCrossing":false,"exportBodyComposition":false,"exportStress":false,"exportHeartRate":false,"exportRestingHeartRate":false,"exportDailyStepsByDate":false,"exportEpoc":false,"exportSleep":false,"exportVo2Max":false,"exportSpo2":false,"exportRawAccelerometer":false,"exportRawGyroscope":false,"exportRmssd":false,"exportDailyHealthLog":false,"exportHourlyHealthLog":false,"exportDetailedHealthLog":false,"format":"json","startDate":"01.01.2021","endDate":"05.01.2021","status":"Ready","timeZoneCode":null},{"id":"123","exportName":"Report 123","exportUserId":"688d10934f18f429c1dca635","exportUserName":"Gus","exportCreationDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":4}},"progressMessage":null,"progress":0,"total":0,"lastUpdate":null,"allUsers":false,"users":[{"id":"688d10934f18f429c1dca635","type":"user","name":"Gus"}],"exportUser":false,"exportAnalytics":false,"exportDaily":false,"exportActivity":false,"exportMotionIntensity":false,"exportBbi":false,"exportSpo2Logging":false,"exportRespiration":false,"exportStepLog":false,"exportZeroCrossing":false,"exportBodyComposition":false,"exportStress":false,"exportHeartRate":false,"exportRestingHeartRate":false,"exportDailyStepsByDate":false,"exportEpoc":false,"exportSleep":false,"exportVo2Max":false,"exportSpo2":false,"exportRawAccelerometer":false,"exportRawGyroscope":false,"exportRmssd":false,"exportDailyHealthLog":false,"exportHourlyHealthLog":false,"exportDetailedHealthLog":false,"format":"json","startDate":"01.01.2021","endDate":"05.01.2021","status":"Ready","timeZoneCode":null}]

Create Data Export

Method to create a new data export. The report will be generated in background.

Table 122. Request Object
Path Type Description

startDate

String

Start date of the data export (format: dd.MM.yyyy)

endDate

String

End date of the data export (format: dd.MM.yyyy)

timeZoneCode

Null

Time Zone of the start and end date (used to calculate start and end of day)

format

String

Export format: xlsx, csv.zip or json.zip

allUsers

Boolean

Boolean parameter. If set to true, all users will be exported and the users array will be ignored.

users.[].id

String

Id of the item included in the export

users.[].type

String

Type of the item (user, group, research group, team,…​) included in the export

users.[].name

String

Name of the item included in the export

progressMessage

Null

Current export status as textual message

progress

Number

Number of current data items already exported

total

Number

Number of total data items to be exported

exportUserId

String

id of this user who created this export

exportUser

Boolean

True, if the user data should be exported.

exportAnalytics

Boolean

True, if the analytics data should be exported.

exportDaily

Boolean

True, if the daily data should be exported.

exportActivity

Boolean

True, if the activity data should be exported.

exportMotionIntensity

Boolean

True, if the motion intensity data should be exported.

exportBbi

Boolean

True, if the bbi data should be exported.

exportRmssd

Boolean

True, if the rmssd data should be exported (Garmin Connect only).

exportSpo2Logging

Boolean

True, if the spo2 logging data should be exported.

exportRespiration

Boolean

True, if the respiration data should be exported.

exportStepLog

Boolean

True, if the step logging data should be exported.

exportZeroCrossing

Boolean

True, if the zero crossing data should be exported.

exportBodyComposition

Boolean

True, if the body composition data should be exported.

exportStress

Boolean

True, if the stress data should be exported.

exportHeartRate

Boolean

True, if the heart rate data should be exported.

exportRestingHeartRate

Boolean

True, if the resting heart rate data should be exported.

exportDailyStepsByDate

Boolean

True, if the daily steps by date data should be exported.

exportEpoc

Boolean

True, if the epoc data should be exported.

exportSleep

Boolean

True, if the sleep data should be exported.

exportVo2Max

Boolean

True, if the vo2 max data should be exported.

exportSpo2

Boolean

True, if the spo2 data should be exported.

exportRawAccelerometer

Boolean

True, if the raw accelerometer data should be exported (JSON only).

exportRawGyroscope

Boolean

True, if the raw gyroscope data should be exported (JSON only).

exportDailyHealthLog

Boolean

True, if the daily health log should be exported.

exportHourlyHealthLog

Boolean

True, if the hourly health log should be exported.

exportDetailedHealthLog

Boolean

True, if the detailed health log should be exported.

Table 123. Response Object
Path Type Description

id

String

Identifier of the report

exportName

Null

Name of this export

exportUserId

String

id of this user that created this export

exportUserName

String

name of the user that created this export

exportCreationDate.date.day

Number

Day of the creation of this export

exportCreationDate.date.month

Number

Month of the creation of this export

exportCreationDate.date.year

Number

Year of the creation of this export

exportCreationDate.time.hour

Number

Hour of the creation of this export

exportCreationDate.time.minute

Number

Minute of the creation of this export

exportCreationDate.time.second

Number

Second of the creation of this export

users.[].id

String

Id of the item included in the export

users.[].type

String

Type of the item (user, group, research group, team,…​) included in the export

users.[].name

String

Name of the item included in the export

progressMessage

Null

Current export status as textual message

progress

Number

Number of current data items already exported

total

Number

Number of total data items to be exported

exportUser

Boolean

True, if the user data should be exported.

exportAnalytics

Boolean

True, if the analytics data should be exported.

exportDaily

Boolean

True, if the daily data should be exported.

exportActivity

Boolean

True, if the activity data should be exported.

exportMotionIntensity

Boolean

True, if the motion intensity data should be exported.

exportBbi

Boolean

True, if the bbi data should be exported.

exportRmssd

Boolean

True, if the rmssd data should be exported (Garmin Connect only).

exportSpo2Logging

Boolean

True, if the spo2 logging data should be exported.

exportRespiration

Boolean

True, if the respiration data should be exported.

exportStepLog

Boolean

True, if the step logging data should be exported.

exportZeroCrossing

Boolean

True, if the zero crossing data should be exported.

exportBodyComposition

Boolean

True, if the body composition data should be exported.

exportStress

Boolean

True, if the stress data should be exported.

exportHeartRate

Boolean

True, if the heart rate data should be exported.

exportRestingHeartRate

Boolean

True, if the resting heart rate data should be exported.

exportDailyStepsByDate

Boolean

True, if the daily steps by date data should be exported.

exportEpoc

Boolean

True, if the epoc data should be exported.

exportSleep

Boolean

True, if the sleep data should be exported.

exportVo2Max

Boolean

True, if the vo2 max data should be exported.

exportSpo2

Boolean

True, if the spo2 data should be exported.

exportRawAccelerometer

Boolean

True, if the raw accelerometer data should be exported (JSON only).

exportRawGyroscope

Boolean

True, if the raw gyroscope data should be exported (JSON only).

exportDailyHealthLog

Boolean

True, if the daily health log should be exported.

exportHourlyHealthLog

Boolean

True, if the hourly health log should be exported.

exportDetailedHealthLog

Boolean

True, if the detailed health log should be exported.

format

String

Export format (json, xslx,..)

startDate

String

Start date (dd.MM.yyyy) of the exported timeframe

endDate

String

End date (dd.MM.yyyy) of the exported timeframe

timeZoneCode

Null

Time Zone of the start and end date (used to calculate start and end of day)

status

String

Processing status of the export. Ready, if data is available for downloading. Values could be:<br><ul><li>New - Just created</li><li>Queued - Queued for processing</li><li>Processing - Processing the export</li><li>Error - Failed to generate</li><li>Ready - Ready to download</li><ul>

Example Request
POST /v1/dataExports HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Content-Length: 988
Host: localhost:8080

{"id":null,"exportName":null,"exportUserId":"688d10944f18f429c1dca64b","exportUserName":null,"exportCreationDate":null,"progressMessage":null,"progress":0,"total":0,"lastUpdate":null,"allUsers":false,"users":[{"id":"688d10944f18f429c1dca64b","type":"user","name":"Gus"}],"exportUser":false,"exportAnalytics":true,"exportDaily":false,"exportActivity":false,"exportMotionIntensity":false,"exportBbi":false,"exportSpo2Logging":false,"exportRespiration":false,"exportStepLog":false,"exportZeroCrossing":false,"exportBodyComposition":false,"exportStress":false,"exportHeartRate":false,"exportRestingHeartRate":false,"exportDailyStepsByDate":false,"exportEpoc":false,"exportSleep":false,"exportVo2Max":false,"exportSpo2":false,"exportRawAccelerometer":false,"exportRawGyroscope":false,"exportRmssd":false,"exportDailyHealthLog":false,"exportHourlyHealthLog":false,"exportDetailedHealthLog":false,"format":"xlsx","startDate":"01.01.2020","endDate":"31.01.2020","status":null,"timeZoneCode":null}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1095

{"id":"688d10944f18f429c1dca650","exportName":null,"exportUserId":"688d10944f18f429c1dca64b","exportUserName":"Gus Ferry","exportCreationDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":4}},"progressMessage":null,"progress":0,"total":0,"lastUpdate":null,"allUsers":false,"users":[{"id":"688d10944f18f429c1dca64b","type":"user","name":"Gus"}],"exportUser":false,"exportAnalytics":true,"exportDaily":false,"exportActivity":false,"exportMotionIntensity":false,"exportBbi":false,"exportSpo2Logging":false,"exportRespiration":false,"exportStepLog":false,"exportZeroCrossing":false,"exportBodyComposition":false,"exportStress":false,"exportHeartRate":false,"exportRestingHeartRate":false,"exportDailyStepsByDate":false,"exportEpoc":false,"exportSleep":false,"exportVo2Max":false,"exportSpo2":false,"exportRawAccelerometer":false,"exportRawGyroscope":false,"exportRmssd":false,"exportDailyHealthLog":false,"exportHourlyHealthLog":false,"exportDetailedHealthLog":false,"format":"xlsx","startDate":"01.01.2020","endDate":"31.01.2020","status":"New","timeZoneCode":null}

Find Data Export

Find a certain data export by id.

Table 124. /v1/dataExports/{exportConfigurationId}
Parameter Description

exportConfigurationId

The Id of the export configuration

Table 125. Response Object
Path Type Description

id

String

Identifier of the report

exportName

String

Name of this export

exportUserId

String

id of this user that created this export

exportUserName

String

name of the user that created this export

exportCreationDate.date.day

Number

Day of the creation of this export

exportCreationDate.date.month

Number

Month of the creation of this export

exportCreationDate.date.year

Number

Year of the creation of this export

exportCreationDate.time.hour

Number

Hour of the creation of this export

exportCreationDate.time.minute

Number

Minute of the creation of this export

exportCreationDate.time.second

Number

Second of the creation of this export

users.[].id

String

Id of the item included in the export

users.[].type

String

Type of the item (user, group, research group, team,…​) included in the export

users.[].name

String

Name of the item included in the export

progressMessage

Null

Current export status as textual message

progress

Number

Number of current data items already exported

total

Number

Number of total data items to be exported

exportUser

Boolean

True, if the user data should be exported.

exportAnalytics

Boolean

True, if the analytics data should be exported.

exportDaily

Boolean

True, if the daily data should be exported.

exportActivity

Boolean

True, if the activity data should be exported.

exportMotionIntensity

Boolean

True, if the motion intensity data should be exported.

exportBbi

Boolean

True, if the bbi data should be exported.

exportRmssd

Boolean

True, if the rmssd data should be exported (Garmin Connect only).

exportSpo2Logging

Boolean

True, if the spo2 logging data should be exported.

exportRespiration

Boolean

True, if the respiration data should be exported.

exportStepLog

Boolean

True, if the step logging data should be exported.

exportZeroCrossing

Boolean

True, if the zero crossing data should be exported.

exportBodyComposition

Boolean

True, if the body composition data should be exported.

exportStress

Boolean

True, if the stress data should be exported.

exportHeartRate

Boolean

True, if the heart rate data should be exported.

exportRestingHeartRate

Boolean

True, if the resting heart rate data should be exported.

exportDailyStepsByDate

Boolean

True, if the daily steps by date data should be exported.

exportEpoc

Boolean

True, if the epoc data should be exported.

exportSleep

Boolean

True, if the sleep data should be exported.

exportVo2Max

Boolean

True, if the vo2 max data should be exported.

exportSpo2

Boolean

True, if the spo2 data should be exported.

exportRawAccelerometer

Boolean

True, if the raw accelerometer data should be exported (JSON only).

exportRawGyroscope

Boolean

True, if the raw gyroscope data should be exported (JSON only).

exportDailyHealthLog

Boolean

True, if the daily health log should be exported.

exportHourlyHealthLog

Boolean

True, if the hourly health log should be exported.

exportDetailedHealthLog

Boolean

True, if the detailed health log should be exported.

format

String

Export format (json, xslx, csv.zip..)

startDate

String

Start date (dd.MM.yyyy) of the exported timeframe

endDate

String

End date (dd.MM.yyyy) of the exported timeframe

timeZoneCode

Null

Time Zone of the start and end date (used to calculate start and end of day)

status

String

Processing status of the export. Ready, if data is available for downloading. Values could be:<br><ul><li>New - Just created</li><li>Queued - Queued for processing</li><li>Processing - Processing the export</li><li>Error - Failed to generate</li><li>Ready - Ready to download</li><ul>

Example Request
GET /v1/dataExports/123 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1079

{"id":"123","exportName":"Report 123","exportUserId":"688d10934f18f429c1dca624","exportUserName":"Gus","exportCreationDate":{"date":{"year":2025,"month":8,"day":1},"time":{"hour":19,"minute":8,"second":3}},"progressMessage":null,"progress":0,"total":0,"lastUpdate":null,"allUsers":false,"users":[{"id":"688d10934f18f429c1dca624","type":"user","name":"Gus"}],"exportUser":false,"exportAnalytics":false,"exportDaily":false,"exportActivity":false,"exportMotionIntensity":false,"exportBbi":false,"exportSpo2Logging":false,"exportRespiration":false,"exportStepLog":false,"exportZeroCrossing":false,"exportBodyComposition":false,"exportStress":false,"exportHeartRate":false,"exportRestingHeartRate":false,"exportDailyStepsByDate":false,"exportEpoc":false,"exportSleep":false,"exportVo2Max":false,"exportSpo2":false,"exportRawAccelerometer":false,"exportRawGyroscope":false,"exportRmssd":false,"exportDailyHealthLog":false,"exportHourlyHealthLog":false,"exportDetailedHealthLog":false,"format":"json","startDate":"01.01.2021","endDate":"05.01.2021","status":"Ready","timeZoneCode":null}

Delete Data Export

Delete a certain data export by id.

Table 126. /v1/dataExports/{exportConfigurationId}
Parameter Description

exportConfigurationId

The Id of the export configuration

Example Request
DELETE /v1/dataExports/123 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

Download the data export

Important
The export needs to be finished before you can request a download.

Downloads the exported data

Path Parameters

see Find Data Export

Example Request
GET /v1/dataExports/123/download HTTP/1.1
Content-Type: application/json
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response

Rendered PDF report.

Live Data API

Live Control API

The Live control API is used to send commands to the fitrockr cloud. The commands will be forwarded to one or more devices. Basically you can use this api to start or stop the event flow or request information about devices.

Request Device Information (Ping)

Requests a ping from all active devices currently connected to the live queue of this tenant. The result will be delivered via the event stream. The devices will issue a ping event containing the device information

Example Request
GET /v1/live/control/ping HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

Start Stream

Starts the event stream on all devices

Example Request
GET /v1/live/control/start HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

Stop Stream

Stops the event stream on all devices

Example Request
GET /v1/live/control/stop HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

Start Device

Start the event stream on a single device. The device is identified by the mac address.

Table 127. /v1/live/control/start/{macAddress}
Parameter Description

macAddress

The mac address of the tracker that should be started.

Example Request
GET /v1/live/control/start/AA:BB:CC:DD:EE:FF HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

Stop Device

Stop the event stream on a single device. The device is identified by the mac address.

Table 128. /v1/live/control/stop/{macAddress}
Parameter Description

macAddress

The mac address of the tracker that should be stopped.

Example Request
GET /v1/live/control/stop/AA:BB:CC:DD:EE:FF HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

Kill Device

Kill the event stream on a single device. This means that the device disconnects from the live stream. This command is irrevocable. The user has to manually enable the device stream again. The device is identified by the mac address.

Table 129. /v1/live/control/kill/{macAddress}
Parameter Description

macAddress

The mac address of the tracker that should be killed.

Example Request
GET /v1/live/control/kill/AA:BB:CC:DD:EE:FF HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

Live Event Stream

Introduction

The live data API is based on Websockets using STOMP (https://stomp.github.io/) as a protocol. Using this API, you can receive Data from the wearable in real time and realize usecases like live monitoring of Athletes or Patients. The protocol is event based. You listen to a specific topic and whenever data is published to that topic, your endpoint will be informed immediately.

Client libraries for STOMP can be found here: https://stomp.github.io/implementations.html

Authentication

The same credentials as for the regular Rest API can be used. During the connection process, you have to provide your API Key and the Tenant identifier as header parameters (X-API-Key and X-Tenant) to the server.

Using typescript you would use the following connection code providing the credentials:

this.stompClient.connect({'X-API-Key':'<api-key>', 'X-Tenant': '<tenantId>'}, () => {...}});

Available Topics

At the moment, the only available event topic is '/topic/live'. Subscribing to this topic, you would receive live updates of tracker data connected to the backend.

Live Message Data Structure

The body of a message received from the live topic is a live message object consisting of following attributes.

class LiveMessage {
    version: number; // Version of the data that is sent
    tenant: string; // Tenant identifier of that message
    command: string; // An optional command to be executed by the client
    liveData: LiveDataEvent; // Contains the event data
    liveDevice: LiveDevice; // Contains information about the device sending the events (optional)
}

class LiveDataEvent {
    identifier: string; // Unique identifier of this stream (each device sending gets its own unique id)
    tenant: string; // Tenant identifier of this device
    dataType: string; // Identifier for the type of data (see below)
    macAddress: string; // MacAddress of the device posted this data event
    value: number; // Data value
    timestamp: number; // Timestamp in msec
}

// Just issued, if new device is connected or ping was requested
class LiveDevice {
    deviceId: string; // Device identifier (same as the identifier of the live data event
    deviceName: string; // Name of the device (phone or tablet) that is connected to this tracker
    trackerAddress: string; // MacAddress of the tracker
    trackerName: string; // Name of the tracker (e.g. vivosmart4)
    userId: string; //Internal user id assigned to the tracker
    userName: string; //Name of the user assigned to the tracker
    trackerFirmware: string; //Firmware of the tracker
    trackerBattery: string; //Remaining Battery (Percentage)
    active: boolean; //Indicator, if the device is actively sending data
}

Receiving commands

  • Data - A tracker has sent some data. The Live Data Attribute is filled with the data received from the tracker

  • DeviceAdded - A new device was added or a device issued a ping. Live Data attribute is filled with some device information

Data Types

  • STEPS

  • HEART_RATE_VARIABILITY

  • CALORIES

  • ASCENT

  • INTENSITY_MINUTES

  • HEART_RATE

  • STRESS

  • ACCELEROMETER

  • SPO2

  • BODY_BATTERY

  • RESPIRATION

  • ACTIVE_TIME

  • TRAINING_READINESS

  • SDNN - HRV based SDNN Kpi

  • RMSSD - HRV based RMSSD Kpi

  • DEVIATION_LARGER_50_MS - HRV based percentage of deviation larger 50ms between two heart beats

  • SD1_SD2 - HRV based SD1/SD2 Kpi

  • LF_HF_RATIO - HRV based LF/HF Ratio

Sample Application

A typescript sample app is available at: https://gitlab.com/fitrockr/fitrockr-live-api-example. Please reach out to the fitrockr support with your gitlab username to request access to the application.

Live Control API

To be done..

Notifications API

The Notifications API can be used to manage notification objects as well as to trigger immediate notifications transfers.

Send ad-hoc notification

Immediately send an ad-hoc notification to a list of recipients without creating a corresponding notification object first.

Table 130. Request Fields
Path Type Description

title

String

Notification title

body

String

Notification body

linkUrl

String

Optional external link url. Must be used in conjunction with linkDisplayText

linkDisplayText

String

Optional external link text. Must be used in conjunction with linkUrl

recipientUserIds

Array

Identifiers of users to send the notification to

Example Request
POST /v1/notifications/sendAdHoc HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Content-Length: 185
Host: localhost:8080

{"title":"testTitle","body":"testBody","linkUrl":"http://example.org","linkDisplayText":"testLinkDisplayText","recipientUserIds":["688d107e4f18f429c1dca450","688d107e4f18f429c1dca451"]}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

Send notification

Immediately send an existing notification to the configured target users.

Table 131. /v1/notifications/{notificationId}/send
Parameter Description

notificationId

Identifier of the notification to send

Example Request
POST /v1/notifications/688d10874f18f429c1dca519/send HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

Get all notifications

Retrieve all existing notification objects.

Table 132. Response Fields
Path Type Description

[]

Array

List of notifications

[].id

String

Identifier of the notification, automatically generated / read-only

[].title

String

Notification title

[].content

String

Notification content

[].linkUrl

String

Optional external link url. Must be used in conjunction with linkDisplayText

[].linkDisplayText

String

Optional external link text. Must be used in conjunction with linkUrl

[].researchGroupId

String

Identifier of the research group

[].active

Boolean

Active/Inactive switch for the notification

[].participants

Array

List of recipients for the notification

[].participants[].id

String

Identifier of either user, team, league or research group that specifies one or multiple recipients for the notification

[].participants[].type

String

One of 'User', 'Team Members', 'League', 'Research Group'

[].participants[].name

String

Name of the user, team, league or research group

[].notificationHour

Number

Scheduled hour (used for each specified date)

[].notificationDays[]

Array

List of scheduled transfer dates. The notification is sent automatically on each of the configured dates

[].notificationDays[].year

Number

Year-value of a scheduled transfer date

[].notificationDays[].month

Number

Month-value of a scheduled transfer date

[].notificationDays[].day

Number

Day-value of a scheduled transfer date

Example Request
GET /v1/notifications HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 727

[{"id":"688d108f4f18f429c1dca601","title":"title1","content":"content1","linkUrl":"https://linkUrl1.org","linkDisplayText":"linkDisplayText1","researchGroupId":"rg1","active":true,"participants":[{"id":"688d108f4f18f429c1dca5fd","type":"user","name":"Dan"},{"id":"688d108e4f18f429c1dca5fc","type":"user","name":"Gus"}],"notificationDays":[{"year":2025,"month":1,"day":1}],"notificationHour":1},{"id":"688d108f4f18f429c1dca602","title":"title2","content":"content2","linkUrl":null,"linkDisplayText":null,"researchGroupId":"rg2","active":false,"participants":[{"id":"688d108e4f18f429c1dca5fc","type":"user","name":"Gus"}],"notificationDays":[{"year":2025,"month":1,"day":1},{"year":2025,"month":1,"day":2}],"notificationHour":2}]

Create notification

Create a new notification on the platform.

Table 133. Request Fields
Path Type Description

id

Null

Identifier of the notification, automatically generated / read-only

title

String

Notification title

content

String

Notification content

linkUrl

String

Optional external link url. Must be used in conjunction with linkDisplayText

linkDisplayText

String

Optional external link text. Must be used in conjunction with linkUrl

researchGroupId

String

Identifier of the research group

active

Boolean

Active/Inactive switch for the notification

participants

Array

List of recipients for the notification

participants[].id

String

Identifier of either user, team, league or research group that specifies one or multiple recipients for the notification

participants[].type

String

One of 'User', 'Team Members', 'League', 'Research Group'

participants[].name

String

Name of the user, team, league or research group

notificationHour

Number

Scheduled hour (used for each specified date)

notificationDays[]

Array

List of scheduled transfer dates. The notification is sent automatically on each of the configured dates

notificationDays[].year

Number

Year-value of a scheduled transfer date

notificationDays[].month

Number

Month-value of a scheduled transfer date

notificationDays[].day

Number

Day-value of a scheduled transfer date

Table 134. Response Fields
Path Type Description

id

String

Identifier of the notification, automatically generated / read-only

title

String

Notification title

content

String

Notification content

linkUrl

String

Optional external link url. Must be used in conjunction with linkDisplayText

linkDisplayText

String

Optional external link text. Must be used in conjunction with linkUrl

researchGroupId

String

Identifier of the research group

active

Boolean

Active/Inactive switch for the notification

participants

Array

List of recipients for the notification

participants[].id

String

Identifier of either user, team, league or research group that specifies one or multiple recipients for the notification

participants[].type

String

One of 'User', 'Team Members', 'League', 'Research Group'

participants[].name

String

Name of the user, team, league or research group

notificationHour

Number

Scheduled hour (used for each specified date)

notificationDays[]

Array

List of scheduled transfer dates. The notification is sent automatically on each of the configured dates

notificationDays[].year

Number

Year-value of a scheduled transfer date

notificationDays[].month

Number

Month-value of a scheduled transfer date

notificationDays[].day

Number

Day-value of a scheduled transfer date

Example Request
POST /v1/notifications HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Content-Length: 316
Host: localhost:8080

{"id":null,"title":"titleNew","content":"contentNew","linkUrl":"https://urlNew.org","linkDisplayText":"linkDisplayTextNew","researchGroupId":"rg13","active":true,"participants":[{"id":"688d108c4f18f429c1dca5b7","type":"user","name":"Dan"}],"notificationDays":[{"year":2025,"month":1,"day":13}],"notificationHour":13}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 338

{"id":"688d108c4f18f429c1dca5bd","title":"titleNew","content":"contentNew","linkUrl":"https://urlNew.org","linkDisplayText":"linkDisplayTextNew","researchGroupId":"rg13","active":true,"participants":[{"id":"688d108c4f18f429c1dca5b7","type":"user","name":"Dan"}],"notificationDays":[{"year":2025,"month":1,"day":13}],"notificationHour":13}

Replace existing notification

Replace an existing notification on the platform by id.

Table 135. /v1/notifications/{notificationId}
Parameter Description

notificationId

Identifier of the notification to replace

Table 136. Request Fields
Path Type Description

id

Null

Identifier of the notification, automatically generated / read-only

title

String

Notification title

content

String

Notification content

linkUrl

String

Optional external link url. Must be used in conjunction with linkDisplayText

linkDisplayText

String

Optional external link text. Must be used in conjunction with linkUrl

researchGroupId

String

Identifier of the research group

active

Boolean

Active/Inactive switch for the notification

participants

Array

List of recipients for the notification

participants[].id

String

Identifier of either user, team, league or research group that specifies one or multiple recipients for the notification

participants[].type

String

One of 'User', 'Team Members', 'League', 'Research Group'

participants[].name

String

Name of the user, team, league or research group

notificationHour

Number

Scheduled hour (used for each specified date)

notificationDays[]

Array

List of scheduled transfer dates. The notification is sent automatically on each of the configured dates

notificationDays[].year

Number

Year-value of a scheduled transfer date

notificationDays[].month

Number

Month-value of a scheduled transfer date

notificationDays[].day

Number

Day-value of a scheduled transfer date

Table 137. Response Fields
Path Type Description

id

String

Identifier of the notification, automatically generated / read-only

title

String

Notification title

content

String

Notification content

linkUrl

String

Optional external link url. Must be used in conjunction with linkDisplayText

linkDisplayText

String

Optional external link text. Must be used in conjunction with linkUrl

researchGroupId

String

Identifier of the research group

active

Boolean

Active/Inactive switch for the notification

participants

Array

List of recipients for the notification

participants[].id

String

Identifier of either user, team, league or research group that specifies one or multiple recipients for the notification

participants[].type

String

One of 'User', 'Team Members', 'League', 'Research Group'

participants[].name

String

Name of the user, team, league or research group

notificationHour

Number

Scheduled hour (used for each specified date)

notificationDays[]

Array

List of scheduled transfer dates. The notification is sent automatically on each of the configured dates

notificationDays[].year

Number

Year-value of a scheduled transfer date

notificationDays[].month

Number

Month-value of a scheduled transfer date

notificationDays[].day

Number

Day-value of a scheduled transfer date

Example Request
PUT /v1/notifications/688d10864f18f429c1dca511 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Content-Length: 336
Host: localhost:8080

{"id":null,"title":"titleReplaced","content":"contentReplaced","linkUrl":"http://urlReplaced.org","linkDisplayText":"linkDisplayTextReplaced","researchGroupId":"rg14","active":false,"participants":[{"id":"688d10864f18f429c1dca50c","type":"user","name":"Gus"}],"notificationDays":[{"year":2025,"month":1,"day":14}],"notificationHour":14}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 358

{"id":"688d10864f18f429c1dca511","title":"titleReplaced","content":"contentReplaced","linkUrl":"http://urlReplaced.org","linkDisplayText":"linkDisplayTextReplaced","researchGroupId":"rg14","active":false,"participants":[{"id":"688d10864f18f429c1dca50c","type":"user","name":"Gus"}],"notificationDays":[{"year":2025,"month":1,"day":14}],"notificationHour":14}

Delete notification

Delete an existing notification on the platform.

Table 138. /v1/notifications/{notificationId}
Parameter Description

notificationId

Identifier of the notification to delete

Example Request
DELETE /v1/notifications/688d10864f18f429c1dca4ff HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

Surveys API

The Surveys API can be used to retrieve the list of existing surveys and to list details per survey.

Get all surveys

Retrieve all existing survey objects.

Table 139. Response Fields
Path Type Description

[]

Array

List of surveys

[].id

String

Identifier of the survey, automatically generated / read-only

[].name

String

Name of the survey

Example Request
GET /v1/surveys HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 99

[{"id":"688d10a44f18f429c1dca725","name":"name1"},{"id":"688d10a44f18f429c1dca726","name":"name2"}]

Get survey details

Retrieve detail information a list of surveys.

Request Parameters

Unresolved directive in index.adoc - include::/home/runner/work/server/server/build/snippets/get-survey-details/request-parameters.adoc[]

Table 140. Response Fields
Path Type Description

[]

Array

List of detail objects per survey

[].survey

Object

Survey to which this detail entry belongs to

[].survey.id

String

Identifier of the survey, automatically generated / read-only

[].survey.name

String

Name of the survey

[].responses

Array

List of user responses to questions of the survey

[].responses[].questionType

String

Type of the answered question

[].responses[].question

String

Question to which the user answered

[].responses[].userId

String

Id of the user who answered the question

[].responses[].userEmail

String

Email of the user who answered the question

[].responses[].presentationDate

Object

The date on which the question was presented to the user

[].responses[].presentationDate.year

Number

Year-value of the presentation date

[].responses[].presentationDate.month

Number

Month-value of the presentation date

[].responses[].presentationDate.day

Number

Day-value of the presentation date

[].responses[].answerTimestamp

Object

Date and time when the user answered the question

[].responses[].answerTimestamp.date

Object

Date when the user answered the question

[].responses[].answerTimestamp.date.year

Number

Year-value of the answer date

[].responses[].answerTimestamp.date.month

Number

Month-value of the answer date

[].responses[].answerTimestamp.date.day

Number

Day-value of the answer date

[].responses[].answerTimestamp.time

Object

Time when the user answered the question

[].responses[].answerTimestamp.time.hour

Number

Hour-value of the answer time

[].responses[].answerTimestamp.time.minute

Number

Minute-value of the answer time

[].responses[].answerTimestamp.time.second

Number

Second-value of the answer time

[].responses[].answerTimestamp.time.nano

Number

Nano-value of the answer time

[].responses[].answerValues

Array

List of answers provided by the user

Example Request
GET /v1/surveys/details?surveyIds=688d10a54f18f429c1dca745&surveyIds=688d10a54f18f429c1dca746&includeAnswersFrom=2025-01-01&includeAnswersUpTo=2025-01-03 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-Tenant: <tenant-id>
X-API-Key: <api-key>
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 4111

[{"survey":{"id":"688d10a54f18f429c1dca745","name":"name1"},"responses":[{"questionType":"SINGLE_CHOICE","question":"Who was the best captain?","userId":"688d10a54f18f429c1dca740","userEmail":"test@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":1},"answerTimestamp":{"date":{"year":2025,"month":1,"day":1},"time":{"hour":11,"minute":1,"second":10,"nano":0}},"answerValues":["Picard"]},{"questionType":"SINGLE_CHOICE","question":"Who was the best captain?","userId":"688d10a54f18f429c1dca741","userEmail":"test2@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":1},"answerTimestamp":{"date":{"year":2025,"month":1,"day":1},"time":{"hour":11,"minute":2,"second":10,"nano":0}},"answerValues":["Picard"]},{"questionType":"SINGLE_CHOICE","question":"Who was the best captain?","userId":"688d10a54f18f429c1dca740","userEmail":"test@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":2},"answerTimestamp":{"date":{"year":2025,"month":1,"day":2},"time":{"hour":11,"minute":1,"second":20,"nano":0}},"answerValues":["Kirk"]},{"questionType":"SINGLE_CHOICE","question":"Who was the best captain?","userId":"688d10a54f18f429c1dca741","userEmail":"test2@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":2},"answerTimestamp":{"date":{"year":2025,"month":1,"day":2},"time":{"hour":11,"minute":2,"second":20,"nano":0}},"answerValues":["Janeway"]},{"questionType":"MULTIPLE_CHOICE","question":"Which numbers look funny?","userId":"688d10a54f18f429c1dca740","userEmail":"test@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":1},"answerTimestamp":{"date":{"year":2025,"month":1,"day":1},"time":{"hour":12,"minute":1,"second":10,"nano":0}},"answerValues":["1","13","137"]},{"questionType":"MULTIPLE_CHOICE","question":"Which numbers look funny?","userId":"688d10a54f18f429c1dca741","userEmail":"test2@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":1},"answerTimestamp":{"date":{"year":2025,"month":1,"day":1},"time":{"hour":12,"minute":2,"second":10,"nano":0}},"answerValues":["1"]},{"questionType":"MULTIPLE_CHOICE","question":"Which numbers look funny?","userId":"688d10a54f18f429c1dca740","userEmail":"test@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":2},"answerTimestamp":{"date":{"year":2025,"month":1,"day":2},"time":{"hour":12,"minute":1,"second":20,"nano":0}},"answerValues":["13","137"]},{"questionType":"FREE_TEXT","question":"Why is no more cake left?","userId":"688d10a54f18f429c1dca740","userEmail":"test@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":1},"answerTimestamp":{"date":{"year":2025,"month":1,"day":1},"time":{"hour":13,"minute":1,"second":10,"nano":0}},"answerValues":["I ate it"]},{"questionType":"FREE_TEXT","question":"Why is no more cake left?","userId":"688d10a54f18f429c1dca741","userEmail":"test2@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":1},"answerTimestamp":{"date":{"year":2025,"month":1,"day":1},"time":{"hour":13,"minute":2,"second":10,"nano":0}},"answerValues":["I ate it"]},{"questionType":"FREE_TEXT","question":"Why is no more cake left?","userId":"688d10a54f18f429c1dca740","userEmail":"test@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":2},"answerTimestamp":{"date":{"year":2025,"month":1,"day":2},"time":{"hour":13,"minute":1,"second":20,"nano":0}},"answerValues":["It was stolen"]},{"questionType":"FREE_TEXT","question":"Why is no more cake left?","userId":"688d10a54f18f429c1dca741","userEmail":"test2@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":2},"answerTimestamp":{"date":{"year":2025,"month":1,"day":2},"time":{"hour":13,"minute":2,"second":20,"nano":0}},"answerValues":["I ate it"]}]},{"survey":{"id":"688d10a54f18f429c1dca746","name":"name2"},"responses":[{"questionType":"SINGLE_CHOICE","question":"When will New Year\u0027s eve be this year?","userId":"688d10a54f18f429c1dca740","userEmail":"test@fitrockr.com","presentationDate":{"year":2025,"month":1,"day":3},"answerTimestamp":{"date":{"year":2025,"month":1,"day":3},"time":{"hour":14,"minute":1,"second":30,"nano":0}},"answerValues":["Around Christmas"]}]}]