TeamPro API v1.1.0
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
Polar TeamPro API documentation
Base URL: https://teampro.api.polar.com/
Email: Support
Web: Support
License: License Agreement
How to get started?
- Go to https://admin.polaraccesslink.com/ and log in using your existing Polar credentials, or register new Polar account
- Fill your application/service information
- Data subscriptions can be left empty for Polar Team Pro API
- After client is created, remember to write down the OAuth2 client id and secret
- Start developing the API
Go to: https://admin.polaraccesslink.com/ and start the process.
Request rate limiting
The requests are rate limited per authenticated client.
The API will return Http Status Code 429
(TOO_MANY_REQUESTS), when rate limit has been reached.
The rate limit is basically allowing 1 request per second speed. There is also a "burst bucket" with maximum of 100 requests to fill up when doing more requests at higher than 1 per second interval. The "burst bucket" will then slowly diminish back to empty when requests are coming in with less than 1 per second interval, therefore allowing another burst to happen if required.
Authorization
The basic Polar OAuth2 flow for Polar Team Pro API:
- End user (team coach) is re-directed from client app to Polar OAuth2 authorization endpoint in https://auth.polar.com
- End user grants partner the right to access team data and team member's exercise data.
- End user is redirected back to client app and with authorization code as part of the request
- Client uses the authorization code to get refresh and access token from https://auth.polar.com
Authorization endpoint
To get a user authorization code, redirect user to the following address (HTTP GET):
https://auth.polar.com/oauth/authorize?client_id={ClientID}&response_type=code&scope=team_read
Parameters:
- client_id (Required): Client id.
- response_type (Required): code for code grant
- scope (Required): Requested scope or comma separated list of scopes.
Currently only
team_read
is supported. - redirect_uri (Optional): Redirect URI used by the client. When given, must be identical to the one given during registration
- state (Optional): An opaque value used by the client to maintain state between the request and callback. The authorization server includes this value when redirecting the user-agent back to the client.
On success, user will be shown the authorization form. After granting authorization, user will be redirected to redirect_uri given during client registration process. Authorization code will be provided as a parameter.
Examples:
- http://www.random.redirect.does.not.ex.ist/products/list?product_id=332211&state=yourState&code=71682f9544255285736fb6d2d8acb6cf
- http://www.another.redirect.does.not.ex.ist?code=71682f9544255285736fb6d2d8acb6cf
If an error occurs, user will be redirected to location defined in default redirect_uri with error code included. Example:
- http://www.another.redirect.does.not.ex.ist?error=invalid_scope&state=yourState
Token endpoint
To exchange the authorization code to an access / refresh token, send POST request to:
https://auth.polar.com/oauth/token
With the authorization code, an access token can be requested by posting the authorization code to the token endpoint.
The access token is valid for 12 hours. A refresh token must be used to get new access token.
Request headers
- Authorization : Basic auth with base64 encoded string client_id:client_secret. For example,
if your client id is
12345
and client secret isverySecret
, then you need to base64 encode string12345:verySecret
, resultingMTIzNDU6dmVyeVNlY3JldA==
. Value of the authorization header in that case should beBasic MTIzNDU6dmVyeVNlY3JldA==
- Content-Type :
application/x-www-form-urlencoded
Response JSON object
{
"access_token": "<access token value>",
"token_type": "bearer",
"refresh_token": "<refresh token value>",
"expires_in": 43199,
"scope": "team_read",
"jti": "2dede3ca-0b04-4e41-b655-752dcd979713"
}
Request POST data
Name | Required | Description |
---|---|---|
grant_type | true | authorization_code for authorization code flow, refresh_token for refresh token flow |
code | true | Authorization code received from authorization endpoint (only for authorization code flow) |
refresh_token | true | Refresh token value (only for refresh token flow) |
redirect_uri | false | Note: must be specified if redirect_uri was passed to authorization endpoint |
Team
Endpoints for getting teams and team details.
Get teams.
Code samples
# You can also use wget
curl -X GET https://teampro.api.polar.com/v1/teams \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET https://teampro.api.polar.com/v1/teams HTTP/1.1
Host: teampro.api.polar.com
Accept: application/json
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json', 'Authorization':'Bearer {access-token}'
};
fetch('https://teampro.api.polar.com/v1/teams',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get 'https://teampro.api.polar.com/v1/teams',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://teampro.api.polar.com/v1/teams', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://teampro.api.polar.com/v1/teams");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
GET /v1/teams
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
pagination | query | paginationQuery | false | Pagination parameters |
Example responses
200 Response
{
"data": [
{
"id": "wMYz6L4w",
"name": "Team1",
"organisation": "Organisation1",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z"
}
],
"page": {
"per_page": 20,
"total_elements": 2,
"page_number": 0,
"total_pages": 1
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | List of teams. | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | [team] | false | none | List of teams. |
»» id | string | false | none | Team id |
»» name | string | false | none | Team name |
»» organisation | string | false | none | Organisation name |
»» created | string(date-time) | false | none | Time when the team is created |
»» modified | string(date-time) | false | none | Last time modified |
» page | paginationResponse | false | none | Pagination info in response. Model contains info about response element count and paging. |
»» per_page | integer | false | none | Items per page |
»» total_elements | integer | false | none | Total number of items |
»» page_number | integer | false | none | Number of the current page |
»» total_pages | integer | false | none | Total number of pages |
Get team details.
Code samples
# You can also use wget
curl -X GET https://teampro.api.polar.com/v1/teams/{team_id} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET https://teampro.api.polar.com/v1/teams/{team_id} HTTP/1.1
Host: teampro.api.polar.com
Accept: application/json
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json', 'Authorization':'Bearer {access-token}'
};
fetch('https://teampro.api.polar.com/v1/teams/{team_id}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get 'https://teampro.api.polar.com/v1/teams/{team_id}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://teampro.api.polar.com/v1/teams/{team_id}', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://teampro.api.polar.com/v1/teams/{team_id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
GET /v1/teams/{team_id}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
team_id | path | string | true | Team id to get. |
Example responses
200 Response
{
"data": {
"id": "wMYz6L4w",
"name": "Team1",
"organisation": "Organisation1",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"players": [
{
"player_id": "ZmozZxkr",
"player_number": 12,
"role": "Midfielder",
"first_name": "John",
"last_name": "Doe"
}
]
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Response containing team details. | Inline |
404 | Not Found | Given team_id doesn't match any of user's teams. | None |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | teamDetails | false | none | Detailed team data. |
»» id | string | false | none | Team id |
»» name | string | false | none | Team name |
»» organisation | string | false | none | Organisation name |
»» created | string(date-time) | false | none | Time when the team is created |
»» modified | string(date-time) | false | none | Last time modified |
»» players | [player] | false | none | Team players |
»»» player_id | string | false | none | Player id |
»»» player_number | integer(int32) | false | none | Player number |
»»» role | string | false | none | Player role |
»»» first_name | string | false | none | Player first name |
»»» last_name | string | false | none | Player last name |
Team training sessions
Endpoints for getting team training sessions and details.
Get team training sessions.
Code samples
# You can also use wget
curl -X GET https://teampro.api.polar.com/v1/teams/{team_id}/training_sessions \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET https://teampro.api.polar.com/v1/teams/{team_id}/training_sessions HTTP/1.1
Host: teampro.api.polar.com
Accept: application/json
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json', 'Authorization':'Bearer {access-token}'
};
fetch('https://teampro.api.polar.com/v1/teams/{team_id}/training_sessions',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get 'https://teampro.api.polar.com/v1/teams/{team_id}/training_sessions',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://teampro.api.polar.com/v1/teams/{team_id}/training_sessions', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://teampro.api.polar.com/v1/teams/{team_id}/training_sessions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
GET /v1/teams/{team_id}/training_sessions
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
team_id | path | string | true | Team whose training session are returned. |
since | query | string(date-time) | false | Return training sessions having record_start_time greater than |
until | query | string(date-time) | false | Return training sessions having record_start_time less than |
pagination | query | paginationQuery | false | Pagination parameters |
Example responses
200 Response
{
"data": [
{
"id": "R8rMB4j7",
"team_id": "wMYz6L4w",
"name": "Match against Brazil national team",
"type": "MATCH",
"note": "Game started very well, but we lost 0-8",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"record_start_time": "2017-04-14T09:17:22",
"record_end_time": "2017-04-14T09:56:47",
"start_time": "2017-04-14T09:20:06",
"end_time": "2017-04-14T09:50:06",
"latitude": 55.67336654663086,
"longitude": 12.49395084381104,
"sport": "SOCCER"
}
],
"page": {
"per_page": 20,
"total_elements": 2,
"page_number": 0,
"total_pages": 1
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Teams training sessions. | Inline |
404 | Not Found | Given team_id doesn't match any of users's teams. | None |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | [trainingSession] | false | none | List of team training sessions. |
»» id | string | false | none | Training session id |
»» team_id | string | false | none | Team id |
»» name | string | false | none | Training session name |
»» type | string | false | none | Training session type |
»» note | string | false | none | Notes from training session |
»» created | string(date-time) | false | none | Time when the training session is created |
»» modified | string(date-time) | false | none | Last time modified |
»» record_start_time | string(date-time) | false | none | Training session record start time |
»» record_end_time | string(date-time) | false | none | Training session record end time |
»» start_time | string(date-time) | false | none | Training session start time |
»» end_time | string(date-time) | false | none | Training session end time |
»» latitude | number | false | none | Start latitude of the training session |
»» longitude | number | false | none | Start longitude of the training session |
»» sport | string | false | none | Sport type |
» page | paginationResponse | false | none | Pagination info in response. Model contains info about response element count and paging. |
»» per_page | integer | false | none | Items per page |
»» total_elements | integer | false | none | Total number of items |
»» page_number | integer | false | none | Number of the current page |
»» total_pages | integer | false | none | Total number of pages |
Enumerated Values
Property | Value |
---|---|
type | TRAINING |
type | DRILL |
type | TEST |
type | GAME |
type | MATCH |
type | STRENGTH AND CONDITION |
type | OTHER |
Get team training session details.
Code samples
# You can also use wget
curl -X GET https://teampro.api.polar.com/v1/teams/training_sessions/{training_session_id} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET https://teampro.api.polar.com/v1/teams/training_sessions/{training_session_id} HTTP/1.1
Host: teampro.api.polar.com
Accept: application/json
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json', 'Authorization':'Bearer {access-token}'
};
fetch('https://teampro.api.polar.com/v1/teams/training_sessions/{training_session_id}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get 'https://teampro.api.polar.com/v1/teams/training_sessions/{training_session_id}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://teampro.api.polar.com/v1/teams/training_sessions/{training_session_id}', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://teampro.api.polar.com/v1/teams/training_sessions/{training_session_id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
GET /v1/teams/training_sessions/{training_session_id}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
training_session_id | path | string | true | Training session id. |
Example responses
200 Response
{
"data": {
"id": "R8rMB4j7",
"team_id": "wMYz6L4w",
"name": "Match against Brazil national team",
"type": "MATCH",
"note": "Game started very well, but we lost 0-8",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"record_start_time": "2017-04-14T09:17:22",
"record_end_time": "2017-04-14T09:56:47",
"start_time": "2017-04-14T09:20:06",
"end_time": "2017-04-14T09:50:06",
"latitude": 55.67336654663086,
"longitude": 12.49395084381104,
"sport": "SOCCER",
"arena": "Valby old stadium Denmark",
"participants": [
{
"player_id": "ZmozZxkr",
"player_number": 12,
"role": "Midfielder",
"player_session_id": "wp9DQ9ln"
}
],
"markers": [
{
"start_time": "2020-08-24T10:28:43.464Z",
"end_time": "2020-08-24T10:28:43.464Z",
"marker_type": "PHASE",
"name": "Intervals",
"note": "Cooling down"
}
]
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Training session details as JSON. | Inline |
404 | Not Found | Given training_session_id doesn't match any of user's training sessions. | None |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | trainingSessionDetails | false | none | Team training session details. |
»» id | string | false | none | Training session id |
»» team_id | string | false | none | Team id |
»» name | string | false | none | Training session name |
»» type | string | false | none | Training session type |
»» note | string | false | none | Notes from training session |
»» created | string(date-time) | false | none | Time when the training session is created |
»» modified | string(date-time) | false | none | Last time modified |
»» record_start_time | string(date-time) | false | none | Training session record start time |
»» record_end_time | string(date-time) | false | none | Training session record end time |
»» start_time | string(date-time) | false | none | Training session start time |
»» end_time | string(date-time) | false | none | Training session end time |
»» latitude | number | false | none | Start latitude of the training session |
»» longitude | number | false | none | Start longitude of the training session |
»» sport | string | false | none | Sport type |
»» arena | string | false | none | Game arena |
»» participants | [participant] | false | none | [Training session participant.] |
»»» player_id | string | false | none | Player id |
»»» player_number | integer(int32) | false | none | Player number |
»»» role | string | false | none | Player role |
»»» player_session_id | string | false | none | Player training session id |
»» markers | [marker] | false | none | [Training session marker.i] |
»»» start_time | string(date-time) | false | none | Start time of the marker |
»»» end_time | string(date-time) | false | none | End time of the marker |
»»» marker_type | string | false | none | Marker type |
»»» name | string | false | none | Marker name |
»»» note | string | false | none | Marker note |
Enumerated Values
Property | Value |
---|---|
marker_type | PHASE |
marker_type | NOTE |
marker_type | RECOVERY |
Player training sessions
Endpoints for getting players training session and details.
Get player training sessions.
Code samples
# You can also use wget
curl -X GET https://teampro.api.polar.com/v1/players/{player_id}/training_sessions \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET https://teampro.api.polar.com/v1/players/{player_id}/training_sessions HTTP/1.1
Host: teampro.api.polar.com
Accept: application/json
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json', 'Authorization':'Bearer {access-token}'
};
fetch('https://teampro.api.polar.com/v1/players/{player_id}/training_sessions',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get 'https://teampro.api.polar.com/v1/players/{player_id}/training_sessions',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://teampro.api.polar.com/v1/players/{player_id}/training_sessions', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://teampro.api.polar.com/v1/players/{player_id}/training_sessions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
GET /v1/players/{player_id}/training_sessions
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
player_id | path | string | true | Player id |
since | query | string(date-time) | false | Return training sessions having record_start_time greater than |
until | query | string(date-time) | false | Return training sessions having record_start_time less than |
type | query | string | false | Return all, individual or team training sessions. |
pagination | query | paginationQuery | false | Pagination parameters |
Enumerated Values
Parameter | Value |
---|---|
type | ALL |
type | TEAM |
type | INDIVIDUAL |
Example responses
200 Response
{
"data": [
{
"id": "wp9DQ9ln",
"type": "TEAM",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"sport": "SOCCER",
"name": "Rowing",
"feeling": "AWESOME,",
"note": "Awesome training.",
"latitude": 55.67336654663086,
"longitude": 12.49395084381104,
"start_time": "2017-04-14T09:20:06",
"stop_time": "2017-04-14T09:50:06",
"duration_ms": 180000,
"timezone_offset": 120
}
],
"page": {
"per_page": 20,
"total_elements": 2,
"page_number": 0,
"total_pages": 1
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Response containing list of player training sessions. | Inline |
404 | Not Found | Given player_id doesn't match any of user's players. | None |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | [playerTrainingSession] | false | none | List of player training sessions. |
»» id | string | false | none | Player training session id |
»» type | string | false | none | Type of the training session. TEAM for team training session and INDIVIDUAL for players' personal training session. |
»» created | string(date-time) | false | none | Time when the training session is created |
»» modified | string(date-time) | false | none | Last time modified |
»» sport | string | false | none | Sport type |
»» name | string | false | none | Training session name |
»» feeling | string | false | none | Training session feeling |
»» note | string | false | none | Training session note |
»» latitude | number | false | none | Start latitude of the training session |
»» longitude | number | false | none | Start longitude of the training session |
»» start_time | string(date-time) | false | none | Start time of the marker |
»» stop_time | string(date-time) | false | none | End time of the marker |
»» duration_ms | number | false | none | Duration in milliseconds |
»» timezone_offset | integer | false | none | Timezone offset for training session |
» page | paginationResponse | false | none | Pagination info in response. Model contains info about response element count and paging. |
»» per_page | integer | false | none | Items per page |
»» total_elements | integer | false | none | Total number of items |
»» page_number | integer | false | none | Number of the current page |
»» total_pages | integer | false | none | Total number of pages |
Enumerated Values
Property | Value |
---|---|
type | TEAM |
type | INDIVIDUAL |
feeling | BAD |
feeling | NOT_GOOD |
feeling | OKAY |
feeling | GREAT |
feeling | AWESOME |
Get player training session details.
Code samples
# You can also use wget
curl -X GET https://teampro.api.polar.com/v1/training_sessions/{player_session_id} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET https://teampro.api.polar.com/v1/training_sessions/{player_session_id} HTTP/1.1
Host: teampro.api.polar.com
Accept: application/json
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json', 'Authorization':'Bearer {access-token}'
};
fetch('https://teampro.api.polar.com/v1/training_sessions/{player_session_id}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get 'https://teampro.api.polar.com/v1/training_sessions/{player_session_id}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://teampro.api.polar.com/v1/training_sessions/{player_session_id}', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://teampro.api.polar.com/v1/training_sessions/{player_session_id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
GET /v1/training_sessions/{player_session_id}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
player_session_id | path | string | true | Players' training session id. |
samples | query | string | false | Include requested samples in response. Possible values are "all" or comma-separated list from "distance", "location", "hr", "speed", "cadence", "altitude", "forward_acceleration", "rr". |
Example responses
200 Response
{
"data": {
"id": "wp9DQ9ln",
"type": "TEAM",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"name": "Rowing",
"feeling": "AWESOME,",
"note": "Awesome training.",
"latitude": 55.67336654663086,
"longitude": 12.49395084381104,
"start_time": "2017-04-14T09:20:06",
"stop_time": "2017-04-14T09:50:06",
"duration_ms": 180000,
"calories": 601,
"distance_meters": 6566,
"training_load": 78,
"recovery_time_ms": 480277990,
"fat_percentage": 28,
"heart_rate_max": 96,
"heart_rate_avg": 79,
"sport": "SOCCER",
"running_index": 28,
"ascent": 46.3,
"descent": 12.5,
"sprint_counter": 12,
"product": "Polar Pro",
"samples": {
"fields": [
"time",
"distance",
"hr",
"speed",
"cadence",
"lat",
"lon",
"altitude",
"forward_acceleration"
],
"values": [
[
"PT0S",
0,
94,
0,
0,
55.67336654663086,
12.49395084381104,
null,
0
],
[
"PT0.1S",
0,
null,
0,
null,
null,
null,
null,
0.04
],
[
"PT0.2S",
0,
null,
0,
null,
null,
null,
null,
-0.02
]
]
},
"rr_intervals": [
485,
483,
null,
800,
483,
486,
483,
null,
950,
281
]
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Player training session as JSON. | Inline |
404 | Not Found | Given player_session_id doesn't match any of user's training sessions. | None |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | playerTrainingSessionDetails | false | none | Detailed info about player training session. |
»» id | string | false | none | Player training session id |
»» type | string | false | none | Type of the training session. TEAM for team training session and INDIVIDUAL for players personal training session. |
»» created | string(date-time) | false | none | Time when the training session is created |
»» modified | string(date-time) | false | none | Time when the training session is modified last |
»» name | string | false | none | Training session name |
»» feeling | string | false | none | Training session feeling |
»» note | string | false | none | Training session note |
»» latitude | number | false | none | Start latitude of the training session |
»» longitude | number | false | none | Start longitude of the training session |
»» start_time | string(date-time) | false | none | Start time of the marker |
»» stop_time | string(date-time) | false | none | End time of the marker |
»» duration_ms | number | false | none | Duration in milliseconds |
»» calories | number | false | none | Training session calory consumption in kilo calories |
»» distance_meters | number | false | none | Distance in meters |
»» training_load | number | false | none | Training load of the training session |
»» recovery_time_ms | number | false | none | Recovery time in milliseconds |
»» fat_percentage | integer | false | none | Fat percentage |
»» heart_rate_max | integer | false | none | Maximum heart rate of the training session |
»» heart_rate_avg | integer | false | none | Average heart rate of the training session |
»» sport | string | false | none | Sport type |
»» running_index | integer | false | none | Running index value from training session |
»» ascent | number | false | none | Ascent in meters |
»» descent | number | false | none | Descent in meters |
»» sprint_counter | integer | false | none | Sprint count. |
»» product | string | false | none | Product used to save the training session |
»» samples | trainingSessionSamples | false | none | Sample model contains two properties, fields and values . Fields contains list of sample types which are available in values . Values contains list of sample value lists. Each sample value list has duration as first item which tells the record time (from the beginning of the training) of the samples. Next values in array contains the sample value itself. |
»»» fields | [string] | false | none | List of sample types which are present in values property. |
»»» values | [array] | false | none | List of sample value lists. |
»» rr_intervals | [integer] | false | none | List of rr-intervals. |
Enumerated Values
Property | Value |
---|---|
type | TEAM |
type | INDIVIDUAL |
feeling | BAD |
feeling | NOT_GOOD |
feeling | OKAY |
feeling | GREAT |
feeling | AWESOME |
Get player team training session trimmed values.
Code samples
# You can also use wget
curl -X GET https://teampro.api.polar.com/v1/training_sessions/{player_session_id}/session_summary \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET https://teampro.api.polar.com/v1/training_sessions/{player_session_id}/session_summary HTTP/1.1
Host: teampro.api.polar.com
Accept: application/json
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json', 'Authorization':'Bearer {access-token}'
};
fetch('https://teampro.api.polar.com/v1/training_sessions/{player_session_id}/session_summary',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get 'https://teampro.api.polar.com/v1/training_sessions/{player_session_id}/session_summary',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://teampro.api.polar.com/v1/training_sessions/{player_session_id}/session_summary', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://teampro.api.polar.com/v1/training_sessions/{player_session_id}/session_summary");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
GET /v1/training_sessions/{player_session_id}/session_summary
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
player_session_id | path | string | true | Players' training session id. |
Example responses
200 Response
{
"data": {
"player_session_id": "wp9DQ9ln",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"trimmed_start_time": "2017-04-14T09:20:06",
"duration_ms": 180000,
"distance_meters": 6566,
"kilo_calories": 601,
"heart_rate_max": 160,
"heart_rate_avg": 120,
"heart_rate_min": 55,
"heart_rate_max_percent": 96,
"heart_rate_avg_percent": 79,
"heart_rate_min_percent": 55,
"sprint_counter": 12,
"speed_avg_kmh": 7.9,
"speed_max_kmh": 18.4,
"cadence_avg": 60,
"cadence_max": 100,
"training_load": 180,
"heart_rate_zones": [
{
"index": 1,
"lower-limit": 110,
"upper-limit": 130,
"in-zone": "PT4S"
}
],
"speed_zones_kmh": [
{
"index": 1,
"lower-limit": 3,
"upper-limit": 7,
"in-zone_meters": 222
}
],
"acceleration_zones_ms2": [
{
"limit": -3,
"counter": 22
}
]
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Player team training session trimmed values as JSON. | Inline |
404 | Not Found | Given player_session_id doesn't match any of user's training sessions. | None |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | playerTeamTrainingSessionDetails | false | none | Detailed info about player's team training session. |
»» player_session_id | string | false | none | Player training session id |
»» created | string(date-time) | false | none | Time when the training session is added to team training session |
»» modified | string(date-time) | false | none | Time when the team training session is modified last |
»» trimmed_start_time | string(date-time) | false | none | Start time of the team training session - local time |
»» duration_ms | number | false | none | Duration of the team training session in milliseconds |
»» distance_meters | number | false | none | Distance of the training session in meters |
»» kilo_calories | number | false | none | Calory consumption of the training session in kilo calories |
»» heart_rate_max | integer | false | none | Maximum heart rate of the training session |
»» heart_rate_avg | integer | false | none | Average heart rate of the training session |
»» heart_rate_min | integer | false | none | Minimum heart rate of the training session |
»» heart_rate_max_percent | integer | false | none | Maximum heart rate percent of the training session |
»» heart_rate_avg_percent | integer | false | none | Average heart rate percent of the training session |
»» heart_rate_min_percent | integer | false | none | Minimum heart rate percent of the training session |
»» sprint_counter | integer | false | none | Sprint count of the training session. |
»» speed_avg_kmh | integer | false | none | Average speed of the training session |
»» speed_max_kmh | integer | false | none | Maximum speed of the training session |
»» cadence_avg | integer | false | none | Average cadence of the training session |
»» cadence_max | integer | false | none | Maximum cadence of the training session |
»» training_load | number | false | none | Training load of the training session |
»» heart_rate_zones | [heart_rate_zone] | false | none | List of heart rate zones. |
»»» index | integer | false | none | Zone list index |
»»» lower-limit | integer | false | none | Lower heart-rate boundary of the zone |
»»» upper-limit | integer | false | none | Upper heart-rate boundary of the zone |
»»» in-zone | string | false | none | Time duration spent in the zone ISO 8601 |
»» speed_zones_kmh | [speed_zone_kmh] | false | none | List of speed zones. |
»»» index | integer | false | none | Zone list index |
»»» lower-limit | integer | false | none | Lower speed boundary of the zone |
»»» upper-limit | integer | false | none | Upper speed boundary of the zone |
»»» in-zone_meters | number | false | none | Distance in meters in the zone |
»» acceleration_zones_ms2 | [acceleration_zone_ms2] | false | none | List of acceleration zones. |
»»» limit | integer | false | none | Lower acceleration boundary of the zone in m/s2 |
»»» counter | number | false | none | Acceleration count of current acceleration zone |
Schemas
marker
{
"start_time": "2020-08-24T10:28:43.481Z",
"end_time": "2020-08-24T10:28:43.481Z",
"marker_type": "PHASE",
"name": "Intervals",
"note": "Cooling down"
}
Training session marker.i
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
start_time | string(date-time) | false | none | Start time of the marker |
end_time | string(date-time) | false | none | End time of the marker |
marker_type | string | false | none | Marker type |
name | string | false | none | Marker name |
note | string | false | none | Marker note |
Enumerated Values
Property | Value |
---|---|
marker_type | PHASE |
marker_type | NOTE |
marker_type | RECOVERY |
paginationResponse
{
"per_page": 20,
"total_elements": 2,
"page_number": 0,
"total_pages": 1
}
Pagination info in response. Model contains info about response element count and paging.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
per_page | integer | false | none | Items per page |
total_elements | integer | false | none | Total number of items |
page_number | integer | false | none | Number of the current page |
total_pages | integer | false | none | Total number of pages |
paginationQuery
"?page=3&per_page=20"
Endpoints that return multiple items are paginated to 20 items by default. To request next page, use page parameter in request. Total number of elements and pages are returned in response in page
property, see paginationResponse.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
page | integer | false | none | Page number, starting from 0 |
per_page | integer | false | none | Number of elements to be returned per page. Value must be between 1 and 100. |
participant
{
"player_id": "ZmozZxkr",
"player_number": 12,
"role": "Midfielder",
"player_session_id": "wp9DQ9ln"
}
Training session participant.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
player_id | string | false | none | Player id |
player_number | integer(int32) | false | none | Player number |
role | string | false | none | Player role |
player_session_id | string | false | none | Player training session id |
player
{
"player_id": "ZmozZxkr",
"player_number": 12,
"role": "Midfielder",
"first_name": "John",
"last_name": "Doe"
}
Player data.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
player_id | string | false | none | Player id |
player_number | integer(int32) | false | none | Player number |
role | string | false | none | Player role |
first_name | string | false | none | Player first name |
last_name | string | false | none | Player last name |
playerTrainingSession
{
"id": "wp9DQ9ln",
"type": "TEAM",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"sport": "SOCCER",
"name": "Rowing",
"feeling": "AWESOME,",
"note": "Awesome training.",
"latitude": 55.67336654663086,
"longitude": 12.49395084381104,
"start_time": "2017-04-14T09:20:06",
"stop_time": "2017-04-14T09:50:06",
"duration_ms": 180000,
"timezone_offset": 120
}
Playert training session data used in player training session listing.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | none | Player training session id |
type | string | false | none | Type of the training session. TEAM for team training session and INDIVIDUAL for players' personal training session. |
created | string(date-time) | false | none | Time when the training session is created |
modified | string(date-time) | false | none | Last time modified |
sport | string | false | none | Sport type |
name | string | false | none | Training session name |
feeling | string | false | none | Training session feeling |
note | string | false | none | Training session note |
latitude | number | false | none | Start latitude of the training session |
longitude | number | false | none | Start longitude of the training session |
start_time | string(date-time) | false | none | Start time of the marker |
stop_time | string(date-time) | false | none | End time of the marker |
duration_ms | number | false | none | Duration in milliseconds |
timezone_offset | integer | false | none | Timezone offset for training session |
Enumerated Values
Property | Value |
---|---|
type | TEAM |
type | INDIVIDUAL |
feeling | BAD |
feeling | NOT_GOOD |
feeling | OKAY |
feeling | GREAT |
feeling | AWESOME |
playerTrainingSessionDetails
{
"id": "wp9DQ9ln",
"type": "TEAM",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"name": "Rowing",
"feeling": "AWESOME,",
"note": "Awesome training.",
"latitude": 55.67336654663086,
"longitude": 12.49395084381104,
"start_time": "2017-04-14T09:20:06",
"stop_time": "2017-04-14T09:50:06",
"duration_ms": 180000,
"calories": 601,
"distance_meters": 6566,
"training_load": 78,
"recovery_time_ms": 480277990,
"fat_percentage": 28,
"heart_rate_max": 96,
"heart_rate_avg": 79,
"sport": "SOCCER",
"running_index": 28,
"ascent": 46.3,
"descent": 12.5,
"sprint_counter": 12,
"product": "Polar Pro",
"samples": {
"fields": [
"time",
"distance",
"hr",
"speed",
"cadence",
"lat",
"lon",
"altitude",
"forward_acceleration"
],
"values": [
[
"PT0S",
0,
94,
0,
0,
55.67336654663086,
12.49395084381104,
null,
0
],
[
"PT0.1S",
0,
null,
0,
null,
null,
null,
null,
0.04
],
[
"PT0.2S",
0,
null,
0,
null,
null,
null,
null,
-0.02
]
]
},
"rr_intervals": [
485,
483,
null,
800,
483,
486,
483,
null,
950,
281
]
}
Detailed info about player training session.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | none | Player training session id |
type | string | false | none | Type of the training session. TEAM for team training session and INDIVIDUAL for players personal training session. |
created | string(date-time) | false | none | Time when the training session is created |
modified | string(date-time) | false | none | Time when the training session is modified last |
name | string | false | none | Training session name |
feeling | string | false | none | Training session feeling |
note | string | false | none | Training session note |
latitude | number | false | none | Start latitude of the training session |
longitude | number | false | none | Start longitude of the training session |
start_time | string(date-time) | false | none | Start time of the marker |
stop_time | string(date-time) | false | none | End time of the marker |
duration_ms | number | false | none | Duration in milliseconds |
calories | number | false | none | Training session calory consumption in kilo calories |
distance_meters | number | false | none | Distance in meters |
training_load | number | false | none | Training load of the training session |
recovery_time_ms | number | false | none | Recovery time in milliseconds |
fat_percentage | integer | false | none | Fat percentage |
heart_rate_max | integer | false | none | Maximum heart rate of the training session |
heart_rate_avg | integer | false | none | Average heart rate of the training session |
sport | string | false | none | Sport type |
running_index | integer | false | none | Running index value from training session |
ascent | number | false | none | Ascent in meters |
descent | number | false | none | Descent in meters |
sprint_counter | integer | false | none | Sprint count. |
product | string | false | none | Product used to save the training session |
samples | trainingSessionSamples | false | none | Sample model contains two properties, fields and values . Fields contains list of sample types which are available in values . Values contains list of sample value lists. Each sample value list has duration as first item which tells the record time (from the beginning of the training) of the samples. Next values in array contains the sample value itself. |
rr_intervals | [integer] | false | none | List of rr-intervals. |
Enumerated Values
Property | Value |
---|---|
type | TEAM |
type | INDIVIDUAL |
feeling | BAD |
feeling | NOT_GOOD |
feeling | OKAY |
feeling | GREAT |
feeling | AWESOME |
playerTeamTrainingSessionDetails
{
"player_session_id": "wp9DQ9ln",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"trimmed_start_time": "2017-04-14T09:20:06",
"duration_ms": 180000,
"distance_meters": 6566,
"kilo_calories": 601,
"heart_rate_max": 160,
"heart_rate_avg": 120,
"heart_rate_min": 55,
"heart_rate_max_percent": 96,
"heart_rate_avg_percent": 79,
"heart_rate_min_percent": 55,
"sprint_counter": 12,
"speed_avg_kmh": 7.9,
"speed_max_kmh": 18.4,
"cadence_avg": 60,
"cadence_max": 100,
"training_load": 180,
"heart_rate_zones": [
{
"index": 1,
"lower-limit": 110,
"upper-limit": 130,
"in-zone": "PT4S"
}
],
"speed_zones_kmh": [
{
"index": 1,
"lower-limit": 3,
"upper-limit": 7,
"in-zone_meters": 222
}
],
"acceleration_zones_ms2": [
{
"limit": -3,
"counter": 22
}
]
}
Detailed info about player's team training session.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
player_session_id | string | false | none | Player training session id |
created | string(date-time) | false | none | Time when the training session is added to team training session |
modified | string(date-time) | false | none | Time when the team training session is modified last |
trimmed_start_time | string(date-time) | false | none | Start time of the team training session - local time |
duration_ms | number | false | none | Duration of the team training session in milliseconds |
distance_meters | number | false | none | Distance of the training session in meters |
kilo_calories | number | false | none | Calory consumption of the training session in kilo calories |
heart_rate_max | integer | false | none | Maximum heart rate of the training session |
heart_rate_avg | integer | false | none | Average heart rate of the training session |
heart_rate_min | integer | false | none | Minimum heart rate of the training session |
heart_rate_max_percent | integer | false | none | Maximum heart rate percent of the training session |
heart_rate_avg_percent | integer | false | none | Average heart rate percent of the training session |
heart_rate_min_percent | integer | false | none | Minimum heart rate percent of the training session |
sprint_counter | integer | false | none | Sprint count of the training session. |
speed_avg_kmh | integer | false | none | Average speed of the training session |
speed_max_kmh | integer | false | none | Maximum speed of the training session |
cadence_avg | integer | false | none | Average cadence of the training session |
cadence_max | integer | false | none | Maximum cadence of the training session |
training_load | number | false | none | Training load of the training session |
heart_rate_zones | [heart_rate_zone] | false | none | List of heart rate zones. |
speed_zones_kmh | [speed_zone_kmh] | false | none | List of speed zones. |
acceleration_zones_ms2 | [acceleration_zone_ms2] | false | none | List of acceleration zones. |
heart_rate_zone
{
"index": 1,
"lower-limit": 110,
"upper-limit": 130,
"in-zone": "PT4S"
}
Heart-rate zone information
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
index | integer | false | none | Zone list index |
lower-limit | integer | false | none | Lower heart-rate boundary of the zone |
upper-limit | integer | false | none | Upper heart-rate boundary of the zone |
in-zone | string | false | none | Time duration spent in the zone ISO 8601 |
speed_zone_kmh
{
"index": 1,
"lower-limit": 3,
"upper-limit": 7,
"in-zone_meters": 222
}
Speed zone information
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
index | integer | false | none | Zone list index |
lower-limit | integer | false | none | Lower speed boundary of the zone |
upper-limit | integer | false | none | Upper speed boundary of the zone |
in-zone_meters | number | false | none | Distance in meters in the zone |
acceleration_zone_ms2
{
"limit": -3,
"counter": 22
}
Acceleration zone information
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
limit | integer | false | none | Lower acceleration boundary of the zone in m/s2 |
counter | number | false | none | Acceleration count of current acceleration zone |
team
{
"id": "wMYz6L4w",
"name": "Team1",
"organisation": "Organisation1",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z"
}
Basic info of team used in listing.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | none | Team id |
name | string | false | none | Team name |
organisation | string | false | none | Organisation name |
created | string(date-time) | false | none | Time when the team is created |
modified | string(date-time) | false | none | Last time modified |
teamDetails
{
"id": "wMYz6L4w",
"name": "Team1",
"organisation": "Organisation1",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"players": [
{
"player_id": "ZmozZxkr",
"player_number": 12,
"role": "Midfielder",
"first_name": "John",
"last_name": "Doe"
}
]
}
Detailed team data.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | none | Team id |
name | string | false | none | Team name |
organisation | string | false | none | Organisation name |
created | string(date-time) | false | none | Time when the team is created |
modified | string(date-time) | false | none | Last time modified |
players | [player] | false | none | Team players |
trainingSession
{
"id": "R8rMB4j7",
"team_id": "wMYz6L4w",
"name": "Match against Brazil national team",
"type": "MATCH",
"note": "Game started very well, but we lost 0-8",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"record_start_time": "2017-04-14T09:17:22",
"record_end_time": "2017-04-14T09:56:47",
"start_time": "2017-04-14T09:20:06",
"end_time": "2017-04-14T09:50:06",
"latitude": 55.67336654663086,
"longitude": 12.49395084381104,
"sport": "SOCCER"
}
Team training session data used in team training session listing.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | none | Training session id |
team_id | string | false | none | Team id |
name | string | false | none | Training session name |
type | string | false | none | Training session type |
note | string | false | none | Notes from training session |
created | string(date-time) | false | none | Time when the training session is created |
modified | string(date-time) | false | none | Last time modified |
record_start_time | string(date-time) | false | none | Training session record start time |
record_end_time | string(date-time) | false | none | Training session record end time |
start_time | string(date-time) | false | none | Training session start time |
end_time | string(date-time) | false | none | Training session end time |
latitude | number | false | none | Start latitude of the training session |
longitude | number | false | none | Start longitude of the training session |
sport | string | false | none | Sport type |
Enumerated Values
Property | Value |
---|---|
type | TRAINING |
type | DRILL |
type | TEST |
type | GAME |
type | MATCH |
type | STRENGTH AND CONDITION |
type | OTHER |
trainingSessionDetails
{
"id": "R8rMB4j7",
"team_id": "wMYz6L4w",
"name": "Match against Brazil national team",
"type": "MATCH",
"note": "Game started very well, but we lost 0-8",
"created": "2017-04-13T21:06:58Z",
"modified": "2017-04-13T21:06:58Z",
"record_start_time": "2017-04-14T09:17:22",
"record_end_time": "2017-04-14T09:56:47",
"start_time": "2017-04-14T09:20:06",
"end_time": "2017-04-14T09:50:06",
"latitude": 55.67336654663086,
"longitude": 12.49395084381104,
"sport": "SOCCER",
"arena": "Valby old stadium Denmark",
"participants": [
{
"player_id": "ZmozZxkr",
"player_number": 12,
"role": "Midfielder",
"player_session_id": "wp9DQ9ln"
}
],
"markers": [
{
"start_time": "2020-08-24T10:28:43.498Z",
"end_time": "2020-08-24T10:28:43.498Z",
"marker_type": "PHASE",
"name": "Intervals",
"note": "Cooling down"
}
]
}
Team training session details.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | none | Training session id |
team_id | string | false | none | Team id |
name | string | false | none | Training session name |
type | string | false | none | Training session type |
note | string | false | none | Notes from training session |
created | string(date-time) | false | none | Time when the training session is created |
modified | string(date-time) | false | none | Last time modified |
record_start_time | string(date-time) | false | none | Training session record start time |
record_end_time | string(date-time) | false | none | Training session record end time |
start_time | string(date-time) | false | none | Training session start time |
end_time | string(date-time) | false | none | Training session end time |
latitude | number | false | none | Start latitude of the training session |
longitude | number | false | none | Start longitude of the training session |
sport | string | false | none | Sport type |
arena | string | false | none | Game arena |
participants | [participant] | false | none | [Training session participant.] |
markers | [marker] | false | none | [Training session marker.i] |
trainingSessionSamples
{
"fields": [
"time",
"distance",
"hr",
"speed",
"cadence",
"lat",
"lon",
"altitude",
"forward_acceleration"
],
"values": [
[
"PT0S",
0,
94,
0,
0,
55.67336654663086,
12.49395084381104,
null,
0
],
[
"PT0.1S",
0,
null,
0,
null,
null,
null,
null,
0.04
],
[
"PT0.2S",
0,
null,
0,
null,
null,
null,
null,
-0.02
]
]
}
Sample model contains two properties, fields
and values
. Fields
contains list of sample types which are available in values
. Values
contains list of sample value lists. Each sample value list has duration as first item which tells the record time (from the beginning of the training) of the samples. Next values in array contains the sample value itself.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
fields | [string] | false | none | List of sample types which are present in values property. |
values | [array] | false | none | List of sample value lists. |
Enumerated Values
Property | Value | Description |
---|---|---|
fields | time | Timestamp of sample in ISO 8601 string format, starting from 0. |
fields | distance | Total distance moved in meters, double. |
fields | hr | Heart rate, double. |
fields | speed | Current speed, double. |
fields | cadence | Current cadence, double. |
fields | lat | Location latitude coordinate, double. |
fields | lon | Location longitude coordinate, double. |
fields | altitude | Location altitude, double. |
fields | forward_acceleration | Forward acceleration, double. |